From owner-svn-src-stable@FreeBSD.ORG Sun May 27 00:21:27 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B59C106566C; Sun, 27 May 2012 00:21:27 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 85ADF8FC14; Sun, 27 May 2012 00:21:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4R0LRKI015489; Sun, 27 May 2012 00:21:27 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4R0LRGY015487; Sun, 27 May 2012 00:21:27 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205270021.q4R0LRGY015487@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Sun, 27 May 2012 00:21:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236131 - stable/8 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 00:21:27 -0000 Author: des Date: Sun May 27 00:21:27 2012 New Revision: 236131 URL: http://svn.freebsd.org/changeset/base/236131 Log: Make yacc a bootstrap tool if building on head, since the new yacc is not 100% backward compatible. Modified: stable/8/Makefile.inc1 Modified: stable/8/Makefile.inc1 ============================================================================== --- stable/8/Makefile.inc1 Sat May 26 23:58:51 2012 (r236130) +++ stable/8/Makefile.inc1 Sun May 27 00:21:27 2012 (r236131) @@ -934,6 +934,10 @@ _ar= usr.bin/ar _lex= usr.bin/lex .endif +.if ${BOOTSTRAPPING} >= 1000013 +_yacc= usr.bin/yacc +.endif + .if ${BOOTSTRAPPING} < 800013 _mklocale= usr.bin/mklocale .endif @@ -959,6 +963,7 @@ bootstrap-tools: ${_gperf} \ ${_groff} \ ${_ar} \ + ${_yacc} \ ${_lex} \ usr.bin/lorder \ usr.bin/makewhatis \ From owner-svn-src-stable@FreeBSD.ORG Sun May 27 00:34:57 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 944071065670; Sun, 27 May 2012 00:34:57 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7E38A8FC08; Sun, 27 May 2012 00:34:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4R0YvVl016073; Sun, 27 May 2012 00:34:57 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4R0Yvqd016071; Sun, 27 May 2012 00:34:57 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205270034.q4R0Yvqd016071@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 00:34:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236132 - stable/8/usr.sbin/config X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 00:34:57 -0000 Author: rstone Date: Sun May 27 00:34:56 2012 New Revision: 236132 URL: http://svn.freebsd.org/changeset/base/236132 Log: MFC 227429 The generated Makefile for the kernel was not running ctfconvert on object files corresponding to source files that had the compile-with option set in conf/files. This means that any fbt probes for functions in that object file would not have correct argument types. The fix is to run ctfconvert on any target file that does not have the no-obj option set in files. PR: bin/160275 Reported by: Paul Ambrose (ambrosehua AT gmail DOT com) Modified: stable/8/usr.sbin/config/mkmakefile.c Directory Properties: stable/8/usr.sbin/config/ (props changed) Modified: stable/8/usr.sbin/config/mkmakefile.c ============================================================================== --- stable/8/usr.sbin/config/mkmakefile.c Sun May 27 00:21:27 2012 (r236131) +++ stable/8/usr.sbin/config/mkmakefile.c Sun May 27 00:34:56 2012 (r236132) @@ -742,15 +742,20 @@ do_rules(FILE *f) break; } snprintf(cmd, sizeof(cmd), - "${%s_%c%s}\n.if defined(NORMAL_CTFCONVERT) && " - "!empty(NORMAL_CTFCONVERT)\n" - "\t${NORMAL_CTFCONVERT}\n.endif", ftype, + "${%s_%c%s}\n", ftype, toupper(och), ftp->f_flags & NOWERROR ? "_NOWERROR" : ""); compilewith = cmd; } *cp = och; - fprintf(f, "\t%s\n\n", compilewith); + fprintf(f, "\t%s\n", compilewith); + + if (!(ftp->f_flags & NO_OBJ)) + fprintf(f, ".if defined(NORMAL_CTFCONVERT) && " + "!empty(NORMAL_CTFCONVERT)\n" + "\t${NORMAL_CTFCONVERT}\n.endif\n\n"); + else + fprintf(f, "\n"); } } From owner-svn-src-stable@FreeBSD.ORG Sun May 27 00:38:37 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 23D9B106564A; Sun, 27 May 2012 00:38:37 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04A158FC15; Sun, 27 May 2012 00:38:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4R0cax2016271; Sun, 27 May 2012 00:38:36 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4R0ca68016269; Sun, 27 May 2012 00:38:36 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205270038.q4R0ca68016269@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 00:38:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236133 - stable/8/sys/cddl/dev/dtrace/i386 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 00:38:37 -0000 Author: rstone Date: Sun May 27 00:38:36 2012 New Revision: 236133 URL: http://svn.freebsd.org/changeset/base/236133 Log: MFC 227430 On i386, fbt probes are implemented by writing an invalid opcode over certain instructions in a function prologue or epilogue. DTrace has a hook into the invalid opcode fault handler that checks whether the fault was due to an probe and if so, runs the DTrace magic. Upon returning from an invalid opcode fault caused by a probe, DTrace must emulate the instruction that was replaced with the invalid opcode and then return control to the instruction following the invalid opcode. There were a pair of related bugs in the emulation for the leave instruction. The leave instruction is used to pop off a stack frame prior to returning from a function. The emulation for this instruction must move the trap frame for the invalid opcode fault down the stack to the bottom of the stack frame that is being removed, and then execute an iret. At two points in this process, the emulation code was storing values above the current value of the stack pointer. This opened up a window in which if we were two take an interrupt, the trap frame for the interrupt would overwrite the values stored on the stack, causing the system to panic later. The first bug was that at one point the emulation code saves the new value for $esp above the current stack pointer value. The fix is to save this value instead inside of the original trap frame. At this point we do not need the original trap frame so this is safe. The second bug is that when the emulate code loads $esp from the stack, it points part-way through the new trap frame instead of at its beginning. The emulation code adjusts the stack pointer to the correct value immediately afterwards, but this still leaves a one instruction window in which an interrupt would corrupt this trap frame. Fix this by adjusting the stack frame value before loading it into $esp. This fixes panics in invop_leave on i386 when using fbt return probes. Reviewed by: rpaulo, attilio Modified: stable/8/sys/cddl/dev/dtrace/i386/dtrace_asm.S Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/cddl/dev/dtrace/i386/dtrace_asm.S ============================================================================== --- stable/8/sys/cddl/dev/dtrace/i386/dtrace_asm.S Sun May 27 00:34:56 2012 (r236132) +++ stable/8/sys/cddl/dev/dtrace/i386/dtrace_asm.S Sun May 27 00:38:36 2012 (r236133) @@ -125,11 +125,11 @@ invop_leave: movl 8(%esp), %eax /* load calling EIP */ incl %eax /* increment over LOCK prefix */ movl %eax, -8(%ebx) /* store calling EIP */ - movl %ebx, -4(%esp) /* temporarily store new %esp */ + subl $8, %ebx /* adjust for three pushes, one pop */ + movl %ebx, 8(%esp) /* temporarily store new %esp */ popl %ebx /* pop off temp */ popl %eax /* pop off temp */ - movl -12(%esp), %esp /* set stack pointer */ - subl $8, %esp /* adjust for three pushes, one pop */ + movl (%esp), %esp /* set stack pointer */ iret /* return from interrupt */ invop_nop: /* From owner-svn-src-stable@FreeBSD.ORG Sun May 27 01:24:09 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 43750106566B; Sun, 27 May 2012 01:24:09 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 13C428FC0C; Sun, 27 May 2012 01:24:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4R1O8i0018117; Sun, 27 May 2012 01:24:08 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4R1O80o018115; Sun, 27 May 2012 01:24:08 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201205270124.q4R1O80o018115@svn.freebsd.org> From: Rick Macklem Date: Sun, 27 May 2012 01:24:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236134 - stable/9/sys/fs/nfsserver X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 01:24:09 -0000 Author: rmacklem Date: Sun May 27 01:24:08 2012 New Revision: 236134 URL: http://svn.freebsd.org/changeset/base/236134 Log: MFC: r234740 Fix a leak of namei lookup path buffers that occurs when a ZFS volume is exported via the new NFS server. The leak occurred because the new NFS server code didn't handle the case where a file system sets the SAVENAME flag in its VOP_LOOKUP() and ZFS does this for the DELETE case. Modified: stable/9/sys/fs/nfsserver/nfs_nfsdport.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- stable/9/sys/fs/nfsserver/nfs_nfsdport.c Sun May 27 00:38:36 2012 (r236133) +++ stable/9/sys/fs/nfsserver/nfs_nfsdport.c Sun May 27 01:24:08 2012 (r236134) @@ -1047,6 +1047,8 @@ nfsvno_removesub(struct nameidata *ndp, else vput(ndp->ni_dvp); vput(vp); + if ((ndp->ni_cnd.cn_flags & SAVENAME) != 0) + nfsvno_relpathbuf(ndp); NFSEXITCODE(error); return (error); } @@ -1086,6 +1088,8 @@ out: else vput(ndp->ni_dvp); vput(vp); + if ((ndp->ni_cnd.cn_flags & SAVENAME) != 0) + nfsvno_relpathbuf(ndp); NFSEXITCODE(error); return (error); } From owner-svn-src-stable@FreeBSD.ORG Sun May 27 12:01:05 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7890C106564A; Sun, 27 May 2012 12:01:05 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5DC8F8FC0C; Sun, 27 May 2012 12:01:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RC15LJ047318; Sun, 27 May 2012 12:01:05 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RC144e047297; Sun, 27 May 2012 12:01:04 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201205271201.q4RC144e047297@svn.freebsd.org> From: Dimitry Andric Date: Sun, 27 May 2012 12:01:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236144 - in stable/9: contrib/llvm/lib/CodeGen/SelectionDAG contrib/llvm/tools/clang/include/clang/AST contrib/llvm/tools/clang/include/clang/Basic contrib/llvm/tools/clang/include/cla... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 12:01:05 -0000 Author: dim Date: Sun May 27 12:01:04 2012 New Revision: 236144 URL: http://svn.freebsd.org/changeset/base/236144 Log: MFC r235864: Upgrade our copy of llvm/clang to 3.1 release. Release notes can be found at: http://llvm.org/releases/3.1/docs/ReleaseNotes.html Modified: stable/9/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp stable/9/contrib/llvm/tools/clang/include/clang/AST/Decl.h stable/9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td stable/9/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def stable/9/contrib/llvm/tools/clang/include/clang/Parse/Parser.h stable/9/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h stable/9/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h stable/9/contrib/llvm/tools/clang/include/clang/Sema/Sema.h stable/9/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp stable/9/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp stable/9/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp stable/9/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp stable/9/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp stable/9/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp stable/9/contrib/llvm/tools/clang/lib/Serialization/ASTReader.cpp stable/9/contrib/llvm/tools/clang/lib/Serialization/ASTWriter.cpp stable/9/lib/clang/include/clang/Basic/Version.inc stable/9/lib/clang/include/llvm/Config/config.h Directory Properties: stable/9/contrib/llvm/ (props changed) stable/9/contrib/llvm/tools/clang/ (props changed) stable/9/lib/clang/ (props changed) Modified: stable/9/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp ============================================================================== --- stable/9/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp Sun May 27 12:01:04 2012 (r236144) @@ -131,30 +131,16 @@ static void CheckForPhysRegDependency(SD } } -static void AddGlue(SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *DAG) { - SmallVector VTs; - SDNode *GlueDestNode = Glue.getNode(); - - // Don't add glue from a node to itself. - if (GlueDestNode == N) return; - - // Don't add glue to something that already has it, either as a use or value. - if (N->getOperand(N->getNumOperands()-1).getValueType() == MVT::Glue || - N->getValueType(N->getNumValues() - 1) == MVT::Glue) { - return; - } - for (unsigned I = 0, E = N->getNumValues(); I != E; ++I) - VTs.push_back(N->getValueType(I)); - - if (AddGlue) - VTs.push_back(MVT::Glue); - +// Helper for AddGlue to clone node operands. +static void CloneNodeWithValues(SDNode *N, SelectionDAG *DAG, + SmallVectorImpl &VTs, + SDValue ExtraOper = SDValue()) { SmallVector Ops; for (unsigned I = 0, E = N->getNumOperands(); I != E; ++I) Ops.push_back(N->getOperand(I)); - if (GlueDestNode) - Ops.push_back(Glue); + if (ExtraOper.getNode()) + Ops.push_back(ExtraOper); SDVTList VTList = DAG->getVTList(&VTs[0], VTs.size()); MachineSDNode::mmo_iterator Begin = 0, End = 0; @@ -173,6 +159,46 @@ static void AddGlue(SDNode *N, SDValue G MN->setMemRefs(Begin, End); } +static bool AddGlue(SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *DAG) { + SmallVector VTs; + SDNode *GlueDestNode = Glue.getNode(); + + // Don't add glue from a node to itself. + if (GlueDestNode == N) return false; + + // Don't add a glue operand to something that already uses glue. + if (GlueDestNode && + N->getOperand(N->getNumOperands()-1).getValueType() == MVT::Glue) { + return false; + } + // Don't add glue to something that already has a glue value. + if (N->getValueType(N->getNumValues() - 1) == MVT::Glue) return false; + + for (unsigned I = 0, E = N->getNumValues(); I != E; ++I) + VTs.push_back(N->getValueType(I)); + + if (AddGlue) + VTs.push_back(MVT::Glue); + + CloneNodeWithValues(N, DAG, VTs, Glue); + + return true; +} + +// Cleanup after unsuccessful AddGlue. Use the standard method of morphing the +// node even though simply shrinking the value list is sufficient. +static void RemoveUnusedGlue(SDNode *N, SelectionDAG *DAG) { + assert((N->getValueType(N->getNumValues() - 1) == MVT::Glue && + !N->hasAnyUseOfValue(N->getNumValues() - 1)) && + "expected an unused glue value"); + + SmallVector VTs; + for (unsigned I = 0, E = N->getNumValues()-1; I != E; ++I) + VTs.push_back(N->getValueType(I)); + + CloneNodeWithValues(N, DAG, VTs); +} + /// ClusterNeighboringLoads - Force nearby loads together by "gluing" them. /// This function finds loads of the same base and different offsets. If the /// offsets are not far apart (target specific), it add MVT::Glue inputs and @@ -240,19 +266,23 @@ void ScheduleDAGSDNodes::ClusterNeighbor // Cluster loads by adding MVT::Glue outputs and inputs. This also // ensure they are scheduled in order of increasing addresses. SDNode *Lead = Loads[0]; - AddGlue(Lead, SDValue(0, 0), true, DAG); - - SDValue InGlue = SDValue(Lead, Lead->getNumValues() - 1); + SDValue InGlue = SDValue(0, 0); + if (AddGlue(Lead, InGlue, true, DAG)) + InGlue = SDValue(Lead, Lead->getNumValues() - 1); for (unsigned I = 1, E = Loads.size(); I != E; ++I) { bool OutGlue = I < E - 1; SDNode *Load = Loads[I]; - AddGlue(Load, InGlue, OutGlue, DAG); + // If AddGlue fails, we could leave an unsused glue value. This should not + // cause any + if (AddGlue(Load, InGlue, OutGlue, DAG)) { + if (OutGlue) + InGlue = SDValue(Load, Load->getNumValues() - 1); - if (OutGlue) - InGlue = SDValue(Load, Load->getNumValues() - 1); - - ++LoadsClustered; + ++LoadsClustered; + } + else if (!OutGlue && InGlue.getNode()) + RemoveUnusedGlue(InGlue.getNode(), DAG); } } Modified: stable/9/contrib/llvm/tools/clang/include/clang/AST/Decl.h ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/AST/Decl.h Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/AST/Decl.h Sun May 27 12:01:04 2012 (r236144) @@ -64,9 +64,6 @@ public: /// \brief Return the TypeLoc wrapper for the type source info. TypeLoc getTypeLoc() const; // implemented in TypeLoc.h - - /// \brief Override the type stored in this TypeSourceInfo. Use with caution! - void overrideType(QualType T) { Ty = T; } }; /// TranslationUnitDecl - The top declaration context. Modified: stable/9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td Sun May 27 12:01:04 2012 (r236144) @@ -410,8 +410,6 @@ def ext_ellipsis_exception_spec : Extens "exception specification of '...' is a Microsoft extension">; def err_dynamic_and_noexcept_specification : Error< "cannot have both throw() and noexcept() clause on the same function">; -def err_except_spec_unparsed : Error< - "unexpected end of exception specification">; def warn_cxx98_compat_noexcept_decl : Warning< "noexcept specifications are incompatible with C++98">, InGroup, DefaultIgnore; Modified: stable/9/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def Sun May 27 12:01:04 2012 (r236144) @@ -105,7 +105,6 @@ TOK(eod) // End of prepr // directive). TOK(code_completion) // Code completion marker TOK(cxx_defaultarg_end) // C++ default argument end marker -TOK(cxx_exceptspec_end) // C++ exception-specification end marker // C99 6.4.9: Comments. TOK(comment) // Comment (only in -E -C[C] mode) Modified: stable/9/contrib/llvm/tools/clang/include/clang/Parse/Parser.h ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/Parse/Parser.h Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/Parse/Parser.h Sun May 27 12:01:04 2012 (r236144) @@ -584,11 +584,15 @@ private: class TentativeParsingAction { Parser &P; Token PrevTok; + unsigned short PrevParenCount, PrevBracketCount, PrevBraceCount; bool isActive; public: explicit TentativeParsingAction(Parser& p) : P(p) { PrevTok = P.Tok; + PrevParenCount = P.ParenCount; + PrevBracketCount = P.BracketCount; + PrevBraceCount = P.BraceCount; P.PP.EnableBacktrackAtThisPos(); isActive = true; } @@ -601,6 +605,9 @@ private: assert(isActive && "Parsing action was finished!"); P.PP.Backtrack(); P.Tok = PrevTok; + P.ParenCount = PrevParenCount; + P.BracketCount = PrevBracketCount; + P.BraceCount = PrevBraceCount; isActive = false; } ~TentativeParsingAction() { @@ -1422,12 +1429,10 @@ private: ExprResult ParseThrowExpression(); ExceptionSpecificationType tryParseExceptionSpecification( - bool Delayed, SourceRange &SpecificationRange, SmallVectorImpl &DynamicExceptions, SmallVectorImpl &DynamicExceptionRanges, - ExprResult &NoexceptExpr, - CachedTokens *&ExceptionSpecTokens); + ExprResult &NoexceptExpr); // EndLoc is filled with the location of the last token of the specification. ExceptionSpecificationType ParseDynamicExceptionSpecification( Modified: stable/9/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h Sun May 27 12:01:04 2012 (r236144) @@ -1150,10 +1150,6 @@ struct DeclaratorChunk { /// \brief Pointer to the expression in the noexcept-specifier of this /// function, if it has one. Expr *NoexceptExpr; - - /// \brief Pointer to the cached tokens for an exception-specification - /// that has not yet been parsed. - CachedTokens *ExceptionSpecTokens; }; /// TrailingReturnType - If this isn't null, it's the trailing return type @@ -1176,8 +1172,6 @@ struct DeclaratorChunk { delete[] ArgInfo; if (getExceptionSpecType() == EST_Dynamic) delete[] Exceptions; - else if (getExceptionSpecType() == EST_Delayed) - delete ExceptionSpecTokens; } /// isKNRPrototype - Return true if this is a K&R style identifier list, @@ -1353,7 +1347,6 @@ struct DeclaratorChunk { SourceRange *ExceptionRanges, unsigned NumExceptions, Expr *NoexceptExpr, - CachedTokens *ExceptionSpecTokens, SourceLocation LocalRangeBegin, SourceLocation LocalRangeEnd, Declarator &TheDeclarator, Modified: stable/9/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h Sun May 27 12:01:04 2012 (r236144) @@ -225,7 +225,9 @@ public: /// \brief Create the initialization entity for a temporary. static InitializedEntity InitializeTemporary(QualType Type) { - return InitializedEntity(EK_Temporary, SourceLocation(), Type); + InitializedEntity Result(EK_Temporary, SourceLocation(), Type); + Result.TypeInfo = 0; + return Result; } /// \brief Create the initialization entity for a temporary. Modified: stable/9/contrib/llvm/tools/clang/include/clang/Sema/Sema.h ============================================================================== --- stable/9/contrib/llvm/tools/clang/include/clang/Sema/Sema.h Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/include/clang/Sema/Sema.h Sun May 27 12:01:04 2012 (r236144) @@ -331,6 +331,11 @@ public: /// cycle detection at the end of the TU. DelegatingCtorDeclsType DelegatingCtorDecls; + /// \brief All the destructors seen during a class definition that had their + /// exception spec computation delayed because it depended on an unparsed + /// exception spec. + SmallVector DelayedDestructorExceptionSpecs; + /// \brief All the overriding destructors seen during a class definition /// (there could be multiple due to nested classes) that had their exception /// spec checks delayed, plus the overridden destructor. @@ -653,23 +658,19 @@ public: /// SpecialMemberOverloadResult - The overloading result for a special member /// function. /// - /// This is basically a wrapper around PointerIntPair. The lowest bit of the - /// integer is used to determine whether we have a parameter qualification - /// match, the second-lowest is whether we had success in resolving the - /// overload to a unique non-deleted function. - /// - /// The ConstParamMatch bit represents whether, when looking up a copy - /// constructor or assignment operator, we found a potential copy - /// constructor/assignment operator whose first parameter is const-qualified. - /// This is used for determining parameter types of other objects and is - /// utterly meaningless on other types of special members. + /// This is basically a wrapper around PointerIntPair. The lowest bits of the + /// integer are used to determine whether overload resolution succeeded, and + /// whether, when looking up a copy constructor or assignment operator, we + /// found a potential copy constructor/assignment operator whose first + /// parameter is const-qualified. This is used for determining parameter types + /// of other objects and is utterly meaningless on other types of special + /// members. class SpecialMemberOverloadResult : public llvm::FastFoldingSetNode { public: enum Kind { NoMemberOrDeleted, Ambiguous, - SuccessNonConst, - SuccessConst + Success }; private: @@ -685,9 +686,6 @@ public: Kind getKind() const { return static_cast(Pair.getInt()); } void setKind(Kind K) { Pair.setInt(K); } - - bool hasSuccess() const { return getKind() >= SuccessNonConst; } - bool hasConstParamMatch() const { return getKind() == SuccessConst; } }; /// \brief A cache of special member function overload resolution results @@ -1909,11 +1907,9 @@ public: DeclContextLookupResult LookupConstructors(CXXRecordDecl *Class); CXXConstructorDecl *LookupDefaultConstructor(CXXRecordDecl *Class); CXXConstructorDecl *LookupCopyingConstructor(CXXRecordDecl *Class, - unsigned Quals, - bool *ConstParam = 0); + unsigned Quals); CXXMethodDecl *LookupCopyingAssignment(CXXRecordDecl *Class, unsigned Quals, - bool RValueThis, unsigned ThisQuals, - bool *ConstParam = 0); + bool RValueThis, unsigned ThisQuals); CXXConstructorDecl *LookupMovingConstructor(CXXRecordDecl *Class); CXXMethodDecl *LookupMovingAssignment(CXXRecordDecl *Class, bool RValueThis, unsigned ThisQuals); @@ -3158,16 +3154,6 @@ public: llvm::SmallVectorImpl &Exceptions, FunctionProtoType::ExtProtoInfo &EPI); - /// \brief Add an exception-specification to the given member function - /// (or member function template). The exception-specification was parsed - /// after the method itself was declared. - void actOnDelayedExceptionSpecification(Decl *Method, - ExceptionSpecificationType EST, - SourceRange SpecificationRange, - ArrayRef DynamicExceptions, - ArrayRef DynamicExceptionRanges, - Expr *NoexceptExpr); - /// \brief Determine if a special member function should have a deleted /// definition when it is defaulted. bool ShouldDeleteSpecialMember(CXXMethodDecl *MD, CXXSpecialMember CSM, @@ -3205,7 +3191,8 @@ public: /// C++11 says that user-defined destructors with no exception spec get one /// that looks as if the destructor was implicitly declared. void AdjustDestructorExceptionSpec(CXXRecordDecl *ClassDecl, - CXXDestructorDecl *Destructor); + CXXDestructorDecl *Destructor, + bool WasDelayed = false); /// \brief Declare all inherited constructors for the given class. /// @@ -4043,6 +4030,7 @@ public: SourceLocation LBrac, SourceLocation RBrac, AttributeList *AttrList); + void ActOnFinishCXXMemberDecls(); void ActOnReenterTemplateScope(Scope *S, Decl *Template); void ActOnReenterDeclaratorTemplateScope(Scope *S, DeclaratorDecl *D); Modified: stable/9/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp Sun May 27 12:01:04 2012 (r236144) @@ -168,7 +168,8 @@ static const BinaryOperator *getLogicalO if (block->empty()) return 0; - const CFGStmt *cstmt = block->front().getAs(); + CFGElement front = block->front(); + const CFGStmt *cstmt = front.getAs(); if (!cstmt) return 0; Modified: stable/9/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Sun May 27 12:01:04 2012 (r236144) @@ -1830,6 +1830,7 @@ enum LinuxDistro { OpenSuse11_3, OpenSuse11_4, OpenSuse12_1, + OpenSuse12_2, UbuntuHardy, UbuntuIntrepid, UbuntuJaunty, @@ -1848,7 +1849,7 @@ static bool IsRedhat(enum LinuxDistro Di } static bool IsOpenSuse(enum LinuxDistro Distro) { - return Distro >= OpenSuse11_3 && Distro <= OpenSuse12_1; + return Distro >= OpenSuse11_3 && Distro <= OpenSuse12_2; } static bool IsDebian(enum LinuxDistro Distro) { @@ -1925,6 +1926,7 @@ static LinuxDistro DetectLinuxDistro(llv .StartsWith("openSUSE 11.3", OpenSuse11_3) .StartsWith("openSUSE 11.4", OpenSuse11_4) .StartsWith("openSUSE 12.1", OpenSuse12_1) + .StartsWith("openSUSE 12.2", OpenSuse12_2) .Default(UnknownDistro); bool Exists; Modified: stable/9/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp Sun May 27 12:01:04 2012 (r236144) @@ -348,77 +348,7 @@ void Parser::ParseLexedMethodDeclaration LM.DefaultArgs[I].Toks = 0; } } - - // Parse a delayed exception-specification, if there is one. - if (CachedTokens *Toks = LM.ExceptionSpecTokens) { - // Save the current token position. - SourceLocation origLoc = Tok.getLocation(); - - // Parse the default argument from its saved token stream. - Toks->push_back(Tok); // So that the current token doesn't get lost - PP.EnterTokenStream(&Toks->front(), Toks->size(), true, false); - - // Consume the previously-pushed token. - ConsumeAnyToken(); - - // C++11 [expr.prim.general]p3: - // If a declaration declares a member function or member function - // template of a class X, the expression this is a prvalue of type - // "pointer to cv-qualifier-seq X" between the optional cv-qualifer-seq - // and the end of the function-definition, member-declarator, or - // declarator. - CXXMethodDecl *Method; - if (FunctionTemplateDecl *FunTmpl - = dyn_cast(LM.Method)) - Method = cast(FunTmpl->getTemplatedDecl()); - else - Method = cast(LM.Method); - - Sema::CXXThisScopeRAII ThisScope(Actions, Method->getParent(), - Method->getTypeQualifiers(), - getLangOpts().CPlusPlus0x); - - // Parse the exception-specification. - SourceRange SpecificationRange; - SmallVector DynamicExceptions; - SmallVector DynamicExceptionRanges; - ExprResult NoexceptExpr; - CachedTokens *ExceptionSpecTokens; - - ExceptionSpecificationType EST - = tryParseExceptionSpecification(/*Delayed=*/false, SpecificationRange, - DynamicExceptions, - DynamicExceptionRanges, NoexceptExpr, - ExceptionSpecTokens); - - // Clean up the remaining tokens. - if (Tok.is(tok::cxx_exceptspec_end)) - ConsumeToken(); - else if (EST != EST_None) - Diag(Tok.getLocation(), diag::err_except_spec_unparsed); - // Attach the exception-specification to the method. - if (EST != EST_None) - Actions.actOnDelayedExceptionSpecification(LM.Method, EST, - SpecificationRange, - DynamicExceptions, - DynamicExceptionRanges, - NoexceptExpr.isUsable()? - NoexceptExpr.get() : 0); - - assert(!PP.getSourceManager().isBeforeInTranslationUnit(origLoc, - Tok.getLocation()) && - "tryParseExceptionSpecification went over the exception tokens!"); - - // There could be leftover tokens (e.g. because of an error). - // Skip through until we reach the original token position. - while (Tok.getLocation() != origLoc && Tok.isNot(tok::eof)) - ConsumeAnyToken(); - - delete LM.ExceptionSpecTokens; - LM.ExceptionSpecTokens = 0; - } - PrototypeScope.Exit(); // Finish the delayed C++ method declaration. Modified: stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp Sun May 27 12:01:04 2012 (r236144) @@ -4197,7 +4197,6 @@ void Parser::ParseFunctionDeclarator(Dec SmallVector DynamicExceptions; SmallVector DynamicExceptionRanges; ExprResult NoexceptExpr; - CachedTokens *ExceptionSpecTokens = 0; ParsedAttributes FnAttrs(AttrFactory); ParsedType TrailingReturnType; @@ -4264,18 +4263,12 @@ void Parser::ParseFunctionDeclarator(Dec dyn_cast(Actions.CurContext), DS.getTypeQualifiers(), IsCXX11MemberFunction); - + // Parse exception-specification[opt]. - bool Delayed = (D.getContext() == Declarator::MemberContext && - D.getDeclSpec().getStorageClassSpec() - != DeclSpec::SCS_typedef && - !D.getDeclSpec().isFriendSpecified()); - ESpecType = tryParseExceptionSpecification(Delayed, - ESpecRange, + ESpecType = tryParseExceptionSpecification(ESpecRange, DynamicExceptions, DynamicExceptionRanges, - NoexceptExpr, - ExceptionSpecTokens); + NoexceptExpr); if (ESpecType != EST_None) EndLoc = ESpecRange.getEnd(); @@ -4310,7 +4303,6 @@ void Parser::ParseFunctionDeclarator(Dec DynamicExceptions.size(), NoexceptExpr.isUsable() ? NoexceptExpr.get() : 0, - ExceptionSpecTokens, Tracker.getOpenLocation(), EndLoc, D, TrailingReturnType), Modified: stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp Sun May 27 12:01:04 2012 (r236144) @@ -1535,34 +1535,16 @@ AccessSpecifier Parser::getAccessSpecifi } /// \brief If the given declarator has any parts for which parsing has to be -/// delayed, e.g., default arguments or an exception-specification, create a -/// late-parsed method declaration record to handle the parsing at the end of -/// the class definition. +/// delayed, e.g., default arguments, create a late-parsed method declaration +/// record to handle the parsing at the end of the class definition. void Parser::HandleMemberFunctionDeclDelays(Declarator& DeclaratorInfo, Decl *ThisDecl) { // We just declared a member function. If this member function - // has any default arguments or an exception-specification, we'll need to - // parse them later. + // has any default arguments, we'll need to parse them later. LateParsedMethodDeclaration *LateMethod = 0; DeclaratorChunk::FunctionTypeInfo &FTI = DeclaratorInfo.getFunctionTypeInfo(); - - // If there was a delayed exception-specification, hold onto its tokens. - if (FTI.getExceptionSpecType() == EST_Delayed) { - // Push this method onto the stack of late-parsed method - // declarations. - LateMethod = new LateParsedMethodDeclaration(this, ThisDecl); - getCurrentClass().LateParsedDeclarations.push_back(LateMethod); - LateMethod->TemplateScope = getCurScope()->isTemplateParamScope(); - - // Stash the exception-specification tokens in the late-pased mthod. - LateMethod->ExceptionSpecTokens = FTI.ExceptionSpecTokens; - FTI.ExceptionSpecTokens = 0; - // Reserve space for the parameters. - LateMethod->DefaultArgs.reserve(FTI.NumArgs); - } - for (unsigned ParamIdx = 0; ParamIdx < FTI.NumArgs; ++ParamIdx) { if (LateMethod || FTI.ArgInfo[ParamIdx].DefaultArgTokens) { if (!LateMethod) { @@ -1846,7 +1828,7 @@ void Parser::ParseCXXClassMemberDeclarat // Parse the first declarator. ParseDeclarator(DeclaratorInfo); - // Error parsin g the declarator? + // Error parsing the declarator? if (!DeclaratorInfo.hasName()) { // If so, skip until the semi-colon or a }. SkipUntil(tok::r_brace, true, true); @@ -2065,7 +2047,7 @@ void Parser::ParseCXXClassMemberDeclarat DeclsInGroup.push_back(ThisDecl); } - if (DeclaratorInfo.isFunctionDeclarator() && + if (ThisDecl && DeclaratorInfo.isFunctionDeclarator() && DeclaratorInfo.getDeclSpec().getStorageClassSpec() != DeclSpec::SCS_typedef) { HandleMemberFunctionDeclDelays(DeclaratorInfo, ThisDecl); @@ -2358,7 +2340,7 @@ void Parser::ParseCXXMemberSpecification // C++11 [class.mem]p2: // Within the class member-specification, the class is regarded as complete - // within function bodies, default arguments, exception-specifications, and + // within function bodies, default arguments, and // brace-or-equal-initializers for non-static data members (including such // things in nested classes). if (TagDecl && NonNestedClass) { @@ -2369,6 +2351,10 @@ void Parser::ParseCXXMemberSpecification SourceLocation SavedPrevTokLocation = PrevTokLocation; ParseLexedAttributes(getCurrentClass()); ParseLexedMethodDeclarations(getCurrentClass()); + + // We've finished with all pending member declarations. + Actions.ActOnFinishCXXMemberDecls(); + ParseLexedMemberInitializers(getCurrentClass()); ParseLexedMethodDefs(getCurrentClass()); PrevTokLocation = SavedPrevTokLocation; @@ -2555,63 +2541,13 @@ Parser::MemInitResult Parser::ParseMemIn /// 'noexcept' /// 'noexcept' '(' constant-expression ')' ExceptionSpecificationType -Parser::tryParseExceptionSpecification(bool Delayed, +Parser::tryParseExceptionSpecification( SourceRange &SpecificationRange, SmallVectorImpl &DynamicExceptions, SmallVectorImpl &DynamicExceptionRanges, - ExprResult &NoexceptExpr, - CachedTokens *&ExceptionSpecTokens) { + ExprResult &NoexceptExpr) { ExceptionSpecificationType Result = EST_None; - ExceptionSpecTokens = 0; - - // Handle delayed parsing of exception-specifications. - if (Delayed) { - if (Tok.isNot(tok::kw_throw) && Tok.isNot(tok::kw_noexcept)) - return EST_None; - - // Consume and cache the starting token. - bool IsNoexcept = Tok.is(tok::kw_noexcept); - Token StartTok = Tok; - SpecificationRange = SourceRange(ConsumeToken()); - - // Check for a '('. - if (!Tok.is(tok::l_paren)) { - // If this is a bare 'noexcept', we're done. - if (IsNoexcept) { - Diag(Tok, diag::warn_cxx98_compat_noexcept_decl); - NoexceptExpr = 0; - return EST_BasicNoexcept; - } - - Diag(Tok, diag::err_expected_lparen_after) << "throw"; - return EST_DynamicNone; - } - - // Cache the tokens for the exception-specification. - ExceptionSpecTokens = new CachedTokens; - ExceptionSpecTokens->push_back(StartTok); // 'throw' or 'noexcept' - ExceptionSpecTokens->push_back(Tok); // '(' - SpecificationRange.setEnd(ConsumeParen()); // '(' - - if (!ConsumeAndStoreUntil(tok::r_paren, *ExceptionSpecTokens, - /*StopAtSemi=*/true, - /*ConsumeFinalToken=*/true)) { - NoexceptExpr = 0; - delete ExceptionSpecTokens; - ExceptionSpecTokens = 0; - return IsNoexcept? EST_BasicNoexcept : EST_DynamicNone; - } - SpecificationRange.setEnd(Tok.getLocation()); - - // Add the 'stop' token. - Token End; - End.startToken(); - End.setKind(tok::cxx_exceptspec_end); - End.setLocation(Tok.getLocation()); - ExceptionSpecTokens->push_back(End); - return EST_Delayed; - } - + // See if there's a dynamic specification. if (Tok.is(tok::kw_throw)) { Result = ParseDynamicExceptionSpecification(SpecificationRange, Modified: stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp Sun May 27 12:01:04 2012 (r236144) @@ -2392,7 +2392,7 @@ ExprResult Parser::ParseBlockLiteralExpr SourceLocation(), EST_None, SourceLocation(), - 0, 0, 0, 0, 0, + 0, 0, 0, 0, CaretLoc, CaretLoc, ParamInfo), attrs, CaretLoc); Modified: stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp Sun May 27 12:01:04 2012 (r236144) @@ -780,13 +780,10 @@ ExprResult Parser::ParseLambdaExpression llvm::SmallVector DynamicExceptions; llvm::SmallVector DynamicExceptionRanges; ExprResult NoexceptExpr; - CachedTokens *ExceptionSpecTokens; - ESpecType = tryParseExceptionSpecification(/*Delayed=*/false, - ESpecRange, + ESpecType = tryParseExceptionSpecification(ESpecRange, DynamicExceptions, DynamicExceptionRanges, - NoexceptExpr, - ExceptionSpecTokens); + NoexceptExpr); if (ESpecType != EST_None) DeclEndLoc = ESpecRange.getEnd(); @@ -821,7 +818,6 @@ ExprResult Parser::ParseLambdaExpression DynamicExceptions.size(), NoexceptExpr.isUsable() ? NoexceptExpr.get() : 0, - 0, DeclLoc, DeclEndLoc, D, TrailingReturnType), Attr, DeclEndLoc); @@ -867,7 +863,6 @@ ExprResult Parser::ParseLambdaExpression /*ExceptionRanges=*/0, /*NumExceptions=*/0, /*NoexceptExpr=*/0, - /*ExceptionSpecTokens=*/0, DeclLoc, DeclEndLoc, D, TrailingReturnType), Attr, DeclEndLoc); Modified: stable/9/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp Sun May 27 12:01:04 2012 (r236144) @@ -162,7 +162,6 @@ DeclaratorChunk DeclaratorChunk::getFunc SourceRange *ExceptionRanges, unsigned NumExceptions, Expr *NoexceptExpr, - CachedTokens *ExceptionSpecTokens, SourceLocation LocalRangeBegin, SourceLocation LocalRangeEnd, Declarator &TheDeclarator, @@ -227,10 +226,6 @@ DeclaratorChunk DeclaratorChunk::getFunc case EST_ComputedNoexcept: I.Fun.NoexceptExpr = NoexceptExpr; break; - - case EST_Delayed: - I.Fun.ExceptionSpecTokens = ExceptionSpecTokens; - break; } return I; } Modified: stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp Sun May 27 12:01:04 2012 (r236144) @@ -7635,7 +7635,7 @@ NamedDecl *Sema::ImplicitlyDefineFunctio SourceLocation(), SourceLocation(), SourceLocation(), EST_None, SourceLocation(), - 0, 0, 0, 0, 0, Loc, Loc, D), + 0, 0, 0, 0, Loc, Loc, D), DS.getAttributes(), SourceLocation()); D.SetIdentifier(&II, Loc); @@ -9784,21 +9784,6 @@ void Sema::ActOnFields(Scope* S, if (!Completed) Record->completeDefinition(); - // Now that the record is complete, do any delayed exception spec checks - // we were missing. - while (!DelayedDestructorExceptionSpecChecks.empty()) { - const CXXDestructorDecl *Dtor = - DelayedDestructorExceptionSpecChecks.back().first; - if (Dtor->getParent() != Record) - break; - - assert(!Dtor->getParent()->isDependentType() && - "Should not ever add destructors of templates into the list."); - CheckOverridingFunctionExceptionSpec(Dtor, - DelayedDestructorExceptionSpecChecks.back().second); - DelayedDestructorExceptionSpecChecks.pop_back(); - } - } else { ObjCIvarDecl **ClsFields = reinterpret_cast(RecFields.data()); Modified: stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp Sun May 27 12:01:04 2012 (r236144) @@ -7319,15 +7319,42 @@ void Sema::DefineImplicitDestructor(Sour } } +/// \brief Perform any semantic analysis which needs to be delayed until all +/// pending class member declarations have been parsed. +void Sema::ActOnFinishCXXMemberDecls() { + // Now we have parsed all exception specifications, determine the implicit + // exception specifications for destructors. + for (unsigned i = 0, e = DelayedDestructorExceptionSpecs.size(); + i != e; ++i) { + CXXDestructorDecl *Dtor = DelayedDestructorExceptionSpecs[i]; + AdjustDestructorExceptionSpec(Dtor->getParent(), Dtor, true); + } + DelayedDestructorExceptionSpecs.clear(); + + // Perform any deferred checking of exception specifications for virtual + // destructors. + for (unsigned i = 0, e = DelayedDestructorExceptionSpecChecks.size(); + i != e; ++i) { + const CXXDestructorDecl *Dtor = + DelayedDestructorExceptionSpecChecks[i].first; + assert(!Dtor->getParent()->isDependentType() && + "Should not ever add destructors of templates into the list."); + CheckOverridingFunctionExceptionSpec(Dtor, + DelayedDestructorExceptionSpecChecks[i].second); + } + DelayedDestructorExceptionSpecChecks.clear(); +} + void Sema::AdjustDestructorExceptionSpec(CXXRecordDecl *classDecl, - CXXDestructorDecl *destructor) { + CXXDestructorDecl *destructor, + bool WasDelayed) { // C++11 [class.dtor]p3: // A declaration of a destructor that does not have an exception- // specification is implicitly considered to have the same exception- // specification as an implicit declaration. const FunctionProtoType *dtorType = destructor->getType()-> getAs(); - if (dtorType->hasExceptionSpec()) + if (!WasDelayed && dtorType->hasExceptionSpec()) return; ImplicitExceptionSpecification exceptSpec = @@ -7344,6 +7371,14 @@ void Sema::AdjustDestructorExceptionSpec destructor->setType(ty); + // If we can't compute the exception specification for this destructor yet + // (because it depends on an exception specification which we have not parsed + // yet), make a note that we need to try again when the class is complete. + if (epi.ExceptionSpecType == EST_Delayed) { + assert(!WasDelayed && "couldn't compute destructor exception spec"); + DelayedDestructorExceptionSpecs.push_back(destructor); + } + // FIXME: If the destructor has a body that could throw, and the newly created // spec doesn't allow exceptions, we should emit a warning, because this // change in behavior can break conforming C++03 programs at runtime. @@ -7579,8 +7614,9 @@ Sema::ComputeDefaultedCopyAssignmentExce assert(!Base->getType()->isDependentType() && "Cannot generate implicit members for class with dependent bases."); CXXRecordDecl *BaseClassDecl = Base->getType()->getAsCXXRecordDecl(); - LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const, false, 0, - &HasConstCopyAssignment); + HasConstCopyAssignment &= + (bool)LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const, + false, 0); } // In C++11, the above citation has "or virtual" added @@ -7591,8 +7627,9 @@ Sema::ComputeDefaultedCopyAssignmentExce assert(!Base->getType()->isDependentType() && "Cannot generate implicit members for class with dependent bases."); CXXRecordDecl *BaseClassDecl = Base->getType()->getAsCXXRecordDecl(); - LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const, false, 0, - &HasConstCopyAssignment); + HasConstCopyAssignment &= + (bool)LookupCopyingAssignment(BaseClassDecl, Qualifiers::Const, + false, 0); } } @@ -7606,8 +7643,9 @@ Sema::ComputeDefaultedCopyAssignmentExce ++Field) { QualType FieldType = Context.getBaseElementType((*Field)->getType()); if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) { - LookupCopyingAssignment(FieldClassDecl, Qualifiers::Const, false, 0, - &HasConstCopyAssignment); + HasConstCopyAssignment &= + (bool)LookupCopyingAssignment(FieldClassDecl, Qualifiers::Const, + false, 0); } } @@ -8610,8 +8648,8 @@ Sema::ComputeDefaultedCopyCtorExceptionS CXXRecordDecl *BaseClassDecl = cast(Base->getType()->getAs()->getDecl()); - LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const, - &HasConstCopyConstructor); + HasConstCopyConstructor &= + (bool)LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const); } for (CXXRecordDecl::base_class_iterator Base = ClassDecl->vbases_begin(), @@ -8620,8 +8658,8 @@ Sema::ComputeDefaultedCopyCtorExceptionS ++Base) { CXXRecordDecl *BaseClassDecl = cast(Base->getType()->getAs()->getDecl()); - LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const, - &HasConstCopyConstructor); + HasConstCopyConstructor &= + (bool)LookupCopyingConstructor(BaseClassDecl, Qualifiers::Const); } // -- for all the nonstatic data members of X that are of a @@ -8634,8 +8672,8 @@ Sema::ComputeDefaultedCopyCtorExceptionS ++Field) { QualType FieldType = Context.getBaseElementType((*Field)->getType()); if (CXXRecordDecl *FieldClassDecl = FieldType->getAsCXXRecordDecl()) { - LookupCopyingConstructor(FieldClassDecl, Qualifiers::Const, - &HasConstCopyConstructor); + HasConstCopyConstructor &= + (bool)LookupCopyingConstructor(FieldClassDecl, Qualifiers::Const); } } // Otherwise, the implicitly declared copy constructor will have @@ -11260,66 +11298,6 @@ Sema::checkExceptionSpecification(Except } } -void Sema::actOnDelayedExceptionSpecification(Decl *MethodD, - ExceptionSpecificationType EST, - SourceRange SpecificationRange, - ArrayRef DynamicExceptions, - ArrayRef DynamicExceptionRanges, - Expr *NoexceptExpr) { - if (!MethodD) - return; - - // Dig out the method we're referring to. - CXXMethodDecl *Method = 0; - if (FunctionTemplateDecl *FunTmpl = dyn_cast(MethodD)) - Method = dyn_cast(FunTmpl->getTemplatedDecl()); - else - Method = dyn_cast(MethodD); - - if (!Method) - return; - - // Dig out the prototype. This should never fail. - const FunctionProtoType *Proto - = dyn_cast(Method->getType()); - if (!Proto) - return; - - // Check the exception specification. - llvm::SmallVector Exceptions; - FunctionProtoType::ExtProtoInfo EPI = Proto->getExtProtoInfo(); - checkExceptionSpecification(EST, DynamicExceptions, DynamicExceptionRanges, - NoexceptExpr, Exceptions, EPI); - - // Rebuild the function type. - QualType T = Context.getFunctionType(Proto->getResultType(), - Proto->arg_type_begin(), - Proto->getNumArgs(), - EPI); - if (TypeSourceInfo *TSInfo = Method->getTypeSourceInfo()) { - // FIXME: When we get proper type location information for exceptions, - // we'll also have to rebuild the TypeSourceInfo. For now, we just patch - // up the TypeSourceInfo; - assert(TypeLoc::getFullDataSizeForType(T) - == TypeLoc::getFullDataSizeForType(Method->getType()) && - "TypeLoc size mismatch with delayed exception specification"); - TSInfo->overrideType(T); - } - - Method->setType(T); - - if (Method->isStatic()) - checkThisInStaticMemberFunctionExceptionSpec(Method); - - if (Method->isVirtual()) { - // Check overrides, which we previously had to delay. - for (CXXMethodDecl::method_iterator O = Method->begin_overridden_methods(), - OEnd = Method->end_overridden_methods(); - O != OEnd; ++O) - CheckOverridingFunctionExceptionSpec(Method, *O); - } -} - /// IdentifyCUDATarget - Determine the CUDA compilation target for this function Sema::CUDAFunctionTarget Sema::IdentifyCUDATarget(const FunctionDecl *D) { // Implicitly declared functions (e.g. copy constructors) are Modified: stable/9/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp Sun May 27 11:37:24 2012 (r236143) +++ stable/9/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp Sun May 27 12:01:04 2012 (r236144) @@ -2277,7 +2277,7 @@ Sema::SpecialMemberOverloadResult *Sema: Result->setMethod(DD); Result->setKind(DD->isDeleted() ? SpecialMemberOverloadResult::NoMemberOrDeleted : - SpecialMemberOverloadResult::SuccessNonConst); + SpecialMemberOverloadResult::Success); return Result; } @@ -2288,6 +2288,9 @@ Sema::SpecialMemberOverloadResult *Sema: Expr *Arg = 0; unsigned NumArgs; + QualType ArgType = CanTy; + ExprValueKind VK = VK_LValue; + if (SM == CXXDefaultConstructor) { Name = Context.DeclarationNames.getCXXConstructorName(CanTy); NumArgs = 0; @@ -2308,7 +2311,6 @@ Sema::SpecialMemberOverloadResult *Sema: DeclareImplicitMoveAssignment(RD); } - QualType ArgType = CanTy; if (ConstArg) ArgType.addConst(); if (VolatileArg) @@ -2321,14 +2323,17 @@ Sema::SpecialMemberOverloadResult *Sema: // Possibly an XValue is actually correct in the case of move, but // there is no semantic difference for class types in this restricted // case. - ExprValueKind VK; if (SM == CXXCopyConstructor || SM == CXXCopyAssignment) VK = VK_LValue; else VK = VK_RValue; + } + OpaqueValueExpr FakeArg(SourceLocation(), ArgType, VK); + + if (SM != CXXDefaultConstructor) { NumArgs = 1; - Arg = new (Context) OpaqueValueExpr(SourceLocation(), ArgType, VK); + Arg = &FakeArg; } // Create the object argument @@ -2338,17 +2343,14 @@ Sema::SpecialMemberOverloadResult *Sema: if (VolatileThis) ThisTy.addVolatile(); Expr::Classification Classification = - (new (Context) OpaqueValueExpr(SourceLocation(), ThisTy, - RValueThis ? VK_RValue : VK_LValue))-> - Classify(Context); + OpaqueValueExpr(SourceLocation(), ThisTy, + RValueThis ? VK_RValue : VK_LValue).Classify(Context); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Sun May 27 12:47:36 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 63950106564A; Sun, 27 May 2012 12:47:36 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4CAC58FC08; Sun, 27 May 2012 12:47:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RClagh049625; Sun, 27 May 2012 12:47:36 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RClaWC049623; Sun, 27 May 2012 12:47:36 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201205271247.q4RClaWC049623@svn.freebsd.org> From: Rick Macklem Date: Sun, 27 May 2012 12:47:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236147 - stable/8/sys/fs/nfsserver X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 12:47:36 -0000 Author: rmacklem Date: Sun May 27 12:47:35 2012 New Revision: 236147 URL: http://svn.freebsd.org/changeset/base/236147 Log: MFC: r234740 Fix a leak of namei lookup path buffers that occurs when a ZFS volume is exported via the new NFS server. The leak occurred because the new NFS server code didn't handle the case where a file system sets the SAVENAME flag in its VOP_LOOKUP() and ZFS does this for the DELETE case. Modified: stable/8/sys/fs/nfsserver/nfs_nfsdport.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- stable/8/sys/fs/nfsserver/nfs_nfsdport.c Sun May 27 12:31:57 2012 (r236146) +++ stable/8/sys/fs/nfsserver/nfs_nfsdport.c Sun May 27 12:47:35 2012 (r236147) @@ -1042,6 +1042,8 @@ nfsvno_removesub(struct nameidata *ndp, else vput(ndp->ni_dvp); vput(vp); + if ((ndp->ni_cnd.cn_flags & SAVENAME) != 0) + nfsvno_relpathbuf(ndp); NFSEXITCODE(error); return (error); } @@ -1081,6 +1083,8 @@ out: else vput(ndp->ni_dvp); vput(vp); + if ((ndp->ni_cnd.cn_flags & SAVENAME) != 0) + nfsvno_relpathbuf(ndp); NFSEXITCODE(error); return (error); } From owner-svn-src-stable@FreeBSD.ORG Sun May 27 14:20:47 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A2933106564A; Sun, 27 May 2012 14:20:47 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8C1A88FC08; Sun, 27 May 2012 14:20:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4REKlCc054046; Sun, 27 May 2012 14:20:47 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4REKl88054037; Sun, 27 May 2012 14:20:47 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201205271420.q4REKl88054037@svn.freebsd.org> From: Rick Macklem Date: Sun, 27 May 2012 14:20:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236150 - in stable/8/sys: fs/nfsclient nfsclient X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 14:20:47 -0000 Author: rmacklem Date: Sun May 27 14:20:46 2012 New Revision: 236150 URL: http://svn.freebsd.org/changeset/base/236150 Log: MFC: r235332 PR# 165923 reported intermittent write failures for dirty memory mapped pages being written back on an NFS mount. Since any thread can call VOP_PUTPAGES() to write back a dirty page, the credentials of that thread may not have write access to the file on an NFS server. (Often the uid is 0, which may be mapped to "nobody" in the NFS server.) Although there is no completely correct fix for this (NFS servers check access on every write RPC instead of at open/mmap time), this patch avoids the common cases by holding onto a credential that recently opened the file for writing and uses that credential for the write RPCs being done by VOP_PUTPAGES() for both NFS clients. Modified: stable/8/sys/fs/nfsclient/nfs_clbio.c stable/8/sys/fs/nfsclient/nfs_clnode.c stable/8/sys/fs/nfsclient/nfs_clvnops.c stable/8/sys/fs/nfsclient/nfsnode.h stable/8/sys/nfsclient/nfs_bio.c stable/8/sys/nfsclient/nfs_node.c stable/8/sys/nfsclient/nfs_vnops.c stable/8/sys/nfsclient/nfsnode.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clbio.c Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/fs/nfsclient/nfs_clbio.c Sun May 27 14:20:46 2012 (r236150) @@ -271,7 +271,11 @@ ncl_putpages(struct vop_putpages_args *a vp = ap->a_vp; np = VTONFS(vp); td = curthread; /* XXX */ - cred = curthread->td_ucred; /* XXX */ + /* Set the cred to n_writecred for the write rpcs. */ + if (np->n_writecred != NULL) + cred = crhold(np->n_writecred); + else + cred = crhold(curthread->td_ucred); /* XXX */ nmp = VFSTONFS(vp->v_mount); pages = ap->a_m; count = ap->a_count; @@ -335,6 +339,7 @@ ncl_putpages(struct vop_putpages_args *a iomode = NFSWRITE_FILESYNC; error = ncl_writerpc(vp, &uio, cred, &iomode, &must_commit, 0); + crfree(cred); pmap_qremove(kva, npages); relpbuf(bp, &ncl_pbuf_freecnt); Modified: stable/8/sys/fs/nfsclient/nfs_clnode.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clnode.c Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/fs/nfsclient/nfs_clnode.c Sun May 27 14:20:46 2012 (r236150) @@ -297,6 +297,8 @@ ncl_reclaim(struct vop_reclaim_args *ap) FREE((caddr_t)dp2, M_NFSDIROFF); } } + if (np->n_writecred != NULL) + crfree(np->n_writecred); FREE((caddr_t)np->n_fhp, M_NFSFH); if (np->n_v4 != NULL) FREE((caddr_t)np->n_v4, M_NFSV4NODE); Modified: stable/8/sys/fs/nfsclient/nfs_clvnops.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clvnops.c Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/fs/nfsclient/nfs_clvnops.c Sun May 27 14:20:46 2012 (r236150) @@ -480,6 +480,7 @@ nfs_open(struct vop_open_args *ap) struct vattr vattr; int error; int fmode = ap->a_mode; + struct ucred *cred; if (vp->v_type != VREG && vp->v_type != VDIR && vp->v_type != VLNK) return (EOPNOTSUPP); @@ -570,7 +571,22 @@ nfs_open(struct vop_open_args *ap) } np->n_directio_opens++; } + + /* + * If this is an open for writing, capture a reference to the + * credentials, so they can be used by ncl_putpages(). Using + * these write credentials is preferable to the credentials of + * whatever thread happens to be doing the VOP_PUTPAGES() since + * the write RPCs are less likely to fail with EACCES. + */ + if ((fmode & FWRITE) != 0) { + cred = np->n_writecred; + np->n_writecred = crhold(ap->a_cred); + } else + cred = NULL; mtx_unlock(&np->n_mtx); + if (cred != NULL) + crfree(cred); vnode_create_vobject(vp, vattr.va_size, ap->a_td); return (0); } Modified: stable/8/sys/fs/nfsclient/nfsnode.h ============================================================================== --- stable/8/sys/fs/nfsclient/nfsnode.h Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/fs/nfsclient/nfsnode.h Sun May 27 14:20:46 2012 (r236150) @@ -136,6 +136,7 @@ struct nfsnode { struct nfsv4node *n_v4; /* extra V4 stuff */ struct timespec n_unused4; struct timespec n_unused5; + struct ucred *n_writecred; /* Cred. for putpages */ }; #define n_atim n_un1.nf_atim Modified: stable/8/sys/nfsclient/nfs_bio.c ============================================================================== --- stable/8/sys/nfsclient/nfs_bio.c Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/nfsclient/nfs_bio.c Sun May 27 14:20:46 2012 (r236150) @@ -268,7 +268,11 @@ nfs_putpages(struct vop_putpages_args *a vp = ap->a_vp; np = VTONFS(vp); td = curthread; /* XXX */ - cred = curthread->td_ucred; /* XXX */ + /* Set the cred to n_writecred for the write rpcs. */ + if (np->n_writecred != NULL) + cred = crhold(np->n_writecred); + else + cred = crhold(curthread->td_ucred); /* XXX */ nmp = VFSTONFS(vp->v_mount); pages = ap->a_m; count = ap->a_count; @@ -332,6 +336,7 @@ nfs_putpages(struct vop_putpages_args *a iomode = NFSV3WRITE_FILESYNC; error = (nmp->nm_rpcops->nr_writerpc)(vp, &uio, cred, &iomode, &must_commit); + crfree(cred); pmap_qremove(kva, npages); relpbuf(bp, &nfs_pbuf_freecnt); Modified: stable/8/sys/nfsclient/nfs_node.c ============================================================================== --- stable/8/sys/nfsclient/nfs_node.c Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/nfsclient/nfs_node.c Sun May 27 14:20:46 2012 (r236150) @@ -270,6 +270,8 @@ nfs_reclaim(struct vop_reclaim_args *ap) free((caddr_t)dp2, M_NFSDIROFF); } } + if (np->n_writecred != NULL) + crfree(np->n_writecred); if (np->n_fhsize > NFS_SMALLFH) { free((caddr_t)np->n_fhp, M_NFSBIGFH); } Modified: stable/8/sys/nfsclient/nfs_vnops.c ============================================================================== --- stable/8/sys/nfsclient/nfs_vnops.c Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/nfsclient/nfs_vnops.c Sun May 27 14:20:46 2012 (r236150) @@ -510,6 +510,7 @@ nfs_open(struct vop_open_args *ap) struct vattr vattr; int error; int fmode = ap->a_mode; + struct ucred *cred; if (vp->v_type != VREG && vp->v_type != VDIR && vp->v_type != VLNK) return (EOPNOTSUPP); @@ -566,7 +567,22 @@ nfs_open(struct vop_open_args *ap) } np->n_directio_opens++; } + + /* + * If this is an open for writing, capture a reference to the + * credentials, so they can be used by nfs_putpages(). Using + * these write credentials is preferable to the credentials of + * whatever thread happens to be doing the VOP_PUTPAGES() since + * the write RPCs are less likely to fail with EACCES. + */ + if ((fmode & FWRITE) != 0) { + cred = np->n_writecred; + np->n_writecred = crhold(ap->a_cred); + } else + cred = NULL; mtx_unlock(&np->n_mtx); + if (cred != NULL) + crfree(cred); vnode_create_vobject(vp, vattr.va_size, ap->a_td); return (0); } Modified: stable/8/sys/nfsclient/nfsnode.h ============================================================================== --- stable/8/sys/nfsclient/nfsnode.h Sun May 27 13:33:54 2012 (r236149) +++ stable/8/sys/nfsclient/nfsnode.h Sun May 27 14:20:46 2012 (r236150) @@ -141,6 +141,7 @@ struct nfsnode { struct nfs_attrcache_timestamp n_unused; struct timespec n_unused4; struct timespec n_unused5; + struct ucred *n_writecred; /* Cred. for putpages */ }; #define n_atim n_un1.nf_atim From owner-svn-src-stable@FreeBSD.ORG Sun May 27 14:25:17 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 23386106564A; Sun, 27 May 2012 14:25:17 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0A9078FC08; Sun, 27 May 2012 14:25:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4REPGmt054513; Sun, 27 May 2012 14:25:16 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4REPGwN054510; Sun, 27 May 2012 14:25:16 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271425.q4REPGwN054510@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 14:25:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236151 - in stable/8/sys: amd64/linux32 cddl/dev/systrace compat/freebsd32 i386/linux kern X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 14:25:17 -0000 Author: rstone Date: Sun May 27 14:25:16 2012 New Revision: 236151 URL: http://svn.freebsd.org/changeset/base/236151 Log: MFC r227441 Correct the types of the arguments to return probes of the syscall provider. Previously we were erroneously supplying the argument types of the corresponding entry probe. Modified: stable/8/sys/amd64/linux32/linux32_systrace_args.c stable/8/sys/cddl/dev/systrace/systrace.c stable/8/sys/compat/freebsd32/freebsd32_systrace_args.c stable/8/sys/i386/linux/linux_systrace_args.c stable/8/sys/kern/makesyscalls.sh stable/8/sys/kern/systrace_args.c Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/amd64/linux32/linux32_systrace_args.c ============================================================================== --- stable/8/sys/amd64/linux32/linux32_systrace_args.c Sun May 27 14:20:46 2012 (r236150) +++ stable/8/sys/amd64/linux32/linux32_systrace_args.c Sun May 27 14:25:16 2012 (r236151) @@ -2265,7 +2265,7 @@ systrace_args(int sysnum, void *params, }; } static void -systrace_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) +systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) { const char *p = NULL; switch (sysnum) { @@ -5422,3 +5422,1238 @@ systrace_setargdesc(int sysnum, int ndx, if (p != NULL) strlcpy(desc, p, descsz); } +static void +systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) +{ + const char *p = NULL; + switch (sysnum) { +#define nosys linux_nosys + /* sys_exit */ + case 1: + if (ndx == 0 || ndx == 1) + p = "void"; + break; + /* linux_fork */ + case 2: + /* read */ + case 3: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* write */ + case 4: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_open */ + case 5: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* close */ + case 6: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_waitpid */ + case 7: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_creat */ + case 8: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_link */ + case 9: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_unlink */ + case 10: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_execve */ + case 11: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_chdir */ + case 12: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_time */ + case 13: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_mknod */ + case 14: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_chmod */ + case 15: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_lchown16 */ + case 16: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_stat */ + case 18: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_lseek */ + case 19: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getpid */ + case 20: + /* linux_mount */ + case 21: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_oldumount */ + case 22: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setuid16 */ + case 23: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getuid16 */ + case 24: + /* linux_stime */ + case 25: + /* linux_ptrace */ + case 26: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_alarm */ + case 27: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_pause */ + case 29: + /* linux_utime */ + case 30: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_access */ + case 33: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_nice */ + case 34: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* sync */ + case 36: + /* linux_kill */ + case 37: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rename */ + case 38: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_mkdir */ + case 39: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rmdir */ + case 40: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* dup */ + case 41: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_pipe */ + case 42: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_times */ + case 43: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_brk */ + case 45: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setgid16 */ + case 46: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getgid16 */ + case 47: + /* linux_signal */ + case 48: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_geteuid16 */ + case 49: + /* linux_getegid16 */ + case 50: + /* acct */ + case 51: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_umount */ + case 52: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_ioctl */ + case 54: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_fcntl */ + case 55: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* setpgid */ + case 57: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_olduname */ + case 59: + /* umask */ + case 60: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* chroot */ + case 61: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_ustat */ + case 62: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* dup2 */ + case 63: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getppid */ + case 64: + /* getpgrp */ + case 65: + /* setsid */ + case 66: + /* linux_sigaction */ + case 67: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sgetmask */ + case 68: + /* linux_ssetmask */ + case 69: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setreuid16 */ + case 70: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setregid16 */ + case 71: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sigsuspend */ + case 72: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sigpending */ + case 73: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sethostname */ + case 74: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setrlimit */ + case 75: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_old_getrlimit */ + case 76: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getrusage */ + case 77: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_gettimeofday */ + case 78: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_settimeofday */ + case 79: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getgroups16 */ + case 80: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setgroups16 */ + case 81: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_old_select */ + case 82: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_symlink */ + case 83: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_lstat */ + case 84: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_readlink */ + case 85: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* swapon */ + case 87: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_reboot */ + case 88: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_readdir */ + case 89: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_mmap */ + case 90: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* munmap */ + case 91: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_truncate */ + case 92: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_ftruncate */ + case 93: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* fchmod */ + case 94: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* fchown */ + case 95: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getpriority */ + case 96: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* setpriority */ + case 97: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_statfs */ + case 99: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_fstatfs */ + case 100: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_socketcall */ + case 102: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_syslog */ + case 103: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setitimer */ + case 104: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getitimer */ + case 105: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_newstat */ + case 106: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_newlstat */ + case 107: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_newfstat */ + case 108: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_uname */ + case 109: + /* linux_iopl */ + case 110: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_vhangup */ + case 111: + /* linux_wait4 */ + case 114: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_swapoff */ + case 115: + /* linux_sysinfo */ + case 116: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_ipc */ + case 117: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* fsync */ + case 118: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sigreturn */ + case 119: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_clone */ + case 120: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setdomainname */ + case 121: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_newuname */ + case 122: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_adjtimex */ + case 124: + /* linux_mprotect */ + case 125: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sigprocmask */ + case 126: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_create_module */ + case 127: + /* linux_init_module */ + case 128: + /* linux_delete_module */ + case 129: + /* linux_get_kernel_syms */ + case 130: + /* linux_quotactl */ + case 131: + /* getpgid */ + case 132: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* fchdir */ + case 133: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_bdflush */ + case 134: + /* linux_sysfs */ + case 135: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_personality */ + case 136: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setfsuid16 */ + case 138: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setfsgid16 */ + case 139: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_llseek */ + case 140: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getdents */ + case 141: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_select */ + case 142: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* flock */ + case 143: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_msync */ + case 144: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_readv */ + case 145: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_writev */ + case 146: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getsid */ + case 147: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_fdatasync */ + case 148: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sysctl */ + case 149: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* mlock */ + case 150: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* munlock */ + case 151: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* mlockall */ + case 152: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* munlockall */ + case 153: + /* sched_setparam */ + case 154: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* sched_getparam */ + case 155: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sched_setscheduler */ + case 156: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sched_getscheduler */ + case 157: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* sched_yield */ + case 158: + /* linux_sched_get_priority_max */ + case 159: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sched_get_priority_min */ + case 160: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sched_rr_get_interval */ + case 161: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_nanosleep */ + case 162: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_mremap */ + case 163: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setresuid16 */ + case 164: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getresuid16 */ + case 165: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_query_module */ + case 167: + /* poll */ + case 168: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_nfsservctl */ + case 169: + /* linux_setresgid16 */ + case 170: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getresgid16 */ + case 171: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_prctl */ + case 172: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rt_sigreturn */ + case 173: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rt_sigaction */ + case 174: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rt_sigprocmask */ + case 175: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rt_sigpending */ + case 176: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rt_sigtimedwait */ + case 177: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_rt_sigqueueinfo */ + case 178: + /* linux_rt_sigsuspend */ + case 179: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_pread */ + case 180: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_pwrite */ + case 181: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_chown16 */ + case 182: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getcwd */ + case 183: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_capget */ + case 184: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_capset */ + case 185: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sigaltstack */ + case 186: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sendfile */ + case 187: + /* linux_vfork */ + case 190: + /* linux_getrlimit */ + case 191: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_mmap2 */ + case 192: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_truncate64 */ + case 193: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_ftruncate64 */ + case 194: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_stat64 */ + case 195: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_lstat64 */ + case 196: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_fstat64 */ + case 197: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_lchown */ + case 198: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getuid */ + case 199: + /* linux_getgid */ + case 200: + /* geteuid */ + case 201: + /* getegid */ + case 202: + /* setreuid */ + case 203: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* setregid */ + case 204: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getgroups */ + case 205: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setgroups */ + case 206: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* fchown */ + case 207: + /* setresuid */ + case 208: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* getresuid */ + case 209: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* setresgid */ + case 210: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* getresgid */ + case 211: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_chown */ + case 212: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* setuid */ + case 213: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* setgid */ + case 214: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setfsuid */ + case 215: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_setfsgid */ + case 216: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_pivot_root */ + case 217: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_mincore */ + case 218: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* madvise */ + case 219: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_getdents64 */ + case 220: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_fcntl64 */ + case 221: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_gettid */ + case 224: + /* linux_setxattr */ + case 226: + /* linux_lsetxattr */ + case 227: + /* linux_fsetxattr */ + case 228: + /* linux_getxattr */ + case 229: + /* linux_lgetxattr */ + case 230: + /* linux_fgetxattr */ + case 231: + /* linux_listxattr */ + case 232: + /* linux_llistxattr */ + case 233: + /* linux_flistxattr */ + case 234: + /* linux_removexattr */ + case 235: + /* linux_lremovexattr */ + case 236: + /* linux_fremovexattr */ + case 237: + /* linux_tkill */ + case 238: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sys_futex */ + case 240: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sched_setaffinity */ + case 241: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sched_getaffinity */ + case 242: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_set_thread_area */ + case 243: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_fadvise64 */ + case 250: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_exit_group */ + case 252: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_lookup_dcookie */ + case 253: + /* linux_epoll_create */ + case 254: + /* linux_epoll_ctl */ + case 255: + /* linux_epoll_wait */ + case 256: + /* linux_remap_file_pages */ + case 257: + /* linux_set_tid_address */ + case 258: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_timer_create */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Sun May 27 14:48:14 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CDA76106566C; Sun, 27 May 2012 14:48:14 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B71468FC14; Sun, 27 May 2012 14:48:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4REmERH055533; Sun, 27 May 2012 14:48:14 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4REmEwg055529; Sun, 27 May 2012 14:48:14 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271448.q4REmEwg055529@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 14:48:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236152 - in stable/9/sys: cddl/dev/sdt kern sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 14:48:14 -0000 Author: rstone Date: Sun May 27 14:48:14 2012 New Revision: 236152 URL: http://svn.freebsd.org/changeset/base/236152 Log: MFC r233552 Instead of only iterating over the set of known SDT probes when sdt.ko is loaded and unloaded, also have sdt.ko register callbacks with kern_sdt.c that will be called when a newly loaded KLD module adds more probes or a module with probes is unloaded. This fixes two issues: first, if a module with SDT probes was loaded after sdt.ko was loaded, those new probes would not be available in DTrace. Second, if a module with SDT probes was unloaded while sdt.ko was loaded, the kernel would panic the next time DTrace had cause to try and do anything with the no-longer-existent probes. This makes it possible to create SDT probes in KLD modules, although there are still two caveats: first, any SDT probes in a KLD module must be part of a DTrace provider that is defined in that module. At present DTrace only destroys probes when the provider is destroyed, so you can still panic the system if a KLD module creates new probes in a provider from a different module(including the kernel) and then unload the the first module. Second, the system will panic if you unload a module containing SDT probes while there is an active D script that has enabled those probes. Modified: stable/9/sys/cddl/dev/sdt/sdt.c stable/9/sys/kern/kern_sdt.c stable/9/sys/sys/sdt.h Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/cddl/dev/sdt/sdt.c ============================================================================== --- stable/9/sys/cddl/dev/sdt/sdt.c Sun May 27 14:25:16 2012 (r236151) +++ stable/9/sys/cddl/dev/sdt/sdt.c Sun May 27 14:48:14 2012 (r236152) @@ -52,6 +52,8 @@ static void sdt_destroy(void *, dtrace_i static void sdt_enable(void *, dtrace_id_t, void *); static void sdt_disable(void *, dtrace_id_t, void *); static void sdt_load(void *); +static int sdt_provider_unreg_callback(struct sdt_provider *prov, + void *arg); static struct cdevsw sdt_cdevsw = { .d_version = D_VERSION, @@ -190,7 +192,8 @@ sdt_load(void *dummy) sdt_probe_func = dtrace_probe; - (void) sdt_provider_listall(sdt_provider_reg_callback, NULL); + sdt_register_callbacks(sdt_provider_reg_callback, NULL, + sdt_provider_unreg_callback, NULL, sdt_probe_callback, NULL); } static int @@ -206,7 +209,7 @@ sdt_unload() sdt_probe_func = sdt_probe_stub; - (void) sdt_provider_listall(sdt_provider_unreg_callback, NULL); + sdt_deregister_callbacks(); destroy_dev(sdt_cdev); Modified: stable/9/sys/kern/kern_sdt.c ============================================================================== --- stable/9/sys/kern/kern_sdt.c Sun May 27 14:25:16 2012 (r236151) +++ stable/9/sys/kern/kern_sdt.c Sun May 27 14:48:14 2012 (r236152) @@ -59,6 +59,16 @@ static struct sx sdt_sx; */ sdt_probe_func_t sdt_probe_func = sdt_probe_stub; +static sdt_provider_listall_func_t sdt_provider_register_func = NULL; +static sdt_provider_listall_func_t sdt_provider_deregister_func = NULL; +static sdt_probe_listall_func_t sdt_probe_register_func = NULL; + +static void *sdt_provider_register_arg; +static void *sdt_provider_deregister_arg; +static void *sdt_probe_register_arg; + +static int sdt_provider_listall_locked(sdt_provider_listall_func_t, void *); + /* * This is a stub for probe calls in case kernel DTrace support isn't * compiled in. It should never get called because there is no DTrace @@ -85,6 +95,9 @@ sdt_provider_register(void *arg) TAILQ_INIT(&prov->probe_list); + if (sdt_provider_register_func != NULL) + sdt_provider_register_func(prov, sdt_provider_register_arg); + sx_xunlock(&sdt_sx); } @@ -100,6 +113,9 @@ sdt_provider_deregister(void *arg) TAILQ_REMOVE(&sdt_provider_list, prov, prov_entry); + if (sdt_provider_deregister_func != NULL) + sdt_provider_deregister_func(prov, sdt_provider_deregister_arg); + sx_xunlock(&sdt_sx); } @@ -128,6 +144,9 @@ sdt_probe_register(void *arg) probe->state = SDT_INIT; + if (sdt_probe_register_func != NULL) + sdt_probe_register_func(probe, sdt_provider_register_arg); + sx_xunlock(&sdt_sx); } @@ -203,20 +222,31 @@ SYSUNINIT(sdt, SI_SUB_KDTRACE, SI_ORDER_ * List statically defined tracing providers. */ int -sdt_provider_listall(sdt_provider_listall_func_t callback_func,void *arg) +sdt_provider_listall(sdt_provider_listall_func_t callback_func, void *arg) +{ + int error; + + sx_xlock(&sdt_sx); + error = sdt_provider_listall_locked(callback_func, arg); + sx_xunlock(&sdt_sx); + + return (error); +} + +static int +sdt_provider_listall_locked(sdt_provider_listall_func_t callback_func, + void *arg) { int error = 0; struct sdt_provider *prov; - sx_xlock(&sdt_sx); + sx_assert(&sdt_sx, SX_XLOCKED); TAILQ_FOREACH(prov, &sdt_provider_list, prov_entry) { if ((error = callback_func(prov, arg)) != 0) break; } - sx_xunlock(&sdt_sx); - return (error); } @@ -271,3 +301,39 @@ sdt_argtype_listall(struct sdt_probe *pr return (error); } + +void sdt_register_callbacks(sdt_provider_listall_func_t register_prov, + void *reg_prov_arg, sdt_provider_listall_func_t deregister_prov, + void *dereg_prov_arg, sdt_probe_listall_func_t register_probe, + void * reg_probe_arg) +{ + + sx_xlock(&sdt_sx); + sdt_provider_register_func = register_prov; + sdt_provider_deregister_func = deregister_prov; + sdt_probe_register_func = register_probe; + + sdt_provider_register_arg = reg_prov_arg; + sdt_provider_deregister_arg = dereg_prov_arg; + sdt_probe_register_arg = reg_probe_arg; + + sdt_provider_listall_locked(register_prov, reg_prov_arg); + sx_xunlock(&sdt_sx); +} + +void sdt_deregister_callbacks(void) +{ + + sx_xlock(&sdt_sx); + sdt_provider_listall_locked(sdt_provider_deregister_func, + sdt_provider_deregister_arg); + + sdt_provider_register_func = NULL; + sdt_provider_deregister_func = NULL; + sdt_probe_register_func = NULL; + + sdt_provider_register_arg = NULL; + sdt_provider_deregister_arg = NULL; + sdt_probe_register_arg = NULL; + sx_xunlock(&sdt_sx); +} Modified: stable/9/sys/sys/sdt.h ============================================================================== --- stable/9/sys/sys/sdt.h Sun May 27 14:25:16 2012 (r236151) +++ stable/9/sys/sys/sdt.h Sun May 27 14:48:14 2012 (r236152) @@ -258,6 +258,10 @@ int sdt_argtype_listall(struct sdt_probe int sdt_probe_listall(struct sdt_provider *, sdt_probe_listall_func_t, void *); int sdt_provider_listall(sdt_provider_listall_func_t,void *); +void sdt_register_callbacks(sdt_provider_listall_func_t, void *, + sdt_provider_listall_func_t, void *, sdt_probe_listall_func_t, void *); +void sdt_deregister_callbacks(void); + #endif /* KDTRACE_HOOKS */ #endif /* _KERNEL */ From owner-svn-src-stable@FreeBSD.ORG Sun May 27 14:52:31 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CB7C4106564A; Sun, 27 May 2012 14:52:31 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B40C78FC08; Sun, 27 May 2012 14:52:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4REqVcM055772; Sun, 27 May 2012 14:52:31 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4REqVdx055768; Sun, 27 May 2012 14:52:31 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271452.q4REqVdx055768@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 14:52:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236153 - in stable/8/sys: cddl/dev/sdt kern sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 14:52:31 -0000 Author: rstone Date: Sun May 27 14:52:31 2012 New Revision: 236153 URL: http://svn.freebsd.org/changeset/base/236153 Log: MFC r233552 Instead of only iterating over the set of known SDT probes when sdt.ko is loaded and unloaded, also have sdt.ko register callbacks with kern_sdt.c that will be called when a newly loaded KLD module adds more probes or a module with probes is unloaded. This fixes two issues: first, if a module with SDT probes was loaded after sdt.ko was loaded, those new probes would not be available in DTrace. Second, if a module with SDT probes was unloaded while sdt.ko was loaded, the kernel would panic the next time DTrace had cause to try and do anything with the no-longer-existent probes. This makes it possible to create SDT probes in KLD modules, although there are still two caveats: first, any SDT probes in a KLD module must be part of a DTrace provider that is defined in that module. At present DTrace only destroys probes when the provider is destroyed, so you can still panic the system if a KLD module creates new probes in a provider from a different module(including the kernel) and then unload the the first module. Second, the system will panic if you unload a module containing SDT probes while there is an active D script that has enabled those probes. Modified: stable/8/sys/cddl/dev/sdt/sdt.c stable/8/sys/kern/kern_sdt.c stable/8/sys/sys/sdt.h Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/cddl/dev/sdt/sdt.c ============================================================================== --- stable/8/sys/cddl/dev/sdt/sdt.c Sun May 27 14:48:14 2012 (r236152) +++ stable/8/sys/cddl/dev/sdt/sdt.c Sun May 27 14:52:31 2012 (r236153) @@ -52,6 +52,8 @@ static void sdt_destroy(void *, dtrace_i static void sdt_enable(void *, dtrace_id_t, void *); static void sdt_disable(void *, dtrace_id_t, void *); static void sdt_load(void *); +static int sdt_provider_unreg_callback(struct sdt_provider *prov, + void *arg); static struct cdevsw sdt_cdevsw = { .d_version = D_VERSION, @@ -190,7 +192,8 @@ sdt_load(void *dummy) sdt_probe_func = dtrace_probe; - (void) sdt_provider_listall(sdt_provider_reg_callback, NULL); + sdt_register_callbacks(sdt_provider_reg_callback, NULL, + sdt_provider_unreg_callback, NULL, sdt_probe_callback, NULL); } static int @@ -206,7 +209,7 @@ sdt_unload() sdt_probe_func = sdt_probe_stub; - (void) sdt_provider_listall(sdt_provider_unreg_callback, NULL); + sdt_deregister_callbacks(); destroy_dev(sdt_cdev); Modified: stable/8/sys/kern/kern_sdt.c ============================================================================== --- stable/8/sys/kern/kern_sdt.c Sun May 27 14:48:14 2012 (r236152) +++ stable/8/sys/kern/kern_sdt.c Sun May 27 14:52:31 2012 (r236153) @@ -59,6 +59,16 @@ static struct sx sdt_sx; */ sdt_probe_func_t sdt_probe_func = sdt_probe_stub; +static sdt_provider_listall_func_t sdt_provider_register_func = NULL; +static sdt_provider_listall_func_t sdt_provider_deregister_func = NULL; +static sdt_probe_listall_func_t sdt_probe_register_func = NULL; + +static void *sdt_provider_register_arg; +static void *sdt_provider_deregister_arg; +static void *sdt_probe_register_arg; + +static int sdt_provider_listall_locked(sdt_provider_listall_func_t, void *); + /* * This is a stub for probe calls in case kernel DTrace support isn't * compiled in. It should never get called because there is no DTrace @@ -85,6 +95,9 @@ sdt_provider_register(void *arg) TAILQ_INIT(&prov->probe_list); + if (sdt_provider_register_func != NULL) + sdt_provider_register_func(prov, sdt_provider_register_arg); + sx_xunlock(&sdt_sx); } @@ -100,6 +113,9 @@ sdt_provider_deregister(void *arg) TAILQ_REMOVE(&sdt_provider_list, prov, prov_entry); + if (sdt_provider_deregister_func != NULL) + sdt_provider_deregister_func(prov, sdt_provider_deregister_arg); + sx_xunlock(&sdt_sx); } @@ -128,6 +144,9 @@ sdt_probe_register(void *arg) probe->state = SDT_INIT; + if (sdt_probe_register_func != NULL) + sdt_probe_register_func(probe, sdt_provider_register_arg); + sx_xunlock(&sdt_sx); } @@ -203,20 +222,31 @@ SYSUNINIT(sdt, SI_SUB_KDTRACE, SI_ORDER_ * List statically defined tracing providers. */ int -sdt_provider_listall(sdt_provider_listall_func_t callback_func,void *arg) +sdt_provider_listall(sdt_provider_listall_func_t callback_func, void *arg) +{ + int error; + + sx_xlock(&sdt_sx); + error = sdt_provider_listall_locked(callback_func, arg); + sx_xunlock(&sdt_sx); + + return (error); +} + +static int +sdt_provider_listall_locked(sdt_provider_listall_func_t callback_func, + void *arg) { int error = 0; struct sdt_provider *prov; - sx_xlock(&sdt_sx); + sx_assert(&sdt_sx, SX_XLOCKED); TAILQ_FOREACH(prov, &sdt_provider_list, prov_entry) { if ((error = callback_func(prov, arg)) != 0) break; } - sx_xunlock(&sdt_sx); - return (error); } @@ -271,3 +301,39 @@ sdt_argtype_listall(struct sdt_probe *pr return (error); } + +void sdt_register_callbacks(sdt_provider_listall_func_t register_prov, + void *reg_prov_arg, sdt_provider_listall_func_t deregister_prov, + void *dereg_prov_arg, sdt_probe_listall_func_t register_probe, + void * reg_probe_arg) +{ + + sx_xlock(&sdt_sx); + sdt_provider_register_func = register_prov; + sdt_provider_deregister_func = deregister_prov; + sdt_probe_register_func = register_probe; + + sdt_provider_register_arg = reg_prov_arg; + sdt_provider_deregister_arg = dereg_prov_arg; + sdt_probe_register_arg = reg_probe_arg; + + sdt_provider_listall_locked(register_prov, reg_prov_arg); + sx_xunlock(&sdt_sx); +} + +void sdt_deregister_callbacks(void) +{ + + sx_xlock(&sdt_sx); + sdt_provider_listall_locked(sdt_provider_deregister_func, + sdt_provider_deregister_arg); + + sdt_provider_register_func = NULL; + sdt_provider_deregister_func = NULL; + sdt_probe_register_func = NULL; + + sdt_provider_register_arg = NULL; + sdt_provider_deregister_arg = NULL; + sdt_probe_register_arg = NULL; + sx_xunlock(&sdt_sx); +} Modified: stable/8/sys/sys/sdt.h ============================================================================== --- stable/8/sys/sys/sdt.h Sun May 27 14:48:14 2012 (r236152) +++ stable/8/sys/sys/sdt.h Sun May 27 14:52:31 2012 (r236153) @@ -258,6 +258,10 @@ int sdt_argtype_listall(struct sdt_probe int sdt_probe_listall(struct sdt_provider *, sdt_probe_listall_func_t, void *); int sdt_provider_listall(sdt_provider_listall_func_t,void *); +void sdt_register_callbacks(sdt_provider_listall_func_t, void *, + sdt_provider_listall_func_t, void *, sdt_probe_listall_func_t, void *); +void sdt_deregister_callbacks(void); + #endif /* KDTRACE_HOOKS */ #endif /* _KERNEL */ From owner-svn-src-stable@FreeBSD.ORG Sun May 27 15:48:26 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7215F1065675; Sun, 27 May 2012 15:48:26 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C50C8FC1B; Sun, 27 May 2012 15:48:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RFmQLG058245; Sun, 27 May 2012 15:48:26 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RFmQwx058243; Sun, 27 May 2012 15:48:26 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201205271548.q4RFmQwx058243@svn.freebsd.org> From: Marius Strobl Date: Sun, 27 May 2012 15:48:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236154 - stable/8/sys/dev/dc X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 15:48:26 -0000 Author: marius Date: Sun May 27 15:48:25 2012 New Revision: 236154 URL: http://svn.freebsd.org/changeset/base/236154 Log: MFC: r235255 (partial) Change the module order of this MAC driver to be last so its is deterministically handled after the corresponding PHY drivers when loaded as module. Otherwise, when this MAC/PHY driver combination is compiled into a single module, probing the PHY drivers may fail. This makes r151438 actually work. Reported and tested by: yongari (for fxp(4)) Given that r226154 isn't part of stable/8, the other drivers fixed as part of the original r235255 aren't affected here. Submitted by: jhb Modified: stable/8/sys/dev/dc/if_dc.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/dc/if_dc.c ============================================================================== --- stable/8/sys/dev/dc/if_dc.c Sun May 27 14:52:31 2012 (r236153) +++ stable/8/sys/dev/dc/if_dc.c Sun May 27 15:48:25 2012 (r236154) @@ -354,8 +354,9 @@ static driver_t dc_driver = { static devclass_t dc_devclass; -DRIVER_MODULE(dc, pci, dc_driver, dc_devclass, 0, 0); -DRIVER_MODULE(miibus, dc, miibus_driver, miibus_devclass, 0, 0); +DRIVER_MODULE_ORDERED(dc, pci, dc_driver, dc_devclass, NULL, NULL, + SI_ORDER_ANY); +DRIVER_MODULE(miibus, dc, miibus_driver, miibus_devclass, NULL, NULL); #define DC_SETBIT(sc, reg, x) \ CSR_WRITE_4(sc, reg, CSR_READ_4(sc, reg) | (x)) From owner-svn-src-stable@FreeBSD.ORG Sun May 27 18:55:23 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C0D31106564A; Sun, 27 May 2012 18:55:23 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A0A488FC18; Sun, 27 May 2012 18:55:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RItN2w066098; Sun, 27 May 2012 18:55:23 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RItNYP066094; Sun, 27 May 2012 18:55:23 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271855.q4RItNYP066094@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 18:55:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236160 - in stable/9: cddl/contrib/opensolaris/lib/libdtrace/common sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/contrib/opensolaris/uts/common/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 18:55:23 -0000 Author: rstone Date: Sun May 27 18:55:23 2012 New Revision: 236160 URL: http://svn.freebsd.org/changeset/base/236160 Log: MFC r234691 Implement the D "cpu" variable, which returns curcpu. I have chosen not to follow the example of OpenSolaris and its descendants, which implemented cpu as an inline that took a value out of curthread. At certain points in the FreeBSD scheduler curthread->td_oncpu will no longer be valid (in particular, just before the thread gets descheduled) so instead I have implemented this as its own built-in variable. Sponsored by: Sandvine Inc. Modified: stable/9/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c stable/9/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Sun May 27 16:27:04 2012 (r236159) +++ stable/9/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Sun May 27 18:55:23 2012 (r236160) @@ -497,6 +497,12 @@ static const dt_ident_t _dtrace_globals[ { "zonename", DT_IDENT_SCALAR, 0, DIF_VAR_ZONENAME, DT_ATTR_STABCMN, DT_VERS_1_0, &dt_idops_type, "string" }, #endif + +#if !defined(sun) +{ "cpu", DT_IDENT_SCALAR, 0, DIF_VAR_CPU, + DT_ATTR_STABCMN, DT_VERS_1_6_3, &dt_idops_type, "int" }, +#endif + { NULL, 0, 0, 0, { 0, 0, 0 }, 0, NULL, NULL } }; Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun May 27 16:27:04 2012 (r236159) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun May 27 18:55:23 2012 (r236160) @@ -3143,6 +3143,11 @@ dtrace_dif_variable(dtrace_mstate_t *mst return (curthread->td_errno); #endif } +#if !defined(sun) + case DIF_VAR_CPU: { + return curcpu; + } +#endif default: DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP); return (0); Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Sun May 27 16:27:04 2012 (r236159) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Sun May 27 18:55:23 2012 (r236160) @@ -251,6 +251,10 @@ typedef enum dtrace_probespec { #define DIF_VAR_ERRNO 0x0120 /* thread errno */ #define DIF_VAR_EXECARGS 0x0121 /* process arguments */ +#if !defined(sun) +#define DIF_VAR_CPU 0x0200 +#endif + #define DIF_SUBR_RAND 0 #define DIF_SUBR_MUTEX_OWNED 1 #define DIF_SUBR_MUTEX_OWNER 2 From owner-svn-src-stable@FreeBSD.ORG Sun May 27 18:57:21 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F71E1065670; Sun, 27 May 2012 18:57:21 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 801028FC08; Sun, 27 May 2012 18:57:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RIvLKR066262; Sun, 27 May 2012 18:57:21 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RIvLFx066258; Sun, 27 May 2012 18:57:21 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271857.q4RIvLFx066258@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 18:57:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236161 - in stable/8: cddl/contrib/opensolaris/lib/libdtrace/common sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/contrib/opensolaris/uts/common/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 18:57:21 -0000 Author: rstone Date: Sun May 27 18:57:20 2012 New Revision: 236161 URL: http://svn.freebsd.org/changeset/base/236161 Log: MFC r234691 Implement the D "cpu" variable, which returns curcpu. I have chosen not to follow the example of OpenSolaris and its descendants, which implemented cpu as an inline that took a value out of curthread. At certain points in the FreeBSD scheduler curthread->td_oncpu will no longer be valid (in particukar, just before the thread gets descheduled) so instead I have implemented this as its own built-in variable. Sponsored by: Sandvine Inc. Modified: stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/sys/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Sun May 27 18:55:23 2012 (r236160) +++ stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Sun May 27 18:57:20 2012 (r236161) @@ -497,6 +497,12 @@ static const dt_ident_t _dtrace_globals[ { "zonename", DT_IDENT_SCALAR, 0, DIF_VAR_ZONENAME, DT_ATTR_STABCMN, DT_VERS_1_0, &dt_idops_type, "string" }, #endif + +#if !defined(sun) +{ "cpu", DT_IDENT_SCALAR, 0, DIF_VAR_CPU, + DT_ATTR_STABCMN, DT_VERS_1_6_3, &dt_idops_type, "int" }, +#endif + { NULL, 0, 0, 0, { 0, 0, 0 }, 0, NULL, NULL } }; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun May 27 18:55:23 2012 (r236160) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun May 27 18:57:20 2012 (r236161) @@ -3143,6 +3143,11 @@ dtrace_dif_variable(dtrace_mstate_t *mst return (curthread->td_errno); #endif } +#if !defined(sun) + case DIF_VAR_CPU: { + return curcpu; + } +#endif default: DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP); return (0); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Sun May 27 18:55:23 2012 (r236160) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Sun May 27 18:57:20 2012 (r236161) @@ -251,6 +251,10 @@ typedef enum dtrace_probespec { #define DIF_VAR_ERRNO 0x0120 /* thread errno */ #define DIF_VAR_EXECARGS 0x0121 /* process arguments */ +#if !defined(sun) +#define DIF_VAR_CPU 0x0200 +#endif + #define DIF_SUBR_RAND 0 #define DIF_SUBR_MUTEX_OWNED 1 #define DIF_SUBR_MUTEX_OWNER 2 From owner-svn-src-stable@FreeBSD.ORG Sun May 27 19:03:16 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C54C01065672; Sun, 27 May 2012 19:03:16 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B08218FC12; Sun, 27 May 2012 19:03:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RJ3GC3066566; Sun, 27 May 2012 19:03:16 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RJ3Gw8066564; Sun, 27 May 2012 19:03:16 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271903.q4RJ3Gw8066564@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 19:03:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236162 - stable/8/sys/dev/e1000 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 19:03:16 -0000 Author: rstone Date: Sun May 27 19:03:16 2012 New Revision: 236162 URL: http://svn.freebsd.org/changeset/base/236162 Log: MFC r225640 Clear transmit checksum offload context state upon lem(4) interface initialization. Prior to this change packets may be transmitted with an incorrect checksum. em(4) already has an equivalent change in r213234. Obtained From: Sandvine Modified: stable/8/sys/dev/e1000/if_lem.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/e1000/if_lem.c ============================================================================== --- stable/8/sys/dev/e1000/if_lem.c Sun May 27 18:57:20 2012 (r236161) +++ stable/8/sys/dev/e1000/if_lem.c Sun May 27 19:03:16 2012 (r236162) @@ -2655,6 +2655,7 @@ lem_setup_transmit_structures(struct ada } /* Reset state */ + adapter->last_hw_offload = 0; adapter->next_avail_tx_desc = 0; adapter->next_tx_to_clean = 0; adapter->num_tx_desc_avail = adapter->num_tx_desc; From owner-svn-src-stable@FreeBSD.ORG Sun May 27 19:10:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C9B38106566B; Sun, 27 May 2012 19:10:29 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B3F148FC0A; Sun, 27 May 2012 19:10:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RJATV3066876; Sun, 27 May 2012 19:10:29 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RJATf7066874; Sun, 27 May 2012 19:10:29 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201205271910.q4RJATf7066874@svn.freebsd.org> From: Sean Bruno Date: Sun, 27 May 2012 19:10:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236163 - stable/7/usr.sbin/mfiutil X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 19:10:29 -0000 Author: sbruno Date: Sun May 27 19:10:29 2012 New Revision: 236163 URL: http://svn.freebsd.org/changeset/base/236163 Log: MFC r235635 Decode new battery status indications. Modified: stable/7/usr.sbin/mfiutil/mfi_show.c Directory Properties: stable/7/usr.sbin/mfiutil/ (props changed) Modified: stable/7/usr.sbin/mfiutil/mfi_show.c ============================================================================== --- stable/7/usr.sbin/mfiutil/mfi_show.c Sun May 27 19:03:16 2012 (r236162) +++ stable/7/usr.sbin/mfiutil/mfi_show.c Sun May 27 19:10:29 2012 (r236163) @@ -219,7 +219,29 @@ show_battery(int ac, char **av) } if (stat.fw_status & MFI_BBU_STATE_DISCHARGE_ACTIVE) { printf("%s DISCHARGING", comma ? "," : ""); + comma = 1; } + if (stat.fw_status & MFI_BBU_STATE_LEARN_CYC_REQ) { + printf("%s LEARN_CYCLE_REQUESTED", comma ? "," : ""); + comma = 1; + } + if (stat.fw_status & MFI_BBU_STATE_LEARN_CYC_ACTIVE) { + printf("%s LEARN_CYCLE_ACTIVE", comma ? "," : ""); + comma = 1; + } + if (stat.fw_status & MFI_BBU_STATE_LEARN_CYC_FAIL) { + printf("%s LEARN_CYCLE_FAIL", comma ? "," : ""); + comma = 1; + } + if (stat.fw_status & MFI_BBU_STATE_LEARN_CYC_TIMEOUT) { + printf("%s LEARN_CYCLE_TIMEOUT", comma ? "," : ""); + comma = 1; + } + if (stat.fw_status & MFI_BBU_STATE_I2C_ERR_DETECT) { + printf("%s I2C_ERROR_DETECT", comma ? "," : ""); + comma = 1; + } + if (!comma) printf(" normal"); printf("\n"); From owner-svn-src-stable@FreeBSD.ORG Sun May 27 21:31:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F366E1065670; Sun, 27 May 2012 21:31:28 +0000 (UTC) (envelope-from mckusick@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DD7378FC0A; Sun, 27 May 2012 21:31:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RLVSZ5072799; Sun, 27 May 2012 21:31:28 GMT (envelope-from mckusick@svn.freebsd.org) Received: (from mckusick@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RLVS7T072797; Sun, 27 May 2012 21:31:28 GMT (envelope-from mckusick@svn.freebsd.org) Message-Id: <201205272131.q4RLVS7T072797@svn.freebsd.org> From: Kirk McKusick Date: Sun, 27 May 2012 21:31:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236164 - stable/9/sys/ufs/ffs X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 21:31:29 -0000 Author: mckusick Date: Sun May 27 21:31:28 2012 New Revision: 236164 URL: http://svn.freebsd.org/changeset/base/236164 Log: MFC of 235610 Add missing `continue' statement at end of case. Found by: Kevin Lo (kevlo@) Modified: stable/9/sys/ufs/ffs/ffs_softdep.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- stable/9/sys/ufs/ffs/ffs_softdep.c Sun May 27 19:10:29 2012 (r236163) +++ stable/9/sys/ufs/ffs/ffs_softdep.c Sun May 27 21:31:28 2012 (r236164) @@ -10687,6 +10687,7 @@ handle_jwork(wkhd) case D_FREEFRAG: rele_jseg(WK_JSEG(WK_FREEFRAG(wk)->ff_jdep)); WORKITEM_FREE(wk, D_FREEFRAG); + continue; case D_FREEWORK: handle_written_freework(WK_FREEWORK(wk)); continue; From owner-svn-src-stable@FreeBSD.ORG Mon May 28 04:47:47 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A9D51065670; Mon, 28 May 2012 04:47:47 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 541CE8FC1E; Mon, 28 May 2012 04:47:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4S4ll1R090591; Mon, 28 May 2012 04:47:47 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4S4lluj090589; Mon, 28 May 2012 04:47:47 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201205280447.q4S4lluj090589@svn.freebsd.org> From: Xin LI Date: Mon, 28 May 2012 04:47:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236166 - stable/9/sys/net X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 04:47:47 -0000 Author: delphij Date: Mon May 28 04:47:46 2012 New Revision: 236166 URL: http://svn.freebsd.org/changeset/base/236166 Log: MFC r235425: Sync DLTs with the latest pcap version. Modified: stable/9/sys/net/bpf.h Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/net/bpf.h ============================================================================== --- stable/9/sys/net/bpf.h Mon May 28 00:29:08 2012 (r236165) +++ stable/9/sys/net/bpf.h Mon May 28 04:47:46 2012 (r236166) @@ -279,6 +279,24 @@ struct bpf_zbuf_header { */ #define DLT_SYMANTEC_FIREWALL 99 +/* + * Values between 100 and 103 are used in capture file headers as + * link-layer header type LINKTYPE_ values corresponding to DLT_ types + * that differ between platforms; don't use those values for new DLT_ + * new types. + */ + +/* + * Values starting with 104 are used for newly-assigned link-layer + * header type values; for those link-layer header types, the DLT_ + * value returned by pcap_datalink() and passed to pcap_open_dead(), + * and the LINKTYPE_ value that appears in capture files, are the + * same. + * + * DLT_MATCHING_MIN is the lowest such value; DLT_MATCHING_MAX is + * the highest such value. + */ +#define DLT_MATCHING_MIN 104 /* * This value was defined by libpcap 0.5; platforms that have defined @@ -978,8 +996,110 @@ struct bpf_zbuf_header { * Raw IPv4/IPv6; different from DLT_RAW in that the DLT_ value specifies * whether it's v4 or v6. Requested by Darren Reed . */ -#define DLT_IPV4 228 -#define DLT_IPV6 229 +#define DLT_IPV4 228 +#define DLT_IPV6 229 + +/* + * IEEE 802.15.4, exactly as it appears in the spec (no padding, no + * nothing), and with no FCS at the end of the frame; requested by + * Jon Smirl . + */ +#define DLT_IEEE802_15_4_NOFCS 230 + +/* + * Raw D-Bus: + * + * http://www.freedesktop.org/wiki/Software/dbus + * + * messages: + * + * http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-messages + * + * starting with the endianness flag, followed by the message type, etc., + * but without the authentication handshake before the message sequence: + * + * http://dbus.freedesktop.org/doc/dbus-specification.html#auth-protocol + * + * Requested by Martin Vidner . + */ +#define DLT_DBUS 231 + +/* + * Juniper-private data link type, as per request from + * Hannes Gredler . + */ +#define DLT_JUNIPER_VS 232 +#define DLT_JUNIPER_SRX_E2E 233 +#define DLT_JUNIPER_FIBRECHANNEL 234 + +/* + * DVB-CI (DVB Common Interface for communication between a PC Card + * module and a DVB receiver). See + * + * http://www.kaiser.cx/pcap-dvbci.html + * + * for the specification. + * + * Requested by Martin Kaiser . + */ +#define DLT_DVB_CI 235 + +/* + * Variant of 3GPP TS 27.010 multiplexing protocol (similar to, but + * *not* the same as, 27.010). Requested by Hans-Christoph Schemmel + * . + */ +#define DLT_MUX27010 236 + +/* + * STANAG 5066 D_PDUs. Requested by M. Baris Demiray + * . + */ +#define DLT_STANAG_5066_D_PDU 237 + +/* + * Juniper-private data link type, as per request from + * Hannes Gredler . + */ +#define DLT_JUNIPER_ATM_CEMIC 238 + +/* + * NetFilter LOG messages + * (payload of netlink NFNL_SUBSYS_ULOG/NFULNL_MSG_PACKET packets) + * + * Requested by Jakub Zawadzki + */ +#define DLT_NFLOG 239 + +/* + * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type + * for Ethernet packets with a 4-byte pseudo-header and always + * with the payload including the FCS, as supplied by their + * netANALYZER hardware and software. + * + * Requested by Holger P. Frommer + */ +#define DLT_NETANALYZER 240 + +/* + * Hilscher Gesellschaft fuer Systemautomation mbH link-layer type + * for Ethernet packets with a 4-byte pseudo-header and FCS and + * with the Ethernet header preceded by 7 bytes of preamble and + * 1 byte of SFD, as supplied by their netANALYZER hardware and + * software. + * + * Requested by Holger P. Frommer + */ +#define DLT_NETANALYZER_TRANSPARENT 241 + +/* + * IP-over-Infiniband, as specified by RFC 4391. + * + * Requested by Petr Sumbera . + */ +#define DLT_IPOIB 242 + +#define DLT_MATCHING_MAX 242 /* highest value in the "matching" range */ /* * DLT and savefile link type values are split into a class and From owner-svn-src-stable@FreeBSD.ORG Mon May 28 07:34:53 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2C6011065670; Mon, 28 May 2012 07:34:53 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 123BF8FC0C; Mon, 28 May 2012 07:34:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4S7Yqkt097380; Mon, 28 May 2012 07:34:52 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4S7YqlK097370; Mon, 28 May 2012 07:34:52 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201205280734.q4S7YqlK097370@svn.freebsd.org> From: Xin LI Date: Mon, 28 May 2012 07:34:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236167 - in stable/9: contrib/libpcap contrib/libpcap/bpf/net contrib/libpcap/packaging contrib/libpcap/pcap contrib/libpcap/test lib/libpcap X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 07:34:53 -0000 Author: delphij Date: Mon May 28 07:34:52 2012 New Revision: 236167 URL: http://svn.freebsd.org/changeset/base/236167 Log: MFC: libpcap 1.2.1. Added: stable/9/contrib/libpcap/pcap-netfilter-linux.c - copied unchanged from r236166, head/contrib/libpcap/pcap-netfilter-linux.c stable/9/contrib/libpcap/pcap-netfilter-linux.h - copied unchanged from r236166, head/contrib/libpcap/pcap-netfilter-linux.h stable/9/contrib/libpcap/pcap-tstamp.manmisc - copied unchanged from r236166, head/contrib/libpcap/pcap-tstamp.manmisc stable/9/contrib/libpcap/pcap-tstamp.manmisc.in - copied unchanged from r236166, head/contrib/libpcap/pcap-tstamp.manmisc.in stable/9/contrib/libpcap/pcap_list_tstamp_types.3pcap - copied unchanged from r236166, head/contrib/libpcap/pcap_list_tstamp_types.3pcap stable/9/contrib/libpcap/pcap_list_tstamp_types.3pcap.in - copied unchanged from r236166, head/contrib/libpcap/pcap_list_tstamp_types.3pcap.in stable/9/contrib/libpcap/pcap_set_tstamp_type.3pcap - copied unchanged from r236166, head/contrib/libpcap/pcap_set_tstamp_type.3pcap stable/9/contrib/libpcap/pcap_set_tstamp_type.3pcap.in - copied unchanged from r236166, head/contrib/libpcap/pcap_set_tstamp_type.3pcap.in stable/9/contrib/libpcap/pcap_tstamp_type_name_to_val.3pcap - copied unchanged from r236166, head/contrib/libpcap/pcap_tstamp_type_name_to_val.3pcap stable/9/contrib/libpcap/pcap_tstamp_type_val_to_name.3pcap - copied unchanged from r236166, head/contrib/libpcap/pcap_tstamp_type_val_to_name.3pcap stable/9/contrib/libpcap/test/ - copied from r236166, head/contrib/libpcap/test/ Deleted: stable/9/contrib/libpcap/filtertest.c stable/9/contrib/libpcap/findalldevstest.c stable/9/contrib/libpcap/opentest.c stable/9/contrib/libpcap/pcap_free_datalinks.3pcap stable/9/contrib/libpcap/pcap_freealldevs.3pcap stable/9/contrib/libpcap/selpolltest.c Modified: stable/9/contrib/libpcap/CHANGES stable/9/contrib/libpcap/CREDITS stable/9/contrib/libpcap/Makefile.in stable/9/contrib/libpcap/README stable/9/contrib/libpcap/VERSION stable/9/contrib/libpcap/bpf/net/bpf_filter.c stable/9/contrib/libpcap/config.h.in stable/9/contrib/libpcap/configure stable/9/contrib/libpcap/configure.in stable/9/contrib/libpcap/ethertype.h stable/9/contrib/libpcap/fad-getad.c stable/9/contrib/libpcap/gencode.c stable/9/contrib/libpcap/gencode.h stable/9/contrib/libpcap/grammar.y stable/9/contrib/libpcap/inet.c stable/9/contrib/libpcap/packaging/pcap.spec.in stable/9/contrib/libpcap/pcap-bpf.c stable/9/contrib/libpcap/pcap-bt-linux.c stable/9/contrib/libpcap/pcap-common.c stable/9/contrib/libpcap/pcap-config.in stable/9/contrib/libpcap/pcap-dag.c stable/9/contrib/libpcap/pcap-dlpi.c stable/9/contrib/libpcap/pcap-filter.manmisc stable/9/contrib/libpcap/pcap-filter.manmisc.in stable/9/contrib/libpcap/pcap-int.h stable/9/contrib/libpcap/pcap-libdlpi.c stable/9/contrib/libpcap/pcap-linktype.manmisc stable/9/contrib/libpcap/pcap-linktype.manmisc.in stable/9/contrib/libpcap/pcap-linux.c stable/9/contrib/libpcap/pcap-savefile.manfile stable/9/contrib/libpcap/pcap-stdinc.h stable/9/contrib/libpcap/pcap-usb-linux.c stable/9/contrib/libpcap/pcap-win32.c stable/9/contrib/libpcap/pcap.3pcap stable/9/contrib/libpcap/pcap.3pcap.in stable/9/contrib/libpcap/pcap.c stable/9/contrib/libpcap/pcap/bpf.h stable/9/contrib/libpcap/pcap/pcap.h stable/9/contrib/libpcap/pcap_activate.3pcap stable/9/contrib/libpcap/pcap_can_set_rfmon.3pcap stable/9/contrib/libpcap/pcap_compile.3pcap stable/9/contrib/libpcap/pcap_compile.3pcap.in stable/9/contrib/libpcap/pcap_datalink.3pcap stable/9/contrib/libpcap/pcap_datalink.3pcap.in stable/9/contrib/libpcap/pcap_datalink_name_to_val.3pcap stable/9/contrib/libpcap/pcap_datalink_val_to_name.3pcap stable/9/contrib/libpcap/pcap_dump_open.3pcap stable/9/contrib/libpcap/pcap_fileno.3pcap stable/9/contrib/libpcap/pcap_findalldevs.3pcap stable/9/contrib/libpcap/pcap_get_selectable_fd.3pcap stable/9/contrib/libpcap/pcap_list_datalinks.3pcap stable/9/contrib/libpcap/pcap_list_datalinks.3pcap.in stable/9/contrib/libpcap/pcap_loop.3pcap stable/9/contrib/libpcap/pcap_major_version.3pcap stable/9/contrib/libpcap/pcap_next_ex.3pcap stable/9/contrib/libpcap/pcap_open_dead.3pcap stable/9/contrib/libpcap/pcap_open_live.3pcap stable/9/contrib/libpcap/pcap_open_offline.3pcap stable/9/contrib/libpcap/pcap_set_datalink.3pcap stable/9/contrib/libpcap/savefile.c stable/9/contrib/libpcap/scanner.l stable/9/contrib/libpcap/sf-pcap-ng.c stable/9/contrib/libpcap/sf-pcap.c stable/9/lib/libpcap/Makefile stable/9/lib/libpcap/config.h Directory Properties: stable/9/contrib/libpcap/ (props changed) stable/9/lib/libpcap/ (props changed) Modified: stable/9/contrib/libpcap/CHANGES ============================================================================== --- stable/9/contrib/libpcap/CHANGES Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/CHANGES Mon May 28 07:34:52 2012 (r236167) @@ -1,3 +1,77 @@ +Friday December 9, 2011. guy@alum.mit.edu. +Summary for 1.2.1 libpcap release + Update README file. + Fix typoes in README.linux file. + Clean up some compiler warnings. + Fix Linux compile problems and tests for ethtool.h. + Treat Debian/kFreeBSD and GNU/Hurd as systems with GNU + toolchains. + Support 802.1 QinQ as a form of VLAN in filters. + Treat "carp" as equivalent to "vrrp" in filters. + Fix code generated for "ip6 protochain". + Add some new link-layer header types. + Support capturing NetFilter log messages on Linux. + Clean up some error messages. + Turn off monitor mode on exit for mac80211 interfaces on Linux. + Fix problems turning monitor mode on for non-mac80211 interfaces + on Linux. + Properly fail if /sys/class/net or /proc/net/dev exist but can't + be opened. + Fail if pcap_activate() is called on an already-activated + pcap_t, and add a test program for that. + Fix filtering in pcap-ng files. + Don't build for PowerPC on Mac OS X Lion. + Simplify handling of new DLT_/LINKTYPE_ values. + Expand pcap(3PCAP) man page. + +Sunday July 24, 2011. mcr@sandelman.ca. +Summary for 1.2 libpcap release + All of the changes listed below for 1.1.1 and 1.1.2. + Changes to error handling for pcap_findalldevs(). + Fix the calculation of the frame size in memory-mapped captures. + Add a link-layer header type for STANAG 5066 D_PDUs. + Add a link-layer type for a variant of 3GPP TS 27.010. + Noted real nature of LINKTYPE_ARCNET. + Add a link-layer type for DVB-CI. + Fix configure-script discovery of VLAN acceleration support. + see http://netoptimizer.blogspot.com/2010/09/tcpdump-vs-vlan-tags.html + Linux, HP-UX, AIX, NetBSD and OpenBSD compilation/conflict fixes. + Protect against including AIX 5.x's having been included. + Add DLT_DBUS, for raw D-Bus messages. + Treat either EPERM or EACCES as "no soup for you". + Changes to permissions on DLPI systems. + Add DLT_IEEE802_15_4_NOFCS for 802.15.4 interfaces. + +Fri. August 6, 2010. guy@alum.mit.edu. +Summary for 1.1.2 libpcap release + Return DLT_ values, not raw LINKTYPE_ values from + pcap_datalink() when reading pcap-ng files + Add support for "wlan ra" and "wlan ta", to check the RA and TA + of WLAN frames that have them + Don't crash if "wlan addr{1,2,3,4}" are used without 802.11 + headers + Do filtering on USB and Bluetooth capturing + On FreeBSD/SPARC64, use -fPIC - it's apparently necessary + Check for valid port numbers (fit in a 16-bit unsigned field) in + "port" filters + Reject attempts to put savefiles into non-blocking mode + Check for "no such device" for the "get the media types" ioctl + in *BSD + Improve error messages from bpf_open(), and let it do the error + handling + Return more specific errors from pcap_can_set_rfmon(); fix + documentation + Update description fetching code for FreeBSD, fix code for + OpenBSD + Ignore /sys/net/dev files if we get ENODEV for them, not just + ENXIO; fixes handling of bonding devices on Linux + Fix check for a constant 0 argument to BPF_DIV + Use the right version of ar when cross-building + Free any filter set on a savefile when the savefile is closed + Include the CFLAGS setting when configure was run in the + compiler flags + Add support for 802.15.4 interfaces on Linux + Thu. April 1, 2010. guy@alum.mit.edu. Summary for 1.1.1 libpcap release Update CHANGES to reflect more of the changes in 1.1.0. Modified: stable/9/contrib/libpcap/CREDITS ============================================================================== --- stable/9/contrib/libpcap/CREDITS Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/CREDITS Mon May 28 07:34:52 2012 (r236167) @@ -1,145 +1,154 @@ This file lists people who have contributed to libpcap: The current maintainers: - Bill Fenner - Fulvio Risso - Guy Harris - Hannes Gredler - Michael Richardson + Bill Fenner + Fulvio Risso + Guy Harris + Hannes Gredler + Michael Richardson Additional people who have contributed patches: - Alan Bawden - Albert Chin - Alexander 'Leo' Bergolth - Alexey Kuznetsov - Alon Bar-Lev - Andrew Brown - Antti Kantee - Arien Vijn - Arkadiusz Miskiewicz - Armando L. Caro Jr. - Assar Westerlund - Brian Ginsbach - Charles M. Hannum - Chris G. Demetriou - Chris Lightfoot - Chris Maynard - Chris Pepper - Christian Bell - Christian Peron - Daniele Orlandi - Darren Reed - David Kaelbling - David Young - Dean Gaudet - Don Ebright - Dug Song - Dustin Spicuzza - Eric Anderson - Erik de Castro Lopo - Felix Obenhuber - Florent Drouin - Franz Schaefer - Fulko Hew - Fumiyuki Shimizu - Gianluca Varenni - Gilbert Hoyek - Gisle Vanem - Graeme Hewson - Greg Stark - Greg Troxel - Gregor Maier - Guillaume Pelat - Hagen Paul Pfeifer - Hyung Sik Yoon - Igor Khristophorov - Jan-Philip Velders - Jason R. Thorpe - Javier Achirica - Jean Tourrilhes - Jean-Louis Charton - Jefferson Ogata - Jesper Peterson - Joerg Mayer - John Bankier - Jon Lindgren - Jon Smirl - Juergen Schoenwaelder - Jung-uk Kim - Kazushi Sugyo - Klaus Klein - Koryn Grant - Kris Katterjohn - Krzysztof Halasa - Lorenzo Cavallaro - Loris Degioanni - Love Hörnquist-Ã…strand - Luis Martin Garcia - Maciej W. Rozycki - Marcus Felipe Pereira - Mark C. Brown - Mark Pizzolato - Markus Mayer - Martin Husemann - Márton Németh - Matthew Luckie - Max Laier - Mike Frysinger - Mike Kershaw - Mike Wiacek - Monroe Williams - N. Leiten - Nicolas Dade - Octavian Cerna - Olaf Kirch - Ollie Wild - Onno van der Linden - Paolo Abeni - Patrick Marie - Patrick McHardy - Paul Mundt - Pavel Kankovsky - Pawel Pokrywka - Peter Fales - Peter Jeremy - Peter Volkov - Phil Wood - Rafal Maszkowski - - Richard Stearn - Rick Jones - Robert Edmonds - Roberto Mariani - Romain Francoise - Sagun Shakya - Scott Barron - Scott Gifford - Sebastian Krahmer - Sebastien Roy - Sepherosa Ziehau - Shaun Clowes - Solomon Peachy - Stefan Hudson - Stephen Donnelly - Takashi Yamamoto - Tanaka Shin-ya - Tobias Poschwatta - Tony Li - Torsten Landschoff - Uns Lider - Uwe Girlich - Wesley Shields - Xianjie Zhang - Xin Li - Yen Yen Lim - Yvan Vanhullebus - Yoann Vandoorselaere + Alan Bawden + Albert Chin + Alexander 'Leo' Bergolth + Alexey Kuznetsov + Alon Bar-Lev + Andrew Brown + + Antti Kantee + Arien Vijn + Arkadiusz Miskiewicz + Armando L. Caro Jr. + Assar Westerlund + Brian Ginsbach + Charles M. Hannum + Chris G. Demetriou + Chris Lightfoot + Chris Maynard + Chris Pepper + Christian Bell + Christian Peron + Daniele Orlandi + Darren Reed + David Kaelbling + David Young + Dean Gaudet + Don Ebright + Dug Song + Dustin Spicuzza + Eric Anderson + Erik de Castro Lopo + Felix Obenhuber + Florent Drouin + Franz Schaefer + frederich + Fulko Hew + Fumiyuki Shimizu + Garrett Cooper + Gianluca Varenni + Gilbert Hoyek + Gisle Vanem + Graeme Hewson + Greg Stark + Greg Troxel + Gregor Maier + Guillaume Pelat + Hagen Paul Pfeifer + Henri Doreau + Hyung Sik Yoon + Igor Khristophorov + Jan-Philip Velders + Jason R. Thorpe + Javier Achirica + Jean Tourrilhes + Jean-Louis Charton + Jefferson Ogata + Jesper Dangaard Brouer + Jesper Peterson + Joerg Mayer + John Bankier + Jon Lindgren + Jon Smirl + Juergen Schoenwaelder + Julien Moutinho + Jung-uk Kim + Kazushi Sugyo + Klaus Klein + Koryn Grant + Kris Katterjohn + Krzysztof Halasa + Lorenzo Cavallaro + Loris Degioanni + Love Hörnquist-Ã…strand + Luis MartinGarcia + Maciej W. Rozycki + Marcus Felipe Pereira + Mark C. Brown + Mark Pizzolato + Markus Mayer + Martin Husemann + Márton Németh + Matthew Luckie + Max Laier + Mike Frysinger + Mike Kershaw + Mike Wiacek + Miroslav Lichvar + Monroe Williams + + N. Leiten + Nicolas Dade + Octavian Cerna + Olaf Kirch + Ollie Wild + Onno van der Linden + Paolo Abeni + Patrick Marie + Patrick McHardy + Paul Mundt + Pavel Kankovsky + Pawel Pokrywka + Peter Fales + Peter Jeremy + Peter Volkov + Phil Wood + Rafal Maszkowski + + Richard Stearn + Rick Jones + Robert Edmonds + Roberto Mariani + Romain Francoise + Sagun Shakya + Scott Barron + Scott Gifford + Scott Mcmillan + Sebastian Krahmer + Sebastien Roy + Sepherosa Ziehau + Shaun Clowes + Solomon Peachy + Stefan Hudson + Stephen Donnelly + Takashi Yamamoto + Tanaka Shin-ya + Tobias Poschwatta + Tony Li + Torsten Landschoff + Uns Lider + Uwe Girlich + Wesley Shields + Xianjie Zhang + Xin Li + Yen Yen Lim + Yvan Vanhullebus + Yoann Vandoorselaere The original LBL crew: - Steve McCanne - Craig Leres - Van Jacobson + Steve McCanne + Craig Leres + Van Jacobson Past maintainers: - Jun-ichiro itojun Hagino + Jun-ichiro itojun Hagino Modified: stable/9/contrib/libpcap/Makefile.in ============================================================================== --- stable/9/contrib/libpcap/Makefile.in Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/Makefile.in Mon May 28 07:34:52 2012 (r236167) @@ -46,19 +46,21 @@ VPATH = @srcdir@ LD = /usr/bin/ld CC = @CC@ +AR = @AR@ CCOPT = @V_CCOPT@ INCLS = -I. @V_INCLS@ DEFS = @DEFS@ @V_DEFS@ ADDLOBJS = @ADDLOBJS@ ADDLARCHIVEOBJS = @ADDLARCHIVEOBJS@ LIBS = @LIBS@ +CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ DYEXT = @DYEXT@ V_RPATH_OPT = @V_RPATH_OPT@ PROG=libpcap # Standard CFLAGS -CFLAGS = $(CCOPT) $(INCLS) $(DEFS) +FULL_CFLAGS = $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS) INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -78,9 +80,9 @@ YACC = @V_YACC@ # problem if you don't own the file but can write to the directory. .c.o: @rm -f $@ - $(CC) $(CFLAGS) -c $(srcdir)/$*.c + $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c -PSRC = pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ @CAN_SRC@ +PSRC = pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ @CAN_SRC@ @NETFILTER_SRC@ FSRC = fad-@V_FINDALLDEVS@.c SSRC = @SSRC@ CSRC = pcap.c inet.c gencode.c optimize.c nametoaddr.c etherent.c \ @@ -123,14 +125,29 @@ HDR = $(PUBHDR) \ sf-pcap-ng.h \ sunatmpos.h +TESTS = \ + filtertest \ + findalldevstest \ + nonblocktest \ + opentest \ + selpolltest + +TESTS_SRC = \ + tests/filtertest.c \ + tests/findalldevstest.c \ + tests/nonblocktest.c \ + tests/opentest.c \ + tests/reactivatetest.c \ + tests/selpolltest.c + GENHDR = \ scanner.h tokdefs.h version.h TAGFILES = \ $(SRC) $(HDR) -CLEANFILES = $(OBJ) libpcap.* filtertest findalldevstest selpolltest \ - opentest $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \ +CLEANFILES = $(OBJ) libpcap.* $(TESTS) \ + $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \ lex.yy.c pcap-config MAN1 = pcap-config.1 @@ -141,8 +158,10 @@ MAN3PCAP_EXPAND = \ pcap_datalink.3pcap.in \ pcap_dump_open.3pcap.in \ pcap_list_datalinks.3pcap.in \ + pcap_list_tstamp_types.3pcap.in \ pcap_open_dead.3pcap.in \ - pcap_open_offline.3pcap.in + pcap_open_offline.3pcap.in \ + pcap_set_tstamp_type.3pcap.in MAN3PCAP_NOEXPAND = \ pcap_activate.3pcap \ @@ -160,9 +179,7 @@ MAN3PCAP_NOEXPAND = \ pcap_file.3pcap \ pcap_fileno.3pcap \ pcap_findalldevs.3pcap \ - pcap_freealldevs.3pcap \ pcap_freecode.3pcap \ - pcap_free_datalinks.3pcap \ pcap_get_selectable_fd.3pcap \ pcap_geterr.3pcap \ pcap_inject.3pcap \ @@ -187,7 +204,9 @@ MAN3PCAP_NOEXPAND = \ pcap_snapshot.3pcap \ pcap_stats.3pcap \ pcap_statustostr.3pcap \ - pcap_strerror.3pcap + pcap_strerror.3pcap \ + pcap_tstamp_type_name_to_val.3pcap \ + pcap_tstamp_type_val_to_name.3pcap MAN3PCAP = $(MAN3PCAP_NOEXPAND) $(MAN3PCAP_EXPAND:.in=) @@ -196,9 +215,11 @@ MANFILE = \ MANMISC = \ pcap-filter.manmisc.in \ - pcap-linktype.manmisc.in + pcap-linktype.manmisc.in \ + pcap-tstamp.manmisc.in EXTRA_DIST = \ + $(TESTS_SRC) \ CHANGES \ ChmodBPF/ChmodBPF \ ChmodBPF/StartupParameters.plist \ @@ -237,8 +258,6 @@ EXTRA_DIST = \ fad-null.c \ fad-sita.c \ fad-win32.c \ - filtertest.c \ - findalldevstest.c \ grammar.y \ install-sh \ lbl/os-aix4.h \ @@ -263,7 +282,6 @@ EXTRA_DIST = \ msdos/pktdrvr.c \ msdos/pktdrvr.h \ msdos/readme.dos \ - opentest.c \ org.tcpdump.chmod_bpf.plist \ packaging/pcap.spec.in \ pcap-bpf.c \ @@ -282,6 +300,8 @@ EXTRA_DIST = \ pcap-libdlpi.c \ pcap-linux.c \ pcap-namedb.h \ + pcap-netfilter-linux.c \ + pcap-netfilter-linux.h \ pcap-nit.c \ pcap-null.c \ pcap-pf.c \ @@ -299,7 +319,6 @@ EXTRA_DIST = \ pcap-win32.c \ runlex.sh \ scanner.l \ - selpolltest.c \ Win32/Include/Gnuc.h \ Win32/Include/addrinfo.h \ Win32/Include/bittypes.h \ @@ -328,7 +347,7 @@ all: libpcap.a shared pcap-config libpcap.a: $(OBJ) @rm -f $@ - ar rc $@ $(OBJ) $(ADDLARCHIVEOBJS) + $(AR) rc $@ $(OBJ) $(ADDLARCHIVEOBJS) $(RANLIB) $@ shared: libpcap.$(DYEXT) @@ -401,7 +420,7 @@ libpcap.sl: $(OBJ) libpcap.shareda: $(OBJ) @rm -f $@ shr.o $(CC) @V_SHLIB_OPT@ -o shr.o $(OBJ) $(ADDLOBJS) $(LDFLAGS) $(LIBS) - ar rc $@ shr.o + $(AR) rc $@ shr.o # # For platforms that don't support shared libraries (or on which we @@ -414,7 +433,7 @@ scanner.c: $(srcdir)/scanner.l $(srcdir)/runlex.sh $(LEX) -o$@ $< scanner.o: scanner.c tokdefs.h - $(CC) $(CFLAGS) -c scanner.c + $(CC) $(FULL_CFLAGS) -c scanner.c pcap.o: version.h @@ -427,13 +446,13 @@ grammar.c: $(srcdir)/grammar.y grammar.o: grammar.c @rm -f $@ - $(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c + $(CC) $(FULL_CFLAGS) -Dyylval=pcap_lval -c grammar.c version.o: version.c - $(CC) $(CFLAGS) -c version.c + $(CC) $(FULL_CFLAGS) -c version.c snprintf.o: $(srcdir)/missing/snprintf.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c version.c: $(srcdir)/VERSION @rm -f $@ @@ -467,35 +486,47 @@ bpf_filter.c: $(srcdir)/bpf/net/bpf_filt ln -s $(srcdir)/bpf/net/bpf_filter.c bpf_filter.c bpf_filter.o: bpf_filter.c - $(CC) $(CFLAGS) -c bpf_filter.c + $(CC) $(FULL_CFLAGS) -c bpf_filter.c # # Generate the pcap-config script. # -pcap-config: $(srcdir)/pcap-config.in +# Some Makes, e.g. AIX Make and Solaris Make, can't handle "--file=$@.tmp:$<"; +# for example, the Solaris 9 make man page says +# +# Because make assigns $< and $* as it would for implicit rules +# (according to the suffixes list and the directory contents), +# they may be unreliable when used within explicit target entries. +# +# and this is an explicit target entry. +# +# Therefore, instead of using $<, we explicitly put in $(srcdir)/pcap-config.in. +# +pcap-config: $(srcdir)/pcap-config.in ./config.status @rm -f $@ $@.tmp - sed -e 's|@includedir[@]|$(includedir)|g' \ - -e 's|@libdir[@]|$(libdir)|g' \ - -e 's|@LIBS[@]|$(LIBS)|g' \ - -e 's|@V_RPATH_OPT[@]|$(V_RPATH_OPT)|g' \ - $(srcdir)/pcap-config.in >$@.tmp + ./config.status --file=$@.tmp:$(srcdir)/pcap-config.in mv $@.tmp $@ chmod a+x $@ # # Test programs - not built by default, and not installed. # -filtertest: filtertest.c libpcap.a - $(CC) $(CFLAGS) -I. -L. -o filtertest $(srcdir)/filtertest.c libpcap.a $(LIBS) +tests: $(TESTS) + +filtertest: tests/filtertest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o filtertest $(srcdir)/tests/filtertest.c libpcap.a $(LIBS) + +findalldevstest: tests/findalldevstest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o findalldevstest $(srcdir)/tests/findalldevstest.c libpcap.a $(LIBS) -findalldevstest: findalldevstest.c libpcap.a - $(CC) $(CFLAGS) -I. -L. -o findalldevstest $(srcdir)/findalldevstest.c libpcap.a $(LIBS) +nonblocktest: tests/nonblocktest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o nonblocktest $(srcdir)/tests/nonblocktest.c libpcap.a $(LIBS) -selpolltest: selpolltest.c libpcap.a - $(CC) $(CFLAGS) -I. -L. -o selpolltest $(srcdir)/selpolltest.c libpcap.a $(LIBS) +opentest: tests/opentest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o opentest $(srcdir)/tests/opentest.c libpcap.a $(LIBS) -opentest: opentest.c libpcap.a - $(CC) $(CFLAGS) -I. -L. -o opentest $(srcdir)/opentest.c libpcap.a $(LIBS) +selpolltest: tests/selpolltest.c libpcap.a + $(CC) $(FULL_CFLAGS) -I. -L. -o selpolltest $(srcdir)/tests/selpolltest.c libpcap.a $(LIBS) install: install-shared install-archive pcap-config [ -d $(DESTDIR)$(libdir) ] || \ @@ -533,12 +564,21 @@ install: install-shared install-archive rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap ln $(DESTDIR)$(mandir)/man3/pcap_dump_open.3pcap \ $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap + ln $(DESTDIR)$(mandir)/man3/pcap_findalldevs.3pcap \ + $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap ln $(DESTDIR)$(mandir)/man3/pcap_geterr.3pcap \ $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap ln $(DESTDIR)$(mandir)/man3/pcap_inject.3pcap \ $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap + ln $(DESTDIR)$(mandir)/man3/pcap_list_datalinks.3pcap \ + $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap + ln $(DESTDIR)$(mandir)/man3/pcap_list_tstamp_types.3pcap \ + $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap ln $(DESTDIR)$(mandir)/man3/pcap_loop.3pcap \ $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap @@ -622,8 +662,11 @@ uninstall: uninstall-shared rm -f $(DESTDIR)$(mandir)/man3/$$i; done rm -f $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_freealldevs.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_datalinks.3pcap + rm -f $(DESTDIR)$(mandir)/man3/pcap_free_tstamp_types.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap rm -f $(DESTDIR)$(mandir)/man3/pcap_next.3pcap @@ -660,7 +703,7 @@ clean: distclean: clean rm -f Makefile config.cache config.log config.status \ - config.h gnuc.h os-proto.h bpf_filter.c pcap-config \ + config.h gnuc.h net os-proto.h bpf_filter.c pcap-config \ stamp-h stamp-h.in rm -f $(MAN3PCAP_EXPAND:.in=) $(MANFILE:.in=) $(MANMISC:.in=) rm -rf autom4te.cache Modified: stable/9/contrib/libpcap/README ============================================================================== --- stable/9/contrib/libpcap/README Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/README Mon May 28 07:34:52 2012 (r236167) @@ -63,13 +63,14 @@ added overhead (especially, for selectiv would translate BPF filters into a filter program that is compatible with the underlying kernel subsystem, but this is not yet implemented. -BPF is standard in 4.4BSD, BSD/OS, NetBSD, FreeBSD, and OpenBSD. DEC -OSF/1/Digital UNIX/Tru64 UNIX uses the packetfilter interface but has -been extended to accept BPF filters (which libpcap utilizes). Also, you -can add BPF filter support to Ultrix using the kernel source and/or -object patches available in: +BPF is standard in 4.4BSD, BSD/OS, NetBSD, FreeBSD, OpenBSD, DragonFly +BSD, and Mac OS X; an older, modified and undocumented version is +standard in AIX. {DEC OSF/1, Digital UNIX, Tru64 UNIX} uses the +packetfilter interface but has been extended to accept BPF filters +(which libpcap utilizes). Also, you can add BPF filter support to +Ultrix using the kernel source and/or object patches available in: - ftp://gatekeeper.dec.com/pub/DEC/net/bpfext42.tar.Z. + http://www.tcpdump.org/other/bpfext42.tar.Z Linux, in the 2.2 kernel and later kernels, has a "Socket Filter" mechanism that accepts BPF filters; see the README.linux file for Modified: stable/9/contrib/libpcap/VERSION ============================================================================== --- stable/9/contrib/libpcap/VERSION Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/VERSION Mon May 28 07:34:52 2012 (r236167) @@ -1 +1 @@ -1.1.1 +1.2.1 Modified: stable/9/contrib/libpcap/bpf/net/bpf_filter.c ============================================================================== --- stable/9/contrib/libpcap/bpf/net/bpf_filter.c Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/bpf/net/bpf_filter.c Mon May 28 07:34:52 2012 (r236167) @@ -619,7 +619,7 @@ bpf_validate(f, len) /* * Check for constant division by 0. */ - if (BPF_RVAL(p->code) == BPF_K && p->k == 0) + if (BPF_SRC(p->code) == BPF_K && p->k == 0) return 0; break; default: Modified: stable/9/contrib/libpcap/config.h.in ============================================================================== --- stable/9/contrib/libpcap/config.h.in Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/config.h.in Mon May 28 07:34:52 2012 (r236167) @@ -18,6 +18,9 @@ /* define if you have streams capable DAG API */ #undef HAVE_DAG_STREAMS_API +/* define if you have vdag_set_device_info() */ +#undef HAVE_DAG_VDAG + /* Define to 1 if you have the declaration of `ether_hostton', and to 0 if you don't. */ #undef HAVE_DECL_ETHER_HOSTTON @@ -52,12 +55,30 @@ /* if libnl exists */ #undef HAVE_LIBNL +/* if libnl exists and is version 2.x */ +#undef HAVE_LIBNL_2_x + /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_COMPILER_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_ETHTOOL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_IF_PACKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_NET_TSTAMP_H + /* if tp_vlan_tci exists */ #undef HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_TYPES_H + /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_USBDEVICE_FS_H @@ -73,6 +94,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IF_ETHER_H +/* Define to 1 if you have the header file. */ +#undef HAVE_NETPACKET_IF_PACKET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NETPACKET_PACKET_H + /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_MEDIA_H @@ -217,6 +244,9 @@ /* target host supports CAN sniffing */ #undef PCAP_SUPPORT_CAN +/* target host supports netfilter sniffing */ +#undef PCAP_SUPPORT_NETFILTER + /* target host supports USB sniffing */ #undef PCAP_SUPPORT_USB Modified: stable/9/contrib/libpcap/configure ============================================================================== --- stable/9/contrib/libpcap/configure Mon May 28 04:47:46 2012 (r236166) +++ stable/9/contrib/libpcap/configure Mon May 28 07:34:52 2012 (r236167) @@ -679,6 +679,7 @@ HAVE_LINUX_TPACKET_AUXDATA V_LEX V_YACC RANLIB +AR V_CCOPT V_DEFS V_FINDALLDEVS @@ -696,6 +697,8 @@ MAN_FILE_FORMATS MAN_MISC_INFO PCAP_SUPPORT_USB USB_SRC +PCAP_SUPPORT_NETFILTER +NETFILTER_SRC PCAP_SUPPORT_BT BT_SRC PCAP_SUPPORT_CAN @@ -1293,6 +1296,7 @@ Optional Features: getaddrinfo available] --enable-optimizer-dbg build optimizer debugging code --enable-yydebug build parser debugging code + --disable-universal don't build universal on OS X --enable-bluetooth enable Bluetooth support [default=yes, if support available] --enable-can enable CAN support [default=yes, if support @@ -3229,7 +3233,24 @@ _ACEOF # or accepts command-line arguments like # those the GNU linker accepts. # - V_CCOPT="$V_CCOPT -fpic" + # Some instruction sets require -fPIC on some + # operating systems. Check for them. If you + # have a combination that requires it, add it + # here. + # + PIC_OPT=-fpic + case "$host_cpu" in + + sparc64*) + case "$host_os" in + + freebsd*) + PIC_OPT=-fPIC + ;; + esac + ;; + esac + V_CCOPT="$V_CCOPT $PIC_OPT" V_SONAME_OPT="-Wl,-soname," V_RPATH_OPT="-Wl,-rpath," ;; @@ -5425,24 +5446,29 @@ fi done -for ac_header in net/pfvar.h +for ac_header in linux/types.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } else - cat >conftest.$ac_ext <<_ACEOF + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include -#include -#include - +$ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext @@ -5462,19 +5488,94 @@ eval "echo \"\$as_me:$LINENO: $ac_try_ec test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" + ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - eval "$as_ac_Header=no" + ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 echo "${ECHO_T}$ac_res" >&6; } + +fi if test `eval echo '${'$as_ac_Header'}'` = yes; then cat >>confdefs.h <<_ACEOF #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 @@ -5484,29 +5585,33 @@ fi done -if test "$ac_cv_header_net_pfvar_h" = yes; then - # - # Check for various PF actions. - # - { echo "$as_me:$LINENO: checking whether net/pfvar.h defines PF_NAT through PF_NORDR" >&5 -echo $ECHO_N "checking whether net/pfvar.h defines PF_NAT through PF_NORDR... $ECHO_C" >&6; } - cat >conftest.$ac_ext <<_ACEOF + + + +for ac_header in linux/if_packet.h netpacket/packet.h netpacket/if_packet.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Mon May 28 15:34:56 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A6F4106566C; Mon, 28 May 2012 15:34:56 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 04EE18FC12; Mon, 28 May 2012 15:34:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SFYtcN019194; Mon, 28 May 2012 15:34:55 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SFYtiO019192; Mon, 28 May 2012 15:34:55 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205281534.q4SFYtiO019192@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 15:34:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236187 - stable/7 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 15:34:56 -0000 Author: des Date: Mon May 28 15:34:55 2012 New Revision: 236187 URL: http://svn.freebsd.org/changeset/base/236187 Log: Make yacc a bootstrap tool if building on head, since the new yacc is not 100% backward compatible. Modified: stable/7/Makefile.inc1 Modified: stable/7/Makefile.inc1 ============================================================================== --- stable/7/Makefile.inc1 Mon May 28 14:50:13 2012 (r236186) +++ stable/7/Makefile.inc1 Mon May 28 15:34:55 2012 (r236187) @@ -888,6 +888,10 @@ _colldef= usr.bin/colldef _gencat= usr.bin/gencat .endif +.if ${BOOTSTRAPPING} >= 1000013 +_yacc= usr.bin/yacc +.endif + .if ${BOOTSTRAPPING} < 600016 _mklocale= usr.bin/mklocale .endif @@ -922,6 +926,7 @@ bootstrap-tools: ${_gencat} \ usr.bin/lorder \ usr.bin/makewhatis \ + ${_yacc} \ ${_mklocale} \ usr.bin/rpcgen \ usr.bin/xinstall \ From owner-svn-src-stable@FreeBSD.ORG Mon May 28 19:13:22 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id F3316106564A; Mon, 28 May 2012 19:13:21 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DA3068FC08; Mon, 28 May 2012 19:13:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SJDLGQ028697; Mon, 28 May 2012 19:13:21 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SJDLSq028685; Mon, 28 May 2012 19:13:21 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201205281913.q4SJDLSq028685@svn.freebsd.org> From: Xin LI Date: Mon, 28 May 2012 19:13:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236192 - in stable/9: contrib/tcpdump contrib/tcpdump/missing contrib/tcpdump/tests usr.sbin/tcpdump/tcpdump X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 19:13:22 -0000 Author: delphij Date: Mon May 28 19:13:21 2012 New Revision: 236192 URL: http://svn.freebsd.org/changeset/base/236192 Log: MFC: tcpdump 4.2.1. Added: stable/9/contrib/tcpdump/in_cksum.c - copied unchanged from r235530, head/contrib/tcpdump/in_cksum.c stable/9/contrib/tcpdump/ppi.h - copied unchanged from r235530, head/contrib/tcpdump/ppi.h stable/9/contrib/tcpdump/print-802_15_4.c - copied unchanged from r235530, head/contrib/tcpdump/print-802_15_4.c stable/9/contrib/tcpdump/print-babel.c - copied unchanged from r235530, head/contrib/tcpdump/print-babel.c stable/9/contrib/tcpdump/print-carp.c - copied unchanged from r235530, head/contrib/tcpdump/print-carp.c stable/9/contrib/tcpdump/print-ppi.c - copied unchanged from r235530, head/contrib/tcpdump/print-ppi.c stable/9/contrib/tcpdump/print-rpki-rtr.c - copied unchanged from r235530, head/contrib/tcpdump/print-rpki-rtr.c Deleted: stable/9/contrib/tcpdump/missing/addrsize.h stable/9/contrib/tcpdump/missing/bittypes.h stable/9/contrib/tcpdump/missing/resolv6.h stable/9/contrib/tcpdump/missing/resolv_ext.h stable/9/contrib/tcpdump/tests/ Modified: stable/9/contrib/tcpdump/CHANGES stable/9/contrib/tcpdump/CREDITS stable/9/contrib/tcpdump/Makefile.in stable/9/contrib/tcpdump/VERSION stable/9/contrib/tcpdump/acconfig.h stable/9/contrib/tcpdump/addrtoname.c stable/9/contrib/tcpdump/addrtoname.h stable/9/contrib/tcpdump/bootp.h stable/9/contrib/tcpdump/config.h.in stable/9/contrib/tcpdump/configure stable/9/contrib/tcpdump/configure.in stable/9/contrib/tcpdump/cpack.c stable/9/contrib/tcpdump/cpack.h stable/9/contrib/tcpdump/ethertype.h stable/9/contrib/tcpdump/forces.h stable/9/contrib/tcpdump/ieee802_11_radio.h stable/9/contrib/tcpdump/interface.h stable/9/contrib/tcpdump/ip.h stable/9/contrib/tcpdump/ip6.h stable/9/contrib/tcpdump/ipproto.c stable/9/contrib/tcpdump/ipproto.h stable/9/contrib/tcpdump/netdissect.h stable/9/contrib/tcpdump/ospf.h stable/9/contrib/tcpdump/oui.c stable/9/contrib/tcpdump/oui.h stable/9/contrib/tcpdump/print-802_11.c stable/9/contrib/tcpdump/print-ap1394.c stable/9/contrib/tcpdump/print-arcnet.c stable/9/contrib/tcpdump/print-arp.c stable/9/contrib/tcpdump/print-atalk.c stable/9/contrib/tcpdump/print-atm.c stable/9/contrib/tcpdump/print-bgp.c stable/9/contrib/tcpdump/print-cdp.c stable/9/contrib/tcpdump/print-chdlc.c stable/9/contrib/tcpdump/print-dccp.c stable/9/contrib/tcpdump/print-dhcp6.c stable/9/contrib/tcpdump/print-enc.c stable/9/contrib/tcpdump/print-ether.c stable/9/contrib/tcpdump/print-forces.c stable/9/contrib/tcpdump/print-fr.c stable/9/contrib/tcpdump/print-gre.c stable/9/contrib/tcpdump/print-icmp.c stable/9/contrib/tcpdump/print-icmp6.c stable/9/contrib/tcpdump/print-igmp.c stable/9/contrib/tcpdump/print-ip.c stable/9/contrib/tcpdump/print-ip6.c stable/9/contrib/tcpdump/print-ipnet.c stable/9/contrib/tcpdump/print-ipx.c stable/9/contrib/tcpdump/print-isoclns.c stable/9/contrib/tcpdump/print-juniper.c stable/9/contrib/tcpdump/print-lane.c stable/9/contrib/tcpdump/print-llc.c stable/9/contrib/tcpdump/print-lldp.c stable/9/contrib/tcpdump/print-mobile.c stable/9/contrib/tcpdump/print-mpls.c stable/9/contrib/tcpdump/print-null.c stable/9/contrib/tcpdump/print-ospf.c stable/9/contrib/tcpdump/print-pflog.c stable/9/contrib/tcpdump/print-pgm.c stable/9/contrib/tcpdump/print-pim.c stable/9/contrib/tcpdump/print-ppp.c stable/9/contrib/tcpdump/print-rrcp.c stable/9/contrib/tcpdump/print-sctp.c stable/9/contrib/tcpdump/print-sflow.c stable/9/contrib/tcpdump/print-sl.c stable/9/contrib/tcpdump/print-sll.c stable/9/contrib/tcpdump/print-sunrpc.c stable/9/contrib/tcpdump/print-symantec.c stable/9/contrib/tcpdump/print-tcp.c stable/9/contrib/tcpdump/print-tftp.c stable/9/contrib/tcpdump/print-udp.c stable/9/contrib/tcpdump/print-vrrp.c stable/9/contrib/tcpdump/tcp.h stable/9/contrib/tcpdump/tcpdump-stdinc.h stable/9/contrib/tcpdump/tcpdump.1.in stable/9/contrib/tcpdump/tcpdump.c stable/9/contrib/tcpdump/udp.h stable/9/usr.sbin/tcpdump/tcpdump/Makefile stable/9/usr.sbin/tcpdump/tcpdump/config.h stable/9/usr.sbin/tcpdump/tcpdump/tcpdump.1 Directory Properties: stable/9/contrib/tcpdump/ (props changed) stable/9/usr.sbin/tcpdump/ (props changed) Modified: stable/9/contrib/tcpdump/CHANGES ============================================================================== --- stable/9/contrib/tcpdump/CHANGES Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/CHANGES Mon May 28 19:13:21 2012 (r236192) @@ -1,3 +1,64 @@ +Friday December 9, 2011. guy@alum.mit.edu. + Summary for 4.2.1 tcpdump release + Only build the Babel printer if IPv6 is enabled. + Support Babel on port 6696 as well as 6697. + Include ppi.h in release tarball. + Include all the test files in the release tarball, and don't + "include" test files that no longer exist. + Don't assume we have - check for it. + Support "-T carp" as a way of dissecting IP protocol 112 as CARP + rather than VRRP. + Support Hilscher NetAnalyzer link-layer header format. + Constify some pointers and fix compiler warnings. + Get rid of never-true test. + Fix an unintended fall-through in a case statement in the ARP + printer. + Fix several cases where sizeof(sizeof(XXX)) was used when just + sizeof(XXX) was intended. + Make stricter sanity checks in the ES-IS printer. + Get rid of some GCCisms that caused builds to fai with compilers + that don't support them. + Fix typo in man page. + Added length checks to Babel printer. + +Sunday July 24, 2011. mcr@sandelman.ca. + Summary for 4.2.+ + merged 802.15.4 decoder from Dmitry Eremin-Solenikov + updates to forces for new port numbers + Use "-H", not "-h", for the 802.11s option. (-h always help) + Better ICMPv6 checksum handling. + add support for the RPKI/Router Protocol, per -ietf-sidr-rpki-rtr-12 + get rid of uuencoded pcap test files, git can do binary. + sFlow changes for 64-bit counters. + fixes for PPI packet header handling and printing. + Add DCB Exchange protocol (DCBX) version 1.01. + Babel dissector, from Juliusz Chroboczek and Grégoire Henry. + improvements to radiotap for rate values > 127. + Many improvements to ForCES decode, including fix SCTP TML port + updated RPL type code to RPL-17 draft + Improve printout of DHCPv6 options. + added support and test case for QinQ (802.1q VLAN) packets + Handle DLT_IEEE802_15_4_NOFCS like DLT_IEEE802_15_4. + Build fixes for Sparc and other machines with alignment restrictions. + Merged changes from Debian package. + PGM: Add ACK decoding and add PGMCC DATA and FEEDBACK options. + Build fixes for OSX (Snow Leopard and others) + Add support for IEEE 802.15.4 packets + +Tue. July 20, 2010. guy@alum.mit.edu. + Summary for 4.1.2 tcpdump release + If -U is specified, flush the file after creating it, so it's + not zero-length + Fix TCP flags output description, and some typoes, in the man + page + Add a -h flag, and only attempt to recognize 802.11s mesh + headers if it's set + When printing the link-layer type list, send *all* output to + stderr + Include the CFLAGS setting when configure was run in the + compiler flags + Thu. April 1, 2010. guy@alum.mit.edu. Summary for 4.1.1 tcpdump release Fix build on systems with PF, such as FreeBSD and OpenBSD. Modified: stable/9/contrib/tcpdump/CREDITS ============================================================================== --- stable/9/contrib/tcpdump/CREDITS Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/CREDITS Mon May 28 19:13:21 2012 (r236192) @@ -1,189 +1,203 @@ This file lists people who have contributed to tcpdump: The current maintainers: - Bill Fenner - David Young - Fulvio Risso - Guy Harris - Hannes Gredler - Michael Richardson + Bill Fenner + David Young + Fulvio Risso + Guy Harris + Hannes Gredler + Michael Richardson Additional people who have contributed patches: - Aaron Campbell - Alfredo Andres - Albert Chin - Ananth Suryanarayana - Andrea Bittau - Andrew Brown - Andrew Church - Andrew Hintz - Andrew Silent - Andrew Tridgell - Andy Heffernan - Arkadiusz Miskiewicz - Armando L. Caro Jr. - Arnaldo Carvalho de Melo - Ben Byer - Atsushi Onoe - Ben Smithurst - Bert Vermeulen - Bjoern A. Zeeb - Brent L. Bates - Brian Ginsbach - Bruce M. Simpson - Carles Kishimoto Bisbe - Charlie Lenahan - Charles M. Hannum - Chris Cogdon - Chris G. Demetriou - Christian Sievers - Chris Jepeway - Chris Larson - Craig Rodrigues - Crist J. Clark - Daniel Hagerty - Darren Reed - David Binderman - David Horn - David Smith - David Young - Don Ebright - Eddie Kohler - Elmar Kirchner - Fang Wang - Florent Drouin - Florian Forster - Francis Dupont - Francisco Matias Cuenca-Acuna - Francois-Xavier Le Bail - Frank Volf - Fulvio Risso - George Bakos - Gerald Combs - Gerrit Renker - Gert Doering - Greg Minshall - Greg Stark - Gilbert Ramirez Jr. - Gisle Vanem - Hannes Viertel - Hank Leininger - Harry Raaymakers - Heinz-Ado Arnolds - Hendrik Scholz - Ian McDonald - Ilpo Järvinen - Jacek Tobiasz - Jakob Schlyter - Jamal Hadi Salim - Jan Oravec - Jason R. Thorpe - Jefferson Ogata - Jeffrey Hutzelman - Jesper Peterson - Jim Hutchins - Jonathan Heusser - Tatuya Jinmei - João Medeiros - Joerg Mayer - Jørgen Thomsen - Julian Cowley - Kaarthik Sivakumar - Karl Norby - Kazushi Sugyo - Kelly Carmichael - Ken Hornstein - Kevin Steves - Klaus Klein - Kris Kennaway - Krzysztof Halasa - Larry Lile - Lennert Buytenhek - Loris Degioanni - Love Hörnquist-Ã…strand - Lucas C. Villa Real - Luis Martin Garcia - Maciej W. Rozycki - Manu Pathak - Marc Binderberger - Marc A. Lehmann - Mark Ellzey Thomas - Marko Kiiskila - Markus Schöpflin - Marshall Rose - Martin Husemann - Max Laier - Michael A. Meffie III - Michael Madore - Michael Riepe - Michael Shalayeff - Michael Shields - Michael T. Stolarchuk - Michele "mydecay" Marchetto - Mike Frysinger - Monroe Williams - Motonori Shindo - Nathan J. Williams - Nathaniel Couper-Noles - Neil T. Spring - Niels Provos - Nickolai Zeldovich - Nicolas Ferrero - Noritoshi Demizu - Olaf Kirch - Onno van der Linden - Paolo Abeni - Pascal Hennequin - Pasvorn Boonmark - Paul Mundt - Paul S. Traina - Pavlin Radoslavov - Pekka Savola - Peter Fales - Peter Jeremy - - Peter Volkov - Phil Wood - Rafal Maszkowski - Randy Sofia - Raphael Raimbault - Rick Cheng - Rick Jones - Rick Watson - Rob Braun - Robert Edmonds - Roderick Schertler - Sagun Shakya - Sami Farin - Scott Rose - Sebastian Krahmer - Sebastien Raveau - Sebastien Vincent - Sepherosa Ziehau - Seth Webster - Shinsuke Suzuki - Steinar Haug - Swaminathan Chandrasekaran - Takashi Yamamoto - Terry Kennedy - Timo Koskiahde - Tony Li - Toshihiro Kanda - Uns Lider - Victor Oppleman - Wesley Griffin - Wesley Shields - Wilbert de Graaf - Will Drewry - William J. Hulley - Yen Yen Lim - Yoshifumi Nishida + A Costa + Aaron Campbell + Alfredo Andres + Albert Chin + Ananth Suryanarayana + Andrea Bittau + Andrew Brown + Andrew Church + Andrew Hintz + Andrew Nording + Andrew Tridgell + Andy Heffernan + Anton Bernal + Arkadiusz Miskiewicz + Armando L. Caro Jr. + Arnaldo Carvalho de Melo + Ben Byer + Atsushi Onoe + Ben Smithurst + Bert Vermeulen + Bjoern A. Zeeb + Brent L. Bates + Brian Ginsbach + Bruce M. Simpson + Carles Kishimoto Bisbe + Charlie Lenahan + Charles M. Hannum + Chris Cogdon + Chris G. Demetriou + Chris Jepeway + Chris Larson + Christian Sievers + Christophe Rhodes + Craig Rodrigues + Crist J. Clark + Daniel Hagerty + Darren Reed + David Binderman + David Horn + David Smith + David Young + Dmitry Eremin-Solenikov + Don Ebright + Eddie Kohler + Elmar Kirchner + Fang Wang + Florent Drouin + Florian Forster + Francis Dupont + Francisco Matias Cuenca-Acuna + Francois-Xavier Le Bail + Frank Volf + Fulvio Risso + George Bakos + Gerald Combs + Gerrit Renker + Gert Doering + Greg Minshall + Greg Stark + Grégoire Henry + Gilbert Ramirez Jr. + Gisle Vanem + Hannes Viertel + Hank Leininger + Harry Raaymakers + Heinz-Ado Arnolds + Hendrik Scholz + Ian McDonald + Ilpo Järvinen + Jacek Tobiasz + Jakob Schlyter + Jamal Hadi Salim + Jan Oravec + Jason R. Thorpe + Jefferson Ogata + Jeffrey Hutzelman + Jesper Peterson + Jim Hutchins + Jonathan Heusser + Tatuya Jinmei + João Medeiros + Joerg Mayer + Jørgen Thomsen + Julian Cowley + Juliusz Chroboczek + Kaarthik Sivakumar + Kaladhar Musunuru + Karl Norby + Kazushi Sugyo + Kelly Carmichael + Ken Hornstein + Kevin Steves + Klaus Klein + Kris Kennaway + Krzysztof Halasa + Larry Lile + Lennert Buytenhek + Loris Degioanni + Love Hörnquist-Ã…strand + Lucas C. Villa Real + Luis MartinGarcia + Maciej W. Rozycki + Manu Pathak + Marc Binderberger + Marc A. Lehmann + Mark Ellzey Thomas + Marko Kiiskila + Markus Schöpflin + Marshall Rose + Martin Husemann + Max Laier + Michael A. Meffie III + Michael Madore + Michael Riepe + Michael Shalayeff + Michael Shields + Michael T. Stolarchuk + Michal Sekletar + Michele "mydecay" Marchetto + Mike Frysinger + Minto Jeyananth + Monroe Williams + Motonori Shindo + Nathan J. Williams + Nathaniel Couper-Noles + Neil T. Spring + Niels Provos + Nickolai Zeldovich + Nicolas Ferrero + Noritoshi Demizu + Olaf Kirch + Onno van der Linden + Paolo Abeni + Pascal Hennequin + Pasvorn Boonmark + Paul Ferrell + Paul Mundt + Paul S. Traina + Pavlin Radoslavov + Pawel Worach + Pekka Savola + Peter Fales + Peter Jeremy + + Peter Volkov + Phil Wood + Rafal Maszkowski + Randy Sofia + Raphael Raimbault + Rick Cheng + Rick Jones + Rick Watson + Rob Braun + Robert Edmonds + Roderick Schertler + Romain Francoise + Sagun Shakya + Sami Farin + Scott Mcmillan + Scott Rose + Sebastian Krahmer + Sebastien Raveau + Sebastien Vincent + Sepherosa Ziehau + Seth Webster + Shinsuke Suzuki + Steinar Haug + Swaminathan Chandrasekaran + Takashi Yamamoto + Terry Kennedy + Timo Koskiahde + Tony Li + Toshihiro Kanda + Uns Lider + Victor Oppleman + Weesan Lee + Wesley Griffin + Wesley Shields + Wilbert de Graaf + Will Drewry + William J. Hulley + Yen Yen Lim + Yoshifumi Nishida The original LBL crew: - Steve McCanne - Craig Leres - Van Jacobson + Steve McCanne + Craig Leres + Van Jacobson Past maintainers: - Jun-ichiro itojun Hagino + Jun-ichiro itojun Hagino Modified: stable/9/contrib/tcpdump/Makefile.in ============================================================================== --- stable/9/contrib/tcpdump/Makefile.in Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/Makefile.in Mon May 28 19:13:21 2012 (r236192) @@ -26,6 +26,7 @@ # Top level hierarchy prefix = @prefix@ exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ # Pathname of directory to install the binary sbindir = @sbindir@ # Pathname of directory to install the man page @@ -46,7 +47,8 @@ INCLS = -I. @V_INCLS@ DEFS = @DEFS@ @CPPFLAGS@ @V_DEFS@ # Standard CFLAGS -CFLAGS = $(CCOPT) $(DEFS) $(INCLS) +CFLAGS = @CFLAGS@ +FULL_CFLAGS = $(CCOPT) $(DEFS) $(INCLS) $(CFLAGS) # Standard LDFLAGS LDFLAGS = @LDFLAGS@ @@ -64,15 +66,15 @@ RANLIB = @RANLIB@ # problem if you don't own the file but can write to the directory. .c.o: @rm -f $@ - $(CC) $(CFLAGS) -c $(srcdir)/$*.c + $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c CSRC = addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c \ - nlpid.c l2vpn.c machdep.c parsenfsfh.c \ - print-802_11.c print-ap1394.c print-ah.c print-arcnet.c \ - print-aodv.c print-arp.c print-ascii.c print-atalk.c print-atm.c \ - print-beep.c print-bfd.c print-bgp.c print-bootp.c print-bt.c \ - print-cdp.c print-cfm.c print-chdlc.c print-cip.c print-cnfp.c \ - print-dccp.c print-decnet.c \ + nlpid.c l2vpn.c machdep.c parsenfsfh.c in_cksum.c \ + print-802_11.c print-802_15_4.c print-ap1394.c print-ah.c \ + print-arcnet.c print-aodv.c print-arp.c print-ascii.c print-atalk.c \ + print-atm.c print-beep.c print-bfd.c print-bgp.c \ + print-bootp.c print-bt.c print-carp.c print-cdp.c print-cfm.c \ + print-chdlc.c print-cip.c print-cnfp.c print-dccp.c print-decnet.c \ print-domain.c print-dtp.c print-dvmrp.c print-enc.c print-egp.c \ print-eap.c print-eigrp.c\ print-esp.c print-ether.c print-fddi.c print-fr.c \ @@ -83,8 +85,9 @@ CSRC = addrtoname.c af.c checksum.c cpac print-lmp.c print-lspping.c print-lwapp.c \ print-lwres.c print-mobile.c print-mpcp.c print-mpls.c print-msdp.c \ print-nfs.c print-ntp.c print-null.c print-olsr.c print-ospf.c \ - print-pgm.c print-pim.c print-ppp.c print-pppoe.c print-pptp.c \ - print-radius.c print-raw.c print-rip.c print-rrcp.c print-rsvp.c \ + print-pgm.c print-pim.c \ + print-ppi.c print-ppp.c print-pppoe.c print-pptp.c \ + print-radius.c print-raw.c print-rip.c print-rpki-rtr.c print-rrcp.c print-rsvp.c \ print-rx.c print-sctp.c print-sflow.c print-sip.c print-sl.c print-sll.c \ print-slow.c print-snmp.c print-stp.c print-sunatm.c print-sunrpc.c \ print-symantec.c print-syslog.c print-tcp.c print-telnet.c print-tftp.c \ @@ -165,6 +168,7 @@ HDR = \ oui.h \ pcap-missing.h \ pmap_prot.h \ + ppi.h \ ppp.h \ route6d.h \ rpc_auth.h \ @@ -226,16 +230,12 @@ EXTRA_DIST = \ lbl/os-ultrix4.h \ makemib \ missing/addrinfo.h \ - missing/addrsize.h \ - missing/bittypes.h \ missing/dlnames.c \ missing/datalinks.c \ missing/getnameinfo.c \ missing/inet_aton.c \ missing/inet_ntop.c \ missing/inet_pton.c \ - missing/resolv6.h \ - missing/resolv_ext.h \ missing/snprintf.c \ missing/sockstorage.h \ missing/strdup.c \ @@ -245,6 +245,7 @@ EXTRA_DIST = \ mkdep \ packetdat.awk \ pcap_dump_ftell.c \ + print-babel.c \ print-dhcp6.c \ print-frag6.c \ print-icmp6.c \ @@ -262,12 +263,18 @@ EXTRA_DIST = \ stime.awk \ strcasecmp.c \ tcpdump.1.in \ - tests/02-sunrise-sunset-esp.puu \ - tests/08-sunrise-sunset-aes.puu \ - tests/08-sunrise-sunset-esp2.puu \ + tests/02-sunrise-sunset-esp.pcap \ + tests/08-sunrise-sunset-aes.pcap \ + tests/08-sunrise-sunset-esp2.pcap \ + tests/QinQpacket.out \ + tests/QinQpacket.pcap \ + tests/QinQpacketv.out \ tests/TESTLIST \ tests/TESTonce \ tests/TESTrun.sh \ + tests/babel.pcap \ + tests/babel1.out \ + tests/babel1v.out \ tests/bgp-infinite-loop.pcap \ tests/bgp_vpn_attrset.out \ tests/bgp_vpn_attrset.pcap \ @@ -279,8 +286,8 @@ EXTRA_DIST = \ tests/e1000g.pcap \ tests/eapon1.gdbinit \ tests/eapon1.out \ - tests/eapon1.puu \ - tests/eapon2.puu \ + tests/eapon1.pcap \ + tests/empty.uu \ tests/esp-secrets.txt \ tests/esp0.out \ tests/esp1.gdbinit \ @@ -292,61 +299,57 @@ EXTRA_DIST = \ tests/esp5.gdbinit \ tests/esp5.out \ tests/espudp1.out \ - tests/espudp1.puu \ + tests/espudp1.pcap \ tests/forces1.out \ tests/forces1.pcap \ tests/forces1vvv.out \ tests/forces1vvvv.out \ tests/forces2.out \ - tests/forces2.pcap \ tests/forces2v.out \ tests/forces2vv.out \ - tests/ikev2.puu \ + tests/forces3vvv.out \ tests/ikev2four.out \ - tests/ikev2four.puu \ + tests/ikev2four.pcap \ tests/ikev2fourv.out \ tests/ikev2fourv4.out \ tests/ikev2pI2-secrets.txt \ tests/ikev2pI2.out \ - tests/ikev2pI2.puu \ - tests/isakmp-delete-segfault.puu \ - tests/isakmp-identification-segfault.puu \ - tests/isakmp-pointer-loop.puu \ + tests/ikev2pI2.pcap \ + tests/isakmp-delete-segfault.pcap \ + tests/isakmp-identification-segfault.pcap \ + tests/isakmp-pointer-loop.pcap \ tests/isakmp1.out \ tests/isakmp2.out \ tests/isakmp3.out \ tests/isakmp4.out \ - tests/isakmp4500.puu \ + tests/isakmp4500.pcap \ tests/isis-infinite-loop.pcap \ tests/ldp-infinite-loop.pcap \ tests/lmp.out \ - tests/lmp.puu \ + tests/lmp.pcap \ tests/lmp.sh \ tests/lspping-fec-ldp.pcap \ tests/lspping-fec-rsvp.pcap \ tests/mpls-ldp-hello.out \ - tests/mpls-ldp-hello.puu \ + tests/mpls-ldp-hello.pcap \ tests/mpls-traceroute.pcap \ tests/ospf-gmpls.out \ - tests/ospf-gmpls.puu \ + tests/ospf-gmpls.pcap \ tests/print-A.out \ tests/print-AA.out \ tests/print-capX.out \ tests/print-capXX.out \ - tests/print-flags.puu \ + tests/print-flags.pcap \ tests/print-flags.sh \ tests/print-x.out \ tests/print-xx.out \ tests/rsvp-infinite-loop.pcap \ + tests/sflow_multiple_counter_30_pdus.out \ + tests/sflow_multiple_counter_30_pdus.pcap \ vfprintf.c \ - win32/Include/Arpa/tftp.h \ win32/Include/errno.h \ win32/Include/getopt.h \ - win32/Include/inetprivate.h \ - win32/Include/telnet.h \ win32/Include/w32_fzs.h \ - win32/Include/Netinet/in_systm.h \ - win32/Include/Netinet/ip.h \ win32/Src/getopt.c \ win32/prj/GNUmakefile \ win32/prj/WinDump.dsp \ @@ -356,7 +359,7 @@ all: $(PROG) $(PROG): $(OBJ) @V_PCAPDEP@ @rm -f $@ - $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) + $(CC) $(FULL_CFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(LIBS) $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ) @rm -f $@ @@ -364,30 +367,30 @@ $(LIBNETDISSECT): $(LIBNETDISSECT_OBJ) $(RANLIB) $@ datalinks.o: $(srcdir)/missing/datalinks.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/datalinks.c dlnames.o: $(srcdir)/missing/dlnames.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/dlnames.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/dlnames.c getnameinfo.o: $(srcdir)/missing/getnameinfo.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getnameinfo.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getnameinfo.c getaddrinfo.o: $(srcdir)/missing/getaddrinfo.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/getaddrinfo.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/getaddrinfo.c inet_pton.o: $(srcdir)/missing/inet_pton.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_pton.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/inet_pton.c inet_ntop.o: $(srcdir)/missing/inet_ntop.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_ntop.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/inet_ntop.c inet_aton.o: $(srcdir)/missing/inet_aton.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/inet_aton.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/inet_aton.c snprintf.o: $(srcdir)/missing/snprintf.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c strlcat.o: $(srcdir)/missing/strlcat.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strlcat.c strlcpy.o: $(srcdir)/missing/strlcpy.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strlcpy.c strsep.o: $(srcdir)/missing/strsep.c - $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/strsep.c + $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/strsep.c version.o: version.c - $(CC) $(CFLAGS) -c version.c + $(CC) $(FULL_CFLAGS) -c version.c version.c: $(srcdir)/VERSION @rm -f $@ @@ -423,9 +426,9 @@ clean: distclean: rm -f $(CLEANFILES) Makefile config.cache config.log config.status \ config.h gnuc.h os-proto.h stamp-h stamp-h.in $(PROG).1 + rm -rf autom4te.cache check: tcpdump - uudecode --help || (echo "No uudecode program found, not running tests"; echo "apt-get/rpm install sharutils?"; exit 1) (cd tests && ./TESTrun.sh) tags: $(TAGFILES) Modified: stable/9/contrib/tcpdump/VERSION ============================================================================== --- stable/9/contrib/tcpdump/VERSION Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/VERSION Mon May 28 19:13:21 2012 (r236192) @@ -1 +1 @@ -4.1.1 +4.2.1 Modified: stable/9/contrib/tcpdump/acconfig.h ============================================================================== --- stable/9/contrib/tcpdump/acconfig.h Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/acconfig.h Mon May 28 19:13:21 2012 (r236192) @@ -8,12 +8,6 @@ /* Define if you enable support for the libsmi. */ #undef LIBSMI -/* define if you have struct __res_state_ext */ -#undef HAVE_RES_STATE_EXT - -/* define if your struct __res_state has the nsort member */ -#undef HAVE_NEW_RES_STATE - /* define if you have the addrinfo function. */ #undef HAVE_ADDRINFO @@ -23,15 +17,6 @@ /* define ifyou have the h_errno variable. */ #undef HAVE_H_ERRNO -/* define if IN6ADDRSZ is defined (XXX not used!) */ -#undef HAVE_IN6ADDRSZ - -/* define if INADDRSZ is defined (XXX not used!) */ -#undef HAVE_INADDRSZ - -/* define if RES_USE_INET6 is defined */ -#undef HAVE_RES_USE_INET6 - /* define if you have struct sockaddr_storage */ #undef HAVE_SOCKADDR_STORAGE @@ -68,9 +53,6 @@ /* define if you have getrpcbynumber() */ #undef HAVE_GETRPCBYNUMBER -/* AIX hack. */ -#undef _SUN - /* Workaround for missing 64-bit formats */ #undef PRId64 #undef PRIo64 Modified: stable/9/contrib/tcpdump/addrtoname.c ============================================================================== --- stable/9/contrib/tcpdump/addrtoname.c Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/addrtoname.c Mon May 28 19:13:21 2012 (r236192) @@ -510,6 +510,34 @@ etheraddr_string(register const u_char * } const char * +le64addr_string(const u_char *ep) +{ + const unsigned int len = 8; + register u_int i; + register char *cp; + register struct enamemem *tp; + char buf[BUFSIZE]; + + tp = lookup_bytestring(ep, len); + if (tp->e_name) + return (tp->e_name); + + cp = buf; + for (i = len; i > 0 ; --i) { + *cp++ = hex[*(ep + i - 1) >> 4]; + *cp++ = hex[*(ep + i - 1) & 0xf]; + *cp++ = ':'; + } + cp --; + + *cp = '\0'; + + tp->e_name = strdup(buf); + + return (tp->e_name); +} + +const char * linkaddr_string(const u_char *ep, const unsigned int type, const unsigned int len) { register u_int i; Modified: stable/9/contrib/tcpdump/addrtoname.h ============================================================================== --- stable/9/contrib/tcpdump/addrtoname.h Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/addrtoname.h Mon May 28 19:13:21 2012 (r236192) @@ -34,6 +34,7 @@ enum { extern const char *linkaddr_string(const u_char *, const unsigned int, const unsigned int); extern const char *etheraddr_string(const u_char *); +extern const char *le64addr_string(const u_char *); extern const char *etherproto_string(u_short); extern const char *tcpport_string(u_short); extern const char *udpport_string(u_short); Modified: stable/9/contrib/tcpdump/bootp.h ============================================================================== --- stable/9/contrib/tcpdump/bootp.h Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/bootp.h Mon May 28 19:13:21 2012 (r236192) @@ -37,7 +37,7 @@ struct bootp { u_int8_t bp_sname[64]; /* server host name */ u_int8_t bp_file[128]; /* boot file name */ u_int8_t bp_vend[64]; /* vendor-specific area */ -}; +} UNALIGNED; /* * UDP port numbers, server and client. @@ -217,7 +217,7 @@ struct cmu_vend { struct in_addr v_ins1, v_ins2; /* IEN-116 name servers */ struct in_addr v_ts1, v_ts2; /* Time servers */ u_int8_t v_unused[24]; /* currently unused */ -}; +} UNALIGNED; /* v_flags values */ Modified: stable/9/contrib/tcpdump/config.h.in ============================================================================== --- stable/9/contrib/tcpdump/config.h.in Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/config.h.in Mon May 28 19:13:21 2012 (r236192) @@ -8,12 +8,6 @@ /* Define if you enable support for the libsmi. */ #undef LIBSMI -/* define if you have struct __res_state_ext */ -#undef HAVE_RES_STATE_EXT - -/* define if your struct __res_state has the nsort member */ -#undef HAVE_NEW_RES_STATE - /* define if you have the addrinfo function. */ #undef HAVE_ADDRINFO @@ -23,15 +17,6 @@ /* define ifyou have the h_errno variable. */ #undef HAVE_H_ERRNO -/* define if IN6ADDRSZ is defined (XXX not used!) */ -#undef HAVE_IN6ADDRSZ - -/* define if INADDRSZ is defined (XXX not used!) */ -#undef HAVE_INADDRSZ - -/* define if RES_USE_INET6 is defined */ -#undef HAVE_RES_USE_INET6 - /* define if you have struct sockaddr_storage */ #undef HAVE_SOCKADDR_STORAGE @@ -68,9 +53,6 @@ /* define if you have getrpcbynumber() */ #undef HAVE_GETRPCBYNUMBER -/* AIX hack. */ -#undef _SUN - /* Workaround for missing 64-bit formats */ #undef PRId64 #undef PRIo64 @@ -108,6 +90,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + /* Define to 1 if you have the `getnameinfo' function. */ #undef HAVE_GETNAMEINFO @@ -165,6 +150,9 @@ /* Define to 1 if you have the `pcap_lib_version' function. */ #undef HAVE_PCAP_LIB_VERSION +/* Define to 1 if you have the `pcap_set_tstamp_type' function. */ +#undef HAVE_PCAP_SET_TSTAMP_TYPE + /* Define to 1 if you have the header file. */ #undef HAVE_PCAP_USB_H @@ -174,6 +162,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_RPC_RPCENT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_RPC_RPC_H + /* Define to 1 if you have the `setlinebuf' function. */ #undef HAVE_SETLINEBUF @@ -237,6 +228,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + /* Define to 1 if you have the `vfprintf' function. */ #undef HAVE_VFPRINTF @@ -276,21 +270,6 @@ /* return value of signal handlers */ #undef RETSIGVAL -/* The size of `char', as computed by sizeof. */ -#undef SIZEOF_CHAR - -/* The size of `int', as computed by sizeof. */ -#undef SIZEOF_INT - -/* The size of `long', as computed by sizeof. */ -#undef SIZEOF_LONG - -/* The size of `long long', as computed by sizeof. */ -#undef SIZEOF_LONG_LONG - -/* The size of `short', as computed by sizeof. */ -#undef SIZEOF_SHORT - /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS @@ -303,6 +282,9 @@ /* needed on HP-UX */ #undef _HPUX_SOURCE +/* define on AIX to get certain functions */ +#undef _SUN + /* define if your compiler allows __attribute__((format)) to be applied to function pointers */ #undef __ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS Modified: stable/9/contrib/tcpdump/configure ============================================================================== --- stable/9/contrib/tcpdump/configure Mon May 28 17:58:10 2012 (r236191) +++ stable/9/contrib/tcpdump/configure Mon May 28 19:13:21 2012 (r236192) @@ -1267,6 +1267,7 @@ if test -n "$ac_init_help"; then Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-universal don't build universal on OS X --enable-smb enable possibly-buggy SMB printer default=yes --disable-smb disable possibly-buggy SMB printer --enable-ipv6 enable ipv6 (with ipv4) support @@ -1845,7 +1846,7 @@ fi V_CCOPT="-O" V_INCLS="" if test "${srcdir}" != "." ; then - V_INCLS="-I\$(srcdir)" + V_INCLS="-I$srcdir" fi if test "${CFLAGS+set}" = set; then LBL_CFLAGS="$CFLAGS" @@ -3217,7 +3218,8 @@ if test "${ac_cv___attribute__+set}" = s else cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + + /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF @@ -3290,7 +3292,8 @@ if test "${ac_cv___attribute___format_fu else cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ + + /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF @@ -3986,7 +3989,8 @@ done -for ac_header in fcntl.h rpc/rpcent.h netdnet/dnetdb.h + +for ac_header in fcntl.h rpc/rpc.h rpc/rpcent.h netdnet/dnetdb.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -4387,6 +4391,36 @@ fi case "$host_os" in +darwin*) + # Check whether --enable-universal was given. +if test "${enable_universal+set}" = set; then + enableval=$enable_universal; +fi + + if test "$enable_universal" != "no"; then + case "$host_os" in + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Mon May 28 19:48:38 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5B30910656B3; Mon, 28 May 2012 19:48:38 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3FF878FC16; Mon, 28 May 2012 19:48:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SJmcfe030327; Mon, 28 May 2012 19:48:38 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SJmbil030314; Mon, 28 May 2012 19:48:37 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201205281948.q4SJmbil030314@svn.freebsd.org> From: Doug Barton Date: Mon, 28 May 2012 19:48:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236197 - in stable/8: contrib/bind9 contrib/bind9/bin/named contrib/bind9/lib/dns contrib/bind9/lib/dns/include/dns contrib/bind9/lib/dns/rdata/generic contrib/bind9/lib/isc/pthreads c... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 19:48:38 -0000 Author: dougb Date: Mon May 28 19:48:37 2012 New Revision: 236197 URL: http://svn.freebsd.org/changeset/base/236197 Log: Upgrade to BIND version 9.6-ESV-R7, the latest from ISC. Feature Change * BIND now recognizes the TLSA resource record type, created to support IETF DANE (DNS-based Authentication of Named Entities) Bug Fix * The locking strategy around the handling of iterative queries has been tuned to reduce unnecessary contention in a multi- threaded environment. Other critical bug fixes are included. All BIND users are encouraged to upgrade. Added: stable/8/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c - copied unchanged from r236175, vendor/bind9/dist-9.6/lib/dns/rdata/generic/tlsa_52.c stable/8/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h - copied unchanged from r236175, vendor/bind9/dist-9.6/lib/dns/rdata/generic/tlsa_52.h Deleted: stable/8/contrib/bind9/release-notes.css Modified: stable/8/contrib/bind9/CHANGES stable/8/contrib/bind9/README stable/8/contrib/bind9/bin/named/query.c stable/8/contrib/bind9/lib/dns/api stable/8/contrib/bind9/lib/dns/include/dns/stats.h stable/8/contrib/bind9/lib/dns/include/dns/view.h stable/8/contrib/bind9/lib/dns/rbtdb.c stable/8/contrib/bind9/lib/dns/resolver.c stable/8/contrib/bind9/lib/dns/sdb.c stable/8/contrib/bind9/lib/dns/tkey.c stable/8/contrib/bind9/lib/dns/zone.c stable/8/contrib/bind9/lib/isc/pthreads/mutex.c stable/8/contrib/bind9/lib/isccfg/api stable/8/contrib/bind9/lib/isccfg/parser.c stable/8/contrib/bind9/version stable/8/lib/bind/dns/code.h stable/8/lib/bind/dns/dns/enumtype.h stable/8/lib/bind/dns/dns/rdatastruct.h Directory Properties: stable/8/contrib/bind9/ (props changed) Modified: stable/8/contrib/bind9/CHANGES ============================================================================== --- stable/8/contrib/bind9/CHANGES Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/CHANGES Mon May 28 19:48:37 2012 (r236197) @@ -1,3 +1,43 @@ + --- 9.6-ESV-R7 released --- + +3318. [tuning] Reduce the amount of work performed while holding a + bucket lock when finshed with a fetch context. + [RT #29239] + +3314. [bug] The masters list could be updated while refesh_callback + and stub_callback were using it. [RT #26732] + +3313. [protocol] Add TLSA record type. [RT #28989] + +3311. [bug] Abort the zone dump if zone->db is NULL in + zone.c:zone_gotwritehandle. [RT #29028] + +3310. [test] Increase table size for mutex profiling. [RT #28809] + +3309. [bug] resolver.c:fctx_finddone() was not threadsafe. + [RT #27995] + +3307. [bug] Add missing ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS. + [RT #28956] + +3304. [bug] Use hmctx, not mctx when freeing rbtdb->heaps. + [RT #28571] + +3301. [contrib] Update queryperf to build on darwin. Add -R flag + for non-recursive queries. [RT #28565] + +3300. [bug] Named could die if gssapi was enabled in named.conf + but was not compiled in. [RT #28338] + +3299. [bug] Make SDB handle errors from database drivers better. + [RT #28534] + +3232. [bug] Zero zone->curmaster before return in + dns_zone_setmasterswithkeys(). [RT #26732] + +3197. [bug] Don't try to log the filename and line number when + the config parser can't open a file. [RT #22263] + --- 9.6-ESV-R6 released --- 3298. [bug] Named could dereference a NULL pointer in @@ -168,7 +208,7 @@ 3189. [test] Added a summary report after system tests. [RT #25517] -3187. [port] win32: support for Visual Studio 2008. [RT #26356] +3187. [port] win32: support for Visual Studio 2008. [RT #26356] 3179. [port] kfreebsd: build issues. [RT #26273] @@ -201,7 +241,7 @@ an assert. [RT #25452] 3151. [bug] Queries for type RRSIG or SIG could be handled - incorrectly. [RT #21050] + incorrectly. [RT #21050] 3149. [tuning] Improve scalability by allocating one zone task per 100 zones at startup time. (The @@ -213,7 +253,7 @@ 3148. [bug] Processing of normal queries could be stalled when forwarding a UPDATE message. [RT #24711] -3146. [test] Fixed gcc4.6.0 errors in ATF. [RT #25598] +3146. [test] Fixed gcc4.6.0 errors in ATF. [RT #25598] 3145. [test] Capture output of ATF unit tests in "./atf.out" if there were any errors while running them. [RT #25527] @@ -273,10 +313,10 @@ dns_rdataset_totext() that could cause named to crash with an assertion failure. [RT #24777] -3121. [security] An authoritative name server sending a negative - response containing a very large RRset could - trigger an off-by-one error in the ncache code - and crash named. [RT #24650] +3121. [security] An authoritative name server sending a negative + response containing a very large RRset could + trigger an off-by-one error in the ncache code + and crash named. [RT #24650] 3120. [bug] Named could fail to validate zones listed in a DLV that validated insecure without using DLV and had @@ -370,9 +410,9 @@ 3043. [test] Merged in the NetBSD ATF test framework (currently version 0.12) for development of future unit tests. - Use configure --with-atf to build ATF internally - or configure --with-atf=prefix to use an external - copy. [RT #23209] + Use configure --with-atf to build ATF internally + or configure --with-atf=prefix to use an external + copy. [RT #23209] 3042. [bug] dig +trace could fail attempting to use IPv6 addresses on systems with only IPv4 connectivity. @@ -562,7 +602,7 @@ 2929. [bug] Improved handling of GSS security contexts: - added LRU expiration for generated TSIGs - added the ability to use a non-default realm - - added new "realm" keyword in nsupdate + - added new "realm" keyword in nsupdate - limited lifetime of generated keys to 1 hour or the lifetime of the context (whichever is smaller) @@ -927,11 +967,11 @@ trigger an assert. [RT #20368] 2705. [bug] Reconcile the XML stats version number with a later - BIND9 release, by adding a "name" attribute to - "cache" elements and increasing the version number - to 2.2. (This is a minor version change, but may - affect XML parsers if they assume the cache element - doesn't take an attribute.) + BIND9 release, by adding a "name" attribute to + "cache" elements and increasing the version number + to 2.2. (This is a minor version change, but may + affect XML parsers if they assume the cache element + doesn't take an attribute.) 2704. [bug] Serial of dynamic and stub zones could be inconsistent with their SOA serial. [RT #19387] @@ -1590,10 +1630,10 @@ time. [RT #18277] 2423. [security] Randomize server selection on queries, so as to - make forgery a little more difficult. Instead of - always preferring the server with the lowest RTT, - pick a server with RTT within the same 128 - millisecond band. [RT #18441] + make forgery a little more difficult. Instead of + always preferring the server with the lowest RTT, + pick a server with RTT within the same 128 + millisecond band. [RT #18441] 2422. [bug] Handle the special return value of a empty node as if it was a NXRRSET in the validator. [RT #18447] @@ -1674,7 +1714,7 @@ 2399. [placeholder] -2398. [bug] Improve file descriptor management. New, +2398. [bug] Improve file descriptor management. New, temporary, named.conf option reserved-sockets, default 512. [RT #18344] Modified: stable/8/contrib/bind9/README ============================================================================== --- stable/8/contrib/bind9/README Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/README Mon May 28 19:48:37 2012 (r236197) @@ -48,6 +48,11 @@ BIND 9 For up-to-date release notes and errata, see http://www.isc.org/software/bind9/releasenotes +BIND 9.6-ESV-R7 (Extended Support Version) + + BIND 9.4-ESV-R7 is a maintenance release, fixing bugs in BIND + 9.6-ESV-R6. + BIND 9.6-ESV-R6 (Extended Support Version) BIND 9.6-ESV-R6 includes a number of bug fixes and prevents a Modified: stable/8/contrib/bind9/bin/named/query.c ============================================================================== --- stable/8/contrib/bind9/bin/named/query.c Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/bin/named/query.c Mon May 28 19:48:37 2012 (r236197) @@ -2912,6 +2912,11 @@ query_addwildcardproof(ns_client_t *clie dns_name_copy(name, cname, NULL); while (result == DNS_R_NXDOMAIN) { labels = dns_name_countlabels(cname) - 1; + /* + * Sanity check. + */ + if (labels == 0U) + goto cleanup; dns_name_split(cname, labels, NULL, cname); result = dns_db_find(db, cname, version, dns_rdatatype_nsec, Modified: stable/8/contrib/bind9/lib/dns/api ============================================================================== --- stable/8/contrib/bind9/lib/dns/api Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/lib/dns/api Mon May 28 19:48:37 2012 (r236197) @@ -4,5 +4,5 @@ # 9.8: 80-89 # 9.9: 90-109 LIBINTERFACE = 110 -LIBREVISION = 1 +LIBREVISION = 2 LIBAGE = 0 Modified: stable/8/contrib/bind9/lib/dns/include/dns/stats.h ============================================================================== --- stable/8/contrib/bind9/lib/dns/include/dns/stats.h Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/lib/dns/include/dns/stats.h Mon May 28 19:48:37 2012 (r236197) @@ -147,6 +147,8 @@ typedef void (*dns_rdatatypestats_dumper void *); typedef void (*dns_opcodestats_dumper_t)(dns_opcode_t, isc_uint64_t, void *); +ISC_LANG_BEGINDECLS + isc_result_t dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounters); /*%< Modified: stable/8/contrib/bind9/lib/dns/include/dns/view.h ============================================================================== --- stable/8/contrib/bind9/lib/dns/include/dns/view.h Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/lib/dns/include/dns/view.h Mon May 28 19:48:37 2012 (r236197) @@ -878,4 +878,6 @@ dns_view_getresquerystats(dns_view_t *vi *\li 'statsp' != NULL && '*statsp' != NULL */ +ISC_LANG_ENDDECLS + #endif /* DNS_VIEW_H */ Modified: stable/8/contrib/bind9/lib/dns/rbtdb.c ============================================================================== --- stable/8/contrib/bind9/lib/dns/rbtdb.c Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/lib/dns/rbtdb.c Mon May 28 19:48:37 2012 (r236197) @@ -7277,7 +7277,7 @@ dns_rbtdb_create for (i = 0 ; i < (int)rbtdb->node_lock_count ; i++) if (rbtdb->heaps[i] != NULL) isc_heap_destroy(&rbtdb->heaps[i]); - isc_mem_put(mctx, rbtdb->heaps, + isc_mem_put(hmctx, rbtdb->heaps, rbtdb->node_lock_count * sizeof(isc_heap_t *)); } Copied: stable/8/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c (from r236175, vendor/bind9/dist-9.6/lib/dns/rdata/generic/tlsa_52.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c Mon May 28 19:48:37 2012 (r236197, copy of r236175, vendor/bind9/dist-9.6/lib/dns/rdata/generic/tlsa_52.c) @@ -0,0 +1,285 @@ +/* + * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id$ */ + +/* draft-ietf-dane-protocol-19.txt */ + +#ifndef RDATA_GENERIC_TLSA_52_C +#define RDATA_GENERIC_TLSA_52_C + +#define RRTYPE_TLSA_ATTRIBUTES 0 + +static inline isc_result_t +fromtext_tlsa(ARGS_FROMTEXT) { + isc_token_t token; + + REQUIRE(type == 52); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + /* + * Certificate Usage. + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffU) + RETTOK(ISC_R_RANGE); + RETERR(uint8_tobuffer(token.value.as_ulong, target)); + + /* + * Selector. + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffU) + RETTOK(ISC_R_RANGE); + RETERR(uint8_tobuffer(token.value.as_ulong, target)); + + /* + * Matching type. + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffU) + RETTOK(ISC_R_RANGE); + RETERR(uint8_tobuffer(token.value.as_ulong, target)); + + /* + * Certificate Association Data. + */ + return (isc_hex_tobuffer(lexer, target, -1)); +} + +static inline isc_result_t +totext_tlsa(ARGS_TOTEXT) { + isc_region_t sr; + char buf[sizeof("64000 ")]; + unsigned int n; + + REQUIRE(rdata->type == 52); + REQUIRE(rdata->length != 0); + + UNUSED(tctx); + + dns_rdata_toregion(rdata, &sr); + + /* + * Certificate Usage. + */ + n = uint8_fromregion(&sr); + isc_region_consume(&sr, 1); + sprintf(buf, "%u ", n); + RETERR(str_totext(buf, target)); + + /* + * Selector. + */ + n = uint8_fromregion(&sr); + isc_region_consume(&sr, 1); + sprintf(buf, "%u ", n); + RETERR(str_totext(buf, target)); + + /* + * Matching type. + */ + n = uint8_fromregion(&sr); + isc_region_consume(&sr, 1); + sprintf(buf, "%u", n); + RETERR(str_totext(buf, target)); + + /* + * Certificate Association Data. + */ + if ((tctx->flags & DNS_STYLEFLAG_MULTILINE) != 0) + RETERR(str_totext(" (", target)); + RETERR(str_totext(tctx->linebreak, target)); + if (tctx->width == 0) /* No splitting */ + RETERR(isc_hex_totext(&sr, 0, "", target)); + else + RETERR(isc_hex_totext(&sr, tctx->width - 2, + tctx->linebreak, target)); + if ((tctx->flags & DNS_STYLEFLAG_MULTILINE) != 0) + RETERR(str_totext(" )", target)); + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +fromwire_tlsa(ARGS_FROMWIRE) { + isc_region_t sr; + + REQUIRE(type == 52); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(dctx); + UNUSED(options); + + isc_buffer_activeregion(source, &sr); + + if (sr.length < 3) + return (ISC_R_UNEXPECTEDEND); + + isc_buffer_forward(source, sr.length); + return (mem_tobuffer(target, sr.base, sr.length)); +} + +static inline isc_result_t +towire_tlsa(ARGS_TOWIRE) { + isc_region_t sr; + + REQUIRE(rdata->type == 52); + REQUIRE(rdata->length != 0); + + UNUSED(cctx); + + dns_rdata_toregion(rdata, &sr); + return (mem_tobuffer(target, sr.base, sr.length)); +} + +static inline int +compare_tlsa(ARGS_COMPARE) { + isc_region_t r1; + isc_region_t r2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 52); + REQUIRE(rdata1->length != 0); + REQUIRE(rdata2->length != 0); + + dns_rdata_toregion(rdata1, &r1); + dns_rdata_toregion(rdata2, &r2); + return (isc_region_compare(&r1, &r2)); +} + +static inline isc_result_t +fromstruct_tlsa(ARGS_FROMSTRUCT) { + dns_rdata_tlsa_t *tlsa = source; + + REQUIRE(type == 52); + REQUIRE(source != NULL); + REQUIRE(tlsa->common.rdtype == type); + REQUIRE(tlsa->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + RETERR(uint8_tobuffer(tlsa->usage, target)); + RETERR(uint8_tobuffer(tlsa->selector, target)); + RETERR(uint8_tobuffer(tlsa->match, target)); + + return (mem_tobuffer(target, tlsa->data, tlsa->length)); +} + +static inline isc_result_t +tostruct_tlsa(ARGS_TOSTRUCT) { + dns_rdata_tlsa_t *tlsa = target; + isc_region_t region; + + REQUIRE(rdata->type == 52); + REQUIRE(target != NULL); + REQUIRE(rdata->length != 0); + + tlsa->common.rdclass = rdata->rdclass; + tlsa->common.rdtype = rdata->type; + ISC_LINK_INIT(&tlsa->common, link); + + dns_rdata_toregion(rdata, ®ion); + + tlsa->usage = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + tlsa->selector = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + tlsa->match = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + tlsa->length = region.length; + + tlsa->data = mem_maybedup(mctx, region.base, region.length); + if (tlsa->data == NULL) + return (ISC_R_NOMEMORY); + + tlsa->mctx = mctx; + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_tlsa(ARGS_FREESTRUCT) { + dns_rdata_tlsa_t *tlsa = source; + + REQUIRE(tlsa != NULL); + REQUIRE(tlsa->common.rdtype == 52); + + if (tlsa->mctx == NULL) + return; + + if (tlsa->data != NULL) + isc_mem_free(tlsa->mctx, tlsa->data); + tlsa->mctx = NULL; +} + +static inline isc_result_t +additionaldata_tlsa(ARGS_ADDLDATA) { + REQUIRE(rdata->type == 52); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_tlsa(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 52); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_tlsa(ARGS_CHECKOWNER) { + + REQUIRE(type == 52); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_tlsa(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 52); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +#endif /* RDATA_GENERIC_TLSA_52_C */ Copied: stable/8/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h (from r236175, vendor/bind9/dist-9.6/lib/dns/rdata/generic/tlsa_52.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h Mon May 28 19:48:37 2012 (r236197, copy of r236175, vendor/bind9/dist-9.6/lib/dns/rdata/generic/tlsa_52.h) @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id$ */ + +#ifndef GENERIC_TLSA_52_H +#define GENERIC_TLSA_52_H 1 + +/*! + * \brief per draft-ietf-dane-protocol-19.txt + */ +typedef struct dns_rdata_tlsa { + dns_rdatacommon_t common; + isc_mem_t *mctx; + isc_uint8_t usage; + isc_uint8_t selector; + isc_uint8_t match; + isc_uint16_t length; + unsigned char *data; +} dns_rdata_tlsa_t; + +#endif /* GENERIC_TLSA_52_H */ Modified: stable/8/contrib/bind9/lib/dns/resolver.c ============================================================================== --- stable/8/contrib/bind9/lib/dns/resolver.c Mon May 28 19:47:56 2012 (r236196) +++ stable/8/contrib/bind9/lib/dns/resolver.c Mon May 28 19:48:37 2012 (r236197) @@ -172,7 +172,9 @@ struct fetchctx { dns_rdatatype_t type; unsigned int options; unsigned int bucketnum; - char * info; + char * info; + isc_mem_t * mctx; + /*% Locked by appropriate bucket lock. */ fetchstate state; isc_boolean_t want_shutdown; @@ -436,7 +438,8 @@ static void resquery_response(isc_task_t static void resquery_connected(isc_task_t *task, isc_event_t *event); static void fctx_try(fetchctx_t *fctx, isc_boolean_t retrying, isc_boolean_t badcache); -static isc_boolean_t fctx_destroy(fetchctx_t *fctx); +static void fctx_destroy(fetchctx_t *fctx); +static isc_boolean_t fctx_unlink(fetchctx_t *fctx); static isc_result_t ncache_adderesult(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, dns_rdatatype_t covers, @@ -468,8 +471,7 @@ valcreate(fetchctx_t *fctx, dns_adbaddri dns_valarg_t *valarg; isc_result_t result; - valarg = isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx, - sizeof(*valarg)); + valarg = isc_mem_get(fctx->mctx, sizeof(*valarg)); if (valarg == NULL) return (ISC_R_NOMEMORY); @@ -491,8 +493,7 @@ valcreate(fetchctx_t *fctx, dns_adbaddri } ISC_LIST_APPEND(fctx->validators, validator, link); } else - isc_mem_put(fctx->res->buckets[fctx->bucketnum].mctx, - valarg, sizeof(*valarg)); + isc_mem_put(fctx->mctx, valarg, sizeof(*valarg)); return (result); } @@ -1375,13 +1376,12 @@ fctx_query(fetchctx_t *fctx, dns_adbaddr dns_message_reset(fctx->rmessage, DNS_MESSAGE_INTENTPARSE); - query = isc_mem_get(res->buckets[fctx->bucketnum].mctx, - sizeof(*query)); + query = isc_mem_get(fctx->mctx, sizeof(*query)); if (query == NULL) { result = ISC_R_NOMEMORY; goto stop_idle_timer; } - query->mctx = res->buckets[fctx->bucketnum].mctx; + query->mctx = fctx->mctx; query->options = options; query->attributes = 0; query->sends = 0; @@ -1558,8 +1558,7 @@ fctx_query(fetchctx_t *fctx, dns_adbaddr cleanup_query: if (query->connects == 0) { query->magic = 0; - isc_mem_put(res->buckets[fctx->bucketnum].mctx, - query, sizeof(*query)); + isc_mem_put(fctx->mctx, query, sizeof(*query)); } stop_idle_timer: @@ -1589,8 +1588,7 @@ add_bad_edns(fetchctx_t *fctx, isc_socka if (bad_edns(fctx, address)) return; - sa = isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx, - sizeof(*sa)); + sa = isc_mem_get(fctx->mctx, sizeof(*sa)); if (sa == NULL) return; @@ -1619,8 +1617,7 @@ add_triededns(fetchctx_t *fctx, isc_sock if (triededns(fctx, address)) return; - sa = isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx, - sizeof(*sa)); + sa = isc_mem_get(fctx->mctx, sizeof(*sa)); if (sa == NULL) return; @@ -1649,8 +1646,7 @@ add_triededns512(fetchctx_t *fctx, isc_s if (triededns512(fctx, address)) return; - sa = isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx, - sizeof(*sa)); + sa = isc_mem_get(fctx->mctx, sizeof(*sa)); if (sa == NULL) return; @@ -2156,8 +2152,8 @@ fctx_finddone(isc_task_t *task, isc_even isc_boolean_t want_try = ISC_FALSE; isc_boolean_t want_done = ISC_FALSE; isc_boolean_t bucket_empty = ISC_FALSE; - isc_boolean_t destroy = ISC_FALSE; unsigned int bucketnum; + isc_boolean_t destroy = ISC_FALSE; find = event->ev_sender; fctx = event->ev_arg; @@ -2195,17 +2191,14 @@ fctx_finddone(isc_task_t *task, isc_even } } else if (SHUTTINGDOWN(fctx) && fctx->pending == 0 && fctx->nqueries == 0 && ISC_LIST_EMPTY(fctx->validators)) { - /* - * Note that we had to wait until we had the lock before - * looking at fctx->references. - */ - if (fctx->references == 0) + + if (fctx->references == 0) { + bucket_empty = fctx_unlink(fctx); destroy = ISC_TRUE; + } } UNLOCK(&res->buckets[bucketnum].lock); - if (destroy) - bucket_empty = fctx_destroy(fctx); isc_event_free(&event); dns_adb_destroyfind(&find); @@ -2213,8 +2206,11 @@ fctx_finddone(isc_task_t *task, isc_even fctx_try(fctx, ISC_TRUE, ISC_FALSE); else if (want_done) fctx_done(fctx, ISC_R_FAILURE, __LINE__); - else if (bucket_empty) - empty_bucket(res); + else if (destroy) { + fctx_destroy(fctx); + if (bucket_empty) + empty_bucket(res); + } } @@ -2337,8 +2333,7 @@ add_bad(fetchctx_t *fctx, dns_adbaddrinf FCTXTRACE("add_bad"); - sa = isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx, - sizeof(*sa)); + sa = isc_mem_get(fctx->mctx, sizeof(*sa)); if (sa == NULL) return; *sa = *address; @@ -2689,12 +2684,9 @@ fctx_getaddresses(fetchctx_t *fctx, isc_ fctx->fwdpolicy = forwarders->fwdpolicy; if (fctx->fwdpolicy == dns_fwdpolicy_only && isstrictsubdomain(domain, &fctx->domain)) { - isc_mem_t *mctx; - - mctx = res->buckets[fctx->bucketnum].mctx; - dns_name_free(&fctx->domain, mctx); + dns_name_free(&fctx->domain, fctx->mctx); dns_name_init(&fctx->domain, NULL); - result = dns_name_dup(domain, mctx, + result = dns_name_dup(domain, fctx->mctx, &fctx->domain); if (result != ISC_R_SUCCESS) return (result); @@ -3133,10 +3125,9 @@ fctx_try(fetchctx_t *fctx, isc_boolean_t } static isc_boolean_t -fctx_destroy(fetchctx_t *fctx) { +fctx_unlink(fetchctx_t *fctx) { dns_resolver_t *res; unsigned int bucketnum; - isc_sockaddr_t *sa, *next_sa; /* * Caller must be holding the bucket lock. @@ -3153,13 +3144,42 @@ fctx_destroy(fetchctx_t *fctx) { REQUIRE(fctx->references == 0); REQUIRE(ISC_LIST_EMPTY(fctx->validators)); - FCTXTRACE("destroy"); + FCTXTRACE("unlink"); res = fctx->res; bucketnum = fctx->bucketnum; ISC_LIST_UNLINK(res->buckets[bucketnum].fctxs, fctx, link); + LOCK(&res->nlock); + res->nfctx--; + UNLOCK(&res->nlock); + + if (res->buckets[bucketnum].exiting && + ISC_LIST_EMPTY(res->buckets[bucketnum].fctxs)) + return (ISC_TRUE); + + return (ISC_FALSE); +} + +static void +fctx_destroy(fetchctx_t *fctx) { + isc_sockaddr_t *sa, *next_sa; + + REQUIRE(VALID_FCTX(fctx)); + REQUIRE(fctx->state == fetchstate_done || + fctx->state == fetchstate_init); + REQUIRE(ISC_LIST_EMPTY(fctx->events)); + REQUIRE(ISC_LIST_EMPTY(fctx->queries)); + REQUIRE(ISC_LIST_EMPTY(fctx->finds)); + REQUIRE(ISC_LIST_EMPTY(fctx->altfinds)); + REQUIRE(fctx->pending == 0); + REQUIRE(fctx->references == 0); + REQUIRE(ISC_LIST_EMPTY(fctx->validators)); + REQUIRE(!ISC_LINK_LINKED(fctx, link)); + + FCTXTRACE("destroy"); + /* * Free bad. */ @@ -3168,7 +3188,7 @@ fctx_destroy(fetchctx_t *fctx) { sa = next_sa) { next_sa = ISC_LIST_NEXT(sa, link); ISC_LIST_UNLINK(fctx->bad, sa, link); - isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa)); + isc_mem_put(fctx->mctx, sa, sizeof(*sa)); } for (sa = ISC_LIST_HEAD(fctx->edns); @@ -3176,7 +3196,7 @@ fctx_destroy(fetchctx_t *fctx) { sa = next_sa) { next_sa = ISC_LIST_NEXT(sa, link); ISC_LIST_UNLINK(fctx->edns, sa, link); - isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa)); + isc_mem_put(fctx->mctx, sa, sizeof(*sa)); } for (sa = ISC_LIST_HEAD(fctx->edns512); @@ -3184,7 +3204,7 @@ fctx_destroy(fetchctx_t *fctx) { sa = next_sa) { next_sa = ISC_LIST_NEXT(sa, link); ISC_LIST_UNLINK(fctx->edns512, sa, link); - isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa)); + isc_mem_put(fctx->mctx, sa, sizeof(*sa)); } for (sa = ISC_LIST_HEAD(fctx->bad_edns); @@ -3192,31 +3212,21 @@ fctx_destroy(fetchctx_t *fctx) { sa = next_sa) { next_sa = ISC_LIST_NEXT(sa, link); ISC_LIST_UNLINK(fctx->bad_edns, sa, link); - isc_mem_put(res->buckets[bucketnum].mctx, sa, sizeof(*sa)); + isc_mem_put(fctx->mctx, sa, sizeof(*sa)); } isc_timer_detach(&fctx->timer); dns_message_destroy(&fctx->rmessage); dns_message_destroy(&fctx->qmessage); if (dns_name_countlabels(&fctx->domain) > 0) - dns_name_free(&fctx->domain, res->buckets[bucketnum].mctx); + dns_name_free(&fctx->domain, fctx->mctx); if (dns_rdataset_isassociated(&fctx->nameservers)) dns_rdataset_disassociate(&fctx->nameservers); - dns_name_free(&fctx->name, res->buckets[bucketnum].mctx); + dns_name_free(&fctx->name, fctx->mctx); dns_db_detach(&fctx->cache); dns_adb_detach(&fctx->adb); - isc_mem_free(res->buckets[bucketnum].mctx, fctx->info); - isc_mem_put(res->buckets[bucketnum].mctx, fctx, sizeof(*fctx)); - - LOCK(&res->nlock); - res->nfctx--; - UNLOCK(&res->nlock); - - if (res->buckets[bucketnum].exiting && - ISC_LIST_EMPTY(res->buckets[bucketnum].fctxs)) - return (ISC_TRUE); - - return (ISC_FALSE); + isc_mem_free(fctx->mctx, fctx->info); + isc_mem_putanddetach(&fctx->mctx, fctx, sizeof(*fctx)); } /* @@ -3316,6 +3326,7 @@ fctx_doshutdown(isc_task_t *task, isc_ev dns_resolver_t *res; unsigned int bucketnum; dns_validator_t *validator; + isc_boolean_t destroy = ISC_FALSE; REQUIRE(VALID_FCTX(fctx)); @@ -3365,13 +3376,18 @@ fctx_doshutdown(isc_task_t *task, isc_ev } if (fctx->references == 0 && fctx->pending == 0 && - fctx->nqueries == 0 && ISC_LIST_EMPTY(fctx->validators)) - bucket_empty = fctx_destroy(fctx); + fctx->nqueries == 0 && ISC_LIST_EMPTY(fctx->validators)) { + bucket_empty = fctx_unlink(fctx); + destroy = ISC_TRUE; + } UNLOCK(&res->buckets[bucketnum].lock); - if (bucket_empty) - empty_bucket(res); + if (destroy) { + fctx_destroy(fctx); + if (bucket_empty) + empty_bucket(res); + } } static void @@ -3380,6 +3396,7 @@ fctx_start(isc_task_t *task, isc_event_t isc_boolean_t done = ISC_FALSE, bucket_empty = ISC_FALSE; dns_resolver_t *res; unsigned int bucketnum; + isc_boolean_t destroy = ISC_FALSE; REQUIRE(VALID_FCTX(fctx)); @@ -3412,7 +3429,8 @@ fctx_start(isc_task_t *task, isc_event_t /* * It's now safe to destroy this fctx. */ - bucket_empty = fctx_destroy(fctx); + bucket_empty = fctx_unlink(fctx); + destroy = ISC_TRUE; } done = ISC_TRUE; } else { @@ -3434,6 +3452,8 @@ fctx_start(isc_task_t *task, isc_event_t if (!done) { isc_result_t result; + INSIST(!destroy); + /* * All is well. Start working on the fetch. */ @@ -3442,8 +3462,11 @@ fctx_start(isc_task_t *task, isc_event_t fctx_done(fctx, result, __LINE__); else fctx_try(fctx, ISC_FALSE, ISC_FALSE); - } else if (bucket_empty) - empty_bucket(res); + } else if (destroy) { + fctx_destroy(fctx); + if (bucket_empty) + empty_bucket(res); + } } /* @@ -3530,27 +3553,29 @@ fctx_create(dns_resolver_t *res, dns_nam char buf[DNS_NAME_FORMATSIZE + DNS_RDATATYPE_FORMATSIZE]; char typebuf[DNS_RDATATYPE_FORMATSIZE]; dns_name_t suffix; + isc_mem_t *mctx; /* * Caller must be holding the lock for bucket number 'bucketnum'. */ REQUIRE(fctxp != NULL && *fctxp == NULL); - fctx = isc_mem_get(res->buckets[bucketnum].mctx, sizeof(*fctx)); + mctx = res->buckets[bucketnum].mctx; + fctx = isc_mem_get(mctx, sizeof(*fctx)); if (fctx == NULL) return (ISC_R_NOMEMORY); dns_name_format(name, buf, sizeof(buf)); dns_rdatatype_format(type, typebuf, sizeof(typebuf)); strcat(buf, "/"); /* checked */ strcat(buf, typebuf); /* checked */ - fctx->info = isc_mem_strdup(res->buckets[bucketnum].mctx, buf); + fctx->info = isc_mem_strdup(mctx, buf); if (fctx->info == NULL) { result = ISC_R_NOMEMORY; goto cleanup_fetch; } FCTXTRACE("create"); dns_name_init(&fctx->name, NULL); - result = dns_name_dup(name, res->buckets[bucketnum].mctx, &fctx->name); + result = dns_name_dup(name, mctx, &fctx->name); if (result != ISC_R_SUCCESS) goto cleanup_info; dns_name_init(&fctx->domain, NULL); @@ -3652,9 +3677,7 @@ fctx_create(dns_resolver_t *res, dns_nam NULL); if (result != ISC_R_SUCCESS) goto cleanup_name; - result = dns_name_dup(domain, - res->buckets[bucketnum].mctx, - &fctx->domain); + result = dns_name_dup(domain, mctx, &fctx->domain); if (result != ISC_R_SUCCESS) { dns_rdataset_disassociate(&fctx->nameservers); goto cleanup_name; @@ -3665,16 +3688,12 @@ fctx_create(dns_resolver_t *res, dns_nam /* * We're in forward-only mode. Set the query domain. */ - result = dns_name_dup(domain, - res->buckets[bucketnum].mctx, - &fctx->domain); + result = dns_name_dup(domain, mctx, &fctx->domain); if (result != ISC_R_SUCCESS) goto cleanup_name; } } else { - result = dns_name_dup(domain, - res->buckets[bucketnum].mctx, - &fctx->domain); + result = dns_name_dup(domain, mctx, &fctx->domain); if (result != ISC_R_SUCCESS) goto cleanup_name; dns_rdataset_clone(nameservers, &fctx->nameservers); @@ -3687,16 +3706,14 @@ fctx_create(dns_resolver_t *res, dns_nam INSIST(dns_name_issubdomain(&fctx->name, &fctx->domain)); fctx->qmessage = NULL; - result = dns_message_create(res->buckets[bucketnum].mctx, - DNS_MESSAGE_INTENTRENDER, + result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, &fctx->qmessage); if (result != ISC_R_SUCCESS) goto cleanup_domain; fctx->rmessage = NULL; - result = dns_message_create(res->buckets[bucketnum].mctx, - DNS_MESSAGE_INTENTPARSE, + result = dns_message_create(mctx, DNS_MESSAGE_INTENTPARSE, &fctx->rmessage); if (result != ISC_R_SUCCESS) @@ -3746,6 +3763,8 @@ fctx_create(dns_resolver_t *res, dns_nam dns_db_attach(res->view->cachedb, &fctx->cache); fctx->adb = NULL; dns_adb_attach(res->view->adb, &fctx->adb); + fctx->mctx = NULL; + isc_mem_attach(mctx, &fctx->mctx); ISC_LIST_INIT(fctx->events); ISC_LINK_INIT(fctx, link); @@ -3769,18 +3788,18 @@ fctx_create(dns_resolver_t *res, dns_nam *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Mon May 28 21:19:34 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B533106575B; Mon, 28 May 2012 21:19:34 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E946C8FC16; Mon, 28 May 2012 21:19:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SLJX1v034063; Mon, 28 May 2012 21:19:33 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SLJXRJ034060; Mon, 28 May 2012 21:19:33 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205282119.q4SLJXRJ034060@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 21:19:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236200 - stable/9/usr.bin/unzip X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 21:19:34 -0000 Author: des Date: Mon May 28 21:19:33 2012 New Revision: 236200 URL: http://svn.freebsd.org/changeset/base/236200 Log: MFH r230044, r233456: style and markup nits Modified: stable/9/usr.bin/unzip/unzip.1 stable/9/usr.bin/unzip/unzip.c Directory Properties: stable/9/usr.bin/unzip/ (props changed) Modified: stable/9/usr.bin/unzip/unzip.1 ============================================================================== --- stable/9/usr.bin/unzip/unzip.1 Mon May 28 21:15:54 2012 (r236199) +++ stable/9/usr.bin/unzip/unzip.1 Mon May 28 21:19:33 2012 (r236200) @@ -38,7 +38,6 @@ .Ar zipfile .Sh DESCRIPTION .\" ... -.Pp The following options are available: .Bl -tag -width Fl .It Fl a Modified: stable/9/usr.bin/unzip/unzip.c ============================================================================== --- stable/9/usr.bin/unzip/unzip.c Mon May 28 21:15:54 2012 (r236199) +++ stable/9/usr.bin/unzip/unzip.c Mon May 28 21:19:33 2012 (r236200) @@ -426,7 +426,7 @@ handle_existing_file(char **path) fprintf(stderr, "replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", *path); - if (fgets(buf, sizeof(buf), stdin) == 0) { + if (fgets(buf, sizeof(buf), stdin) == NULL) { clearerr(stdin); printf("NULL\n(EOF or read error, " "treating as \"[N]one\"...)\n"); From owner-svn-src-stable@FreeBSD.ORG Mon May 28 21:25:20 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5465D1065670; Mon, 28 May 2012 21:25:20 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 25AA68FC12; Mon, 28 May 2012 21:25:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SLPKdi034341; Mon, 28 May 2012 21:25:20 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SLPJmN034337; Mon, 28 May 2012 21:25:19 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205282125.q4SLPJmN034337@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 21:25:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236201 - stable/8/usr.bin/unzip X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 21:25:20 -0000 Author: des Date: Mon May 28 21:25:19 2012 New Revision: 236201 URL: http://svn.freebsd.org/changeset/base/236201 Log: MFH r208957: check return value from archive_read_new() MFH r214137, r214140, r214174, r224584: support reading from stdin MFH r230044, r233456: style and markup nits MFH r234311: correct name in copyright statement Modified: stable/8/usr.bin/unzip/unzip.1 stable/8/usr.bin/unzip/unzip.c Directory Properties: stable/8/usr.bin/unzip/ (props changed) Modified: stable/8/usr.bin/unzip/unzip.1 ============================================================================== --- stable/8/usr.bin/unzip/unzip.1 Mon May 28 21:19:33 2012 (r236200) +++ stable/8/usr.bin/unzip/unzip.1 Mon May 28 21:25:19 2012 (r236201) @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2007-2008 Dag-Erling Coïdan Smørgrav +.\" Copyright (c) 2007-2008 Dag-Erling Smørgrav .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -38,7 +38,6 @@ .Ar zipfile .Sh DESCRIPTION .\" ... -.Pp The following options are available: .Bl -tag -width Fl .It Fl a @@ -121,6 +120,10 @@ Note that only one of and .Fl u may be specified. +If specified filename is +.Qq - , +then data is read from +.Va stdin . .Sh ENVIRONMENT If the .Ev UNZIP_DEBUG Modified: stable/8/usr.bin/unzip/unzip.c ============================================================================== --- stable/8/usr.bin/unzip/unzip.c Mon May 28 21:19:33 2012 (r236200) +++ stable/8/usr.bin/unzip/unzip.c Mon May 28 21:25:19 2012 (r236201) @@ -1,6 +1,6 @@ /*- * Copyright (c) 2009 Joerg Sonnenberger - * Copyright (c) 2007-2008 Dag-Erling Coïdan Smørgrav + * Copyright (c) 2007-2008 Dag-Erling Smørgrav * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -426,7 +426,7 @@ handle_existing_file(char **path) fprintf(stderr, "replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", *path); - if (fgets(buf, sizeof(buf), stdin) == 0) { + if (fgets(buf, sizeof(buf), stdin) == NULL) { clearerr(stdin); printf("NULL\n(EOF or read error, " "treating as \"[N]one\"...)\n"); @@ -868,10 +868,14 @@ unzip(const char *fn) int fd, ret; uintmax_t total_size, file_count, error_count; - if ((fd = open(fn, O_RDONLY)) < 0) + if (strcmp(fn, "-") == 0) + fd = STDIN_FILENO; + else if ((fd = open(fn, O_RDONLY)) < 0) error("%s", fn); - a = archive_read_new(); + if ((a = archive_read_new()) == NULL) + error("archive_read_new failed"); + ac(archive_read_support_format_zip(a)); ac(archive_read_open_fd(a, fd, 8192)); @@ -929,7 +933,7 @@ unzip(const char *fn) ac(archive_read_close(a)); (void)archive_read_finish(a); - if (close(fd) != 0) + if (fd != STDIN_FILENO && close(fd) != 0) error("%s", fn); if (t_opt) { From owner-svn-src-stable@FreeBSD.ORG Mon May 28 21:26:27 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3A5BA1065675; Mon, 28 May 2012 21:26:27 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 257658FC14; Mon, 28 May 2012 21:26:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SLQRfl034424; Mon, 28 May 2012 21:26:27 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SLQQ9e034422; Mon, 28 May 2012 21:26:26 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205282126.q4SLQQ9e034422@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 21:26:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236202 - stable/8/usr.bin X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 21:26:27 -0000 Author: des Date: Mon May 28 21:26:26 2012 New Revision: 236202 URL: http://svn.freebsd.org/changeset/base/236202 Log: MFH r200068: connect unzip to the build. Modified: stable/8/usr.bin/Makefile Directory Properties: stable/8/usr.bin/ (props changed) Modified: stable/8/usr.bin/Makefile ============================================================================== --- stable/8/usr.bin/Makefile Mon May 28 21:25:19 2012 (r236201) +++ stable/8/usr.bin/Makefile Mon May 28 21:26:26 2012 (r236202) @@ -205,6 +205,7 @@ SUBDIR= alias \ unexpand \ ${_unifdef} \ uniq \ + unzip \ units \ unvis \ ${_usbhidaction} \ From owner-svn-src-stable@FreeBSD.ORG Mon May 28 21:59:05 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id ED281106566B; Mon, 28 May 2012 21:59:05 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BEA798FC14; Mon, 28 May 2012 21:59:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SLx5PI035828; Mon, 28 May 2012 21:59:05 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SLx5UZ035827; Mon, 28 May 2012 21:59:05 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205282159.q4SLx5UZ035827@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 21:59:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236203 - stable/8/lib/libpam X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 21:59:06 -0000 Author: des Date: Mon May 28 21:59:05 2012 New Revision: 236203 URL: http://svn.freebsd.org/changeset/base/236203 Log: Forgot to commit mergeinfo when I MFHed pam_unix last month. Modified: Directory Properties: stable/8/lib/libpam/ (props changed) From owner-svn-src-stable@FreeBSD.ORG Mon May 28 22:07:32 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C3696106564A; Mon, 28 May 2012 22:07:32 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AE4388FC1F; Mon, 28 May 2012 22:07:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SM7Whe036257; Mon, 28 May 2012 22:07:32 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SM7WhR036255; Mon, 28 May 2012 22:07:32 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205282207.q4SM7WhR036255@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 22:07:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236204 - stable/8 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 22:07:32 -0000 Author: des Date: Mon May 28 22:07:32 2012 New Revision: 236204 URL: http://svn.freebsd.org/changeset/base/236204 Log: MFH r230622: use build tools, not host tools, to build aicasm. Modified: stable/8/Makefile.inc1 (contents, props changed) Directory Properties: stable/8/ (props changed) Modified: stable/8/Makefile.inc1 ============================================================================== --- stable/8/Makefile.inc1 Mon May 28 21:59:05 2012 (r236203) +++ stable/8/Makefile.inc1 Mon May 28 22:07:32 2012 (r236204) @@ -775,6 +775,7 @@ buildkernel: @echo ">>> stage 2.3: build tools" @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; \ + PATH=${BPATH}:${PATH} \ MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ ${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF \ -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile @@ -782,6 +783,7 @@ buildkernel: .if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) .for target in obj depend all cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ + PATH=${BPATH}:${PATH} \ MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ ${MAKE} SSP_CFLAGS= -DNO_CPU_CFLAGS -DNO_CTF ${target} .endfor From owner-svn-src-stable@FreeBSD.ORG Mon May 28 22:09:50 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AB90106566B; Mon, 28 May 2012 22:09:50 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 854CB8FC0C; Mon, 28 May 2012 22:09:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SM9o31036387; Mon, 28 May 2012 22:09:50 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SM9oVV036384; Mon, 28 May 2012 22:09:50 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201205282209.q4SM9oVV036384@svn.freebsd.org> From: Dag-Erling Smorgrav Date: Mon, 28 May 2012 22:09:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236205 - stable/7 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 22:09:50 -0000 Author: des Date: Mon May 28 22:09:50 2012 New Revision: 236205 URL: http://svn.freebsd.org/changeset/base/236205 Log: MFH r230622: use build tools, not host tools, to build aicasm. Modified: stable/7/Makefile.inc1 (contents, props changed) Directory Properties: stable/7/ (props changed) Modified: stable/7/Makefile.inc1 ============================================================================== --- stable/7/Makefile.inc1 Mon May 28 22:07:32 2012 (r236204) +++ stable/7/Makefile.inc1 Mon May 28 22:09:50 2012 (r236205) @@ -735,6 +735,7 @@ buildkernel: @echo ">>> stage 2.3: build tools" @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; \ + PATH=${BPATH}:${PATH} \ MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \ ${MAKE} -DNO_CPU_CFLAGS -DNO_CTF \ -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile @@ -742,6 +743,7 @@ buildkernel: .if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules) .for target in obj depend all cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \ + PATH=${BPATH}:${PATH} \ MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \ ${MAKE} -DNO_CPU_CFLAGS -DNO_CTF ${target} .endfor From owner-svn-src-stable@FreeBSD.ORG Mon May 28 22:58:14 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 504B2106564A; Mon, 28 May 2012 22:58:14 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 395488FC0C; Mon, 28 May 2012 22:58:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SMwEih038566; Mon, 28 May 2012 22:58:14 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SMwDaj038561; Mon, 28 May 2012 22:58:13 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201205282258.q4SMwDaj038561@svn.freebsd.org> From: Alan Cox Date: Mon, 28 May 2012 22:58:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236208 - in stable/9/sys: fs/tmpfs kern X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 22:58:14 -0000 Author: alc Date: Mon May 28 22:58:13 2012 New Revision: 236208 URL: http://svn.freebsd.org/changeset/base/236208 Log: MFC r229821 Correct an error of omission in the implementation of the truncation operation on POSIX shared memory objects and tmpfs. Previously, neither of these modules correctly handled the case in which the new size of the object or file was not a multiple of the page size. Specifically, they did not handle partial page truncation of data stored on swap. As a result, stale data might later be returned to an application. Interestingly, a data inconsistency was less likely to occur under tmpfs than POSIX shared memory objects. The reason being that a different mistake by the tmpfs truncation operation helped avoid a data inconsistency. If the data was still resident in memory in a PG_CACHED page, then the tmpfs truncation operation would reactivate that page, zero the truncated portion, and leave the page pinned in memory. More precisely, the benevolent error was that the truncation operation didn't add the reactivated page to any of the paging queues, effectively pinning the page. This page would remain pinned until the file was destroyed or the page was read or written. With this change, the page is now added to the inactive queue. MFC r230180 When tmpfs_write() resets an extended file to its original size after an error, we want tmpfs_reg_resize() to ignore I/O errors and unconditionally update the file's size. Modified: stable/9/sys/fs/tmpfs/tmpfs.h stable/9/sys/fs/tmpfs/tmpfs_subr.c stable/9/sys/fs/tmpfs/tmpfs_vnops.c stable/9/sys/kern/uipc_shm.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/fs/ (props changed) Modified: stable/9/sys/fs/tmpfs/tmpfs.h ============================================================================== --- stable/9/sys/fs/tmpfs/tmpfs.h Mon May 28 22:30:36 2012 (r236207) +++ stable/9/sys/fs/tmpfs/tmpfs.h Mon May 28 22:58:13 2012 (r236208) @@ -435,7 +435,7 @@ struct tmpfs_dirent * tmpfs_dir_lookupby int tmpfs_dir_getdents(struct tmpfs_node *, struct uio *, off_t *); int tmpfs_dir_whiteout_add(struct vnode *, struct componentname *); void tmpfs_dir_whiteout_remove(struct vnode *, struct componentname *); -int tmpfs_reg_resize(struct vnode *, off_t); +int tmpfs_reg_resize(struct vnode *, off_t, boolean_t); int tmpfs_chflags(struct vnode *, int, struct ucred *, struct thread *); int tmpfs_chmod(struct vnode *, mode_t, struct ucred *, struct thread *); int tmpfs_chown(struct vnode *, uid_t, gid_t, struct ucred *, Modified: stable/9/sys/fs/tmpfs/tmpfs_subr.c ============================================================================== --- stable/9/sys/fs/tmpfs/tmpfs_subr.c Mon May 28 22:30:36 2012 (r236207) +++ stable/9/sys/fs/tmpfs/tmpfs_subr.c Mon May 28 22:58:13 2012 (r236208) @@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -954,15 +955,15 @@ tmpfs_dir_whiteout_remove(struct vnode * * Returns zero on success or an appropriate error code on failure. */ int -tmpfs_reg_resize(struct vnode *vp, off_t newsize) +tmpfs_reg_resize(struct vnode *vp, off_t newsize, boolean_t ignerr) { struct tmpfs_mount *tmp; struct tmpfs_node *node; vm_object_t uobj; - vm_page_t m; - vm_pindex_t newpages, oldpages; + vm_page_t m, ma[1]; + vm_pindex_t idx, newpages, oldpages; off_t oldsize; - size_t zerolen; + int base, rv; MPASS(vp->v_type == VREG); MPASS(newsize >= 0); @@ -985,15 +986,61 @@ tmpfs_reg_resize(struct vnode *vp, off_t tmpfs_pages_check_avail(tmp, newpages - oldpages) == 0) return (ENOSPC); - TMPFS_LOCK(tmp); - tmp->tm_pages_used += (newpages - oldpages); - TMPFS_UNLOCK(tmp); - - node->tn_size = newsize; - vnode_pager_setsize(vp, newsize); VM_OBJECT_LOCK(uobj); if (newsize < oldsize) { /* + * Zero the truncated part of the last page. + */ + base = newsize & PAGE_MASK; + if (base != 0) { + idx = OFF_TO_IDX(newsize); +retry: + m = vm_page_lookup(uobj, idx); + if (m != NULL) { + if ((m->oflags & VPO_BUSY) != 0 || + m->busy != 0) { + vm_page_sleep(m, "tmfssz"); + goto retry; + } + } else if (vm_pager_has_page(uobj, idx, NULL, NULL)) { + m = vm_page_alloc(uobj, idx, VM_ALLOC_NORMAL); + if (m == NULL) { + VM_OBJECT_UNLOCK(uobj); + VM_WAIT; + VM_OBJECT_LOCK(uobj); + goto retry; + } else if (m->valid != VM_PAGE_BITS_ALL) { + ma[0] = m; + rv = vm_pager_get_pages(uobj, ma, 1, 0); + m = vm_page_lookup(uobj, idx); + } else + /* A cached page was reactivated. */ + rv = VM_PAGER_OK; + vm_page_lock(m); + if (rv == VM_PAGER_OK) { + vm_page_deactivate(m); + vm_page_unlock(m); + vm_page_wakeup(m); + } else { + vm_page_free(m); + vm_page_unlock(m); + if (ignerr) + m = NULL; + else { + VM_OBJECT_UNLOCK(uobj); + return (EIO); + } + } + } + if (m != NULL) { + pmap_zero_page_area(m, base, PAGE_SIZE - base); + MPASS(m->valid == VM_PAGE_BITS_ALL); + vm_page_dirty(m); + vm_pager_page_unswapped(m); + } + } + + /* * Release any swap space and free any whole pages. */ if (newpages < oldpages) { @@ -1001,19 +1048,16 @@ tmpfs_reg_resize(struct vnode *vp, off_t newpages); vm_object_page_remove(uobj, newpages, 0, 0); } - - /* - * Zero the truncated part of the last page. - */ - zerolen = round_page(newsize) - newsize; - if (zerolen > 0) { - m = vm_page_grab(uobj, OFF_TO_IDX(newsize), - VM_ALLOC_NOBUSY | VM_ALLOC_NORMAL | VM_ALLOC_RETRY); - pmap_zero_page_area(m, PAGE_SIZE - zerolen, zerolen); - } } uobj->size = newpages; VM_OBJECT_UNLOCK(uobj); + + TMPFS_LOCK(tmp); + tmp->tm_pages_used += (newpages - oldpages); + TMPFS_UNLOCK(tmp); + + node->tn_size = newsize; + vnode_pager_setsize(vp, newsize); return (0); } @@ -1384,7 +1428,7 @@ tmpfs_truncate(struct vnode *vp, off_t l if (length > VFS_TO_TMPFS(vp->v_mount)->tm_maxfilesize) return (EFBIG); - error = tmpfs_reg_resize(vp, length); + error = tmpfs_reg_resize(vp, length, FALSE); if (error == 0) { node->tn_status |= TMPFS_NODE_CHANGED | TMPFS_NODE_MODIFIED; } Modified: stable/9/sys/fs/tmpfs/tmpfs_vnops.c ============================================================================== --- stable/9/sys/fs/tmpfs/tmpfs_vnops.c Mon May 28 22:30:36 2012 (r236207) +++ stable/9/sys/fs/tmpfs/tmpfs_vnops.c Mon May 28 22:58:13 2012 (r236208) @@ -755,7 +755,8 @@ tmpfs_write(struct vop_write_args *v) extended = uio->uio_offset + uio->uio_resid > node->tn_size; if (extended) { - error = tmpfs_reg_resize(vp, uio->uio_offset + uio->uio_resid); + error = tmpfs_reg_resize(vp, uio->uio_offset + uio->uio_resid, + FALSE); if (error != 0) goto out; } @@ -781,7 +782,7 @@ tmpfs_write(struct vop_write_args *v) } if (error != 0) - (void)tmpfs_reg_resize(vp, oldsize); + (void)tmpfs_reg_resize(vp, oldsize, TRUE); out: MPASS(IMPLIES(error == 0, uio->uio_resid == 0)); Modified: stable/9/sys/kern/uipc_shm.c ============================================================================== --- stable/9/sys/kern/uipc_shm.c Mon May 28 22:30:36 2012 (r236207) +++ stable/9/sys/kern/uipc_shm.c Mon May 28 22:58:13 2012 (r236208) @@ -39,13 +39,6 @@ * * (3) Resource limits? Does this need its own resource limits or are the * existing limits in mmap(2) sufficient? - * - * (4) Partial page truncation. vnode_pager_setsize() will zero any parts - * of a partially mapped page as a result of ftruncate(2)/truncate(2). - * We can do the same (with the same pmap evil), but do we need to - * worry about the bits on disk if the page is swapped out or will the - * swapper zero the parts of a page that are invalid if the page is - * swapped back in for us? */ #include @@ -84,6 +77,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -251,9 +245,10 @@ static int shm_dotruncate(struct shmfd *shmfd, off_t length) { vm_object_t object; - vm_page_t m; - vm_pindex_t nobjsize; + vm_page_t m, ma[1]; + vm_pindex_t idx, nobjsize; vm_ooffset_t delta; + int base, rv; object = shmfd->shm_object; VM_OBJECT_LOCK(object); @@ -265,6 +260,56 @@ shm_dotruncate(struct shmfd *shmfd, off_ /* Are we shrinking? If so, trim the end. */ if (length < shmfd->shm_size) { + + /* + * Zero the truncated part of the last page. + */ + base = length & PAGE_MASK; + if (base != 0) { + idx = OFF_TO_IDX(length); +retry: + m = vm_page_lookup(object, idx); + if (m != NULL) { + if ((m->oflags & VPO_BUSY) != 0 || + m->busy != 0) { + vm_page_sleep(m, "shmtrc"); + goto retry; + } + } else if (vm_pager_has_page(object, idx, NULL, NULL)) { + m = vm_page_alloc(object, idx, VM_ALLOC_NORMAL); + if (m == NULL) { + VM_OBJECT_UNLOCK(object); + VM_WAIT; + VM_OBJECT_LOCK(object); + goto retry; + } else if (m->valid != VM_PAGE_BITS_ALL) { + ma[0] = m; + rv = vm_pager_get_pages(object, ma, 1, + 0); + m = vm_page_lookup(object, idx); + } else + /* A cached page was reactivated. */ + rv = VM_PAGER_OK; + vm_page_lock(m); + if (rv == VM_PAGER_OK) { + vm_page_deactivate(m); + vm_page_unlock(m); + vm_page_wakeup(m); + } else { + vm_page_free(m); + vm_page_unlock(m); + VM_OBJECT_UNLOCK(object); + return (EIO); + } + } + if (m != NULL) { + pmap_zero_page_area(m, base, PAGE_SIZE - base); + KASSERT(m->valid == VM_PAGE_BITS_ALL, + ("shm_dotruncate: page %p is invalid", m)); + vm_page_dirty(m); + vm_pager_page_unswapped(m); + } + } delta = ptoa(object->size - nobjsize); /* Toss in memory pages. */ @@ -279,45 +324,7 @@ shm_dotruncate(struct shmfd *shmfd, off_ /* Free the swap accounted for shm */ swap_release_by_cred(delta, object->cred); object->charge -= delta; - - /* - * If the last page is partially mapped, then zero out - * the garbage at the end of the page. See comments - * in vnode_pager_setsize() for more details. - * - * XXXJHB: This handles in memory pages, but what about - * a page swapped out to disk? - */ - if ((length & PAGE_MASK) && - (m = vm_page_lookup(object, OFF_TO_IDX(length))) != NULL && - m->valid != 0) { - int base = (int)length & PAGE_MASK; - int size = PAGE_SIZE - base; - - pmap_zero_page_area(m, base, size); - - /* - * Update the valid bits to reflect the blocks that - * have been zeroed. Some of these valid bits may - * have already been set. - */ - vm_page_set_valid(m, base, size); - - /* - * Round "base" to the next block boundary so that the - * dirty bit for a partially zeroed block is not - * cleared. - */ - base = roundup2(base, DEV_BSIZE); - - vm_page_clear_dirty(m, base, PAGE_SIZE - base); - } else if ((length & PAGE_MASK) && - __predict_false(object->cache != NULL)) { - vm_page_cache_free(object, OFF_TO_IDX(length), - nobjsize); - } } else { - /* Attempt to reserve the swap */ delta = ptoa(nobjsize - object->size); if (!swap_reserve_by_cred(delta, object->cred)) { From owner-svn-src-stable@FreeBSD.ORG Mon May 28 23:31:49 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6783E1065670; Mon, 28 May 2012 23:31:49 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 48EAC8FC1B; Mon, 28 May 2012 23:31:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4SNVni9039933; Mon, 28 May 2012 23:31:49 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4SNVnGA039930; Mon, 28 May 2012 23:31:49 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201205282331.q4SNVnGA039930@svn.freebsd.org> From: Alan Cox Date: Mon, 28 May 2012 23:31:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236209 - stable/9/sys/fs/tmpfs X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 May 2012 23:31:49 -0000 Author: alc Date: Mon May 28 23:31:48 2012 New Revision: 236209 URL: http://svn.freebsd.org/changeset/base/236209 Log: MFC r230120 Neither tmpfs_nocacheread() nor tmpfs_mappedwrite() needs to call vm_object_pip_{add,subtract}() on the swap object because the swap object can't be destroyed while the vnode is exclusively locked. Moreover, even if the swap object could have been destroyed during tmpfs_nocacheread() and tmpfs_mappedwrite() this code is broken because vm_object_pip_subtract() does not wake up the sleeping thread that is trying to destroy the swap object. Free invalid pages after an I/O error. There is no virtue in keeping them around in the swap object creating more work for the page daemon. (I believe that any non-busy page in the swap object will now always be valid.) vm_pager_get_pages() does not return a standard errno, so its return value should not be returned by tmpfs without translation to an errno value. There is no reason for the wakeup on vpg in tmpfs_mappedwrite() to occur with the swap object locked. Eliminate printf()s from tmpfs_nocacheread() and tmpfs_mappedwrite(). (The swap pager already spams your console if data corruption is imminent.) Modified: stable/9/sys/fs/tmpfs/tmpfs_subr.c stable/9/sys/fs/tmpfs/tmpfs_vnops.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/fs/ (props changed) Modified: stable/9/sys/fs/tmpfs/tmpfs_subr.c ============================================================================== --- stable/9/sys/fs/tmpfs/tmpfs_subr.c Mon May 28 22:58:13 2012 (r236208) +++ stable/9/sys/fs/tmpfs/tmpfs_subr.c Mon May 28 23:31:48 2012 (r236209) @@ -1002,6 +1002,7 @@ retry: vm_page_sleep(m, "tmfssz"); goto retry; } + MPASS(m->valid == VM_PAGE_BITS_ALL); } else if (vm_pager_has_page(uobj, idx, NULL, NULL)) { m = vm_page_alloc(uobj, idx, VM_ALLOC_NORMAL); if (m == NULL) { @@ -1034,7 +1035,6 @@ retry: } if (m != NULL) { pmap_zero_page_area(m, base, PAGE_SIZE - base); - MPASS(m->valid == VM_PAGE_BITS_ALL); vm_page_dirty(m); vm_pager_page_unswapped(m); } Modified: stable/9/sys/fs/tmpfs/tmpfs_vnops.c ============================================================================== --- stable/9/sys/fs/tmpfs/tmpfs_vnops.c Mon May 28 22:58:13 2012 (r236208) +++ stable/9/sys/fs/tmpfs/tmpfs_vnops.c Mon May 28 23:31:48 2012 (r236209) @@ -445,18 +445,20 @@ tmpfs_nocacheread(vm_object_t tobj, vm_p vm_offset_t offset, size_t tlen, struct uio *uio) { vm_page_t m; - int error; + int error, rv; VM_OBJECT_LOCK(tobj); - vm_object_pip_add(tobj, 1); m = vm_page_grab(tobj, idx, VM_ALLOC_WIRED | VM_ALLOC_NORMAL | VM_ALLOC_RETRY); if (m->valid != VM_PAGE_BITS_ALL) { if (vm_pager_has_page(tobj, idx, NULL, NULL)) { - error = vm_pager_get_pages(tobj, &m, 1, 0); - if (error != 0) { - printf("tmpfs get pages from pager error [read]\n"); - goto out; + rv = vm_pager_get_pages(tobj, &m, 1, 0); + if (rv != VM_PAGER_OK) { + vm_page_lock(m); + vm_page_free(m); + vm_page_unlock(m); + VM_OBJECT_UNLOCK(tobj); + return (EIO); } } else vm_page_zero_invalid(m, TRUE); @@ -464,12 +466,10 @@ tmpfs_nocacheread(vm_object_t tobj, vm_p VM_OBJECT_UNLOCK(tobj); error = uiomove_fromphys(&m, offset, tlen, uio); VM_OBJECT_LOCK(tobj); -out: vm_page_lock(m); vm_page_unwire(m, TRUE); vm_page_unlock(m); vm_page_wakeup(m); - vm_object_pip_subtract(tobj, 1); VM_OBJECT_UNLOCK(tobj); return (error); @@ -632,7 +632,7 @@ tmpfs_mappedwrite(vm_object_t vobj, vm_o vm_offset_t offset; off_t addr; size_t tlen; - int error; + int error, rv; error = 0; @@ -672,14 +672,16 @@ lookupvpg: } nocache: VM_OBJECT_LOCK(tobj); - vm_object_pip_add(tobj, 1); tpg = vm_page_grab(tobj, idx, VM_ALLOC_WIRED | VM_ALLOC_NORMAL | VM_ALLOC_RETRY); if (tpg->valid != VM_PAGE_BITS_ALL) { if (vm_pager_has_page(tobj, idx, NULL, NULL)) { - error = vm_pager_get_pages(tobj, &tpg, 1, 0); - if (error != 0) { - printf("tmpfs get pages from pager error [write]\n"); + rv = vm_pager_get_pages(tobj, &tpg, 1, 0); + if (rv != VM_PAGER_OK) { + vm_page_lock(tpg); + vm_page_free(tpg); + vm_page_unlock(tpg); + error = EIO; goto out; } } else @@ -693,9 +695,6 @@ nocache: pmap_copy_page(vpg, tpg); } VM_OBJECT_LOCK(tobj); -out: - if (vobj != NULL) - VM_OBJECT_LOCK(vobj); if (error == 0) { KASSERT(tpg->valid == VM_PAGE_BITS_ALL, ("parts of tpg invalid")); @@ -705,12 +704,13 @@ out: vm_page_unwire(tpg, TRUE); vm_page_unlock(tpg); vm_page_wakeup(tpg); - if (vpg != NULL) +out: + VM_OBJECT_UNLOCK(tobj); + if (vpg != NULL) { + VM_OBJECT_LOCK(vobj); vm_page_wakeup(vpg); - if (vobj != NULL) VM_OBJECT_UNLOCK(vobj); - vm_object_pip_subtract(tobj, 1); - VM_OBJECT_UNLOCK(tobj); + } return (error); } From owner-svn-src-stable@FreeBSD.ORG Tue May 29 04:30:03 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 35E1D106566B; Tue, 29 May 2012 04:30:03 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 102FA8FC0A; Tue, 29 May 2012 04:30:03 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T4U23q052435; Tue, 29 May 2012 04:30:02 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T4U2aH052432; Tue, 29 May 2012 04:30:02 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201205290430.q4T4U2aH052432@svn.freebsd.org> From: Pyun YongHyeon Date: Tue, 29 May 2012 04:30:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236216 - stable/9/sys/dev/bce X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 04:30:03 -0000 Author: yongari Date: Tue May 29 04:30:02 2012 New Revision: 236216 URL: http://svn.freebsd.org/changeset/base/236216 Log: MFC r235816: Make IPMI work in the bce driver even when the interface is configured down. Formerly, IPMI communication was lost whenever the interface was not up. The reason was that the BCE_EMAC_MODE register was not configured with the correct media settings. There are two parts to the fix. First, resetting the chip in bce_reset() causes the BCE_EMAC_MODE register to be initialized to a default value that does not necessarily correspond to the actual media settings. The fix implemented here is a bit of a hack. Ideally, at the end of bce_reset() we would poll the PHY to determine the negotiated media, and then we would set the BCE_EMAC_MODE register accordingly. That is difficult, since the PHY is abstracted behind the MII layer and is not supposed to be queried directly from the MAC driver. Instead, we read the BCE_EMAC_MODE register at the beginning of bce_reset() and then restore its media bits to their original values before returning. If IPMI is up and running, then the link is already established and the BCE_EMAC_MODE register is already set appropriately when bce_reset() is called. If IPMI is not running, no harm is done by preserving the BCE_EMAC_MODE settings. The driver will set the register properly once the interface is configured up and link is established. Second, bce_miibus_statchg() is sometimes called when the link is down. In that case, the reported media settings are invalid. Formerly, the driver used them anyway to setup the BCE_EMAC_MODE register. We now avoid changing any MAC registers unless link is active and the reported media settings are valid. Submitted by: jdp Tested by: jdp Modified: stable/9/sys/dev/bce/if_bce.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/bce/if_bce.c ============================================================================== --- stable/9/sys/dev/bce/if_bce.c Tue May 29 03:23:18 2012 (r236215) +++ stable/9/sys/dev/bce/if_bce.c Tue May 29 04:30:02 2012 (r236216) @@ -2062,6 +2062,11 @@ bce_miibus_statchg(device_t dev) media_status = mii->mii_media_status; } + /* Ignore invalid media status. */ + if ((media_status & (IFM_ACTIVE | IFM_AVALID)) != + (IFM_ACTIVE | IFM_AVALID)) + goto bce_miibus_statchg_exit; + val = REG_RD(sc, BCE_EMAC_MODE); val &= ~(BCE_EMAC_MODE_PORT | BCE_EMAC_MODE_HALF_DUPLEX | BCE_EMAC_MODE_MAC_LOOP | BCE_EMAC_MODE_FORCE_LINK | @@ -2131,6 +2136,7 @@ bce_miibus_statchg(device_t dev) /* ToDo: Update watermarks in bce_init_rx_context(). */ +bce_miibus_statchg_exit: DBEXIT(BCE_VERBOSE_PHY); } @@ -4997,14 +5003,25 @@ bce_stop(struct bce_softc *sc) static int bce_reset(struct bce_softc *sc, u32 reset_code) { - u32 val; + u32 emac_mode_save, val; int i, rc = 0; + static const u32 emac_mode_mask = BCE_EMAC_MODE_PORT | + BCE_EMAC_MODE_HALF_DUPLEX | BCE_EMAC_MODE_25G; DBENTER(BCE_VERBOSE_RESET); DBPRINT(sc, BCE_VERBOSE_RESET, "%s(): reset_code = 0x%08X\n", __FUNCTION__, reset_code); + /* + * If ASF/IPMI is operational, then the EMAC Mode register already + * contains appropriate values for the link settings that have + * been auto-negotiated. Resetting the chip will clobber those + * values. Save the important bits so we can restore them after + * the reset. + */ + emac_mode_save = REG_RD(sc, BCE_EMAC_MODE) & emac_mode_mask; + /* Wait for pending PCI transactions to complete. */ REG_WR(sc, BCE_MISC_ENABLE_CLR_BITS, BCE_MISC_ENABLE_CLR_BITS_TX_DMA_ENABLE | @@ -5094,6 +5111,11 @@ bce_reset(struct bce_softc *sc, u32 rese bce_fw_cap_init(sc); bce_reset_exit: + /* Restore EMAC Mode bits needed to keep ASF/IPMI running. */ + val = REG_RD(sc, BCE_EMAC_MODE); + val = (val & ~emac_mode_mask) | emac_mode_save; + REG_WR(sc, BCE_EMAC_MODE, val); + DBEXIT(BCE_VERBOSE_RESET); return (rc); } From owner-svn-src-stable@FreeBSD.ORG Tue May 29 04:32:27 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CD941106564A; Tue, 29 May 2012 04:32:27 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B80768FC14; Tue, 29 May 2012 04:32:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T4WRdD052573; Tue, 29 May 2012 04:32:27 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T4WR85052571; Tue, 29 May 2012 04:32:27 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201205290432.q4T4WR85052571@svn.freebsd.org> From: Pyun YongHyeon Date: Tue, 29 May 2012 04:32:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236217 - stable/8/sys/dev/bce X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 04:32:27 -0000 Author: yongari Date: Tue May 29 04:32:27 2012 New Revision: 236217 URL: http://svn.freebsd.org/changeset/base/236217 Log: MFC r235816: Make IPMI work in the bce driver even when the interface is configured down. Formerly, IPMI communication was lost whenever the interface was not up. The reason was that the BCE_EMAC_MODE register was not configured with the correct media settings. There are two parts to the fix. First, resetting the chip in bce_reset() causes the BCE_EMAC_MODE register to be initialized to a default value that does not necessarily correspond to the actual media settings. The fix implemented here is a bit of a hack. Ideally, at the end of bce_reset() we would poll the PHY to determine the negotiated media, and then we would set the BCE_EMAC_MODE register accordingly. That is difficult, since the PHY is abstracted behind the MII layer and is not supposed to be queried directly from the MAC driver. Instead, we read the BCE_EMAC_MODE register at the beginning of bce_reset() and then restore its media bits to their original values before returning. If IPMI is up and running, then the link is already established and the BCE_EMAC_MODE register is already set appropriately when bce_reset() is called. If IPMI is not running, no harm is done by preserving the BCE_EMAC_MODE settings. The driver will set the register properly once the interface is configured up and link is established. Second, bce_miibus_statchg() is sometimes called when the link is down. In that case, the reported media settings are invalid. Formerly, the driver used them anyway to setup the BCE_EMAC_MODE register. We now avoid changing any MAC registers unless link is active and the reported media settings are valid. Submitted by: jdp Tested by: jdp Modified: stable/8/sys/dev/bce/if_bce.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/bce/if_bce.c ============================================================================== --- stable/8/sys/dev/bce/if_bce.c Tue May 29 04:30:02 2012 (r236216) +++ stable/8/sys/dev/bce/if_bce.c Tue May 29 04:32:27 2012 (r236217) @@ -2062,6 +2062,11 @@ bce_miibus_statchg(device_t dev) media_status = mii->mii_media_status; } + /* Ignore invalid media status. */ + if ((media_status & (IFM_ACTIVE | IFM_AVALID)) != + (IFM_ACTIVE | IFM_AVALID)) + goto bce_miibus_statchg_exit; + val = REG_RD(sc, BCE_EMAC_MODE); val &= ~(BCE_EMAC_MODE_PORT | BCE_EMAC_MODE_HALF_DUPLEX | BCE_EMAC_MODE_MAC_LOOP | BCE_EMAC_MODE_FORCE_LINK | @@ -2131,6 +2136,7 @@ bce_miibus_statchg(device_t dev) /* ToDo: Update watermarks in bce_init_rx_context(). */ +bce_miibus_statchg_exit: DBEXIT(BCE_VERBOSE_PHY); } @@ -4997,14 +5003,25 @@ bce_stop(struct bce_softc *sc) static int bce_reset(struct bce_softc *sc, u32 reset_code) { - u32 val; + u32 emac_mode_save, val; int i, rc = 0; + static const u32 emac_mode_mask = BCE_EMAC_MODE_PORT | + BCE_EMAC_MODE_HALF_DUPLEX | BCE_EMAC_MODE_25G; DBENTER(BCE_VERBOSE_RESET); DBPRINT(sc, BCE_VERBOSE_RESET, "%s(): reset_code = 0x%08X\n", __FUNCTION__, reset_code); + /* + * If ASF/IPMI is operational, then the EMAC Mode register already + * contains appropriate values for the link settings that have + * been auto-negotiated. Resetting the chip will clobber those + * values. Save the important bits so we can restore them after + * the reset. + */ + emac_mode_save = REG_RD(sc, BCE_EMAC_MODE) & emac_mode_mask; + /* Wait for pending PCI transactions to complete. */ REG_WR(sc, BCE_MISC_ENABLE_CLR_BITS, BCE_MISC_ENABLE_CLR_BITS_TX_DMA_ENABLE | @@ -5094,6 +5111,11 @@ bce_reset(struct bce_softc *sc, u32 rese bce_fw_cap_init(sc); bce_reset_exit: + /* Restore EMAC Mode bits needed to keep ASF/IPMI running. */ + val = REG_RD(sc, BCE_EMAC_MODE); + val = (val & ~emac_mode_mask) | emac_mode_save; + REG_WR(sc, BCE_EMAC_MODE, val); + DBEXIT(BCE_VERBOSE_RESET); return (rc); } From owner-svn-src-stable@FreeBSD.ORG Tue May 29 04:44:52 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 36A05106566C; Tue, 29 May 2012 04:44:52 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 06D848FC0A; Tue, 29 May 2012 04:44:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T4ip90053136; Tue, 29 May 2012 04:44:51 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T4ip9R053134; Tue, 29 May 2012 04:44:51 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201205290444.q4T4ip9R053134@svn.freebsd.org> From: Pyun YongHyeon Date: Tue, 29 May 2012 04:44:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236218 - stable/9/sys/dev/bge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 04:44:52 -0000 Author: yongari Date: Tue May 29 04:44:51 2012 New Revision: 236218 URL: http://svn.freebsd.org/changeset/base/236218 Log: MFC r235821: Don't force max payload size to 128. Root complex and Endpoint will negotiate with each other on the TLP payload size so blindly forcing the size to 128 can cause a completion error which in turn will stop device. Reported by: Geans Pin < geanspin <> broadcom dot com > Modified: stable/9/sys/dev/bge/if_bge.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/bge/if_bge.c ============================================================================== --- stable/9/sys/dev/bge/if_bge.c Tue May 29 04:32:27 2012 (r236217) +++ stable/9/sys/dev/bge/if_bge.c Tue May 29 04:44:51 2012 (r236218) @@ -3663,8 +3663,6 @@ bge_reset(struct bge_softc *sc) /* Clear enable no snoop and disable relaxed ordering. */ devctl &= ~(PCIM_EXP_CTL_RELAXED_ORD_ENABLE | PCIM_EXP_CTL_NOSNOOP_ENABLE); - /* Set PCIE max payload size to 128. */ - devctl &= ~PCIM_EXP_CTL_MAX_PAYLOAD; pci_write_config(dev, sc->bge_expcap + PCIR_EXPRESS_DEVICE_CTL, devctl, 2); /* Clear error status. */ From owner-svn-src-stable@FreeBSD.ORG Tue May 29 04:53:46 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DAE4B106566C; Tue, 29 May 2012 04:53:46 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C56068FC0C; Tue, 29 May 2012 04:53:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T4rkFW053609; Tue, 29 May 2012 04:53:46 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T4rkHp053607; Tue, 29 May 2012 04:53:46 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201205290453.q4T4rkHp053607@svn.freebsd.org> From: Pyun YongHyeon Date: Tue, 29 May 2012 04:53:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236219 - stable/8/sys/dev/bge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 04:53:47 -0000 Author: yongari Date: Tue May 29 04:53:46 2012 New Revision: 236219 URL: http://svn.freebsd.org/changeset/base/236219 Log: MFC r235821: Don't force max payload size to 128. Root complex and Endpoint will negotiate with each other on the TLP payload size so blindly forcing the size to 128 can cause a completion error which in turn will stop device. Reported by: Geans Pin < geanspin <> broadcom dot com > Modified: stable/8/sys/dev/bge/if_bge.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/bge/if_bge.c ============================================================================== --- stable/8/sys/dev/bge/if_bge.c Tue May 29 04:44:51 2012 (r236218) +++ stable/8/sys/dev/bge/if_bge.c Tue May 29 04:53:46 2012 (r236219) @@ -3663,8 +3663,6 @@ bge_reset(struct bge_softc *sc) /* Clear enable no snoop and disable relaxed ordering. */ devctl &= ~(PCIM_EXP_CTL_RELAXED_ORD_ENABLE | PCIM_EXP_CTL_NOSNOOP_ENABLE); - /* Set PCIE max payload size to 128. */ - devctl &= ~PCIM_EXP_CTL_MAX_PAYLOAD; pci_write_config(dev, sc->bge_expcap + PCIR_EXPRESS_DEVICE_CTL, devctl, 2); /* Clear error status. */ From owner-svn-src-stable@FreeBSD.ORG Tue May 29 05:43:21 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BF53E106566B; Tue, 29 May 2012 05:43:21 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A94658FC0C; Tue, 29 May 2012 05:43:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T5hLBg055919; Tue, 29 May 2012 05:43:21 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T5hLft055917; Tue, 29 May 2012 05:43:21 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201205290543.q4T5hLft055917@svn.freebsd.org> From: Xin LI Date: Tue, 29 May 2012 05:43:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236222 - stable/9/usr.bin/minigzip X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 05:43:21 -0000 Author: delphij Date: Tue May 29 05:43:21 2012 New Revision: 236222 URL: http://svn.freebsd.org/changeset/base/236222 Log: MFC: commandline -> command line. Modified: stable/9/usr.bin/minigzip/minigzip.1 Directory Properties: stable/9/usr.bin/minigzip/ (props changed) Modified: stable/9/usr.bin/minigzip/minigzip.1 ============================================================================== --- stable/9/usr.bin/minigzip/minigzip.1 Tue May 29 05:28:34 2012 (r236221) +++ stable/9/usr.bin/minigzip/minigzip.1 Tue May 29 05:43:21 2012 (r236222) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 3, 2002 +.Dd May 22, 2012 .Dt MINIGZIP 1 .Os .Sh NAME @@ -48,7 +48,7 @@ output. The default operation is compression, decompression can be selected by supplying the .Fl d -flag on the commandline. +flag on the command line. .Pp If any .Ar file From owner-svn-src-stable@FreeBSD.ORG Tue May 29 08:53:24 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id EBE86106566C; Tue, 29 May 2012 08:53:24 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D692A8FC08; Tue, 29 May 2012 08:53:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T8rOZZ064327; Tue, 29 May 2012 08:53:24 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T8rOTP064325; Tue, 29 May 2012 08:53:24 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201205290853.q4T8rOTP064325@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 29 May 2012 08:53:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236224 - stable/9/lib/libc/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 08:53:25 -0000 Author: kib Date: Tue May 29 08:53:24 2012 New Revision: 236224 URL: http://svn.freebsd.org/changeset/base/236224 Log: MFC r236042: Clarify the SEEK_HOLE description, it repositions the file pointer. Modified: stable/9/lib/libc/sys/lseek.2 Directory Properties: stable/9/lib/libc/ (props changed) stable/9/lib/libc/sys/ (props changed) Modified: stable/9/lib/libc/sys/lseek.2 ============================================================================== --- stable/9/lib/libc/sys/lseek.2 Tue May 29 08:13:40 2012 (r236223) +++ stable/9/lib/libc/sys/lseek.2 Tue May 29 08:53:24 2012 (r236224) @@ -28,7 +28,7 @@ .\" @(#)lseek.2 8.3 (Berkeley) 4/19/94 .\" $FreeBSD$ .\" -.Dd April 5, 2007 +.Dd May 26, 2012 .Dt LSEEK 2 .Os .Sh NAME @@ -92,9 +92,9 @@ If .Fa whence is .Dv SEEK_HOLE , -the offset of the start of the next hole greater than or equal to the supplied -.Fa offset -is returned. +the offset is set to the start of the next hole greater than or equal +to the supplied +.Fa offset . The definition of a hole is provided below. .It If From owner-svn-src-stable@FreeBSD.ORG Tue May 29 08:56:56 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E5BFF106566C; Tue, 29 May 2012 08:56:56 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D04388FC17; Tue, 29 May 2012 08:56:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4T8uurM064539; Tue, 29 May 2012 08:56:56 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4T8uu3s064537; Tue, 29 May 2012 08:56:56 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201205290856.q4T8uu3s064537@svn.freebsd.org> From: Konstantin Belousov Date: Tue, 29 May 2012 08:56:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236225 - stable/8/lib/libc/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 08:56:57 -0000 Author: kib Date: Tue May 29 08:56:56 2012 New Revision: 236225 URL: http://svn.freebsd.org/changeset/base/236225 Log: MFC r236042: Clarify the SEEK_HOLE description, it repositions the file pointer. Modified: stable/8/lib/libc/sys/lseek.2 Directory Properties: stable/8/lib/libc/ (props changed) stable/8/lib/libc/sys/ (props changed) Modified: stable/8/lib/libc/sys/lseek.2 ============================================================================== --- stable/8/lib/libc/sys/lseek.2 Tue May 29 08:53:24 2012 (r236224) +++ stable/8/lib/libc/sys/lseek.2 Tue May 29 08:56:56 2012 (r236225) @@ -28,7 +28,7 @@ .\" @(#)lseek.2 8.3 (Berkeley) 4/19/94 .\" $FreeBSD$ .\" -.Dd April 5, 2007 +.Dd May 26, 2012 .Dt LSEEK 2 .Os .Sh NAME @@ -92,9 +92,9 @@ If .Fa whence is .Dv SEEK_HOLE , -the offset of the start of the next hole greater than or equal to the supplied -.Fa offset -is returned. +the offset is set to the start of the next hole greater than or equal +to the supplied +.Fa offset . The definition of a hole is provided below. .It If From owner-svn-src-stable@FreeBSD.ORG Tue May 29 13:54:53 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C36E81065670; Tue, 29 May 2012 13:54:53 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ADB9C8FC15; Tue, 29 May 2012 13:54:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TDsrKi081119; Tue, 29 May 2012 13:54:53 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TDsrrW081116; Tue, 29 May 2012 13:54:53 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201205291354.q4TDsrrW081116@svn.freebsd.org> From: Glen Barber Date: Tue, 29 May 2012 13:54:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236232 - stable/9/share/man/man7 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 13:54:53 -0000 Author: gjb (doc committer) Date: Tue May 29 13:54:53 2012 New Revision: 236232 URL: http://svn.freebsd.org/changeset/base/236232 Log: MFC r235691: Typo and mdoc(7) style fixes. PR: 167890 Modified: stable/9/share/man/man7/c99.7 stable/9/share/man/man7/release.7 Directory Properties: stable/9/share/man/man7/ (props changed) Modified: stable/9/share/man/man7/c99.7 ============================================================================== --- stable/9/share/man/man7/c99.7 Tue May 29 12:52:30 2012 (r236231) +++ stable/9/share/man/man7/c99.7 Tue May 29 13:54:53 2012 (r236232) @@ -103,7 +103,7 @@ The ISO C standard was later extended wi ISO/IEC 9899 AM1 in 1995. This contained, for example, the wide-character support in wchar.h and wctype.h. -Two corregenda were also published: Technical Corrigendum 1 as +Two corrigenda were also published: Technical Corrigendum 1 as ISO/IEC 9899 TCOR1 in 1995 and Technical Corrigendum 2 as ISO/IEC 9899 TCOR1 in 1996. The continuous development and growth made it necessary to work out a new Modified: stable/9/share/man/man7/release.7 ============================================================================== --- stable/9/share/man/man7/release.7 Tue May 29 12:52:30 2012 (r236231) +++ stable/9/share/man/man7/release.7 Tue May 29 13:54:53 2012 (r236232) @@ -216,7 +216,7 @@ hardware guide, and installation instruc the Handbook) is built during the .Cm base.txz target invoked by -.Cm packagesystem. +.Cm packagesystem . .El .Sh ENVIRONMENT Optional variables: From owner-svn-src-stable@FreeBSD.ORG Tue May 29 14:35:52 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 929BC1065674; Tue, 29 May 2012 14:35:52 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7ABEB8FC1D; Tue, 29 May 2012 14:35:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TEZqKO084077; Tue, 29 May 2012 14:35:52 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TEZqvV084049; Tue, 29 May 2012 14:35:52 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201205291435.q4TEZqvV084049@svn.freebsd.org> From: Glen Barber Date: Tue, 29 May 2012 14:35:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236235 - stable/9/share/man/man9 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 14:35:52 -0000 Author: gjb (doc committer) Date: Tue May 29 14:35:51 2012 New Revision: 236235 URL: http://svn.freebsd.org/changeset/base/236235 Log: MFC r235693: Typo and mdoc(7) style fixes. PR: 168117 Modified: stable/9/share/man/man9/BUF_ISLOCKED.9 stable/9/share/man/man9/DB_COMMAND.9 stable/9/share/man/man9/VOP_GETEXTATTR.9 stable/9/share/man/man9/VOP_GETPAGES.9 stable/9/share/man/man9/VOP_GETVOBJECT.9 stable/9/share/man/man9/VOP_SETEXTATTR.9 stable/9/share/man/man9/acl.9 stable/9/share/man/man9/bus_generic_print_child.9 stable/9/share/man/man9/bus_release_resource.9 stable/9/share/man/man9/bus_space.9 stable/9/share/man/man9/byteorder.9 stable/9/share/man/man9/devclass_get_maxunit.9 stable/9/share/man/man9/device_find_child.9 stable/9/share/man/man9/firmware.9 stable/9/share/man/man9/hashinit.9 stable/9/share/man/man9/ieee80211_proto.9 stable/9/share/man/man9/lock.9 stable/9/share/man/man9/locking.9 stable/9/share/man/man9/mbuf.9 stable/9/share/man/man9/mod_cc.9 stable/9/share/man/man9/netisr.9 stable/9/share/man/man9/pci.9 stable/9/share/man/man9/spl.9 stable/9/share/man/man9/sysctl.9 stable/9/share/man/man9/taskqueue.9 stable/9/share/man/man9/usbdi.9 stable/9/share/man/man9/vm_page_aflag.9 Directory Properties: stable/9/share/man/man9/ (props changed) Modified: stable/9/share/man/man9/BUF_ISLOCKED.9 ============================================================================== --- stable/9/share/man/man9/BUF_ISLOCKED.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/BUF_ISLOCKED.9 Tue May 29 14:35:51 2012 (r236235) @@ -52,7 +52,7 @@ It can return: .It Dv LK_EXCLUSIVE An exclusive lock is held by curthread. .It Dv LK_EXCLOTHER -An exclusive lock is held by someone other than curthread +An exclusive lock is held by someone other than curthread. .It Dv LK_SHARED A shared lock is held. .It Li 0 Modified: stable/9/share/man/man9/DB_COMMAND.9 ============================================================================== --- stable/9/share/man/man9/DB_COMMAND.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/DB_COMMAND.9 Tue May 29 14:35:51 2012 (r236235) @@ -32,7 +32,7 @@ .Nm DB_COMMAND , .Nm DB_SHOW_COMMAND , .Nm DB_SHOW_ALL_COMMAND -.Nd Extends the ddb command set. +.Nd Extends the ddb command set .Sh SYNOPSIS .In ddb/ddb.h .Fo DB_COMMAND Modified: stable/9/share/man/man9/VOP_GETEXTATTR.9 ============================================================================== --- stable/9/share/man/man9/VOP_GETEXTATTR.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/VOP_GETEXTATTR.9 Tue May 29 14:35:51 2012 (r236235) @@ -71,7 +71,7 @@ will be .Dv NULL when .Fa size -is not, and vise versa. +is not, and vice versa. .It Fa cred The user credentials to use in authorizing the request. .It Fa td @@ -113,7 +113,7 @@ The uio structure refers to an invalid u .It Bq Er EINVAL The .Fa name , -.Fa namespace, +.Fa namespace , or .Fa uio argument is invalid. Modified: stable/9/share/man/man9/VOP_GETPAGES.9 ============================================================================== --- stable/9/share/man/man9/VOP_GETPAGES.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/VOP_GETPAGES.9 Tue May 29 14:35:51 2012 (r236235) @@ -115,7 +115,7 @@ The page could not be written because of medium or protocol. .It Dv VM_PAGER_FAIL Treated identically to -.Dv VM_PAGER_ERROR +.Dv VM_PAGER_ERROR . .It Dv VM_PAGER_AGAIN The page was not handled by this request. .El Modified: stable/9/share/man/man9/VOP_GETVOBJECT.9 ============================================================================== --- stable/9/share/man/man9/VOP_GETVOBJECT.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/VOP_GETVOBJECT.9 Tue May 29 14:35:51 2012 (r236235) @@ -53,7 +53,7 @@ The vnode of the file. The VM object being returned, or .Dv NULL if the caller wants to test for the existence -of the VM object). +of the VM object. .El .Pp .Xr VFS 9 Modified: stable/9/share/man/man9/VOP_SETEXTATTR.9 ============================================================================== --- stable/9/share/man/man9/VOP_SETEXTATTR.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/VOP_SETEXTATTR.9 Tue May 29 14:35:51 2012 (r236235) @@ -96,7 +96,7 @@ The caller does not have the appropriate The request was not valid in this file system for the specified vnode and attribute name. .It Bq Er ENOMEM -Insufficient memory available to fulfill request +Insufficient memory available to fulfill the request. .It Bq Er EFAULT The uio structure refers to an invalid userspace address. .It Bq Er EINVAL Modified: stable/9/share/man/man9/acl.9 ============================================================================== --- stable/9/share/man/man9/acl.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/acl.9 Tue May 29 14:35:51 2012 (r236235) @@ -210,7 +210,7 @@ The following values are valid: .Xr vaccess_acl_nfs4 9 , .Xr vaccess_acl_posix1e 9 , .Xr VFS 9 , -.Xr vnaccess 9 , +.Xr vaccess 9 , .Xr VOP_ACLCHECK 9 , .Xr VOP_GETACL 9 , .Xr VOP_SETACL 9 Modified: stable/9/share/man/man9/bus_generic_print_child.9 ============================================================================== --- stable/9/share/man/man9/bus_generic_print_child.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/bus_generic_print_child.9 Tue May 29 14:35:51 2012 (r236235) @@ -51,7 +51,7 @@ foo0: on bar0 bus_generic_print_child itself calls two functions .Fn bus_print_child_header and -.Fn bus_print_child_footer +.Fn bus_print_child_footer . The former prints "foo0: " and the latter "on bar0". These routines should be used if possible in your own code if .Fn bus_generic_print_child Modified: stable/9/share/man/man9/bus_release_resource.9 ============================================================================== --- stable/9/share/man/man9/bus_release_resource.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/bus_release_resource.9 Tue May 29 14:35:51 2012 (r236235) @@ -71,7 +71,7 @@ value must be the same as the one return .It .Fa r is the pointer to -.Va struct res , +.Va struct resource , i.e., the resource itself, returned by .Xr bus_alloc_resource 9 . Modified: stable/9/share/man/man9/bus_space.9 ============================================================================== --- stable/9/share/man/man9/bus_space.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/bus_space.9 Tue May 29 14:35:51 2012 (r236235) @@ -1380,7 +1380,8 @@ functions may be executed in any order. They may also be executed out of order with respect to other pending read and write operations unless order is enforced by use of the -.Fn bus_space_barrier function . +.Fn bus_space_barrier +function. There is no way to insert barriers between reads or writes of individual bus space locations executed by the .Fn bus_space_copy_region_N Modified: stable/9/share/man/man9/byteorder.9 ============================================================================== --- stable/9/share/man/man9/byteorder.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/byteorder.9 Tue May 29 14:35:51 2012 (r236235) @@ -158,7 +158,7 @@ in big/little endian format. The .Fn hto* and -.Fn toh* +.Fn *toh functions first appeared in .Fx 5.0 , and were originally developed by the Modified: stable/9/share/man/man9/devclass_get_maxunit.9 ============================================================================== --- stable/9/share/man/man9/devclass_get_maxunit.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/devclass_get_maxunit.9 Tue May 29 14:35:51 2012 (r236235) @@ -49,7 +49,7 @@ The function returns -1 if .Fa dc is -.Dv NULL; +.Dv NULL , otherwise it returns the next unit number in .Fa dc's Modified: stable/9/share/man/man9/device_find_child.9 ============================================================================== --- stable/9/share/man/man9/device_find_child.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/device_find_child.9 Tue May 29 14:35:51 2012 (r236235) @@ -41,7 +41,7 @@ .Fn device_find_child "device_t dev" "const char *classname" "int unit" .Sh DESCRIPTION This function looks for a specific child of -.Dv dev . +.Dv dev with the given .Fa classname and Modified: stable/9/share/man/man9/firmware.9 ============================================================================== --- stable/9/share/man/man9/firmware.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/firmware.9 Tue May 29 14:35:51 2012 (r236235) @@ -101,11 +101,13 @@ they want as an argument. If a matching the firmware subsystem will try to load it using the mechanisms specified below (typically, a kernel module with -.Nm the same name +.Nm +the same name as the image). .Sh API DESCRIPTION The kernel -.Nm firmware API +.Nm +firmware API is made of the following functions: .Pp .Fn firmware_register @@ -225,7 +227,7 @@ in the module, the imagename and version If you need to embed firmware images into a system, you should write appropriate entries in the file, e.g. this example is from -.Nm sys/arm/xscale/ixp425/files.ixp425: +.Nm sys/arm/xscale/ixp425/files.ixp425 : .Bd -literal ixp425_npe_fw.c optional npe_fw \\ compile-with "${AWK} -f $S/tools/fw_stub.awk \\ Modified: stable/9/share/man/man9/hashinit.9 ============================================================================== --- stable/9/share/man/man9/hashinit.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/hashinit.9 Tue May 29 14:35:51 2012 (r236235) @@ -29,7 +29,7 @@ .Dt HASHINIT 9 .Os .Sh NAME -.Nm hashinit , hashinit_flags, hashdestroy , phashinit +.Nm hashinit , hashinit_flags , hashdestroy , phashinit .Nd manage kernel hash tables .Sh SYNOPSIS .In sys/malloc.h Modified: stable/9/share/man/man9/ieee80211_proto.9 ============================================================================== --- stable/9/share/man/man9/ieee80211_proto.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/ieee80211_proto.9 Tue May 29 14:35:51 2012 (r236235) @@ -238,4 +238,4 @@ work will be initiated outside the drive The state machine concept was part of the original .Nm ieee80211 code base that first appeared in -.Nx 1.5 , +.Nx 1.5 . Modified: stable/9/share/man/man9/lock.9 ============================================================================== --- stable/9/share/man/man9/lock.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/lock.9 Tue May 29 14:35:51 2012 (r236235) @@ -230,7 +230,7 @@ and The .Fn lockmgr_disown function switches the owner from the current thread to be -.Dv LK_KERNPROC, +.Dv LK_KERNPROC , if the lock is already held. .Pp The Modified: stable/9/share/man/man9/locking.9 ============================================================================== --- stable/9/share/man/man9/locking.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/locking.9 Tue May 29 14:35:51 2012 (r236235) @@ -318,8 +318,7 @@ and reacquire it on wakeup (e.g. .Fn mtx_sleep , .Fn rw_sleep and -.Fn msleep_spin -). +.Fn msleep_spin ) . .Pp .Em *4 Though one can sleep holding an sx lock, one can also use @@ -363,6 +362,6 @@ These functions appeared in .Bsx 4.1 through -.Fx 7.0 +.Fx 7.0 . .Sh BUGS There are too many locking primitives to choose from. Modified: stable/9/share/man/man9/mbuf.9 ============================================================================== --- stable/9/share/man/man9/mbuf.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/mbuf.9 Tue May 29 14:35:51 2012 (r236235) @@ -403,7 +403,8 @@ for details. Associate externally managed data with .Fa mbuf . Any internal data contained in the mbuf will be discarded, and the -.Dv M_EXT flag will be set. +.Dv M_EXT +flag will be set. The .Fa buf and @@ -722,7 +723,8 @@ are contiguous and lay in the data area .Fa mbuf , so they are accessible with .Fn mtod mbuf type . -.Fa len must be smaller than, or equal to, the size of an +.Fa len +must be smaller than, or equal to, the size of an .Vt mbuf cluster . Return a pointer to an intermediate .Vt mbuf Modified: stable/9/share/man/man9/mod_cc.9 ============================================================================== --- stable/9/share/man/man9/mod_cc.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/mod_cc.9 Tue May 29 14:35:51 2012 (r236235) @@ -287,7 +287,7 @@ The CCF_CWND_LIMITED flag is relevant in .Va ack_received and is set when the connection's ability to send data is currently constrained by the value of the congestion window. -Algorithms should use the abscence of this flag being set to avoid accumulating +Algorithms should use the absence of this flag being set to avoid accumulating a large difference between the congestion window and send window. .Sh SEE ALSO .Xr cc_chd 4 , Modified: stable/9/share/man/man9/netisr.9 ============================================================================== --- stable/9/share/man/man9/netisr.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/netisr.9 Tue May 29 14:35:51 2012 (r236235) @@ -78,7 +78,7 @@ and may also manage queue limits and sta .Fn netisr_getqdrops , .Fn netisr_getqlimit , and -.Fn netisr_setqlimit. +.Fn netisr_setqlimit . .Pp .Nm supports multi-processor execution of handlers, and relies on a combination Modified: stable/9/share/man/man9/pci.9 ============================================================================== --- stable/9/share/man/man9/pci.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/pci.9 Tue May 29 14:35:51 2012 (r236235) @@ -439,7 +439,7 @@ The .Fn pci_count_msi function returns the maximum number of MSI messages supported by the device -.Fa dev. +.Fa dev . If the device does not support MSI, then .Fn pci_count_msi @@ -518,7 +518,8 @@ is set to the number of messages allocat returns zero. For MSI-X messages, the resource ID for each -.Dv SYS_RES_IRQ resource identifies the index in the MSI-X table of the +.Dv SYS_RES_IRQ +resource identifies the index in the MSI-X table of the corresponding message. A resource ID of one maps to the first index of the MSI-X table; a resource ID two identifies the second index in the table, etc. @@ -559,7 +560,7 @@ A driver may use a different distributio table entries via the .Fn pci_remap_msix function. -Note that this function must be called after a succesful call to +Note that this function must be called after a successful call to .Fn pci_alloc_msix but before any of the .Dv SYS_RES_IRQ @@ -600,7 +601,8 @@ above for .Fn pci_alloc_msix . MSI-X table entries that with a vector of zero will not have an associated -.Dv SYS_RES_IRQ resource. +.Dv SYS_RES_IRQ +resource. Additionally, if any of the original messages allocated by .Fn pci_alloc_msix Modified: stable/9/share/man/man9/spl.9 ============================================================================== --- stable/9/share/man/man9/spl.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/spl.9 Tue May 29 14:35:51 2012 (r236235) @@ -220,7 +220,8 @@ the system. The historical number scheme can be considered as a simple linearly ordered set of interrupt priority groups. .Pp -.Fx 5.0 eliminated spl entirely in favor of locking primitives which scale +.Fx 5.0 +eliminated spl entirely in favor of locking primitives which scale to more than one processor. .Sh AUTHORS This manual page was written by Modified: stable/9/share/man/man9/sysctl.9 ============================================================================== --- stable/9/share/man/man9/sysctl.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/sysctl.9 Tue May 29 14:35:51 2012 (r236235) @@ -107,7 +107,7 @@ This is a 64-bit signed integer. This is an opaque data structure. .It Dv CTLTYPE_STRUCT Alias for -.Dv CTLTYPE_OPAQUE. +.Dv CTLTYPE_OPAQUE . .It Dv CTLTYPE_UINT This is an unsigned integer. .It Dv CTLTYPE_LONG Modified: stable/9/share/man/man9/taskqueue.9 ============================================================================== --- stable/9/share/man/man9/taskqueue.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/taskqueue.9 Tue May 29 14:35:51 2012 (r236235) @@ -189,8 +189,8 @@ The count is cleared, and the old value returned in the reference parameter .Fa pendp , -if it is non- -.Dv NULL . +if it is +.Pf non- Dv NULL . If the task is currently running, .Dv EBUSY is returned, otherwise 0. Modified: stable/9/share/man/man9/usbdi.9 ============================================================================== --- stable/9/share/man/man9/usbdi.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/usbdi.9 Tue May 29 14:35:51 2012 (r236235) @@ -524,7 +524,7 @@ executed on the USB control endpoint. . This flag can be changed during operation. .Pp -"BOF" is short for "Block On Failure" +"BOF" is short for "Block On Failure". .Pp NOTE: This flag should be set on all BULK and INTERRUPT USB transfers which use an endpoint that can be shared between userland and kernel. Modified: stable/9/share/man/man9/vm_page_aflag.9 ============================================================================== --- stable/9/share/man/man9/vm_page_aflag.9 Tue May 29 14:28:46 2012 (r236234) +++ stable/9/share/man/man9/vm_page_aflag.9 Tue May 29 14:35:51 2012 (r236235) @@ -27,7 +27,7 @@ .\" $FreeBSD$ .\" .Dd August 31, 2011 -.Dt VM_PAGE_FLAG 9 +.Dt VM_PAGE_AFLAG 9 .Os .Sh NAME .Nm vm_page_aflag_clear , vm_page_aflag_set , vm_page_reference From owner-svn-src-stable@FreeBSD.ORG Tue May 29 14:36:08 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6FF2B1065678; Tue, 29 May 2012 14:36:08 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 58A418FC14; Tue, 29 May 2012 14:36:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TEa8vf084151; Tue, 29 May 2012 14:36:08 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TEa74R084124; Tue, 29 May 2012 14:36:07 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201205291436.q4TEa74R084124@svn.freebsd.org> From: Glen Barber Date: Tue, 29 May 2012 14:36:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236236 - stable/8/share/man/man9 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 14:36:08 -0000 Author: gjb (doc committer) Date: Tue May 29 14:36:07 2012 New Revision: 236236 URL: http://svn.freebsd.org/changeset/base/236236 Log: MFC r235693: Typo and mdoc(7) style fixes. PR: 168117 Modified: stable/8/share/man/man9/BUF_ISLOCKED.9 stable/8/share/man/man9/DB_COMMAND.9 stable/8/share/man/man9/VOP_GETEXTATTR.9 stable/8/share/man/man9/VOP_GETPAGES.9 stable/8/share/man/man9/VOP_GETVOBJECT.9 stable/8/share/man/man9/VOP_SETEXTATTR.9 stable/8/share/man/man9/acl.9 stable/8/share/man/man9/bus_generic_print_child.9 stable/8/share/man/man9/bus_release_resource.9 stable/8/share/man/man9/bus_space.9 stable/8/share/man/man9/byteorder.9 stable/8/share/man/man9/devclass_get_maxunit.9 stable/8/share/man/man9/device_find_child.9 stable/8/share/man/man9/firmware.9 stable/8/share/man/man9/hashinit.9 stable/8/share/man/man9/ieee80211_proto.9 stable/8/share/man/man9/lock.9 stable/8/share/man/man9/locking.9 stable/8/share/man/man9/mbuf.9 stable/8/share/man/man9/mod_cc.9 stable/8/share/man/man9/netisr.9 stable/8/share/man/man9/pci.9 stable/8/share/man/man9/spl.9 stable/8/share/man/man9/sysctl.9 stable/8/share/man/man9/usbdi.9 Directory Properties: stable/8/share/man/man9/ (props changed) Modified: stable/8/share/man/man9/BUF_ISLOCKED.9 ============================================================================== --- stable/8/share/man/man9/BUF_ISLOCKED.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/BUF_ISLOCKED.9 Tue May 29 14:36:07 2012 (r236236) @@ -52,7 +52,7 @@ It can return: .It Dv LK_EXCLUSIVE An exclusive lock is held by curthread. .It Dv LK_EXCLOTHER -An exclusive lock is held by someone other than curthread +An exclusive lock is held by someone other than curthread. .It Dv LK_SHARED A shared lock is held. .It Li 0 Modified: stable/8/share/man/man9/DB_COMMAND.9 ============================================================================== --- stable/8/share/man/man9/DB_COMMAND.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/DB_COMMAND.9 Tue May 29 14:36:07 2012 (r236236) @@ -32,7 +32,7 @@ .Nm DB_COMMAND , .Nm DB_SHOW_COMMAND , .Nm DB_SHOW_ALL_COMMAND -.Nd Extends the ddb command set. +.Nd Extends the ddb command set .Sh SYNOPSIS .In ddb/ddb.h .Fo DB_COMMAND Modified: stable/8/share/man/man9/VOP_GETEXTATTR.9 ============================================================================== --- stable/8/share/man/man9/VOP_GETEXTATTR.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/VOP_GETEXTATTR.9 Tue May 29 14:36:07 2012 (r236236) @@ -71,7 +71,7 @@ will be .Dv NULL when .Fa size -is not, and vise versa. +is not, and vice versa. .It Fa cred The user credentials to use in authorizing the request. .It Fa td @@ -113,7 +113,7 @@ The uio structure refers to an invalid u .It Bq Er EINVAL The .Fa name , -.Fa namespace, +.Fa namespace , or .Fa uio argument is invalid. Modified: stable/8/share/man/man9/VOP_GETPAGES.9 ============================================================================== --- stable/8/share/man/man9/VOP_GETPAGES.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/VOP_GETPAGES.9 Tue May 29 14:36:07 2012 (r236236) @@ -115,7 +115,7 @@ The page could not be written because of medium or protocol. .It Dv VM_PAGER_FAIL Treated identically to -.Dv VM_PAGER_ERROR +.Dv VM_PAGER_ERROR . .It Dv VM_PAGER_AGAIN The page was not handled by this request. .El Modified: stable/8/share/man/man9/VOP_GETVOBJECT.9 ============================================================================== --- stable/8/share/man/man9/VOP_GETVOBJECT.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/VOP_GETVOBJECT.9 Tue May 29 14:36:07 2012 (r236236) @@ -53,7 +53,7 @@ The vnode of the file. The VM object being returned, or .Dv NULL if the caller wants to test for the existence -of the VM object). +of the VM object. .El .Pp .Xr VFS 9 Modified: stable/8/share/man/man9/VOP_SETEXTATTR.9 ============================================================================== --- stable/8/share/man/man9/VOP_SETEXTATTR.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/VOP_SETEXTATTR.9 Tue May 29 14:36:07 2012 (r236236) @@ -96,7 +96,7 @@ The caller does not have the appropriate The request was not valid in this file system for the specified vnode and attribute name. .It Bq Er ENOMEM -Insufficient memory available to fulfill request +Insufficient memory available to fulfill the request. .It Bq Er EFAULT The uio structure refers to an invalid userspace address. .It Bq Er EINVAL Modified: stable/8/share/man/man9/acl.9 ============================================================================== --- stable/8/share/man/man9/acl.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/acl.9 Tue May 29 14:36:07 2012 (r236236) @@ -210,7 +210,7 @@ The following values are valid: .Xr vaccess_acl_nfs4 9 , .Xr vaccess_acl_posix1e 9 , .Xr VFS 9 , -.Xr vnaccess 9 , +.Xr vaccess 9 , .Xr VOP_ACLCHECK 9 , .Xr VOP_GETACL 9 , .Xr VOP_SETACL 9 Modified: stable/8/share/man/man9/bus_generic_print_child.9 ============================================================================== --- stable/8/share/man/man9/bus_generic_print_child.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/bus_generic_print_child.9 Tue May 29 14:36:07 2012 (r236236) @@ -51,7 +51,7 @@ foo0: on bar0 bus_generic_print_child itself calls two functions .Fn bus_print_child_header and -.Fn bus_print_child_footer +.Fn bus_print_child_footer . The former prints "foo0: " and the latter "on bar0". These routines should be used if possible in your own code if .Fn bus_generic_print_child Modified: stable/8/share/man/man9/bus_release_resource.9 ============================================================================== --- stable/8/share/man/man9/bus_release_resource.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/bus_release_resource.9 Tue May 29 14:36:07 2012 (r236236) @@ -71,7 +71,7 @@ value must be the same as the one return .It .Fa r is the pointer to -.Va struct res , +.Va struct resource , i.e., the resource itself, returned by .Xr bus_alloc_resource 9 . Modified: stable/8/share/man/man9/bus_space.9 ============================================================================== --- stable/8/share/man/man9/bus_space.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/bus_space.9 Tue May 29 14:36:07 2012 (r236236) @@ -1380,7 +1380,8 @@ functions may be executed in any order. They may also be executed out of order with respect to other pending read and write operations unless order is enforced by use of the -.Fn bus_space_barrier function . +.Fn bus_space_barrier +function. There is no way to insert barriers between reads or writes of individual bus space locations executed by the .Fn bus_space_copy_region_N Modified: stable/8/share/man/man9/byteorder.9 ============================================================================== --- stable/8/share/man/man9/byteorder.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/byteorder.9 Tue May 29 14:36:07 2012 (r236236) @@ -158,7 +158,7 @@ in big/little endian format. The .Fn hto* and -.Fn toh* +.Fn *toh functions first appeared in .Fx 5.0 , and were originally developed by the Modified: stable/8/share/man/man9/devclass_get_maxunit.9 ============================================================================== --- stable/8/share/man/man9/devclass_get_maxunit.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/devclass_get_maxunit.9 Tue May 29 14:36:07 2012 (r236236) @@ -49,7 +49,7 @@ The function returns -1 if .Fa dc is -.Dv NULL; +.Dv NULL , otherwise it returns the next unit number in .Fa dc's Modified: stable/8/share/man/man9/device_find_child.9 ============================================================================== --- stable/8/share/man/man9/device_find_child.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/device_find_child.9 Tue May 29 14:36:07 2012 (r236236) @@ -41,7 +41,7 @@ .Fn device_find_child "device_t dev" "const char *classname" "int unit" .Sh DESCRIPTION This function looks for a specific child of -.Dv dev . +.Dv dev with the given .Fa classname and Modified: stable/8/share/man/man9/firmware.9 ============================================================================== --- stable/8/share/man/man9/firmware.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/firmware.9 Tue May 29 14:36:07 2012 (r236236) @@ -101,11 +101,13 @@ they want as an argument. If a matching the firmware subsystem will try to load it using the mechanisms specified below (typically, a kernel module with -.Nm the same name +.Nm +the same name as the image). .Sh API DESCRIPTION The kernel -.Nm firmware API +.Nm +firmware API is made of the following functions: .Pp .Fn firmware_register @@ -225,7 +227,7 @@ in the module, the imagename and version If you need to embed firmware images into a system, you should write appropriate entries in the file, e.g. this example is from -.Nm sys/arm/xscale/ixp425/files.ixp425: +.Nm sys/arm/xscale/ixp425/files.ixp425 : .Bd -literal ixp425_npe_fw.c optional npe_fw \\ compile-with "${AWK} -f $S/tools/fw_stub.awk \\ Modified: stable/8/share/man/man9/hashinit.9 ============================================================================== --- stable/8/share/man/man9/hashinit.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/hashinit.9 Tue May 29 14:36:07 2012 (r236236) @@ -29,7 +29,7 @@ .Dt HASHINIT 9 .Os .Sh NAME -.Nm hashinit , hashinit_flags, hashdestroy , phashinit +.Nm hashinit , hashinit_flags , hashdestroy , phashinit .Nd manage kernel hash tables .Sh SYNOPSIS .In sys/malloc.h Modified: stable/8/share/man/man9/ieee80211_proto.9 ============================================================================== --- stable/8/share/man/man9/ieee80211_proto.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/ieee80211_proto.9 Tue May 29 14:36:07 2012 (r236236) @@ -238,4 +238,4 @@ work will be initiated outside the drive The state machine concept was part of the original .Nm ieee80211 code base that first appeared in -.Nx 1.5 , +.Nx 1.5 . Modified: stable/8/share/man/man9/lock.9 ============================================================================== --- stable/8/share/man/man9/lock.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/lock.9 Tue May 29 14:36:07 2012 (r236236) @@ -230,7 +230,7 @@ and The .Fn lockmgr_disown function switches the owner from the current thread to be -.Dv LK_KERNPROC, +.Dv LK_KERNPROC , if the lock is already held. .Pp The Modified: stable/8/share/man/man9/locking.9 ============================================================================== --- stable/8/share/man/man9/locking.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/locking.9 Tue May 29 14:36:07 2012 (r236236) @@ -318,8 +318,7 @@ and reacquire it on wakeup (e.g. .Fn mtx_sleep , .Fn rw_sleep and -.Fn msleep_spin -). +.Fn msleep_spin ) . .Pp .Em *4 Though one can sleep holding an sx lock, one can also use @@ -355,6 +354,6 @@ These functions appeared in .Bsx 4.1 through -.Fx 7.0 +.Fx 7.0 . .Sh BUGS There are too many locking primitives to choose from. Modified: stable/8/share/man/man9/mbuf.9 ============================================================================== --- stable/8/share/man/man9/mbuf.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/mbuf.9 Tue May 29 14:36:07 2012 (r236236) @@ -670,7 +670,8 @@ are contiguous and lay in the data area .Fa mbuf , so they are accessible with .Fn mtod mbuf type . -.Fa len must be smaller than, or equal to, the size of an +.Fa len +must be smaller than, or equal to, the size of an .Vt mbuf cluster . Return a pointer to an intermediate .Vt mbuf Modified: stable/8/share/man/man9/mod_cc.9 ============================================================================== --- stable/8/share/man/man9/mod_cc.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/mod_cc.9 Tue May 29 14:36:07 2012 (r236236) @@ -287,7 +287,7 @@ The CCF_CWND_LIMITED flag is relevant in .Va ack_received and is set when the connection's ability to send data is currently constrained by the value of the congestion window. -Algorithms should use the abscence of this flag being set to avoid accumulating +Algorithms should use the absence of this flag being set to avoid accumulating a large difference between the congestion window and send window. .Sh SEE ALSO .Xr cc_chd 4 , Modified: stable/8/share/man/man9/netisr.9 ============================================================================== --- stable/8/share/man/man9/netisr.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/netisr.9 Tue May 29 14:36:07 2012 (r236236) @@ -78,7 +78,7 @@ and may also manage queue limits and sta .Fn netisr_getqdrops , .Fn netisr_getqlimit , and -.Fn netisr_setqlimit. +.Fn netisr_setqlimit . .Pp .Nm supports multi-processor execution of handlers, and relies on a combination Modified: stable/8/share/man/man9/pci.9 ============================================================================== --- stable/8/share/man/man9/pci.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/pci.9 Tue May 29 14:36:07 2012 (r236236) @@ -439,7 +439,7 @@ The .Fn pci_count_msi function returns the maximum number of MSI messages supported by the device -.Fa dev. +.Fa dev . If the device does not support MSI, then .Fn pci_count_msi @@ -518,7 +518,8 @@ is set to the number of messages allocat returns zero. For MSI-X messages, the resource ID for each -.Dv SYS_RES_IRQ resource identifies the index in the MSI-X table of the +.Dv SYS_RES_IRQ +resource identifies the index in the MSI-X table of the corresponding message. A resource ID of one maps to the first index of the MSI-X table; a resource ID two identifies the second index in the table, etc. @@ -559,7 +560,7 @@ A driver may use a different distributio table entries via the .Fn pci_remap_msix function. -Note that this function must be called after a succesful call to +Note that this function must be called after a successful call to .Fn pci_alloc_msix but before any of the .Dv SYS_RES_IRQ @@ -600,7 +601,8 @@ above for .Fn pci_alloc_msix . MSI-X table entries that with a vector of zero will not have an associated -.Dv SYS_RES_IRQ resource. +.Dv SYS_RES_IRQ +resource. Additionally, if any of the original messages allocated by .Fn pci_alloc_msix Modified: stable/8/share/man/man9/spl.9 ============================================================================== --- stable/8/share/man/man9/spl.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/spl.9 Tue May 29 14:36:07 2012 (r236236) @@ -221,7 +221,8 @@ the system. The historical number scheme can be considered as a simple linearly ordered set of interrupt priority groups. .Pp -.Fx 5.0 eliminated spl entirely in favor of locking primitives which scale +.Fx 5.0 +eliminated spl entirely in favor of locking primitives which scale to more than one processor. .Sh AUTHORS This manual page was written by Modified: stable/8/share/man/man9/sysctl.9 ============================================================================== --- stable/8/share/man/man9/sysctl.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/sysctl.9 Tue May 29 14:36:07 2012 (r236236) @@ -113,7 +113,7 @@ This is a 64-bit signed integer. This is an opaque data structure. .It Dv CTLTYPE_STRUCT Alias for -.Dv CTLTYPE_OPAQUE. +.Dv CTLTYPE_OPAQUE . .It Dv CTLTYPE_UINT This is an unsigned integer. .It Dv CTLTYPE_LONG Modified: stable/8/share/man/man9/usbdi.9 ============================================================================== --- stable/8/share/man/man9/usbdi.9 Tue May 29 14:35:51 2012 (r236235) +++ stable/8/share/man/man9/usbdi.9 Tue May 29 14:36:07 2012 (r236236) @@ -525,7 +525,7 @@ executed on the USB control endpoint. . This flag can be changed during operation. .Pp -"BOF" is short for "Block On Failure" +"BOF" is short for "Block On Failure". .Pp NOTE: This flag should be set on all BULK and INTERRUPT USB transfers which use an endpoint that can be shared between userland and kernel. From owner-svn-src-stable@FreeBSD.ORG Tue May 29 14:50:23 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00CFC106564A; Tue, 29 May 2012 14:50:23 +0000 (UTC) (envelope-from fabient@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D9F908FC0A; Tue, 29 May 2012 14:50:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TEoMf9084879; Tue, 29 May 2012 14:50:22 GMT (envelope-from fabient@svn.freebsd.org) Received: (from fabient@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TEoLM7084840; Tue, 29 May 2012 14:50:21 GMT (envelope-from fabient@svn.freebsd.org) Message-Id: <201205291450.q4TEoLM7084840@svn.freebsd.org> From: Fabien Thomas Date: Tue, 29 May 2012 14:50:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236238 - in stable/9: lib/libpmc sys/amd64/amd64 sys/amd64/include sys/arm/arm sys/arm/include sys/conf sys/dev/hwpmc sys/i386/i386 sys/i386/include sys/kern sys/mips/include sys/modul... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 14:50:23 -0000 Author: fabient Date: Tue May 29 14:50:21 2012 New Revision: 236238 URL: http://svn.freebsd.org/changeset/base/236238 Log: MFC r233628, r234598, r235229, r235831, r226986. Add software PMC support. New kernel events can be added at various location for sampling or counting. This will for example allow easy system profiling whatever the processor is with known tools like pmcstat(8). Simultaneous usage of software PMC and hardware PMC is possible, for example looking at the lock acquire failure, page fault while sampling on instructions. Sponsored by: NETASQ Added: stable/9/lib/libpmc/pmc.soft.3 - copied unchanged from r233628, head/lib/libpmc/pmc.soft.3 stable/9/sys/dev/hwpmc/hwpmc_soft.c - copied unchanged from r233628, head/sys/dev/hwpmc/hwpmc_soft.c stable/9/sys/dev/hwpmc/hwpmc_soft.h - copied unchanged from r233628, head/sys/dev/hwpmc/hwpmc_soft.h Modified: stable/9/lib/libpmc/Makefile stable/9/lib/libpmc/libpmc.c stable/9/lib/libpmc/pmc.3 stable/9/lib/libpmc/pmc.atom.3 stable/9/lib/libpmc/pmc.core.3 stable/9/lib/libpmc/pmc.core2.3 stable/9/lib/libpmc/pmc.corei7.3 stable/9/lib/libpmc/pmc.corei7uc.3 stable/9/lib/libpmc/pmc.iaf.3 stable/9/lib/libpmc/pmc.k7.3 stable/9/lib/libpmc/pmc.k8.3 stable/9/lib/libpmc/pmc.p4.3 stable/9/lib/libpmc/pmc.p5.3 stable/9/lib/libpmc/pmc.p6.3 stable/9/lib/libpmc/pmc.sandybridge.3 stable/9/lib/libpmc/pmc.sandybridgeuc.3 stable/9/lib/libpmc/pmc.tsc.3 stable/9/lib/libpmc/pmc.ucf.3 stable/9/lib/libpmc/pmc.westmere.3 stable/9/lib/libpmc/pmc.westmereuc.3 stable/9/lib/libpmc/pmc.xscale.3 stable/9/lib/libpmc/pmclog.c stable/9/lib/libpmc/pmclog.h stable/9/sys/amd64/amd64/trap.c stable/9/sys/amd64/include/pmc_mdep.h stable/9/sys/arm/arm/machdep.c stable/9/sys/arm/include/pmc_mdep.h stable/9/sys/conf/files stable/9/sys/dev/hwpmc/hwpmc_amd.c stable/9/sys/dev/hwpmc/hwpmc_arm.c stable/9/sys/dev/hwpmc/hwpmc_core.c stable/9/sys/dev/hwpmc/hwpmc_intel.c stable/9/sys/dev/hwpmc/hwpmc_logging.c stable/9/sys/dev/hwpmc/hwpmc_mod.c stable/9/sys/dev/hwpmc/hwpmc_piv.c stable/9/sys/dev/hwpmc/hwpmc_powerpc.c stable/9/sys/dev/hwpmc/hwpmc_ppro.c stable/9/sys/dev/hwpmc/hwpmc_tsc.c stable/9/sys/dev/hwpmc/hwpmc_x86.c stable/9/sys/dev/hwpmc/hwpmc_xscale.c stable/9/sys/dev/hwpmc/pmc_events.h stable/9/sys/i386/i386/trap.c stable/9/sys/i386/include/pmc_mdep.h stable/9/sys/kern/kern_clock.c stable/9/sys/kern/kern_lock.c stable/9/sys/kern/kern_mutex.c stable/9/sys/kern/kern_pmc.c stable/9/sys/kern/kern_rwlock.c stable/9/sys/kern/kern_sx.c stable/9/sys/kern/subr_trap.c stable/9/sys/mips/include/pmc_mdep.h stable/9/sys/modules/hwpmc/Makefile stable/9/sys/powerpc/include/pmc_mdep.h stable/9/sys/sys/pmc.h stable/9/sys/sys/pmckern.h stable/9/sys/sys/pmclog.h stable/9/usr.sbin/pmcstat/pmcstat.c stable/9/usr.sbin/pmcstat/pmcstat_log.c Directory Properties: stable/9/lib/libpmc/ (props changed) stable/9/sys/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/modules/ (props changed) stable/9/usr.sbin/pmcstat/ (props changed) Modified: stable/9/lib/libpmc/Makefile ============================================================================== --- stable/9/lib/libpmc/Makefile Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/Makefile Tue May 29 14:50:21 2012 (r236238) @@ -20,6 +20,7 @@ MAN+= pmc_read.3 MAN+= pmc_set.3 MAN+= pmc_start.3 MAN+= pmclog.3 +MAN+= pmc.soft.3 # PMC-dependent manual pages .if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" Modified: stable/9/lib/libpmc/libpmc.c ============================================================================== --- stable/9/lib/libpmc/libpmc.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/libpmc.c Tue May 29 14:50:21 2012 (r236238) @@ -77,11 +77,12 @@ static int tsc_allocate_pmc(enum pmc_eve static int xscale_allocate_pmc(enum pmc_event _pe, char *_ctrspec, struct pmc_op_pmcallocate *_pmc_config); #endif - #if defined(__mips__) static int mips24k_allocate_pmc(enum pmc_event _pe, char* ctrspec, struct pmc_op_pmcallocate *_pmc_config); #endif /* __mips__ */ +static int soft_allocate_pmc(enum pmc_event _pe, char *_ctrspec, + struct pmc_op_pmcallocate *_pmc_config); #if defined(__powerpc__) static int ppc7450_allocate_pmc(enum pmc_event _pe, char* ctrspec, @@ -155,6 +156,8 @@ PMC_CLASSDEP_TABLE(mips24k, MIPS24K); PMC_CLASSDEP_TABLE(ucf, UCF); PMC_CLASSDEP_TABLE(ppc7450, PPC7450); +static struct pmc_event_descr soft_event_table[PMC_EV_DYN_COUNT]; + #undef __PMC_EV_ALIAS #define __PMC_EV_ALIAS(N,CODE) { N, PMC_EV_##CODE }, @@ -214,20 +217,21 @@ static const struct pmc_event_descr west PMC_CLASS_##C, __VA_ARGS__ \ } -PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC); -PMC_MDEP_TABLE(core, IAP, PMC_CLASS_TSC); -PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC); -PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); -PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); -PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); -PMC_MDEP_TABLE(k7, K7, PMC_CLASS_TSC); -PMC_MDEP_TABLE(k8, K8, PMC_CLASS_TSC); -PMC_MDEP_TABLE(p4, P4, PMC_CLASS_TSC); -PMC_MDEP_TABLE(p5, P5, PMC_CLASS_TSC); -PMC_MDEP_TABLE(p6, P6, PMC_CLASS_TSC); -PMC_MDEP_TABLE(xscale, XSCALE, PMC_CLASS_XSCALE); -PMC_MDEP_TABLE(mips24k, MIPS24K, PMC_CLASS_MIPS24K); -PMC_MDEP_TABLE(ppc7450, PPC7450, PMC_CLASS_PPC7450); +PMC_MDEP_TABLE(atom, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); +PMC_MDEP_TABLE(core, IAP, PMC_CLASS_SOFT, PMC_CLASS_TSC); +PMC_MDEP_TABLE(core2, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); +PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); +PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); +PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); +PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC); +PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC); +PMC_MDEP_TABLE(p4, P4, PMC_CLASS_SOFT, PMC_CLASS_TSC); +PMC_MDEP_TABLE(p5, P5, PMC_CLASS_SOFT, PMC_CLASS_TSC); +PMC_MDEP_TABLE(p6, P6, PMC_CLASS_SOFT, PMC_CLASS_TSC); +PMC_MDEP_TABLE(xscale, XSCALE, PMC_CLASS_SOFT, PMC_CLASS_XSCALE); +PMC_MDEP_TABLE(mips24k, MIPS24K, PMC_CLASS_SOFT, PMC_CLASS_MIPS24K); +PMC_MDEP_TABLE(ppc7450, PPC7450, PMC_CLASS_SOFT, PMC_CLASS_PPC7450); +PMC_MDEP_TABLE(generic, SOFT, PMC_CLASS_SOFT); static const struct pmc_event_descr tsc_event_table[] = { @@ -277,15 +281,23 @@ PMC_CLASS_TABLE_DESC(tsc, TSC, tsc, tsc) #if defined(__XSCALE__) PMC_CLASS_TABLE_DESC(xscale, XSCALE, xscale, xscale); #endif - #if defined(__mips__) PMC_CLASS_TABLE_DESC(mips24k, MIPS24K, mips24k, mips24k); #endif /* __mips__ */ - #if defined(__powerpc__) PMC_CLASS_TABLE_DESC(ppc7450, PPC7450, ppc7450, ppc7450); #endif +static struct pmc_class_descr soft_class_table_descr = +{ + .pm_evc_name = "SOFT-", + .pm_evc_name_size = sizeof("SOFT-") - 1, + .pm_evc_class = PMC_CLASS_SOFT, + .pm_evc_event_table = NULL, + .pm_evc_event_table_size = 0, + .pm_evc_allocate_pmc = soft_allocate_pmc +}; + #undef PMC_CLASS_TABLE_DESC static const struct pmc_class_descr **pmc_class_table; @@ -340,9 +352,12 @@ static const char * pmc_state_names[] = __PMC_STATES() }; -static int pmc_syscall = -1; /* filled in by pmc_init() */ - -static struct pmc_cpuinfo cpu_info; /* filled in by pmc_init() */ +/* + * Filled in by pmc_init(). + */ +static int pmc_syscall = -1; +static struct pmc_cpuinfo cpu_info; +static struct pmc_op_getdyneventinfo soft_event_info; /* Event masks for events */ struct pmc_masks { @@ -2176,6 +2191,25 @@ tsc_allocate_pmc(enum pmc_event pe, char } #endif +static struct pmc_event_alias generic_aliases[] = { + EV_ALIAS("instructions", "SOFT-CLOCK.HARD"), + EV_ALIAS(NULL, NULL) +}; + +static int +soft_allocate_pmc(enum pmc_event pe, char *ctrspec, + struct pmc_op_pmcallocate *pmc_config) +{ + (void)ctrspec; + (void)pmc_config; + + if (pe < PMC_EV_SOFT_FIRST || pe > PMC_EV_SOFT_LAST) + return (-1); + + pmc_config->pm_caps |= (PMC_CAP_READ | PMC_CAP_WRITE); + return (0); +} + #if defined(__XSCALE__) static struct pmc_event_alias xscale_aliases[] = { @@ -2648,6 +2682,10 @@ pmc_event_names_of_class(enum pmc_class ev = ppc7450_event_table; count = PMC_EVENT_TABLE_SIZE(ppc7450); break; + case PMC_CLASS_SOFT: + ev = soft_event_table; + count = soft_event_info.pm_nevent; + break; default: errno = EINVAL; return (-1); @@ -2661,6 +2699,7 @@ pmc_event_names_of_class(enum pmc_class for (;count--; ev++, names++) *names = ev->pm_ev_name; + return (0); } @@ -2765,11 +2804,34 @@ pmc_init(void) pmc_class_table[n] = NULL; /* + * Get soft events list. + */ + soft_event_info.pm_class = PMC_CLASS_SOFT; + if (PMC_CALL(GETDYNEVENTINFO, &soft_event_info) < 0) + return (pmc_syscall = -1); + + /* Map soft events to static list. */ + for (n = 0; n < soft_event_info.pm_nevent; n++) { + soft_event_table[n].pm_ev_name = + soft_event_info.pm_events[n].pm_ev_name; + soft_event_table[n].pm_ev_code = + soft_event_info.pm_events[n].pm_ev_code; + } + soft_class_table_descr.pm_evc_event_table_size = \ + soft_event_info.pm_nevent; + soft_class_table_descr.pm_evc_event_table = \ + soft_event_table; + + /* * Fill in the class table. */ n = 0; + + /* Fill soft events information. */ + pmc_class_table[n++] = &soft_class_table_descr; #if defined(__amd64__) || defined(__i386__) - pmc_class_table[n++] = &tsc_class_table_descr; + if (cpu_info.pm_cputype != PMC_CPU_GENERIC) + pmc_class_table[n++] = &tsc_class_table_descr; /* * Check if this CPU has fixed function counters. @@ -2852,6 +2914,9 @@ pmc_init(void) pmc_class_table[n] = &p4_class_table_descr; break; #endif + case PMC_CPU_GENERIC: + PMC_MDEP_INIT(generic); + break; #if defined(__XSCALE__) case PMC_CPU_INTEL_XSCALE: PMC_MDEP_INIT(xscale); @@ -3016,15 +3081,16 @@ _pmc_name_of_event(enum pmc_event pe, en evfence = xscale_event_table + PMC_EVENT_TABLE_SIZE(xscale); } else if (pe >= PMC_EV_MIPS24K_FIRST && pe <= PMC_EV_MIPS24K_LAST) { ev = mips24k_event_table; - evfence = mips24k_event_table + PMC_EVENT_TABLE_SIZE(mips24k -); + evfence = mips24k_event_table + PMC_EVENT_TABLE_SIZE(mips24k); } else if (pe >= PMC_EV_PPC7450_FIRST && pe <= PMC_EV_PPC7450_LAST) { ev = ppc7450_event_table; - evfence = ppc7450_event_table + PMC_EVENT_TABLE_SIZE(ppc7450 -); + evfence = ppc7450_event_table + PMC_EVENT_TABLE_SIZE(ppc7450); } else if (pe == PMC_EV_TSC_TSC) { ev = tsc_event_table; evfence = tsc_event_table + PMC_EVENT_TABLE_SIZE(tsc); + } else if (pe >= PMC_EV_SOFT_FIRST && pe <= PMC_EV_SOFT_LAST) { + ev = soft_event_table; + evfence = soft_event_table + soft_event_info.pm_nevent; } for (; ev != evfence; ev++) Modified: stable/9/lib/libpmc/pmc.3 ============================================================================== --- stable/9/lib/libpmc/pmc.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.3 Tue May 29 14:50:21 2012 (r236238) @@ -223,6 +223,8 @@ and CPUs. .It Li PMC_CLASS_TSC The timestamp counter on i386 and amd64 architecture CPUs. +.It Li PMC_CLASS_SOFT +Software events. .El .Ss PMC Capabilities .Pp @@ -526,6 +528,7 @@ API is .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 , Modified: stable/9/lib/libpmc/pmc.atom.3 ============================================================================== --- stable/9/lib/libpmc/pmc.atom.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.atom.3 Tue May 29 14:50:21 2012 (r236238) @@ -1176,6 +1176,7 @@ and the underlying hardware events used .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.core.3 ============================================================================== --- stable/9/lib/libpmc/pmc.core.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.core.3 Tue May 29 14:50:21 2012 (r236238) @@ -792,6 +792,7 @@ may not count some transitions. .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 Modified: stable/9/lib/libpmc/pmc.core2.3 ============================================================================== --- stable/9/lib/libpmc/pmc.core2.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.core2.3 Tue May 29 14:50:21 2012 (r236238) @@ -1107,6 +1107,7 @@ and the underlying hardware events used. .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.corei7.3 ============================================================================== --- stable/9/lib/libpmc/pmc.corei7.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.corei7.3 Tue May 29 14:50:21 2012 (r236238) @@ -1559,6 +1559,7 @@ Counts number of segment register loads. .Xr pmc.corei7uc 3 , .Xr pmc.westmere 3 , .Xr pmc.westmereuc 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.corei7uc.3 ============================================================================== --- stable/9/lib/libpmc/pmc.corei7uc.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.corei7uc.3 Tue May 29 14:50:21 2012 (r236238) @@ -863,6 +863,7 @@ refreshed or needs to go into a power do .Xr pmc.corei7 3 , .Xr pmc.westmere 3 , .Xr pmc.westmereuc 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.iaf.3 ============================================================================== --- stable/9/lib/libpmc/pmc.iaf.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.iaf.3 Tue May 29 14:50:21 2012 (r236238) @@ -132,6 +132,7 @@ CPU, use the event specifier .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.k7.3 ============================================================================== --- stable/9/lib/libpmc/pmc.k7.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.k7.3 Tue May 29 14:50:21 2012 (r236238) @@ -250,6 +250,7 @@ and the underlying hardware events used. .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 Modified: stable/9/lib/libpmc/pmc.k8.3 ============================================================================== --- stable/9/lib/libpmc/pmc.k8.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.k8.3 Tue May 29 14:50:21 2012 (r236238) @@ -784,6 +784,7 @@ and the underlying hardware events used. .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 Modified: stable/9/lib/libpmc/pmc.p4.3 ============================================================================== --- stable/9/lib/libpmc/pmc.p4.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.p4.3 Tue May 29 14:50:21 2012 (r236238) @@ -1209,6 +1209,7 @@ and the underlying hardware events used. .Xr pmc.k8 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 Modified: stable/9/lib/libpmc/pmc.p5.3 ============================================================================== --- stable/9/lib/libpmc/pmc.p5.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.p5.3 Tue May 29 14:50:21 2012 (r236238) @@ -444,6 +444,7 @@ and the underlying hardware events used. .Xr pmc.k8 3 , .Xr pmc.p4 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 Modified: stable/9/lib/libpmc/pmc.p6.3 ============================================================================== --- stable/9/lib/libpmc/pmc.p6.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.p6.3 Tue May 29 14:50:21 2012 (r236238) @@ -1010,6 +1010,7 @@ and the underlying hardware events used. .Xr pmc.k8 3 , .Xr pmc.p4 3 , .Xr pmc.p5 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmclog 3 , .Xr hwpmc 4 Modified: stable/9/lib/libpmc/pmc.sandybridge.3 ============================================================================== --- stable/9/lib/libpmc/pmc.sandybridge.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.sandybridge.3 Tue May 29 14:50:21 2012 (r236238) @@ -907,6 +907,7 @@ Split locks in SQ. .Xr pmc.p5 3 , .Xr pmc.p6 3 , .Xr pmc.sandybridgeuc 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc.ucf 3 , .Xr pmc.westmere 3 , Modified: stable/9/lib/libpmc/pmc.sandybridgeuc.3 ============================================================================== --- stable/9/lib/libpmc/pmc.sandybridgeuc.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.sandybridgeuc.3 Tue May 29 14:50:21 2012 (r236238) @@ -208,6 +208,7 @@ Counts the number of core-outgoing entri .Xr pmc.p5 3 , .Xr pmc.p6 3 , .Xr pmc.sandybridge 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc.ucf 3 , .Xr pmc.westmere 3 , Copied: stable/9/lib/libpmc/pmc.soft.3 (from r233628, head/lib/libpmc/pmc.soft.3) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/lib/libpmc/pmc.soft.3 Tue May 29 14:50:21 2012 (r236238, copy of r233628, head/lib/libpmc/pmc.soft.3) @@ -0,0 +1,104 @@ +.\" Copyright (c) 2012 Fabien Thomas. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd March 28, 2012 +.Os +.Dt PMC.SOFT 3 +.Sh NAME +.Nm pmc.soft +.Nd measurements using software based events +.Sh LIBRARY +.Lb libpmc +.Sh SYNOPSIS +.In pmc.h +.Sh DESCRIPTION +Software events are used to collect various source of software events. +.Ss PMC Features +16 sampling counters using software events based on various sources. +These PMCs support the following capabilities: +.Bl -column "PMC_CAP_INTERRUPT" "Support" +.It Em Capability Ta Em Support +.It PMC_CAP_CASCADE Ta \&No +.It PMC_CAP_EDGE Ta \&No +.It PMC_CAP_INTERRUPT Ta Yes +.It PMC_CAP_INVERT Ta \&No +.It PMC_CAP_READ Ta Yes +.It PMC_CAP_PRECISE Ta \&No +.It PMC_CAP_SYSTEM Ta Yes +.It PMC_CAP_TAGGING Ta \&No +.It PMC_CAP_THRESHOLD Ta \&No +.It PMC_CAP_USER Ta Yes +.It PMC_CAP_WRITE Ta Yes +.El +.Ss Event Qualifiers +There is no supported event qualifier. +.Pp +The event specifiers supported by software are: +.Bl -tag -width indent +.It Li CLOCK.HARD +Hard clock ticks. +.It Li CLOCK.STAT +Stat clock ticks. +.It Li LOCK.FAILED +Lock acquisition failed. +.It Li PAGE_FAULT.ALL +All page fault type. +.It Li PAGE_FAULT.READ +Read page fault. +.It Li PAGE_FAULT.WRITE +Write page fault. +.El +.Sh SEE ALSO +.Xr pmc 3 , +.Xr pmc.atom 3 , +.Xr pmc.core 3 , +.Xr pmc.iaf 3 , +.Xr pmc.ucf 3 , +.Xr pmc.k7 3 , +.Xr pmc.k8 3 , +.Xr pmc.p4 3 , +.Xr pmc.p5 3 , +.Xr pmc.p6 3 , +.Xr pmc.corei7 3 , +.Xr pmc.corei7uc 3 , +.Xr pmc.westmereuc 3 , +.Xr pmc.tsc 3 , +.Xr pmc_cpuinfo 3 , +.Xr pmclog 3 , +.Xr hwpmc 4 +.Sh HISTORY +The +.Nm pmc +library first appeared in +.Fx 6.0 . +.Sh AUTHORS +The +.Lb libpmc +library was written by +.An "Joseph Koshy" +.Aq jkoshy@FreeBSD.org . +Software PMC was written by +.An "Fabien Thomas" +.Aq fabient@FreeBSD.org . Modified: stable/9/lib/libpmc/pmc.tsc.3 ============================================================================== --- stable/9/lib/libpmc/pmc.tsc.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.tsc.3 Tue May 29 14:50:21 2012 (r236238) @@ -68,6 +68,7 @@ maps to the TSC. .Xr pmc.p4 3 , .Xr pmc.p5 3 , .Xr pmc.p6 3 , +.Xr pmc.soft 3 , .Xr pmclog 3 , .Xr hwpmc 4 .Sh HISTORY Modified: stable/9/lib/libpmc/pmc.ucf.3 ============================================================================== --- stable/9/lib/libpmc/pmc.ucf.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.ucf.3 Tue May 29 14:50:21 2012 (r236238) @@ -96,6 +96,7 @@ offset C0H under device number 0 and Fun .Xr pmc.corei7uc 3 , .Xr pmc.westmere 3 , .Xr pmc.westmereuc 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.westmere.3 ============================================================================== --- stable/9/lib/libpmc/pmc.westmere.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.westmere.3 Tue May 29 14:50:21 2012 (r236238) @@ -1381,6 +1381,7 @@ Counts number of SID integer 64 bit shif .Xr pmc.corei7 3 , .Xr pmc.corei7uc 3 , .Xr pmc.westmereuc 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.westmereuc.3 ============================================================================== --- stable/9/lib/libpmc/pmc.westmereuc.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.westmereuc.3 Tue May 29 14:50:21 2012 (r236238) @@ -1066,6 +1066,7 @@ disabled. .Xr pmc.corei7 3 , .Xr pmc.corei7uc 3 , .Xr pmc.westmere 3 , +.Xr pmc.soft 3 , .Xr pmc.tsc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , Modified: stable/9/lib/libpmc/pmc.xscale.3 ============================================================================== --- stable/9/lib/libpmc/pmc.xscale.3 Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmc.xscale.3 Tue May 29 14:50:21 2012 (r236238) @@ -134,6 +134,7 @@ and the underlying hardware events used. .Xr pmc 3 , .Xr pmc_cpuinfo 3 , .Xr pmclog 3 , +.Xr pmc.soft 3 , .Xr hwpmc 4 .Sh HISTORY The Modified: stable/9/lib/libpmc/pmclog.c ============================================================================== --- stable/9/lib/libpmc/pmclog.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmclog.c Tue May 29 14:50:21 2012 (r236238) @@ -369,6 +369,12 @@ pmclog_get_event(void *cookie, char **da == NULL) goto error; break; + case PMCLOG_TYPE_PMCALLOCATEDYN: + PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_pmcid); + PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_event); + PMCLOG_READ32(le,ev->pl_u.pl_ad.pl_flags); + PMCLOG_READSTRING(le,ev->pl_u.pl_ad.pl_evname,PMC_NAME_MAX); + break; case PMCLOG_TYPE_PMCATTACH: PMCLOG_GET_PATHLEN(pathlen,evlen,pmclog_pmcattach); PMCLOG_READ32(le,ev->pl_u.pl_t.pl_pmcid); Modified: stable/9/lib/libpmc/pmclog.h ============================================================================== --- stable/9/lib/libpmc/pmclog.h Tue May 29 14:41:16 2012 (r236237) +++ stable/9/lib/libpmc/pmclog.h Tue May 29 14:50:21 2012 (r236238) @@ -88,6 +88,13 @@ struct pmclog_ev_pmcallocate { pmc_id_t pl_pmcid; }; +struct pmclog_ev_pmcallocatedyn { + uint32_t pl_event; + char pl_evname[PMC_NAME_MAX]; + uint32_t pl_flags; + pmc_id_t pl_pmcid; +}; + struct pmclog_ev_pmcattach { pmc_id_t pl_pmcid; pid_t pl_pid; @@ -146,6 +153,7 @@ struct pmclog_ev { struct pmclog_ev_map_out pl_mo; struct pmclog_ev_pcsample pl_s; struct pmclog_ev_pmcallocate pl_a; + struct pmclog_ev_pmcallocatedyn pl_ad; struct pmclog_ev_pmcattach pl_t; struct pmclog_ev_pmcdetach pl_d; struct pmclog_ev_proccsw pl_c; Modified: stable/9/sys/amd64/amd64/trap.c ============================================================================== --- stable/9/sys/amd64/amd64/trap.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/amd64/amd64/trap.c Tue May 29 14:50:21 2012 (r236238) @@ -71,6 +71,9 @@ __FBSDID("$FreeBSD$"); #include #ifdef HWPMC_HOOKS #include +PMC_SOFT_DEFINE( , , page_fault, all); +PMC_SOFT_DEFINE( , , page_fault, read); +PMC_SOFT_DEFINE( , , page_fault, write); #endif #include @@ -746,8 +749,20 @@ trap_pfault(frame, usermode) */ rv = vm_fault(map, va, ftype, VM_FAULT_NORMAL); } - if (rv == KERN_SUCCESS) + if (rv == KERN_SUCCESS) { +#ifdef HWPMC_HOOKS + if (ftype == VM_PROT_READ || ftype == VM_PROT_WRITE) { + PMC_SOFT_CALL_TF( , , page_fault, all, frame); + if (ftype == VM_PROT_READ) + PMC_SOFT_CALL_TF( , , page_fault, read, + frame); + else + PMC_SOFT_CALL_TF( , , page_fault, write, + frame); + } +#endif return (0); + } nogo: if (!usermode) { if (td->td_intr_nesting_level == 0 && Modified: stable/9/sys/amd64/include/pmc_mdep.h ============================================================================== --- stable/9/sys/amd64/include/pmc_mdep.h Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/amd64/include/pmc_mdep.h Tue May 29 14:50:21 2012 (r236238) @@ -50,13 +50,13 @@ struct pmc_mdep; * measurement architecture have PMCs of the following classes: TSC, * IAF, IAP, UCF and UCP. */ -#define PMC_MDEP_CLASS_INDEX_TSC 0 -#define PMC_MDEP_CLASS_INDEX_K8 1 -#define PMC_MDEP_CLASS_INDEX_P4 1 -#define PMC_MDEP_CLASS_INDEX_IAP 1 -#define PMC_MDEP_CLASS_INDEX_IAF 2 -#define PMC_MDEP_CLASS_INDEX_UCP 3 -#define PMC_MDEP_CLASS_INDEX_UCF 4 +#define PMC_MDEP_CLASS_INDEX_TSC 1 +#define PMC_MDEP_CLASS_INDEX_K8 2 +#define PMC_MDEP_CLASS_INDEX_P4 2 +#define PMC_MDEP_CLASS_INDEX_IAP 2 +#define PMC_MDEP_CLASS_INDEX_IAF 3 +#define PMC_MDEP_CLASS_INDEX_UCP 4 +#define PMC_MDEP_CLASS_INDEX_UCF 5 /* * On the amd64 platform we support the following PMCs. @@ -119,6 +119,15 @@ union pmc_md_pmc { #define PMC_IN_USERSPACE(va) ((va) <= VM_MAXUSER_ADDRESS) +/* Build a fake kernel trapframe from current instruction pointer. */ +#define PMC_FAKE_TRAPFRAME(TF) \ + do { \ + (TF)->tf_cs = 0; (TF)->tf_rflags = 0; \ + __asm __volatile("movq %%rbp,%0" : "=r" ((TF)->tf_rbp)); \ + __asm __volatile("movq %%rsp,%0" : "=r" ((TF)->tf_rsp)); \ + __asm __volatile("call 1f \n\t1: pop %0" : "=r"((TF)->tf_rip)); \ + } while (0) + /* * Prototypes */ Modified: stable/9/sys/arm/arm/machdep.c ============================================================================== --- stable/9/sys/arm/arm/machdep.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/arm/arm/machdep.c Tue May 29 14:50:21 2012 (r236238) @@ -674,9 +674,9 @@ fake_preload_metadata(void) static uint32_t fake_preload[35]; fake_preload[i++] = MODINFO_NAME; - fake_preload[i++] = strlen("elf kernel") + 1; - strcpy((char*)&fake_preload[i++], "elf kernel"); - i += 2; + fake_preload[i++] = strlen("kernel") + 1; + strcpy((char*)&fake_preload[i++], "kernel"); + i += 1; fake_preload[i++] = MODINFO_TYPE; fake_preload[i++] = strlen("elf kernel") + 1; strcpy((char*)&fake_preload[i++], "elf kernel"); Modified: stable/9/sys/arm/include/pmc_mdep.h ============================================================================== --- stable/9/sys/arm/include/pmc_mdep.h Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/arm/include/pmc_mdep.h Tue May 29 14:50:21 2012 (r236238) @@ -29,7 +29,7 @@ #ifndef _MACHINE_PMC_MDEP_H_ #define _MACHINE_PMC_MDEP_H_ -#define PMC_MDEP_CLASS_INDEX_XSCALE 0 +#define PMC_MDEP_CLASS_INDEX_XSCALE 1 /* * On the ARM platform we support the following PMCs. * @@ -54,6 +54,12 @@ union pmc_md_pmc { #define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_usr_lr) #define PMC_TRAPFRAME_TO_SP(TF) ((TF)->tf_usr_sp) +/* Build a fake kernel trapframe from current instruction pointer. */ +#define PMC_FAKE_TRAPFRAME(TF) \ + do { \ + __asm __volatile("mov %0, pc" : "=r" ((TF)->tf_pc)); \ + } while (0) + /* * Prototypes */ Modified: stable/9/sys/conf/files ============================================================================== --- stable/9/sys/conf/files Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/conf/files Tue May 29 14:50:21 2012 (r236238) @@ -1121,6 +1121,7 @@ dev/hme/if_hme_sbus.c optional hme sbus dev/hptiop/hptiop.c optional hptiop scbus dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc +dev/hwpmc/hwpmc_soft.c optional hwpmc dev/ichsmb/ichsmb.c optional ichsmb dev/ichsmb/ichsmb_pci.c optional ichsmb pci dev/ida/ida.c optional ida Modified: stable/9/sys/dev/hwpmc/hwpmc_amd.c ============================================================================== --- stable/9/sys/dev/hwpmc/hwpmc_amd.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/dev/hwpmc/hwpmc_amd.c Tue May 29 14:50:21 2012 (r236238) @@ -687,7 +687,8 @@ amd_intr(int cpu, struct trapframe *tf) wrmsr(perfctr, AMD_RELOAD_COUNT_TO_PERFCTR_VALUE(v)); /* Restart the counter if logging succeeded. */ - error = pmc_process_interrupt(cpu, pm, tf, TRAPF_USERMODE(tf)); + error = pmc_process_interrupt(cpu, PMC_HR, pm, tf, + TRAPF_USERMODE(tf)); if (error == 0) wrmsr(evsel, config | AMD_PMC_ENABLE); } @@ -874,7 +875,7 @@ amd_pcpu_fini(struct pmc_mdep *md, int c struct pmc_mdep * pmc_amd_initialize(void) { - int classindex, error, i, nclasses, ncpus; + int classindex, error, i, ncpus; struct pmc_classdep *pcd; enum pmc_cputype cputype; struct pmc_mdep *pmc_mdep; @@ -926,12 +927,9 @@ pmc_amd_initialize(void) * These processors have two classes of PMCs: the TSC and * programmable PMCs. */ - nclasses = 2; - pmc_mdep = malloc(sizeof(struct pmc_mdep) + nclasses * sizeof (struct pmc_classdep), - M_PMC, M_WAITOK|M_ZERO); + pmc_mdep = pmc_mdep_alloc(2); pmc_mdep->pmd_cputype = cputype; - pmc_mdep->pmd_nclass = nclasses; ncpus = pmc_cpu_max(); Modified: stable/9/sys/dev/hwpmc/hwpmc_arm.c ============================================================================== --- stable/9/sys/dev/hwpmc/hwpmc_arm.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/dev/hwpmc/hwpmc_arm.c Tue May 29 14:50:21 2012 (r236238) @@ -38,38 +38,47 @@ __FBSDID("$FreeBSD$"); struct pmc_mdep * pmc_md_initialize() { +#ifdef CPU_XSCALE_IXP425 if (cpu_class == CPU_CLASS_XSCALE) return pmc_xscale_initialize(); else +#endif return NULL; } void pmc_md_finalize(struct pmc_mdep *md) { +#ifdef CPU_XSCALE_IXP425 if (cpu_class == CPU_CLASS_XSCALE) pmc_xscale_finalize(md); else KASSERT(0, ("[arm,%d] Unknown CPU Class 0x%x", __LINE__, cpu_class)); +#endif +} + +static int +pmc_save_callchain(uintptr_t *cc, int maxsamples, + struct trapframe *tf) +{ + + *cc = PMC_TRAPFRAME_TO_PC(tf); + return (1); } int pmc_save_kernel_callchain(uintptr_t *cc, int maxsamples, struct trapframe *tf) { - (void) cc; - (void) maxsamples; - (void) tf; - return (0); + + return pmc_save_callchain(cc, maxsamples, tf); } int pmc_save_user_callchain(uintptr_t *cc, int maxsamples, struct trapframe *tf) { - (void) cc; - (void) maxsamples; - (void) tf; - return (0); + + return pmc_save_callchain(cc, maxsamples, tf); } Modified: stable/9/sys/dev/hwpmc/hwpmc_core.c ============================================================================== --- stable/9/sys/dev/hwpmc/hwpmc_core.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/dev/hwpmc/hwpmc_core.c Tue May 29 14:50:21 2012 (r236238) @@ -2239,7 +2239,7 @@ core_intr(int cpu, struct trapframe *tf) if (pm->pm_state != PMC_STATE_RUNNING) continue; - error = pmc_process_interrupt(cpu, pm, tf, + error = pmc_process_interrupt(cpu, PMC_HR, pm, tf, TRAPF_USERMODE(tf)); v = pm->pm_sc.pm_reloadcount; @@ -2326,7 +2326,7 @@ core2_intr(int cpu, struct trapframe *tf !PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm))) continue; - error = pmc_process_interrupt(cpu, pm, tf, + error = pmc_process_interrupt(cpu, PMC_HR, pm, tf, TRAPF_USERMODE(tf)); if (error) intrenable &= ~flag; @@ -2354,7 +2354,7 @@ core2_intr(int cpu, struct trapframe *tf !PMC_IS_SAMPLING_MODE(PMC_TO_MODE(pm))) continue; - error = pmc_process_interrupt(cpu, pm, tf, + error = pmc_process_interrupt(cpu, PMC_HR, pm, tf, TRAPF_USERMODE(tf)); if (error) intrenable &= ~flag; Modified: stable/9/sys/dev/hwpmc/hwpmc_intel.c ============================================================================== --- stable/9/sys/dev/hwpmc/hwpmc_intel.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/dev/hwpmc/hwpmc_intel.c Tue May 29 14:50:21 2012 (r236238) @@ -162,12 +162,10 @@ pmc_intel_initialize(void) return (NULL); } - pmc_mdep = malloc(sizeof(struct pmc_mdep) + nclasses * - sizeof(struct pmc_classdep), M_PMC, M_WAITOK|M_ZERO); + /* Allocate base class and initialize machine dependent struct */ + pmc_mdep = pmc_mdep_alloc(nclasses); pmc_mdep->pmd_cputype = cputype; - pmc_mdep->pmd_nclass = nclasses; - pmc_mdep->pmd_switch_in = intel_switch_in; pmc_mdep->pmd_switch_out = intel_switch_out; @@ -198,10 +196,6 @@ pmc_intel_initialize(void) case PMC_CPU_INTEL_PIV: error = pmc_p4_initialize(pmc_mdep, ncpus); - - KASSERT(pmc_mdep->pmd_npmc == TSC_NPMCS + P4_NPMCS, - ("[intel,%d] incorrect npmc count %d", __LINE__, - pmc_mdep->pmd_npmc)); break; #endif @@ -216,10 +210,6 @@ pmc_intel_initialize(void) case PMC_CPU_INTEL_PIII: case PMC_CPU_INTEL_PM: error = pmc_p6_initialize(pmc_mdep, ncpus); - - KASSERT(pmc_mdep->pmd_npmc == TSC_NPMCS + P6_NPMCS, - ("[intel,%d] incorrect npmc count %d", __LINE__, - pmc_mdep->pmd_npmc)); break; /* @@ -228,10 +218,6 @@ pmc_intel_initialize(void) case PMC_CPU_INTEL_P5: error = pmc_p5_initialize(pmc_mdep, ncpus); - - KASSERT(pmc_mdep->pmd_npmc == TSC_NPMCS + PENTIUM_NPMCS, - ("[intel,%d] incorrect npmc count %d", __LINE__, - pmc_mdep->pmd_npmc)); break; #endif Modified: stable/9/sys/dev/hwpmc/hwpmc_logging.c ============================================================================== --- stable/9/sys/dev/hwpmc/hwpmc_logging.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/dev/hwpmc/hwpmc_logging.c Tue May 29 14:50:21 2012 (r236238) @@ -129,6 +129,7 @@ static struct mtx pmc_kthread_mtx; /* sl /* Emit a string. Caution: does NOT update _le, so needs to be last */ #define PMCLOG_EMITSTRING(S,L) do { bcopy((S), _le, (L)); } while (0) +#define PMCLOG_EMITNULLSTRING(L) do { bzero(_le, (L)); } while (0) #define PMCLOG_DESPATCH(PO) \ pmclog_release((PO)); \ @@ -835,16 +836,33 @@ void pmclog_process_pmcallocate(struct pmc *pm) { struct pmc_owner *po; + struct pmc_soft *ps; po = pm->pm_owner; PMCDBG(LOG,ALL,1, "pm=%p", pm); - PMCLOG_RESERVE(po, PMCALLOCATE, sizeof(struct pmclog_pmcallocate)); - PMCLOG_EMIT32(pm->pm_id); - PMCLOG_EMIT32(pm->pm_event); - PMCLOG_EMIT32(pm->pm_flags); - PMCLOG_DESPATCH(po); + if (PMC_TO_CLASS(pm) == PMC_CLASS_SOFT) { + PMCLOG_RESERVE(po, PMCALLOCATEDYN, + sizeof(struct pmclog_pmcallocatedyn)); + PMCLOG_EMIT32(pm->pm_id); + PMCLOG_EMIT32(pm->pm_event); + PMCLOG_EMIT32(pm->pm_flags); + ps = pmc_soft_ev_acquire(pm->pm_event); + if (ps != NULL) + PMCLOG_EMITSTRING(ps->ps_ev.pm_ev_name,PMC_NAME_MAX); + else + PMCLOG_EMITNULLSTRING(PMC_NAME_MAX); + pmc_soft_ev_release(ps); + PMCLOG_DESPATCH(po); + } else { + PMCLOG_RESERVE(po, PMCALLOCATE, + sizeof(struct pmclog_pmcallocate)); + PMCLOG_EMIT32(pm->pm_id); + PMCLOG_EMIT32(pm->pm_event); + PMCLOG_EMIT32(pm->pm_flags); + PMCLOG_DESPATCH(po); + } } void Modified: stable/9/sys/dev/hwpmc/hwpmc_mod.c ============================================================================== --- stable/9/sys/dev/hwpmc/hwpmc_mod.c Tue May 29 14:41:16 2012 (r236237) +++ stable/9/sys/dev/hwpmc/hwpmc_mod.c Tue May 29 14:50:21 2012 (r236238) @@ -70,6 +70,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include "hwpmc_soft.h" + /* * Types */ @@ -182,7 +184,7 @@ static int pmc_attach_one_process(struct static int pmc_can_allocate_rowindex(struct proc *p, unsigned int ri, int cpu); static int pmc_can_attach(struct pmc *pm, struct proc *p); -static void pmc_capture_user_callchain(int cpu, struct trapframe *tf); +static void pmc_capture_user_callchain(int cpu, int soft, struct trapframe *tf); static void pmc_cleanup(void); static int pmc_detach_process(struct proc *p, struct pmc *pm); static int pmc_detach_one_process(struct proc *p, struct pmc *pm, @@ -206,7 +208,7 @@ static void pmc_process_csw_out(struct t static void pmc_process_exit(void *arg, struct proc *p); static void pmc_process_fork(void *arg, struct proc *p1, struct proc *p2, int n); -static void pmc_process_samples(int cpu); +static void pmc_process_samples(int cpu, int soft); static void pmc_release_pmc_descriptor(struct pmc *pmc); static void pmc_remove_owner(struct pmc_owner *po); static void pmc_remove_process_descriptor(struct pmc_process *pp); @@ -218,12 +220,16 @@ static int pmc_stop(struct pmc *pm); static int pmc_syscall_handler(struct thread *td, void *syscall_args); static void pmc_unlink_target_process(struct pmc *pmc, struct pmc_process *pp); +static int generic_switch_in(struct pmc_cpu *pc, struct pmc_process *pp); +static int generic_switch_out(struct pmc_cpu *pc, struct pmc_process *pp); +static struct pmc_mdep *pmc_generic_cpu_initialize(void); +static void pmc_generic_cpu_finalize(struct pmc_mdep *md); /* * Kernel tunables and sysctl(8) interface. */ -SYSCTL_NODE(_kern, OID_AUTO, hwpmc, CTLFLAG_RW, 0, "HWPMC parameters"); +SYSCTL_DECL(_kern_hwpmc); static int pmc_callchaindepth = PMC_CALLCHAIN_DEPTH; TUNABLE_INT(PMC_SYSCTL_NAME_PREFIX "callchaindepth", &pmc_callchaindepth); @@ -1833,7 +1839,9 @@ const char *pmc_hooknames[] = { "KLDUNLOAD", "MMAP", "MUNMAP", - "CALLCHAIN" + "CALLCHAIN-NMI", + "CALLCHAIN-SOFT", + "SOFTSAMPLING" }; #endif @@ -1992,7 +2000,8 @@ pmc_hook_handler(struct thread *td, int * lose the interrupt sample. */ CPU_CLR_ATOMIC(PCPU_GET(cpuid), &pmc_cpumask); - pmc_process_samples(PCPU_GET(cpuid)); + pmc_process_samples(PCPU_GET(cpuid), PMC_HR); + pmc_process_samples(PCPU_GET(cpuid), PMC_SR); break; @@ -2022,11 +2031,30 @@ pmc_hook_handler(struct thread *td, int */ KASSERT(td == curthread, ("[pmc,%d] td != curthread", __LINE__)); - pmc_capture_user_callchain(PCPU_GET(cpuid), + + pmc_capture_user_callchain(PCPU_GET(cpuid), PMC_HR, (struct trapframe *) arg); td->td_pflags &= ~TDP_CALLCHAIN; break; + case PMC_FN_USER_CALLCHAIN_SOFT: + /* + * Record a call chain. + */ + KASSERT(td == curthread, ("[pmc,%d] td != curthread", + __LINE__)); + pmc_capture_user_callchain(PCPU_GET(cpuid), PMC_SR, + (struct trapframe *) arg); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Tue May 29 15:08:36 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 16D48106564A; Tue, 29 May 2012 15:08:36 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 008EC8FC08; Tue, 29 May 2012 15:08:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TF8Znv085838; Tue, 29 May 2012 15:08:35 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TF8ZYf085835; Tue, 29 May 2012 15:08:35 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201205291508.q4TF8ZYf085835@svn.freebsd.org> From: Edward Tomasz Napierala Date: Tue, 29 May 2012 15:08:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236239 - stable/9/sys/kern X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 15:08:36 -0000 Author: trasz Date: Tue May 29 15:08:35 2012 New Revision: 236239 URL: http://svn.freebsd.org/changeset/base/236239 Log: MFC r235787: Fix panic with RACCT that could occur in low memory (or out of swap) situations, due to fork1() calling racct_proc_exit() without calling racct_proc_fork() first. Modified: stable/9/sys/kern/kern_fork.c stable/9/sys/kern/kern_racct.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_fork.c ============================================================================== --- stable/9/sys/kern/kern_fork.c Tue May 29 14:50:21 2012 (r236238) +++ stable/9/sys/kern/kern_fork.c Tue May 29 15:08:35 2012 (r236239) @@ -939,8 +939,8 @@ fail: #ifdef MAC mac_proc_destroy(newproc); #endif -fail1: racct_proc_exit(newproc); +fail1: if (vm2 != NULL) vmspace_free(vm2); uma_zfree(proc_zone, newproc); Modified: stable/9/sys/kern/kern_racct.c ============================================================================== --- stable/9/sys/kern/kern_racct.c Tue May 29 14:50:21 2012 (r236238) +++ stable/9/sys/kern/kern_racct.c Tue May 29 15:08:35 2012 (r236239) @@ -573,6 +573,9 @@ out: PROC_UNLOCK(child); PROC_UNLOCK(parent); + if (error != 0) + racct_proc_exit(child); + return (error); } From owner-svn-src-stable@FreeBSD.ORG Tue May 29 16:21:43 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F242C106566C; Tue, 29 May 2012 16:21:43 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DC5A38FC15; Tue, 29 May 2012 16:21:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TGLhL7089367; Tue, 29 May 2012 16:21:43 GMT (envelope-from jpaetzel@svn.freebsd.org) Received: (from jpaetzel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TGLhBg089365; Tue, 29 May 2012 16:21:43 GMT (envelope-from jpaetzel@svn.freebsd.org) Message-Id: <201205291621.q4TGLhBg089365@svn.freebsd.org> From: Josh Paetzel Date: Tue, 29 May 2012 16:21:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236244 - stable/9/usr.bin X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 16:21:44 -0000 Author: jpaetzel Date: Tue May 29 16:21:43 2012 New Revision: 236244 URL: http://svn.freebsd.org/changeset/base/236244 Log: MFC 235915: Hook up mkulzma to the build. Modified: stable/9/usr.bin/Makefile Directory Properties: stable/9/usr.bin/ (props changed) Modified: stable/9/usr.bin/Makefile ============================================================================== --- stable/9/usr.bin/Makefile Tue May 29 16:11:15 2012 (r236243) +++ stable/9/usr.bin/Makefile Tue May 29 16:21:43 2012 (r236244) @@ -105,6 +105,7 @@ SUBDIR= alias \ mkfifo \ mklocale \ mktemp \ + mkulzma \ mkuzip \ mt \ ncal \ From owner-svn-src-stable@FreeBSD.ORG Tue May 29 19:47:07 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 539181065673; Tue, 29 May 2012 19:47:07 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 33A198FC14; Tue, 29 May 2012 19:47:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TJl7dd099059; Tue, 29 May 2012 19:47:07 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TJl6Zf099055; Tue, 29 May 2012 19:47:06 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201205291947.q4TJl6Zf099055@svn.freebsd.org> From: Edward Tomasz Napierala Date: Tue, 29 May 2012 19:47:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236253 - in stable/9/sys: kern sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 19:47:07 -0000 Author: trasz Date: Tue May 29 19:47:06 2012 New Revision: 236253 URL: http://svn.freebsd.org/changeset/base/236253 Log: MFC r232598: Make racct and rctl correctly handle jail renaming. Previously they would continue using old name, the one jail was created with. PR: bin/165207 MFC r235795: Don't leak locks in prison_racct_modify(). MFC r235803: Fix use-after-free in kern_jail_set() triggered e.g. by attempts to clear "persist" flag from empty persistent jail, like this: jail -c persist=1 jail -n 1 -m persist=0 Modified: stable/9/sys/kern/kern_jail.c stable/9/sys/kern/kern_racct.c stable/9/sys/sys/racct.h Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_jail.c ============================================================================== --- stable/9/sys/kern/kern_jail.c Tue May 29 19:46:42 2012 (r236252) +++ stable/9/sys/kern/kern_jail.c Tue May 29 19:47:06 2012 (r236253) @@ -130,6 +130,7 @@ static char *prison_path(struct prison * static void prison_remove_one(struct prison *pr); #ifdef RACCT static void prison_racct_attach(struct prison *pr); +static void prison_racct_modify(struct prison *pr); static void prison_racct_detach(struct prison *pr); #endif #ifdef INET @@ -1810,6 +1811,16 @@ kern_jail_set(struct thread *td, struct } } +#ifdef RACCT + if (!created) { + sx_sunlock(&allprison_lock); + prison_racct_modify(pr); + sx_slock(&allprison_lock); + } +#endif + + td->td_retval[0] = pr->pr_id; + /* * Now that it is all there, drop the temporary reference from existing * prisons. Or add a reference to newly created persistent prisons @@ -1830,7 +1841,7 @@ kern_jail_set(struct thread *td, struct if (!(flags & JAIL_ATTACH)) sx_sunlock(&allprison_lock); } - td->td_retval[0] = pr->pr_id; + goto done_errmsg; done_deref_locked: @@ -4427,24 +4438,32 @@ prison_racct_hold(struct prison_racct *p refcount_acquire(&prr->prr_refcount); } +static void +prison_racct_free_locked(struct prison_racct *prr) +{ + + sx_assert(&allprison_lock, SA_XLOCKED); + + if (refcount_release(&prr->prr_refcount)) { + racct_destroy(&prr->prr_racct); + LIST_REMOVE(prr, prr_next); + free(prr, M_PRISON_RACCT); + } +} + void prison_racct_free(struct prison_racct *prr) { int old; + sx_assert(&allprison_lock, SA_UNLOCKED); + old = prr->prr_refcount; if (old > 1 && atomic_cmpset_int(&prr->prr_refcount, old, old - 1)) return; sx_xlock(&allprison_lock); - if (refcount_release(&prr->prr_refcount)) { - racct_destroy(&prr->prr_racct); - LIST_REMOVE(prr, prr_next); - sx_xunlock(&allprison_lock); - free(prr, M_PRISON_RACCT); - - return; - } + prison_racct_free_locked(prr); sx_xunlock(&allprison_lock); } @@ -4454,15 +4473,66 @@ prison_racct_attach(struct prison *pr) { struct prison_racct *prr; + sx_assert(&allprison_lock, SA_XLOCKED); + prr = prison_racct_find_locked(pr->pr_name); KASSERT(prr != NULL, ("cannot find prison_racct")); pr->pr_prison_racct = prr; } +/* + * Handle jail renaming. From the racct point of view, renaming means + * moving from one prison_racct to another. + */ +static void +prison_racct_modify(struct prison *pr) +{ + struct proc *p; + struct ucred *cred; + struct prison_racct *oldprr; + + sx_slock(&allproc_lock); + sx_xlock(&allprison_lock); + + if (strcmp(pr->pr_name, pr->pr_prison_racct->prr_name) == 0) { + sx_xunlock(&allprison_lock); + sx_sunlock(&allproc_lock); + return; + } + + oldprr = pr->pr_prison_racct; + pr->pr_prison_racct = NULL; + + prison_racct_attach(pr); + + /* + * Move resource utilisation records. + */ + racct_move(pr->pr_prison_racct->prr_racct, oldprr->prr_racct); + + /* + * Force rctl to reattach rules to processes. + */ + FOREACH_PROC_IN_SYSTEM(p) { + PROC_LOCK(p); + cred = crhold(p->p_ucred); + PROC_UNLOCK(p); + racct_proc_ucred_changed(p, cred, cred); + crfree(cred); + } + + sx_sunlock(&allproc_lock); + prison_racct_free_locked(oldprr); + sx_xunlock(&allprison_lock); +} + static void prison_racct_detach(struct prison *pr) { + + sx_assert(&allprison_lock, SA_UNLOCKED); + prison_racct_free(pr->pr_prison_racct); pr->pr_prison_racct = NULL; } Modified: stable/9/sys/kern/kern_racct.c ============================================================================== --- stable/9/sys/kern/kern_racct.c Tue May 29 19:46:42 2012 (r236252) +++ stable/9/sys/kern/kern_racct.c Tue May 29 19:47:06 2012 (r236253) @@ -679,6 +679,18 @@ racct_proc_ucred_changed(struct proc *p, #endif } +void +racct_move(struct racct *dest, struct racct *src) +{ + + mtx_lock(&racct_lock); + + racct_add_racct(dest, src); + racct_sub_racct(src, src); + + mtx_unlock(&racct_lock); +} + static void racctd(void) { Modified: stable/9/sys/sys/racct.h ============================================================================== --- stable/9/sys/sys/racct.h Tue May 29 19:46:42 2012 (r236252) +++ stable/9/sys/sys/racct.h Tue May 29 19:47:06 2012 (r236253) @@ -142,5 +142,6 @@ void racct_proc_exit(struct proc *p); void racct_proc_ucred_changed(struct proc *p, struct ucred *oldcred, struct ucred *newcred); +void racct_move(struct racct *dest, struct racct *src); #endif /* !_RACCT_H_ */ From owner-svn-src-stable@FreeBSD.ORG Tue May 29 23:10:10 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE3AF106566B; Tue, 29 May 2012 23:10:10 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B78608FC0C; Tue, 29 May 2012 23:10:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TNAAgn008698; Tue, 29 May 2012 23:10:10 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TNAAgF008691; Tue, 29 May 2012 23:10:10 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201205292310.q4TNAAgF008691@svn.freebsd.org> From: Jim Harris Date: Tue, 29 May 2012 23:10:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236263 - stable/9/sys/dev/isci X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 23:10:11 -0000 Author: jimharris Date: Tue May 29 23:10:10 2012 New Revision: 236263 URL: http://svn.freebsd.org/changeset/base/236263 Log: MFC r234106, r235751: Queue CCBs internally instead of using CAM_REQUEUE_REQ status. This fixes problem where userspace apps such as smartctl fail due to CAM_REQUEUE_REQ status getting returned when tagged commands are outstanding when smartctl sends its I/O using the pass(4) interface. Sponsored by: Intel Modified: stable/9/sys/dev/isci/isci.h stable/9/sys/dev/isci/isci_controller.c stable/9/sys/dev/isci/isci_interrupt.c stable/9/sys/dev/isci/isci_io_request.c stable/9/sys/dev/isci/isci_remote_device.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/isci/isci.h ============================================================================== --- stable/9/sys/dev/isci/isci.h Tue May 29 22:28:46 2012 (r236262) +++ stable/9/sys/dev/isci/isci.h Tue May 29 23:10:10 2012 (r236263) @@ -30,6 +30,9 @@ * $FreeBSD$ */ +#ifndef _ISCI_H +#define _ISCI_H + #include #include #include @@ -86,6 +89,31 @@ struct ISCI_REMOTE_DEVICE { BOOL is_resetting; uint32_t frozen_lun_mask; SCI_FAST_LIST_ELEMENT_T pending_device_reset_element; + + /* + * This queue maintains CCBs that have been returned with + * SCI_IO_FAILURE_INVALID_STATE from the SCI layer. These CCBs + * need to be retried, but we cannot return CAM_REQUEUE_REQ because + * this status gets passed all the way back up to users of the pass(4) + * interface and breaks things like smartctl. So instead, we queue + * these CCBs internally. + */ + TAILQ_HEAD(,ccb_hdr) queued_ccbs; + + /* + * Marker denoting this remote device needs its first queued ccb to + * be retried. + */ + BOOL release_queued_ccb; + + /* + * Points to a CCB in the queue that is currently being processed by + * SCIL. This allows us to keep in flight CCBs in the queue so as to + * maintain ordering (i.e. in case we retry an I/O and then find out + * it needs to be retried again - it just keeps its same place in the + * queue. + */ + union ccb * queued_ccb_in_progress; }; struct ISCI_DOMAIN { @@ -125,6 +153,7 @@ struct ISCI_CONTROLLER BOOL has_been_scanned; uint32_t initial_discovery_mask; BOOL is_frozen; + BOOL release_queued_ccbs; uint8_t *remote_device_memory; struct ISCI_MEMORY cached_controller_memory; struct ISCI_MEMORY uncached_controller_memory; @@ -290,6 +319,8 @@ int isci_controller_attach_to_cam(struct void isci_controller_start(void *controller); +void isci_controller_release_queued_ccbs(struct ISCI_CONTROLLER *controller); + void isci_domain_construct(struct ISCI_DOMAIN *domain, uint32_t domain_index, struct ISCI_CONTROLLER *controller); @@ -300,3 +331,5 @@ void isci_log_message(uint32_t verbosity char *log_message, ...); extern uint32_t g_isci_debug_level; + +#endif /* #ifndef _ISCI_H */ Modified: stable/9/sys/dev/isci/isci_controller.c ============================================================================== --- stable/9/sys/dev/isci/isci_controller.c Tue May 29 22:28:46 2012 (r236262) +++ stable/9/sys/dev/isci/isci_controller.c Tue May 29 23:10:10 2012 (r236263) @@ -201,6 +201,7 @@ void isci_controller_construct(struct IS controller->is_started = FALSE; controller->is_frozen = FALSE; + controller->release_queued_ccbs = FALSE; controller->sim = NULL; controller->initial_discovery_mask = 0; @@ -430,6 +431,9 @@ int isci_controller_allocate_memory(stru remote_device->frozen_lun_mask = 0; sci_fast_list_element_init(remote_device, &remote_device->pending_device_reset_element); + TAILQ_INIT(&remote_device->queued_ccbs); + remote_device->release_queued_ccb = FALSE; + remote_device->queued_ccb_in_progress = NULL; /* * For the first SCI_MAX_DOMAINS device objects, do not put @@ -693,3 +697,47 @@ void isci_action(struct cam_sim *sim, un } } +/* + * Unfortunately, SCIL doesn't cleanly handle retry conditions. + * CAM_REQUEUE_REQ works only when no one is using the pass(4) interface. So + * when SCIL denotes an I/O needs to be retried (typically because of mixing + * tagged/non-tagged ATA commands, or running out of NCQ slots), we queue + * these I/O internally. Once SCIL completes an I/O to this device, or we get + * a ready notification, we will retry the first I/O on the queue. + * Unfortunately, SCIL also doesn't cleanly handle starting the new I/O within + * the context of the completion handler, so we need to retry these I/O after + * the completion handler is done executing. + */ +void +isci_controller_release_queued_ccbs(struct ISCI_CONTROLLER *controller) +{ + struct ISCI_REMOTE_DEVICE *dev; + struct ccb_hdr *ccb_h; + int dev_idx; + + KASSERT(mtx_owned(&controller->lock), ("controller lock not owned")); + + controller->release_queued_ccbs = FALSE; + for (dev_idx = 0; + dev_idx < SCI_MAX_REMOTE_DEVICES; + dev_idx++) { + + dev = controller->remote_device[dev_idx]; + if (dev != NULL && + dev->release_queued_ccb == TRUE && + dev->queued_ccb_in_progress == NULL) { + dev->release_queued_ccb = FALSE; + ccb_h = TAILQ_FIRST(&dev->queued_ccbs); + + if (ccb_h == NULL) + continue; + + isci_log_message(1, "ISCI", "release %p %x\n", ccb_h, + ((union ccb *)ccb_h)->csio.cdb_io.cdb_bytes[0]); + + dev->queued_ccb_in_progress = (union ccb *)ccb_h; + isci_io_request_execute_scsi_io( + (union ccb *)ccb_h, controller); + } + } +} Modified: stable/9/sys/dev/isci/isci_interrupt.c ============================================================================== --- stable/9/sys/dev/isci/isci_interrupt.c Tue May 29 22:28:46 2012 (r236262) +++ stable/9/sys/dev/isci/isci_interrupt.c Tue May 29 23:10:10 2012 (r236263) @@ -177,6 +177,9 @@ isci_interrupt_legacy_handler(void *arg) if (interrupt_handler(scic_controller_handle)) { mtx_lock(&controller->lock); completion_handler(scic_controller_handle); + if (controller->release_queued_ccbs == TRUE) + isci_controller_release_queued_ccbs( + controller); mtx_unlock(&controller->lock); } } @@ -204,6 +207,13 @@ isci_interrupt_msix_handler(void *arg) if (interrupt_handler(scic_controller_handle)) { mtx_lock(&controller->lock); completion_handler(scic_controller_handle); + /* + * isci_controller_release_queued_ccb() is a relatively + * expensive routine, so we don't call it until the controller + * level flag is set to TRUE. + */ + if (controller->release_queued_ccbs == TRUE) + isci_controller_release_queued_ccbs(controller); mtx_unlock(&controller->lock); } } Modified: stable/9/sys/dev/isci/isci_io_request.c ============================================================================== --- stable/9/sys/dev/isci/isci_io_request.c Tue May 29 22:28:46 2012 (r236262) +++ stable/9/sys/dev/isci/isci_io_request.c Tue May 29 23:10:10 2012 (r236263) @@ -85,7 +85,9 @@ isci_io_request_complete(SCI_CONTROLLER_ struct ISCI_CONTROLLER *isci_controller; struct ISCI_REMOTE_DEVICE *isci_remote_device; union ccb *ccb; + BOOL complete_ccb; + complete_ccb = TRUE; isci_controller = (struct ISCI_CONTROLLER *) sci_object_get_association(scif_controller); isci_remote_device = (struct ISCI_REMOTE_DEVICE *) sci_object_get_association(remote_device); @@ -163,9 +165,7 @@ isci_io_request_complete(SCI_CONTROLLER_ case SCI_IO_FAILURE_INVALID_STATE: case SCI_IO_FAILURE_INSUFFICIENT_RESOURCES: - ccb->ccb_h.status |= CAM_REQUEUE_REQ; - isci_remote_device_freeze_lun_queue(isci_remote_device, - ccb->ccb_h.target_lun); + complete_ccb = FALSE; break; case SCI_IO_FAILURE_INVALID_REMOTE_DEVICE: @@ -189,7 +189,7 @@ isci_io_request_complete(SCI_CONTROLLER_ scif_remote_device_get_max_queue_depth(remote_device); xpt_action((union ccb *)&ccb_relsim); xpt_free_path(path); - ccb->ccb_h.status |= CAM_REQUEUE_REQ; + complete_ccb = FALSE; } break; @@ -209,17 +209,6 @@ isci_io_request_complete(SCI_CONTROLLER_ break; } - if (ccb->ccb_h.status != CAM_REQ_CMP) { - /* ccb will be completed with some type of non-success - * status. So temporarily freeze the queue until the - * upper layers can act on the status. The CAM_DEV_QFRZN - * flag will then release the queue after the status is - * acted upon. - */ - ccb->ccb_h.status |= CAM_DEV_QFRZN; - xpt_freeze_devq(ccb->ccb_h.path, 1); - } - callout_stop(&isci_request->parent.timer); bus_dmamap_sync(isci_request->parent.dma_tag, isci_request->parent.dma_map, @@ -228,20 +217,82 @@ isci_io_request_complete(SCI_CONTROLLER_ bus_dmamap_unload(isci_request->parent.dma_tag, isci_request->parent.dma_map); - if (isci_remote_device->frozen_lun_mask != 0 && - !(ccb->ccb_h.status & CAM_REQUEUE_REQ)) - isci_remote_device_release_device_queue(isci_remote_device); - - xpt_done(ccb); isci_request->ccb = NULL; - if (isci_controller->is_frozen == TRUE) { - isci_controller->is_frozen = FALSE; - xpt_release_simq(isci_controller->sim, TRUE); - } - sci_pool_put(isci_controller->request_pool, (struct ISCI_REQUEST *)isci_request); + + if (complete_ccb) { + if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + /* ccb will be completed with some type of non-success + * status. So temporarily freeze the queue until the + * upper layers can act on the status. The + * CAM_DEV_QFRZN flag will then release the queue + * after the status is acted upon. + */ + ccb->ccb_h.status |= CAM_DEV_QFRZN; + xpt_freeze_devq(ccb->ccb_h.path, 1); + } + + if (ccb->ccb_h.status & CAM_SIM_QUEUED) { + + KASSERT(ccb == isci_remote_device->queued_ccb_in_progress, + ("multiple internally queued ccbs in flight")); + + TAILQ_REMOVE(&isci_remote_device->queued_ccbs, + &ccb->ccb_h, sim_links.tqe); + ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + + /* + * This CCB that was in the queue was completed, so + * set the in_progress pointer to NULL denoting that + * we can retry another CCB from the queue. We only + * allow one CCB at a time from the queue to be + * in progress so that we can effectively maintain + * ordering. + */ + isci_remote_device->queued_ccb_in_progress = NULL; + } + + if (isci_remote_device->frozen_lun_mask != 0) { + isci_remote_device_release_device_queue(isci_remote_device); + } + + xpt_done(ccb); + + if (isci_controller->is_frozen == TRUE) { + isci_controller->is_frozen = FALSE; + xpt_release_simq(isci_controller->sim, TRUE); + } + } else { + isci_remote_device_freeze_lun_queue(isci_remote_device, + ccb->ccb_h.target_lun); + + if (ccb->ccb_h.status & CAM_SIM_QUEUED) { + + KASSERT(ccb == isci_remote_device->queued_ccb_in_progress, + ("multiple internally queued ccbs in flight")); + + /* + * Do nothing, CCB is already on the device's queue. + * We leave it on the queue, to be retried again + * next time a CCB on this device completes, or we + * get a ready notification for this device. + */ + isci_log_message(1, "ISCI", "already queued %p %x\n", + ccb, ccb->csio.cdb_io.cdb_bytes[0]); + + isci_remote_device->queued_ccb_in_progress = NULL; + + } else { + isci_log_message(1, "ISCI", "queue %p %x\n", ccb, + ccb->csio.cdb_io.cdb_bytes[0]); + ccb->ccb_h.status |= CAM_SIM_QUEUED; + + TAILQ_INSERT_TAIL(&isci_remote_device->queued_ccbs, + &ccb->ccb_h, sim_links.tqe); + } + } } /** Modified: stable/9/sys/dev/isci/isci_remote_device.c ============================================================================== --- stable/9/sys/dev/isci/isci_remote_device.c Tue May 29 22:28:46 2012 (r236262) +++ stable/9/sys/dev/isci/isci_remote_device.c Tue May 29 23:10:10 2012 (r236263) @@ -289,9 +289,26 @@ isci_remote_device_release_lun_queue(str void isci_remote_device_release_device_queue( - struct ISCI_REMOTE_DEVICE *remote_device) + struct ISCI_REMOTE_DEVICE *device) { - lun_id_t lun; - for (lun = 0; lun < ISCI_MAX_LUN; lun++) - isci_remote_device_release_lun_queue(remote_device, lun); + if (TAILQ_EMPTY(&device->queued_ccbs)) { + lun_id_t lun; + + for (lun = 0; lun < ISCI_MAX_LUN; lun++) + isci_remote_device_release_lun_queue(device, lun); + } else { + /* + * We cannot unfreeze the devq, because there are still + * CCBs in our internal queue that need to be processed + * first. Mark this device, and the controller, so that + * the first CCB in this device's internal queue will be + * resubmitted after the current completion context + * unwinds. + */ + device->release_queued_ccb = TRUE; + device->domain->controller->release_queued_ccbs = TRUE; + + isci_log_message(1, "ISCI", "schedule %p for release\n", + device); + } } From owner-svn-src-stable@FreeBSD.ORG Tue May 29 23:15:24 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43CF6106566B; Tue, 29 May 2012 23:15:24 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2D1B48FC1C; Tue, 29 May 2012 23:15:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TNFOrM008994; Tue, 29 May 2012 23:15:24 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TNFNVn008988; Tue, 29 May 2012 23:15:23 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201205292315.q4TNFNVn008988@svn.freebsd.org> From: Jim Harris Date: Tue, 29 May 2012 23:15:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236264 - stable/8/sys/dev/isci X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 23:15:24 -0000 Author: jimharris Date: Tue May 29 23:15:23 2012 New Revision: 236264 URL: http://svn.freebsd.org/changeset/base/236264 Log: MFC r234106, r235751: Queue CCBs internally instead of using CAM_REQUEUE_REQ status. This fixes problem where userspace apps such as smartctl fail due to CAM_REQUEUE_REQ status getting returned when tagged commands are outstanding when smartctl sends its I/O using the pass(4) interface. Sponsored by: Intel Modified: stable/8/sys/dev/isci/isci.h stable/8/sys/dev/isci/isci_controller.c stable/8/sys/dev/isci/isci_interrupt.c stable/8/sys/dev/isci/isci_io_request.c stable/8/sys/dev/isci/isci_remote_device.c Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/dev/isci/isci.h ============================================================================== --- stable/8/sys/dev/isci/isci.h Tue May 29 23:10:10 2012 (r236263) +++ stable/8/sys/dev/isci/isci.h Tue May 29 23:15:23 2012 (r236264) @@ -30,6 +30,9 @@ * $FreeBSD$ */ +#ifndef _ISCI_H +#define _ISCI_H + #include #include #include @@ -86,6 +89,31 @@ struct ISCI_REMOTE_DEVICE { BOOL is_resetting; uint32_t frozen_lun_mask; SCI_FAST_LIST_ELEMENT_T pending_device_reset_element; + + /* + * This queue maintains CCBs that have been returned with + * SCI_IO_FAILURE_INVALID_STATE from the SCI layer. These CCBs + * need to be retried, but we cannot return CAM_REQUEUE_REQ because + * this status gets passed all the way back up to users of the pass(4) + * interface and breaks things like smartctl. So instead, we queue + * these CCBs internally. + */ + TAILQ_HEAD(,ccb_hdr) queued_ccbs; + + /* + * Marker denoting this remote device needs its first queued ccb to + * be retried. + */ + BOOL release_queued_ccb; + + /* + * Points to a CCB in the queue that is currently being processed by + * SCIL. This allows us to keep in flight CCBs in the queue so as to + * maintain ordering (i.e. in case we retry an I/O and then find out + * it needs to be retried again - it just keeps its same place in the + * queue. + */ + union ccb * queued_ccb_in_progress; }; struct ISCI_DOMAIN { @@ -125,6 +153,7 @@ struct ISCI_CONTROLLER BOOL has_been_scanned; uint32_t initial_discovery_mask; BOOL is_frozen; + BOOL release_queued_ccbs; uint8_t *remote_device_memory; struct ISCI_MEMORY cached_controller_memory; struct ISCI_MEMORY uncached_controller_memory; @@ -290,6 +319,8 @@ int isci_controller_attach_to_cam(struct void isci_controller_start(void *controller); +void isci_controller_release_queued_ccbs(struct ISCI_CONTROLLER *controller); + void isci_domain_construct(struct ISCI_DOMAIN *domain, uint32_t domain_index, struct ISCI_CONTROLLER *controller); @@ -300,3 +331,5 @@ void isci_log_message(uint32_t verbosity char *log_message, ...); extern uint32_t g_isci_debug_level; + +#endif /* #ifndef _ISCI_H */ Modified: stable/8/sys/dev/isci/isci_controller.c ============================================================================== --- stable/8/sys/dev/isci/isci_controller.c Tue May 29 23:10:10 2012 (r236263) +++ stable/8/sys/dev/isci/isci_controller.c Tue May 29 23:15:23 2012 (r236264) @@ -201,6 +201,7 @@ void isci_controller_construct(struct IS controller->is_started = FALSE; controller->is_frozen = FALSE; + controller->release_queued_ccbs = FALSE; controller->sim = NULL; controller->initial_discovery_mask = 0; @@ -430,6 +431,9 @@ int isci_controller_allocate_memory(stru remote_device->frozen_lun_mask = 0; sci_fast_list_element_init(remote_device, &remote_device->pending_device_reset_element); + TAILQ_INIT(&remote_device->queued_ccbs); + remote_device->release_queued_ccb = FALSE; + remote_device->queued_ccb_in_progress = NULL; /* * For the first SCI_MAX_DOMAINS device objects, do not put @@ -693,3 +697,47 @@ void isci_action(struct cam_sim *sim, un } } +/* + * Unfortunately, SCIL doesn't cleanly handle retry conditions. + * CAM_REQUEUE_REQ works only when no one is using the pass(4) interface. So + * when SCIL denotes an I/O needs to be retried (typically because of mixing + * tagged/non-tagged ATA commands, or running out of NCQ slots), we queue + * these I/O internally. Once SCIL completes an I/O to this device, or we get + * a ready notification, we will retry the first I/O on the queue. + * Unfortunately, SCIL also doesn't cleanly handle starting the new I/O within + * the context of the completion handler, so we need to retry these I/O after + * the completion handler is done executing. + */ +void +isci_controller_release_queued_ccbs(struct ISCI_CONTROLLER *controller) +{ + struct ISCI_REMOTE_DEVICE *dev; + struct ccb_hdr *ccb_h; + int dev_idx; + + KASSERT(mtx_owned(&controller->lock), ("controller lock not owned")); + + controller->release_queued_ccbs = FALSE; + for (dev_idx = 0; + dev_idx < SCI_MAX_REMOTE_DEVICES; + dev_idx++) { + + dev = controller->remote_device[dev_idx]; + if (dev != NULL && + dev->release_queued_ccb == TRUE && + dev->queued_ccb_in_progress == NULL) { + dev->release_queued_ccb = FALSE; + ccb_h = TAILQ_FIRST(&dev->queued_ccbs); + + if (ccb_h == NULL) + continue; + + isci_log_message(1, "ISCI", "release %p %x\n", ccb_h, + ((union ccb *)ccb_h)->csio.cdb_io.cdb_bytes[0]); + + dev->queued_ccb_in_progress = (union ccb *)ccb_h; + isci_io_request_execute_scsi_io( + (union ccb *)ccb_h, controller); + } + } +} Modified: stable/8/sys/dev/isci/isci_interrupt.c ============================================================================== --- stable/8/sys/dev/isci/isci_interrupt.c Tue May 29 23:10:10 2012 (r236263) +++ stable/8/sys/dev/isci/isci_interrupt.c Tue May 29 23:15:23 2012 (r236264) @@ -177,6 +177,9 @@ isci_interrupt_legacy_handler(void *arg) if (interrupt_handler(scic_controller_handle)) { mtx_lock(&controller->lock); completion_handler(scic_controller_handle); + if (controller->release_queued_ccbs == TRUE) + isci_controller_release_queued_ccbs( + controller); mtx_unlock(&controller->lock); } } @@ -204,6 +207,13 @@ isci_interrupt_msix_handler(void *arg) if (interrupt_handler(scic_controller_handle)) { mtx_lock(&controller->lock); completion_handler(scic_controller_handle); + /* + * isci_controller_release_queued_ccb() is a relatively + * expensive routine, so we don't call it until the controller + * level flag is set to TRUE. + */ + if (controller->release_queued_ccbs == TRUE) + isci_controller_release_queued_ccbs(controller); mtx_unlock(&controller->lock); } } Modified: stable/8/sys/dev/isci/isci_io_request.c ============================================================================== --- stable/8/sys/dev/isci/isci_io_request.c Tue May 29 23:10:10 2012 (r236263) +++ stable/8/sys/dev/isci/isci_io_request.c Tue May 29 23:15:23 2012 (r236264) @@ -85,7 +85,9 @@ isci_io_request_complete(SCI_CONTROLLER_ struct ISCI_CONTROLLER *isci_controller; struct ISCI_REMOTE_DEVICE *isci_remote_device; union ccb *ccb; + BOOL complete_ccb; + complete_ccb = TRUE; isci_controller = (struct ISCI_CONTROLLER *) sci_object_get_association(scif_controller); isci_remote_device = (struct ISCI_REMOTE_DEVICE *) sci_object_get_association(remote_device); @@ -163,9 +165,7 @@ isci_io_request_complete(SCI_CONTROLLER_ case SCI_IO_FAILURE_INVALID_STATE: case SCI_IO_FAILURE_INSUFFICIENT_RESOURCES: - ccb->ccb_h.status |= CAM_REQUEUE_REQ; - isci_remote_device_freeze_lun_queue(isci_remote_device, - ccb->ccb_h.target_lun); + complete_ccb = FALSE; break; case SCI_IO_FAILURE_INVALID_REMOTE_DEVICE: @@ -189,7 +189,7 @@ isci_io_request_complete(SCI_CONTROLLER_ scif_remote_device_get_max_queue_depth(remote_device); xpt_action((union ccb *)&ccb_relsim); xpt_free_path(path); - ccb->ccb_h.status |= CAM_REQUEUE_REQ; + complete_ccb = FALSE; } break; @@ -209,17 +209,6 @@ isci_io_request_complete(SCI_CONTROLLER_ break; } - if (ccb->ccb_h.status != CAM_REQ_CMP) { - /* ccb will be completed with some type of non-success - * status. So temporarily freeze the queue until the - * upper layers can act on the status. The CAM_DEV_QFRZN - * flag will then release the queue after the status is - * acted upon. - */ - ccb->ccb_h.status |= CAM_DEV_QFRZN; - xpt_freeze_devq(ccb->ccb_h.path, 1); - } - callout_stop(&isci_request->parent.timer); bus_dmamap_sync(isci_request->parent.dma_tag, isci_request->parent.dma_map, @@ -228,20 +217,82 @@ isci_io_request_complete(SCI_CONTROLLER_ bus_dmamap_unload(isci_request->parent.dma_tag, isci_request->parent.dma_map); - if (isci_remote_device->frozen_lun_mask != 0 && - !(ccb->ccb_h.status & CAM_REQUEUE_REQ)) - isci_remote_device_release_device_queue(isci_remote_device); - - xpt_done(ccb); isci_request->ccb = NULL; - if (isci_controller->is_frozen == TRUE) { - isci_controller->is_frozen = FALSE; - xpt_release_simq(isci_controller->sim, TRUE); - } - sci_pool_put(isci_controller->request_pool, (struct ISCI_REQUEST *)isci_request); + + if (complete_ccb) { + if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + /* ccb will be completed with some type of non-success + * status. So temporarily freeze the queue until the + * upper layers can act on the status. The + * CAM_DEV_QFRZN flag will then release the queue + * after the status is acted upon. + */ + ccb->ccb_h.status |= CAM_DEV_QFRZN; + xpt_freeze_devq(ccb->ccb_h.path, 1); + } + + if (ccb->ccb_h.status & CAM_SIM_QUEUED) { + + KASSERT(ccb == isci_remote_device->queued_ccb_in_progress, + ("multiple internally queued ccbs in flight")); + + TAILQ_REMOVE(&isci_remote_device->queued_ccbs, + &ccb->ccb_h, sim_links.tqe); + ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + + /* + * This CCB that was in the queue was completed, so + * set the in_progress pointer to NULL denoting that + * we can retry another CCB from the queue. We only + * allow one CCB at a time from the queue to be + * in progress so that we can effectively maintain + * ordering. + */ + isci_remote_device->queued_ccb_in_progress = NULL; + } + + if (isci_remote_device->frozen_lun_mask != 0) { + isci_remote_device_release_device_queue(isci_remote_device); + } + + xpt_done(ccb); + + if (isci_controller->is_frozen == TRUE) { + isci_controller->is_frozen = FALSE; + xpt_release_simq(isci_controller->sim, TRUE); + } + } else { + isci_remote_device_freeze_lun_queue(isci_remote_device, + ccb->ccb_h.target_lun); + + if (ccb->ccb_h.status & CAM_SIM_QUEUED) { + + KASSERT(ccb == isci_remote_device->queued_ccb_in_progress, + ("multiple internally queued ccbs in flight")); + + /* + * Do nothing, CCB is already on the device's queue. + * We leave it on the queue, to be retried again + * next time a CCB on this device completes, or we + * get a ready notification for this device. + */ + isci_log_message(1, "ISCI", "already queued %p %x\n", + ccb, ccb->csio.cdb_io.cdb_bytes[0]); + + isci_remote_device->queued_ccb_in_progress = NULL; + + } else { + isci_log_message(1, "ISCI", "queue %p %x\n", ccb, + ccb->csio.cdb_io.cdb_bytes[0]); + ccb->ccb_h.status |= CAM_SIM_QUEUED; + + TAILQ_INSERT_TAIL(&isci_remote_device->queued_ccbs, + &ccb->ccb_h, sim_links.tqe); + } + } } /** Modified: stable/8/sys/dev/isci/isci_remote_device.c ============================================================================== --- stable/8/sys/dev/isci/isci_remote_device.c Tue May 29 23:10:10 2012 (r236263) +++ stable/8/sys/dev/isci/isci_remote_device.c Tue May 29 23:15:23 2012 (r236264) @@ -289,9 +289,26 @@ isci_remote_device_release_lun_queue(str void isci_remote_device_release_device_queue( - struct ISCI_REMOTE_DEVICE *remote_device) + struct ISCI_REMOTE_DEVICE *device) { - lun_id_t lun; - for (lun = 0; lun < ISCI_MAX_LUN; lun++) - isci_remote_device_release_lun_queue(remote_device, lun); + if (TAILQ_EMPTY(&device->queued_ccbs)) { + lun_id_t lun; + + for (lun = 0; lun < ISCI_MAX_LUN; lun++) + isci_remote_device_release_lun_queue(device, lun); + } else { + /* + * We cannot unfreeze the devq, because there are still + * CCBs in our internal queue that need to be processed + * first. Mark this device, and the controller, so that + * the first CCB in this device's internal queue will be + * resubmitted after the current completion context + * unwinds. + */ + device->release_queued_ccb = TRUE; + device->domain->controller->release_queued_ccbs = TRUE; + + isci_log_message(1, "ISCI", "schedule %p for release\n", + device); + } } From owner-svn-src-stable@FreeBSD.ORG Tue May 29 23:17:16 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 27944106566B; Tue, 29 May 2012 23:17:16 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 110DC8FC15; Tue, 29 May 2012 23:17:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4TNHF8S009133; Tue, 29 May 2012 23:17:15 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4TNHFmD009127; Tue, 29 May 2012 23:17:15 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201205292317.q4TNHFmD009127@svn.freebsd.org> From: Jim Harris Date: Tue, 29 May 2012 23:17:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236265 - stable/7/sys/dev/isci X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 May 2012 23:17:16 -0000 Author: jimharris Date: Tue May 29 23:17:15 2012 New Revision: 236265 URL: http://svn.freebsd.org/changeset/base/236265 Log: MFC r234106, r235751: Queue CCBs internally instead of using CAM_REQUEUE_REQ status. This fixes problem where userspace apps such as smartctl fail due to CAM_REQUEUE_REQ status getting returned when tagged commands are outstanding when smartctl sends its I/O using the pass(4) interface. Sponsored by: Intel Modified: stable/7/sys/dev/isci/isci.h stable/7/sys/dev/isci/isci_controller.c stable/7/sys/dev/isci/isci_interrupt.c stable/7/sys/dev/isci/isci_io_request.c stable/7/sys/dev/isci/isci_remote_device.c Directory Properties: stable/7/sys/ (props changed) Modified: stable/7/sys/dev/isci/isci.h ============================================================================== --- stable/7/sys/dev/isci/isci.h Tue May 29 23:15:23 2012 (r236264) +++ stable/7/sys/dev/isci/isci.h Tue May 29 23:17:15 2012 (r236265) @@ -30,6 +30,9 @@ * $FreeBSD$ */ +#ifndef _ISCI_H +#define _ISCI_H + #include #include #include @@ -86,6 +89,31 @@ struct ISCI_REMOTE_DEVICE { BOOL is_resetting; uint32_t frozen_lun_mask; SCI_FAST_LIST_ELEMENT_T pending_device_reset_element; + + /* + * This queue maintains CCBs that have been returned with + * SCI_IO_FAILURE_INVALID_STATE from the SCI layer. These CCBs + * need to be retried, but we cannot return CAM_REQUEUE_REQ because + * this status gets passed all the way back up to users of the pass(4) + * interface and breaks things like smartctl. So instead, we queue + * these CCBs internally. + */ + TAILQ_HEAD(,ccb_hdr) queued_ccbs; + + /* + * Marker denoting this remote device needs its first queued ccb to + * be retried. + */ + BOOL release_queued_ccb; + + /* + * Points to a CCB in the queue that is currently being processed by + * SCIL. This allows us to keep in flight CCBs in the queue so as to + * maintain ordering (i.e. in case we retry an I/O and then find out + * it needs to be retried again - it just keeps its same place in the + * queue. + */ + union ccb * queued_ccb_in_progress; }; struct ISCI_DOMAIN { @@ -125,6 +153,7 @@ struct ISCI_CONTROLLER BOOL has_been_scanned; uint32_t initial_discovery_mask; BOOL is_frozen; + BOOL release_queued_ccbs; uint8_t *remote_device_memory; struct ISCI_MEMORY cached_controller_memory; struct ISCI_MEMORY uncached_controller_memory; @@ -290,6 +319,8 @@ int isci_controller_attach_to_cam(struct void isci_controller_start(void *controller); +void isci_controller_release_queued_ccbs(struct ISCI_CONTROLLER *controller); + void isci_domain_construct(struct ISCI_DOMAIN *domain, uint32_t domain_index, struct ISCI_CONTROLLER *controller); @@ -300,3 +331,5 @@ void isci_log_message(uint32_t verbosity char *log_message, ...); extern uint32_t g_isci_debug_level; + +#endif /* #ifndef _ISCI_H */ Modified: stable/7/sys/dev/isci/isci_controller.c ============================================================================== --- stable/7/sys/dev/isci/isci_controller.c Tue May 29 23:15:23 2012 (r236264) +++ stable/7/sys/dev/isci/isci_controller.c Tue May 29 23:17:15 2012 (r236265) @@ -201,6 +201,7 @@ void isci_controller_construct(struct IS controller->is_started = FALSE; controller->is_frozen = FALSE; + controller->release_queued_ccbs = FALSE; controller->sim = NULL; controller->initial_discovery_mask = 0; @@ -430,6 +431,9 @@ int isci_controller_allocate_memory(stru remote_device->frozen_lun_mask = 0; sci_fast_list_element_init(remote_device, &remote_device->pending_device_reset_element); + TAILQ_INIT(&remote_device->queued_ccbs); + remote_device->release_queued_ccb = FALSE; + remote_device->queued_ccb_in_progress = NULL; /* * For the first SCI_MAX_DOMAINS device objects, do not put @@ -693,3 +697,47 @@ void isci_action(struct cam_sim *sim, un } } +/* + * Unfortunately, SCIL doesn't cleanly handle retry conditions. + * CAM_REQUEUE_REQ works only when no one is using the pass(4) interface. So + * when SCIL denotes an I/O needs to be retried (typically because of mixing + * tagged/non-tagged ATA commands, or running out of NCQ slots), we queue + * these I/O internally. Once SCIL completes an I/O to this device, or we get + * a ready notification, we will retry the first I/O on the queue. + * Unfortunately, SCIL also doesn't cleanly handle starting the new I/O within + * the context of the completion handler, so we need to retry these I/O after + * the completion handler is done executing. + */ +void +isci_controller_release_queued_ccbs(struct ISCI_CONTROLLER *controller) +{ + struct ISCI_REMOTE_DEVICE *dev; + struct ccb_hdr *ccb_h; + int dev_idx; + + KASSERT(mtx_owned(&controller->lock), ("controller lock not owned")); + + controller->release_queued_ccbs = FALSE; + for (dev_idx = 0; + dev_idx < SCI_MAX_REMOTE_DEVICES; + dev_idx++) { + + dev = controller->remote_device[dev_idx]; + if (dev != NULL && + dev->release_queued_ccb == TRUE && + dev->queued_ccb_in_progress == NULL) { + dev->release_queued_ccb = FALSE; + ccb_h = TAILQ_FIRST(&dev->queued_ccbs); + + if (ccb_h == NULL) + continue; + + isci_log_message(1, "ISCI", "release %p %x\n", ccb_h, + ((union ccb *)ccb_h)->csio.cdb_io.cdb_bytes[0]); + + dev->queued_ccb_in_progress = (union ccb *)ccb_h; + isci_io_request_execute_scsi_io( + (union ccb *)ccb_h, controller); + } + } +} Modified: stable/7/sys/dev/isci/isci_interrupt.c ============================================================================== --- stable/7/sys/dev/isci/isci_interrupt.c Tue May 29 23:15:23 2012 (r236264) +++ stable/7/sys/dev/isci/isci_interrupt.c Tue May 29 23:17:15 2012 (r236265) @@ -177,6 +177,9 @@ isci_interrupt_legacy_handler(void *arg) if (interrupt_handler(scic_controller_handle)) { mtx_lock(&controller->lock); completion_handler(scic_controller_handle); + if (controller->release_queued_ccbs == TRUE) + isci_controller_release_queued_ccbs( + controller); mtx_unlock(&controller->lock); } } @@ -204,6 +207,13 @@ isci_interrupt_msix_handler(void *arg) if (interrupt_handler(scic_controller_handle)) { mtx_lock(&controller->lock); completion_handler(scic_controller_handle); + /* + * isci_controller_release_queued_ccb() is a relatively + * expensive routine, so we don't call it until the controller + * level flag is set to TRUE. + */ + if (controller->release_queued_ccbs == TRUE) + isci_controller_release_queued_ccbs(controller); mtx_unlock(&controller->lock); } } Modified: stable/7/sys/dev/isci/isci_io_request.c ============================================================================== --- stable/7/sys/dev/isci/isci_io_request.c Tue May 29 23:15:23 2012 (r236264) +++ stable/7/sys/dev/isci/isci_io_request.c Tue May 29 23:17:15 2012 (r236265) @@ -85,7 +85,9 @@ isci_io_request_complete(SCI_CONTROLLER_ struct ISCI_CONTROLLER *isci_controller; struct ISCI_REMOTE_DEVICE *isci_remote_device; union ccb *ccb; + BOOL complete_ccb; + complete_ccb = TRUE; isci_controller = (struct ISCI_CONTROLLER *) sci_object_get_association(scif_controller); isci_remote_device = (struct ISCI_REMOTE_DEVICE *) sci_object_get_association(remote_device); @@ -163,9 +165,7 @@ isci_io_request_complete(SCI_CONTROLLER_ case SCI_IO_FAILURE_INVALID_STATE: case SCI_IO_FAILURE_INSUFFICIENT_RESOURCES: - ccb->ccb_h.status |= CAM_REQUEUE_REQ; - isci_remote_device_freeze_lun_queue(isci_remote_device, - ccb->ccb_h.target_lun); + complete_ccb = FALSE; break; case SCI_IO_FAILURE_INVALID_REMOTE_DEVICE: @@ -189,7 +189,7 @@ isci_io_request_complete(SCI_CONTROLLER_ scif_remote_device_get_max_queue_depth(remote_device); xpt_action((union ccb *)&ccb_relsim); xpt_free_path(path); - ccb->ccb_h.status |= CAM_REQUEUE_REQ; + complete_ccb = FALSE; } break; @@ -209,17 +209,6 @@ isci_io_request_complete(SCI_CONTROLLER_ break; } - if (ccb->ccb_h.status != CAM_REQ_CMP) { - /* ccb will be completed with some type of non-success - * status. So temporarily freeze the queue until the - * upper layers can act on the status. The CAM_DEV_QFRZN - * flag will then release the queue after the status is - * acted upon. - */ - ccb->ccb_h.status |= CAM_DEV_QFRZN; - xpt_freeze_devq(ccb->ccb_h.path, 1); - } - callout_stop(&isci_request->parent.timer); bus_dmamap_sync(isci_request->parent.dma_tag, isci_request->parent.dma_map, @@ -228,20 +217,82 @@ isci_io_request_complete(SCI_CONTROLLER_ bus_dmamap_unload(isci_request->parent.dma_tag, isci_request->parent.dma_map); - if (isci_remote_device->frozen_lun_mask != 0 && - !(ccb->ccb_h.status & CAM_REQUEUE_REQ)) - isci_remote_device_release_device_queue(isci_remote_device); - - xpt_done(ccb); isci_request->ccb = NULL; - if (isci_controller->is_frozen == TRUE) { - isci_controller->is_frozen = FALSE; - xpt_release_simq(isci_controller->sim, TRUE); - } - sci_pool_put(isci_controller->request_pool, (struct ISCI_REQUEST *)isci_request); + + if (complete_ccb) { + if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { + /* ccb will be completed with some type of non-success + * status. So temporarily freeze the queue until the + * upper layers can act on the status. The + * CAM_DEV_QFRZN flag will then release the queue + * after the status is acted upon. + */ + ccb->ccb_h.status |= CAM_DEV_QFRZN; + xpt_freeze_devq(ccb->ccb_h.path, 1); + } + + if (ccb->ccb_h.status & CAM_SIM_QUEUED) { + + KASSERT(ccb == isci_remote_device->queued_ccb_in_progress, + ("multiple internally queued ccbs in flight")); + + TAILQ_REMOVE(&isci_remote_device->queued_ccbs, + &ccb->ccb_h, sim_links.tqe); + ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + + /* + * This CCB that was in the queue was completed, so + * set the in_progress pointer to NULL denoting that + * we can retry another CCB from the queue. We only + * allow one CCB at a time from the queue to be + * in progress so that we can effectively maintain + * ordering. + */ + isci_remote_device->queued_ccb_in_progress = NULL; + } + + if (isci_remote_device->frozen_lun_mask != 0) { + isci_remote_device_release_device_queue(isci_remote_device); + } + + xpt_done(ccb); + + if (isci_controller->is_frozen == TRUE) { + isci_controller->is_frozen = FALSE; + xpt_release_simq(isci_controller->sim, TRUE); + } + } else { + isci_remote_device_freeze_lun_queue(isci_remote_device, + ccb->ccb_h.target_lun); + + if (ccb->ccb_h.status & CAM_SIM_QUEUED) { + + KASSERT(ccb == isci_remote_device->queued_ccb_in_progress, + ("multiple internally queued ccbs in flight")); + + /* + * Do nothing, CCB is already on the device's queue. + * We leave it on the queue, to be retried again + * next time a CCB on this device completes, or we + * get a ready notification for this device. + */ + isci_log_message(1, "ISCI", "already queued %p %x\n", + ccb, ccb->csio.cdb_io.cdb_bytes[0]); + + isci_remote_device->queued_ccb_in_progress = NULL; + + } else { + isci_log_message(1, "ISCI", "queue %p %x\n", ccb, + ccb->csio.cdb_io.cdb_bytes[0]); + ccb->ccb_h.status |= CAM_SIM_QUEUED; + + TAILQ_INSERT_TAIL(&isci_remote_device->queued_ccbs, + &ccb->ccb_h, sim_links.tqe); + } + } } /** Modified: stable/7/sys/dev/isci/isci_remote_device.c ============================================================================== --- stable/7/sys/dev/isci/isci_remote_device.c Tue May 29 23:15:23 2012 (r236264) +++ stable/7/sys/dev/isci/isci_remote_device.c Tue May 29 23:17:15 2012 (r236265) @@ -289,9 +289,26 @@ isci_remote_device_release_lun_queue(str void isci_remote_device_release_device_queue( - struct ISCI_REMOTE_DEVICE *remote_device) + struct ISCI_REMOTE_DEVICE *device) { - lun_id_t lun; - for (lun = 0; lun < ISCI_MAX_LUN; lun++) - isci_remote_device_release_lun_queue(remote_device, lun); + if (TAILQ_EMPTY(&device->queued_ccbs)) { + lun_id_t lun; + + for (lun = 0; lun < ISCI_MAX_LUN; lun++) + isci_remote_device_release_lun_queue(device, lun); + } else { + /* + * We cannot unfreeze the devq, because there are still + * CCBs in our internal queue that need to be processed + * first. Mark this device, and the controller, so that + * the first CCB in this device's internal queue will be + * resubmitted after the current completion context + * unwinds. + */ + device->release_queued_ccb = TRUE; + device->domain->controller->release_queued_ccbs = TRUE; + + isci_log_message(1, "ISCI", "schedule %p for release\n", + device); + } } From owner-svn-src-stable@FreeBSD.ORG Wed May 30 00:38:25 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1024D106564A; Wed, 30 May 2012 00:38:25 +0000 (UTC) (envelope-from emax@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EF0338FC0A; Wed, 30 May 2012 00:38:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4U0cORJ014439; Wed, 30 May 2012 00:38:24 GMT (envelope-from emax@svn.freebsd.org) Received: (from emax@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4U0cONx014437; Wed, 30 May 2012 00:38:24 GMT (envelope-from emax@svn.freebsd.org) Message-Id: <201205300038.q4U0cONx014437@svn.freebsd.org> From: Maksim Yevmenkin Date: Wed, 30 May 2012 00:38:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236269 - stable/9/sys/vm X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 00:38:25 -0000 Author: emax Date: Wed May 30 00:38:24 2012 New Revision: 236269 URL: http://svn.freebsd.org/changeset/base/236269 Log: MFC r235854 Tweak condition for disabling allocation from per-CPU buckets in low memory situation. I've observed a situation where per-CPU allocations were disabled while there were enough free cached pages. Basically, cnt.v_free_count was sitting stable at a value lower than cnt.v_free_min and that caused massive performance drop. Reviewed by: alc@ Modified: stable/9/sys/vm/uma_core.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/vm/uma_core.c ============================================================================== --- stable/9/sys/vm/uma_core.c Wed May 30 00:27:12 2012 (r236268) +++ stable/9/sys/vm/uma_core.c Wed May 30 00:38:24 2012 (r236269) @@ -267,10 +267,7 @@ SYSCTL_PROC(_vm, OID_AUTO, zone_stats, C static void bucket_enable(void) { - if (cnt.v_free_count < cnt.v_free_min) - bucketdisable = 1; - else - bucketdisable = 0; + bucketdisable = vm_page_count_min(); } /* From owner-svn-src-stable@FreeBSD.ORG Wed May 30 01:52:54 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 577841065670; Wed, 30 May 2012 01:52:54 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 41C918FC16; Wed, 30 May 2012 01:52:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4U1qrkA018065; Wed, 30 May 2012 01:52:53 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4U1qrvM018063; Wed, 30 May 2012 01:52:53 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201205300152.q4U1qrvM018063@svn.freebsd.org> From: David Xu Date: Wed, 30 May 2012 01:52:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236275 - stable/9/lib/libthr/thread X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 01:52:54 -0000 Author: davidxu Date: Wed May 30 01:52:53 2012 New Revision: 236275 URL: http://svn.freebsd.org/changeset/base/236275 Log: MFC r236135: Return EBUSY for PTHREAD_MUTEX_ADAPTIVE_NP too when the mutex could not be acquired. PR: 168317 Modified: stable/9/lib/libthr/thread/thr_mutex.c Directory Properties: stable/9/lib/libthr/ (props changed) Modified: stable/9/lib/libthr/thread/thr_mutex.c ============================================================================== --- stable/9/lib/libthr/thread/thr_mutex.c Wed May 30 01:52:01 2012 (r236274) +++ stable/9/lib/libthr/thread/thr_mutex.c Wed May 30 01:52:53 2012 (r236275) @@ -538,6 +538,7 @@ mutex_self_trylock(struct pthread_mutex switch (PMUTEX_TYPE(m->m_flags)) { case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_NORMAL: + case PTHREAD_MUTEX_ADAPTIVE_NP: ret = EBUSY; break; From owner-svn-src-stable@FreeBSD.ORG Wed May 30 01:54:15 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 73A63106564A; Wed, 30 May 2012 01:54:15 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5D1538FC08; Wed, 30 May 2012 01:54:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4U1sFWe018160; Wed, 30 May 2012 01:54:15 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4U1sFCE018158; Wed, 30 May 2012 01:54:15 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201205300154.q4U1sFCE018158@svn.freebsd.org> From: David Xu Date: Wed, 30 May 2012 01:54:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236276 - stable/8/lib/libthr/thread X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 01:54:15 -0000 Author: davidxu Date: Wed May 30 01:54:14 2012 New Revision: 236276 URL: http://svn.freebsd.org/changeset/base/236276 Log: MFC r236135: Return EBUSY for PTHREAD_MUTEX_ADAPTIVE_NP too when the mutex could not be acquired. PR: 168317 Modified: stable/8/lib/libthr/thread/thr_mutex.c Directory Properties: stable/8/lib/libthr/ (props changed) Modified: stable/8/lib/libthr/thread/thr_mutex.c ============================================================================== --- stable/8/lib/libthr/thread/thr_mutex.c Wed May 30 01:52:53 2012 (r236275) +++ stable/8/lib/libthr/thread/thr_mutex.c Wed May 30 01:54:14 2012 (r236276) @@ -484,6 +484,7 @@ mutex_self_trylock(struct pthread_mutex switch (m->m_type) { case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_NORMAL: + case PTHREAD_MUTEX_ADAPTIVE_NP: ret = EBUSY; break; From owner-svn-src-stable@FreeBSD.ORG Wed May 30 04:51:24 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8CA95106566C; Wed, 30 May 2012 04:51:24 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 75D888FC0A; Wed, 30 May 2012 04:51:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4U4pOU8027066; Wed, 30 May 2012 04:51:24 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4U4pOgs027060; Wed, 30 May 2012 04:51:24 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201205300451.q4U4pOgs027060@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 30 May 2012 04:51:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236292 - in stable/9/sys: compat/freebsd32 kern sys vm X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 04:51:24 -0000 Author: kib Date: Wed May 30 04:51:23 2012 New Revision: 236292 URL: http://svn.freebsd.org/changeset/base/236292 Log: MFC r235850: Calculate the count of per-process cow faults. Export the count to userspace using the obscure spare int field in struct kinfo_proc. MFC r236136: Fix ki_cow for compat32 binaries. Modified: stable/9/sys/compat/freebsd32/freebsd32.h stable/9/sys/kern/kern_proc.c stable/9/sys/sys/proc.h stable/9/sys/sys/user.h stable/9/sys/vm/vm_fault.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/compat/freebsd32/freebsd32.h ============================================================================== --- stable/9/sys/compat/freebsd32/freebsd32.h Wed May 30 04:16:54 2012 (r236291) +++ stable/9/sys/compat/freebsd32/freebsd32.h Wed May 30 04:51:23 2012 (r236292) @@ -297,7 +297,7 @@ struct kinfo_proc32 { u_int ki_estcpu; u_int ki_slptime; u_int ki_swtime; - int ki_spareint1; + u_int ki_cow; u_int64_t ki_runtime; struct timeval32 ki_start; struct timeval32 ki_childtime; Modified: stable/9/sys/kern/kern_proc.c ============================================================================== --- stable/9/sys/kern/kern_proc.c Wed May 30 04:16:54 2012 (r236291) +++ stable/9/sys/kern/kern_proc.c Wed May 30 04:51:23 2012 (r236292) @@ -878,6 +878,9 @@ fill_kinfo_proc_only(struct proc *p, str kp->ki_childtime = kp->ki_childstime; timevaladd(&kp->ki_childtime, &kp->ki_childutime); + FOREACH_THREAD_IN_PROC(p, td0) + kp->ki_cow += td0->td_cow; + tp = NULL; if (p->p_pgrp) { kp->ki_pgid = p->p_pgrp->pg_id; @@ -990,6 +993,7 @@ fill_kinfo_thread(struct thread *td, str kp->ki_runtime = cputick2usec(td->td_rux.rux_runtime); kp->ki_pctcpu = sched_pctcpu(td); kp->ki_estcpu = td->td_estcpu; + kp->ki_cow = td->td_cow; } /* We can't get this anymore but ps etc never used it anyway. */ @@ -1132,6 +1136,7 @@ freebsd32_kinfo_proc_out(const struct ki CP(*ki, *ki32, ki_estcpu); CP(*ki, *ki32, ki_slptime); CP(*ki, *ki32, ki_swtime); + CP(*ki, *ki32, ki_cow); CP(*ki, *ki32, ki_runtime); TV_CP(*ki, *ki32, ki_start); TV_CP(*ki, *ki32, ki_childtime); Modified: stable/9/sys/sys/proc.h ============================================================================== --- stable/9/sys/sys/proc.h Wed May 30 04:16:54 2012 (r236291) +++ stable/9/sys/sys/proc.h Wed May 30 04:51:23 2012 (r236292) @@ -247,6 +247,7 @@ struct thread { int td_slptick; /* (t) Time at sleep. */ int td_blktick; /* (t) Time spent blocked. */ int td_swvoltick; /* (t) Time at last SW_VOL switch. */ + u_int td_cow; /* (*) Number of copy-on-write faults */ struct rusage td_ru; /* (t) rusage information. */ struct rusage_ext td_rux; /* (t) Internal rusage information. */ uint64_t td_incruntime; /* (t) Cpu ticks to transfer to proc. */ Modified: stable/9/sys/sys/user.h ============================================================================== --- stable/9/sys/sys/user.h Wed May 30 04:16:54 2012 (r236291) +++ stable/9/sys/sys/user.h Wed May 30 04:51:23 2012 (r236292) @@ -159,7 +159,7 @@ struct kinfo_proc { u_int ki_estcpu; /* Time averaged value of ki_cpticks */ u_int ki_slptime; /* Time since last blocked */ u_int ki_swtime; /* Time swapped in or out */ - int ki_spareint1; /* unused (just here for alignment) */ + u_int ki_cow; /* number of copy-on-write faults */ u_int64_t ki_runtime; /* Real time in microsec */ struct timeval ki_start; /* starting time */ struct timeval ki_childtime; /* time used by process children */ Modified: stable/9/sys/vm/vm_fault.c ============================================================================== --- stable/9/sys/vm/vm_fault.c Wed May 30 04:16:54 2012 (r236291) +++ stable/9/sys/vm/vm_fault.c Wed May 30 04:51:23 2012 (r236292) @@ -788,6 +788,7 @@ vnode_locked: if (!is_first_object_locked) VM_OBJECT_LOCK(fs.object); PCPU_INC(cnt.v_cow_faults); + curthread->td_cow++; } else { prot &= ~VM_PROT_WRITE; } From owner-svn-src-stable@FreeBSD.ORG Wed May 30 04:54:39 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A6F7B106566C; Wed, 30 May 2012 04:54:39 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 90F6A8FC08; Wed, 30 May 2012 04:54:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4U4sduq027253; Wed, 30 May 2012 04:54:39 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4U4sd7Q027249; Wed, 30 May 2012 04:54:39 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201205300454.q4U4sd7Q027249@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 30 May 2012 04:54:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236293 - stable/9/bin/ps X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 04:54:39 -0000 Author: kib Date: Wed May 30 04:54:39 2012 New Revision: 236293 URL: http://svn.freebsd.org/changeset/base/236293 Log: MFC r235851: Add 'cow' keyword to show per-process cow count. Modified: stable/9/bin/ps/keyword.c stable/9/bin/ps/ps.1 Directory Properties: stable/9/bin/ps/ (props changed) Modified: stable/9/bin/ps/keyword.c ============================================================================== --- stable/9/bin/ps/keyword.c Wed May 30 04:51:23 2012 (r236292) +++ stable/9/bin/ps/keyword.c Wed May 30 04:54:39 2012 (r236293) @@ -76,6 +76,7 @@ static VAR var[] = { {"comm", "COMMAND", NULL, LJUST, ucomm, 0, CHAR, NULL, 0}, {"command", "COMMAND", NULL, COMM|LJUST|USER, command, 0, CHAR, NULL, 0}, + {"cow", "COW", NULL, 0, kvar, KOFF(ki_cow), UINT, "u", 0}, {"cpu", "CPU", NULL, 0, kvar, KOFF(ki_estcpu), UINT, "d", 0}, {"cputime", "", "time", 0, NULL, 0, CHAR, NULL, 0}, {"egid", "", "gid", 0, NULL, 0, CHAR, NULL, 0}, Modified: stable/9/bin/ps/ps.1 ============================================================================== --- stable/9/bin/ps/ps.1 Wed May 30 04:51:23 2012 (r236292) +++ stable/9/bin/ps/ps.1 Wed May 30 04:54:39 2012 (r236293) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd March 8, 2012 +.Dd May 20, 2012 .Dt PS 1 .Os .Sh NAME @@ -492,6 +492,8 @@ login class command .It Cm command command and arguments +.It Cm cow +number of copy-on-write faults .It Cm cpu short-term CPU usage factor (for scheduling) .It Cm emul From owner-svn-src-stable@FreeBSD.ORG Wed May 30 06:53:09 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D3D7D1065670; Wed, 30 May 2012 06:53:09 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A407E8FC0A; Wed, 30 May 2012 06:53:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4U6r98J032213; Wed, 30 May 2012 06:53:09 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4U6r9uk032211; Wed, 30 May 2012 06:53:09 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201205300653.q4U6r9uk032211@svn.freebsd.org> From: Dimitry Andric Date: Wed, 30 May 2012 06:53:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236296 - stable/9/contrib/llvm/tools/clang/lib/CodeGen X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 06:53:09 -0000 Author: dim Date: Wed May 30 06:53:09 2012 New Revision: 236296 URL: http://svn.freebsd.org/changeset/base/236296 Log: MFC r236149: Pull in r157212 from upstream clang trunk: Revert r115805. An array type is required to have a range type, however, the range can be unknown for the upper bound. Testcase to follow. Part of rdar://11457152 This should fix ctfconvert producing error messages during kernel builds, similar to: ERROR: scsi_all.c: die 24561: failed to retrieve array bounds These were caused by incorrect debug information for flexible array members of structs. Modified: stable/9/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp Directory Properties: stable/9/contrib/llvm/ (props changed) stable/9/contrib/llvm/tools/clang/ (props changed) Modified: stable/9/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp Wed May 30 05:59:45 2012 (r236295) +++ stable/9/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp Wed May 30 06:53:09 2012 (r236296) @@ -1479,25 +1479,21 @@ llvm::DIType CGDebugInfo::CreateType(con // obvious/recursive way? SmallVector Subscripts; QualType EltTy(Ty, 0); - if (Ty->isIncompleteArrayType()) + while ((Ty = dyn_cast(EltTy))) { + int64_t UpperBound = 0; + int64_t LowerBound = 0; + if (const ConstantArrayType *CAT = dyn_cast(Ty)) { + if (CAT->getSize().getZExtValue()) + UpperBound = CAT->getSize().getZExtValue() - 1; + } else + // This is an unbounded array. Use Low = 1, Hi = 0 to express such + // arrays. + LowerBound = 1; + + // FIXME: Verify this is right for VLAs. + Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound, + UpperBound)); EltTy = Ty->getElementType(); - else { - while ((Ty = dyn_cast(EltTy))) { - int64_t UpperBound = 0; - int64_t LowerBound = 0; - if (const ConstantArrayType *CAT = dyn_cast(Ty)) { - if (CAT->getSize().getZExtValue()) - UpperBound = CAT->getSize().getZExtValue() - 1; - } else - // This is an unbounded array. Use Low = 1, Hi = 0 to express such - // arrays. - LowerBound = 1; - - // FIXME: Verify this is right for VLAs. - Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound, - UpperBound)); - EltTy = Ty->getElementType(); - } } llvm::DIArray SubscriptArray = DBuilder.getOrCreateArray(Subscripts); From owner-svn-src-stable@FreeBSD.ORG Wed May 30 12:01:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8F03F1065673; Wed, 30 May 2012 12:01:29 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 76B688FC27; Wed, 30 May 2012 12:01:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UC1TQI047226; Wed, 30 May 2012 12:01:29 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UC1TP0047222; Wed, 30 May 2012 12:01:29 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201205301201.q4UC1TP0047222@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Wed, 30 May 2012 12:01:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236304 - head/crypto/openssl/crypto/buffer head/crypto/openssl/ssl head/secure/lib/libcrypt releng/7.4 releng/7.4/crypto/openssl/crypto/buffer releng/7.4/crypto/openssl/ssl releng/7.4/... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 12:01:29 -0000 Author: bz Date: Wed May 30 12:01:28 2012 New Revision: 236304 URL: http://svn.freebsd.org/changeset/base/236304 Log: Update the previous openssl fix. [12:01] Fix a bug in crypt(3) ignoring characters of a passphrase. [12:02] Security: FreeBSD-SA-12:01.openssl (revised) Security: FreeBSD-SA-12:02.crypt Approved by: so (bz, simon) Modified: stable/7/crypto/openssl/crypto/buffer/buffer.c stable/7/crypto/openssl/ssl/s3_srvr.c stable/7/secure/lib/libcrypt/crypt-des.c Changes in other areas also in this revision: Modified: head/crypto/openssl/crypto/buffer/buffer.c head/crypto/openssl/ssl/s3_srvr.c head/secure/lib/libcrypt/crypt-des.c releng/7.4/UPDATING releng/7.4/crypto/openssl/crypto/buffer/buffer.c releng/7.4/crypto/openssl/ssl/s3_srvr.c releng/7.4/secure/lib/libcrypt/crypt-des.c releng/7.4/sys/conf/newvers.sh releng/8.1/UPDATING releng/8.1/crypto/openssl/crypto/buffer/buffer.c releng/8.1/crypto/openssl/ssl/s3_srvr.c releng/8.1/secure/lib/libcrypt/crypt-des.c releng/8.1/sys/conf/newvers.sh releng/8.2/UPDATING releng/8.2/crypto/openssl/crypto/buffer/buffer.c releng/8.2/crypto/openssl/ssl/s3_srvr.c releng/8.2/secure/lib/libcrypt/crypt-des.c releng/8.2/sys/conf/newvers.sh releng/8.3/UPDATING releng/8.3/crypto/openssl/crypto/buffer/buffer.c releng/8.3/crypto/openssl/ssl/s3_srvr.c releng/8.3/secure/lib/libcrypt/crypt-des.c releng/8.3/sys/conf/newvers.sh releng/9.0/UPDATING releng/9.0/crypto/openssl/crypto/buffer/buffer.c releng/9.0/crypto/openssl/ssl/s3_srvr.c releng/9.0/secure/lib/libcrypt/crypt-des.c releng/9.0/sys/conf/newvers.sh stable/8/crypto/openssl/crypto/buffer/buffer.c stable/8/crypto/openssl/ssl/s3_srvr.c stable/8/secure/lib/libcrypt/crypt-des.c stable/9/crypto/openssl/crypto/buffer/buffer.c stable/9/crypto/openssl/ssl/s3_srvr.c stable/9/secure/lib/libcrypt/crypt-des.c Modified: stable/7/crypto/openssl/crypto/buffer/buffer.c ============================================================================== --- stable/7/crypto/openssl/crypto/buffer/buffer.c Wed May 30 11:48:57 2012 (r236303) +++ stable/7/crypto/openssl/crypto/buffer/buffer.c Wed May 30 12:01:28 2012 (r236304) @@ -166,7 +166,7 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int /* This limit is sufficient to ensure (len+3)/3*4 < 2**31 */ if (len > LIMIT_BEFORE_EXPANSION) { - BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE); + BUFerr(BUF_F_BUF_MEM_GROW_CLEAN,ERR_R_MALLOC_FAILURE); return 0; } n=(len+3)/3*4; Modified: stable/7/crypto/openssl/ssl/s3_srvr.c ============================================================================== --- stable/7/crypto/openssl/ssl/s3_srvr.c Wed May 30 11:48:57 2012 (r236303) +++ stable/7/crypto/openssl/ssl/s3_srvr.c Wed May 30 12:01:28 2012 (r236304) @@ -698,14 +698,6 @@ int ssl3_check_client_hello(SSL *s) int ok; long n; - /* We only allow the client to restart the handshake once per - * negotiation. */ - if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE) - { - SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS); - return -1; - } - /* this function is called when we really expect a Certificate message, * so permit appropriate message length */ n=s->method->ssl_get_message(s, @@ -718,6 +710,13 @@ int ssl3_check_client_hello(SSL *s) s->s3->tmp.reuse_message = 1; if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO) { + /* We only allow the client to restart the handshake once per + * negotiation. */ + if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE) + { + SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS); + return -1; + } /* Throw away what we have done so far in the current handshake, * which will now be aborted. (A full SSL_clear would be too much.) */ #ifndef OPENSSL_NO_DH Modified: stable/7/secure/lib/libcrypt/crypt-des.c ============================================================================== --- stable/7/secure/lib/libcrypt/crypt-des.c Wed May 30 11:48:57 2012 (r236303) +++ stable/7/secure/lib/libcrypt/crypt-des.c Wed May 30 12:01:28 2012 (r236304) @@ -606,7 +606,7 @@ crypt_des(const char *key, const char *s q = (u_char *)keybuf; while (q - (u_char *)keybuf - 8) { *q++ = *key << 1; - if (*(q - 1)) + if (*key != '\0') key++; } if (des_setkey((char *)keybuf)) From owner-svn-src-stable@FreeBSD.ORG Wed May 30 12:01:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C869F1065678; Wed, 30 May 2012 12:01:29 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B04DF8FC2D; Wed, 30 May 2012 12:01:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UC1TMR047234; Wed, 30 May 2012 12:01:29 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UC1TmV047230; Wed, 30 May 2012 12:01:29 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201205301201.q4UC1TmV047230@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Wed, 30 May 2012 12:01:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236304 - head/crypto/openssl/crypto/buffer head/crypto/openssl/ssl head/secure/lib/libcrypt releng/7.4 releng/7.4/crypto/openssl/crypto/buffer releng/7.4/crypto/openssl/ssl releng/7.4/... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 12:01:29 -0000 Author: bz Date: Wed May 30 12:01:28 2012 New Revision: 236304 URL: http://svn.freebsd.org/changeset/base/236304 Log: Update the previous openssl fix. [12:01] Fix a bug in crypt(3) ignoring characters of a passphrase. [12:02] Security: FreeBSD-SA-12:01.openssl (revised) Security: FreeBSD-SA-12:02.crypt Approved by: so (bz, simon) Modified: stable/8/crypto/openssl/crypto/buffer/buffer.c stable/8/crypto/openssl/ssl/s3_srvr.c stable/8/secure/lib/libcrypt/crypt-des.c Changes in other areas also in this revision: Modified: head/crypto/openssl/crypto/buffer/buffer.c head/crypto/openssl/ssl/s3_srvr.c head/secure/lib/libcrypt/crypt-des.c releng/7.4/UPDATING releng/7.4/crypto/openssl/crypto/buffer/buffer.c releng/7.4/crypto/openssl/ssl/s3_srvr.c releng/7.4/secure/lib/libcrypt/crypt-des.c releng/7.4/sys/conf/newvers.sh releng/8.1/UPDATING releng/8.1/crypto/openssl/crypto/buffer/buffer.c releng/8.1/crypto/openssl/ssl/s3_srvr.c releng/8.1/secure/lib/libcrypt/crypt-des.c releng/8.1/sys/conf/newvers.sh releng/8.2/UPDATING releng/8.2/crypto/openssl/crypto/buffer/buffer.c releng/8.2/crypto/openssl/ssl/s3_srvr.c releng/8.2/secure/lib/libcrypt/crypt-des.c releng/8.2/sys/conf/newvers.sh releng/8.3/UPDATING releng/8.3/crypto/openssl/crypto/buffer/buffer.c releng/8.3/crypto/openssl/ssl/s3_srvr.c releng/8.3/secure/lib/libcrypt/crypt-des.c releng/8.3/sys/conf/newvers.sh releng/9.0/UPDATING releng/9.0/crypto/openssl/crypto/buffer/buffer.c releng/9.0/crypto/openssl/ssl/s3_srvr.c releng/9.0/secure/lib/libcrypt/crypt-des.c releng/9.0/sys/conf/newvers.sh stable/7/crypto/openssl/crypto/buffer/buffer.c stable/7/crypto/openssl/ssl/s3_srvr.c stable/7/secure/lib/libcrypt/crypt-des.c stable/9/crypto/openssl/crypto/buffer/buffer.c stable/9/crypto/openssl/ssl/s3_srvr.c stable/9/secure/lib/libcrypt/crypt-des.c Modified: stable/8/crypto/openssl/crypto/buffer/buffer.c ============================================================================== --- stable/8/crypto/openssl/crypto/buffer/buffer.c Wed May 30 11:48:57 2012 (r236303) +++ stable/8/crypto/openssl/crypto/buffer/buffer.c Wed May 30 12:01:28 2012 (r236304) @@ -166,7 +166,7 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int /* This limit is sufficient to ensure (len+3)/3*4 < 2**31 */ if (len > LIMIT_BEFORE_EXPANSION) { - BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE); + BUFerr(BUF_F_BUF_MEM_GROW_CLEAN,ERR_R_MALLOC_FAILURE); return 0; } n=(len+3)/3*4; Modified: stable/8/crypto/openssl/ssl/s3_srvr.c ============================================================================== --- stable/8/crypto/openssl/ssl/s3_srvr.c Wed May 30 11:48:57 2012 (r236303) +++ stable/8/crypto/openssl/ssl/s3_srvr.c Wed May 30 12:01:28 2012 (r236304) @@ -698,14 +698,6 @@ int ssl3_check_client_hello(SSL *s) int ok; long n; - /* We only allow the client to restart the handshake once per - * negotiation. */ - if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE) - { - SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS); - return -1; - } - /* this function is called when we really expect a Certificate message, * so permit appropriate message length */ n=s->method->ssl_get_message(s, @@ -718,6 +710,13 @@ int ssl3_check_client_hello(SSL *s) s->s3->tmp.reuse_message = 1; if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO) { + /* We only allow the client to restart the handshake once per + * negotiation. */ + if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE) + { + SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS); + return -1; + } /* Throw away what we have done so far in the current handshake, * which will now be aborted. (A full SSL_clear would be too much.) */ #ifndef OPENSSL_NO_DH Modified: stable/8/secure/lib/libcrypt/crypt-des.c ============================================================================== --- stable/8/secure/lib/libcrypt/crypt-des.c Wed May 30 11:48:57 2012 (r236303) +++ stable/8/secure/lib/libcrypt/crypt-des.c Wed May 30 12:01:28 2012 (r236304) @@ -606,7 +606,7 @@ crypt_des(const char *key, const char *s q = (u_char *)keybuf; while (q - (u_char *)keybuf - 8) { *q++ = *key << 1; - if (*(q - 1)) + if (*key != '\0') key++; } if (des_setkey((char *)keybuf)) From owner-svn-src-stable@FreeBSD.ORG Wed May 30 12:01:30 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E1EA1065679; Wed, 30 May 2012 12:01:30 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E9EB18FC08; Wed, 30 May 2012 12:01:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UC1Tex047242; Wed, 30 May 2012 12:01:29 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UC1TEH047238; Wed, 30 May 2012 12:01:29 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201205301201.q4UC1TEH047238@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Wed, 30 May 2012 12:01:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236304 - head/crypto/openssl/crypto/buffer head/crypto/openssl/ssl head/secure/lib/libcrypt releng/7.4 releng/7.4/crypto/openssl/crypto/buffer releng/7.4/crypto/openssl/ssl releng/7.4/... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 12:01:30 -0000 Author: bz Date: Wed May 30 12:01:28 2012 New Revision: 236304 URL: http://svn.freebsd.org/changeset/base/236304 Log: Update the previous openssl fix. [12:01] Fix a bug in crypt(3) ignoring characters of a passphrase. [12:02] Security: FreeBSD-SA-12:01.openssl (revised) Security: FreeBSD-SA-12:02.crypt Approved by: so (bz, simon) Modified: stable/9/crypto/openssl/crypto/buffer/buffer.c stable/9/crypto/openssl/ssl/s3_srvr.c stable/9/secure/lib/libcrypt/crypt-des.c Changes in other areas also in this revision: Modified: head/crypto/openssl/crypto/buffer/buffer.c head/crypto/openssl/ssl/s3_srvr.c head/secure/lib/libcrypt/crypt-des.c releng/7.4/UPDATING releng/7.4/crypto/openssl/crypto/buffer/buffer.c releng/7.4/crypto/openssl/ssl/s3_srvr.c releng/7.4/secure/lib/libcrypt/crypt-des.c releng/7.4/sys/conf/newvers.sh releng/8.1/UPDATING releng/8.1/crypto/openssl/crypto/buffer/buffer.c releng/8.1/crypto/openssl/ssl/s3_srvr.c releng/8.1/secure/lib/libcrypt/crypt-des.c releng/8.1/sys/conf/newvers.sh releng/8.2/UPDATING releng/8.2/crypto/openssl/crypto/buffer/buffer.c releng/8.2/crypto/openssl/ssl/s3_srvr.c releng/8.2/secure/lib/libcrypt/crypt-des.c releng/8.2/sys/conf/newvers.sh releng/8.3/UPDATING releng/8.3/crypto/openssl/crypto/buffer/buffer.c releng/8.3/crypto/openssl/ssl/s3_srvr.c releng/8.3/secure/lib/libcrypt/crypt-des.c releng/8.3/sys/conf/newvers.sh releng/9.0/UPDATING releng/9.0/crypto/openssl/crypto/buffer/buffer.c releng/9.0/crypto/openssl/ssl/s3_srvr.c releng/9.0/secure/lib/libcrypt/crypt-des.c releng/9.0/sys/conf/newvers.sh stable/7/crypto/openssl/crypto/buffer/buffer.c stable/7/crypto/openssl/ssl/s3_srvr.c stable/7/secure/lib/libcrypt/crypt-des.c stable/8/crypto/openssl/crypto/buffer/buffer.c stable/8/crypto/openssl/ssl/s3_srvr.c stable/8/secure/lib/libcrypt/crypt-des.c Modified: stable/9/crypto/openssl/crypto/buffer/buffer.c ============================================================================== --- stable/9/crypto/openssl/crypto/buffer/buffer.c Wed May 30 11:48:57 2012 (r236303) +++ stable/9/crypto/openssl/crypto/buffer/buffer.c Wed May 30 12:01:28 2012 (r236304) @@ -166,7 +166,7 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int /* This limit is sufficient to ensure (len+3)/3*4 < 2**31 */ if (len > LIMIT_BEFORE_EXPANSION) { - BUFerr(BUF_F_BUF_MEM_GROW,ERR_R_MALLOC_FAILURE); + BUFerr(BUF_F_BUF_MEM_GROW_CLEAN,ERR_R_MALLOC_FAILURE); return 0; } n=(len+3)/3*4; Modified: stable/9/crypto/openssl/ssl/s3_srvr.c ============================================================================== --- stable/9/crypto/openssl/ssl/s3_srvr.c Wed May 30 11:48:57 2012 (r236303) +++ stable/9/crypto/openssl/ssl/s3_srvr.c Wed May 30 12:01:28 2012 (r236304) @@ -698,14 +698,6 @@ int ssl3_check_client_hello(SSL *s) int ok; long n; - /* We only allow the client to restart the handshake once per - * negotiation. */ - if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE) - { - SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS); - return -1; - } - /* this function is called when we really expect a Certificate message, * so permit appropriate message length */ n=s->method->ssl_get_message(s, @@ -718,6 +710,13 @@ int ssl3_check_client_hello(SSL *s) s->s3->tmp.reuse_message = 1; if (s->s3->tmp.message_type == SSL3_MT_CLIENT_HELLO) { + /* We only allow the client to restart the handshake once per + * negotiation. */ + if (s->s3->flags & SSL3_FLAGS_SGC_RESTART_DONE) + { + SSLerr(SSL_F_SSL3_CHECK_CLIENT_HELLO, SSL_R_MULTIPLE_SGC_RESTARTS); + return -1; + } /* Throw away what we have done so far in the current handshake, * which will now be aborted. (A full SSL_clear would be too much.) */ #ifndef OPENSSL_NO_DH Modified: stable/9/secure/lib/libcrypt/crypt-des.c ============================================================================== --- stable/9/secure/lib/libcrypt/crypt-des.c Wed May 30 11:48:57 2012 (r236303) +++ stable/9/secure/lib/libcrypt/crypt-des.c Wed May 30 12:01:28 2012 (r236304) @@ -606,7 +606,7 @@ crypt_des(const char *key, const char *s q = (u_char *)keybuf; while (q - (u_char *)keybuf - 8) { *q++ = *key << 1; - if (*(q - 1)) + if (*key != '\0') key++; } if (des_setkey((char *)keybuf)) From owner-svn-src-stable@FreeBSD.ORG Wed May 30 12:45:53 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A629D1065678; Wed, 30 May 2012 12:45:53 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8FA758FC1D; Wed, 30 May 2012 12:45:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UCjrAu049114; Wed, 30 May 2012 12:45:53 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UCjrmZ049108; Wed, 30 May 2012 12:45:53 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201205301245.q4UCjrmZ049108@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 30 May 2012 12:45:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236305 - in stable/8/sys: compat/freebsd32 kern sys vm X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 12:45:53 -0000 Author: kib Date: Wed May 30 12:45:52 2012 New Revision: 236305 URL: http://svn.freebsd.org/changeset/base/236305 Log: MFC r235850: Calculate the count of per-process cow faults. Export the count to userspace using the obscure spare int field in struct kinfo_proc. MFC r236136: Fix ki_cow for compat32 binaries. Modified: stable/8/sys/compat/freebsd32/freebsd32.h stable/8/sys/kern/kern_proc.c stable/8/sys/sys/proc.h stable/8/sys/sys/user.h stable/8/sys/vm/vm_fault.c Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/compat/freebsd32/freebsd32.h ============================================================================== --- stable/8/sys/compat/freebsd32/freebsd32.h Wed May 30 12:01:28 2012 (r236304) +++ stable/8/sys/compat/freebsd32/freebsd32.h Wed May 30 12:45:52 2012 (r236305) @@ -297,7 +297,7 @@ struct kinfo_proc32 { u_int ki_estcpu; u_int ki_slptime; u_int ki_swtime; - int ki_spareint1; + u_int ki_cow; u_int64_t ki_runtime; struct timeval32 ki_start; struct timeval32 ki_childtime; Modified: stable/8/sys/kern/kern_proc.c ============================================================================== --- stable/8/sys/kern/kern_proc.c Wed May 30 12:01:28 2012 (r236304) +++ stable/8/sys/kern/kern_proc.c Wed May 30 12:45:52 2012 (r236305) @@ -869,6 +869,10 @@ fill_kinfo_proc_only(struct proc *p, str kp->ki_childtime = kp->ki_childstime; timevaladd(&kp->ki_childtime, &kp->ki_childutime); } + + FOREACH_THREAD_IN_PROC(p, td0) + kp->ki_cow += td0->td_cow; + tp = NULL; if (p->p_pgrp) { kp->ki_pgid = p->p_pgrp->pg_id; @@ -978,6 +982,7 @@ fill_kinfo_thread(struct thread *td, str kp->ki_runtime = cputick2usec(td->td_rux.rux_runtime); kp->ki_pctcpu = sched_pctcpu(td); kp->ki_estcpu = td->td_estcpu; + kp->ki_cow = td->td_cow; } /* We can't get this anymore but ps etc never used it anyway. */ @@ -1118,6 +1123,7 @@ freebsd32_kinfo_proc_out(const struct ki CP(*ki, *ki32, ki_estcpu); CP(*ki, *ki32, ki_slptime); CP(*ki, *ki32, ki_swtime); + CP(*ki, *ki32, ki_cow); CP(*ki, *ki32, ki_runtime); TV_CP(*ki, *ki32, ki_start); TV_CP(*ki, *ki32, ki_childtime); Modified: stable/8/sys/sys/proc.h ============================================================================== --- stable/8/sys/sys/proc.h Wed May 30 12:01:28 2012 (r236304) +++ stable/8/sys/sys/proc.h Wed May 30 12:45:52 2012 (r236305) @@ -240,6 +240,7 @@ struct thread { u_int td_estcpu; /* (t) estimated cpu utilization */ int td_slptick; /* (t) Time at sleep. */ int td_blktick; /* (t) Time spent blocked. */ + u_int td_cow; /* (*) Number of copy-on-write faults */ struct rusage td_ru; /* (t) rusage information. */ uint64_t td_incruntime; /* (t) Cpu ticks to transfer to proc. */ uint64_t td_runtime; /* (t) How many cpu ticks we've run. */ Modified: stable/8/sys/sys/user.h ============================================================================== --- stable/8/sys/sys/user.h Wed May 30 12:01:28 2012 (r236304) +++ stable/8/sys/sys/user.h Wed May 30 12:45:52 2012 (r236305) @@ -151,7 +151,7 @@ struct kinfo_proc { u_int ki_estcpu; /* Time averaged value of ki_cpticks */ u_int ki_slptime; /* Time since last blocked */ u_int ki_swtime; /* Time swapped in or out */ - int ki_spareint1; /* unused (just here for alignment) */ + u_int ki_cow; /* number of copy-on-write faults */ u_int64_t ki_runtime; /* Real time in microsec */ struct timeval ki_start; /* starting time */ struct timeval ki_childtime; /* time used by process children */ Modified: stable/8/sys/vm/vm_fault.c ============================================================================== --- stable/8/sys/vm/vm_fault.c Wed May 30 12:01:28 2012 (r236304) +++ stable/8/sys/vm/vm_fault.c Wed May 30 12:45:52 2012 (r236305) @@ -823,6 +823,7 @@ vnode_locked: if (!is_first_object_locked) VM_OBJECT_LOCK(fs.object); PCPU_INC(cnt.v_cow_faults); + curthread->td_cow++; } else { prot &= ~VM_PROT_WRITE; } From owner-svn-src-stable@FreeBSD.ORG Wed May 30 13:00:43 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CB506106566C; Wed, 30 May 2012 13:00:43 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B5CB98FC0C; Wed, 30 May 2012 13:00:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UD0hI9050421; Wed, 30 May 2012 13:00:43 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UD0hN2050418; Wed, 30 May 2012 13:00:43 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201205301300.q4UD0hN2050418@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 30 May 2012 13:00:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236306 - stable/8/bin/ps X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 13:00:43 -0000 Author: kib Date: Wed May 30 13:00:43 2012 New Revision: 236306 URL: http://svn.freebsd.org/changeset/base/236306 Log: MFC r235851: Add 'cow' keyword to show per-process cow count. Modified: stable/8/bin/ps/keyword.c stable/8/bin/ps/ps.1 Directory Properties: stable/8/bin/ps/ (props changed) Modified: stable/8/bin/ps/keyword.c ============================================================================== --- stable/8/bin/ps/keyword.c Wed May 30 12:45:52 2012 (r236305) +++ stable/8/bin/ps/keyword.c Wed May 30 13:00:43 2012 (r236306) @@ -83,6 +83,7 @@ static VAR var[] = { COMMLEN + OCOMMLEN + 1, 0, CHAR, NULL, 0}, {"command", "COMMAND", NULL, COMM|LJUST|USER, command, NULL, 16, 0, CHAR, NULL, 0}, + {"cow", "COW", NULL, 0, kvar, NULL, 8, KOFF(ki_cow), UINT, "u", 0}, {"cpu", "CPU", NULL, 0, kvar, NULL, 3, KOFF(ki_estcpu), UINT, "d", 0}, {"cputime", "", "time", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, Modified: stable/8/bin/ps/ps.1 ============================================================================== --- stable/8/bin/ps/ps.1 Wed May 30 12:45:52 2012 (r236305) +++ stable/8/bin/ps/ps.1 Wed May 30 13:00:43 2012 (r236306) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd October 1, 2011 +.Dd May 20, 2012 .Dt PS 1 .Os .Sh NAME @@ -486,6 +486,8 @@ command and arguments command .It Cm command command and arguments +.It Cm cow +number of copy-on-write faults .It Cm cpu short-term CPU usage factor (for scheduling) .It Cm etime From owner-svn-src-stable@FreeBSD.ORG Wed May 30 16:04:10 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DCCC9106564A; Wed, 30 May 2012 16:04:10 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C71EA8FC0C; Wed, 30 May 2012 16:04:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UG4AIU061118; Wed, 30 May 2012 16:04:10 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UG4ATT061114; Wed, 30 May 2012 16:04:10 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201205301604.q4UG4ATT061114@svn.freebsd.org> From: John Baldwin Date: Wed, 30 May 2012 16:04:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236316 - stable/9/sys/ofed/drivers/net/mlx4 X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 16:04:11 -0000 Author: jhb Date: Wed May 30 16:04:10 2012 New Revision: 236316 URL: http://svn.freebsd.org/changeset/base/236316 Log: MFC 234099: Properly parse 40G media types from newer Mellanox adapters that are 40G capable. For now, map all 40G links to 40GBase-CR4. Modified: stable/9/sys/ofed/drivers/net/mlx4/en_netdev.c stable/9/sys/ofed/drivers/net/mlx4/en_port.c stable/9/sys/ofed/drivers/net/mlx4/en_port.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/ofed/drivers/net/mlx4/en_netdev.c ============================================================================== --- stable/9/sys/ofed/drivers/net/mlx4/en_netdev.c Wed May 30 15:51:02 2012 (r236315) +++ stable/9/sys/ofed/drivers/net/mlx4/en_netdev.c Wed May 30 16:04:10 2012 (r236316) @@ -991,12 +991,20 @@ static int mlx4_en_calc_media(struct mlx active |= IFM_FDX; trans_type = priv->port_state.transciver; /* XXX I don't know all of the transceiver values. */ - if (priv->port_state.link_speed == 1000) + switch (priv->port_state.link_speed) { + case 1000: active |= IFM_1000_T; - else if (trans_type > 0 && trans_type <= 0xC) - active |= IFM_10G_SR; - else if (trans_type == 0x80 || trans_type == 0) - active |= IFM_10G_CX4; + break; + case 10000: + if (trans_type > 0 && trans_type <= 0xC) + active |= IFM_10G_SR; + else if (trans_type == 0x80 || trans_type == 0) + active |= IFM_10G_CX4; + break; + case 40000: + active |= IFM_40G_CR4; + break; + } if (priv->prof->tx_pause) active |= IFM_ETH_TXPAUSE; if (priv->prof->rx_pause) Modified: stable/9/sys/ofed/drivers/net/mlx4/en_port.c ============================================================================== --- stable/9/sys/ofed/drivers/net/mlx4/en_port.c Wed May 30 15:51:02 2012 (r236315) +++ stable/9/sys/ofed/drivers/net/mlx4/en_port.c Wed May 30 16:04:10 2012 (r236316) @@ -152,11 +152,21 @@ int mlx4_en_QUERY_PORT(struct mlx4_en_de /* This command is always accessed from Ethtool context * already synchronized, no need in locking */ state->link_state = !!(qport_context->link_up & MLX4_EN_LINK_UP_MASK); - if ((qport_context->link_speed & MLX4_EN_SPEED_MASK) == - MLX4_EN_1G_SPEED) + switch (qport_context->link_speed & MLX4_EN_SPEED_MASK) { + case MLX4_EN_1G_SPEED: state->link_speed = 1000; - else + break; + case MLX4_EN_10G_SPEED_XAUI: + case MLX4_EN_10G_SPEED_XFI: state->link_speed = 10000; + break; + case MLX4_EN_40G_SPEED: + state->link_speed = 40000; + break; + default: + state->link_speed = -1; + break; + } state->transciver = qport_context->transceiver; if (be32_to_cpu(qport_context->transceiver_code_hi) & 0x400) state->transciver = 0x80; Modified: stable/9/sys/ofed/drivers/net/mlx4/en_port.h ============================================================================== --- stable/9/sys/ofed/drivers/net/mlx4/en_port.h Wed May 30 15:51:02 2012 (r236315) +++ stable/9/sys/ofed/drivers/net/mlx4/en_port.h Wed May 30 16:04:10 2012 (r236316) @@ -85,6 +85,14 @@ enum { MLX4_MCAST_ENABLE = 2, }; +enum { + MLX4_EN_1G_SPEED = 0x02, + MLX4_EN_10G_SPEED_XFI = 0x01, + MLX4_EN_10G_SPEED_XAUI = 0x00, + MLX4_EN_40G_SPEED = 0x40, + MLX4_EN_OTHER_SPEED = 0x0f, +}; + struct mlx4_en_query_port_context { u8 link_up; #define MLX4_EN_LINK_UP_MASK 0x80 @@ -92,8 +100,7 @@ struct mlx4_en_query_port_context { __be16 mtu; u8 reserved2; u8 link_speed; -#define MLX4_EN_SPEED_MASK 0x3 -#define MLX4_EN_1G_SPEED 0x2 +#define MLX4_EN_SPEED_MASK 0x43 u16 reserved3[5]; __be64 mac; u8 transceiver; From owner-svn-src-stable@FreeBSD.ORG Wed May 30 16:13:11 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 05D4F1065673; Wed, 30 May 2012 16:13:11 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DAEBC8FC16; Wed, 30 May 2012 16:13:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UGDAdW061574; Wed, 30 May 2012 16:13:10 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UGDAJZ061572; Wed, 30 May 2012 16:13:10 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201205301613.q4UGDAJZ061572@svn.freebsd.org> From: John Baldwin Date: Wed, 30 May 2012 16:13:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236318 - stable/9/sys/dev/amr X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 16:13:11 -0000 Author: jhb Date: Wed May 30 16:13:10 2012 New Revision: 236318 URL: http://svn.freebsd.org/changeset/base/236318 Log: MFC 234501: The amr(4) firmware contains a rather dubious "feature" where it assumes for small buffers (< 64k) that the OS driver is actually using a buffer rounded up to the next power of 2. It also assumes that the buffer is at least 4k in size. Furthermore, there is at least one known instance of megarc sending a request with a 12k buffer where the firmware writes out a 24k-ish reply. To workaround the data corruption triggered by this "feature", ensure that buffers for user commands use a minimum size of 32k, and that buffers between 32k and 64k use a 64k buffer. Modified: stable/9/sys/dev/amr/amr.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/amr/amr.c ============================================================================== --- stable/9/sys/dev/amr/amr.c Wed May 30 16:06:38 2012 (r236317) +++ stable/9/sys/dev/amr/amr.c Wed May 30 16:13:10 2012 (r236318) @@ -535,6 +535,31 @@ shutdown_out: amr_startup(sc); } +/* + * Bug-for-bug compatibility with Linux! + * Some apps will send commands with inlen and outlen set to 0, + * even though they expect data to be transfered to them from the + * card. Linux accidentally allows this by allocating a 4KB + * buffer for the transfer anyways, but it then throws it away + * without copying it back to the app. + * + * The amr(4) firmware relies on this feature. In fact, it assumes + * the buffer is always a power of 2 up to a max of 64k. There is + * also at least one case where it assumes a buffer less than 16k is + * greater than 16k. Force a minimum buffer size of 32k and round + * sizes between 32k and 64k up to 64k as a workaround. + */ +static unsigned long +amr_ioctl_buffer_length(unsigned long len) +{ + + if (len <= 32 * 1024) + return (32 * 1024); + if (len <= 64 * 1024) + return (64 * 1024); + return (len); +} + int amr_linux_ioctl_int(struct cdev *dev, u_long cmd, caddr_t addr, int32_t flag, struct thread *td) @@ -664,16 +689,7 @@ amr_linux_ioctl_int(struct cdev *dev, u_ error = ENOIOCTL; break; } else { - /* - * Bug-for-bug compatibility with Linux! - * Some apps will send commands with inlen and outlen set to 0, - * even though they expect data to be transfered to them from the - * card. Linux accidentally allows this by allocating a 4KB - * buffer for the transfer anyways, but it then throws it away - * without copying it back to the app. - */ - if (!len) - len = 4096; + len = amr_ioctl_buffer_length(imax(ali.inlen, ali.outlen)); dp = malloc(len, M_AMR, M_WAITOK | M_ZERO); @@ -703,7 +719,7 @@ amr_linux_ioctl_int(struct cdev *dev, u_ status = ac->ac_status; error = copyout(&status, &((struct amr_mailbox *)&((struct amr_linux_ioctl *)addr)->mbox[0])->mb_status, sizeof(status)); if (ali.outlen) { - error = copyout(dp, (void *)(uintptr_t)mb->mb_physaddr, len); + error = copyout(dp, (void *)(uintptr_t)mb->mb_physaddr, ali.outlen); if (error) break; } @@ -750,7 +766,7 @@ amr_ioctl(struct cdev *dev, u_long cmd, struct amr_command *ac; struct amr_mailbox_ioctl *mbi; void *dp, *au_buffer; - unsigned long au_length; + unsigned long au_length, real_length; unsigned char *au_cmd; int *au_statusp, au_direction; int error; @@ -842,8 +858,9 @@ amr_ioctl(struct cdev *dev, u_long cmd, } /* handle inbound data buffer */ + real_length = amr_ioctl_buffer_length(au_length); if (au_length != 0 && au_cmd[0] != 0x06) { - if ((dp = malloc(au_length, M_AMR, M_WAITOK|M_ZERO)) == NULL) { + if ((dp = malloc(real_length, M_AMR, M_WAITOK|M_ZERO)) == NULL) { error = ENOMEM; goto out; } @@ -902,7 +919,7 @@ amr_ioctl(struct cdev *dev, u_long cmd, /* build the command */ ac->ac_data = dp; - ac->ac_length = au_length; + ac->ac_length = real_length; ac->ac_flags |= AMR_CMD_DATAIN|AMR_CMD_DATAOUT; /* run the command */ From owner-svn-src-stable@FreeBSD.ORG Wed May 30 16:13:35 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7F56C106568B; Wed, 30 May 2012 16:13:35 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 696188FC0A; Wed, 30 May 2012 16:13:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UGDZCg061634; Wed, 30 May 2012 16:13:35 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UGDZcY061632; Wed, 30 May 2012 16:13:35 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201205301613.q4UGDZcY061632@svn.freebsd.org> From: John Baldwin Date: Wed, 30 May 2012 16:13:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236319 - stable/8/sys/dev/amr X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 16:13:35 -0000 Author: jhb Date: Wed May 30 16:13:34 2012 New Revision: 236319 URL: http://svn.freebsd.org/changeset/base/236319 Log: MFC 234501: The amr(4) firmware contains a rather dubious "feature" where it assumes for small buffers (< 64k) that the OS driver is actually using a buffer rounded up to the next power of 2. It also assumes that the buffer is at least 4k in size. Furthermore, there is at least one known instance of megarc sending a request with a 12k buffer where the firmware writes out a 24k-ish reply. To workaround the data corruption triggered by this "feature", ensure that buffers for user commands use a minimum size of 32k, and that buffers between 32k and 64k use a 64k buffer. Modified: stable/8/sys/dev/amr/amr.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/amr/amr.c ============================================================================== --- stable/8/sys/dev/amr/amr.c Wed May 30 16:13:10 2012 (r236318) +++ stable/8/sys/dev/amr/amr.c Wed May 30 16:13:34 2012 (r236319) @@ -535,6 +535,31 @@ shutdown_out: amr_startup(sc); } +/* + * Bug-for-bug compatibility with Linux! + * Some apps will send commands with inlen and outlen set to 0, + * even though they expect data to be transfered to them from the + * card. Linux accidentally allows this by allocating a 4KB + * buffer for the transfer anyways, but it then throws it away + * without copying it back to the app. + * + * The amr(4) firmware relies on this feature. In fact, it assumes + * the buffer is always a power of 2 up to a max of 64k. There is + * also at least one case where it assumes a buffer less than 16k is + * greater than 16k. Force a minimum buffer size of 32k and round + * sizes between 32k and 64k up to 64k as a workaround. + */ +static unsigned long +amr_ioctl_buffer_length(unsigned long len) +{ + + if (len <= 32 * 1024) + return (32 * 1024); + if (len <= 64 * 1024) + return (64 * 1024); + return (len); +} + int amr_linux_ioctl_int(struct cdev *dev, u_long cmd, caddr_t addr, int32_t flag, struct thread *td) @@ -664,16 +689,7 @@ amr_linux_ioctl_int(struct cdev *dev, u_ error = ENOIOCTL; break; } else { - /* - * Bug-for-bug compatibility with Linux! - * Some apps will send commands with inlen and outlen set to 0, - * even though they expect data to be transfered to them from the - * card. Linux accidentally allows this by allocating a 4KB - * buffer for the transfer anyways, but it then throws it away - * without copying it back to the app. - */ - if (!len) - len = 4096; + len = amr_ioctl_buffer_length(imax(ali.inlen, ali.outlen)); dp = malloc(len, M_AMR, M_WAITOK | M_ZERO); @@ -703,7 +719,7 @@ amr_linux_ioctl_int(struct cdev *dev, u_ status = ac->ac_status; error = copyout(&status, &((struct amr_mailbox *)&((struct amr_linux_ioctl *)addr)->mbox[0])->mb_status, sizeof(status)); if (ali.outlen) { - error = copyout(dp, (void *)(uintptr_t)mb->mb_physaddr, len); + error = copyout(dp, (void *)(uintptr_t)mb->mb_physaddr, ali.outlen); if (error) break; } @@ -750,7 +766,7 @@ amr_ioctl(struct cdev *dev, u_long cmd, struct amr_command *ac; struct amr_mailbox_ioctl *mbi; void *dp, *au_buffer; - unsigned long au_length; + unsigned long au_length, real_length; unsigned char *au_cmd; int *au_statusp, au_direction; int error; @@ -842,8 +858,9 @@ amr_ioctl(struct cdev *dev, u_long cmd, } /* handle inbound data buffer */ + real_length = amr_ioctl_buffer_length(au_length); if (au_length != 0 && au_cmd[0] != 0x06) { - if ((dp = malloc(au_length, M_AMR, M_WAITOK|M_ZERO)) == NULL) { + if ((dp = malloc(real_length, M_AMR, M_WAITOK|M_ZERO)) == NULL) { error = ENOMEM; goto out; } @@ -902,7 +919,7 @@ amr_ioctl(struct cdev *dev, u_long cmd, /* build the command */ ac->ac_data = dp; - ac->ac_length = au_length; + ac->ac_length = real_length; ac->ac_flags |= AMR_CMD_DATAIN|AMR_CMD_DATAOUT; /* run the command */ From owner-svn-src-stable@FreeBSD.ORG Wed May 30 16:30:52 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2EBBB106564A; Wed, 30 May 2012 16:30:52 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3D878FC12; Wed, 30 May 2012 16:30:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UGUpa9062407; Wed, 30 May 2012 16:30:51 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UGUpgc062405; Wed, 30 May 2012 16:30:51 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201205301630.q4UGUpgc062405@svn.freebsd.org> From: John Baldwin Date: Wed, 30 May 2012 16:30:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236320 - stable/9/sys/dev/pci X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 16:30:52 -0000 Author: jhb Date: Wed May 30 16:30:51 2012 New Revision: 236320 URL: http://svn.freebsd.org/changeset/base/236320 Log: MFC 235833: Only check to see if a memory resource is a PCI ROM BAR when activating and deactivating PCI resources. Previously, if a device had more than 48 MSI interrupts, then activating message 48 (which has a rid == PCIR_BIOS) would incorrectly try to enable the PCI ROM BAR. Modified: stable/9/sys/dev/pci/pci.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/pci/pci.c ============================================================================== --- stable/9/sys/dev/pci/pci.c Wed May 30 16:13:34 2012 (r236319) +++ stable/9/sys/dev/pci/pci.c Wed May 30 16:30:51 2012 (r236320) @@ -4189,7 +4189,7 @@ pci_activate_resource(device_t dev, devi if (device_get_parent(child) == dev) { /* Device ROMs need their decoding explicitly enabled. */ dinfo = device_get_ivars(child); - if (PCIR_IS_BIOS(&dinfo->cfg, rid)) + if (type == SYS_RES_MEMORY && PCIR_IS_BIOS(&dinfo->cfg, rid)) pci_write_bar(child, pci_find_bar(child, rid), rman_get_start(r) | PCIM_BIOS_ENABLE); switch (type) { @@ -4216,7 +4216,7 @@ pci_deactivate_resource(device_t dev, de /* Disable decoding for device ROMs. */ if (device_get_parent(child) == dev) { dinfo = device_get_ivars(child); - if (PCIR_IS_BIOS(&dinfo->cfg, rid)) + if (type == SYS_RES_MEMORY && PCIR_IS_BIOS(&dinfo->cfg, rid)) pci_write_bar(child, pci_find_bar(child, rid), rman_get_start(r)); } From owner-svn-src-stable@FreeBSD.ORG Wed May 30 19:21:55 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2EA27106564A; Wed, 30 May 2012 19:21:55 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 163738FC14; Wed, 30 May 2012 19:21:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UJLtdM070039; Wed, 30 May 2012 19:21:55 GMT (envelope-from theraven@svn.freebsd.org) Received: (from theraven@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UJLspn070036; Wed, 30 May 2012 19:21:54 GMT (envelope-from theraven@svn.freebsd.org) Message-Id: <201205301921.q4UJLspn070036@svn.freebsd.org> From: David Chisnall Date: Wed, 30 May 2012 19:21:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236326 - stable/9/include X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 19:21:55 -0000 Author: theraven Date: Wed May 30 19:21:54 2012 New Revision: 236326 URL: http://svn.freebsd.org/changeset/base/236326 Log: MFC r228862, 228880, 228882, 228906, 228977, 229332, 229575, 229591, 229704, 229716, 230062, 230225, 230267, 234958 This brings stdatomic.h into -STABLE and includes improvements to tgmath.h that significantly decrease compile times on a C11 compiler (such as the clang in the base system). Added: stable/9/include/stdatomic.h - copied, changed from r228862, head/include/stdatomic.h Modified: stable/9/include/tgmath.h Directory Properties: stable/9/include/ (props changed) Copied and modified: stable/9/include/stdatomic.h (from r228862, head/include/stdatomic.h) ============================================================================== --- head/include/stdatomic.h Sat Dec 24 15:17:01 2011 (r228862, copy source) +++ stable/9/include/stdatomic.h Wed May 30 19:21:54 2012 (r236326) @@ -35,14 +35,14 @@ #if __has_feature(cxx_atomic) #define __CLANG_ATOMICS -#elif defined(__GNUC__) +#elif __GNUC_PREREQ__(4, 7) #define __GNUC_ATOMICS -#else +#elif !defined(__GNUC__) #error "stdatomic.h does not support your compiler" #endif -#ifdef __GNUC_ATOMICS -#define _Atomic(T) struct { volatile T __val; } +#if !defined(__CLANG_ATOMICS) +#define _Atomic(T) struct { volatile T __val; } #endif /* @@ -50,11 +50,13 @@ */ #if defined(__CLANG_ATOMICS) -#define ATOMIC_VAR_INIT(value) (value) -#define atomic_init(obj, value) __atomic_init(obj, value) -#elif defined(__GNUC_ATOMICS) -#define ATOMIC_VAR_INIT(value) { .__val = (value) } -#define atomic_init(obj, value) (obj = ATOMIC_VAR_INIT(value)) +#define ATOMIC_VAR_INIT(value) (value) +#define atomic_init(obj, value) __c11_atomic_init(obj, value) +#else +#define ATOMIC_VAR_INIT(value) { .__val = (value) } +#define atomic_init(obj, value) do { \ + (obj)->__val = (value); \ +} while (0) #endif /* @@ -64,29 +66,29 @@ */ #ifndef __ATOMIC_RELAXED -#define __ATOMIC_RELAXED 0 +#define __ATOMIC_RELAXED 0 #endif #ifndef __ATOMIC_CONSUME -#define __ATOMIC_CONSUME 1 +#define __ATOMIC_CONSUME 1 #endif #ifndef __ATOMIC_ACQUIRE -#define __ATOMIC_ACQUIRE 2 +#define __ATOMIC_ACQUIRE 2 #endif #ifndef __ATOMIC_RELEASE -#define __ATOMIC_RELEASE 3 +#define __ATOMIC_RELEASE 3 #endif #ifndef __ATOMIC_ACQ_REL -#define __ATOMIC_ACQ_REL 4 +#define __ATOMIC_ACQ_REL 4 #endif #ifndef __ATOMIC_SEQ_CST -#define __ATOMIC_SEQ_CST 5 +#define __ATOMIC_SEQ_CST 5 #endif /* * 7.17.3 Order and consistency. * * The memory_order_* constants that denote the barrier behaviour of the - * atomic operations. + * atomic operations. */ enum memory_order { @@ -102,21 +104,30 @@ enum memory_order { * 7.17.4 Fences. */ -#if defined(__CLANG_ATOMICS) -#define atomic_thread_fence(order) __atomic_thread_fence(order) +#ifdef __CLANG_ATOMICS +#define atomic_thread_fence(order) __c11_atomic_thread_fence(order) +#define atomic_signal_fence(order) __c11_atomic_signal_fence(order) #elif defined(__GNUC_ATOMICS) +#define atomic_thread_fence(order) __atomic_thread_fence(order) +#define atomic_signal_fence(order) __atomic_signal_fence(order) +#else #define atomic_thread_fence(order) __sync_synchronize() +#define atomic_signal_fence(order) __asm volatile ("" : : : "memory") #endif -#define atomic_signal_fence(order) __asm volatile ("" : : : "memory"); /* * 7.17.5 Lock-free property. */ #if defined(__CLANG_ATOMICS) -#define atomic_is_lock_free(obj) __atomic_is_lock_free(obj) +#define atomic_is_lock_free(obj) \ + __c11_atomic_is_lock_free(sizeof(obj)) #elif defined(__GNUC_ATOMICS) -#define atomic_is_lock_free(obj) (sizeof((obj->__val)) <= sizeof(void *)) +#define atomic_is_lock_free(obj) \ + __atomic_is_lock_free(sizeof((obj)->__val)) +#else +#define atomic_is_lock_free(obj) \ + (sizeof((obj)->__val) <= sizeof(void *)) #endif /* @@ -174,38 +185,64 @@ typedef _Atomic(__uintmax_t) atomic_uin #if defined(__CLANG_ATOMICS) #define atomic_compare_exchange_strong_explicit(object, expected, \ desired, success, failure) \ - __atomic_compare_exchange_strong(object, expected, desired, \ + __c11_atomic_compare_exchange_strong(object, expected, desired, \ success, failure) #define atomic_compare_exchange_weak_explicit(object, expected, \ desired, success, failure) \ - __atomic_compare_exchange_weak(object, expected, desired, \ + __c11_atomic_compare_exchange_weak(object, expected, desired, \ success, failure) #define atomic_exchange_explicit(object, desired, order) \ - __atomic_exchange(object, desired, order) + __c11_atomic_exchange(object, desired, order) #define atomic_fetch_add_explicit(object, operand, order) \ - __atomic_fetch_add(object, operand, order) + __c11_atomic_fetch_add(object, operand, order) #define atomic_fetch_and_explicit(object, operand, order) \ - __atomic_fetch_and(object, operand, order) + __c11_atomic_fetch_and(object, operand, order) #define atomic_fetch_or_explicit(object, operand, order) \ - __atomic_fetch_or(object, operand, order) + __c11_atomic_fetch_or(object, operand, order) #define atomic_fetch_sub_explicit(object, operand, order) \ - __atomic_fetch_sub(object, operand, order) + __c11_atomic_fetch_sub(object, operand, order) #define atomic_fetch_xor_explicit(object, operand, order) \ - __atomic_fetch_xor(object, operand, order) + __c11_atomic_fetch_xor(object, operand, order) #define atomic_load_explicit(object, order) \ - __atomic_load(object, order) + __c11_atomic_load(object, order) #define atomic_store_explicit(object, desired, order) \ - __atomic_store(object, desired, order) + __c11_atomic_store(object, desired, order) #elif defined(__GNUC_ATOMICS) #define atomic_compare_exchange_strong_explicit(object, expected, \ + desired, success, failure) \ + __atomic_compare_exchange_n(&(object)->__val, expected, \ + desired, 0, success, failure) +#define atomic_compare_exchange_weak_explicit(object, expected, \ + desired, success, failure) \ + __atomic_compare_exchange_n(&(object)->__val, expected, \ + desired, 1, success, failure) +#define atomic_exchange_explicit(object, desired, order) \ + __atomic_exchange_n(&(object)->__val, desired, order) +#define atomic_fetch_add_explicit(object, operand, order) \ + __atomic_fetch_add(&(object)->__val, operand, order) +#define atomic_fetch_and_explicit(object, operand, order) \ + __atomic_fetch_and(&(object)->__val, operand, order) +#define atomic_fetch_or_explicit(object, operand, order) \ + __atomic_fetch_or(&(object)->__val, operand, order) +#define atomic_fetch_sub_explicit(object, operand, order) \ + __atomic_fetch_sub(&(object)->__val, operand, order) +#define atomic_fetch_xor_explicit(object, operand, order) \ + __atomic_fetch_xor(&(object)->__val, operand, order) +#define atomic_load_explicit(object, order) \ + __atomic_load_n(&(object)->__val, order) +#define atomic_store_explicit(object, desired, order) \ + __atomic_store_n(&(object)->__val, desired, order) +#else +#define atomic_compare_exchange_strong_explicit(object, expected, \ desired, success, failure) ({ \ __typeof__((object)->__val) __v; \ - __v = \ - __sync_val_compare_and_swap((__typeof(&((object)->__val)))object,\ - *expected, desired); \ - *expected = __v; \ - (*expected == __v); \ - }) + _Bool __r; \ + __v = __sync_val_compare_and_swap(&(object)->__val, \ + *(expected), desired); \ + __r = *(expected) == __v; \ + *(expected) = __v; \ + __r; \ +}) #define atomic_compare_exchange_weak_explicit(object, expected, \ desired, success, failure) \ @@ -214,7 +251,7 @@ typedef _Atomic(__uintmax_t) atomic_uin #if __has_builtin(__sync_swap) /* Clang provides a full-barrier atomic exchange - use it if available. */ #define atomic_exchange_explicit(object, desired, order) \ - __sync_swap(&(object)->value, desired) + __sync_swap(&(object)->__val, desired) #else /* * __sync_lock_test_and_set() is only an acquire barrier in theory (although in @@ -223,7 +260,7 @@ typedef _Atomic(__uintmax_t) atomic_uin */ #define atomic_exchange_explicit(object, desired, order) ({ \ __typeof__((object)->__val) __v; \ - __v = __sync_lock_test_and_set(object, desired); \ + __v = __sync_lock_test_and_set(&(object)->__val, desired); \ __sync_synchronize(); \ __v; \ }) @@ -278,9 +315,9 @@ typedef _Atomic(__uintmax_t) atomic_uin * 7.17.8 Atomic flag type and operations. */ -typedef atomic_bool atomic_flag; +typedef atomic_bool atomic_flag; -#define ATOMIC_FLAG_INIT ATOMIC_VAR_INIT(0) +#define ATOMIC_FLAG_INIT ATOMIC_VAR_INIT(0) #define atomic_flag_clear_explicit(object, order) \ atomic_store_explicit(object, 0, order) @@ -288,9 +325,8 @@ typedef atomic_bool atomic_flag; atomic_compare_exchange_strong_explicit(object, 0, 1, order, order) #define atomic_flag_clear(object) \ - atomic_flag_clear_explicit(object, 0, memory_order_seq_cst) + atomic_flag_clear_explicit(object, memory_order_seq_cst) #define atomic_flag_test_and_set(object) \ - atomic_flag_test_and_set_explicit(object, 0, 1, \ - memory_order_seq_cst, memory_order_seq_cst) + atomic_flag_test_and_set_explicit(object, memory_order_seq_cst) #endif /* !_STDATOMIC_H_ */ Modified: stable/9/include/tgmath.h ============================================================================== --- stable/9/include/tgmath.h Wed May 30 18:05:48 2012 (r236325) +++ stable/9/include/tgmath.h Wed May 30 19:21:54 2012 (r236326) @@ -2,6 +2,9 @@ * Copyright (c) 2004 Stefan Farfeleder. * All rights reserved. * + * Copyright (c) 2012 Ed Schouten + * All rights reserved. + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -33,64 +36,104 @@ #include /* - * This implementation of requires two implementation-dependent - * macros to be defined: - * __tg_impl_simple(x, y, z, fn, fnf, fnl, ...) + * This implementation of uses the two following macros, + * which are based on the macros described in C11 proposal N1404: + * __tg_impl_simple(x, y, z, fnl, fn, fnf, ...) * Invokes fnl() if the corresponding real type of x, y or z is long * double, fn() if it is double or any has an integer type, and fnf() * otherwise. - * __tg_impl_full(x, y, z, fn, fnf, fnl, cfn, cfnf, cfnl, ...) - * Invokes [c]fnl() if the corresponding real type of x, y or z is long + * __tg_impl_full(x, y, cfnl, cfn, cfnf, fnl, fn, fnf, ...) + * Invokes [c]fnl() if the corresponding real type of x or y is long * double, [c]fn() if it is double or any has an integer type, and * [c]fnf() otherwise. The function with the 'c' prefix is called if - * any of x, y or z is a complex number. + * any of x or y is a complex number. * Both macros call the chosen function with all additional arguments passed * to them, as given by __VA_ARGS__. * * Note that these macros cannot be implemented with C's ?: operator, * because the return type of the whole expression would incorrectly be long * double complex regardless of the argument types. + * + * The structure of the C11 implementation of these macros can in + * principle be reused for non-C11 compilers, but due to an integer + * promotion bug for complex types in GCC 4.2, simply let non-C11 + * compilers use an inefficient yet reliable version. */ -#if __GNUC_PREREQ__(3, 1) -#define __tg_type(e, t) __builtin_types_compatible_p(__typeof__(e), t) -#define __tg_type3(e1, e2, e3, t) \ - (__tg_type(e1, t) || __tg_type(e2, t) || __tg_type(e3, t)) -#define __tg_type_corr(e1, e2, e3, t) \ - (__tg_type3(e1, e2, e3, t) || __tg_type3(e1, e2, e3, t _Complex)) -#define __tg_integer(e1, e2, e3) \ - (((__typeof__(e1))1.5 == 1) || ((__typeof__(e2))1.5 == 1) || \ - ((__typeof__(e3))1.5 == 1)) -#define __tg_is_complex(e1, e2, e3) \ - (__tg_type3(e1, e2, e3, float _Complex) || \ - __tg_type3(e1, e2, e3, double _Complex) || \ - __tg_type3(e1, e2, e3, long double _Complex) || \ - __tg_type3(e1, e2, e3, __typeof__(_Complex_I))) - -#define __tg_impl_simple(x, y, z, fn, fnf, fnl, ...) \ - __builtin_choose_expr(__tg_type_corr(x, y, z, long double), \ - fnl(__VA_ARGS__), __builtin_choose_expr( \ - __tg_type_corr(x, y, z, double) || __tg_integer(x, y, z),\ - fn(__VA_ARGS__), fnf(__VA_ARGS__))) - -#define __tg_impl_full(x, y, z, fn, fnf, fnl, cfn, cfnf, cfnl, ...) \ - __builtin_choose_expr(__tg_is_complex(x, y, z), \ - __tg_impl_simple(x, y, z, cfn, cfnf, cfnl, __VA_ARGS__), \ - __tg_impl_simple(x, y, z, fn, fnf, fnl, __VA_ARGS__)) - -#else /* __GNUC__ */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#define __tg_generic(x, cfnl, cfn, cfnf, fnl, fn, fnf) \ + _Generic(x, \ + long double _Complex: cfnl, \ + double _Complex: cfn, \ + float _Complex: cfnf, \ + long double: fnl, \ + default: fn, \ + float: fnf \ + ) +#define __tg_type(x) \ + __tg_generic(x, (long double _Complex)0, (double _Complex)0, \ + (float _Complex)0, (long double)0, (double)0, (float)0) +#define __tg_impl_simple(x, y, z, fnl, fn, fnf, ...) \ + __tg_generic( \ + __tg_type(x) + __tg_type(y) + __tg_type(z), \ + fnl, fn, fnf, fnl, fn, fnf)(__VA_ARGS__) +#define __tg_impl_full(x, y, cfnl, cfn, cfnf, fnl, fn, fnf, ...) \ + __tg_generic( \ + __tg_type(x) + __tg_type(y), \ + cfnl, cfn, cfnf, fnl, fn, fnf)(__VA_ARGS__) +#elif defined(__generic) +#define __tg_generic_simple(x, fnl, fn, fnf) \ + __generic(x, long double _Complex, fnl, \ + __generic(x, double _Complex, fn, \ + __generic(x, float _Complex, fnf, \ + __generic(x, long double, fnl, \ + __generic(x, float, fnf, fn))))) +#define __tg_impl_simple(x, y, z, fnl, fn, fnf, ...) \ + __tg_generic_simple(x, \ + __tg_generic_simple(y, \ + __tg_generic_simple(z, fnl, fnl, fnl), \ + __tg_generic_simple(z, fnl, fnl, fnl), \ + __tg_generic_simple(z, fnl, fnl, fnl)), \ + __tg_generic_simple(y, \ + __tg_generic_simple(z, fnl, fnl, fnl), \ + __tg_generic_simple(z, fnl, fn , fn ), \ + __tg_generic_simple(z, fnl, fn , fn )), \ + __tg_generic_simple(y, \ + __tg_generic_simple(z, fnl, fnl, fnl), \ + __tg_generic_simple(z, fnl, fn , fn ), \ + __tg_generic_simple(z, fnl, fn , fnf)))(__VA_ARGS__) +#define __tg_generic_full(x, cfnl, cfn, cfnf, fnl, fn, fnf) \ + __generic(x, long double _Complex, cfnl, \ + __generic(x, double _Complex, cfn, \ + __generic(x, float _Complex, cfnf, \ + __generic(x, long double, fnl, \ + __generic(x, float, fnf, fn))))) +#define __tg_impl_full(x, y, cfnl, cfn, cfnf, fnl, fn, fnf, ...) \ + __tg_generic_full(x, \ + __tg_generic_full(y, cfnl, cfnl, cfnl, cfnl, cfnl, cfnl), \ + __tg_generic_full(y, cfnl, cfn , cfn , cfnl, cfn , cfn ), \ + __tg_generic_full(y, cfnl, cfn , cfnf, cfnl, cfn , cfnf), \ + __tg_generic_full(y, cfnl, cfnl, cfnl, fnl , fnl , fnl ), \ + __tg_generic_full(y, cfnl, cfn , cfn , fnl , fn , fn ), \ + __tg_generic_full(y, cfnl, cfn , cfnf, fnl , fn , fnf )) \ + (__VA_ARGS__) +#else #error " not implemented for this compiler" -#endif /* !__GNUC__ */ +#endif /* Macros to save lots of repetition below */ #define __tg_simple(x, fn) \ - __tg_impl_simple(x, x, x, fn, fn##f, fn##l, x) + __tg_impl_simple(x, x, x, fn##l, fn, fn##f, x) #define __tg_simple2(x, y, fn) \ - __tg_impl_simple(x, x, y, fn, fn##f, fn##l, x, y) + __tg_impl_simple(x, x, y, fn##l, fn, fn##f, x, y) +#define __tg_simple3(x, y, z, fn) \ + __tg_impl_simple(x, y, z, fn##l, fn, fn##f, x, y, z) #define __tg_simplev(x, fn, ...) \ - __tg_impl_simple(x, x, x, fn, fn##f, fn##l, __VA_ARGS__) + __tg_impl_simple(x, x, x, fn##l, fn, fn##f, __VA_ARGS__) #define __tg_full(x, fn) \ - __tg_impl_full(x, x, x, fn, fn##f, fn##l, c##fn, c##fn##f, c##fn##l, x) + __tg_impl_full(x, x, c##fn##l, c##fn, c##fn##f, fn##l, fn, fn##f, x) +#define __tg_full2(x, y, fn) \ + __tg_impl_full(x, y, c##fn##l, c##fn, c##fn##f, fn##l, fn, fn##f, x, y) /* 7.22#4 -- These macros expand to real or complex functions, depending on * the type of their arguments. */ @@ -108,13 +151,12 @@ #define tanh(x) __tg_full(x, tanh) #define exp(x) __tg_full(x, exp) #define log(x) __tg_full(x, log) -#define pow(x, y) __tg_impl_full(x, x, y, pow, powf, powl, \ - cpow, cpowf, cpowl, x, y) +#define pow(x, y) __tg_full2(x, y, pow) #define sqrt(x) __tg_full(x, sqrt) /* "The corresponding type-generic macro for fabs and cabs is fabs." */ -#define fabs(x) __tg_impl_full(x, x, x, fabs, fabsf, fabsl, \ - cabs, cabsf, cabsl, x) +#define fabs(x) __tg_impl_full(x, x, cabsl, cabs, cabsf, \ + fabsl, fabs, fabsf, x) /* 7.22#5 -- These macros are only defined for arguments with real type. */ #define atan2(x, y) __tg_simple2(x, y, atan2) @@ -127,7 +169,7 @@ #define expm1(x) __tg_simple(x, expm1) #define fdim(x, y) __tg_simple2(x, y, fdim) #define floor(x) __tg_simple(x, floor) -#define fma(x, y, z) __tg_impl_simple(x, y, z, fma, fmaf, fmal, x, y, z) +#define fma(x, y, z) __tg_simple3(x, y, z, fma) #define fmax(x, y) __tg_simple2(x, y, fmax) #define fmin(x, y) __tg_simple2(x, y, fmin) #define fmod(x, y) __tg_simple2(x, y, fmod) @@ -148,8 +190,8 @@ #define nextafter(x, y) __tg_simple2(x, y, nextafter) #define nexttoward(x, y) __tg_simplev(x, nexttoward, x, y) #define remainder(x, y) __tg_simple2(x, y, remainder) -#define remquo(x, y, z) __tg_impl_simple(x, x, y, remquo, remquof, \ - remquol, x, y, z) +#define remquo(x, y, z) __tg_impl_simple(x, x, y, remquol, remquo, \ + remquof, x, y, z) #define rint(x) __tg_simple(x, rint) #define round(x) __tg_simple(x, round) #define scalbn(x, y) __tg_simplev(x, scalbn, x, y) From owner-svn-src-stable@FreeBSD.ORG Wed May 30 21:04:15 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5CDEB106566B; Wed, 30 May 2012 21:04:15 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 47AB38FC15; Wed, 30 May 2012 21:04:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UL4FpB077059; Wed, 30 May 2012 21:04:15 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UL4FRn077057; Wed, 30 May 2012 21:04:15 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201205302104.q4UL4FRn077057@svn.freebsd.org> From: "David E. O'Brien" Date: Wed, 30 May 2012 21:04:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236335 - stable/8/share/mk X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 21:04:15 -0000 Author: obrien Date: Wed May 30 21:04:14 2012 New Revision: 236335 URL: http://svn.freebsd.org/changeset/base/236335 Log: MFC: r218525: add LIBEXECDIR to the bsd.own.mk Modified: stable/8/share/mk/bsd.own.mk Directory Properties: stable/8/ (props changed) stable/8/share/ (props changed) stable/8/share/mk/ (props changed) Modified: stable/8/share/mk/bsd.own.mk ============================================================================== --- stable/8/share/mk/bsd.own.mk Wed May 30 21:02:12 2012 (r236334) +++ stable/8/share/mk/bsd.own.mk Wed May 30 21:04:14 2012 (r236335) @@ -30,6 +30,8 @@ # # LIBDATADIR Base path for misc. utility data files. [/usr/libdata] # +# LIBEXECDIR Base path for system daemons and utilities. [/usr/libexec] +# # LINTLIBDIR Base path for lint libraries. [/usr/libdata/lint] # # SHLIBDIR Base path for shared libraries. [${LIBDIR}] @@ -138,6 +140,7 @@ KMODMODE?= ${BINMODE} LIBDIR?= /usr/lib LIBCOMPATDIR?= /usr/lib/compat LIBDATADIR?= /usr/libdata +LIBEXECDIR?= /usr/libexec LINTLIBDIR?= /usr/libdata/lint SHLIBDIR?= ${LIBDIR} LIBOWN?= ${BINOWN} From owner-svn-src-stable@FreeBSD.ORG Wed May 30 22:13:37 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AA180106566B; Wed, 30 May 2012 22:13:37 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-pz0-f54.google.com (mail-pz0-f54.google.com [209.85.210.54]) by mx1.freebsd.org (Postfix) with ESMTP id 619088FC1E; Wed, 30 May 2012 22:13:37 +0000 (UTC) Received: by dadv36 with SMTP id v36so411827dad.13 for ; Wed, 30 May 2012 15:13:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=Cae6k9D3BqZ3XUdF/tTFDzQcjk85XDRh4ehQd+4K2o4=; b=AXDhRDOQBswkzcnyRSlY76tOA8pJ9GeLluxW3p2qPtBvkY6Z9MVyHQma3eDgfgjwNI 3FrG2fNb4ToQyNooCHirWaTlm8UYCjzNdazkW+4ctlqeJOgXjKkbSjSiU6kdgyaF9eez XOx2oUupkuniH6miVLOYyzCqUWT35/XGVhOwCpFcmqbzDPaWJ+GB7DuaEWKs76y518b0 b4qqwNjzJ3E8TafF4nNthUaSFIWf/MBwRCzbixlXqOdamLWXV0we5t+1TyNoBJrnGnso be1iEXjEtPpjX7mmI6o8M9kshD8A9du4BqeWdI1ELUYdt/XlveEI1zhY5lQXHf9nKthb Bitg== MIME-Version: 1.0 Received: by 10.68.226.226 with SMTP id rv2mr149633pbc.101.1338416016297; Wed, 30 May 2012 15:13:36 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.142.203.2 with HTTP; Wed, 30 May 2012 15:13:36 -0700 (PDT) In-Reply-To: <4FA514EA.1020504@FreeBSD.org> References: <201203102158.q2ALw89R080428@svn.freebsd.org> <20120504160806.GF6475@goofy01.vnodelab.local> <4FA514EA.1020504@FreeBSD.org> Date: Wed, 30 May 2012 15:13:36 -0700 X-Google-Sender-Auth: AzIMZanLDzXAA55JkpJpxRjvtAI Message-ID: From: Adrian Chadd To: Alexander Motin Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org, Joel Dahl Subject: Re: svn commit: r232798 - in stable/9: share/man/man4 sys/conf sys/dev/sound/pci/hda sys/dev/sound/pcm sys/modules/sound/driver/hda X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 22:13:37 -0000 Hm, this stuff is tricky. Is it possible that Joel's setup has some default volume level that you weren't programming before, but now you are? Adrian From owner-svn-src-stable@FreeBSD.ORG Wed May 30 22:31:46 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1A2B21065676; Wed, 30 May 2012 22:31:46 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 02B1A8FC0A; Wed, 30 May 2012 22:31:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UMVjlK084647; Wed, 30 May 2012 22:31:45 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UMVjuv084641; Wed, 30 May 2012 22:31:45 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201205302231.q4UMVjuv084641@svn.freebsd.org> From: "David E. O'Brien" Date: Wed, 30 May 2012 22:31:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236342 - in stable/8: . gnu/usr.bin share/mk tools/build/options X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 22:31:46 -0000 Author: obrien Date: Wed May 30 22:31:45 2012 New Revision: 236342 URL: http://svn.freebsd.org/changeset/base/236342 Log: MFC: r222090: add WITH{,OUT}_{GCC,BINUTILS} providing fine-grained control Added: stable/8/tools/build/options/WITHOUT_BINUTILS - copied unchanged from r222090, head/tools/build/options/WITHOUT_BINUTILS stable/8/tools/build/options/WITHOUT_GCC - copied unchanged from r222090, head/tools/build/options/WITHOUT_GCC Modified: stable/8/Makefile.inc1 stable/8/gnu/usr.bin/Makefile (contents, props changed) stable/8/share/mk/bsd.own.mk Directory Properties: stable/8/ (props changed) stable/8/gnu/ (props changed) stable/8/gnu/usr.bin/ (props changed) stable/8/tools/ (props changed) stable/8/tools/build/options/ (props changed) Modified: stable/8/Makefile.inc1 ============================================================================== --- stable/8/Makefile.inc1 Wed May 30 22:28:08 2012 (r236341) +++ stable/8/Makefile.inc1 Wed May 30 22:31:45 2012 (r236342) @@ -1046,10 +1046,18 @@ _kgzip= usr.sbin/kgzip .endif .endif +.if ${MK_BINUTILS} != "no" +_binutils= gnu/usr.bin/binutils +.endif + +.if ${MK_GCC} != "no" +_cc= gnu/usr.bin/cc +.endif + cross-tools: .for _tool in \ - gnu/usr.bin/binutils \ - gnu/usr.bin/cc \ + ${_binutils} \ + ${_cc} \ usr.bin/sed \ usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ ${_btxld} \ Modified: stable/8/gnu/usr.bin/Makefile ============================================================================== --- stable/8/gnu/usr.bin/Makefile Wed May 30 22:28:08 2012 (r236341) +++ stable/8/gnu/usr.bin/Makefile Wed May 30 22:31:45 2012 (r236342) @@ -53,12 +53,14 @@ _man= man _rcs= rcs .endif -.if ${MK_TOOLCHAIN} != "no" +.if ${MK_BINUTILS} != "no" _binutils= binutils +.endif +.if ${MK_GCC} != "no" _cc= cc +.endif .if ${MK_GDB} != "no" _gdb= gdb .endif -.endif .include Modified: stable/8/share/mk/bsd.own.mk ============================================================================== --- stable/8/share/mk/bsd.own.mk Wed May 30 22:28:08 2012 (r236341) +++ stable/8/share/mk/bsd.own.mk Wed May 30 22:31:45 2012 (r236342) @@ -315,6 +315,7 @@ WITH_IDEA= BIND_MTREE \ BIND_NAMED \ BIND_UTILS \ + BINUTILS \ BLUETOOTH \ BOOT \ BSD_CPIO \ @@ -335,6 +336,7 @@ WITH_IDEA= FP_LIBC \ FREEBSD_UPDATE \ GAMES \ + GCC \ GCOV \ GDB \ GNU \ @@ -504,6 +506,8 @@ MK_GROFF:= no .endif .if ${MK_TOOLCHAIN} == "no" +MK_BINUTILS:= no +MK_GCC:= no MK_GDB:= no .endif Copied: stable/8/tools/build/options/WITHOUT_BINUTILS (from r222090, head/tools/build/options/WITHOUT_BINUTILS) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/build/options/WITHOUT_BINUTILS Wed May 30 22:31:45 2012 (r236342, copy of r222090, head/tools/build/options/WITHOUT_BINUTILS) @@ -0,0 +1,7 @@ +.\" $FreeBSD$ +Set to not install binutils (as, c++-filt, gconv, gnu-ar, gnu-randlib, +ld, nm, objcopy, objdump, readelf, size and strip) +.Bf -symbolic +The option does not generally work for build targets, unless some alternative +toolchain is enabled. +.Ef Copied: stable/8/tools/build/options/WITHOUT_GCC (from r222090, head/tools/build/options/WITHOUT_GCC) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/build/options/WITHOUT_GCC Wed May 30 22:31:45 2012 (r236342, copy of r222090, head/tools/build/options/WITHOUT_GCC) @@ -0,0 +1,6 @@ +.\" $FreeBSD$ +Set to not install gcc and g++. +.Bf -symbolic +The option does not generally work for build targets, unless some alternative +toolchain is enabled. +.Ef From owner-svn-src-stable@FreeBSD.ORG Wed May 30 23:22:53 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 57591106566B; Wed, 30 May 2012 23:22:53 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3FD818FC08; Wed, 30 May 2012 23:22:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UNMrCi088943; Wed, 30 May 2012 23:22:53 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UNMrMw088933; Wed, 30 May 2012 23:22:53 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205302322.q4UNMrMw088933@svn.freebsd.org> From: Ryan Stone Date: Wed, 30 May 2012 23:22:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236344 - in stable/9/sys: kern sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 23:22:53 -0000 Author: rstone Date: Wed May 30 23:22:52 2012 New Revision: 236344 URL: http://svn.freebsd.org/changeset/base/236344 Log: MFC r235459 and r235471 r235459: Implement the DTrace sched provider. This implementation aims to be compatible with the sched provider implemented by Solaris and its open- source derivatives. Full documentation of the sched provider can be found on Oracle's DTrace wiki pages. Note that for compatibility with scripts originally written for Solaris, serveral probes are defined that will never fire. These probes are defined to fire when Solaris-specific features perform certain actions. As these features are not present in FreeBSD, the probes can never fire. Also, I have added a two probes that are not defined in Solaris, lend-pri and load-change. These probes have been added to make it possible to collect schedgraph data with DTrace. Finally, a few probes are defined in Solaris to take a cpuinfo_t * argument. As it was not immediately clear to me how to translate that to FreeBSD, currently those probes are passed NULL in place of a cpuinfo_t *. Sponsored by: Sandvine Incorporated r235471: Fix typo in function name SDT_PROBE4 and unbreak 4BSD UP. Modified: stable/9/sys/kern/kern_clock.c stable/9/sys/kern/kern_synch.c stable/9/sys/kern/kern_thread.c stable/9/sys/kern/sched_4bsd.c stable/9/sys/kern/sched_ule.c stable/9/sys/kern/subr_sleepqueue.c stable/9/sys/kern/subr_turnstile.c stable/9/sys/sys/sdt.h Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_clock.c ============================================================================== --- stable/9/sys/kern/kern_clock.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/kern_clock.c Wed May 30 23:22:52 2012 (r236344) @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include "opt_kdb.h" #include "opt_device_polling.h" #include "opt_hwpmc_hooks.h" +#include "opt_kdtrace.h" #include "opt_ntp.h" #include "opt_watchdog.h" @@ -56,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -88,6 +90,9 @@ SYSINIT(clocks, SI_SUB_CLOCKS, SI_ORDER_ /* Spin-lock protecting profiling statistics. */ static struct mtx time_lock; +SDT_PROVIDER_DECLARE(sched); +SDT_PROBE_DEFINE2(sched, , , tick, tick, "struct thread *", "struct proc *"); + static int sysctl_kern_cp_time(SYSCTL_HANDLER_ARGS) { @@ -759,6 +764,7 @@ statclock_cnt(int cnt, int usermode) ru->ru_maxrss = rss; KTR_POINT2(KTR_SCHED, "thread", sched_tdname(td), "statclock", "prio:%d", td->td_priority, "stathz:%d", (stathz)?stathz:hz); + SDT_PROBE2(sched, , , tick, td, td->td_proc); thread_lock_flags(td, MTX_QUIET); for ( ; cnt > 0; cnt--) sched_clock(td); Modified: stable/9/sys/kern/kern_synch.c ============================================================================== --- stable/9/sys/kern/kern_synch.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/kern_synch.c Wed May 30 23:22:52 2012 (r236344) @@ -37,6 +37,7 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_kdtrace.h" #include "opt_ktrace.h" #include "opt_sched.h" @@ -51,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -105,6 +107,20 @@ SYSCTL_INT(_kern, OID_AUTO, fscale, CTLF static void loadav(void *arg); +SDT_PROVIDER_DECLARE(sched); +SDT_PROBE_DEFINE(sched, , , preempt, preempt); + +/* + * These probes reference Solaris features that are not implemented in FreeBSD. + * Create the probes anyway for compatibility with existing D scripts; they'll + * just never fire. + */ +SDT_PROBE_DEFINE(sched, , , cpucaps_sleep, cpucaps-sleep); +SDT_PROBE_DEFINE(sched, , , cpucaps_wakeup, cpucaps-wakeup); +SDT_PROBE_DEFINE(sched, , , schedctl_nopreempt, schedctl-nopreempt); +SDT_PROBE_DEFINE(sched, , , schedctl_preempt, schedctl-preempt); +SDT_PROBE_DEFINE(sched, , , schedctl_yield, schedctl-yield); + void sleepinit(void) { @@ -462,6 +478,7 @@ mi_switch(int flags, struct thread *newt "prio:%d", td->td_priority, "wmesg:\"%s\"", td->td_wmesg, "lockname:\"%s\"", td->td_lockname); #endif + SDT_PROBE0(sched, , , preempt); #ifdef XEN PT_UPDATES_FLUSH(); #endif Modified: stable/9/sys/kern/kern_thread.c ============================================================================== --- stable/9/sys/kern/kern_thread.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/kern_thread.c Wed May 30 23:22:52 2012 (r236344) @@ -27,6 +27,7 @@ */ #include "opt_witness.h" +#include "opt_kdtrace.h" #include "opt_hwpmc_hooks.h" #include @@ -39,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -59,6 +61,10 @@ __FBSDID("$FreeBSD$"); #include #include +SDT_PROVIDER_DECLARE(proc); +SDT_PROBE_DEFINE(proc, , , lwp_exit, lwp-exit); + + /* * thread related storage. */ Modified: stable/9/sys/kern/sched_4bsd.c ============================================================================== --- stable/9/sys/kern/sched_4bsd.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/sched_4bsd.c Wed May 30 23:22:52 2012 (r236344) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -243,12 +244,31 @@ SYSCTL_INT(_kern_sched, OID_AUTO, follow "allow threads to share a quantum"); #endif +SDT_PROVIDER_DEFINE(sched); + +SDT_PROBE_DEFINE3(sched, , , change_pri, change-pri, "struct thread *", + "struct proc *", "uint8_t"); +SDT_PROBE_DEFINE3(sched, , , dequeue, dequeue, "struct thread *", + "struct proc *", "void *"); +SDT_PROBE_DEFINE4(sched, , , enqueue, enqueue, "struct thread *", + "struct proc *", "void *", "int"); +SDT_PROBE_DEFINE4(sched, , , lend_pri, lend-pri, "struct thread *", + "struct proc *", "uint8_t", "struct thread *"); +SDT_PROBE_DEFINE2(sched, , , load_change, load-change, "int", "int"); +SDT_PROBE_DEFINE2(sched, , , off_cpu, off-cpu, "struct thread *", + "struct proc *"); +SDT_PROBE_DEFINE(sched, , , on_cpu, on-cpu); +SDT_PROBE_DEFINE(sched, , , remain_cpu, remain-cpu); +SDT_PROBE_DEFINE2(sched, , , surrender, surrender, "struct thread *", + "struct proc *"); + static __inline void sched_load_add(void) { sched_tdcnt++; KTR_COUNTER0(KTR_SCHED, "load", "global load", sched_tdcnt); + SDT_PROBE2(sched, , , load_change, NOCPU, sched_tdcnt); } static __inline void @@ -257,6 +277,7 @@ sched_load_rem(void) sched_tdcnt--; KTR_COUNTER0(KTR_SCHED, "load", "global load", sched_tdcnt); + SDT_PROBE2(sched, , , load_change, NOCPU, sched_tdcnt); } /* * Arrange to reschedule if necessary, taking the priorities and @@ -794,10 +815,13 @@ sched_priority(struct thread *td, u_char KTR_POINT3(KTR_SCHED, "thread", sched_tdname(td), "priority change", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(curthread)); + SDT_PROBE3(sched, , , change_pri, td, td->td_proc, prio); if (td != curthread && prio > td->td_priority) { KTR_POINT3(KTR_SCHED, "thread", sched_tdname(curthread), "lend prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , lend_pri, td, td->td_proc, prio, + curthread); } THREAD_LOCK_ASSERT(td, MA_OWNED); if (td->td_priority == prio) @@ -986,6 +1010,9 @@ sched_switch(struct thread *td, struct t if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif + + SDT_PROBE2(sched, , , off_cpu, td, td->td_proc); + /* I feel sleepy */ lock_profile_release_lock(&sched_lock.lock_object); #ifdef KDTRACE_HOOKS @@ -1017,11 +1044,14 @@ sched_switch(struct thread *td, struct t * needed to, or the thread_wait() or wait() will * need to reap it. */ + + SDT_PROBE0(sched, , , on_cpu); #ifdef HWPMC_HOOKS if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_IN); #endif - } + } else + SDT_PROBE0(sched, , , remain_cpu); #ifdef SMP if (td->td_flags & TDF_IDLETD) @@ -1222,6 +1252,8 @@ sched_add(struct thread *td, int flags) sched_tdname(curthread)); KTR_POINT1(KTR_SCHED, "thread", sched_tdname(curthread), "wokeup", KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , enqueue, td, td->td_proc, NULL, + flags & SRQ_PREEMPTED); /* @@ -1314,6 +1346,8 @@ sched_add(struct thread *td, int flags) sched_tdname(curthread)); KTR_POINT1(KTR_SCHED, "thread", sched_tdname(curthread), "wokeup", KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , enqueue, td, td->td_proc, NULL, + flags & SRQ_PREEMPTED); /* * Now that the thread is moving to the run-queue, set the lock @@ -1361,6 +1395,7 @@ sched_rem(struct thread *td) KTR_STATE2(KTR_SCHED, "thread", sched_tdname(td), "runq rem", "prio:%d", td->td_priority, KTR_ATTR_LINKED, sched_tdname(curthread)); + SDT_PROBE3(sched, , , dequeue, td, td->td_proc, NULL); if ((td->td_flags & TDF_NOLOAD) == 0) sched_load_rem(); @@ -1424,6 +1459,8 @@ sched_choose(void) void sched_preempt(struct thread *td) { + + SDT_PROBE2(sched, , , surrender, td, td->td_proc); thread_lock(td); if (td->td_critnest > 1) td->td_owepreempt = 1; Modified: stable/9/sys/kern/sched_ule.c ============================================================================== --- stable/9/sys/kern/sched_ule.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/sched_ule.c Wed May 30 23:22:52 2012 (r236344) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -327,6 +328,24 @@ static void sched_initticks(void *dummy) SYSINIT(sched_initticks, SI_SUB_CLOCKS, SI_ORDER_THIRD, sched_initticks, NULL); +SDT_PROVIDER_DEFINE(sched); + +SDT_PROBE_DEFINE3(sched, , , change_pri, change-pri, "struct thread *", + "struct proc *", "uint8_t"); +SDT_PROBE_DEFINE3(sched, , , dequeue, dequeue, "struct thread *", + "struct proc *", "void *"); +SDT_PROBE_DEFINE4(sched, , , enqueue, enqueue, "struct thread *", + "struct proc *", "void *", "int"); +SDT_PROBE_DEFINE4(sched, , , lend_pri, lend-pri, "struct thread *", + "struct proc *", "uint8_t", "struct thread *"); +SDT_PROBE_DEFINE2(sched, , , load_change, load-change, "int", "int"); +SDT_PROBE_DEFINE2(sched, , , off_cpu, off-cpu, "struct thread *", + "struct proc *"); +SDT_PROBE_DEFINE(sched, , , on_cpu, on-cpu); +SDT_PROBE_DEFINE(sched, , , remain_cpu, remain-cpu); +SDT_PROBE_DEFINE2(sched, , , surrender, surrender, "struct thread *", + "struct proc *"); + /* * Print the threads waiting on a run-queue. */ @@ -509,6 +528,7 @@ tdq_load_add(struct tdq *tdq, struct thr if ((td->td_flags & TDF_NOLOAD) == 0) tdq->tdq_sysload++; KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); + SDT_PROBE2(sched, , , load_change, (int)TDQ_ID(tdq), tdq->tdq_load); } /* @@ -528,6 +548,7 @@ tdq_load_rem(struct tdq *tdq, struct thr if ((td->td_flags & TDF_NOLOAD) == 0) tdq->tdq_sysload--; KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); + SDT_PROBE2(sched, , , load_change, (int)TDQ_ID(tdq), tdq->tdq_load); } /* @@ -1619,10 +1640,13 @@ sched_thread_priority(struct thread *td, KTR_POINT3(KTR_SCHED, "thread", sched_tdname(td), "prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(curthread)); + SDT_PROBE3(sched, , , change_pri, td, td->td_proc, prio); if (td != curthread && prio > td->td_priority) { KTR_POINT3(KTR_SCHED, "thread", sched_tdname(curthread), "lend prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , lend_pri, td, td->td_proc, prio, + curthread); } ts = td->td_sched; THREAD_LOCK_ASSERT(td, MA_OWNED); @@ -1873,6 +1897,7 @@ sched_switch(struct thread *td, struct t if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif + SDT_PROBE2(sched, , , off_cpu, td, td->td_proc); lock_profile_release_lock(&TDQ_LOCKPTR(tdq)->lock_object); TDQ_LOCKPTR(tdq)->mtx_lock = (uintptr_t)newtd; sched_pctcpu_update(newtd->td_sched, 0); @@ -1897,12 +1922,16 @@ sched_switch(struct thread *td, struct t tdq = TDQ_CPU(cpuid); lock_profile_obtain_lock_success( &TDQ_LOCKPTR(tdq)->lock_object, 0, 0, __FILE__, __LINE__); + + SDT_PROBE0(sched, , , on_cpu); #ifdef HWPMC_HOOKS if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_IN); #endif - } else + } else { thread_unblock_switch(td, mtx); + SDT_PROBE0(sched, , , remain_cpu); + } /* * Assert that all went well and return. */ @@ -2096,6 +2125,8 @@ sched_preempt(struct thread *td) { struct tdq *tdq; + SDT_PROBE2(sched, , , surrender, td, td->td_proc); + thread_lock(td); tdq = TDQ_SELF(); TDQ_LOCK_ASSERT(tdq, MA_OWNED); @@ -2324,6 +2355,8 @@ sched_add(struct thread *td, int flags) sched_tdname(curthread)); KTR_POINT1(KTR_SCHED, "thread", sched_tdname(curthread), "wokeup", KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , enqueue, td, td->td_proc, NULL, + flags & SRQ_PREEMPTED); THREAD_LOCK_ASSERT(td, MA_OWNED); /* * Recalculate the priority before we select the target cpu or @@ -2369,6 +2402,7 @@ sched_rem(struct thread *td) KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "runq rem", "prio:%d", td->td_priority); + SDT_PROBE3(sched, , , dequeue, td, td->td_proc, NULL); tdq = TDQ_CPU(td->td_sched->ts_cpu); TDQ_LOCK_ASSERT(tdq, MA_OWNED); MPASS(td->td_lock == TDQ_LOCKPTR(tdq)); Modified: stable/9/sys/kern/subr_sleepqueue.c ============================================================================== --- stable/9/sys/kern/subr_sleepqueue.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/subr_sleepqueue.c Wed May 30 23:22:52 2012 (r236344) @@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$"); #include "opt_sleepqueue_profiling.h" #include "opt_ddb.h" +#include "opt_kdtrace.h" #include "opt_sched.h" #include @@ -75,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -166,6 +168,9 @@ static int sleepq_resume_thread(struct s static void sleepq_switch(void *wchan, int pri); static void sleepq_timeout(void *arg); +SDT_PROBE_DECLARE(sched, , , sleep); +SDT_PROBE_DECLARE(sched, , , wakeup); + /* * Early initialization of sleep queues that is called from the sleepinit() * SYSINIT. @@ -534,6 +539,7 @@ sleepq_switch(void *wchan, int pri) MPASS(td->td_sleepqueue == NULL); sched_sleep(td, pri); thread_lock_set(td, &sc->sc_lock); + SDT_PROBE0(sched, , , sleep); TD_SET_SLEEPING(td); mi_switch(SW_VOL | SWT_SLEEPQ, NULL); KASSERT(TD_IS_RUNNING(td), ("running but not TDS_RUNNING")); @@ -715,6 +721,8 @@ sleepq_resume_thread(struct sleepqueue * sc = SC_LOOKUP(sq->sq_wchan); mtx_assert(&sc->sc_lock, MA_OWNED); + SDT_PROBE2(sched, , , wakeup, td, td->td_proc); + /* Remove the thread from the queue. */ sq->sq_blockedcnt[td->td_sqqueue]--; TAILQ_REMOVE(&sq->sq_blocked[td->td_sqqueue], td, td_slpq); Modified: stable/9/sys/kern/subr_turnstile.c ============================================================================== --- stable/9/sys/kern/subr_turnstile.c Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/kern/subr_turnstile.c Wed May 30 23:22:52 2012 (r236344) @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include "opt_ddb.h" +#include "opt_kdtrace.h" #include "opt_turnstile_profiling.h" #include "opt_sched.h" @@ -73,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -166,6 +168,11 @@ static void turnstile_dtor(void *mem, in static int turnstile_init(void *mem, int size, int flags); static void turnstile_fini(void *mem, int size); +SDT_PROVIDER_DECLARE(sched); +SDT_PROBE_DEFINE(sched, , , sleep, sleep); +SDT_PROBE_DEFINE2(sched, , , wakeup, wakeup, "struct thread *", + "struct proc *"); + /* * Walks the chain of turnstiles and their owners to propagate the priority * of the thread being blocked to all the threads holding locks that have to @@ -739,6 +746,8 @@ turnstile_wait(struct turnstile *ts, str CTR4(KTR_LOCK, "%s: td %d blocked on [%p] %s", __func__, td->td_tid, lock, lock->lo_name); + SDT_PROBE0(sched, , , sleep); + THREAD_LOCKPTR_ASSERT(td, &ts->ts_lock); mi_switch(SW_VOL | SWT_TURNSTILE, NULL); @@ -915,6 +924,7 @@ turnstile_unpend(struct turnstile *ts, i while (!TAILQ_EMPTY(&pending_threads)) { td = TAILQ_FIRST(&pending_threads); TAILQ_REMOVE(&pending_threads, td, td_lockq); + SDT_PROBE2(sched, , , wakeup, td, td->td_proc); thread_lock(td); THREAD_LOCKPTR_ASSERT(td, &ts->ts_lock); MPASS(td->td_proc->p_magic == P_MAGIC); Modified: stable/9/sys/sys/sdt.h ============================================================================== --- stable/9/sys/sys/sdt.h Wed May 30 22:48:01 2012 (r236343) +++ stable/9/sys/sys/sdt.h Wed May 30 23:22:52 2012 (r236344) @@ -92,6 +92,7 @@ #define SDT_PROBE_DEFINE4(prov, mod, func, name, sname, arg0, arg1, arg2, arg3) #define SDT_PROBE_DEFINE5(prov, mod, func, name, sname, arg0, arg1, arg2, arg3, arg4) +#define SDT_PROBE0(prov, mod, func, name) #define SDT_PROBE1(prov, mod, func, name, arg0) #define SDT_PROBE2(prov, mod, func, name, arg0, arg1) #define SDT_PROBE3(prov, mod, func, name, arg0, arg1, arg2) @@ -231,6 +232,8 @@ struct sdt_provider { SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3); \ SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4) +#define SDT_PROBE0(prov, mod, func, name) \ + SDT_PROBE(prov, mod, func, name, 0, 0, 0, 0, 0) #define SDT_PROBE1(prov, mod, func, name, arg0) \ SDT_PROBE(prov, mod, func, name, arg0, 0, 0, 0, 0) #define SDT_PROBE2(prov, mod, func, name, arg0, arg1) \ From owner-svn-src-stable@FreeBSD.ORG Wed May 30 23:42:48 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C2D8C1065672; Wed, 30 May 2012 23:42:48 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AB19A8FC12; Wed, 30 May 2012 23:42:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4UNgmEm090567; Wed, 30 May 2012 23:42:48 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4UNgmeh090558; Wed, 30 May 2012 23:42:48 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205302342.q4UNgmeh090558@svn.freebsd.org> From: Ryan Stone Date: Wed, 30 May 2012 23:42:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236345 - in stable/8/sys: kern sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 May 2012 23:42:48 -0000 Author: rstone Date: Wed May 30 23:42:48 2012 New Revision: 236345 URL: http://svn.freebsd.org/changeset/base/236345 Log: MFC r235459 and r235471 r235459: Implement the DTrace sched provider. This implementation aims to be compatible with the sched provider implemented by Solaris and its open- source derivatives. Full documentation of the sched provider can be found on Oracle's DTrace wiki pages. Note that for compatibility with scripts originally written for Solaris, serveral probes are defined that will never fire. These probes are defined to fire when Solaris-specific features perform certain actions. As these features are not present in FreeBSD, the probes can never fire. Also, I have added a two probes that are not defined in Solaris, lend-pri and load-change. These probes have been added to make it possible to collect schedgraph data with DTrace. Finally, a few probes are defined in Solaris to take a cpuinfo_t * argument. As it was not immediately clear to me how to translate that to FreeBSD, currently those probes are passed NULL in place of a cpuinfo_t *. Sponsored by: Sandvine Incorporated r235471: Fix typo in function name SDT_PROBE4 and unbreak 4BSD UP. Modified: stable/8/sys/kern/kern_clock.c stable/8/sys/kern/kern_synch.c stable/8/sys/kern/kern_thread.c stable/8/sys/kern/sched_4bsd.c stable/8/sys/kern/sched_ule.c stable/8/sys/kern/subr_sleepqueue.c stable/8/sys/kern/subr_turnstile.c stable/8/sys/sys/sdt.h Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/kern/kern_clock.c ============================================================================== --- stable/8/sys/kern/kern_clock.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/kern_clock.c Wed May 30 23:42:48 2012 (r236345) @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include "opt_kdb.h" #include "opt_device_polling.h" #include "opt_hwpmc_hooks.h" +#include "opt_kdtrace.h" #include "opt_ntp.h" #include "opt_watchdog.h" @@ -56,6 +57,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -86,6 +88,9 @@ SYSINIT(clocks, SI_SUB_CLOCKS, SI_ORDER_ /* Spin-lock protecting profiling statistics. */ static struct mtx time_lock; +SDT_PROVIDER_DECLARE(sched); +SDT_PROBE_DEFINE2(sched, , , tick, tick, "struct thread *", "struct proc *"); + static int sysctl_kern_cp_time(SYSCTL_HANDLER_ARGS) { @@ -654,6 +659,7 @@ statclock(int usermode) ru->ru_maxrss = rss; KTR_POINT2(KTR_SCHED, "thread", sched_tdname(td), "statclock", "prio:%d", td->td_priority, "stathz:%d", (stathz)?stathz:hz); + SDT_PROBE2(sched, , , tick, td, td->td_proc); thread_lock_flags(td, MTX_QUIET); sched_clock(td); thread_unlock(td); Modified: stable/8/sys/kern/kern_synch.c ============================================================================== --- stable/8/sys/kern/kern_synch.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/kern_synch.c Wed May 30 23:42:48 2012 (r236345) @@ -37,6 +37,7 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_kdtrace.h" #include "opt_ktrace.h" #include "opt_sched.h" @@ -51,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -105,6 +107,20 @@ SYSCTL_INT(_kern, OID_AUTO, fscale, CTLF static void loadav(void *arg); +SDT_PROVIDER_DECLARE(sched); +SDT_PROBE_DEFINE(sched, , , preempt, preempt); + +/* + * These probes reference Solaris features that are not implemented in FreeBSD. + * Create the probes anyway for compatibility with existing D scripts; they'll + * just never fire. + */ +SDT_PROBE_DEFINE(sched, , , cpucaps_sleep, cpucaps-sleep); +SDT_PROBE_DEFINE(sched, , , cpucaps_wakeup, cpucaps-wakeup); +SDT_PROBE_DEFINE(sched, , , schedctl_nopreempt, schedctl-nopreempt); +SDT_PROBE_DEFINE(sched, , , schedctl_preempt, schedctl-preempt); +SDT_PROBE_DEFINE(sched, , , schedctl_yield, schedctl-yield); + void sleepinit(void) { @@ -443,6 +459,7 @@ mi_switch(int flags, struct thread *newt "prio:%d", td->td_priority, "wmesg:\"%s\"", td->td_wmesg, "lockname:\"%s\"", td->td_lockname); #endif + SDT_PROBE0(sched, , , preempt); #ifdef XEN PT_UPDATES_FLUSH(); #endif Modified: stable/8/sys/kern/kern_thread.c ============================================================================== --- stable/8/sys/kern/kern_thread.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/kern_thread.c Wed May 30 23:42:48 2012 (r236345) @@ -27,6 +27,7 @@ */ #include "opt_witness.h" +#include "opt_kdtrace.h" #include "opt_hwpmc_hooks.h" #include @@ -39,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -58,6 +60,10 @@ __FBSDID("$FreeBSD$"); #include #include +SDT_PROVIDER_DECLARE(proc); +SDT_PROBE_DEFINE(proc, , , lwp_exit, lwp-exit); + + /* * thread related storage. */ Modified: stable/8/sys/kern/sched_4bsd.c ============================================================================== --- stable/8/sys/kern/sched_4bsd.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/sched_4bsd.c Wed May 30 23:42:48 2012 (r236345) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -245,12 +246,31 @@ SYSCTL_INT(_kern_sched, OID_AUTO, follow "allow threads to share a quantum"); #endif +SDT_PROVIDER_DEFINE(sched); + +SDT_PROBE_DEFINE3(sched, , , change_pri, change-pri, "struct thread *", + "struct proc *", "uint8_t"); +SDT_PROBE_DEFINE3(sched, , , dequeue, dequeue, "struct thread *", + "struct proc *", "void *"); +SDT_PROBE_DEFINE4(sched, , , enqueue, enqueue, "struct thread *", + "struct proc *", "void *", "int"); +SDT_PROBE_DEFINE4(sched, , , lend_pri, lend-pri, "struct thread *", + "struct proc *", "uint8_t", "struct thread *"); +SDT_PROBE_DEFINE2(sched, , , load_change, load-change, "int", "int"); +SDT_PROBE_DEFINE2(sched, , , off_cpu, off-cpu, "struct thread *", + "struct proc *"); +SDT_PROBE_DEFINE(sched, , , on_cpu, on-cpu); +SDT_PROBE_DEFINE(sched, , , remain_cpu, remain-cpu); +SDT_PROBE_DEFINE2(sched, , , surrender, surrender, "struct thread *", + "struct proc *"); + static __inline void sched_load_add(void) { sched_tdcnt++; KTR_COUNTER0(KTR_SCHED, "load", "global load", sched_tdcnt); + SDT_PROBE2(sched, , , load_change, NOCPU, sched_tdcnt); } static __inline void @@ -259,6 +279,7 @@ sched_load_rem(void) sched_tdcnt--; KTR_COUNTER0(KTR_SCHED, "load", "global load", sched_tdcnt); + SDT_PROBE2(sched, , , load_change, NOCPU, sched_tdcnt); } /* * Arrange to reschedule if necessary, taking the priorities and @@ -791,10 +812,13 @@ sched_priority(struct thread *td, u_char KTR_POINT3(KTR_SCHED, "thread", sched_tdname(td), "priority change", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(curthread)); + SDT_PROBE3(sched, , , change_pri, td, td->td_proc, prio); if (td != curthread && prio > td->td_priority) { KTR_POINT3(KTR_SCHED, "thread", sched_tdname(curthread), "lend prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , lend_pri, td, td->td_proc, prio, + curthread); } THREAD_LOCK_ASSERT(td, MA_OWNED); if (td->td_priority == prio) @@ -998,6 +1022,9 @@ sched_switch(struct thread *td, struct t if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif + + SDT_PROBE2(sched, , , off_cpu, td, td->td_proc); + /* I feel sleepy */ lock_profile_release_lock(&sched_lock.lock_object); #ifdef KDTRACE_HOOKS @@ -1029,11 +1056,14 @@ sched_switch(struct thread *td, struct t * needed to, or the thread_wait() or wait() will * need to reap it. */ + + SDT_PROBE0(sched, , , on_cpu); #ifdef HWPMC_HOOKS if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_IN); #endif - } + } else + SDT_PROBE0(sched, , , remain_cpu); #ifdef SMP if (td->td_flags & TDF_IDLETD) @@ -1229,6 +1259,8 @@ sched_add(struct thread *td, int flags) sched_tdname(curthread)); KTR_POINT1(KTR_SCHED, "thread", sched_tdname(curthread), "wokeup", KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , enqueue, td, td->td_proc, NULL, + flags & SRQ_PREEMPTED); /* @@ -1318,6 +1350,8 @@ sched_add(struct thread *td, int flags) sched_tdname(curthread)); KTR_POINT1(KTR_SCHED, "thread", sched_tdname(curthread), "wokeup", KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , enqueue, td, td->td_proc, NULL, + flags & SRQ_PREEMPTED); /* * Now that the thread is moving to the run-queue, set the lock @@ -1365,6 +1399,7 @@ sched_rem(struct thread *td) KTR_STATE2(KTR_SCHED, "thread", sched_tdname(td), "runq rem", "prio:%d", td->td_priority, KTR_ATTR_LINKED, sched_tdname(curthread)); + SDT_PROBE3(sched, , , dequeue, td, td->td_proc, NULL); if ((td->td_flags & TDF_NOLOAD) == 0) sched_load_rem(); @@ -1428,6 +1463,8 @@ sched_choose(void) void sched_preempt(struct thread *td) { + + SDT_PROBE2(sched, , , surrender, td, td->td_proc); thread_lock(td); if (td->td_critnest > 1) td->td_owepreempt = 1; Modified: stable/8/sys/kern/sched_ule.c ============================================================================== --- stable/8/sys/kern/sched_ule.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/sched_ule.c Wed May 30 23:42:48 2012 (r236345) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -324,6 +325,24 @@ static void sched_initticks(void *dummy) SYSINIT(sched_initticks, SI_SUB_CLOCKS, SI_ORDER_THIRD, sched_initticks, NULL); +SDT_PROVIDER_DEFINE(sched); + +SDT_PROBE_DEFINE3(sched, , , change_pri, change-pri, "struct thread *", + "struct proc *", "uint8_t"); +SDT_PROBE_DEFINE3(sched, , , dequeue, dequeue, "struct thread *", + "struct proc *", "void *"); +SDT_PROBE_DEFINE4(sched, , , enqueue, enqueue, "struct thread *", + "struct proc *", "void *", "int"); +SDT_PROBE_DEFINE4(sched, , , lend_pri, lend-pri, "struct thread *", + "struct proc *", "uint8_t", "struct thread *"); +SDT_PROBE_DEFINE2(sched, , , load_change, load-change, "int", "int"); +SDT_PROBE_DEFINE2(sched, , , off_cpu, off-cpu, "struct thread *", + "struct proc *"); +SDT_PROBE_DEFINE(sched, , , on_cpu, on-cpu); +SDT_PROBE_DEFINE(sched, , , remain_cpu, remain-cpu); +SDT_PROBE_DEFINE2(sched, , , surrender, surrender, "struct thread *", + "struct proc *"); + /* * Print the threads waiting on a run-queue. */ @@ -507,6 +526,7 @@ tdq_load_add(struct tdq *tdq, struct thr if ((td->td_flags & TDF_NOLOAD) == 0) tdq->tdq_sysload++; KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); + SDT_PROBE2(sched, , , load_change, (int)TDQ_ID(tdq), tdq->tdq_load); } /* @@ -526,6 +546,7 @@ tdq_load_rem(struct tdq *tdq, struct thr if ((td->td_flags & TDF_NOLOAD) == 0) tdq->tdq_sysload--; KTR_COUNTER0(KTR_SCHED, "load", tdq->tdq_loadname, tdq->tdq_load); + SDT_PROBE2(sched, , , load_change, (int)TDQ_ID(tdq), tdq->tdq_load); } /* @@ -1577,10 +1598,13 @@ sched_thread_priority(struct thread *td, KTR_POINT3(KTR_SCHED, "thread", sched_tdname(td), "prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(curthread)); + SDT_PROBE3(sched, , , change_pri, td, td->td_proc, prio); if (td != curthread && prio > td->td_priority) { KTR_POINT3(KTR_SCHED, "thread", sched_tdname(curthread), "lend prio", "prio:%d", td->td_priority, "new prio:%d", prio, KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , lend_pri, td, td->td_proc, prio, + curthread); } ts = td->td_sched; THREAD_LOCK_ASSERT(td, MA_OWNED); @@ -1845,6 +1869,7 @@ sched_switch(struct thread *td, struct t if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif + SDT_PROBE2(sched, , , off_cpu, td, td->td_proc); lock_profile_release_lock(&TDQ_LOCKPTR(tdq)->lock_object); TDQ_LOCKPTR(tdq)->mtx_lock = (uintptr_t)newtd; @@ -1868,12 +1893,16 @@ sched_switch(struct thread *td, struct t tdq = TDQ_CPU(cpuid); lock_profile_obtain_lock_success( &TDQ_LOCKPTR(tdq)->lock_object, 0, 0, __FILE__, __LINE__); + + SDT_PROBE0(sched, , , on_cpu); #ifdef HWPMC_HOOKS if (PMC_PROC_IS_USING_PMCS(td->td_proc)) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_IN); #endif - } else + } else { thread_unblock_switch(td, mtx); + SDT_PROBE0(sched, , , remain_cpu); + } /* * Assert that all went well and return. */ @@ -2068,6 +2097,8 @@ sched_preempt(struct thread *td) { struct tdq *tdq; + SDT_PROBE2(sched, , , surrender, td, td->td_proc); + thread_lock(td); tdq = TDQ_SELF(); TDQ_LOCK_ASSERT(tdq, MA_OWNED); @@ -2315,6 +2346,8 @@ sched_add(struct thread *td, int flags) sched_tdname(curthread)); KTR_POINT1(KTR_SCHED, "thread", sched_tdname(curthread), "wokeup", KTR_ATTR_LINKED, sched_tdname(td)); + SDT_PROBE4(sched, , , enqueue, td, td->td_proc, NULL, + flags & SRQ_PREEMPTED); THREAD_LOCK_ASSERT(td, MA_OWNED); /* * Recalculate the priority before we select the target cpu or @@ -2360,6 +2393,7 @@ sched_rem(struct thread *td) KTR_STATE1(KTR_SCHED, "thread", sched_tdname(td), "runq rem", "prio:%d", td->td_priority); + SDT_PROBE3(sched, , , dequeue, td, td->td_proc, NULL); tdq = TDQ_CPU(td->td_sched->ts_cpu); TDQ_LOCK_ASSERT(tdq, MA_OWNED); MPASS(td->td_lock == TDQ_LOCKPTR(tdq)); Modified: stable/8/sys/kern/subr_sleepqueue.c ============================================================================== --- stable/8/sys/kern/subr_sleepqueue.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/subr_sleepqueue.c Wed May 30 23:42:48 2012 (r236345) @@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$"); #include "opt_sleepqueue_profiling.h" #include "opt_ddb.h" +#include "opt_kdtrace.h" #include "opt_sched.h" #include @@ -75,6 +76,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -166,6 +168,9 @@ static int sleepq_resume_thread(struct s static void sleepq_switch(void *wchan, int pri); static void sleepq_timeout(void *arg); +SDT_PROBE_DECLARE(sched, , , sleep); +SDT_PROBE_DECLARE(sched, , , wakeup); + /* * Early initialization of sleep queues that is called from the sleepinit() * SYSINIT. @@ -526,6 +531,7 @@ sleepq_switch(void *wchan, int pri) MPASS(td->td_sleepqueue == NULL); sched_sleep(td, pri); thread_lock_set(td, &sc->sc_lock); + SDT_PROBE0(sched, , , sleep); TD_SET_SLEEPING(td); mi_switch(SW_VOL | SWT_SLEEPQ, NULL); KASSERT(TD_IS_RUNNING(td), ("running but not TDS_RUNNING")); @@ -707,6 +713,8 @@ sleepq_resume_thread(struct sleepqueue * sc = SC_LOOKUP(sq->sq_wchan); mtx_assert(&sc->sc_lock, MA_OWNED); + SDT_PROBE2(sched, , , wakeup, td, td->td_proc); + /* Remove the thread from the queue. */ sq->sq_blockedcnt[td->td_sqqueue]--; TAILQ_REMOVE(&sq->sq_blocked[td->td_sqqueue], td, td_slpq); Modified: stable/8/sys/kern/subr_turnstile.c ============================================================================== --- stable/8/sys/kern/subr_turnstile.c Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/kern/subr_turnstile.c Wed May 30 23:42:48 2012 (r236345) @@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$"); #include "opt_ddb.h" +#include "opt_kdtrace.h" #include "opt_turnstile_profiling.h" #include "opt_sched.h" @@ -73,6 +74,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -166,6 +168,11 @@ static void turnstile_dtor(void *mem, in static int turnstile_init(void *mem, int size, int flags); static void turnstile_fini(void *mem, int size); +SDT_PROVIDER_DECLARE(sched); +SDT_PROBE_DEFINE(sched, , , sleep, sleep); +SDT_PROBE_DEFINE2(sched, , , wakeup, wakeup, "struct thread *", + "struct proc *"); + /* * Walks the chain of turnstiles and their owners to propagate the priority * of the thread being blocked to all the threads holding locks that have to @@ -739,6 +746,8 @@ turnstile_wait(struct turnstile *ts, str CTR4(KTR_LOCK, "%s: td %d blocked on [%p] %s", __func__, td->td_tid, lock, lock->lo_name); + SDT_PROBE0(sched, , , sleep); + THREAD_LOCKPTR_ASSERT(td, &ts->ts_lock); mi_switch(SW_VOL | SWT_TURNSTILE, NULL); @@ -915,6 +924,7 @@ turnstile_unpend(struct turnstile *ts, i while (!TAILQ_EMPTY(&pending_threads)) { td = TAILQ_FIRST(&pending_threads); TAILQ_REMOVE(&pending_threads, td, td_lockq); + SDT_PROBE2(sched, , , wakeup, td, td->td_proc); thread_lock(td); THREAD_LOCKPTR_ASSERT(td, &ts->ts_lock); MPASS(td->td_proc->p_magic == P_MAGIC); Modified: stable/8/sys/sys/sdt.h ============================================================================== --- stable/8/sys/sys/sdt.h Wed May 30 23:22:52 2012 (r236344) +++ stable/8/sys/sys/sdt.h Wed May 30 23:42:48 2012 (r236345) @@ -92,6 +92,7 @@ #define SDT_PROBE_DEFINE4(prov, mod, func, name, sname, arg0, arg1, arg2, arg3) #define SDT_PROBE_DEFINE5(prov, mod, func, name, sname, arg0, arg1, arg2, arg3, arg4) +#define SDT_PROBE0(prov, mod, func, name) #define SDT_PROBE1(prov, mod, func, name, arg0) #define SDT_PROBE2(prov, mod, func, name, arg0, arg1) #define SDT_PROBE3(prov, mod, func, name, arg0, arg1, arg2) @@ -231,6 +232,8 @@ struct sdt_provider { SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3); \ SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4) +#define SDT_PROBE0(prov, mod, func, name) \ + SDT_PROBE(prov, mod, func, name, 0, 0, 0, 0, 0) #define SDT_PROBE1(prov, mod, func, name, arg0) \ SDT_PROBE(prov, mod, func, name, arg0, 0, 0, 0, 0) #define SDT_PROBE2(prov, mod, func, name, arg0, arg1) \ From owner-svn-src-stable@FreeBSD.ORG Thu May 31 02:51:55 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F972106566C; Thu, 31 May 2012 02:51:55 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5A1798FC08; Thu, 31 May 2012 02:51:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4V2ptS9006654; Thu, 31 May 2012 02:51:55 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4V2ptlA006652; Thu, 31 May 2012 02:51:55 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201205310251.q4V2ptlA006652@svn.freebsd.org> From: Warren Block Date: Thu, 31 May 2012 02:51:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236349 - stable/9/bin/uuidgen X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2012 02:51:55 -0000 Author: wblock (doc committer) Date: Thu May 31 02:51:54 2012 New Revision: 236349 URL: http://svn.freebsd.org/changeset/base/236349 Log: MFC r235842 Mention the upper hard limit for -n option. Patch slightly modified from PR version. PR: 168255 Submitted by: Andy Kosela Approved by: gjb (mentor) Modified: stable/9/bin/uuidgen/uuidgen.1 Directory Properties: stable/9/bin/uuidgen/ (props changed) Modified: stable/9/bin/uuidgen/uuidgen.1 ============================================================================== --- stable/9/bin/uuidgen/uuidgen.1 Thu May 31 02:36:30 2012 (r236348) +++ stable/9/bin/uuidgen/uuidgen.1 Thu May 31 02:51:54 2012 (r236349) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 7, 2005 +.Dd May 23, 2012 .Dt UUIDGEN 1 .Os .Sh NAME @@ -52,8 +52,11 @@ instructs to not generate them in batch, but one at a time. .It Fl n This option controls the number of identifiers generated. -By default, multiple -identifiers are generated in batch. +By default, multiple identifiers are generated in batch. +The upper hard limit is 2048 +.Po see +.Xr uuidgen 2 +.Pc . .It Fl o Redirect output to .Ar filename From owner-svn-src-stable@FreeBSD.ORG Thu May 31 02:52:59 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B1A2D1065673; Thu, 31 May 2012 02:52:59 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9BF508FC14; Thu, 31 May 2012 02:52:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4V2qxeD006780; Thu, 31 May 2012 02:52:59 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4V2qxut006778; Thu, 31 May 2012 02:52:59 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201205310252.q4V2qxut006778@svn.freebsd.org> From: Warren Block Date: Thu, 31 May 2012 02:52:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236350 - stable/8/bin/uuidgen X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2012 02:52:59 -0000 Author: wblock (doc committer) Date: Thu May 31 02:52:59 2012 New Revision: 236350 URL: http://svn.freebsd.org/changeset/base/236350 Log: MFC r235842 Mention the upper hard limit for -n option. Patch slightly modified from PR version. PR: 168255 Submitted by: Andy Kosela Approved by: gjb (mentor) Modified: stable/8/bin/uuidgen/uuidgen.1 Directory Properties: stable/8/bin/uuidgen/ (props changed) Modified: stable/8/bin/uuidgen/uuidgen.1 ============================================================================== --- stable/8/bin/uuidgen/uuidgen.1 Thu May 31 02:51:54 2012 (r236349) +++ stable/8/bin/uuidgen/uuidgen.1 Thu May 31 02:52:59 2012 (r236350) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 7, 2005 +.Dd May 23, 2012 .Dt UUIDGEN 1 .Os .Sh NAME @@ -52,8 +52,11 @@ instructs to not generate them in batch, but one at a time. .It Fl n This option controls the number of identifiers generated. -By default, multiple -identifiers are generated in batch. +By default, multiple identifiers are generated in batch. +The upper hard limit is 2048 +.Po see +.Xr uuidgen 2 +.Pc . .It Fl o Redirect output to .Ar filename From owner-svn-src-stable@FreeBSD.ORG Thu May 31 02:53:28 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EEDA31065742; Thu, 31 May 2012 02:53:28 +0000 (UTC) (envelope-from wblock@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D930C8FC0C; Thu, 31 May 2012 02:53:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4V2rSPf006850; Thu, 31 May 2012 02:53:28 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4V2rSLD006848; Thu, 31 May 2012 02:53:28 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201205310253.q4V2rSLD006848@svn.freebsd.org> From: Warren Block Date: Thu, 31 May 2012 02:53:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236351 - stable/7/bin/uuidgen X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2012 02:53:29 -0000 Author: wblock (doc committer) Date: Thu May 31 02:53:28 2012 New Revision: 236351 URL: http://svn.freebsd.org/changeset/base/236351 Log: MFC r235842 Mention the upper hard limit for -n option. Patch slightly modified from PR version. PR: 168255 Submitted by: Andy Kosela Approved by: gjb (mentor) Modified: stable/7/bin/uuidgen/uuidgen.1 Directory Properties: stable/7/bin/uuidgen/ (props changed) Modified: stable/7/bin/uuidgen/uuidgen.1 ============================================================================== --- stable/7/bin/uuidgen/uuidgen.1 Thu May 31 02:52:59 2012 (r236350) +++ stable/7/bin/uuidgen/uuidgen.1 Thu May 31 02:53:28 2012 (r236351) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 7, 2005 +.Dd May 23, 2012 .Dt UUIDGEN 1 .Os .Sh NAME @@ -52,8 +52,11 @@ instructs to not generate them in batch, but one at a time. .It Fl n This option controls the number of identifiers generated. -By default, multiple -identifiers are generated in batch. +By default, multiple identifiers are generated in batch. +The upper hard limit is 2048 +.Po see +.Xr uuidgen 2 +.Pc . .It Fl o Redirect output to .Ar filename From owner-svn-src-stable@FreeBSD.ORG Thu May 31 07:44:28 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 62A0C1065670; Thu, 31 May 2012 07:44:28 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4E4358FC1A; Thu, 31 May 2012 07:44:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4V7iSBG024181; Thu, 31 May 2012 07:44:28 GMT (envelope-from eadler@svn.freebsd.org) Received: (from eadler@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4V7iSJ3024179; Thu, 31 May 2012 07:44:28 GMT (envelope-from eadler@svn.freebsd.org) Message-Id: <201205310744.q4V7iSJ3024179@svn.freebsd.org> From: Eitan Adler Date: Thu, 31 May 2012 07:44:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236354 - stable/9/tools/build/mk X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2012 07:44:28 -0000 Author: eadler Date: Thu May 31 07:44:27 2012 New Revision: 236354 URL: http://svn.freebsd.org/changeset/base/236354 Log: MFC r235204: Add some missing files to OLD_FILES PR: conf/166460 Approved by: cperciva (implicit) Modified: stable/9/tools/build/mk/OptionalObsoleteFiles.inc Directory Properties: stable/9/tools/build/ (props changed) Modified: stable/9/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- stable/9/tools/build/mk/OptionalObsoleteFiles.inc Thu May 31 07:40:37 2012 (r236353) +++ stable/9/tools/build/mk/OptionalObsoleteFiles.inc Thu May 31 07:44:27 2012 (r236354) @@ -2179,6 +2179,8 @@ OLD_FILES+=usr/share/man/man8/ipfstat.8. OLD_FILES+=usr/share/man/man8/ipmon.8.gz OLD_FILES+=usr/share/man/man8/ipnat.8.gz OLD_FILES+=usr/share/man/man8/ippool.8.gz +OLD_FILES+=etc/periodic/security/510.ipfdenied +OLD_FILES+=etc/periodic/security/610.ipf6denied .endif .if ${MK_IPFW} == no From owner-svn-src-stable@FreeBSD.ORG Thu May 31 14:18:20 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 1A881106566C; Thu, 31 May 2012 14:18:20 +0000 (UTC) (envelope-from jamie@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EFF2D8FC0A; Thu, 31 May 2012 14:18:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4VEIJED046920; Thu, 31 May 2012 14:18:19 GMT (envelope-from jamie@svn.freebsd.org) Received: (from jamie@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4VEIJ70046915; Thu, 31 May 2012 14:18:19 GMT (envelope-from jamie@svn.freebsd.org) Message-Id: <201205311418.q4VEIJ70046915@svn.freebsd.org> From: Jamie Gritton Date: Thu, 31 May 2012 14:18:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236356 - stable/9/usr.sbin/jail X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2012 14:18:20 -0000 Author: jamie Date: Thu May 31 14:18:19 2012 New Revision: 236356 URL: http://svn.freebsd.org/changeset/base/236356 Log: MFC r235949, r236198: Don't try to set a null TERM environment. When writing the jid via the -i flag, do it right when the jail is created, before any commands run. /etc/rc.d/jail depends on this. Modified: stable/9/usr.sbin/jail/command.c stable/9/usr.sbin/jail/jail.c stable/9/usr.sbin/jail/jailp.h Directory Properties: stable/9/usr.sbin/jail/ (props changed) Modified: stable/9/usr.sbin/jail/command.c ============================================================================== --- stable/9/usr.sbin/jail/command.c Thu May 31 08:22:02 2012 (r236355) +++ stable/9/usr.sbin/jail/command.c Thu May 31 14:18:19 2012 (r236356) @@ -246,7 +246,7 @@ next_proc(int nonblock) /* * Run a single command for a jail, possible inside the jail. */ -int +static int run_command(struct cfjail *j) { const struct passwd *pwd; @@ -290,6 +290,8 @@ run_command(struct cfjail *j) } else { if (create_jail(j) < 0) return -1; + if (iflag) + printf("%d\n", j->jid); if (verbose >= 0 && (j->name || verbose > 0)) jail_note(j, "created\n"); dep_done(j, DF_LIGHT); @@ -584,7 +586,8 @@ run_command(struct cfjail *j) term = getenv("TERM"); environ = &cleanenv; setenv("PATH", "/bin:/usr/bin", 0); - setenv("TERM", term, 1); + if (term != NULL) + setenv("TERM", term, 1); } if (setusercontext(lcap, pwd, pwd->pw_uid, username ? LOGIN_SETALL & ~LOGIN_SETGROUP & ~LOGIN_SETLOGIN Modified: stable/9/usr.sbin/jail/jail.c ============================================================================== --- stable/9/usr.sbin/jail/jail.c Thu May 31 08:22:02 2012 (r236355) +++ stable/9/usr.sbin/jail/jail.c Thu May 31 14:18:19 2012 (r236356) @@ -55,6 +55,7 @@ struct permspec { }; const char *cfname; +int iflag; int note_remove; int verbose; @@ -129,7 +130,7 @@ main(int argc, char **argv) size_t sysvallen; unsigned op, pi; int ch, docf, error, i, oldcl, sysval; - int dflag, iflag, Rflag; + int dflag, Rflag; char enforce_statfs[4]; #if defined(INET) || defined(INET6) char *cs, *ncs; @@ -139,7 +140,7 @@ main(int argc, char **argv) #endif op = 0; - dflag = iflag = Rflag = 0; + dflag = Rflag = 0; docf = 1; cfname = CONF_FILE; JidFile = NULL; @@ -415,8 +416,6 @@ main(int argc, char **argv) continue; jail_create_done: clear_persist(j); - if (iflag) - printf("%d\n", j->jid); if (jfp != NULL) print_jail(jfp, j, oldcl); dep_done(j, 0); Modified: stable/9/usr.sbin/jail/jailp.h ============================================================================== --- stable/9/usr.sbin/jail/jailp.h Thu May 31 08:22:02 2012 (r236355) +++ stable/9/usr.sbin/jail/jailp.h Thu May 31 14:18:19 2012 (r236356) @@ -228,6 +228,7 @@ extern struct cfjails cfjails; extern struct cfjails ready; extern struct cfjails depend; extern const char *cfname; +extern int iflag; extern int note_remove; extern int paralimit; extern int verbose; From owner-svn-src-stable@FreeBSD.ORG Thu May 31 23:05:07 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 959B61065672; Thu, 31 May 2012 23:05:07 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7F2ED8FC12; Thu, 31 May 2012 23:05:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4VN57gv069272; Thu, 31 May 2012 23:05:07 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4VN57ZV069270; Thu, 31 May 2012 23:05:07 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201205312305.q4VN57ZV069270@svn.freebsd.org> From: Justin Hibbits Date: Thu, 31 May 2012 23:05:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236368 - stable/9/sys/dev/powermac_nvram X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 May 2012 23:05:07 -0000 Author: jhibbits Date: Thu May 31 23:05:07 2012 New Revision: 236368 URL: http://svn.freebsd.org/changeset/base/236368 Log: MFC r235678: "nvram,flash" may not be the first in the compatible list property of the nvram ofw node, so check all strings in the list. Approved by: nwhitehorn (mentor) Modified: stable/9/sys/dev/powermac_nvram/powermac_nvram.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/powermac_nvram/powermac_nvram.c ============================================================================== --- stable/9/sys/dev/powermac_nvram/powermac_nvram.c Thu May 31 22:54:08 2012 (r236367) +++ stable/9/sys/dev/powermac_nvram/powermac_nvram.c Thu May 31 23:05:07 2012 (r236368) @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -118,7 +119,7 @@ powermac_nvram_probe(device_t dev) if (strcmp(type, "nvram") != 0) return ENXIO; if (strcmp(compatible, "amd-0137") != 0 && - strcmp(compatible, "nvram,flash") != 0) + !ofw_bus_is_compatible(dev, "nvram,flash")) return ENXIO; device_set_desc(dev, "Apple NVRAM"); From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 03:46:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C90A3106566C; Fri, 1 Jun 2012 03:46:29 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AEC5C8FC14; Fri, 1 Jun 2012 03:46:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q513kTui081303; Fri, 1 Jun 2012 03:46:29 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q513kTrk081281; Fri, 1 Jun 2012 03:46:29 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201206010346.q513kTrk081281@svn.freebsd.org> From: Doug Barton Date: Fri, 1 Jun 2012 03:46:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236374 - in stable/9: contrib/bind9 contrib/bind9/bin/named contrib/bind9/bin/named/unix contrib/bind9/lib/bind9 contrib/bind9/lib/dns contrib/bind9/lib/dns/include/dns contrib/bind9/l... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 03:46:29 -0000 Author: dougb Date: Fri Jun 1 03:46:28 2012 New Revision: 236374 URL: http://svn.freebsd.org/changeset/base/236374 Log: MFV r236171, MFC r236196: Upgrade to BIND version 9.8.3, the latest from ISC. Feature Change * BIND now recognizes the TLSA resource record type, created to support IETF DANE (DNS-based Authentication of Named Entities) Bug Fix * The locking strategy around the handling of iterative queries has been tuned to reduce unnecessary contention in a multi- threaded environment. Other critical bug fixes are included. All BIND users are encouraged to upgrade. Added: stable/9/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c - copied unchanged from r236373, vendor/bind9/dist/lib/dns/rdata/generic/tlsa_52.c stable/9/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h - copied unchanged from r236373, vendor/bind9/dist/lib/dns/rdata/generic/tlsa_52.h Modified: stable/9/contrib/bind9/CHANGES stable/9/contrib/bind9/README stable/9/contrib/bind9/bin/named/builtin.c stable/9/contrib/bind9/bin/named/query.c stable/9/contrib/bind9/bin/named/server.c stable/9/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c stable/9/contrib/bind9/lib/bind9/api stable/9/contrib/bind9/lib/bind9/check.c stable/9/contrib/bind9/lib/dns/api stable/9/contrib/bind9/lib/dns/dnssec.c stable/9/contrib/bind9/lib/dns/include/dns/ecdb.h stable/9/contrib/bind9/lib/dns/include/dns/rpz.h stable/9/contrib/bind9/lib/dns/include/dns/sdb.h stable/9/contrib/bind9/lib/dns/include/dns/stats.h stable/9/contrib/bind9/lib/dns/include/dns/tsec.h stable/9/contrib/bind9/lib/dns/include/dns/view.h stable/9/contrib/bind9/lib/dns/rbtdb.c stable/9/contrib/bind9/lib/dns/resolver.c stable/9/contrib/bind9/lib/dns/sdb.c stable/9/contrib/bind9/lib/dns/tkey.c stable/9/contrib/bind9/lib/dns/zone.c stable/9/contrib/bind9/lib/isc/pthreads/mutex.c stable/9/contrib/bind9/lib/isccfg/api stable/9/contrib/bind9/lib/isccfg/parser.c stable/9/contrib/bind9/version stable/9/lib/bind/dns/code.h stable/9/lib/bind/dns/dns/enumtype.h stable/9/lib/bind/dns/dns/rdatastruct.h Directory Properties: stable/9/contrib/bind9/ (props changed) stable/9/lib/bind/ (props changed) Modified: stable/9/contrib/bind9/CHANGES ============================================================================== --- stable/9/contrib/bind9/CHANGES Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/CHANGES Fri Jun 1 03:46:28 2012 (r236374) @@ -1,3 +1,56 @@ + --- 9.8.3 released --- + +3318. [tuning] Reduce the amount of work performed while holding a + bucket lock when finshed with a fetch context. + [RT #29239] + +3314. [bug] The masters list could be updated while refesh_callback + and stub_callback were using it. [RT #26732] + +3313. [protocol] Add TLSA record type. [RT #28989] + +3312. [bug] named-checkconf didn't detect a bad dns64 clients acl. + [RT #27631] + +3311. [bug] Abort the zone dump if zone->db is NULL in + zone.c:zone_gotwritehandle. [RT #29028] + +3310. [test] Increase table size for mutex profiling. [RT #28809] + +3309. [bug] resolver.c:fctx_finddone() was not threadsafe. + [RT #27995] + +3307. [bug] Add missing ISC_LANG_BEGINDECLS and ISC_LANG_ENDDECLS. + [RT #28956] + +3306. [bug] Improve DNS64 reverse zone performance. [RT #28563] + +3305. [func] Add wire format lookup method to sdb. [RT #28563] + +3304. [bug] Use hmctx, not mctx when freeing rbtdb->heaps. + [RT #28571] + +3302. [bug] dns_dnssec_findmatchingkeys could fail to find + keys if the zone name contained character that + required special mappings. [RT #28600] + +3301. [contrib] Update queryperf to build on darwin. Add -R flag + for non-recursive queries. [RT #28565] + +3300. [bug] Named could die if gssapi was enabled in named.conf + but was not compiled in. [RT #28338] + +3299. [bug] Make SDB handle errors from database drivers better. + [RT #28534] + +3232. [bug] Zero zone->curmaster before return in + dns_zone_setmasterswithkeys(). [RT #26732] + +3183. [bug] Added RTLD_GLOBAL flag to dlopen call. [RT #26301] + +3197. [bug] Don't try to log the filename and line number when + the config parser can't open a file. [RT #22263] + --- 9.8.2 released --- 3298. [bug] Named could dereference a NULL pointer in @@ -58,9 +111,9 @@ 3274. [bug] Log when a zone is not reusable. Only set loadtime on successful loads. [RT #27650] -3273. [bug] AAAA responses could be returned in the additional - section even when filter-aaaa-on-v4 was in use. - [RT #27292] +3273. [bug] AAAA responses could be returned in the additional + section even when filter-aaaa-on-v4 was in use. + [RT #27292] 3271. [port] darwin: mksymtbl is not always stable, loop several times before giving up. mksymtbl was using non Modified: stable/9/contrib/bind9/README ============================================================================== --- stable/9/contrib/bind9/README Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/README Fri Jun 1 03:46:28 2012 (r236374) @@ -51,6 +51,10 @@ BIND 9 For up-to-date release notes and errata, see http://www.isc.org/software/bind9/releasenotes +BIND 9.8.3 + + BIND 9.8.3 is a maintenance release. + BIND 9.8.2 BIND 9.8.2 includes a number of bug fixes and prevents a security Modified: stable/9/contrib/bind9/bin/named/builtin.c ============================================================================== --- stable/9/contrib/bind9/bin/named/builtin.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/bin/named/builtin.c Fri Jun 1 03:46:28 2012 (r236374) @@ -69,35 +69,79 @@ static builtin_t empty_builtin = { do_em static builtin_t dns64_builtin = { do_dns64_lookup, NULL, NULL }; static dns_sdbimplementation_t *builtin_impl; +static dns_sdbimplementation_t *dns64_impl; -static const char hex[] = "0123456789abcdef"; -static const char HEX[] = "0123456789ABCDEF"; +/* + * Pre computed HEX * 16 or 1 table. + */ +static const unsigned char hex16[256] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*00*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*10*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*20*/ + 0, 16, 32, 48, 64, 80, 96,112,128,144, 1, 1, 1, 1, 1, 1, /*30*/ + 1,160,176,192,208,224,240, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*40*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*50*/ + 1,160,176,192,208,224,240, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*60*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*70*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*80*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*90*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*A0*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*B0*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*C0*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*D0*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /*E0*/ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 /*F0*/ +}; + +const unsigned char decimal[] = "0123456789"; + +static size_t +dns64_rdata(unsigned char *v, size_t start, unsigned char *rdata) { + size_t i, j = 0; + + for (i = 0; i < 4; i++) { + unsigned char c = v[start++]; + if (start == 7) + start++; + if (c > 99) { + rdata[j++] = 3; + rdata[j++] = decimal[c/100]; c = c % 100; + rdata[j++] = decimal[c/10]; c = c % 10; + rdata[j++] = decimal[c]; + } else if (c > 9) { + rdata[j++] = 2; + rdata[j++] = decimal[c/10]; c = c % 10; + rdata[j++] = decimal[c]; + } else { + rdata[j++] = 1; + rdata[j++] = decimal[c]; + } + } + memcpy(&rdata[j], "\07in-addr\04arpa", 14); + return (j + 14); +} static isc_result_t -dns64_cname(const char *zone, const char *name, dns_sdblookup_t *lookup) { - size_t zlen, nlen, j; - const char *s; - unsigned char v[16]; +dns64_cname(const dns_name_t *zone, const dns_name_t *name, + dns_sdblookup_t *lookup) +{ + size_t zlen, nlen, j, len; + unsigned char v[16], n; unsigned int i; - char reverse[sizeof("123.123.123.123.in-addr.arpa.")]; + unsigned char rdata[sizeof("123.123.123.123.in-addr.arpa.")]; + unsigned char *ndata; /* - * The sum the length of the relative name and the length of the zone - * name for a IPv6 reverse lookup comes to 71. - * - * The reverse of 2001::10.0.0.1 (dns64 2001::/96) has a zone of - * "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.0.0.2.ip6.arpa" - * and a name of "1.0.0.0.0.0.a.0". The sum of the lengths of these - * two strings is 71. + * The combined length of the zone and name is 74. * - * The minimum length for a ip6.arpa zone name is 8. + * The minimum zone length is 10 ((3)ip6(4)arpa(0)). * - * The length of name should always be odd as we are expecting + * The length of name should always be even as we are expecting * a series of nibbles. */ - zlen = strlen(zone); - nlen = strlen(name); - if ((zlen + nlen) > 71U || zlen < 8U || (nlen % 2) != 1U) + zlen = zone->length; + nlen = name->length; + if ((zlen + nlen) > 74U || zlen < 10U || (nlen % 2) != 0U) return (ISC_R_NOTFOUND); /* @@ -116,25 +160,20 @@ dns64_cname(const char *zone, const char * are byte aligned and we correctly return ISC_R_NOTFOUND or * ISC_R_SUCCESS. We will not generate a CNAME in this case. */ - i = (nlen % 4) == 1U ? 1 : 0; + ndata = name->ndata; + i = (nlen % 4) == 2U ? 1 : 0; j = nlen; memset(v, 0, sizeof(v)); - while (j >= 1U) { + while (j != 0) { INSIST((i/2) < sizeof(v)); - if (j > 1U && name[1] != '.') + if (ndata[0] != 1) return (ISC_R_NOTFOUND); - v[i/2] >>= 4; - if ((s = strchr(hex, name[0])) != NULL) - v[i/2] |= (s - hex) << 4; - else if ((s = strchr(HEX, name[0])) != NULL) - v[i/2] |= (s - HEX) << 4; - else + n = hex16[ndata[1]&0xff]; + if (n == 1) return (ISC_R_NOTFOUND); - if (j > 1U) - j -= 2; - else - j -= 1; - name += 2; + v[i/2] = n | (v[i/2]>>4); + j -= 2; + ndata += 2; i++; } @@ -144,90 +183,91 @@ dns64_cname(const char *zone, const char * it corresponds to a empty node in the zone or there should be * a CNAME. */ +#define ZLEN(x) (10 + (x)/2) switch (zlen) { - case 24: /* prefix len 32 */ + case ZLEN(32): /* prefix len 32 */ + /* + * The nibbles that map to this byte must be zero for 'name' + * to exist in the zone. + */ + if (nlen > 16U && v[(nlen-1)/4 - 4] != 0) + return (ISC_R_NOTFOUND); /* - * If the total length is not 71 then this is a empty node + * If the total length is not 74 then this is a empty node * so return success. */ - if (nlen + zlen != 71U) + if (nlen + zlen != 74U) return (ISC_R_SUCCESS); - snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", - v[8], v[9], v[10], v[11]); + len = dns64_rdata(v, 8, rdata); break; - case 28: /* prefix len 40 */ + case ZLEN(40): /* prefix len 40 */ /* * The nibbles that map to this byte must be zero for 'name' * to exist in the zone. */ - if (nlen > 11U && v[nlen/4 - 3] != 0) + if (nlen > 12U && v[(nlen-1)/4 - 3] != 0) return (ISC_R_NOTFOUND); /* - * If the total length is not 71 then this is a empty node + * If the total length is not 74 then this is a empty node * so return success. */ - if (nlen + zlen != 71U) + if (nlen + zlen != 74U) return (ISC_R_SUCCESS); - snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", - v[6], v[8], v[9], v[10]); + len = dns64_rdata(v, 6, rdata); break; - case 32: /* prefix len 48 */ + case ZLEN(48): /* prefix len 48 */ /* * The nibbles that map to this byte must be zero for 'name' * to exist in the zone. */ - if (nlen > 7U && v[nlen/4 - 2] != 0) + if (nlen > 8U && v[(nlen-1)/4 - 2] != 0) return (ISC_R_NOTFOUND); /* - * If the total length is not 71 then this is a empty node + * If the total length is not 74 then this is a empty node * so return success. */ - if (nlen + zlen != 71U) + if (nlen + zlen != 74U) return (ISC_R_SUCCESS); - snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", - v[5], v[6], v[8], v[9]); + len = dns64_rdata(v, 5, rdata); break; - case 36: /* prefix len 56 */ + case ZLEN(56): /* prefix len 56 */ /* * The nibbles that map to this byte must be zero for 'name' * to exist in the zone. */ - if (nlen > 3U && v[nlen/4 - 1] != 0) + if (nlen > 4U && v[(nlen-1)/4 - 1] != 0) return (ISC_R_NOTFOUND); /* - * If the total length is not 71 then this is a empty node + * If the total length is not 74 then this is a empty node * so return success. */ - if (nlen + zlen != 71U) + if (nlen + zlen != 74U) return (ISC_R_SUCCESS); - snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", - v[4], v[5], v[6], v[8]); + len = dns64_rdata(v, 4, rdata); break; - case 40: /* prefix len 64 */ + case ZLEN(64): /* prefix len 64 */ /* * The nibbles that map to this byte must be zero for 'name' * to exist in the zone. */ - if (v[nlen/4] != 0) + if (v[(nlen-1)/4] != 0) return (ISC_R_NOTFOUND); /* - * If the total length is not 71 then this is a empty node + * If the total length is not 74 then this is a empty node * so return success. */ - if (nlen + zlen != 71U) + if (nlen + zlen != 74U) return (ISC_R_SUCCESS); - snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", - v[3], v[4], v[5], v[6]); + len = dns64_rdata(v, 3, rdata); break; - case 56: /* prefix len 96 */ + case ZLEN(96): /* prefix len 96 */ /* - * If the total length is not 71 then this is a empty node + * If the total length is not 74 then this is a empty node * so return success. */ - if (nlen + zlen != 71U) + if (nlen + zlen != 74U) return (ISC_R_SUCCESS); - snprintf(reverse, sizeof(reverse), "%u.%u.%u.%u.in-addr.arpa.", - v[0], v[1], v[2], v[3]); + len = dns64_rdata(v, 0, rdata); break; default: /* @@ -236,7 +276,7 @@ dns64_cname(const char *zone, const char */ return (ISC_R_NOTFOUND); } - return (dns_sdb_putrr(lookup, "CNAME", 600, reverse)); + return (dns_sdb_putrdata(lookup, dns_rdatatype_cname, 600, rdata, len)); } static isc_result_t @@ -249,13 +289,23 @@ builtin_lookup(const char *zone, const c if (strcmp(name, "@") == 0) return (b->do_lookup(lookup)); - else if (b->do_lookup == do_dns64_lookup) - return (dns64_cname(zone, name, lookup)); else return (ISC_R_NOTFOUND); } static isc_result_t +dns64_lookup(const dns_name_t *zone, const dns_name_t *name, void *dbdata, + dns_sdblookup_t *lookup) +{ + builtin_t *b = (builtin_t *) dbdata; + + if (name->labels == 0 && name->length == 0) + return (b->do_lookup(lookup)); + else + return (dns64_cname(zone, name, lookup)); +} + +static isc_result_t put_txt(dns_sdblookup_t *lookup, const char *text) { unsigned char buf[256]; unsigned int len = strlen(text); @@ -481,7 +531,17 @@ static dns_sdbmethods_t builtin_methods builtin_authority, NULL, /* allnodes */ builtin_create, - builtin_destroy + builtin_destroy, + NULL +}; + +static dns_sdbmethods_t dns64_methods = { + NULL, + builtin_authority, + NULL, /* allnodes */ + builtin_create, + builtin_destroy, + dns64_lookup, }; isc_result_t @@ -491,11 +551,17 @@ ns_builtin_init(void) { DNS_SDBFLAG_RELATIVERDATA, ns_g_mctx, &builtin_impl) == ISC_R_SUCCESS); + RUNTIME_CHECK(dns_sdb_register("_dns64", &dns64_methods, NULL, + DNS_SDBFLAG_RELATIVEOWNER | + DNS_SDBFLAG_RELATIVERDATA | + DNS_SDBFLAG_DNS64, + ns_g_mctx, &dns64_impl) + == ISC_R_SUCCESS); return (ISC_R_SUCCESS); } void ns_builtin_deinit(void) { dns_sdb_unregister(&builtin_impl); + dns_sdb_unregister(&dns64_impl); } - Modified: stable/9/contrib/bind9/bin/named/query.c ============================================================================== --- stable/9/contrib/bind9/bin/named/query.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/bin/named/query.c Fri Jun 1 03:46:28 2012 (r236374) @@ -3354,6 +3354,11 @@ query_addwildcardproof(ns_client_t *clie dns_name_copy(name, cname, NULL); while (result == DNS_R_NXDOMAIN) { labels = dns_name_countlabels(cname) - 1; + /* + * Sanity check. + */ + if (labels == 0U) + goto cleanup; dns_name_split(cname, labels, NULL, cname); result = dns_db_find(db, cname, version, dns_rdatatype_nsec, Modified: stable/9/contrib/bind9/bin/named/server.c ============================================================================== --- stable/9/contrib/bind9/bin/named/server.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/bin/named/server.c Fri Jun 1 03:46:28 2012 (r236374) @@ -1358,7 +1358,7 @@ dns64_reverse(dns_view_t *view, isc_mem_ { char *cp; char reverse[48+sizeof("ip6.arpa.")]; - const char *dns64_dbtype[4] = { "_builtin", "dns64", ".", "." }; + const char *dns64_dbtype[4] = { "_dns64", "dns64", ".", "." }; const char *sep = ": view "; const char *viewname = view->name; const unsigned char *s6; Modified: stable/9/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c ============================================================================== --- stable/9/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/bin/named/unix/dlz_dlopen_driver.c Fri Jun 1 03:46:28 2012 (r236374) @@ -250,7 +250,7 @@ dlopen_dlz_create(const char *dlzname, u isc_mutex_init(&cd->lock); /* Open the library */ - dlopen_flags = RTLD_NOW; + dlopen_flags = RTLD_NOW|RTLD_GLOBAL; #ifdef RTLD_DEEPBIND /* Modified: stable/9/contrib/bind9/lib/bind9/api ============================================================================== --- stable/9/contrib/bind9/lib/bind9/api Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/bind9/api Fri Jun 1 03:46:28 2012 (r236374) @@ -4,5 +4,5 @@ # 9.8: 80-89 # 9.9: 90-109 LIBINTERFACE = 80 -LIBREVISION = 4 +LIBREVISION = 5 LIBAGE = 0 Modified: stable/9/contrib/bind9/lib/bind9/check.c ============================================================================== --- stable/9/contrib/bind9/lib/bind9/check.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/bind9/check.c Fri Jun 1 03:46:28 2012 (r236374) @@ -434,7 +434,7 @@ check_dns64(cfg_aclconfctx_t *actx, cons int nbytes; int i; - static const char *acls[] = { "client", "exclude", "mapped", NULL}; + static const char *acls[] = { "clients", "exclude", "mapped", NULL}; if (voptions != NULL) cfg_map_get(voptions, "dns64", &dns64); Modified: stable/9/contrib/bind9/lib/dns/api ============================================================================== --- stable/9/contrib/bind9/lib/dns/api Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/api Fri Jun 1 03:46:28 2012 (r236374) @@ -4,5 +4,5 @@ # 9.8: 80-89 # 9.9: 90-109 LIBINTERFACE = 87 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 6 Modified: stable/9/contrib/bind9/lib/dns/dnssec.c ============================================================================== --- stable/9/contrib/bind9/lib/dns/dnssec.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/dnssec.c Fri Jun 1 03:46:28 2012 (r236374) @@ -1246,7 +1246,7 @@ dns_dnssec_findmatchingkeys(dns_name_t * isc_dir_init(&dir); isc_buffer_init(&b, namebuf, sizeof(namebuf) - 1); - RETERR(dns_name_totext(origin, ISC_FALSE, &b)); + RETERR(dns_name_tofilenametext(origin, ISC_FALSE, &b)); len = isc_buffer_usedlength(&b); namebuf[len] = '\0'; Modified: stable/9/contrib/bind9/lib/dns/include/dns/ecdb.h ============================================================================== --- stable/9/contrib/bind9/lib/dns/include/dns/ecdb.h Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/include/dns/ecdb.h Fri Jun 1 03:46:28 2012 (r236374) @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2012 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -39,6 +39,8 @@ *** Functions ***/ +ISC_LANG_BEGINDECLS + /* TBD: describe those */ isc_result_t Modified: stable/9/contrib/bind9/lib/dns/include/dns/rpz.h ============================================================================== --- stable/9/contrib/bind9/lib/dns/include/dns/rpz.h Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/include/dns/rpz.h Fri Jun 1 03:46:28 2012 (r236374) @@ -194,5 +194,7 @@ dns_rpz_cidr_find(dns_rpz_cidr_t *cidr, dns_rpz_policy_t dns_rpz_decode_cname(dns_rdataset_t *, dns_name_t *selfname); +ISC_LANG_ENDDECLS + #endif /* DNS_RPZ_H */ Modified: stable/9/contrib/bind9/lib/dns/include/dns/sdb.h ============================================================================== --- stable/9/contrib/bind9/lib/dns/include/dns/sdb.h Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/include/dns/sdb.h Fri Jun 1 03:46:28 2012 (r236374) @@ -59,6 +59,9 @@ typedef struct dns_sdballnodes dns_sdbal typedef isc_result_t (*dns_sdblookupfunc_t)(const char *zone, const char *name, void *dbdata, dns_sdblookup_t *); +typedef isc_result_t +(*dns_sdblookup2func_t)(const dns_name_t *zone, const dns_name_t *name, + void *dbdata, dns_sdblookup_t *lookup); typedef isc_result_t (*dns_sdbauthorityfunc_t)(const char *zone, void *dbdata, dns_sdblookup_t *); @@ -81,6 +84,7 @@ typedef struct dns_sdbmethods { dns_sdballnodesfunc_t allnodes; dns_sdbcreatefunc_t create; dns_sdbdestroyfunc_t destroy; + dns_sdblookup2func_t lookup2; } dns_sdbmethods_t; /*** @@ -92,6 +96,7 @@ ISC_LANG_BEGINDECLS #define DNS_SDBFLAG_RELATIVEOWNER 0x00000001U #define DNS_SDBFLAG_RELATIVERDATA 0x00000002U #define DNS_SDBFLAG_THREADSAFE 0x00000004U +#define DNS_SDBFLAG_DNS64 0x00000008U isc_result_t dns_sdb_register(const char *drivername, const dns_sdbmethods_t *methods, Modified: stable/9/contrib/bind9/lib/dns/include/dns/stats.h ============================================================================== --- stable/9/contrib/bind9/lib/dns/include/dns/stats.h Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/include/dns/stats.h Fri Jun 1 03:46:28 2012 (r236374) @@ -147,6 +147,8 @@ typedef void (*dns_rdatatypestats_dumper void *); typedef void (*dns_opcodestats_dumper_t)(dns_opcode_t, isc_uint64_t, void *); +ISC_LANG_BEGINDECLS + isc_result_t dns_generalstats_create(isc_mem_t *mctx, dns_stats_t **statsp, int ncounters); /*%< Modified: stable/9/contrib/bind9/lib/dns/include/dns/tsec.h ============================================================================== --- stable/9/contrib/bind9/lib/dns/include/dns/tsec.h Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/include/dns/tsec.h Fri Jun 1 03:46:28 2012 (r236374) @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2010 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2009, 2010, 2012 Internet Systems Consortium, Inc. ("ISC") * * Permission to use, copy, modify, and/or distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -132,4 +132,6 @@ dns_tsec_getkey(dns_tsec_t *tsec, void * *\li *tsecp points to a valid key structure depending on the TSEC type. */ +ISC_LANG_ENDDECLS + #endif /* DNS_TSEC_H */ Modified: stable/9/contrib/bind9/lib/dns/include/dns/view.h ============================================================================== --- stable/9/contrib/bind9/lib/dns/include/dns/view.h Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/include/dns/view.h Fri Jun 1 03:46:28 2012 (r236374) @@ -1075,4 +1075,6 @@ dns_view_setnewzones(dns_view_t *view, i void dns_view_restorekeyring(dns_view_t *view); +ISC_LANG_ENDDECLS + #endif /* DNS_VIEW_H */ Modified: stable/9/contrib/bind9/lib/dns/rbtdb.c ============================================================================== --- stable/9/contrib/bind9/lib/dns/rbtdb.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/rbtdb.c Fri Jun 1 03:46:28 2012 (r236374) @@ -7814,7 +7814,7 @@ dns_rbtdb_create for (i = 0 ; i < (int)rbtdb->node_lock_count ; i++) if (rbtdb->heaps[i] != NULL) isc_heap_destroy(&rbtdb->heaps[i]); - isc_mem_put(mctx, rbtdb->heaps, + isc_mem_put(hmctx, rbtdb->heaps, rbtdb->node_lock_count * sizeof(isc_heap_t *)); } Copied: stable/9/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c (from r236373, vendor/bind9/dist/lib/dns/rdata/generic/tlsa_52.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/contrib/bind9/lib/dns/rdata/generic/tlsa_52.c Fri Jun 1 03:46:28 2012 (r236374, copy of r236373, vendor/bind9/dist/lib/dns/rdata/generic/tlsa_52.c) @@ -0,0 +1,290 @@ +/* + * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id$ */ + +/* draft-ietf-dane-protocol-19.txt */ + +#ifndef RDATA_GENERIC_TLSA_52_C +#define RDATA_GENERIC_TLSA_52_C + +#define RRTYPE_TLSA_ATTRIBUTES 0 + +static inline isc_result_t +fromtext_tlsa(ARGS_FROMTEXT) { + isc_token_t token; + + REQUIRE(type == 52); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(origin); + UNUSED(options); + UNUSED(callbacks); + + /* + * Certificate Usage. + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffU) + RETTOK(ISC_R_RANGE); + RETERR(uint8_tobuffer(token.value.as_ulong, target)); + + /* + * Selector. + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffU) + RETTOK(ISC_R_RANGE); + RETERR(uint8_tobuffer(token.value.as_ulong, target)); + + /* + * Matching type. + */ + RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_number, + ISC_FALSE)); + if (token.value.as_ulong > 0xffU) + RETTOK(ISC_R_RANGE); + RETERR(uint8_tobuffer(token.value.as_ulong, target)); + + /* + * Certificate Association Data. + */ + return (isc_hex_tobuffer(lexer, target, -1)); +} + +static inline isc_result_t +totext_tlsa(ARGS_TOTEXT) { + isc_region_t sr; + char buf[sizeof("64000 ")]; + unsigned int n; + + REQUIRE(rdata->type == 52); + REQUIRE(rdata->length != 0); + + UNUSED(tctx); + + dns_rdata_toregion(rdata, &sr); + + /* + * Certificate Usage. + */ + n = uint8_fromregion(&sr); + isc_region_consume(&sr, 1); + sprintf(buf, "%u ", n); + RETERR(str_totext(buf, target)); + + /* + * Selector. + */ + n = uint8_fromregion(&sr); + isc_region_consume(&sr, 1); + sprintf(buf, "%u ", n); + RETERR(str_totext(buf, target)); + + /* + * Matching type. + */ + n = uint8_fromregion(&sr); + isc_region_consume(&sr, 1); + sprintf(buf, "%u", n); + RETERR(str_totext(buf, target)); + + /* + * Certificate Association Data. + */ + if ((tctx->flags & DNS_STYLEFLAG_MULTILINE) != 0) + RETERR(str_totext(" (", target)); + RETERR(str_totext(tctx->linebreak, target)); + if (tctx->width == 0) /* No splitting */ + RETERR(isc_hex_totext(&sr, 0, "", target)); + else + RETERR(isc_hex_totext(&sr, tctx->width - 2, + tctx->linebreak, target)); + if ((tctx->flags & DNS_STYLEFLAG_MULTILINE) != 0) + RETERR(str_totext(" )", target)); + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +fromwire_tlsa(ARGS_FROMWIRE) { + isc_region_t sr; + + REQUIRE(type == 52); + + UNUSED(type); + UNUSED(rdclass); + UNUSED(dctx); + UNUSED(options); + + isc_buffer_activeregion(source, &sr); + + if (sr.length < 3) + return (ISC_R_UNEXPECTEDEND); + + isc_buffer_forward(source, sr.length); + return (mem_tobuffer(target, sr.base, sr.length)); +} + +static inline isc_result_t +towire_tlsa(ARGS_TOWIRE) { + isc_region_t sr; + + REQUIRE(rdata->type == 52); + REQUIRE(rdata->length != 0); + + UNUSED(cctx); + + dns_rdata_toregion(rdata, &sr); + return (mem_tobuffer(target, sr.base, sr.length)); +} + +static inline int +compare_tlsa(ARGS_COMPARE) { + isc_region_t r1; + isc_region_t r2; + + REQUIRE(rdata1->type == rdata2->type); + REQUIRE(rdata1->rdclass == rdata2->rdclass); + REQUIRE(rdata1->type == 52); + REQUIRE(rdata1->length != 0); + REQUIRE(rdata2->length != 0); + + dns_rdata_toregion(rdata1, &r1); + dns_rdata_toregion(rdata2, &r2); + return (isc_region_compare(&r1, &r2)); +} + +static inline isc_result_t +fromstruct_tlsa(ARGS_FROMSTRUCT) { + dns_rdata_tlsa_t *tlsa = source; + + REQUIRE(type == 52); + REQUIRE(source != NULL); + REQUIRE(tlsa->common.rdtype == type); + REQUIRE(tlsa->common.rdclass == rdclass); + + UNUSED(type); + UNUSED(rdclass); + + RETERR(uint8_tobuffer(tlsa->usage, target)); + RETERR(uint8_tobuffer(tlsa->selector, target)); + RETERR(uint8_tobuffer(tlsa->match, target)); + + return (mem_tobuffer(target, tlsa->data, tlsa->length)); +} + +static inline isc_result_t +tostruct_tlsa(ARGS_TOSTRUCT) { + dns_rdata_tlsa_t *tlsa = target; + isc_region_t region; + + REQUIRE(rdata->type == 52); + REQUIRE(target != NULL); + REQUIRE(rdata->length != 0); + + tlsa->common.rdclass = rdata->rdclass; + tlsa->common.rdtype = rdata->type; + ISC_LINK_INIT(&tlsa->common, link); + + dns_rdata_toregion(rdata, ®ion); + + tlsa->usage = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + tlsa->selector = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + tlsa->match = uint8_fromregion(®ion); + isc_region_consume(®ion, 1); + tlsa->length = region.length; + + tlsa->data = mem_maybedup(mctx, region.base, region.length); + if (tlsa->data == NULL) + return (ISC_R_NOMEMORY); + + tlsa->mctx = mctx; + return (ISC_R_SUCCESS); +} + +static inline void +freestruct_tlsa(ARGS_FREESTRUCT) { + dns_rdata_tlsa_t *tlsa = source; + + REQUIRE(tlsa != NULL); + REQUIRE(tlsa->common.rdtype == 52); + + if (tlsa->mctx == NULL) + return; + + if (tlsa->data != NULL) + isc_mem_free(tlsa->mctx, tlsa->data); + tlsa->mctx = NULL; +} + +static inline isc_result_t +additionaldata_tlsa(ARGS_ADDLDATA) { + REQUIRE(rdata->type == 52); + + UNUSED(rdata); + UNUSED(add); + UNUSED(arg); + + return (ISC_R_SUCCESS); +} + +static inline isc_result_t +digest_tlsa(ARGS_DIGEST) { + isc_region_t r; + + REQUIRE(rdata->type == 52); + + dns_rdata_toregion(rdata, &r); + + return ((digest)(arg, &r)); +} + +static inline isc_boolean_t +checkowner_tlsa(ARGS_CHECKOWNER) { + + REQUIRE(type == 52); + + UNUSED(name); + UNUSED(type); + UNUSED(rdclass); + UNUSED(wildcard); + + return (ISC_TRUE); +} + +static inline isc_boolean_t +checknames_tlsa(ARGS_CHECKNAMES) { + + REQUIRE(rdata->type == 52); + + UNUSED(rdata); + UNUSED(owner); + UNUSED(bad); + + return (ISC_TRUE); +} + +static inline int +casecompare_tlsa(ARGS_COMPARE) { + return (compare_tlsa(rdata1, rdata2)); +} + +#endif /* RDATA_GENERIC_TLSA_52_C */ Copied: stable/9/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h (from r236373, vendor/bind9/dist/lib/dns/rdata/generic/tlsa_52.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/contrib/bind9/lib/dns/rdata/generic/tlsa_52.h Fri Jun 1 03:46:28 2012 (r236374, copy of r236373, vendor/bind9/dist/lib/dns/rdata/generic/tlsa_52.h) @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC") + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id$ */ + +#ifndef GENERIC_TLSA_52_H +#define GENERIC_TLSA_52_H 1 + +/*! + * \brief per draft-ietf-dane-protocol-19.txt + */ +typedef struct dns_rdata_tlsa { + dns_rdatacommon_t common; + isc_mem_t *mctx; + isc_uint8_t usage; + isc_uint8_t selector; + isc_uint8_t match; + isc_uint16_t length; + unsigned char *data; +} dns_rdata_tlsa_t; + +#endif /* GENERIC_TLSA_52_H */ Modified: stable/9/contrib/bind9/lib/dns/resolver.c ============================================================================== --- stable/9/contrib/bind9/lib/dns/resolver.c Fri Jun 1 03:00:36 2012 (r236373) +++ stable/9/contrib/bind9/lib/dns/resolver.c Fri Jun 1 03:46:28 2012 (r236374) @@ -180,7 +180,9 @@ struct fetchctx { dns_rdatatype_t type; unsigned int options; unsigned int bucketnum; - char * info; + char * info; + isc_mem_t * mctx; + /*% Locked by appropriate bucket lock. */ fetchstate state; isc_boolean_t want_shutdown; @@ -446,7 +448,8 @@ static void resquery_response(isc_task_t static void resquery_connected(isc_task_t *task, isc_event_t *event); static void fctx_try(fetchctx_t *fctx, isc_boolean_t retrying, isc_boolean_t badcache); -static isc_boolean_t fctx_destroy(fetchctx_t *fctx); +static void fctx_destroy(fetchctx_t *fctx); +static isc_boolean_t fctx_unlink(fetchctx_t *fctx); static isc_result_t ncache_adderesult(dns_message_t *message, dns_db_t *cache, dns_dbnode_t *node, dns_rdatatype_t covers, @@ -478,8 +481,7 @@ valcreate(fetchctx_t *fctx, dns_adbaddri dns_valarg_t *valarg; isc_result_t result; - valarg = isc_mem_get(fctx->res->buckets[fctx->bucketnum].mctx, - sizeof(*valarg)); + valarg = isc_mem_get(fctx->mctx, sizeof(*valarg)); if (valarg == NULL) return (ISC_R_NOMEMORY); @@ -501,8 +503,7 @@ valcreate(fetchctx_t *fctx, dns_adbaddri } ISC_LIST_APPEND(fctx->validators, validator, link); } else - isc_mem_put(fctx->res->buckets[fctx->bucketnum].mctx, - valarg, sizeof(*valarg)); + isc_mem_put(fctx->mctx, valarg, sizeof(*valarg)); return (result); } @@ -1386,13 +1387,12 @@ fctx_query(fetchctx_t *fctx, dns_adbaddr dns_message_reset(fctx->rmessage, DNS_MESSAGE_INTENTPARSE); - query = isc_mem_get(res->buckets[fctx->bucketnum].mctx, - sizeof(*query)); + query = isc_mem_get(fctx->mctx, sizeof(*query)); if (query == NULL) { result = ISC_R_NOMEMORY; goto stop_idle_timer; } - query->mctx = res->buckets[fctx->bucketnum].mctx; + query->mctx = fctx->mctx; query->options = options; query->attributes = 0; query->sends = 0; @@ -1569,8 +1569,7 @@ fctx_query(fetchctx_t *fctx, dns_adbaddr cleanup_query: if (query->connects == 0) { query->magic = 0; - isc_mem_put(res->buckets[fctx->bucketnum].mctx, - query, sizeof(*query)); + isc_mem_put(fctx->mctx, query, sizeof(*query)); } stop_idle_timer: @@ -1600,8 +1599,7 @@ add_bad_edns(fetchctx_t *fctx, isc_socka *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 06:39:55 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DA9B71065678; Fri, 1 Jun 2012 06:39:55 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C47128FC1D; Fri, 1 Jun 2012 06:39:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q516dtQ8092427; Fri, 1 Jun 2012 06:39:55 GMT (envelope-from eadler@svn.freebsd.org) Received: (from eadler@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q516dtwR092425; Fri, 1 Jun 2012 06:39:55 GMT (envelope-from eadler@svn.freebsd.org) Message-Id: <201206010639.q516dtwR092425@svn.freebsd.org> From: Eitan Adler Date: Fri, 1 Jun 2012 06:39:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236382 - stable/9/share/examples/csh X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 06:39:56 -0000 Author: eadler Date: Fri Jun 1 06:39:55 2012 New Revision: 236382 URL: http://svn.freebsd.org/changeset/base/236382 Log: MFC r235481: Rework sample code which sets SSH_AUTH_SOCK to the user's ssh-agent socket path if running PR: 167932 Approved by: cperciva (implicit) Modified: stable/9/share/examples/csh/dot.cshrc Directory Properties: stable/9/share/examples/csh/ (props changed) Modified: stable/9/share/examples/csh/dot.cshrc ============================================================================== --- stable/9/share/examples/csh/dot.cshrc Fri Jun 1 06:20:39 2012 (r236381) +++ stable/9/share/examples/csh/dot.cshrc Fri Jun 1 06:39:55 2012 (r236382) @@ -5,7 +5,7 @@ # Sets SSH_AUTH_SOCK to the user's ssh-agent socket path if running if (${?SSH_AUTH_SOCK} != "1") then - setenv SSH_AUTH_SOCK `sockstat | grep "${USER}" | cut -d ' ' -f 6` + setenv SSH_AUTH_SOCK `sockstat | grep "^${USER} " | awk '/ssh-agent/ { print $6 }'` endif # Change only root's prompt From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 06:40:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BBF051065785; Fri, 1 Jun 2012 06:40:29 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A5EA08FC17; Fri, 1 Jun 2012 06:40:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q516eTu7092499; Fri, 1 Jun 2012 06:40:29 GMT (envelope-from eadler@svn.freebsd.org) Received: (from eadler@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q516eTj2092497; Fri, 1 Jun 2012 06:40:29 GMT (envelope-from eadler@svn.freebsd.org) Message-Id: <201206010640.q516eTj2092497@svn.freebsd.org> From: Eitan Adler Date: Fri, 1 Jun 2012 06:40:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236383 - stable/8/share/examples/csh X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 06:40:29 -0000 Author: eadler Date: Fri Jun 1 06:40:29 2012 New Revision: 236383 URL: http://svn.freebsd.org/changeset/base/236383 Log: MFC r235481: Rework sample code which sets SSH_AUTH_SOCK to the user's ssh-agent socket path if running PR: 167932 Approved by: cperciva (implicit) Modified: stable/8/share/examples/csh/dot.cshrc Directory Properties: stable/8/share/examples/csh/ (props changed) Modified: stable/8/share/examples/csh/dot.cshrc ============================================================================== --- stable/8/share/examples/csh/dot.cshrc Fri Jun 1 06:39:55 2012 (r236382) +++ stable/8/share/examples/csh/dot.cshrc Fri Jun 1 06:40:29 2012 (r236383) @@ -5,7 +5,7 @@ # Sets SSH_AUTH_SOCK to the user's ssh-agent socket path if running if (${?SSH_AUTH_SOCK} != "1") then - setenv SSH_AUTH_SOCK `sockstat | grep "${USER}" | cut -d ' ' -f 6` + setenv SSH_AUTH_SOCK `sockstat | grep "^${USER} " | awk '/ssh-agent/ { print $6 }'` endif # Change only root's prompt From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 06:40:49 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 635BD1065914; Fri, 1 Jun 2012 06:40:49 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4D7A58FC08; Fri, 1 Jun 2012 06:40:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q516enCK092550; Fri, 1 Jun 2012 06:40:49 GMT (envelope-from eadler@svn.freebsd.org) Received: (from eadler@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q516entH092548; Fri, 1 Jun 2012 06:40:49 GMT (envelope-from eadler@svn.freebsd.org) Message-Id: <201206010640.q516entH092548@svn.freebsd.org> From: Eitan Adler Date: Fri, 1 Jun 2012 06:40:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236384 - stable/7/share/examples/csh X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 06:40:49 -0000 Author: eadler Date: Fri Jun 1 06:40:48 2012 New Revision: 236384 URL: http://svn.freebsd.org/changeset/base/236384 Log: MFC r235481: Rework sample code which sets SSH_AUTH_SOCK to the user's ssh-agent socket path if running PR: 167932 Approved by: cperciva (implicit) Modified: stable/7/share/examples/csh/dot.cshrc Directory Properties: stable/7/share/examples/csh/ (props changed) Modified: stable/7/share/examples/csh/dot.cshrc ============================================================================== --- stable/7/share/examples/csh/dot.cshrc Fri Jun 1 06:40:29 2012 (r236383) +++ stable/7/share/examples/csh/dot.cshrc Fri Jun 1 06:40:48 2012 (r236384) @@ -5,7 +5,7 @@ # Sets SSH_AUTH_SOCK to the user's ssh-agent socket path if running if (${?SSH_AUTH_SOCK} != "1") then - setenv SSH_AUTH_SOCK `sockstat | grep "${USER}" | cut -d ' ' -f 6` + setenv SSH_AUTH_SOCK `sockstat | grep "^${USER} " | awk '/ssh-agent/ { print $6 }'` endif # Change only root's prompt From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 06:45:15 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4ED791065675; Fri, 1 Jun 2012 06:45:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 310F48FC14; Fri, 1 Jun 2012 06:45:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q516jFYm092863; Fri, 1 Jun 2012 06:45:15 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q516jE6L092857; Fri, 1 Jun 2012 06:45:14 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201206010645.q516jE6L092857@svn.freebsd.org> From: Dimitry Andric Date: Fri, 1 Jun 2012 06:45:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236385 - in stable/9/contrib/llvm: include/llvm/Support lib/Support/Unix lib/Support/Windows tools/clang/lib/Frontend X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 06:45:15 -0000 Author: dim Date: Fri Jun 1 06:45:14 2012 New Revision: 236385 URL: http://svn.freebsd.org/changeset/base/236385 Log: MFC r236260: Pull in r156591 from upstream llvm trunk: Allow unique_file to take a mode for file permissions, but default to user only read/write. and r156592 from upstream clang trunk: For final output files create them with mode 0664 to match other compilers and expected defaults. This should fix clang creating files with mode 0600. Reported by: James Modified: stable/9/contrib/llvm/include/llvm/Support/FileSystem.h stable/9/contrib/llvm/lib/Support/Unix/PathV2.inc stable/9/contrib/llvm/lib/Support/Windows/PathV2.inc stable/9/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp Directory Properties: stable/9/contrib/llvm/ (props changed) stable/9/contrib/llvm/tools/clang/ (props changed) Modified: stable/9/contrib/llvm/include/llvm/Support/FileSystem.h ============================================================================== --- stable/9/contrib/llvm/include/llvm/Support/FileSystem.h Fri Jun 1 06:40:48 2012 (r236384) +++ stable/9/contrib/llvm/include/llvm/Support/FileSystem.h Fri Jun 1 06:45:14 2012 (r236385) @@ -422,8 +422,8 @@ error_code status_known(const Twine &pat /// @results errc::success if result_{fd,path} have been successfully set, /// otherwise a platform specific error_code. error_code unique_file(const Twine &model, int &result_fd, - SmallVectorImpl &result_path, - bool makeAbsolute = true); + SmallVectorImpl &result_path, + bool makeAbsolute = true, unsigned mode = 0600); /// @brief Canonicalize path. /// Modified: stable/9/contrib/llvm/lib/Support/Unix/PathV2.inc ============================================================================== --- stable/9/contrib/llvm/lib/Support/Unix/PathV2.inc Fri Jun 1 06:40:48 2012 (r236384) +++ stable/9/contrib/llvm/lib/Support/Unix/PathV2.inc Fri Jun 1 06:45:14 2012 (r236385) @@ -346,9 +346,10 @@ error_code status(const Twine &path, fil return error_code::success(); } +// Since this is most often used for temporary files, mode defaults to 0600. error_code unique_file(const Twine &model, int &result_fd, - SmallVectorImpl &result_path, - bool makeAbsolute) { + SmallVectorImpl &result_path, + bool makeAbsolute, unsigned mode) { SmallString<128> Model; model.toVector(Model); // Null terminate. @@ -395,7 +396,7 @@ retry_random_path: // Try to open + create the file. rety_open_create: - int RandomFD = ::open(RandomPath.c_str(), O_RDWR | O_CREAT | O_EXCL, 0600); + int RandomFD = ::open(RandomPath.c_str(), O_RDWR | O_CREAT | O_EXCL, mode); if (RandomFD == -1) { // If the file existed, try again, otherwise, error. if (errno == errc::file_exists) Modified: stable/9/contrib/llvm/lib/Support/Windows/PathV2.inc ============================================================================== --- stable/9/contrib/llvm/lib/Support/Windows/PathV2.inc Fri Jun 1 06:40:48 2012 (r236384) +++ stable/9/contrib/llvm/lib/Support/Windows/PathV2.inc Fri Jun 1 06:45:14 2012 (r236385) @@ -487,9 +487,11 @@ handle_status_error: return error_code::success(); } +// FIXME: mode should be used here and default to user r/w only, +// it currently comes in as a UNIX mode. error_code unique_file(const Twine &model, int &result_fd, - SmallVectorImpl &result_path, - bool makeAbsolute) { + SmallVectorImpl &result_path, + bool makeAbsolute, unsigned mode) { // Use result_path as temp storage. result_path.set_size(0); StringRef m = model.toStringRef(result_path); Modified: stable/9/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp ============================================================================== --- stable/9/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp Fri Jun 1 06:40:48 2012 (r236384) +++ stable/9/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp Fri Jun 1 06:45:14 2012 (r236385) @@ -560,7 +560,8 @@ CompilerInstance::createOutputFile(Strin TempPath += "-%%%%%%%%"; int fd; if (llvm::sys::fs::unique_file(TempPath.str(), fd, TempPath, - /*makeAbsolute=*/false) == llvm::errc::success) { + /*makeAbsolute=*/false, 0664) + == llvm::errc::success) { OS.reset(new llvm::raw_fd_ostream(fd, /*shouldClose=*/true)); OSFile = TempFile = TempPath.str(); } From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 07:06:01 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 507CD106564A; Fri, 1 Jun 2012 07:06:01 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 310B68FC20; Fri, 1 Jun 2012 07:06:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51761NG093955; Fri, 1 Jun 2012 07:06:01 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q517602X093953; Fri, 1 Jun 2012 07:06:00 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201206010706.q517602X093953@svn.freebsd.org> From: Hans Petter Selasky Date: Fri, 1 Jun 2012 07:06:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236389 - stable/9/etc/devd X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 07:06:01 -0000 Author: hselasky Date: Fri Jun 1 07:06:00 2012 New Revision: 236389 URL: http://svn.freebsd.org/changeset/base/236389 Log: MFC r235725: Update usb.conf. Modified: stable/9/etc/devd/usb.conf Directory Properties: stable/9/etc/ (props changed) Modified: stable/9/etc/devd/usb.conf ============================================================================== --- stable/9/etc/devd/usb.conf Fri Jun 1 06:56:35 2012 (r236388) +++ stable/9/etc/devd/usb.conf Fri Jun 1 07:06:00 2012 (r236389) @@ -157,7 +157,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x0403"; - match "product" "(0x6001|0x6004|0x6010|0x6011|0x8372|0x9e90|0xa6d0|0xa6d0|0xcc48|0xcc49|0xcc4a|0xd678|0xe6c8|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xee18|0xf608|0xf60b|0xf850|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfc08|0xfc09|0xfc0b|0xfc0c|0xfc0d|0xfc82)"; + match "product" "(0x6001|0x6004|0x6010|0x6011|0x8372|0x9e90|0xcc48|0xcc49|0xcc4a|0xd678|0xe6c8|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xee18|0xf608|0xf60b|0xf850|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfc08|0xfc09|0xfc0b|0xfc0c|0xfc0d|0xfc82)"; action "kldload -n uftdi"; }; @@ -1021,7 +1021,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x05c6"; - match "product" "(0x1000|0x6000|0x6613)"; + match "product" "(0x1000|0x6000|0x6613|0x9000)"; action "kldload -n u3g"; }; @@ -2852,6 +2852,14 @@ nomatch 32 { nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; + match "vendor" "0x1199"; + match "product" "0x68aa"; + action "kldload -n u3g"; +}; + +nomatch 32 { + match "bus" "uhub[0-9]+"; + match "mode" "host"; match "vendor" "0x11ad"; match "product" "0x0701"; action "kldload -n uplcom"; @@ -3661,7 +3669,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x19d2"; - match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0117|0x2000|0x2002|0x2003|0xfff1|0xfff5|0xfffe)"; + match "product" "(0x0001|0x0002|0x0003|0x0004|0x0005|0x0006|0x0007|0x0008|0x0009|0x000a|0x000b|0x000c|0x000d|0x000e|0x000f|0x0010|0x0011|0x0012|0x0013|0x0014|0x0015|0x0016|0x0017|0x0018|0x0019|0x0020|0x0021|0x0022|0x0023|0x0024|0x0025|0x0026|0x0027|0x0028|0x0029|0x0030|0x0031|0x0032|0x0033|0x0037|0x0039|0x0042|0x0043|0x0048|0x0049|0x0051|0x0052|0x0053|0x0054|0x0055|0x0057|0x0058|0x0059|0x0060|0x0061|0x0062|0x0063|0x0064|0x0066|0x0069|0x0070|0x0073|0x0076|0x0078|0x0082|0x0086|0x0117|0x1179|0x2000|0x2002|0x2003|0xfff1|0xfff5|0xfffe)"; action "kldload -n u3g"; }; @@ -4165,7 +4173,7 @@ nomatch 32 { match "bus" "uhub[0-9]+"; match "mode" "host"; match "vendor" "0x9710"; - match "product" "0x7830"; + match "product" "(0x7830|0x7832)"; action "kldload -n if_mos"; }; @@ -4336,5 +4344,5 @@ nomatch 32 { action "kldload -n umass"; }; -# 1652 USB entries processed +# 1654 USB entries processed From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 07:07:37 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E3941065679; Fri, 1 Jun 2012 07:07:37 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 286298FC12; Fri, 1 Jun 2012 07:07:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q5177be2094066; Fri, 1 Jun 2012 07:07:37 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q5177aEm094064; Fri, 1 Jun 2012 07:07:36 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201206010707.q5177aEm094064@svn.freebsd.org> From: Hans Petter Selasky Date: Fri, 1 Jun 2012 07:07:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236390 - stable/9/sys/dev/ahci X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 07:07:37 -0000 Author: hselasky Date: Fri Jun 1 07:07:36 2012 New Revision: 236390 URL: http://svn.freebsd.org/changeset/base/236390 Log: MFC r236242: Add AHCI quirk. Modified: stable/9/sys/dev/ahci/ahci.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/ahci/ahci.c ============================================================================== --- stable/9/sys/dev/ahci/ahci.c Fri Jun 1 07:06:00 2012 (r236389) +++ stable/9/sys/dev/ahci/ahci.c Fri Jun 1 07:07:36 2012 (r236390) @@ -199,6 +199,7 @@ static struct { {0x91231b4b, 0x00, "Marvell 88SE912x", AHCI_Q_EDGEIS|AHCI_Q_SATA2|AHCI_Q_NOBSYRES}, {0x91251b4b, 0x00, "Marvell 88SE9125", AHCI_Q_NOBSYRES}, {0x91281b4b, 0x00, "Marvell 88SE9128", AHCI_Q_NOBSYRES|AHCI_Q_ALTSIG}, + {0x91301b4b, 0x00, "Marvell 88SE9130", AHCI_Q_NOBSYRES|AHCI_Q_ALTSIG}, {0x91721b4b, 0x00, "Marvell 88SE9172", AHCI_Q_NOBSYRES}, {0x91821b4b, 0x00, "Marvell 88SE9182", AHCI_Q_NOBSYRES}, {0x06201103, 0x00, "HighPoint RocketRAID 620", AHCI_Q_NOBSYRES}, From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 09:57:46 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD005106566C; Fri, 1 Jun 2012 09:57:46 +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 79F308FC08; Fri, 1 Jun 2012 09:57:46 +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 <0M4X00I00KW4FB00@smtpauth3.wiscmail.wisc.edu>; Fri, 01 Jun 2012 03:57:40 -0500 (CDT) Received: from wanderer.tachypleus.net (ext-40-112.eduroam.rwth-aachen.de [134.61.40.112]) by smtpauth3.wiscmail.wisc.edu (Sun Java(tm) System Messaging Server 7u2-7.05 32bit (built Jul 30 2009)) with ESMTPSA id <0M4X00F4ZKW20910@smtpauth3.wiscmail.wisc.edu>; Fri, 01 Jun 2012 03:57:39 -0500 (CDT) Date: Fri, 01 Jun 2012 10:57:37 +0200 From: Nathan Whitehorn In-reply-to: <201205291450.q4TEoLM7084840@svn.freebsd.org> To: Fabien Thomas Message-id: <4FC88401.2000404@freebsd.org> X-Spam-Report: AuthenticatedSender=yes, SenderIP=134.61.40.112 X-Spam-PmxInfo: Server=avs-16, Version=5.6.1.2065439, Antispam-Engine: 2.7.2.376379, Antispam-Data: 2012.6.1.84514, SenderIP=134.61.40.112 References: <201205291450.q4TEoLM7084840@svn.freebsd.org> User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:12.0) Gecko/20120502 Thunderbird/12.0 Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org Subject: Re: svn commit: r236238 - in stable/9: lib/libpmc sys/amd64/amd64 sys/amd64/include sys/arm/arm sys/arm/include sys/conf sys/dev/hwpmc sys/i386/i386 sys/i386/include sys/kern sys/mips/include sys/modul... X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 09:57:46 -0000 On 05/29/12 16:50, Fabien Thomas wrote: > Author: fabient > Date: Tue May 29 14:50:21 2012 > New Revision: 236238 > URL: http://svn.freebsd.org/changeset/base/236238 > > Log: > MFC r233628, r234598, r235229, r235831, r226986. > > Add software PMC support. > > New kernel events can be added at various location for sampling or counting. > This will for example allow easy system profiling whatever the processor is > with known tools like pmcstat(8). > > Simultaneous usage of software PMC and hardware PMC is possible, for example > looking at the lock acquire failure, page fault while sampling on > instructions. > > Sponsored by: NETASQ > This has broken the PPC build for days now. Please MFC r233635, which was required to fix it in HEAD and is also required to fix it in stable/9. Please do make universe always before committing things like this. -Nathan From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 12:47:14 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 89C17106564A; Fri, 1 Jun 2012 12:47:14 +0000 (UTC) (envelope-from iwasaki@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5A66C8FC0C; Fri, 1 Jun 2012 12:47:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51ClEVW019595; Fri, 1 Jun 2012 12:47:14 GMT (envelope-from iwasaki@svn.freebsd.org) Received: (from iwasaki@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51ClEmY019593; Fri, 1 Jun 2012 12:47:14 GMT (envelope-from iwasaki@svn.freebsd.org) Message-Id: <201206011247.q51ClEmY019593@svn.freebsd.org> From: Mitsuru IWASAKI Date: Fri, 1 Jun 2012 12:47:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236395 - stable/9/sys/dev/acpica X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 12:47:14 -0000 Author: iwasaki Date: Fri Jun 1 12:47:13 2012 New Revision: 236395 URL: http://svn.freebsd.org/changeset/base/236395 Log: MFC r236220,236221: - Fix the problem acpi_sleep_force() hang. - Reorder resume procedures to avoid hang during AcpiLeaveSleepState() execution. Modified: stable/9/sys/dev/acpica/acpi.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/acpica/acpi.c ============================================================================== --- stable/9/sys/dev/acpica/acpi.c Fri Jun 1 11:42:50 2012 (r236394) +++ stable/9/sys/dev/acpica/acpi.c Fri Jun 1 12:47:13 2012 (r236395) @@ -2438,15 +2438,29 @@ acpi_SetSleepState(struct acpi_softc *sc #if defined(__amd64__) || defined(__i386__) static void +acpi_sleep_force_task(void *context) +{ + struct acpi_softc *sc = (struct acpi_softc *)context; + + if (ACPI_FAILURE(acpi_EnterSleepState(sc, sc->acpi_next_sstate))) + device_printf(sc->acpi_dev, "force sleep state S%d failed\n", + sc->acpi_next_sstate); +} + +static void acpi_sleep_force(void *arg) { struct acpi_softc *sc = (struct acpi_softc *)arg; device_printf(sc->acpi_dev, "suspend request timed out, forcing sleep now\n"); - if (ACPI_FAILURE(acpi_EnterSleepState(sc, sc->acpi_next_sstate))) - device_printf(sc->acpi_dev, "force sleep state S%d failed\n", - sc->acpi_next_sstate); + /* + * XXX Suspending from callout cause the freeze in DEVICE_SUSPEND(). + * Suspend from acpi_task thread in stead. + */ + if (ACPI_FAILURE(AcpiOsExecute(OSL_NOTIFY_HANDLER, + acpi_sleep_force_task, sc))) + device_printf(sc->acpi_dev, "AcpiOsExecute() for sleeping failed\n"); } #endif @@ -2745,10 +2759,10 @@ backout: acpi_wake_prep_walk(state); sc->acpi_sstate = ACPI_STATE_S0; } - if (slp_state >= ACPI_SS_SLP_PREP) - AcpiLeaveSleepState(state); if (slp_state >= ACPI_SS_DEV_SUSPEND) DEVICE_RESUME(root_bus); + if (slp_state >= ACPI_SS_SLP_PREP) + AcpiLeaveSleepState(state); if (slp_state >= ACPI_SS_SLEPT) { acpi_resync_clock(sc); acpi_enable_fixed_events(sc); From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 13:21:33 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C7081065675; Fri, 1 Jun 2012 13:21:33 +0000 (UTC) (envelope-from iwasaki@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3D4148FC08; Fri, 1 Jun 2012 13:21:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51DLXUA021365; Fri, 1 Jun 2012 13:21:33 GMT (envelope-from iwasaki@svn.freebsd.org) Received: (from iwasaki@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51DLXZ7021363; Fri, 1 Jun 2012 13:21:33 GMT (envelope-from iwasaki@svn.freebsd.org) Message-Id: <201206011321.q51DLXZ7021363@svn.freebsd.org> From: Mitsuru IWASAKI Date: Fri, 1 Jun 2012 13:21:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236396 - stable/8/sys/dev/acpica X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 13:21:33 -0000 Author: iwasaki Date: Fri Jun 1 13:21:32 2012 New Revision: 236396 URL: http://svn.freebsd.org/changeset/base/236396 Log: MFC r235692,235772,236220,236221: - Don't start the sleep state transition procedure while sleep is disabled or the system is in shutdown procedure. - Ignore the power button press event for resuming rather than starting shutdown. - Fix the problem acpi_sleep_force() hang. - Reorder resume procedures to avoid hang during AcpiLeaveSleepState() execution. Modified: stable/8/sys/dev/acpica/acpi.c Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/dev/acpica/acpi.c ============================================================================== --- stable/8/sys/dev/acpica/acpi.c Fri Jun 1 12:47:13 2012 (r236395) +++ stable/8/sys/dev/acpica/acpi.c Fri Jun 1 13:21:32 2012 (r236396) @@ -2307,15 +2307,29 @@ acpi_SetSleepState(struct acpi_softc *sc #if defined(__amd64__) || defined(__i386__) static void +acpi_sleep_force_task(void *context) +{ + struct acpi_softc *sc = (struct acpi_softc *)context; + + if (ACPI_FAILURE(acpi_EnterSleepState(sc, sc->acpi_next_sstate))) + device_printf(sc->acpi_dev, "force sleep state S%d failed\n", + sc->acpi_next_sstate); +} + +static void acpi_sleep_force(void *arg) { struct acpi_softc *sc = (struct acpi_softc *)arg; device_printf(sc->acpi_dev, "suspend request timed out, forcing sleep now\n"); - if (ACPI_FAILURE(acpi_EnterSleepState(sc, sc->acpi_next_sstate))) - device_printf(sc->acpi_dev, "force sleep state S%d failed\n", - sc->acpi_next_sstate); + /* + * XXX Suspending from callout cause the freeze in DEVICE_SUSPEND(). + * Suspend from acpi_task thread in stead. + */ + if (ACPI_FAILURE(AcpiOsExecute(OSL_NOTIFY_HANDLER, + acpi_sleep_force_task, sc))) + device_printf(sc->acpi_dev, "AcpiOsExecute() for sleeping failed\n"); } #endif @@ -2339,14 +2353,20 @@ acpi_ReqSleepState(struct acpi_softc *sc if (!acpi_sleep_states[state]) return (EOPNOTSUPP); - ACPI_LOCK(acpi); - /* If a suspend request is already in progress, just return. */ if (sc->acpi_next_sstate != 0) { - ACPI_UNLOCK(acpi); return (0); } + /* Wait until sleep is enabled. */ + while (sc->acpi_sleep_disabled) { + AcpiOsSleep(1000); + } + + ACPI_LOCK(acpi); + + sc->acpi_next_sstate = state; + /* S5 (soft-off) should be entered directly with no waiting. */ if (state == ACPI_STATE_S5) { ACPI_UNLOCK(acpi); @@ -2355,7 +2375,6 @@ acpi_ReqSleepState(struct acpi_softc *sc } /* Record the pending state and notify all apm devices. */ - sc->acpi_next_sstate = state; #if defined(__i386__) STAILQ_FOREACH(clone, &sc->apm_cdevs, entries) { clone->notify_status = APM_EV_NONE; @@ -2615,10 +2634,10 @@ backout: acpi_wake_prep_walk(state); sc->acpi_sstate = ACPI_STATE_S0; } - if (slp_state >= ACPI_SS_SLP_PREP) - AcpiLeaveSleepState(state); if (slp_state >= ACPI_SS_DEV_SUSPEND) DEVICE_RESUME(root_bus); + if (slp_state >= ACPI_SS_SLP_PREP) + AcpiLeaveSleepState(state); if (slp_state >= ACPI_SS_SLEPT) acpi_enable_fixed_events(sc); sc->acpi_next_sstate = 0; From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 14:40:16 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 98B031065674; Fri, 1 Jun 2012 14:40:16 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 81E578FC1C; Fri, 1 Jun 2012 14:40:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51EeGtD024911; Fri, 1 Jun 2012 14:40:16 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51EeGII024908; Fri, 1 Jun 2012 14:40:16 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201206011440.q51EeGII024908@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 1 Jun 2012 14:40:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236400 - stable/9/lib/libc/stdlib X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 14:40:16 -0000 Author: kib Date: Fri Jun 1 14:40:16 2012 New Revision: 236400 URL: http://svn.freebsd.org/changeset/base/236400 Log: MFC r235266: According to SUSv4, realpath(3) must fail if [ENOENT] A component of file_name does not name an existing file or file_name points to an empty string. [ENOTDIR] A component of the path prefix is not a directory, or the file_name argument contains at least one non- character and ends with one or more trailing characters and the last pathname component names an existing file that is neither a directory nor a symbolic link to a directory. Add checks for the listed conditions, and set errno accordingly. Update the realpath(3) manpage to mention SUS behaviour. Remove the requirement to include sys/param.h before stdlib.h. PR: 128933 Modified: stable/9/lib/libc/stdlib/realpath.3 stable/9/lib/libc/stdlib/realpath.c Directory Properties: stable/9/lib/libc/ (props changed) Modified: stable/9/lib/libc/stdlib/realpath.3 ============================================================================== --- stable/9/lib/libc/stdlib/realpath.3 Fri Jun 1 14:29:59 2012 (r236399) +++ stable/9/lib/libc/stdlib/realpath.3 Fri Jun 1 14:40:16 2012 (r236400) @@ -31,7 +31,7 @@ .\" @(#)realpath.3 8.2 (Berkeley) 2/16/94 .\" $FreeBSD$ .\" -.Dd April 19, 2010 +.Dd May 11, 2012 .Dt REALPATH 3 .Os .Sh NAME @@ -40,7 +40,6 @@ .Sh LIBRARY .Lb libc .Sh SYNOPSIS -.In sys/param.h .In stdlib.h .Ft "char *" .Fn realpath "const char *pathname" "char *resolved_path" @@ -72,11 +71,12 @@ The function will resolve both absolute and relative paths and return the absolute pathname corresponding to .Fa pathname . -All but the last component of +All components of .Fa pathname must exist when .Fn realpath -is called. +is called, and all but the last component must name either directories or +symlinks pointing to the directories. .Sh "RETURN VALUES" The .Fn realpath Modified: stable/9/lib/libc/stdlib/realpath.c ============================================================================== --- stable/9/lib/libc/stdlib/realpath.c Fri Jun 1 14:29:59 2012 (r236399) +++ stable/9/lib/libc/stdlib/realpath.c Fri Jun 1 14:40:16 2012 (r236400) @@ -132,8 +132,29 @@ realpath(const char * __restrict path, c resolved[resolved_len++] = '/'; resolved[resolved_len] = '\0'; } - if (next_token[0] == '\0') + if (next_token[0] == '\0') { + /* + * Handle consequential slashes. The path + * before slash shall point to a directory. + * + * Only the trailing slashes are not covered + * by other checks in the loop, but we verify + * the prefix for any (rare) "//" or "/\0" + * occurence to not implement lookahead. + */ + if (lstat(resolved, &sb) != 0) { + if (m) + free(resolved); + return (NULL); + } + if (!S_ISDIR(sb.st_mode)) { + if (m) + free(resolved); + errno = ENOTDIR; + return (NULL); + } continue; + } else if (strcmp(next_token, ".") == 0) continue; else if (strcmp(next_token, "..") == 0) { @@ -151,9 +172,7 @@ realpath(const char * __restrict path, c } /* - * Append the next path component and lstat() it. If - * lstat() fails we still can return successfully if - * there are no more path components left. + * Append the next path component and lstat() it. */ resolved_len = strlcat(resolved, next_token, PATH_MAX); if (resolved_len >= PATH_MAX) { @@ -163,10 +182,8 @@ realpath(const char * __restrict path, c return (NULL); } if (lstat(resolved, &sb) != 0) { - if (errno == ENOENT && p == NULL) { - errno = serrno; - return (resolved); - } + if (errno != ENOENT || p != NULL) + errno = ENOTDIR; if (m) free(resolved); return (NULL); From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 17:17:47 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 672B5106566C; Fri, 1 Jun 2012 17:17:47 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 522F78FC19; Fri, 1 Jun 2012 17:17:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51HHlUB032271; Fri, 1 Jun 2012 17:17:47 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51HHlXX032269; Fri, 1 Jun 2012 17:17:47 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201206011717.q51HHlXX032269@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 1 Jun 2012 17:17:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236410 - stable/9/sys/net X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 17:17:47 -0000 Author: jkim Date: Fri Jun 1 17:17:46 2012 New Revision: 236410 URL: http://svn.freebsd.org/changeset/base/236410 Log: MFC: r236251 Fix 32-bit shim for BIOCSETF to drop all packets buffered on the descriptor and reset statistics as it should. Modified: stable/9/sys/net/bpf.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/net/bpf.c ============================================================================== --- stable/9/sys/net/bpf.c Fri Jun 1 17:07:52 2012 (r236409) +++ stable/9/sys/net/bpf.c Fri Jun 1 17:17:46 2012 (r236410) @@ -1531,13 +1531,23 @@ bpf_setf(struct bpf_d *d, struct bpf_pro struct bpf_program32 *fp32; struct bpf_program fp_swab; - if (cmd == BIOCSETWF32 || cmd == BIOCSETF32 || cmd == BIOCSETFNR32) { + switch (cmd) { + case BIOCSETF32: + case BIOCSETWF32: + case BIOCSETFNR32: fp32 = (struct bpf_program32 *)fp; fp_swab.bf_len = fp32->bf_len; fp_swab.bf_insns = (struct bpf_insn *)(uintptr_t)fp32->bf_insns; fp = &fp_swab; - if (cmd == BIOCSETWF32) + switch (cmd) { + case BIOCSETF32: + cmd = BIOCSETF; + break; + case BIOCSETWF32: cmd = BIOCSETWF; + break; + } + break; } #endif if (cmd == BIOCSETWF) { From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 17:22:20 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id E90FD106564A; Fri, 1 Jun 2012 17:22:20 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D4D918FC17; Fri, 1 Jun 2012 17:22:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51HMKUH032529; Fri, 1 Jun 2012 17:22:20 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51HMKm3032527; Fri, 1 Jun 2012 17:22:20 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201206011722.q51HMKm3032527@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 1 Jun 2012 17:22:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236411 - stable/8/sys/net X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 17:22:21 -0000 Author: jkim Date: Fri Jun 1 17:22:20 2012 New Revision: 236411 URL: http://svn.freebsd.org/changeset/base/236411 Log: MFC: r236251 Fix 32-bit shim for BIOCSETF to drop all packets buffered on the descriptor and reset statistics as it should. Modified: stable/8/sys/net/bpf.c Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/net/bpf.c ============================================================================== --- stable/8/sys/net/bpf.c Fri Jun 1 17:17:46 2012 (r236410) +++ stable/8/sys/net/bpf.c Fri Jun 1 17:22:20 2012 (r236411) @@ -1498,13 +1498,23 @@ bpf_setf(struct bpf_d *d, struct bpf_pro struct bpf_program32 *fp32; struct bpf_program fp_swab; - if (cmd == BIOCSETWF32 || cmd == BIOCSETF32 || cmd == BIOCSETFNR32) { + switch (cmd) { + case BIOCSETF32: + case BIOCSETWF32: + case BIOCSETFNR32: fp32 = (struct bpf_program32 *)fp; fp_swab.bf_len = fp32->bf_len; fp_swab.bf_insns = (struct bpf_insn *)(uintptr_t)fp32->bf_insns; fp = &fp_swab; - if (cmd == BIOCSETWF32) + switch (cmd) { + case BIOCSETF32: + cmd = BIOCSETF; + break; + case BIOCSETWF32: cmd = BIOCSETWF; + break; + } + break; } #endif if (cmd == BIOCSETWF) { From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 18:16:11 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 758BB1065670; Fri, 1 Jun 2012 18:16:11 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5F5F68FC1A; Fri, 1 Jun 2012 18:16:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51IGB50035167; Fri, 1 Jun 2012 18:16:11 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51IGBnR035164; Fri, 1 Jun 2012 18:16:11 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201206011816.q51IGBnR035164@svn.freebsd.org> From: Andrew Gallatin Date: Fri, 1 Jun 2012 18:16:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236413 - stable/9/sys/dev/mxge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 18:16:11 -0000 Author: gallatin Date: Fri Jun 1 18:16:10 2012 New Revision: 236413 URL: http://svn.freebsd.org/changeset/base/236413 Log: MFC 236212: Update mxge(4) firmware to the latest version available from Myricom (1.4.55). Sponored by: Myricom, Inc. Modified: stable/9/sys/dev/mxge/eth_z8e.h stable/9/sys/dev/mxge/ethp_z8e.h stable/9/sys/dev/mxge/rss_eth_z8e.h stable/9/sys/dev/mxge/rss_ethp_z8e.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/mxge/eth_z8e.h ============================================================================== --- stable/9/sys/dev/mxge/eth_z8e.h Fri Jun 1 18:01:51 2012 (r236412) +++ stable/9/sys/dev/mxge/eth_z8e.h Fri Jun 1 18:16:10 2012 (r236413) @@ -1,6 +1,6 @@ /******************************************************************************* -Copyright (c) 2006-2011, Myricom Inc. +Copyright (c) 2006-2012, Myricom Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,7495 +28,7547 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ ***************************************************************************/ -static unsigned int eth_z8e_uncompressed_length = 375636 ; -static unsigned int eth_z8e_length = 119802 ; -static unsigned char eth_z8e[119802 + 1] = - "\x78\x9c\xec\xbd\x7f\x78\x54\xd5\xb5\x3f\xbc\x32\x99\xc8\x24\x06" - "\x26\x62\xc4\x29\xc5\x76\xb0\x41\xa3\x05\x89\x16\xdb\xd4\x42\x0d" - "\x02\x1a\x2c\xbf\x14\x6c\xa3\xa2\x09\x1a\xe8\xa0\x11\x22\x44\x18" - "\x20\x64\xc2\x80\x36\x41\x20\xa9\xa0\x46\x09\x09\xbd\xf2\x23\x56" - "\xac\xd8\x02\x62\x45\x19\x24\xf6\x4b\x7b\x93\x0c\xed\x8b\xf7\x9b" - "\xdb\x17\x6f\x47\x6e\x84\x94\x1b\x60\x4a\x06\x32\x26\x33\x67\xbf" - "\x9f\xb5\xf7\x39\xc9\xcc\x30\x41\xb9\xf7\x3e\xcf\xfb\x4f\xf3\x3c" - "\x93\x73\xce\x3e\x7b\xaf\xbd\xf6\xda\x6b\xad\xbd\xf6\xde\x6b\xaf" - "\x43\x74\xe5\x7f\x3e\xb2\xf0\x25\x81\x4c\x07\x8a\x0f\xfd\x37\xca" - "\xff\xf3\xef\x9f\x7f\xff\xfc\xfb\xe7\xdf\x3f\xff\xfe\xf9\xf7\xcf" - "\xbf\xff\x7f\xff\xfc\x09\x34\xe6\xbc\xc9\x4c\x1f\x57\x13\x75\xb9" - "\x2d\xc3\x7c\xa4\x15\xbd\xba\x51\x84\xf0\x2a\x01\xe3\xfc\x30\xbe" - "\xf2\xef\x25\xa4\x99\xaa\xc9\x72\x63\x1a\xa5\x89\x57\x6d\xa6\x09" - "\x5b\x88\x36\x0d\x11\x1d\x1b\x5f\x11\xfe\xc6\x52\xa2\xc3\xdb\xf0" - "\xfc\x8a\x68\xdf\x38\x44\x04\x00\xa7\xc0\x47\xf9\x9b\x18\xce\x6a" - "\x3c\xaf\x46\x3a\xd2\x4a\x7c\x54\xb0\x86\xd3\xaa\x50\xce\x48\xf7" - "\xae\xb9\x48\x8d\xf6\x10\x55\x31\x1c\x7b\x98\x26\x0e\x97\x78\x6c" - "\x45\xde\x54\xce\xbb\x6a\x08\xea\x4d\x27\x72\xbf\x22\x82\x11\x38" - "\x58\xb8\x1e\xae\x5b\xcf\x7f\x34\xa6\x3e\x3f\xd2\xda\x8c\xfa\xfa" - "\x81\x91\xc6\xe5\xb9\x0d\xf6\x6f\x51\xe2\x49\xba\xfa\x3a\x86\xc9" - "\xb8\x09\x37\x59\xbc\xdd\x21\x3a\x49\xc9\x99\x9d\x6e\x4a\x3c\x0c" - "\x6a\x6c\x78\x45\xa6\x27\x7a\x03\x21\xb2\x97\x51\x02\xde\x4d\xc5" - "\xd5\x84\x72\x03\x99\x3e\x33\x6b\x29\x83\xeb\x06\x5c\xb3\x30\x79" - "\x12\xea\x07\x13\x31\x8d\x02\x26\xba\x39\xe0\xa6\x84\x2e\x77\x32" - "\xda\x6f\xc9\x94\xed\x47\xbd\x28\x6b\x3e\x49\x29\xff\x30\x21\x3f" - "\xea\xf4\xdb\x97\x33\x0e\x29\x9f\x08\xb7\xc7\x64\xc0\xd1\xdc\x9e" - "\xab\xeb\x5e\x22\xea\x74\x9b\x26\x07\x4c\x56\xa1\xc3\x39\x60\xc0" - "\xe1\x7c\xa8\x2b\x95\xeb\xea\x74\x9b\x5f\x8a\xc8\xe3\x33\xf2\x00" - "\x6f\xff\xe8\x00\x25\x32\xce\x27\x28\x25\x9b\xeb\xd3\xdb\x62\xe6" - "\x3a\xbc\x4b\x42\xe4\x45\xdf\xa3\xee\x74\xb4\xd5\x7e\x38\x48\x04" - "\x98\xd7\xd4\x97\x11\x31\x7c\xe0\x6f\x57\x30\x53\xc6\x18\x30\x19" - "\x46\x6f\x5b\xdd\x9e\xc1\xf5\x12\x47\x6e\xab\x85\xf4\xbc\x05\x91" - "\x38\x32\x5c\xb4\xe5\x7a\x6e\x4b\x23\x38\x4a\xcf\xb3\xa6\x97\x1e" - "\xbd\xed\xbf\x3a\x27\x06\xb6\x4d\xc1\x4e\x00\xec\x04\x8f\x5e\xae" - "\xb7\xfd\xbe\x98\xfc\x2a\x6f\x5a\x72\xc0\x24\x74\x3a\xa4\xb4\xf7" - "\xe5\x4d\xde\x14\x99\x17\xf8\x98\x14\x6d\xc9\xe4\xa3\x94\x56\xb4" - "\x33\x11\x79\xa6\xa0\x1f\xed\xfa\xfb\xeb\xf4\xf7\x36\xbc\xbb\x5b" - "\xc1\xbb\x3a\x3b\x02\x5e\x1a\xc3\x8b\xe4\x2d\x25\x51\x66\xfc\x92" - "\x60\x20\x5f\x85\xdf\x00\x8b\xc1\x6f\x8b\x6d\x42\x73\x7d\x03\x6d" - "\x5a\xbb\x1d\xb4\x10\xe4\x75\x06\xc9\x3e\x94\x5c\x27\xe8\xea\xdd" - "\x80\x4f\x1b\x96\x93\xc5\x55\x2c\x82\x5e\x67\x07\xb5\xf8\x3b\xc8" - "\xe5\x87\x6c\x84\x2e\x50\xd9\x05\xf0\x62\xe8\x0c\x95\x3d\x4b\xb6" - "\xc6\xd2\x2f\x28\x1e\x2f\x6b\x26\x41\xae\x61\x5c\xb6\x8d\x5a\x6a" - "\xdb\xc8\x55\x1b\x5d\xd6\x75\x03\xd9\x9a\xf1\x8c\x3e\xb7\x32\x1e" - "\x2c\x6f\xa1\x94\xed\xf6\xd2\xd7\xc8\xec\x1a\x4e\xa6\xe6\x42\x8f" - "\x8e\x4b\xaa\x93\x71\x59\x73\x9a\x2c\x6f\xcc\x03\x1f\x9e\x66\x7c" - "\xdf\xb6\xbf\xb3\x3c\x68\x3a\x6c\x9b\x42\x87\x6d\xc7\xa9\xd1\x36" - "\x8e\x1a\x9d\x13\x69\xc3\x69\x4a\x3d\x1c\x1c\x4b\x8d\xe6\x7b\xa9" - "\x31\x63\x22\x79\x3b\x70\x0f\xf9\x3d\x6c\x0b\x90\x7d\x09\xf3\x53" - "\xaa\x63\xd3\x53\x64\xf1\x29\x98\xa0\x5d\x6a\xc9\xa1\x12\x22\xa6" - "\x1d\x3f\xc7\x6b\xc7\xe2\x6f\x90\x0d\xf8\xb5\x03\x97\x1f\x02\x97" - "\xb7\x33\x6c\x94\x05\x9c\x07\x78\x6b\x42\x64\x2e\xa5\xe4\x7e\xe4" - "\x38\x5d\x03\xef\x41\x76\x3b\xea\xa0\x4f\x58\x7e\x3b\x57\xe4\x41" - "\x27\xa4\x42\xfe\x53\xd7\xe8\x32\xd0\xe1\xfa\x15\x99\x3b\x97\xe6" - "\x25\xd4\xbf\x22\xda\xba\xdc\x03\xc9\x78\x07\x59\x6c\xc3\xfb\xf6" - "\xd1\xe9\x94\xe6\x0d\xe5\xd0\xc1\xee\x76\x96\xc7\x8e\x41\x01\x4a" - "\x60\x78\x56\x27\x64\x67\x09\x25\x01\x9f\x3f\xd7\x23\xfd\x3b\xc8" - "\x87\xf2\x39\x3e\x7a\xb9\x83\xcb\x8b\xeb\x1f\x0d\x68\xd7\x3f\x7a" - "\x41\x7b\xf5\xd1\x4e\xf1\xea\xa3\xe7\xc3\xaf\x3e\xfa\x0f\xd7\x32" - "\xb2\x84\xaf\x7f\xd4\xdf\x52\x2c\xfb\x20\xad\xa5\x18\x7d\x10\x26" - "\xcb\xca\x33\x94\xf6\xf8\xb3\xe8\xfb\xd0\x67\xb4\x72\x3e\xd9\xb4" - "\xe4\xb7\x5a\xbd\xa1\x4f\xe9\xf1\x52\x12\xb8\x6f\x8f\xd7\xbe\xce" - "\x94\xb7\x0b\x0c\xd9\x42\xbd\xfb\x7d\xa6\x6d\x36\xae\xd7\x9f\xbc" - "\xb7\x00\xbf\x42\xfc\x1c\xf8\x15\x89\x94\xb7\x8b\x40\x2b\xd7\xa0" - "\x55\x09\x54\xd7\x4d\x34\x5a\xa3\x84\xd3\x34\xf0\x18\xf0\x4f\xeb" - "\x87\x6e\xc3\xb4\xb5\x9e\xea\x9b\xcb\xa9\xac\xab\xcb\x41\xac\x0b" - "\x59\xff\xb1\x3e\xec\x72\x0f\xb2\xa3\x9e\x3c\x29\xbf\xaf\x40\xc7" - "\xa4\x78\xaa\x91\xde\x1e\x58\xe1\x48\xf0\xaf\x70\x98\x3a\x53\x3c" - "\x1b\x91\x67\x22\xf2\x54\xeb\x34\x6c\x67\x58\x90\x2d\xff\xc0\x10" - "\x25\x02\x66\xf1\x7b\x17\x5b\xcd\x5b\x5e\x11\xc7\x91\xaf\xa8\x17" - "\x16\x60\x03\x0e\xe8\x3f\xa8\xdc\x48\x03\xad\xdb\xd6\x23\x1f\x97" - "\xf7\x06\x73\x78\x4c\xf1\x79\x8b\xda\xc9\x1a\xa2\x14\xd1\xa3\xea" - "\x43\x9e\x76\xd6\xe9\x03\x83\x74\x55\x97\x9b\x66\x30\x6c\x2e\xe7" - "\xed\x68\x27\x94\xdb\x28\x5c\x0e\x13\xd2\xa7\x75\x09\x47\xc2\x1a" - "\xa4\x1f\x46\x79\xbd\xee\x76\x03\x47\xae\x83\xfb\x5a\xe2\x09\x7e" - "\x38\x5c\x14\xa4\x81\x35\x94\x88\x72\x33\x19\x1e\xc3\x02\x1f\xf8" - "\xd0\xd6\x8d\x87\x8b\xfc\xa4\x89\x28\x98\x3e\x05\xcf\x9a\x1d\x05" - "\x0f\xe9\x02\xf0\x98\xff\x1a\x51\x66\xe0\x56\x09\xef\xc1\xf7\x34" - "\x86\x17\x24\xb3\x5d\xe2\xfb\x53\x86\xd1\xc5\xfa\x03\x30\x3d\x4b" - "\xee\xa1\x0e\xb2\x6e\xf5\xbb\x1c\x89\x2d\x18\x37\xb9\xfc\x3b\x65" - "\xed\x49\xa2\x33\x2f\x91\x79\x8e\xdf\x7b\x43\xe7\x39\xcf\x2a\xd1" - "\xe9\x48\x1c\xd8\x01\x5d\x84\x3c\x28\xef\x64\x3c\x23\xfb\xf2\xc1" - "\x49\x3f\x1d\x47\x3f\x9d\x38\x79\xe2\x38\x9a\x3a\x7e\xc2\x38\xca" - "\xfa\xe1\xa8\xac\x31\xdf\xfb\xc1\xf7\xe4\xcd\xf7\x7e\x90\xfd\x3d" - "\x9a\xf1\xb3\x07\xc7\xd1\x8c\x69\xe3\x68\x26\x7e\x33\x66\x4e\x7a" - "\x70\xe2\xa4\x99\xe3\x28\xef\xde\xc9\x78\x9a\x30\xee\xf6\xac\xfb" - "\x46\xcd\x98\x30\x79\x12\x3d\x30\xeb\x8e\xac\x3b\xee\xa0\xf1\x93" - "\xa6\xdc\x9e\x95\xa5\x5f\x6f\xcf\xe2\x2c\x8f\x64\x4f\x9a\x39\x6a" - "\xc6\xa2\x85\x25\x0b\x47\x4d\x9b\x3c\x81\x53\xa0\xdd\x22\x78\x28" - "\x33\x7c\x51\x63\x5a\x07\xc4\xb9\x5c\xd2\xa0\x3b\xea\xc0\x03\xf8" - "\x75\x78\xca\x4e\x40\x07\x5c\xf3\x5c\x1d\xf7\x9d\x1c\x03\xac\x07" - "\x20\xf7\xe6\x2e\x77\x5a\x29\x68\x78\x94\x69\x68\xbf\x91\xf5\xc4" - "\xf5\xef\xe3\xdd\x21\x7d\xac\x49\xc2\xfb\xda\xe8\xf7\xd7\x42\x07" - "\x5b\xff\x4f\x8b\x9d\xc8\x8b\x1f\xe8\x1e\x80\x2e\x04\x7d\xfd\xd4" - "\xe9\xca\x4b\x02\x7f\x27\xa0\x8e\x36\xc8\xe6\x51\x94\x6d\x8d\x90" - "\xf9\x36\xf4\xcf\x51\x1e\x57\xce\x52\xda\xbb\x2d\x25\x39\xc4\xfd" - "\xe4\x2d\xd1\x61\x5c\xe8\x85\x91\x22\x61\xa0\xef\x01\xe7\x98\x82" - "\x73\x8d\x3d\x42\x3f\xf8\x18\xce\x06\xbc\xd3\x61\x5d\x68\x81\x9e" - "\x80\x1e\xbf\x55\x73\x65\x92\x48\xd9\x9e\xa9\xf5\x64\xca\xb1\x12" - "\xe5\xf2\x22\xf8\x3a\xd0\xe8\x44\xbe\x37\x72\x13\xc0\x07\x09\x18" - "\x7f\xd1\x96\xb4\x42\xf0\x77\x20\xbc\x76\xef\xb3\xe2\x5c\x1e\xdb" - "\x11\x57\x9d\xa4\xc1\x7f\x46\xfb\x9a\xb4\xb5\x7b\x8b\x45\x97\x4c" - "\x63\xba\xed\x17\xfc\x9c\x82\x7c\x3d\xbd\x69\xef\x73\x1a\xf8\x20" - "\x91\xe5\x55\x08\x99\x8e\x31\x73\xf0\x32\xe8\xb4\x56\xe4\x2d\xe6" - "\xbc\xa3\x43\x34\x00\xba\xc6\x66\x77\x25\xd0\x09\x1a\x4c\x5a\xca" - "\xde\x45\x11\xf5\x01\xce\x60\x1e\xa4\x98\x1f\xcd\x5d\xe7\x00\xa7" - "\x53\xa6\xc3\x8e\x19\xfc\x18\xe0\x2f\x66\x5d\xa9\xf4\xf7\xf5\xff" - "\xce\xf9\xf4\xb1\xb9\xef\x19\xb2\xae\xe0\x5c\xff\xef\x87\x41\x4b" - "\xb6\x17\xd8\xfe\xeb\x72\x0f\x9e\xe5\xa3\x81\x7e\x35\x36\x5e\xdf" - "\xca\x79\x35\xe0\x28\x52\x93\xb8\x2d\x25\x9e\xe5\x1d\x74\xb2\x98" - "\xc7\xda\xc1\x69\x9a\xcb\x41\xd1\x38\x5d\xd3\xc4\xf8\xb3\xfe\x00" - "\x2d\x3e\x05\x1f\x24\x03\xde\xb6\x68\x3e\x18\xec\x01\x9c\x67\x81" - "\x5f\x2b\xda\xf4\xac\x8f\xae\x39\xa2\x75\x3a\x50\x2f\x99\x20\x57" - "\xd0\xe7\x7d\x30\xf4\xf2\x6d\xd1\xe5\xaf\xa9\xe0\x72\xc8\x9f\xd4" - "\xd5\x29\xf3\xaf\x63\x9a\xeb\x7c\x07\xbe\xbc\x36\x3d\x86\x2f\xb7" - "\x00\x97\xff\x88\x78\x3f\x26\xe6\xfd\x2a\xbc\xff\x4f\xfd\x3d\xe4" - "\xfe\xda\x59\x31\x7c\x5b\x8c\xf7\xa7\x80\x6f\x00\x72\x0d\xdb\xe2" - "\x9a\x5c\xf0\x98\x3f\x22\xff\x9a\x98\xfc\x5b\x91\xff\xbf\x98\x6f" - "\x78\xcc\xe1\xfc\xf5\xba\xec\x20\xbf\x05\xf9\xf7\xc4\xd4\x3f\x07" - "\xf9\x03\x11\xf8\x1d\x8b\x7e\x9f\x5e\x8b\xf7\x5f\x32\xaf\xc3\x26" - "\x4a\x42\x9e\x01\xac\x4b\x58\x8f\x1d\x2e\xe2\xfe\x4a\x37\xc7\xe4" - "\xcf\x40\xbe\x54\x9d\x46\x26\x9d\x46\xb9\xdc\x8f\xa8\xe3\xb8\xc2" - "\x21\x3d\x3b\xa6\x4c\x1e\xca\xa4\x83\x8e\xcf\x1a\x7c\x19\xa7\x4c" - "\x51\x4c\x99\x75\xdc\x8f\x42\xd5\x63\xee\xea\xe9\x2b\xa3\xeb\xc8" - "\x48\x18\xdc\xb6\xab\x01\x63\x77\x34\x8c\x21\xed\xa8\x77\xd8\x7a" - "\xa5\x77\xae\x06\x0f\xdd\x81\xb4\x7f\x07\xcc\xe7\x58\x06\x20\xab" - "\x01\xaf\x3f\x48\xc2\x95\x9b\xaa\x78\xf7\xba\x6b\x06\x85\x88\xef" - "\x47\xf1\x3d\xc3\x16\x5d\x53\x74\x99\xbc\xee\x1a\x5c\x91\x9e\xce" - "\xf6\x5b\x02\xeb\x60\xd1\xf5\x13\x4d\xc1\xbc\xee\x4e\x61\x22\x13" - "\x9e\xc3\x7a\x1d\x7f\xc6\x73\x02\xf0\x5f\x84\x31\x87\xc4\x52\xe4" - "\x5b\x4e\x13\x90\x7e\x48\xca\xaa\xca\x27\x9f\x55\x1d\xb9\xcc\xdf" - "\x63\xf0\xfc\xbe\x5e\xfe\x5d\x86\x87\xfb\xdb\xf5\xfb\x84\x30\xc3" - "\x3a\x67\xc8\xe0\x90\x37\x65\x39\xc8\xa1\x84\x8f\xf2\x62\xa9\x7c" - "\xc7\x30\x5f\xc6\x75\x32\xae\xab\x70\x7d\x00\xd7\xc7\x5c\x5f\x92" - "\xcd\x15\x96\xf2\xc8\xcf\x93\x71\x7d\x10\xd7\x3b\x71\x9d\x89\xeb" - "\x70\x5c\xef\x41\x1b\xc2\x2c\x17\x18\x47\x79\x8e\x15\xc0\xb8\xaa" - "\x78\x8b\xe7\x00\x5d\xb9\x4c\x83\x49\xc8\xd3\x2e\xe5\x55\xe9\x17" - "\x8b\xea\xc7\xeb\x3a\x64\x5a\x8a\x4c\x1b\xa0\xf8\x41\xa5\x85\x0d" - "\x3d\x74\xae\x2f\x4d\xd7\x4d\xba\x2c\xea\x69\x0a\xfe\x0c\xc0\xf7" - "\x30\xae\x42\xc1\x4a\x52\x7d\xae\xc3\x57\xe5\xcc\x71\xea\x4c\x88" - "\xac\x13\xd7\x4d\x2e\xa7\x10\xb8\x96\x73\x1f\xf9\x68\xc8\x6e\x21" - "\xf9\x1e\x63\xac\x82\x37\x5b\xcf\x37\x86\x69\x2c\xcb\xcb\xf4\xf4" - "\xa3\x11\xbc\x34\xb8\xcb\x3d\x24\x14\x23\x47\x59\xe0\xa5\xdb\x98" - "\x67\x98\xee\xdc\xb6\x41\xc5\x72\x1c\x97\x6d\x91\xf0\xcf\x29\x9e" - "\xac\xd3\xe7\xad\x4a\x7e\xaf\x9f\x18\xa3\x5f\x24\xcf\xc6\xc8\x7b" - "\x07\xd3\x3c\xb1\x94\xe5\xe0\x7a\xcc\xff\xde\x19\x26\x6d\xc6\xb5" - "\x7b\x97\xf0\xfb\x00\xfa\x98\xeb\x4d\x2c\xe6\x76\x5c\xbf\xc9\x78" - "\x2f\xdf\x25\x1f\x4a\x63\xfe\x4e\x2c\x92\xef\x76\x63\x3c\xda\x6f" - "\xbc\x33\xea\x49\x2c\x91\xef\x9a\xfa\xe0\x6e\xcf\xd5\xe1\x26\xc6" - "\xb3\xf9\x44\xc5\xf6\xec\x51\x44\xa6\x5b\xcb\x29\xc9\x1b\x3a\x46" - "\xd3\x43\x22\x3c\xaa\x9c\x92\xbd\xa1\x5d\x74\x0b\xd1\x35\xde\xd0" - "\x71\xba\x95\x68\xb8\x37\xb4\x09\x36\xc8\x36\x7e\x7f\xf0\x66\x4a" - "\x48\xc0\xd5\x75\x53\xb9\x29\xc1\x1b\x2a\xa1\x8c\x72\x33\xae\x45" - "\x74\x6f\x92\xe8\xf2\x86\xa6\x20\x5f\x21\x4d\x0f\x8b\x73\x13\x93" - "\xc4\xdf\xf2\xc3\x94\x36\xe5\x79\xe1\xf2\x86\x30\x1f\x08\x35\x21" - "\x5d\x13\xd3\xc3\x5f\xe2\xd7\x25\xb4\x8a\xed\xb9\xd3\xc3\xe7\xc4" - "\x84\xe7\x0f\xe2\xf9\x6f\x02\x7d\x24\xbc\xa1\xb1\xd4\x12\x08\x20" - "\x9f\x4b\x88\xca\xed\xd9\x8f\x5f\x30\x51\x0f\x6c\x08\xad\x72\x7b" - "\x2e\xda\x92\xd7\x83\x76\x60\x7c\xfd\x59\xcf\x0a\x5c\xd7\x6e\xff" - "\xa9\x7c\xae\xd8\xee\x10\x96\xed\x79\xb7\x61\x72\xc5\x6d\xf0\x86" - "\xda\x28\x1f\xd3\x83\xe9\xcb\xfc\x82\xf1\x1f\xb4\x8a\xe7\x56\x63" - "\x09\x7d\x60\x9d\xbe\xcc\x25\xf0\xce\x22\x92\xb7\xe7\x79\x43\x1d" - "\x84\x3a\x1c\x80\x37\x57\xc2\xab\xd8\x5e\x81\xbc\x7e\xce\x17\x09" - "\x87\x61\x70\xde\xe9\x61\xb2\x22\x7f\x45\x4f\xf2\x76\x27\x7e\x35" - "\xf8\x1d\x41\xd9\xbf\x0a\x77\xfa\x21\x81\xf1\x1e\xe5\xdb\xf1\x1c" - "\x0c\x42\x86\x25\x2d\xc3\x34\x00\xf9\xdb\xc1\x2f\x13\xc1\x77\xc0" - "\x77\x87\x4d\xe2\xbb\x76\xc7\xf5\x41\xd9\x8e\x1d\x43\x54\x3b\x76" - "\x5c\xc7\xe9\x9d\xb0\x75\x70\x9f\xdd\xa9\xde\xfd\x00\xe5\x66\xc9" - "\x72\x15\x3b\xb2\x85\x65\x47\x6e\x10\xf2\x05\xba\x96\x33\x1d\x41" - "\xd7\x72\xa6\xa5\xa8\xdc\x91\xed\x75\xae\x23\x91\xbc\x23\xb7\x27" - "\x79\x47\x1e\xca\x3f\xd5\x23\x6d\x90\x1d\xce\xa0\x82\xbd\x14\x70" - "\x66\x83\x6f\x13\x01\xc3\x09\x58\x15\x3d\x6e\x3b\x4d\x5f\x26\x82" - "\xd3\x43\xab\x42\xf9\xcb\x28\x71\x24\x95\x03\xdf\x0f\x41\xa3\x42" - "\xb4\xb3\x11\xd7\x89\x78\x4f\xd7\xa2\xae\x83\x80\xeb\xe4\xfa\x50" - "\x4f\x05\x60\x3e\x0f\x58\x85\x8c\xd3\x97\x6e\x4a\xc3\x73\xcd\x97" - "\x0a\xbf\xfd\x5a\xc5\x8e\x56\xcd\xb2\xe3\x88\xc1\x43\xcc\x3f\x8a" - "\x6e\x9b\x68\x5a\x40\x84\xbc\xa1\x2d\x04\x1e\x4b\x6b\x09\x1c\xe7" - "\xf7\x98\xff\xec\x42\x3f\x33\x4f\x95\xe0\xba\x8d\x98\x7f\x5a\x8a" - "\x9f\xe7\xbc\x07\x99\x87\xa6\x15\x07\x56\x8d\xa2\xe2\x04\x3c\xbb" - "\xf2\x43\x16\x7a\xbc\xd8\x5c\x1e\xae\xd8\xd1\xd0\x52\xcc\xfd\x72" - "\x0c\x65\xb8\x5c\x11\x59\x13\x30\x07\x48\x10\x21\xab\xd3\x6f\x1e" - "\xe8\x70\x89\x96\xc0\x14\xe4\x2d\x26\x6e\x0f\xf3\x11\xe7\x9f\xda" - "\x21\x7c\x61\xcb\xce\x3c\x6e\x9b\x18\x54\x4e\xcd\x1d\x77\x12\xcf" - "\xc3\x9a\x3b\xb6\x31\x9f\x6a\xc2\xb2\x33\x13\x3c\xda\x33\xb5\xa3" - "\x3c\xe9\xf1\x0b\x94\x80\xb4\x70\xb3\x63\x17\xde\x37\x22\x5f\x93" - "\xe4\xdb\x69\x17\x42\xd6\x90\x65\x47\x4d\xa8\x62\x67\xf6\xb4\x0b" - "\x3d\xa2\xd9\xb1\x89\x1e\xeb\x28\x07\xad\x76\xd1\xd4\x33\xa1\xc4" - "\x96\xe2\x42\xe4\xe9\x42\xfa\x36\xc9\xff\x53\xcf\x74\x8a\x69\xb0" - "\x66\xa6\x5d\xf8\x9b\x98\xea\x10\x07\xf3\x9d\x34\xe8\xea\x55\x42" - "\x63\xb9\x68\x6a\xdb\x45\x57\x1f\xf7\x11\xcb\xc4\x94\x39\x9a\x98" - "\x7a\xe6\x9c\x78\xfc\x59\xa6\xcd\x58\x6a\x76\x40\x7e\x9c\x9b\x98" - "\xde\xfb\x9b\x1d\x07\x50\xff\x44\xc0\x75\x09\xaf\x73\x0b\xf2\x7a" - "\xac\x8f\x9d\x49\xa3\xa6\xb6\x4d\x14\x4a\xde\x51\x13\xae\xdc\xd1" - "\xa0\x25\xef\x38\xa2\x55\xee\x68\x15\xc9\x3b\x33\x43\x95\x3b\xb3" - "\xc3\xc9\x3b\xc1\x03\x3b\x1b\xd0\x4f\xc9\xdc\xe7\xdd\x6e\xb2\xe3" - "\x79\x47\x37\xf7\x7f\xc5\xce\xfd\x68\x6b\x2b\x6c\x5e\xa1\x78\x7f" - "\xe7\x7e\x5e\x5b\x40\xd9\xd6\x9e\xe4\x9d\x47\x90\xaf\x55\xc9\xd7" - "\xce\x76\xe6\x4b\xe4\x33\x21\xed\x14\xe6\x3d\x89\x78\x1f\xec\x49" - "\x6e\xb0\xe0\x67\x13\x6b\x1b\x1c\x80\x7f\x8d\xe4\xa9\x8a\x06\x87" - "\xf8\x71\x35\x6c\xe8\x0b\x80\xd3\x50\x31\x3d\x7c\xb7\x00\x0d\x21" - "\x27\x0d\x0e\xad\xb2\xc1\x29\x52\x1a\x1a\x82\x92\xf7\x1b\x76\x32" - "\xec\x9e\x15\x99\xbc\xe6\x60\xc6\x7b\xd8\x80\x6f\xde\x1a\x64\x5e" - "\xb5\xbc\x99\xa9\x59\xde\xac\x10\x15\x6f\x66\xff\xe4\x79\xe1\x0f" - "\x57\xbc\x99\xa7\x55\xbc\x99\x1b\xba\x0a\xb6\xb9\xf3\x00\xb1\x7e" - "\x0a\x7d\x24\x40\x83\x4f\x40\x8f\x6d\xb2\xff\xbd\x4e\xc8\xc0\xb2" - "\xa1\xe5\xcd\x1d\xe0\x85\xe2\xb7\xa5\x6e\x6a\x09\x1c\x93\x34\x15" - "\xc9\x6f\x66\x32\x4f\x71\xff\x3e\x5e\x4c\xe5\xa2\xf2\xcd\x6c\xad" - "\xf2\xcd\xdc\x70\x25\xe0\x26\xa3\x9e\x94\xb7\xfe\x14\x94\xf2\xfa" - "\x16\xf8\xf5\x00\xca\x7c\x42\x8a\xc7\xdf\x3a\xd2\x9f\x8e\x64\x5d" - "\xc5\xfa\x69\x7a\x28\xc8\x3c\x73\x8a\xf5\x9a\xd2\x53\x94\x6f\xe8" - "\x29\xd6\x51\x3c\xdf\x61\x3d\xa5\xe9\x7a\x4a\xd3\xf5\x94\x7c\xb6" - "\x40\xd7\x54\x6c\xcf\x63\x7d\x34\xdd\xa9\xf4\xcc\xf4\x70\x96\x00" - "\x6f\xa4\x02\x46\x9e\xea\x0b\xe4\x59\xbb\x7d\xae\xcc\x2f\xe9\xb4" - "\xbd\x42\x83\xbe\xc1\xaf\x46\x53\xfa\xa6\x55\xd7\x37\x26\x43\xdf" - "\x84\x31\xae\x41\xa6\xb4\x78\xfa\x46\xd3\xf5\x4d\x58\x28\x7d\xa3" - "\xe9\xfa\x86\xd3\xc3\xba\xbe\x09\xc7\xd1\x37\x90\x67\x6e\x6f\xa2" - "\xae\x67\xca\x59\xcf\x70\x7b\xc1\x6b\xb9\x9a\xd2\x33\x0e\xcc\x75" - "\x4c\xac\x67\xc2\x28\xa3\x19\x7a\xa6\x4b\x96\xaf\x60\x5d\xd3\xf3" - "\x02\x41\x7f\xda\x89\x75\x8c\xd4\x27\xa1\xe1\x21\xd6\x27\xa0\xdf" - "\xdd\xb1\xfa\x04\xf0\x6a\x70\x9f\xa6\xeb\xa9\x23\x98\xe9\x86\xa0" - "\x4f\x1a\xa6\x3b\x03\xe8\xeb\xcf\x30\xf7\x87\xde\x76\x96\x94\x7b" - "\x9d\x21\x82\x1e\x68\x15\x2d\xe5\x04\x1c\xc1\xbf\x61\xe8\x0a\x22" - "\xc8\x65\x66\x08\x32\x0e\x1e\xcf\x6e\x29\xfe\x94\xc2\x90\xd5\xa9" - "\x1d\x9d\xde\xc7\x03\x99\x69\x53\xcf\x08\x3f\xe8\xe3\x7b\xbc\xb8" - "\x1c\xfa\x25\xd3\xdf\xdc\xf1\x21\x4d\x69\x13\xda\x94\x02\x9f\x1d" - "\x32\x90\x3d\x75\xbe\xc7\xfa\xf8\xb3\x69\x90\x33\xe1\x81\x5e\xfc" - "\x7f\xa6\x9e\x49\xb3\xce\x6e\xa3\x6f\x4d\x99\x23\xb4\x30\xe4\x0c" - "\xed\x6d\x40\xbb\xf7\x03\xf7\x23\x90\xb9\x56\xc8\x59\x66\x28\x46" - "\xce\x20\x33\x3b\x70\x6f\x57\xf4\xdb\xd9\x0a\x39\xdb\xaf\xc9\xf1" - "\xac\x4d\xce\x31\x51\x4f\x2b\xaf\xc5\x41\xd6\xf6\x6b\x95\x4a\xd6" - "\x34\x55\xae\x5d\x63\xfa\x99\x74\x59\x43\x5f\xe0\x7d\x10\xb2\x63" - "\xc1\x2f\xbe\xac\x15\x47\xc8\xda\xb3\xba\xac\x25\x2b\x59\x43\x9f" - "\x26\x86\x57\x28\x79\x63\xf8\x3c\x0f\xed\x95\xb7\x94\x37\x33\x71" - "\x9f\xa0\x78\x47\xca\x1c\xc6\x95\x37\xf3\x20\x6f\xb9\x90\x37\xc0" - "\x13\x7e\xd6\x9b\xe0\xcd\xff\xe0\xb1\x6e\x5a\xb1\xf8\x8f\xfc\xf0" - "\xd0\x72\xc8\x53\x1e\x74\xd9\xdf\xa0\x47\xff\xe3\xf1\x00\x6d\x85" - "\x3c\x65\x42\x8e\xb2\x21\x4f\xb9\x90\x2b\x96\xa7\x23\xe1\x15\x0c" - "\xf3\xad\x23\xbd\x30\xe4\x58\x19\x2d\x4f\xfd\xad\x83\x76\xb9\xed" - "\xa5\x3e\xfa\xa0\x98\xed\x15\xdc\x57\xf8\xe8\xc0\x44\xfd\x1e\xf6" - "\xcf\x56\xb9\xb6\xc5\x32\x58\x5c\x46\xd7\x9d\xa6\xe1\xb9\xe0\x77" - "\xc2\x7d\x2a\xee\xa7\x4c\xbf\xe5\x20\xec\x88\x8e\x76\xd4\xdb\xc5" - "\x72\x28\xdc\x63\xd8\x3e\xcb\x01\x1f\x5a\x44\x57\x66\x2a\xec\x4b" - "\x4d\xf4\xd8\x78\xad\xcd\x8a\xe7\x41\x68\x7f\x06\xae\x83\xb7\x5c" - "\xa4\x74\xfc\x6c\x5b\xdc\x5a\x39\xdb\x4e\xb8\xcf\x12\x4b\x6d\x29" - "\x1b\x96\xd0\x48\x6b\x80\x2c\xf5\x6e\x2d\xcf\xba\x2a\x8d\xd7\x9c" - "\xd2\xf9\x5e\xb8\xb7\x8d\xad\xbf\x48\x66\x5e\x17\xd0\x92\x51\x9f" - "\xd3\x2a\xc4\xe2\x4c\xaa\x5f\x04\xfd\xe0\x26\x5b\xbd\x5b\xec\x0e" - "\x77\x49\x99\xcc\x36\x70\x61\xdc\x80\xe7\x0d\xc0\x73\xf6\x43\xcb" - "\x72\xe8\x13\x27\xc5\x5d\xab\xed\x72\x0f\xef\x6d\x7f\x3f\xef\x6b" - "\x0d\x9a\xf4\xf3\xfe\x80\x41\xa7\x7e\xd6\xf5\xcc\x3c\x46\x87\x97" - "\x08\x7f\xd5\x53\xc4\xb4\xb0\xb9\x42\xe2\x3f\x41\xc7\xf2\xb2\x30" - "\xdd\x30\x7d\xd9\xb7\x85\xb7\x43\x78\xbc\xce\x33\x54\x8f\xf7\x65" - "\xa5\x42\xd3\x92\xf7\xfa\x44\xe5\xde\xe3\x9d\x4b\x44\x88\xd7\x72" - "\xba\xdc\x37\xda\x7d\xf4\x23\x8f\xea\x8b\x1d\xfb\xe5\x1c\xd2\xb2" - "\xf7\x38\x60\x5d\xc3\xb0\x9a\x51\x3e\x5c\xb9\xb7\x0d\xf9\x60\x6f" - "\xfe\x51\xae\x77\x40\x8e\xf7\x17\x2f\xa7\x6f\x9e\xa6\x1b\x25\x8d" - "\x45\xc5\xde\x00\xeb\x03\xa4\xa5\x21\x6d\x1d\xe0\x07\x91\xdf\xe9" - "\xa3\xbd\x9b\x94\x1d\x7b\xe3\x3a\x23\x1f\xee\x0b\xf8\x3e\x8a\x7f" - "\x12\xe4\x62\x3a\x60\xd9\xfb\x36\xab\x12\xf4\xe5\x75\xe3\x2f\x0d" - "\xbf\x9c\xf8\xaf\xfb\xf4\xf9\xce\x6c\xd8\x5a\xe4\x5a\x49\xc3\xd0" - "\x3f\xc0\xef\x3b\x09\x98\x47\x9c\x14\xee\x1b\x6b\xde\x58\x1e\xc4" - "\x3c\xe1\x3b\xa9\x3e\x7a\xb1\xb1\x3f\x7a\x0a\xb6\x75\x2e\x8a\xf6" - "\xaa\x25\xbd\xb4\xfc\x7c\xfa\x32\x4d\xf0\x3d\xeb\xa3\x7a\xa4\x33" - "\xdd\x00\x67\x96\x41\xb3\xfe\xfb\x65\xaf\x5f\xcd\x39\xbf\xb3\x47" - "\xb8\x05\x79\xbe\xc5\x7b\x4c\xdf\xd9\xab\xe8\xb0\xf3\x48\x27\xf4" - "\x08\xaf\x13\x63\x6e\x16\x58\x6c\x13\xa0\xd7\x77\x1a\x7c\x34\x32" - "\x4b\x5f\x87\x0a\x78\x43\x93\x58\xb7\xc4\x1d\xb7\x78\x4f\xac\x0f" - "\x7e\xc6\xb1\x96\x61\xd0\x43\x52\x37\x1d\x9a\x55\xa6\xf0\x0e\x32" - "\x5c\x4f\xd9\x79\x6a\xc3\xfb\xc5\x01\xd1\x2e\x2a\x0e\xe5\xf2\x3c" - "\xc2\xb3\xa4\x9b\xd3\x3e\x05\x6f\x0b\xcf\x22\xc6\x29\xe3\x53\xcf" - "\xb7\xba\xe9\xa4\x93\x12\xeb\x7b\xd7\x7f\x32\x3c\xbc\xde\xa3\xd6" - "\xb9\x32\x72\x7c\x34\x2a\x68\xe0\xc5\x36\x06\xe8\xcb\xb4\xde\xcf" - "\xb6\x06\xef\x3d\x2c\x2e\x15\x41\xb6\x39\x90\xb7\xc8\x68\x03\xb7" - "\x4f\xb5\x2b\xa3\x3c\xb2\x5d\xbc\x47\x65\x2d\x55\x34\x58\xbc\x8c" - "\x2c\x76\x45\x6b\x0b\xb7\x97\xdb\xc2\x6d\x96\x6d\x91\x3a\x16\x63" - "\x44\xe8\x4e\xcc\xc7\x64\x7a\x2b\x60\x61\xfe\x33\x52\xe7\xa9\x8c" - "\x9c\x58\x3e\xea\xed\x47\xcb\x8e\x0a\xcc\x41\xbf\xe5\xd2\xc4\x89" - "\x93\x34\xe2\x61\xb5\x76\x36\xe2\x61\x8d\xed\xec\x20\xf3\xef\x07" - "\xad\x3c\x26\x7b\x4b\x59\xdf\xca\xbc\xd7\x22\x6f\x1b\xf2\x4c\xd6" - "\xf3\x4e\x56\x7b\x76\xf2\x3a\x80\xaf\x18\xc7\x9e\xf7\xd1\x88\x02" - "\xbf\x1c\xef\x0f\xa5\x19\xcf\x98\xbb\x63\xfe\x37\xc2\x26\x2a\x3f" - "\x68\x8d\x8f\xcb\x9b\x15\x3c\x9e\x85\x2f\x8a\x0e\xd4\x73\x3d\xf3" - "\x94\x6b\x19\x7d\x03\x7c\xf9\x79\xd9\x4a\xba\x96\xf9\x49\x24\xef" - "\x0d\x29\xba\x8f\xd8\x25\xdc\xb0\x3d\xa1\x51\x8b\x97\xd0\x37\x21" - "\x47\x81\xd3\x34\xe2\x50\x7e\xa9\x1d\xb8\x12\x55\x9d\x25\x92\x3a" - "\x28\x79\x6f\xd0\x1b\xfa\x82\xea\xcf\xf2\xda\xce\x08\x9f\xc1\x8b" - "\xb8\xef\xb8\x9c\xbe\xc0\x38\x63\x51\x6b\x0f\x37\x3d\xcc\xfb\x0c" - "\x27\xe8\xa6\x89\xdc\x5e\xb5\xc7\x79\xd3\x9d\xe2\xa2\x98\x2d\xd4" - "\x98\x16\xf4\xd1\x4d\xc5\x18\x5b\x2c\xf2\xe7\xa6\x02\xf5\xbc\x33" - "\x88\x7c\x19\xe2\xa2\x46\x9c\x8e\xb4\xb1\xc2\x9d\xc0\x32\x71\xa0" - "\xcb\x7d\x93\xc3\x47\x3f\x6e\x55\x7d\x73\xd3\x18\x86\x15\x1f\x87" - "\x9d\x41\xf4\x2d\x31\x6f\x02\xd6\x9f\xed\x65\xbc\x76\x79\xd3\x76" - "\x29\x17\x80\x55\x6f\x52\x7a\x5b\x03\xae\x75\x6e\xcd\x01\x1d\xed" - "\xd0\xd6\x7e\x94\x23\xef\xf5\x77\x42\x1f\x47\xe3\xc3\x3f\x34\xcb" - "\x33\x94\x79\xfc\xe6\x91\x0a\xce\xa1\x5c\xcf\xd0\xd3\xfc\x3c\x8a" - "\x9f\x03\x96\x83\x39\xde\x9a\x1c\xd4\x7f\x1a\xf5\xde\x3c\x52\xcd" - "\xe7\x6f\x1e\xd5\x89\x3a\xba\xdc\x37\x8f\xf4\xd1\x68\xb3\xda\x73" - "\x39\x98\xd3\xdf\x5e\x32\xcb\x0e\xcb\x9c\x92\xe9\xcc\x33\xcd\x5b" - "\xa5\xfc\xb5\x77\x5a\x1a\x2c\xba\xde\xe0\x75\x9a\xd4\x13\x94\xd9" - "\xd1\x6c\x93\xfc\x6d\x12\xa6\x9b\xd7\xfd\x46\xf3\x9b\x78\x5f\x4c" - "\xa9\xaf\xcc\x8e\x4b\x7f\x37\x7b\xf0\x3b\x8a\xdf\x71\xfd\xb9\x1d" - "\xbf\x10\xee\xa7\xe0\x77\x5c\xd2\x6e\x73\x61\x82\x0f\xef\x3a\x61" - "\xb3\xf3\xb3\x8f\x6e\x3e\x22\x36\x67\x98\x60\x97\xc8\xfb\xfa\x6f" - "\xf0\x3a\xc1\xcd\xd0\xb3\x37\x95\xaa\xbe\xc8\x94\x6b\x2a\x90\x47" - "\xa6\xbb\x70\xd5\x88\x60\x63\x59\x80\xf1\xce\x68\xac\x09\x90\xfd" - "\x26\x6e\x7f\x26\xdb\x0f\x22\x00\xfa\xf3\x75\x71\x8d\xf0\x1f\xae" - "\x0d\x11\xef\xcf\x75\xb9\x33\x21\xff\xf3\xa7\xa8\x35\x87\x43\xc5" - "\x0c\x4f\xe7\x09\x61\xb4\x5f\xe9\xb4\x83\x39\xdc\x97\x78\x7e\x0e" - "\x6d\xb7\x9e\xa5\xcc\xbd\x22\xe5\xa3\x9c\xc3\x0e\xa2\x2d\xd0\x23" - "\x18\x6b\xe4\x5e\x41\xbd\xf4\x0f\xc8\xc4\xf8\x7f\xd3\x71\x63\x3f" - "\x69\x3d\xde\x6f\xc0\x3b\x8c\x3d\xfe\x66\x47\x90\x18\x56\x98\xdb" - "\x87\xf2\x1f\x6a\x7e\x33\xc6\x6a\xf4\xf9\xc1\x9c\xb2\x62\xe8\x99" - "\x5e\xbd\x95\x39\x7b\xe5\x19\x11\x34\xda\x77\x78\x2b\xcb\x42\x26" - "\xf8\xff\x69\x47\xbf\xfc\xdf\x8b\xf3\xad\xc9\x87\x33\x54\x9f\x69" - "\xa0\x4b\x74\x9f\xdd\x6a\x51\xfd\x75\xcb\xd8\xe8\xfe\xba\x15\xb6" - "\xcd\x2d\x6b\xf0\xab\xc5\x6f\x97\x7a\x8e\xfc\xdd\x52\x1c\x71\x7f" - "\x00\x3f\xe8\xce\x5b\x30\xfe\x8f\x08\xaa\x7e\xe0\x74\xb4\x83\x79" - "\xe4\x1f\x64\xd1\x7a\xf2\x88\xf7\x6b\x39\x9d\xf9\x99\xd3\x35\xd8" - "\x33\x3e\xba\xa5\x1a\xef\xd3\x58\x56\xab\x34\x8a\x7a\xef\x45\xed" - "\x9e\xe5\xd0\xd5\x74\xcb\xe7\x0c\xcb\xba\xaa\xa2\x82\xf9\x14\x65" - "\x36\x59\x43\x15\x15\xa8\xaf\xc3\xa0\x2b\xd2\x8e\xf1\x7b\xe6\xc9" - "\x2e\xf7\xad\x66\xd0\xa5\x41\xee\xc7\x62\xbe\x17\xdf\xd6\xb8\x35" - "\xb3\xd7\x26\xb3\x34\x38\x58\x1f\x75\xd0\x77\xc7\x40\x67\xa1\x6f" - "\x3f\xca\x56\x63\xcd\x77\xef\xe4\x67\xe8\xca\xcf\x71\x9f\xd5\x0c" - "\x9d\xd4\xbd\x76\x6f\x41\x8f\x89\x06\x74\x9b\x28\x27\xb4\xf6\x4c" - "\x6a\x28\xe5\xed\x22\x6f\xfb\x1e\x6a\x09\xfd\x96\xec\x4f\x49\x18" - "\xb7\x78\xc1\x03\xae\x65\x22\xfc\x4e\x77\x83\xd9\x1b\x3a\xe7\xc1" - "\xd8\xfc\xed\xd3\xf4\x5d\x49\x8f\x17\x4f\x60\xd4\x7f\x5c\xc2\xd6" - "\xe9\xd3\xd1\xbe\x61\x9e\x08\x6d\x38\x29\x02\xb0\xef\x52\xd6\x77" - "\xd3\xc8\xd7\x97\x53\x56\x6d\x37\x65\xd4\x75\x53\xa6\x38\x95\x69" - "\xaa\x85\xdd\xf6\xf8\x85\x34\x82\x4e\xc8\x1b\x54\x4c\x96\xba\xe5" - "\x24\x79\x24\x5c\x09\xfb\x2d\x04\xfb\xed\x5c\x26\xeb\xc6\x5e\xfb" - "\xad\x47\xda\xc5\xfb\x0a\x15\x1f\xed\x2b\x1c\xe8\xa0\x84\xd4\x02" - "\x4a\x03\x7e\xae\xb3\x74\xeb\xfc\x54\x0c\x88\xdc\x66\x9f\xde\x5e" - "\xd0\xbc\xd4\xea\xa0\x01\xb2\xad\xd0\xd7\xa2\xf2\xa3\xec\x7e\xc7" - "\x61\x13\xf3\x54\x80\xe5\x86\xdb\xb0\x8a\xf7\x8c\xf7\x0c\x0d\x9a" - "\x17\xd7\x8a\x20\xa7\x97\x0c\x17\xd0\x99\xdf\x75\x70\xdd\xbb\x91" - "\xde\xe5\xfe\x6e\xb5\xcf\xf4\xab\x91\xfd\xf1\x28\xe6\x47\xba\x5e" - "\x19\x79\x8d\x30\x95\x83\x47\x1b\x1a\x56\x86\x60\x7b\x9f\x65\x99" - "\x1d\x99\x36\xbd\x48\x84\xec\x0b\x78\xff\x7e\x24\xb1\x6f\x01\xef" - "\x29\xfe\x06\xb6\xcd\x57\xf9\x13\xf0\x78\xc1\x73\x05\x6b\x11\x60" - "\xae\x6d\x68\x10\x98\x9f\x7f\x5d\x7f\x06\xb4\x33\x75\xe3\x10\xf6" - "\xb3\x19\x39\xc5\x47\x53\xb6\x31\xee\xd2\x97\x06\xba\x13\xf6\xd6" - "\xb5\xc0\xab\x22\x00\x3a\xe0\x3d\xc6\xff\xc9\x4e\x7d\xff\xd7\xcf" - "\x7b\xaf\x48\xc3\xf8\x7f\xff\x01\x4e\x2b\x19\x4e\xb6\x12\xbb\x88" - "\xbb\xf7\xcd\x36\x13\xef\x49\x03\xde\xf5\x28\xb3\xc7\x80\x83\x71" - "\xea\xd7\x9d\xa6\x87\x1e\x42\xda\x11\x03\x0e\xf2\x5c\x87\xe7\xd6" - "\xde\x3c\xaa\x4c\x7b\x44\x99\x87\x3a\x4d\xb7\xfe\x1a\x69\xa1\xe8" - "\x32\xa3\x52\xa3\xcb\x8c\x1a\x16\x51\xa6\x5c\xd5\x33\x2a\x2b\xa6" - "\x4c\x4e\x4c\x99\x19\x97\xe2\x36\xaa\x30\xa6\x4c\x49\x4c\x99\x35" - "\x97\xe2\x36\xaa\x26\xa6\x4c\x43\x4c\x99\xfd\x11\xb4\x64\xbf\x9a" - "\x2c\xa4\x35\xc5\x94\x39\x1e\x53\xa6\xc3\x78\xee\x87\xc6\xa9\x8b" - "\xb7\x90\x0d\xbc\xc9\xbe\x5b\xfe\x8d\xe8\x9f\xce\x57\x9f\xee\x52" - "\x65\x6f\xcb\xbc\xb4\x5d\xb7\x8d\x8d\xae\xef\xb6\x29\xd1\xf5\xdd" - "\x36\xfb\xd2\x76\xdd\x56\x1c\x53\xa6\x3c\xa6\x4c\x75\x44\x99\xad" - "\x7a\x3d\xdb\x62\xca\xec\x89\x29\xd3\x78\x29\x5f\xdd\xd6\x1a\x53" - "\xa6\x3d\xa6\x4c\xf0\x2b\x68\xc1\xe3\xb8\xf2\x6b\x1b\xc2\xb6\xf2" - "\x3d\xb0\x11\x46\xcf\x61\xdf\x08\xde\x07\x7d\xa3\x3b\x98\xc4\xfb" - "\x73\x3c\x5e\x1d\x76\x06\x31\xb6\x8c\xc6\xfc\x67\x8c\xc7\x18\xb3" - "\xd8\x6f\x84\x65\x5a\xd9\xd8\xa3\x33\xfb\xb3\x45\xa5\xef\x99\xee" - "\xbf\xc6\x75\x1d\x1e\xc6\xe3\xd4\xe8\x4d\xbd\x36\xb1\xf2\x41\x23" - "\x1d\xce\xdf\x8d\x7d\xd8\x7a\xe5\x8f\x92\xc0\x36\xf9\x61\xa7\x2c" - "\x73\x24\xc2\x8e\xe6\xfa\x03\x7b\x96\x07\xcd\x31\x78\x34\x5c\x06" - "\x8f\x54\xd8\x46\xd9\x2d\x18\xbd\x78\x7f\xbd\xb9\x16\x36\x10\xec" - "\x7e\xc6\xed\x04\x65\x65\x49\x9b\x6c\x41\x37\xf1\xbd\xb7\xf4\x2e" - "\xb9\xff\xae\x6c\xd2\x2c\x47\x23\xea\x67\xdb\xbd\xb1\xf8\x3c\xfb" - "\x48\x61\xfc\x65\xdb\x2d\xeb\xe5\xc3\xa5\x7e\xe0\x95\x55\x60\xf8" - "\xa9\xf8\x28\x6b\x93\xb4\x35\x2a\x0e\x65\xb1\x6f\x00\xfb\xd0\x1c" - "\x0e\x64\x73\x1e\xf0\xff\xe8\x22\xa3\xbd\x18\xeb\xfd\xc8\x3b\xf6" - "\x72\x34\x53\x7d\x98\x75\x20\x9a\x27\x93\xc0\x2b\x59\x47\xa3\xfb" - "\x3d\xcb\x17\xdd\xef\x59\xfe\x68\x9e\x34\x81\x27\x6f\x37\x47\x97" - "\xb9\x3d\x3d\xba\xcc\xed\x19\x11\x65\xaa\x55\x3d\xb7\x67\xc7\x94" - "\xc9\x8d\x29\x93\x17\xf1\x8c\x36\xde\xee\xe8\x9d\xfb\x48\x1f\xa8" - "\xdb\x9d\x11\xcf\xa6\x4d\x52\x7f\xde\xbe\xce\x48\xe3\xb5\xa3\xba" - "\x57\x94\x0f\x8e\x0e\xaf\x21\x46\xde\x39\xff\x81\x18\x1c\x9a\x62" - "\x70\xe8\x95\x7f\x7d\xef\xfe\xe3\x93\x74\xc7\x1e\x7d\xef\xbe\x03" - "\x63\xf6\x74\x7e\x06\xac\x1a\xe4\x07\x1d\xee\x48\x8d\x86\x77\xc7" - "\xb0\x68\x78\x77\x8c\x8c\x78\x4e\xc3\xf3\xd8\x88\x36\xa4\x25\xda" - "\x28\x01\xfc\x02\xfb\xed\x8e\x59\x46\x3a\xcf\x29\x81\x6f\xbb\x4b" - "\x8e\x35\x39\xec\x5b\x36\xf8\x04\xdd\x31\x9e\xe7\x9f\x3a\xcc\x48" - "\xf9\x27\xd5\xae\x3b\x36\xc5\xe0\xb1\x2d\x06\x8f\x3d\x11\xed\x0a" - "\x58\x57\xd1\x03\xd6\xd0\x83\x0f\xb3\xed\xc3\xfe\x94\xd2\xc7\x6b" - "\x25\x6c\xb6\x0b\x94\xc6\xbe\x75\x27\x4b\x28\xd1\xeb\x6c\xc7\x5c" - "\x6e\x5f\x41\xbf\xfc\x94\x72\x28\x47\xf9\x56\x91\xbd\xcb\xfd\xbd" - "\x74\x83\x1f\xb5\xb5\x87\x72\xb4\xca\x0f\x33\x90\x06\xfd\x97\xb5" - "\x55\xd9\xb9\x07\x8a\x85\x2b\xaf\x06\xf4\xc4\xbc\x68\xcc\x75\xfa" - "\x3c\x62\x16\xfb\x88\xb1\x1f\x2b\xc6\xf8\x54\xb5\x0f\xff\xbd\xd9" - "\x11\x7c\x1d\xb0\x2f\xbf\x5b\x9c\xa0\x31\xc3\xd9\x06\x60\x19\x65" - "\x5f\xb3\xc3\x21\x3f\xf1\xdc\xdb\x1b\x3a\x2d\x6d\x37\xbc\xb7\xeb" - "\x65\x6b\x22\xca\xfa\xf5\xb9\x71\x3b\xbf\x1b\x1d\x22\xf3\xe1\x80" - "\x9f\x00\x27\x5d\xd9\x7b\x63\x86\x1f\x86\xbc\xa2\x4c\x93\x51\x86" - "\xe7\xd1\x72\x8f\xb7\x84\xcc\xb7\x95\x92\xd9\xb3\xfc\x84\x84\x6d" - "\xf8\x6d\xc0\x96\xee\xf0\x96\xb6\x93\x37\xd0\xca\x6b\x5d\x66\xe5" - "\xa3\x33\xc6\x9e\x18\x24\x4b\x67\xe5\x21\x8c\x71\x63\xec\xe1\xca" - "\x43\xd9\xc0\x0d\xe3\xd9\xf7\x26\xb2\xbe\x89\xa4\xdd\xa4\x49\x33" - "\x1e\x9c\x3e\x75\xd4\xcf\x1e\x9c\x3c\x6b\xd2\x5d\xf6\x59\xf3\x9f" - "\x99\x5b\x38\x6a\xe1\x73\x25\xf6\xa5\x8b\xe6\x97\xcc\x5f\xf0\x73" - "\x7b\x96\x73\x84\xd3\x3e\xa7\x44\x5d\x33\x8b\xe6\x2c\x2e\x19\xc7" - "\xb7\x23\xed\xc5\x8b\xe6\x2e\x91\xb7\xb7\xa4\x50\x34\x90\xf9\x25" - "\x73\x17\xd9\x47\x14\x8e\xb4\xdf\x3b\x67\x7e\xd1\x73\x8b\xe6\xc6" - "\x85\x75\x97\x7d\xd1\xdc\x45\x73\xe7\x14\xda\xc7\xd9\xb3\x18\x72" - "\x24\xb8\x88\xfe\xcc\x32\xc6\x31\x1e\xbf\xaa\xdc\xe2\xa8\x3e\x9e" - "\xf9\x14\xff\x8c\x09\x5c\x3a\x96\xdd\x69\x89\xe6\xb9\x3b\x6d\xd1" - "\x3c\x77\x67\xe6\xa5\x63\xd9\x9d\x31\xe3\xdf\x9d\x31\xe3\xdf\x9d" - "\xb3\x2f\x1d\xcb\xee\x8c\x19\xff\xee\x8c\x19\xff\xee\xec\x1d\xff" - "\xc0\x4b\xbe\xd5\x52\x2f\xdc\x19\x33\xfe\xdd\x19\x33\xfe\xdd\xd9" - "\x18\xf3\x7c\x2c\xe2\xf9\x5a\x3c\xb7\x45\x8e\x8f\x78\x0e\x18\xf2" - "\xd9\xa7\x5f\xbe\x6f\x31\xf2\xb0\xae\x87\x6e\x6e\x53\x79\xbf\x6f" - "\x8f\xc8\xdb\xae\xe7\x1d\xd3\x2b\x7f\xbc\xaf\x8d\x74\x35\x5f\xff" - "\xfe\x6b\xac\xd3\xd9\x1f\x8f\xc7\x26\xc8\xc7\xb7\xcf\xd2\xf7\xaf" - "\x61\x58\xcc\xc3\xec\x9f\x29\x5e\x7d\xb4\xab\x7e\x30\x59\xb8\x4c" - "\xfd\x4b\xec\xd7\x3b\x66\x24\xfb\xea\x22\x8d\x7d\x97\xa1\x53\xbe" - "\xcf\xf6\x6f\x48\x8d\x17\xdf\xf7\x49\x9b\x1f\x65\x74\xf8\x72\x5e" - "\x03\x38\xec\x0b\x6c\xa9\x52\x63\x71\x1b\xee\x53\x99\xa7\x51\xde" - "\x2c\x4c\x63\x9e\x65\x1f\x68\xa4\xa5\xe1\x97\x0e\x78\x3e\x03\xde" - "\x9a\x21\xf1\x6d\xcb\x58\x3b\xb7\x77\x3e\x68\x22\x6b\x95\x5b\x6b" - "\xf5\x6a\x6c\x5b\xff\x20\x5d\xad\x2d\xec\x2d\x17\xee\x83\x79\xf5" - "\x48\x8f\x3f\x4f\xfa\x01\xe4\xe5\x07\x16\xb5\xde\xf2\x03\xf4\xff" - "\xd4\x31\x6a\xed\x74\x6f\x39\xf4\x6d\x37\xe0\x5c\xc0\xb5\x07\xd7" - "\x7f\x37\xe0\x7b\xe4\x7c\xfb\x07\x25\xc2\x9d\x30\x93\xe1\xc6\xa4" - "\xaf\x83\x7e\xeb\xb6\x86\xca\xf3\xe2\xbc\x6b\x10\xee\xc4\x07\xe3" - "\xa4\x7b\x60\x33\x74\x03\x8f\x00\xe3\x1b\x91\xde\x2a\xdc\x83\x66" - "\x71\x7e\x1f\xd7\x87\x32\xfd\xd9\xda\x86\xff\xad\xf2\xe1\xcf\xce" - "\x88\x69\xc7\x97\x27\x29\xfb\x57\xaa\x1d\xd9\xe1\xe8\xba\xb3\xc7" - "\xc6\x6f\x47\xf6\x2c\xb4\xe3\xcb\xf8\xed\xc8\x2e\x96\xb4\x35\xa1" - "\x2d\xa6\x4b\xde\xad\x43\x5b\xbe\x94\x74\x8f\x4e\xdf\xa6\xdb\x42" - "\x01\xcc\xc3\xd2\xf0\x4e\x96\x9d\x59\xda\xd7\x6f\x7a\xbe\x26\x6b" - "\x0d\xcd\x88\x53\x67\x9b\x70\x0f\x98\xe9\xa3\x1f\xca\x73\x0d\x11" - "\xe9\x21\x85\x0b\xe8\x64\x62\x3a\xa1\x3d\x28\xd7\x5f\x7f\x1b\xf3" - "\x12\xb5\x16\xf2\x43\xc8\x7f\x36\x19\x6b\x99\x8b\x4b\x85\xdf\xa0" - "\x23\xde\x39\x62\xde\x05\x23\xde\xad\x89\x7a\xb7\xb2\x37\xbd\xd6" - "\x48\xff\x7a\xfd\xf4\xc3\xa6\x98\x7e\x42\xff\xdc\xf5\x58\x74\xbb" - "\x7f\x78\x5c\xb5\x0f\x7d\x74\x09\xad\x7f\x18\x44\x1f\xf5\xc4\xef" - "\xa3\xbb\xd2\xe3\xf3\xda\x5d\x72\x1d\x4d\x0c\xa6\x38\xf0\xee\xca" - "\x45\xdf\xf5\x48\x1e\xd4\xfb\xe9\xd2\xfe\xb9\xab\xc8\xe8\x9f\xaf" - "\xd7\xc6\xbb\x76\xc7\xb4\x31\x7c\x92\x7e\x34\x4a\xb5\xf5\x47\x2b" - "\x63\x60\x1f\x89\xcf\x8b\x77\xf9\xd0\xce\x70\x3f\xed\x0c\xf5\xcf" - "\x8b\x3f\xb2\xa1\x3d\xe1\x4b\x79\xf1\x47\x59\xaa\x0c\xc5\x2b\x33" - "\x45\xb8\xe3\xd5\xf3\xa3\x42\x57\x88\xed\xdc\x1f\xd5\xf2\xfa\x52" - "\x44\x7a\x69\x34\xff\xa1\x0d\x5c\x8e\xe9\x17\x52\x7a\x96\xfb\xe1" - "\xa4\x9d\x4c\x5f\xc5\x93\x5d\xee\x1f\x1d\x8f\xa1\xd5\xb9\x93\x34" - "\xf6\xb1\x4e\x53\xc2\x36\x45\xaf\x71\xc3\x63\x70\x0a\xc6\xa7\xd7" - "\xd8\x34\xd0\xeb\x5c\x7c\x7a\x8d\x1d\xd9\x3f\xbd\xc6\x72\xff\x9f" - "\xbb\x94\x5e\x63\x0b\x22\xe9\x05\x5b\x57\xb6\xef\x3b\x36\xf0\x46" - "\x4f\xbe\xa8\xe7\xb6\x86\x29\xcd\x0a\x5e\x51\x65\x3a\xb8\xcc\x26" - "\x6b\x50\xf1\x09\x6c\x48\xcb\x59\x1a\x5b\x6a\xc8\xff\xa0\x1a\x1a" - "\x20\x7a\x1e\x65\x3f\xa2\x04\x2e\xe7\x75\x9e\xf3\x78\x43\x59\xc4" - "\xf3\x8f\x98\x7a\x5b\xe3\xeb\x82\xb1\x7e\xd0\xf4\xa5\x4b\xd3\xc7" - "\x59\x94\x1f\xd9\xb8\x9c\x68\x1d\x31\xce\x1e\xdd\x47\x3f\xe2\xb5" - "\x53\xab\xbe\xed\xf4\x95\xbf\xcb\xf7\xd9\xb8\xea\x4b\xfb\xec\xc7" - "\xb7\xab\xfe\xfa\xf1\x35\x31\xf8\x35\xc4\xef\xaf\x71\x9e\xfe\xfb" - "\x6b\xdc\xf1\xfe\xfb\x6b\x1c\xaf\x9f\x9e\xf3\xd1\x8f\xb3\xa2\xc7" - "\x8d\x1f\xa7\x45\xb7\x17\xf5\xa2\x9c\x30\x5d\x75\x2d\x3f\x7f\xdd" - "\x76\x1b\x3f\xd6\x71\xdc\x57\x7c\xae\x08\xf8\x0f\x67\x1c\xaf\x14" - "\x46\xbf\xb0\x41\xc3\xea\xe5\xf1\xf7\x5b\x79\x8e\xdb\x52\x43\xc4" - "\xfb\xc8\xf6\x6f\xb1\xed\x7e\x77\x92\x66\xa2\x56\xdc\x9b\x4e\x52" - "\xce\x9f\x35\x93\xa9\x94\xf7\x3c\xa5\xdf\xba\x5c\x43\xb8\x7b\x58" - "\x64\x5f\xf0\xde\x27\xcf\x4d\x37\xa8\xb9\xd3\xdf\x50\x7e\xbb\xea" - "\x97\x9c\x77\xa3\xe9\x78\x77\x4e\xfc\x7e\xb9\x3b\x0f\xfd\xf2\xb7" - "\xf8\xfd\x72\x77\x49\xff\xfd\x72\x77\x35\xfa\xe5\x6f\x97\xca\xd1" - "\xdd\x0d\xba\x1c\xad\xe6\x32\xf6\x05\x3c\x1f\xcf\xf9\x06\xe7\xc1" - "\x3d\x64\x24\x47\xd2\x64\x54\x87\x21\x47\xb2\xcc\x71\xc0\x92\xf5" - "\xab\x3c\x77\xb7\xea\x30\x22\xe0\xe6\x90\xb5\x23\x9e\x9c\xe4\xd8" - "\x38\xef\x6d\xc5\x64\x01\x0d\xf3\xb6\x30\x8c\x45\x44\xa8\xe7\x19" - "\xce\xc7\xe9\xb7\x05\x22\xe5\x24\x27\xd7\xc8\xc7\xba\x4e\xcf\x9b" - "\x23\xba\x1c\xc4\xf9\x62\x60\xeb\xed\x1f\x20\xc7\x11\xce\xcf\xf9" - "\x62\xf2\xd4\x28\x79\xcc\x39\x1e\x2d\x8f\x39\xbb\xa3\xf9\x13\xf4" - "\x47\x39\x0d\x7a\x0e\xf7\x66\xe0\xf0\xb5\xf9\xeb\xf2\xb2\x39\x7e" - "\x64\x8c\x6c\x82\x07\xc6\x37\x2b\x1e\x18\xff\x76\x34\xae\xe3\x27" - "\xc6\xe7\x81\xf1\xb3\xfb\xe7\x81\xf1\xce\xfe\x79\x60\xfc\x26\xe6" - "\x01\x1f\x8d\x6f\x8a\x96\xcd\xf1\xbb\xa2\xdb\x8e\x7a\xa5\x6c\xd2" - "\x35\x57\x22\x9b\xb0\x85\xae\xed\x4f\x0e\x59\xa6\xd8\x7f\xa4\xbe" - "\xdb\xd8\xeb\xf8\x5a\x34\xb3\x40\xae\x80\xdf\x3d\x05\xbc\xa6\x04" - "\x1d\x9f\xcd\x34\xac\x93\xe7\x31\xef\x29\x89\xa4\xe3\x06\x75\x06" - "\xd2\x85\xbc\x5f\xf2\xbe\xb2\xa2\xe7\x84\x43\xd1\xed\xbf\x67\x53" - "\x7c\x7a\xde\xb3\x0b\xf4\x74\xc5\xa7\xe7\x3d\x47\xfa\xa7\xe7\x3d" - "\x6d\x7c\x46\xea\x52\x99\xba\x27\x64\x5f\x22\x6d\x14\x59\xe6\x2c" - "\x4d\x78\xe8\xeb\x8d\x4f\x13\xc6\x44\x8f\x4f\x13\x86\x5d\xf9\xf8" - "\x34\xc1\x19\x7f\x7c\x9a\x50\x1d\x7f\x7c\x9a\xd0\xa0\xe4\x61\x82" - "\x2f\x5a\x1e\x26\x78\xa2\x79\x02\xb4\xfb\x5f\x1b\x9f\x26\x66\xc5" - "\xc8\x40\xd5\x49\x9a\xf8\x2e\x6c\x0a\xdd\xde\x9c\xf4\x5c\x34\x8e" - "\x13\xa7\xc4\xef\xb7\x89\x85\xe8\xb7\xaa\xf8\xfd\x36\xb1\xbc\xff" - "\x7e\x9b\x58\x8b\x7e\xab\xba\xb4\xdf\x26\xee\xb9\x72\x9b\x62\x62" - "\x7b\x74\x9f\x4d\x3c\x7a\xe5\x7d\x36\x69\x64\xfc\x3e\x9b\x34\x31" - "\x7e\x9f\x4d\xd2\x7d\xd3\x27\x6d\x8a\xee\xb3\x49\x25\xd1\x7d\x06" - "\xba\xfd\x0f\xfb\x0c\xfd\xb3\x46\xf9\x27\x4c\xba\x80\x79\xfb\x80" - "\x2e\xf7\xa4\x0e\x1f\xdd\xbb\x47\xcd\xad\xef\x55\x63\x87\xea\xc3" - "\x77\x90\xc7\x77\xe9\x38\x70\xaf\x45\x4f\xfb\xd9\xa5\xfd\x70\x6f" - "\x06\x74\x74\x47\x63\xa9\xdc\xdb\x52\x7d\xc8\x34\x47\x3e\xcf\x72" - "\xde\x9f\xba\x77\x22\x97\x45\x1f\x0b\x6f\x30\x44\xac\xd7\x91\x3f" - "\xc0\x70\xf8\x6c\x68\x0c\xac\xe2\x2b\x19\xe3\x2f\xe3\x53\xb3\xc6" - "\x53\x76\x07\xe0\xdd\xf7\xbc\xe2\xd5\x7b\x63\xed\xdf\x7a\xbc\x7b" - "\x58\xf1\xe9\xe4\x11\x31\x38\x04\xe2\xf3\xe9\x7d\xa9\x68\x43\x7d" - "\x7c\x3e\xbd\x2f\xb3\x7f\x3e\xbd\x0f\xfd\x4f\xf5\x11\x73\x9f\xc1" - "\x8f\x87\x7c\x31\x73\x9f\xfb\x1c\xd6\x80\xe2\x1d\x69\x13\x55\xee" - "\x5d\xd3\xe5\xbe\x2f\xd6\xfe\x43\xdf\xe4\x0e\xd4\x71\x4e\x8a\x29" - "\xdf\x8f\xfd\x77\x1f\xdb\x7f\xef\xf4\x83\xf3\x65\xec\xbf\xfb\xd8" - "\xfe\x7b\xe7\x52\xd9\xca\xd5\xed\xbf\x78\x73\xbc\xdc\x91\xf1\xfb" - "\x3f\x37\xa6\xff\x29\xaf\x04\xf3\x61\x59\x3e\x3a\x5f\x51\x64\x3e" - "\xf6\x4d\xe2\xbc\xcc\x23\x71\xf2\xd6\xc4\xc2\xec\x27\x9f\xe7\x12" - "\xde\x63\x5f\xaa\xb8\xbc\x97\xab\x9f\x29\x99\x3c\x31\x5a\x1e\x27" - "\x9b\xa3\xe5\xf1\xbe\x86\xe8\x72\x93\x33\xa2\xdf\xdf\x1b\xf8\xdf" - "\xd3\xb1\x93\x37\xc5\xf0\xc0\xc1\x93\x74\xff\x35\x8a\x07\xee\x9f" - "\x1f\x83\xc7\xae\xf8\x3c\x30\xb9\x11\xed\x3f\x18\x9f\x07\x26\xfb" - "\xfa\xe7\x81\xc9\x21\xd0\xf2\x60\x24\xdf\xce\x2c\xcd\x19\x10\x9d" - "\xe7\x7e\x7b\x7c\x9d\x77\x7f\x76\xfc\x35\x82\xfb\x67\x28\x1a\xdf" - "\x5f\x11\x4d\xe3\xfb\x1d\xd1\x34\x44\x5b\xfe\xe7\x34\xec\x8d\x07" - "\xd1\xe5\xbe\x3f\x56\xfe\xbd\x27\xe9\x27\xba\xfc\x4f\x79\x20\x06" - "\xc7\x80\xc2\x25\xde\xba\xc8\x4f\x78\xfe\xeb\x8d\x4f\xcb\x9f\x8c" - "\x8c\xdf\xe6\x9f\x4c\xc4\x18\xe4\xd5\x2e\x91\xa5\x9f\xcc\x46\xfa" - "\x4c\x5e\x0f\xe5\xf5\x90\x3a\xa4\xcf\x0c\x91\x45\x8e\x57\xbd\xe3" - "\xd2\x4f\xca\xd9\x17\x85\xe9\xcf\xfc\x6b\x1d\x46\x33\x78\x0c\x62" - "\xbc\xf2\x4b\xa5\xdf\x82\x75\x0d\xf3\xfa\x8d\xcc\xeb\x3f\x91\xf6" - "\x1f\xef\xb3\xb0\x1f\xa1\xd5\x49\x33\x38\x2e\x85\xc1\xef\x9c\x3f" - "\x06\xf6\x71\x96\x0b\xce\x6f\xe4\x55\xeb\x66\xe5\x31\xba\x69\x8a" - "\x39\x7e\x1f\x4f\x19\xd6\x3f\xef\x4c\xc9\x56\xfd\x3c\xa5\x28\xba" - "\x9f\xa7\xcc\xd0\xdc\x83\x66\x71\x5b\xc1\x03\x57\x24\x27\x25\x76" - "\xe1\xef\x57\xdf\xaf\x7e\xb4\xb5\xb8\x8c\xbe\x75\x9a\xa6\x1c\x93" - "\xf5\x99\x44\xd0\xba\x2a\x81\x1a\xa5\x0e\x98\x7a\x8b\xc4\x13\x79" - "\xf2\x43\x64\x12\xab\x9f\x6e\xe5\x77\xf5\x6e\x11\x44\xbe\xa3\xbc" - "\x27\xc0\x67\xab\xc1\x0b\xd7\x9e\xa0\x29\x67\xa2\xca\x43\xf2\xbd" - "\x0a\x46\x66\xbd\x94\xc7\xa9\x19\xc6\x9a\xee\x1a\x3c\xc7\x5f\xf7" - "\x9d\x9a\x6b\xf8\x3e\x28\x9f\xb1\xa9\xfd\xee\x5f\x32\x4e\x7c\x56" - "\x86\x71\xba\xbc\x1e\x98\x5a\x6b\xf0\xaf\xf2\xb5\x9c\xba\xab\xcf" - "\x97\x6f\xea\x7e\xbc\x2b\xb8\xcc\xda\x60\x84\x1c\x4c\x6d\x8b\x84" - "\xa3\x62\xa2\x4c\x0d\x1a\xfe\x78\x5d\xee\x69\xe6\xaf\x80\xa5\xe3" - "\x33\x6d\x64\x34\x3e\xd3\xc6\xc2\x4e\x49\xd7\x61\xe4\x5e\x0e\x06" - "\xf7\xb9\xe2\x59\xe6\x87\x69\x05\x97\x5b\xf3\x4b\xb4\xd1\x8c\x8d" - "\x97\xf0\xd6\x34\x69\x2f\x31\x8c\xaf\xc0\xf1\x68\xd4\xdc\x42\xee" - "\xdd\xf3\xde\xd6\xf4\x2d\x4a\xee\xa7\xc7\xac\x11\x4e\xeb\x90\xfe" - "\x54\xba\xdc\x3f\x1e\x8a\x95\x83\xe9\xa9\xc6\x18\x1d\x93\x9e\x61" - "\xc8\x3d\xe6\xb5\x0c\x37\x66\x9d\x75\xfa\x44\x25\x0b\xd3\x6b\xb5" - "\xe4\xc8\xf9\xda\x74\x69\xff\x19\xeb\xa5\x78\x3f\x31\xa6\x5c\xcc" - "\xfa\xdf\xb4\x0e\xd1\xff\x3a\x7d\x2a\xfa\x37\xc0\x7b\x5b\x2a\x56" - "\xc3\xf4\xa6\x98\xf5\x0a\xff\x06\x79\xfe\xfe\xaf\x80\x3b\x43\xd7" - "\x7b\x0f\x8c\x8f\xa9\xaf\xc3\x75\xe6\x72\xed\x9f\xd1\x4f\xfb\x67" - "\xf4\xb5\x7f\x81\x84\x1b\xb3\x96\x38\x43\xb6\x3f\x7c\x89\xfe\x9b" - "\xc1\x3e\xa4\x06\xdd\x60\x73\xcf\xd8\x6b\xd8\xea\xbc\x7e\xd0\xbf" - "\xad\x3e\xa3\x6f\xfd\x4f\x95\xeb\x5b\xff\xf3\xc7\xb3\xd5\x7d\x24" - "\xf7\x56\xa3\xeb\x6e\xb5\xd6\xc6\x6d\x4b\x3f\xeb\x7f\x0f\xe8\xeb" - "\x7f\x0f\x14\x44\xeb\xb3\x07\xec\xd1\x7d\x38\x23\xa6\x0f\x1f\xc8" - "\x89\xee\xc3\xe9\x1d\xff\xdd\x71\x0d\xcf\x94\x98\x98\x68\x4a\x4c" - "\x30\x25\x24\xe2\x35\x9a\x48\x03\x12\xcd\x89\x49\xf8\x5d\xa5\x5f" - "\x07\x98\x12\x4d\x66\xfc\x92\xf4\xeb\x55\x31\xcf\x03\xb8\x2c\x7e" - "\x66\xfd\x9a\x14\xf3\x7c\xd5\x57\xbc\x1f\xa0\xd7\x6b\xd4\x6f\x8e" - "\x79\x4e\xfa\x8a\xf7\x57\xfd\x0f\xcb\xd3\x25\xcf\xd1\x7e\x68\x93" - "\x17\x2c\x99\x53\x34\xbf\x50\xee\x17\xcf\xb5\xcf\x79\xf2\xc9\xb9" - "\x8b\x17\xdb\x4b\x16\xda\xef\x19\xff\xe0\x1d\x77\xd9\xd5\xb6\x73" - "\xd1\xb8\x11\x85\x29\x34\x75\xe9\x22\x7e\x31\x75\xe6\xe4\x3c\xfb" - "\x8c\x7b\xc6\x47\xbf\x34\xc0\xc8\xed\xe5\xcb\x41\x89\x90\xbf\x9c" - "\xca\x21\x44\xeb\x5e\x91\xba\xa7\x8d\xfd\x7c\xd5\x9a\xc7\xcf\x0e" - "\x35\xb1\xff\x68\xb7\x4b\x78\x6e\xe4\x3d\xfd\x99\x73\xb9\x11\xa3" - "\xb6\x96\x53\xf1\x13\x7c\x7e\x65\xe6\x2a\xf1\x91\x9f\xec\xf7\x93" - "\xe9\x04\xcd\xfe\x73\x63\x2e\xf2\xe2\xd9\xeb\x0b\x91\xdd\x45\x16" - "\x94\x7f\x16\xef\x12\xc4\x8f\x35\xa4\x05\x74\x5f\xe8\x9f\xae\x92" - "\x69\x1f\x95\x1b\xf9\xac\x27\x69\xd6\x08\xf1\x91\x90\xcf\x7c\x3e" - "\x48\xe5\x9b\xf9\xa5\x30\x3d\xb8\x9f\x75\x43\xed\x60\x32\xf3\x5e" - "\xe8\x6b\x83\xc9\xf2\xda\x10\x8e\x59\x32\xb3\xc3\xd8\x0b\xad\xc4" - "\xb3\x8f\x66\x1f\xe5\xba\x39\xaf\x66\x7a\xf0\x04\xe7\xaf\x8b\xca" - "\x3f\x6b\x58\xdf\x5e\xec\xcc\x0e\x13\xf2\x4d\xff\x9c\xac\xd6\xb0" - "\xf8\x47\x30\xe5\xed\x82\xdb\x72\x29\xc1\x8b\xae\x68\x0a\x95\x93" - "\xf2\xf9\x99\x35\x77\x59\x58\x84\xd8\x3f\x7d\x6a\x87\x4b\x54\x3d" - "\x43\x66\xc8\x74\x82\x67\x11\xfb\x28\xcc\x9a\x52\x3f\x97\xcc\x68" - "\xff\xb0\xd3\xf4\x50\xa9\x7d\x1a\x91\x6b\x2a\x99\xff\xe4\x64\x7f" - "\xc3\xbd\xda\x86\xbf\x90\xf9\xad\xee\x72\x53\xb7\xb0\x51\x69\x89" - "\x68\x17\x1c\xc7\x28\x20\x82\xec\xe3\xdf\x54\x10\xe6\x3c\x67\xbb" - "\x5c\x36\x6a\x29\x09\xd0\xca\xe3\x22\x58\xf1\x17\x75\x36\xa0\xb9" - "\x23\xc0\xfe\x8b\x96\x95\x53\x29\xf1\x64\x1e\x99\x9a\x1d\x35\xe4" - "\x9d\x1d\xa0\xd2\xe3\xa2\xbd\xa9\xe0\x0b\x6a\x71\xec\xa6\xfc\x56" - "\x32\x35\xb5\x7d\x46\x32\x16\xcf\xda\x33\xec\xf7\x68\x5b\x39\x9f" - "\xd3\x2e\xd0\xf2\x95\x34\x70\xf9\xa7\x64\xf5\xb6\xb7\xa2\x9e\x33" - "\xf4\xc8\x31\x4a\x00\x3c\xd3\x8a\xcf\xc8\xb6\xe2\x61\xf6\xf3\xcd" - "\xa1\xda\x32\xb2\x09\x57\x66\x6a\xb7\x2b\x33\xad\x5b\x64\x0e\xee" - "\x72\x65\xa6\xb7\x14\x23\x7f\xdb\x87\x34\xa8\x95\xd2\x3f\x3a\xdd" - "\x6a\xaa\x39\x4f\xc3\xb8\x4d\x27\xd1\xb6\xda\xf3\xc8\xbf\xf6\xe3" - "\x72\x0d\x65\x23\xcb\x84\x92\x3f\xae\xf1\xe6\x05\x49\x03\xac\x9a" - "\x6e\x1a\x56\xdb\x4d\x36\xad\xf2\xe3\x72\x2e\xd7\x41\x3f\x5d\xe6" - "\x6d\x22\x2a\x5d\x29\xc2\x3d\x6b\xf7\x16\x40\x27\x0e\x78\xe7\x89" - "\xfd\x66\x6f\x53\x07\x35\x07\xba\xa9\x85\xfe\x4a\x5e\xe7\x29\xcf" - "\x5b\x4f\xec\xe7\x35\xeb\x04\xcf\xf2\x36\xd4\xa5\x78\xc7\xd5\xcc" - "\x67\x95\xcb\xa9\xaa\x8c\x52\x8b\x97\xd3\x80\xd3\x48\x57\x73\xfb" - "\x06\x87\x37\x74\xca\xb3\x5c\xfa\xe3\xce\x3e\x5a\xd6\x4c\x89\x2d" - "\x81\x1a\x6e\xbf\x29\x9c\x72\x86\xbc\x81\xa3\xe4\x2d\xfe\x9b\x47" - "\xb3\x74\xb4\xaf\xd3\xc8\xf2\xf6\xc5\xa3\x26\xaf\xf9\x22\x79\xf3" - "\x02\x74\x10\x75\x8b\xb5\x67\x52\xa1\xb7\x72\x5a\x02\x41\x3e\xef" - "\x94\x25\x3a\x6d\x29\x55\x8b\x68\x64\xdd\x79\xca\xd8\x72\x9e\x32" - "\x45\x57\xa6\x89\x7d\x6c\xf9\x6c\xea\x16\x5c\x53\xdb\xc8\x82\xb6" - "\x2b\x7f\xec\x64\xdd\xd7\xb6\x27\x93\xea\xbb\xfb\x7c\x6d\xbb\x3b" - "\xfb\x7c\x6d\xc1\x53\x7e\xf6\xb7\xf5\xd1\x43\x6b\xac\x4d\x34\x00" - "\x72\xd2\xc0\xfc\x5d\x75\x96\xcc\xab\xcf\x12\xdd\x56\x6e\x22\xfb" - "\x3c\x3e\x67\xf1\xb3\xb9\x5e\xf4\x0d\xdf\x9f\xa0\x9f\x0d\xc3\x35" - "\x15\xbf\x04\xa4\xcb\xf8\x0d\x6d\x3a\x1f\x23\xcd\x84\xb4\x24\x5c" - "\x13\x21\x2f\x61\x57\xad\xf0\xa3\xae\xfd\x9d\x26\x4a\x61\x7e\xd6" - "\xfd\x7b\xf7\x77\xb9\x7f\x1a\xf0\xd1\x33\x1d\x06\x5f\x2b\x1d\x3f" - "\xd3\x7f\xf0\xc4\x19\x8e\x97\xe5\x97\x78\xf5\x38\x12\x38\x76\x96" - "\x9e\xce\x38\x3c\xc6\xf5\xa2\xfe\x1c\x5c\xad\xf8\x41\x4e\x7f\x7a" - "\xcc\x28\xdb\xd9\xe3\x40\x9d\x3f\x7b\x08\xe9\xc2\x48\x47\xbb\xcd" - "\xfc\xee\x77\x27\xce\x98\x54\x9e\x4c\x13\x60\x06\x75\xf8\x90\xfd" - "\x99\x9b\x58\xc6\x3b\x4d\x56\x71\xb8\x60\x0c\xd5\xbe\x22\x9a\xb6" - "\xbc\x22\x1a\x95\xec\xfd\xac\xc6\x47\x0b\x8d\xf8\x42\x8d\xeb\xf0" - "\xee\x30\x46\x1d\xa6\x4b\x63\x21\xfb\x93\xfd\x0c\xf6\xdf\xd5\x07" - "\x22\xdb\x20\xdc\x0f\xd4\xf0\x58\xfa\x9b\xb2\x23\x49\xd0\x01\x35" - "\x2d\x6d\x1d\xf4\x56\x77\x7b\x92\xeb\x8f\x64\xf2\x86\x4e\xd0\xe8" - "\x74\xb2\xb1\x3d\x58\xff\x8a\xf0\x6d\xe4\xf8\x7c\xaf\x88\x0e\xf0" - "\xcb\x0d\xa7\x29\x2f\xe9\xbb\xe9\x94\xfe\xaf\x4e\xd2\xf5\x53\xde" - "\x0d\x11\xfa\x69\x7b\xb3\x6f\x7f\x84\x6e\x9a\xfd\xd0\xa5\xba\xe9" - "\xd1\x07\x94\x6e\x82\xec\x4b\x5d\x14\xf6\xe9\xe9\xe3\x62\xd2\x75" - "\x3f\x91\x47\x87\xc7\xa4\x07\xf5\xf4\x81\x31\xe9\x7e\x95\xfe\xc8" - "\x54\x43\xf7\xb5\x30\x1e\x4b\x59\xf7\x3d\x72\x3b\xeb\xbe\x96\x02" - "\x5d\xf7\x49\xfd\xf3\xc8\x75\xe2\x5f\xa0\x8b\x96\xb0\xbe\x79\xf8" - "\x0c\xe3\x2f\x3e\x22\x03\xf7\x64\xa4\xbd\xcd\x69\xd5\x7f\x25\x33" - "\x7e\x86\xde\x13\xac\xf7\x58\xe7\xb1\xee\xdb\x3c\x44\xb4\x6e\x7e" - "\x45\x1c\xab\x95\xb1\x7f\x1e\xee\xd5\x7f\x2f\x22\x6d\x1d\xd2\x5e" - "\xc4\x7b\xd6\x83\x4c\x93\xe6\xbc\xfd\xc4\xfe\x27\xb0\xb5\x42\x9a" - "\x29\x8b\x36\xa0\xbf\xf9\xbc\xe1\x1a\xd0\xd7\x9a\x40\xc5\xde\x12" - "\x3e\xc3\x1a\x66\x9f\xb4\xb6\x96\x92\x36\x96\xbb\x21\xab\x21\x67" - "\x5e\xe7\x17\x54\x16\x10\xa7\xf9\xdc\x1d\xe3\x90\xbf\xec\x7e\x8e" - "\x97\x94\xd0\x88\xd9\x30\xfb\x85\xb3\xce\x06\x2e\xe6\x6a\xe0\xa4" - "\xe2\xb3\x3c\xbc\xcd\x47\xdb\xca\x55\x5f\xcf\x3e\xca\x71\xd9\x4e" - "\x50\x5e\x3b\xe6\x7b\x41\x6e\x9b\x35\x5c\x4e\x7c\x0e\x86\x63\x15" - "\xf2\x75\xb3\x49\x73\x54\x1b\x67\x61\xdc\xd0\x0d\xc8\xe3\x6d\x0d" - "\x12\xe3\xec\xa3\x87\xc7\x34\x97\xee\xe7\xf2\xad\x4c\x1b\xe1\x76" - "\x19\x30\x12\x24\x0c\x93\x9c\x37\x3a\x90\x4f\xad\x9d\xa7\xec\x2d" - "\x68\x9e\xed\x27\xd6\xfb\xde\x76\xc0\x28\x3d\xa1\x60\x00\x96\xc0" - "\x18\x10\xf5\x4e\x87\x3f\x70\xa5\xf8\x07\xe0\x6f\xe3\xfe\xe2\x73" - "\x91\xbc\xdf\x06\xba\xa4\xb2\xaf\xbc\xb2\x45\x1f\x1e\x55\xff\x57" - "\x22\xfd\x6c\x27\xf8\xed\xe1\x91\x7c\x6e\x89\xcf\x73\x5e\xee\x2c" - "\x27\x68\x94\x61\x9c\xe7\xd4\x96\xfe\xef\x9e\xe5\x04\x6c\x5b\x9d" - "\x49\xec\x06\xfe\x23\xf9\x3c\x27\xf0\x5f\xc7\x7c\xa8\xb7\x29\xeb" - "\xe5\x47\x24\xcd\x4b\x38\x0d\x73\xc7\x23\x46\xff\x73\x7b\xb9\x2d" - "\x78\x97\xa7\x6c\x44\x81\xf9\xc7\xa3\x59\xfc\x1e\x69\x13\x39\xff" - "\x68\xe8\x31\x2f\xc6\xb0\x77\x4e\x84\x4d\x55\xcb\xc9\xac\x74\xda" - "\xec\xc9\x5c\x5e\xe9\xb4\xd9\xd4\xa7\xd3\x1e\xbd\xa0\x74\x9a\xa2" - "\xb1\xd2\x69\x8f\xfe\x5d\xe9\xb4\x47\x3f\x97\xfb\x62\xd0\x69\xfc" - "\x8e\xf5\x9a\xa1\xd3\xb6\x0c\x11\x47\x58\x77\x74\xb9\x1f\x3d\x6a" - "\xe8\xb6\xf5\x48\x63\xdd\xc1\x38\x2a\x3d\xf5\x48\xa6\xf8\x7f\x33" - "\x49\xf9\x1d\xf0\xbd\x83\xcf\x2f\xb4\xeb\xf7\x3c\x9e\x8c\x57\x3a" - "\x6e\x76\x46\x9f\x8e\x7b\xb4\xa1\xaf\x2c\xeb\xb8\xd9\x3f\x54\x3a" - "\x4e\xa5\xd7\x3f\xc2\x3a\xee\x91\x4c\xa6\x81\x0e\xdf\xc4\x6b\x78" - "\x7a\x7e\xa6\x63\x56\xa4\x8e\x8b\x96\xaf\xd9\xa5\x86\x8e\x63\xdd" - "\x86\xe7\x75\xd0\x69\x72\x0e\xc9\x72\xb6\x09\x34\x37\xe4\x8e\xfb" - "\x80\xdb\xcc\xf1\xd7\x98\x6e\x13\xce\xd0\x00\xfd\xec\x90\xde\xee" - "\xd9\x47\x0c\xdf\x47\xd0\xff\x68\x3c\x3b\xba\x2f\x46\x22\x7d\x9b" - "\xcf\xce\x7b\xcb\x4f\x90\xb7\x46\x94\xb7\x84\x8e\x53\x7e\x09\x74" - "\x45\xe2\xd3\x9f\x73\xdf\x62\xde\xf1\x23\xbe\xb2\xee\x39\x4d\x8f" - "\x0d\xcc\x0f\xd0\x55\x98\xab\x7f\x5e\x65\xc2\x3b\x67\xd4\x3b\xb9" - "\xc6\x70\xdb\x22\x8e\xaf\x07\x41\xe8\x67\xbe\x7f\x85\xf5\xad\xbc" - "\x4c\x7d\xaf\xc9\xfa\x60\x53\x61\x0e\x74\xcd\x59\x7a\x4c\xce\x4b" - "\x64\x7c\x9b\xd5\x71\x61\xfd\x51\x7f\x9f\xd4\xcf\xfb\xbf\x5f\xbe" - "\xfc\xe3\xc9\x97\x2f\xff\xf8\x2d\xac\x8b\xd0\x3e\x6b\xd8\x1d\x0d" - "\x67\x50\xc8\xc8\x77\x9a\xf3\x3d\xa0\xaf\xc5\x7c\xee\x1a\x2e\xe7" - "\x68\x36\x03\x26\xf3\xdf\x06\xe4\x93\x31\x43\xa0\x2b\x27\x2e\x23" - "\x8e\xd7\x12\x59\x76\x7d\x1f\x8d\x1f\xcf\xb9\xcc\xba\x5f\xaa\xb7" - "\x86\x64\xcc\xd8\xc3\xb0\x49\x39\xa6\xd1\xa6\xde\xf5\x8f\xc7\xdb" - "\xa0\x37\x7d\x11\x7e\xb1\x3c\x1f\xfb\x36\xc7\x35\x60\xfb\xb2\x4a" - "\xcd\x37\xaf\x87\x7e\x1e\xcc\xe7\x61\xf8\x6c\x4c\x7e\x78\x86\xe9" - "\xb0\x8c\x65\x96\x6f\x37\xca\xf6\xb7\xce\xc2\xf5\xea\x75\xb2\x8f" - "\x69\x00\x65\x66\x19\x65\x18\x36\xfb\x29\x62\x5c\xfe\xb6\x3c\x53" - "\x1a\xea\x60\x5d\x78\x3d\x6c\xd1\xc1\xaa\x9e\x02\xd2\xeb\xa9\xf0" - "\xd1\x63\x33\x2e\x77\x36\xa3\xff\xf6\xe5\x37\x5e\x79\xfb\x48\x6f" - "\x5f\x01\x7d\x45\xfb\x2e\x53\x6f\xc1\xd8\x2b\xaf\x37\xcd\xa8\xd7" - "\x79\xe5\x74\x2d\xd8\xf5\xf5\xe9\x9a\xa5\xd3\xb5\xc0\xf7\x15\x74" - "\x8d\x53\xcf\x9c\xf4\xaf\x5f\x8f\x5d\xaf\x67\x4e\x6e\xbc\x7a\x48" - "\xfe\xf5\x7b\x6e\xca\x62\xc4\xda\xec\x84\xec\xa8\x58\x75\x73\xaa" - "\x23\xe3\x17\x77\x4a\xb9\x9a\xb3\xad\x37\x5e\xb2\xda\x2b\x87\xae" - "\x9e\x73\x28\x7f\x2b\x8f\xef\x42\xf3\xd1\x9c\x46\x8e\xe3\x3a\x71" - "\xa5\x3a\x93\xad\x97\x69\xbd\x5c\xdc\x64\x8e\xd1\xc5\x31\xf9\xbc" - "\x36\xb4\xbd\x86\x63\x97\x1c\x2a\x60\xff\x7b\xcc\xa9\xa0\xe3\x9f" - "\xb8\x81\x63\x8e\xe1\x7e\x00\xee\x33\x95\x0e\x78\x22\x13\xf5\xf4" - "\x7f\x76\x72\xed\xa1\xe2\x6d\x65\x59\x49\xfd\xf9\xd7\xa3\x3c\x6c" - "\x8a\x67\xe5\xda\x94\x96\x72\x70\x06\xe6\x12\x7a\xbc\xbf\xc2\x2f" - "\x64\x0c\x38\x57\x1e\x9f\x27\xc1\xb8\x58\x38\x50\x3f\x07\x00\x7a" - "\x94\x83\xae\x4f\x6c\x35\xe8\x61\xa4\x23\x6d\x8f\x41\x0f\xd8\x37" - "\xa9\xde\xad\x21\x3e\xa7\x13\x50\x67\xb2\x9f\xf8\x77\x51\x79\xc8" - "\xa1\x60\x3f\xa9\xf6\x68\xb8\xbe\x9e\x3c\xb3\x9c\x37\x95\xf1\xbc" - "\xe9\xc9\x03\xfe\xe4\x43\x0e\x03\x0f\xb1\xd8\x66\xe2\xb3\xdf\xa3" - "\x31\x96\x6e\x50\x31\xf7\x12\xf8\x9c\x9c\x7c\xbf\x38\xd3\xa4\x68" - "\xf2\xe4\x38\xd1\xc9\xb1\x63\x24\xec\x54\xe0\xd9\xc6\x70\x7d\xb8" - "\xfa\x57\x64\x72\xdc\x0b\xbd\x3d\x4f\x8e\xd0\xd6\x1e\x9c\xa1\x75" - "\xd9\x4c\x06\xbe\x75\xf2\x4c\xeb\x93\x68\x7f\x81\x8a\x13\x2b\xf1" - "\xb1\x99\xd8\x9f\x5f\x4b\x39\x54\x2c\x56\xd8\x68\xcf\xa2\x76\x39" - "\x6f\xe2\x3a\x47\xa3\x7e\xc1\xf3\x24\xd8\x26\x28\xb7\xb5\x97\x6e" - "\x80\x2b\xba\x0c\xba\x3d\x39\x45\x8d\xcb\xaa\x8d\x81\x15\x36\xd3" - "\x61\xbf\x3c\x6f\x47\x19\x76\xd7\x97\x2a\x16\xf6\x93\xc7\x0d\xda" - "\xf5\xe2\x04\x7c\x38\x8f\xf2\x6f\x7a\x32\x64\xe0\x24\x65\x37\x85" - "\xcf\xef\x3e\xe1\xe7\x73\x43\x8a\xfe\x87\x53\xbb\xdc\x85\xf6\x4b" - "\xe9\x5f\x38\x26\x82\xfe\x89\xcc\x7b\x4c\x7f\x5e\xeb\x00\x5d\x1e" - "\x03\x2d\x2d\xea\xbc\x03\xdb\x33\x85\x73\xf1\x9c\xca\x78\x6a\x95" - "\x06\xcd\xf3\xcc\x6a\x9d\xac\xb0\x26\xa2\x1f\xd0\x5e\x1b\xdb\x6a" - "\x09\x46\xfb\xb9\x0c\xd3\x80\xe3\x4a\x72\xdd\xc0\xe7\x6a\xd4\xbd" - "\x3b\xb6\x4d\xab\xd5\x59\x12\x52\xbe\x25\x85\x47\x23\x62\x8b\xfb" - "\x4b\xec\x22\xa8\xce\x25\x17\x3a\xf7\x94\xf9\xcd\xfd\xe9\x00\xe6" - "\x41\x19\xa3\xd2\x24\xd7\x15\x60\x73\xcd\xfb\x44\x00\x37\xd5\xf7" - "\xf3\xb6\xa8\xb4\xb9\x7f\xc7\x15\x3c\x36\x77\xbc\x40\xdd\x7e\x97" - "\x8c\xb1\x82\xb6\xcd\xf3\x31\xcf\x19\x7c\xc6\xeb\x90\xca\x67\x7c" - "\xee\x76\xd6\x29\x06\xcd\x81\x7f\x4a\x97\x7b\x6e\xb1\x81\xbf\x91" - "\x9f\xfb\x8e\xf3\xf0\x9e\x4d\xa3\x3d\x28\x75\xad\x3a\x33\x34\xb7" - "\xd6\x90\x61\xae\x83\xfb\x99\x75\x0d\xd3\x43\xd1\x62\xee\x81\x68" - "\x58\x36\x93\x8a\x9b\xc9\x3c\x0f\x79\x5c\x1e\x4c\x42\x1e\x5f\x1f" - "\x8c\xb9\xb3\xd5\xbb\x5e\x3c\xd9\xcf\x5f\xfa\xe2\xa9\xfe\x98\x37" - "\x99\xdb\xd5\x87\x2f\xcb\xdf\xbc\xde\xfe\xe7\x77\x01\x97\x8d\x63" - "\xf0\x4a\x1d\x53\x32\x9c\xf1\xf5\x73\x6c\x5b\xc9\xeb\x80\x5f\xcd" - "\xb8\x73\x1e\xa3\xcf\xfa\x78\x71\x9e\x23\x12\x8e\x70\x49\x5c\x25" - "\x1c\xa5\x3b\xfc\xbc\xb7\x6d\x57\xfb\x2d\xf3\x36\x45\xb4\x3b\xd5" - "\xc0\xa7\x4f\x27\xcc\xdb\x13\xcb\x93\x5c\x37\xc7\xe2\xd3\x61\xb3" - "\x2e\x49\x3b\x41\xf3\xb6\xea\x78\xd9\xb8\x1f\xfb\x1b\xdf\x38\xce" - "\x25\xc7\x3e\xdd\xa8\x74\x08\xfa\xd9\x31\x7c\xa3\x3a\x47\x14\x50" - "\xf1\x4f\x7f\x3e\x42\x98\x7e\xc5\xb4\xe2\xf5\x74\xbf\x8c\xd7\x21" - "\xcf\x98\xff\x9c\xf7\xf8\xc5\xa0\xe2\x5f\xc9\x58\xb7\xba\x6f\xa0" - "\xbf\xb1\x38\x24\x63\xf9\xb9\x4a\xf8\xcc\x6d\x88\xe7\x7a\xd2\xf7" - "\xed\x70\x49\x88\x66\x06\x59\x26\x7e\x5e\xc2\x67\xe9\x55\x1c\xf1" - "\x9f\x97\x1b\xe7\xe7\x39\x76\x26\xc7\x7d\x85\x1e\x4a\xec\x8b\xdb" - "\xea\xc8\x63\x1b\x4b\xef\x5f\xda\x60\x12\x47\x95\xfc\xff\xfc\x8f" - "\x7c\x5e\x5e\xed\x63\x9d\x80\x4e\x48\x3c\x75\x82\x7e\xfe\xb9\x5a" - "\xf7\x31\x74\x94\xe3\x61\xde\xcb\xf2\xe9\x30\x50\x57\x07\xe4\x7b" - "\xc6\xa5\xba\xe4\xe7\x7f\x34\xe6\x2e\x7c\xfe\x4e\xed\x8b\xf5\xc1" - "\xf3\xd1\xcf\xe5\x5c\xb0\xaf\x0f\x3e\x06\x2c\x47\xf6\xa5\x7a\xc1" - "\x31\xc5\x90\xbd\xe2\x1b\xf9\x0c\xf7\xcf\xd3\xb8\xfe\xfe\xc6\x0b" - "\xe1\x7a\x98\xfb\xc9\x72\xd2\x1e\xbf\x6f\xe2\xef\xb3\x39\x76\x1b" - "\x6d\x30\x68\xa2\xda\x30\x3f\xb9\x33\x65\xef\xba\xbe\xb6\xcf\x97" - "\xb6\x6b\xc4\xfb\xf1\x11\xb4\xe1\xe7\x1c\x35\xae\xcd\x07\x7d\x0a" - "\xf5\x58\xb5\x2a\x0d\xb2\xf3\xb4\x58\x91\x47\x0a\xc7\xf9\x64\xc8" - "\x3a\xf2\x8e\xf4\xd1\x05\x9b\xda\xef\x9a\x8f\xf6\x3b\x2a\x54\x39" - "\xc7\x31\xc6\x25\x6e\x3b\xa3\x71\xdc\xcf\xb6\x86\x8a\xa9\x30\xff" - "\x7d\xc6\xd7\x7e\x13\xf7\xf1\xfc\xe7\xa5\x0e\xe7\xf8\x0a\x3d\x8e" - "\xa4\x40\x4f\x26\x75\xf6\x38\xa0\x17\x32\x4d\xa8\x07\xfa\xbf\x33" - "\xa0\xd7\xb9\xcb\xc0\x95\x71\x93\xf1\x39\xc5\xfc\xf8\xf4\xe5\x7a" - "\x65\xcc\x27\xc7\x00\xfc\x2c\xf8\x5d\xf5\x75\xed\x12\xd8\xe9\xed" - "\xfe\xca\x03\x69\xda\x12\x71\x84\xe3\x8b\x61\x2e\xd2\x5e\x05\xfe" - "\x1d\xb4\xca\x03\xdb\xfc\x31\x53\xfe\x32\xca\xc1\x9c\x99\xc4\x45" - "\x91\x5d\xa7\xe1\xba\x44\x8c\xe1\x38\xe3\x78\xce\xd2\x9f\x47\xf2" - "\x73\xe7\x12\x31\xbb\xcb\xfd\x54\x81\xb1\x47\xa8\x62\xe3\x3c\x55" - "\xdc\x1b\x4f\x28\xf1\x51\x3e\x4f\xc4\x71\xa7\x34\xcc\x85\xda\xb9" - "\xde\x7c\x9e\xcf\xa2\x3e\xe4\xab\x81\xbd\xd1\xc6\xf9\xfc\x89\xb7" - "\x0e\xc6\x2f\xb3\x9f\xbd\xd4\x76\xc6\xab\x33\xf9\x40\x9a\x81\xeb" - "\xa0\x40\x8e\xe9\x6b\xe2\x16\x32\x70\x43\xfa\x91\x2a\x95\x1e\xe2" - "\xf8\x87\xec\xeb\xd8\xe5\x7e\x7a\x98\x81\xab\x81\x03\xd7\xc7\xe7" - "\x37\x45\xca\xde\x1a\x8e\x3d\xc3\xf5\x71\x3c\x55\xe4\xcd\x35\xf0" - "\xfd\xba\xbc\x5c\x56\x2b\x04\x8f\x9f\xac\x7f\xed\x43\x89\x5a\x02" - "\xac\x53\x9e\xae\x3d\x5c\x1b\xe0\xf5\xee\xd7\x51\xc7\x6b\x9d\xc2" - "\x41\x5a\x8f\x23\x6e\x1f\x73\x19\xe4\x6f\x95\xfa\x61\xed\xde\xd7" - "\x34\x91\x0b\x3d\x81\x72\x3d\xb9\xbc\xd6\x04\xb9\x2d\x32\x37\x96" - "\xb6\xf3\x99\x4b\xe8\x9c\x22\x33\xf2\xd4\xb0\x9d\x85\xf9\x56\x50" - "\x7e\xbf\x02\xba\xc9\xb3\x64\x0c\x60\x14\x25\x99\x9d\x64\x6e\x8c" - "\x89\x53\xd5\x1f\x7f\x74\x5a\x0e\x56\x74\xae\x3d\x58\xd0\xe5\x2e" - "\x82\xfd\xff\x4c\xbf\x7b\xbe\xab\x87\x80\x9e\xc8\x57\x3d\x94\xe7" - "\x7b\x45\x8e\xcb\xe5\x35\xf6\xab\x59\x07\x8d\xb6\x51\xaa\x48\x3e" - "\x58\xc1\xfa\xb6\x33\xe5\x60\x01\x8f\x25\x28\xdf\x60\x94\xe7\x71" - "\x9d\xc7\x0e\xf4\x97\xad\xaa\x57\x1f\x16\x1d\x55\xf2\x5c\x74\xd4" - "\x90\xd1\x78\xf5\x94\x6c\x13\x9a\x6b\x04\x99\xbc\x18\xb7\x6e\x0b" - "\x52\x6a\xdd\xeb\x44\xd5\xcb\x45\x70\xe3\x72\xcc\x61\x86\xf2\xf7" - "\x2e\x8a\x72\x59\x46\x99\xbf\x37\x80\x5f\x12\x81\xcb\xc6\x8b\xa8" - "\xb3\x4c\xe5\xd3\xfd\xd6\x6d\xc8\x57\x82\x6b\xba\x30\x99\x68\x53" - "\x19\x59\x36\x69\x64\xae\x2e\xa3\x61\x48\x83\xad\xfb\xcc\x2c\x43" - "\x66\xe3\xe1\x50\x55\x47\xf4\x12\xea\x5d\x55\x26\x42\x1f\x63\x3c" - "\x77\x6b\x22\xf8\x75\xe8\x8e\xf6\xef\x51\x6d\x7c\x66\x8f\x61\x13" - "\xe2\xde\x13\xed\x77\xf0\xcc\x25\x67\xbc\x9f\x58\xb8\xb0\x24\x7f" - "\xd1\x5c\xbe\x64\x8e\x78\xee\x96\x94\xc8\xb5\x10\x1e\xff\x54\x9c" - "\x8a\x67\x5a\x79\xdd\x71\xe3\x60\x63\x1f\x7d\x81\xcd\x58\xfb\xd4" - "\xfd\xf5\xef\xe6\x39\x1d\xcf\x7d\xf0\x6e\xcc\xa1\xd2\x95\x0c\x26" - "\xe1\x73\x0b\x99\x62\xeb\x9b\x37\xa7\x64\x4e\xd1\x5d\xbc\x63\x96" - "\x12\xa7\x9e\x05\xb9\x31\xf5\x94\xf7\xd6\xa3\xc6\x9f\x80\x89\xf3" - "\xad\x4f\xdc\x2a\x92\xdb\x73\xd4\x59\xe9\x05\xdb\x8c\x35\xad\x7e" - "\xfc\x1c\x5b\xc3\x6b\x3f\xf6\xb0\x3c\xb8\x56\x92\xe9\x77\xcb\x5b" - "\x4d\x6c\x47\x96\xe1\x9e\xd7\x16\xe4\x1a\x99\x1e\x2f\xea\xa3\xf3" - "\xad\x18\xdf\x17\x04\x45\xe5\x5e\xcc\x8f\x16\xf4\xbb\x66\x13\xe9" - "\x23\xc2\x3e\x85\x6d\xb4\x30\xed\x72\x3e\x47\x9c\x9f\xdb\xc3\x3c" - "\x1b\x53\xee\x79\xd5\x67\x0b\xc1\xff\x45\xf6\xde\xf3\xbc\x7a\x9e" - "\xaa\x21\x46\x1c\xae\x85\xb3\xfb\xf5\x17\xa9\x38\x58\xad\x78\x7c" - "\xe1\x27\x8d\x98\xaf\xa1\x9d\xbf\x38\x41\x0b\x0f\x99\x6d\xb0\x11" - "\x86\xd2\x4e\xdc\x7f\xc2\x65\xf9\x5d\x14\x1f\xdd\x70\x66\xab\x19" - "\xda\x05\x5a\x26\x41\xa8\x3f\x32\xeb\x37\x89\xf8\x99\x44\x82\xdc" - "\x4d\x4d\x44\x0f\x0e\xb8\xca\x4c\xd6\x41\xa9\x96\x6f\x7f\x6b\x98" - "\xed\xee\x1f\x8f\xcd\x76\x95\x95\x42\x2b\x87\x82\x56\x11\x19\x3f" - "\xed\x54\xfb\x43\xb7\x94\x93\xf4\xa7\xa9\x3c\x15\xf7\x2c\xe5\x7a" - "\xb7\x28\xe6\xb3\xeb\x5a\x8a\x48\x73\x3d\x47\xa6\x77\xba\x7d\x26" - "\x8e\xd1\xcc\xf6\x33\x7f\xeb\xe2\x04\x15\x3f\x70\x10\x69\xa0\x97" - "\x53\x54\x88\x34\x65\x77\x16\xff\x52\x5b\x2b\xd2\xfa\xe0\x9b\x89" - "\xe1\xbb\x5e\x23\xd3\xb6\xb2\x76\x93\xd7\xfc\x63\xf2\xda\x03\x74" - "\x10\xf7\x71\xfb\x0a\x75\xb2\x2d\xcb\x30\xea\xdd\x1a\xc7\xeb\x32" - "\xe9\xe7\x4f\x4d\x67\xa9\xf8\x8f\xbb\xfb\x29\xc7\xe7\xbd\x3b\x53" - "\x3e\xf8\xb7\x2e\xf7\xb3\x66\x1f\xdd\x33\x51\xb7\x65\x30\xe6\x3e" - "\x8b\xf9\xff\x42\x19\xe7\x09\xef\x3f\xe5\xef\xc2\x20\x2d\xd3\xc8" - "\x13\xdf\x9e\xe1\x35\x78\xe1\x61\x3e\x10\x17\xff\xde\xce\x67\x5b" - "\xfa\xf1\x83\x19\xe0\x75\xde\xc1\x7b\x91\x49\x83\xa0\x7f\x5c\x17" - "\x44\x4f\xd8\x4d\xe9\x10\x27\x53\xd8\x44\xdf\x0e\x5d\x14\x79\xcd" - "\x1d\xe7\x65\x4c\x53\xd6\x35\xbf\x99\xf7\xb1\xc9\x1b\x3c\xe7\xf1" - "\xae\xd1\xa8\x05\x76\xa5\xb7\xf6\x9c\x47\xc5\x3e\x0d\x53\x33\xfd" - "\x95\x9a\x9d\xff\xb7\xdc\x5b\xfe\x57\xa4\x0b\x19\x0b\xbb\xe7\xa2" - "\x98\xe5\x35\xff\x1b\xf1\x77\x8a\x78\x8c\x03\xdd\xed\x67\xe9\xd9" - "\x7f\x7c\x04\x38\xef\xfc\x07\x60\xc9\x98\x69\xe3\xe8\x20\xee\xd1" - "\xa6\xde\xf1\x2f\x6e\xac\x99\x04\xcf\x7a\xab\xf3\x31\x93\x86\xb1" - "\x94\x63\xdb\x61\x0c\x1d\xc3\xed\xc2\x73\x16\x3f\xe3\x3a\x92\xaf" - "\xd6\x55\x9e\x2d\xd6\xd0\x63\x3c\xb6\xe6\xf1\xb8\x89\xf4\x59\xf5" - "\x17\xe5\x58\x3b\x43\x7f\x9e\xa2\x3f\xe7\xea\xcf\x13\xf5\xe7\x1c" - "\xfd\x99\xd7\xe5\xf5\x31\x79\x51\x75\xaf\xbd\x60\x1a\x70\x14\xcf" - "\x5b\x8d\xbe\x00\x3e\x03\xad\xce\x95\x72\x6c\xd7\xf1\x18\xa3\xe3" - "\x95\xa5\x3f\x1b\xf8\xdc\x60\x0d\xad\xfc\x5f\xc2\x67\xb1\x3d\x1a" - "\x9f\xc5\x59\x11\xf8\x90\xd5\x99\xf3\x75\xf0\x49\xb3\xf2\x77\x22" - "\xfe\x07\xf8\x30\x2e\x9c\x86\xfa\x77\xc7\xe0\xe3\x31\xf0\x89\xcb" - "\x6f\x4b\x44\x3b\xdb\x35\x8b\xbf\x21\xe3\x3a\x0f\x60\x9b\xa5\xbe" - "\xdb\x88\x53\xb8\x38\x74\xb9\x38\x85\x90\x05\x8c\xdb\x25\x68\xff" - "\xe2\x26\xdd\x7e\x3b\xa0\xec\xfc\x92\x31\x86\xef\x18\xda\xda\x50" - "\xa5\xda\xba\x6b\x0d\xc7\xea\x5b\x46\xdf\x74\x39\x45\x3b\xe6\xdd" - "\xff\xc9\x73\xc3\x48\xb8\x45\x25\x8b\x17\x3f\x73\x97\xbd\x68\xce" - "\x82\xb9\xf6\x11\x85\xf6\xc5\x8e\xf9\xf3\x4a\xe6\x46\xfb\x53\xa4" - "\xe9\xdf\xef\x91\xe7\x44\x78\x2e\x25\xe7\xd2\xe0\x7f\xa9\x27\xa5" - "\x4f\x5e\xc9\x05\xe1\x2e\x29\x60\x9d\x5b\xf7\x92\xfa\xce\x13\xf0" - "\x69\x34\xc6\x10\x63\xfe\xcb\x63\x08\xd2\x8f\x63\x9c\x9c\x1d\x91" - "\xce\x79\xfd\x46\x1a\xc3\xd7\x75\xd3\x80\x13\x54\xf2\x4b\xae\x33" - "\x2e\x0d\x2f\x8a\xad\xb0\x9b\xf8\x1b\x16\x26\xe8\x14\xc1\x71\xb7" - "\xf8\xfc\x25\xca\x89\x93\xf4\x9c\x9c\x57\xcc\xc2\xb3\x9a\xb3\x09" - "\xe0\xf8\xdc\x43\x28\xb3\x0d\x69\x66\xb6\x21\x30\x0f\x6c\xe7\x72" - "\x48\x7f\x86\xe3\x60\x20\xdd\xa2\xc7\x13\xe3\xb4\x55\x1c\xa7\x02" - "\x69\x69\x11\x69\x2f\x23\xcd\x86\x34\xbb\x0e\x6f\x3b\xd3\x19\xcf" - "\x39\xfa\x3a\x19\xe7\x79\x5f\xaf\xb7\x3c\x12\x67\xfe\x86\xcb\x1d" - "\xb7\x65\xd9\x67\xcd\xfc\xfe\xb8\x1f\x3f\xb9\x70\xc1\xbc\x14\x92" - "\x64\xcf\xc4\x70\x9c\x75\x87\xf3\x96\xbb\xec\xc5\x73\xe7\x2e\xb2" - "\x2f\x9d\xbb\xa0\xc4\x3e\x67\xe9\x9c\x65\x29\x34\x6f\xe1\xa2\x27" - "\x39\xca\x02\x77\xcb\xe2\xfc\x27\xe7\xfd\x9c\x9d\x5e\x54\xee\x94" - "\x28\x3b\x61\x16\xeb\x36\x3d\x2e\xc9\x91\x2a\xb6\x21\x93\x3d\x79" - "\xb8\xe7\x78\x5d\x36\x5c\x1b\xf1\x3b\x80\xdf\x7e\xfc\x8e\xe1\x77" - "\xf4\x34\xad\x58\x83\xeb\x9e\x2e\xf7\x92\x42\xc3\x5e\xe9\xe3\xa1" - "\x25\x4e\x83\x87\x60\x5f\xec\x51\xe3\xdb\x92\x86\x96\x90\x94\x9f" - "\x5e\x9e\xaa\xba\xd8\xc7\x53\x1c\x6f\xb4\x85\x7d\xba\x96\xe0\x7d" - "\xb7\x5c\xab\xe4\x35\x93\x64\xa6\xdb\x49\x5a\xb6\xa5\xfe\x15\xd1" - "\xc4\xb1\x72\x70\x6d\x04\xbf\x34\xa9\xf8\x34\x4b\x33\x90\x6f\x38" - "\xea\x38\xa0\xea\xd0\x9f\x87\x88\x23\xfc\x0d\x97\x13\xfa\x33\xc3" - "\x02\x8c\x3b\xf9\x9e\xaf\xfa\xde\xa9\x55\xff\xc6\x9b\xa9\xef\xdd" - "\xd2\x66\xbd\x0e\x0f\x68\x51\x5e\xe7\x96\x73\x29\x39\x77\xe6\x35" - "\x62\x6b\xc2\xdd\x02\xf8\x9c\xd3\x12\x1f\x6d\x95\xf1\x2f\xcb\xbb" - "\xa1\x23\xbe\xf7\x3d\xaf\x53\xe6\x4f\xe0\x35\xe4\x69\xc5\x42\xe3" - "\x38\xe4\x5a\xe2\xd3\xad\x5c\x4e\x58\x3c\x79\xda\x86\x81\x39\xca" - "\x66\xe0\xb8\x83\x4b\x1b\x74\x98\x41\xa6\xed\x69\x5a\xf2\xb0\x9a" - "\x87\xaf\x58\xa3\x6c\x89\xa5\x7b\x0c\x5f\x4b\xc8\x68\x26\x9e\x1b" - "\x0d\x1d\xe0\xa3\xa5\xd5\xba\x5f\x9c\x47\x6f\x7f\x48\x7f\xde\xaf" - "\xe3\x98\xc0\xb1\x50\x80\xff\x51\xee\x3b\xd8\x2b\xfb\x71\x7f\x0c" - "\xf4\x69\x52\xf4\x71\xca\x38\x07\xb0\x9b\xf8\xfd\x31\xfe\xde\x0d" - "\xde\x1d\x53\x71\x46\x96\x8e\xe1\x36\xf7\xf9\xce\xd6\xe6\x00\xd7" - "\x3b\x79\x8f\x19\xb2\xb4\xdf\x7b\x91\xe5\x73\x69\x16\xe0\xed\x36" - "\xf4\x0e\xeb\x99\xfc\x30\xe4\x54\xce\xa7\x9c\x45\x86\xbe\xe9\xe3" - "\x03\x67\x79\x3c\x5d\x12\xaf\xdf\x15\xfd\x9d\x7f\x17\xee\xe7\x1a" - "\x81\xd3\x6e\xd9\x07\x1c\x8f\xf5\x62\xef\xbc\xad\x47\xe9\x48\xe7" - "\xb1\xde\x39\xa6\x8e\x07\xc7\x76\xf7\x31\x6e\xdd\x72\xdf\x5f\xd7" - "\x1b\xce\x90\xa1\x37\x0c\x38\xd6\x04\xa1\x59\x9d\xf8\x57\xb1\xcf" - "\xc9\x7b\x24\x3c\x5e\x4a\x7b\x04\x70\x06\x5d\x50\x67\xe0\xb4\xca" - "\x7d\xe0\x5d\xe7\x1e\xfe\xe6\x9b\xb4\x69\xdd\xcf\xfd\xdf\x3e\x5d" - "\xb4\x6c\x46\x24\x4c\x61\xd9\xe7\x64\xb8\xac\x8f\xd8\x26\xc9\x0f" - "\x9b\x39\x0e\x8d\x53\x1f\x5f\xa0\x83\x97\x95\x1b\xb8\x82\x86\x47" - "\x0c\x7c\xf5\x6f\x8e\x1d\x41\x3d\xbe\xe9\xe1\x1e\xf6\x05\x6f\x54" - "\xfd\xb9\x42\xea\x1b\xbc\xdb\x85\xb2\x07\x7c\xf4\x5c\x9a\x2e\x43" - "\x4d\x28\xbf\xeb\x70\xd9\x44\xe4\x59\xd6\xaa\xfb\x33\x1f\x45\xff" - "\x1e\xeb\xe3\xfd\x25\xcd\x11\xeb\x3c\xc7\x54\x1f\xfe\xb8\xfc\x04" - "\x2d\xb7\x45\xa4\xeb\x7d\x7b\x78\x06\xd2\x9b\xd5\x9a\xc9\x3e\x3d" - "\xbe\xdf\x72\xe5\xbb\xaa\xe3\xc8\xba\x80\xcf\xeb\xb1\x8c\x4b\xda" - "\xcb\x3e\x5e\x3e\xc3\x18\x2f\x00\x6b\x8f\xa4\xf9\x10\x71\x80\xe9" - "\xa4\xe2\x7d\x3c\x77\x51\xd1\x69\xb9\x33\x8a\xf6\x3c\x6e\xa2\x1e" - "\xa6\xd3\xa0\x55\x42\x1b\x14\x48\x10\xf9\xcb\xcc\xc4\xf2\xc2\x32" - "\xce\x7b\x83\xe0\x0f\x69\x57\x29\xba\x2d\xdf\x6f\xd0\xcd\xe8\x3b" - "\xa6\x93\x8f\x96\x67\x32\x6d\xa3\xdb\x38\xe0\xe8\x09\xa3\xed\xa0" - "\x29\xc7\x34\xc5\x73\x93\x2e\x17\x4d\x9e\xa1\xec\x3b\xb2\xe4\xcf" - "\x87\xcd\xdf\xa7\xc3\xce\x31\xa4\x68\xbb\xc2\xe6\xa3\x12\x67\xc4" - "\xbc\xe4\x08\xd3\x97\x65\x05\x78\x96\xe8\xb1\xb7\x8e\x28\x3f\xa6" - "\x25\x4d\xa2\x72\x5f\x89\x94\xe5\x25\x32\x46\x0a\xc7\xed\x3d\xca" - "\x34\x62\xbd\xc8\xb2\xc4\x32\xc0\xf2\xa4\x68\xb4\xa2\x24\x82\x46" - "\x8d\x4c\x1f\x9d\x4e\x7b\x62\x74\xf9\x5c\x7b\xd1\x38\xa5\x8b\xed" - "\x99\x23\x0a\x47\xcb\x40\x37\xf6\x7b\x27\xdc\x65\x9f\x31\x6e\x84" - "\xd3\x31\x72\x9a\xba\x4c\x98\x31\x85\xaf\x29\xd1\xf3\x3a\x3b\xea" - "\x39\x1e\x3d\x37\x5c\xe5\x50\xfa\x63\x45\xc0\x97\x70\xb5\xfc\x86" - "\x08\xc7\x9d\xad\x5a\x40\x14\x06\xde\x1b\x4e\xa3\x4f\x2d\xfb\xd2" - "\x39\xce\xf1\x74\x27\x71\x5c\xf4\x2f\xeb\xf1\xae\x0e\xe9\x83\x8a" - "\xf9\xfb\x08\x7f\x13\x5a\xf2\xbe\x74\x5e\xb3\x11\x95\x3b\x5a\xfd" - "\xc9\xa7\xda\xf1\xdb\xed\x4f\xfe\xa0\x7d\xd2\x2d\x2e\xd1\xe5\x2e" - "\x9d\x62\xb4\x8b\xd7\x76\x40\xa7\xf4\xe9\x4e\x11\x66\x1a\xe5\x3b" - "\x39\x16\x39\x60\x27\xf2\xda\x4e\x29\xda\x5f\xbc\x5b\xcd\x5f\x4b" - "\xc1\xff\x4b\x74\x7b\x86\x66\xe0\x19\xf6\xdf\xf7\xe5\x1a\x97\xe6" - "\xb6\xc9\x18\xe6\xda\xea\x5b\x1f\xc4\x7c\x60\xb7\x01\x13\xb0\xae" - "\xd2\xfd\x1e\x24\xbc\xaf\xeb\x57\xab\xad\x7d\x2f\xc3\x9a\xa0\xe2" - "\x42\x42\xc6\xcb\xeb\x4d\x5a\x5e\xaf\x9f\x0c\xde\x0d\x5a\x95\xc6" - "\x7e\x34\x79\xe0\xbd\x72\xce\x63\xbc\xab\x72\x6b\xbe\x2a\x93\x16" - "\x44\x3f\xa6\x29\xfb\xb9\x83\xf5\x27\xe6\xae\x2b\xc7\x1a\xe3\x9a" - "\x1c\x0f\x4d\x54\xae\xe6\x33\x2b\x1f\xe3\x72\xe7\xdd\x66\x82\xce" - "\x6e\xba\x31\x5d\xce\x51\x82\x9a\x3b\x81\x94\x2f\xf3\xca\xdb\x0d" - "\x1d\xcb\xfb\xa5\xd6\x55\xc2\xcf\x6b\xc4\xd6\x90\xf0\xcb\x58\xfb" - "\x3c\x76\xd0\x69\xf2\x96\x76\x95\x7b\xe5\x37\x38\xf9\xbb\x22\x01" - "\x7d\xdc\x08\xab\x71\x03\xf5\xfb\x13\x6f\x2d\xc0\xf8\x90\x70\x9a" - "\x60\xeb\x02\x7f\xa6\x0d\xef\xb5\x68\xa0\x95\x97\xc7\x49\xa6\x4f" - "\xca\xfe\x6d\xec\x03\xc3\x6d\xb5\x86\xd0\xe6\xc8\x76\x99\x34\xdf" - "\x06\x37\xda\x65\x42\xbb\x9c\x67\x58\x66\x82\xec\x9b\x04\x79\x1b" - "\x22\xe3\x59\xcb\xf9\x79\x99\x3d\xb2\x8d\xac\xff\x55\x1b\xca\xc6" - "\xc7\x6b\xa3\x30\x71\x1b\x99\x06\x65\xd7\xe9\xf2\x26\xf1\x64\xfd" - "\xd1\x41\x2b\x8f\x0d\x5a\xc5\x3e\x41\xfb\xd2\xa1\xdf\x26\x70\x1f" - "\x62\xfc\xac\x66\x3c\xe3\xf5\x17\xc3\xd3\x61\xf9\xac\xab\xca\x0b" - "\x80\xcb\xae\xf8\xf4\x2e\x6b\xbe\x3c\xbd\xcb\x7e\xc5\xe5\x19\x0f" - "\xde\xdf\xb1\x86\x4c\xd0\xc1\xa7\x76\x63\xbe\x56\x11\xaf\xde\x41" - "\xab\xb6\x32\x5e\x71\xdf\x09\x96\x17\x5d\x07\x81\x0f\x05\xe4\x44" - "\xb0\x4e\xea\x72\xbb\x72\x0d\x7d\x64\x4d\xb0\x27\x4a\xfd\x60\x12" - "\xd5\xf1\x60\x58\x57\x55\xf3\x3e\xd7\x04\xd4\x1f\xf7\xbd\xc6\xdf" - "\xee\xa8\xd8\x47\xda\xea\xef\xde\x68\x4d\xa0\xbb\xfd\x89\xdf\x4d" - "\xb1\x3a\x43\x19\x4c\x43\xc0\x74\x42\x8e\x1f\xe2\x79\xaa\x5a\x1b" - "\x71\xc1\xfe\xff\xa5\x8c\xcf\xe4\x4f\xde\xa7\xef\x1b\xb9\x30\xfe" - "\xd5\xd8\x8d\xb5\x79\x3c\xb7\xf9\xe8\xef\x0e\x25\x97\xdf\x7c\x5d" - "\xac\xfd\x60\x8f\xe6\xb6\x0a\xfb\x72\x2b\xec\xc8\xf2\x95\x9a\xe0" - "\xef\x39\x7c\xb0\xa7\x8f\x4f\x94\xbf\x94\xc1\x27\x5d\xee\xf2\x8c" - "\xf8\x3c\x50\x3e\xe9\xf2\x3c\x50\xfe\x0d\x7e\xcf\x74\x57\x73\x95" - "\xf2\x22\xc3\x4e\x11\xab\xbf\xf9\xba\xbd\x4c\xd6\x4f\xaa\x6e\xa6" - "\x49\x0e\xe3\x3f\x05\x74\x29\x47\xde\x1a\x43\x0f\x30\xbf\x58\xc3" - "\xfc\xad\x0b\x92\x3c\x8d\x77\x18\x57\x4a\x2c\x6a\x1d\xfc\x40\xb1" - "\xfc\x7e\xa5\x7b\x45\xb5\xdf\xe5\xd8\xcc\xdf\x69\x0d\x24\xef\x2b" - "\x45\x9e\x56\x1f\x35\xaa\xfd\x56\xcb\xbe\x12\xc0\x70\x6e\x52\xfe" - "\xd0\x16\x19\x2f\x0a\x32\xcd\x31\xa2\x58\xae\x91\x96\x0e\xbc\x39" - "\x5e\x14\xe6\x3b\xab\xd2\x7a\xc7\x25\x77\x0e\x74\x85\x90\xb6\x18" - "\xc6\xa5\x61\x9d\xa0\xdd\xcb\x26\xad\xe1\xe2\x68\x1b\x71\x9b\x2f" - "\xae\x1e\xda\xf0\x8b\xdb\xc8\xfc\x07\xdb\x13\x54\x7c\x07\xa5\xaf" - "\xfa\xbe\x99\xfe\x2b\x9b\x4c\x4c\x07\x1f\xad\xb2\x2b\xda\xad\x2a" - "\x30\xfa\xc7\x47\xae\x23\x52\x77\xae\x7e\xb4\x7d\x7a\x48\x7c\xa9" - "\xd6\xb9\x57\x41\xff\x3d\x53\xa3\xde\xaf\x68\x8f\x5d\x03\x62\x7b" - "\xde\x3e\x7f\xb1\xbd\x70\xe1\xd2\x05\xc3\x87\x47\xcd\x95\xcc\xea" - "\xbb\xb8\xab\x36\xa9\xf1\x74\xd5\x11\x03\x6f\xb6\x4b\xf0\x8c\xf6" - "\xaf\xb8\x24\x96\xfd\x94\x7c\xdd\xcd\x3d\x3f\x8b\xfa\xee\x6f\xa7" - "\x29\xb7\x47\x3c\x7e\x8f\xa6\xdc\xf1\xbd\xfc\x07\xe7\xce\x29\x5c" - "\x16\x91\x7a\x67\xe4\xba\x61\xd5\xeb\xa8\x3b\x71\xe8\x3d\xd0\x15" - "\x09\xd3\x56\xf0\xd8\xe2\xfe\xb0\x2c\x24\x4e\x41\x5f\x67\x43\xc6" - "\xf2\x9b\x4b\x42\xd4\x0c\x5d\x26\xbe\xc9\x3a\x7c\x80\x3a\xdb\x09" - "\x7b\x0a\xbc\x65\x45\xdb\xfd\xb0\xeb\x2e\xf0\xfa\x0c\xca\x7d\xde" - "\x52\xc3\x31\x9d\x3f\xd0\xfd\x1a\xdc\xb5\x48\xbf\x06\xd7\x4f\x70" - "\xbd\x0a\xd7\x3f\xda\x17\x60\xde\xc3\xbe\xf4\x4b\xd8\x97\xde\xfd" - "\xae\xf4\x07\x0a\x94\x13\xfb\x04\xe1\xfd\x2c\xb6\x41\x7c\xb4\xda" - "\xcc\xeb\xe0\x9c\x17\x69\x5b\xec\x4f\x51\x16\x5f\x85\xdc\x1b\x74" - "\xd7\x8a\xca\x0f\xfc\x62\x73\x1e\x7f\x6f\x2d\xe3\x24\xad\x4e\x48" - "\x4c\xf8\x9c\x12\x6d\x96\xd4\x2e\xf7\x6a\x94\x5d\x30\x8b\xe9\xd4" - "\xdf\xb7\x68\xe5\x37\x80\x63\xec\xc3\x3e\xdb\x70\x2d\x49\xfb\x56" - "\xb7\xe7\xea\xe4\xb8\xb0\x7a\x56\x84\x4d\xc7\x7b\xd3\x29\xca\x3e" - "\x11\x61\x65\x9f\xae\x2e\x31\xe4\x00\xf7\xe5\x06\x9f\x46\xc5\xd7" - "\x5b\x50\x32\x77\xd1\xdc\x42\xfb\x88\xc5\x29\x14\x11\x5d\xcf\x31" - "\x77\x81\x7d\xd1\xdc\x67\x9f\x9b\xbb\x58\x46\xc6\xe3\xb7\x51\x63" - "\x3e\xf4\xfd\xef\x33\x8c\x73\x5f\xf6\xa1\x4c\xdf\xd5\x5f\x70\x4c" - "\x36\xb1\xf6\xf7\xdb\xd8\x77\x47\xcd\x37\x44\x66\xf4\x7c\xe3\x79" - "\x15\x77\xa2\xe2\x03\x9f\x9a\xeb\x3c\x2f\xbf\x63\x7d\x82\xd6\x54" - "\xf7\xc5\x7f\x5f\x33\x1e\xb4\x34\xe9\x74\xbb\xd0\xe5\x5e\x93\x6d" - "\xd0\xcd\x47\xcf\x7b\x74\x5b\xaa\x43\xea\x0f\x8c\xb1\xd0\x7f\x51" - "\xe3\xab\xfa\x06\xed\x1a\x8e\xcb\x91\x28\xd7\x93\x93\x3f\x68\xe3" - "\xba\x18\x26\xea\xf3\xa0\x7f\x7c\xd0\x9b\xac\xdf\x2a\x0c\x78\xa8" - "\x33\x93\xeb\xd3\xe7\x41\xd7\x9f\xa6\xe7\xe5\x9a\xb3\x56\xf1\x41" - "\x1b\xeb\x14\x8e\x21\xa2\x55\x02\x8e\xdc\xa3\x7d\xde\x23\xd7\x61" - "\xf9\x1b\x04\x80\xc5\xeb\xc0\xd0\x73\x01\xfe\x5e\x31\xa7\xa9\xd8" - "\x70\xab\xd7\xf1\xda\x33\xea\x3a\x0e\xfc\x83\x7d\x67\x1b\x9e\xf7" - "\xb0\xdd\xc9\x70\x7d\xb4\xe6\x00\xc3\x53\xb1\xef\x9e\x1f\x06\xde" - "\xc9\xe8\xb3\x9f\x9e\x2f\x88\x98\x97\x31\x3e\x12\xcf\x00\x70\x91" - "\x71\x56\x95\xaf\xa9\x6c\x37\xeb\xcf\x4d\x7a\xdb\x8d\xf6\x00\x1e" - "\xf4\xdf\xea\x34\xc3\x6f\xc2\xa7\xb7\x9b\xf1\x63\xdc\x23\x71\xd6" - "\xf1\xad\x61\x7c\x51\x6e\x5b\x84\x6c\xf3\xba\x4c\x12\xd2\xf6\xf7" - "\xf9\xb0\xaf\xa1\x58\xbd\xb1\x70\x81\xbd\x68\xfe\x82\xa7\xf3\x97" - "\xce\x79\x7a\x6e\xfe\x73\xc5\x23\xed\xcf\x2d\x78\xa2\x68\xe1\x93" - "\x4f\x33\xd7\x2c\x2e\x79\xee\xc9\xa7\xed\xac\x59\xf2\x27\x4e\x99" - "\x92\x7f\xcf\x43\x33\x1f\x4e\xa1\x7b\xe6\x20\x0d\x33\xff\x29\x59" - "\x23\xd5\xab\x07\x27\x4d\xf8\x69\xfe\x84\xe9\x0f\x4d\x9b\x25\x0f" - "\xbd\xf4\xbe\x9f\xb8\x20\x7e\x86\x28\x3e\x4c\x03\x2f\x1d\x47\xff" - "\x26\x9d\xa0\xca\xb1\x2a\x5e\xfa\x0b\x45\xd1\xf1\xd2\x5f\x00\xd2" - "\x2f\x6c\xc5\xef\x00\xd1\x2f\xfc\xf8\x41\xbb\x57\x66\x29\xfe\x4a" - "\x7e\xbc\xcb\xfd\x42\x4d\x1f\x7f\x55\xca\xb3\x94\xec\xa7\xa4\xd6" - "\x67\x5f\x80\xfe\x5f\xbd\x3f\xf2\x5d\xdf\x7c\xf2\x85\xa3\xbd\xf3" - "\xc9\x5e\x9d\xf2\x42\xef\xdc\x12\x69\xed\x98\x57\x26\xf3\xbc\x52" - "\xad\x27\x55\x8e\x93\x3c\xd5\xaf\x7c\x5b\xc8\x98\x57\xb2\x6c\xcb" - "\x3d\x29\x39\xff\xf8\x45\x76\xa4\x8c\xcb\x35\x7d\x5d\xc6\xb9\x9c" - "\x5c\xbf\xb3\x88\x74\x5e\xd3\x86\x7d\x7c\x1c\xb6\x02\xc6\xaf\x2e" - "\x21\x92\x45\xba\xc2\xe9\x17\x4e\x5e\xe3\x66\xbb\x59\xe7\xa7\x41" - "\xa7\xe9\x17\x7b\x85\xfb\xf9\x26\x35\xa7\x7c\x3e\xcc\x7a\x5d\xac" - "\x1e\x7a\x0f\xfb\x16\xf1\xdc\x09\x75\xee\xea\xe3\xd9\xca\xb1\xcc" - "\x0b\x7d\x73\xd9\x5f\x44\xe9\xff\x4e\xf9\x5d\xc2\x5f\x1c\x37\xe2" - "\x3d\x94\x0c\x27\x93\x79\x78\x35\x6d\x32\x09\xe8\x9b\x5f\xac\xe3" - "\x3a\x98\x9e\x3e\x7a\xa1\x01\x79\xcd\x7d\xf4\xab\x48\xeb\xa5\x9f" - "\xbe\xce\x62\xac\xb1\x28\xbc\x2b\xc7\xf5\x47\xab\xf8\x74\xaa\x28" - "\xf8\x4a\x3a\xb9\x29\x89\x65\xd2\xa0\xd7\xa5\xb4\xaa\xd8\x76\x29" - "\xad\x2a\x2e\xf4\xd1\xea\x85\x1b\x2e\xa5\x55\x45\x6b\xc4\xbe\x92" - "\xbe\x8e\x52\x39\x8e\x69\xc6\x3c\x86\x76\xaf\x03\x9f\xd5\xf4\xd1" - "\xaf\xd2\x72\x29\xfd\x2a\x87\xc5\xa7\x5f\x05\x9f\xaf\x8a\x84\x53" - "\x17\x6f\xdc\x18\xb4\xca\xa4\x9f\x07\xab\xfc\x25\x7f\xeb\x9e\xf1" - "\xd8\x68\xd2\x1c\x1b\xdd\xf8\xe1\xca\xf3\x88\x3e\x5b\x5c\x04\x75" - "\xfa\x56\x37\x62\xce\xcb\xeb\x4a\x97\x19\x8b\x8e\x1b\x6b\x1e\xb8" - "\x6f\xe5\xb9\x33\x7f\x13\x8a\xd3\x99\x9e\xfc\x8d\x31\xf0\x7b\xab" - "\xb2\x4b\x2b\x7b\xbf\xff\xd1\x79\xd3\x83\x05\x89\xab\xc8\x7e\xb8" - "\xf6\x0e\x4e\x0f\x82\x87\x72\x39\x9d\x7d\xb7\xfa\x83\x99\x1f\xce" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Fri Jun 1 18:57:57 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 88F56106566C; Fri, 1 Jun 2012 18:57:57 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7225B8FC18; Fri, 1 Jun 2012 18:57:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q51IvvLf037167; Fri, 1 Jun 2012 18:57:57 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q51Ivv2f037164; Fri, 1 Jun 2012 18:57:57 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201206011857.q51Ivv2f037164@svn.freebsd.org> From: Andrew Gallatin Date: Fri, 1 Jun 2012 18:57:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236416 - stable/8/sys/dev/mxge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jun 2012 18:57:57 -0000 Author: gallatin Date: Fri Jun 1 18:57:57 2012 New Revision: 236416 URL: http://svn.freebsd.org/changeset/base/236416 Log: MFC 236212: Update mxge(4) firmware to the latest version available from Myricom (1.4.55). Sponored by: Myricom, Inc. Modified: stable/8/sys/dev/mxge/eth_z8e.h stable/8/sys/dev/mxge/ethp_z8e.h stable/8/sys/dev/mxge/rss_eth_z8e.h stable/8/sys/dev/mxge/rss_ethp_z8e.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/mxge/eth_z8e.h ============================================================================== --- stable/8/sys/dev/mxge/eth_z8e.h Fri Jun 1 18:33:40 2012 (r236415) +++ stable/8/sys/dev/mxge/eth_z8e.h Fri Jun 1 18:57:57 2012 (r236416) @@ -1,6 +1,6 @@ /******************************************************************************* -Copyright (c) 2006-2011, Myricom Inc. +Copyright (c) 2006-2012, Myricom Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,7495 +28,7547 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ ***************************************************************************/ -static unsigned int eth_z8e_uncompressed_length = 375636 ; -static unsigned int eth_z8e_length = 119802 ; -static unsigned char eth_z8e[119802 + 1] = - "\x78\x9c\xec\xbd\x7f\x78\x54\xd5\xb5\x3f\xbc\x32\x99\xc8\x24\x06" - "\x26\x62\xc4\x29\xc5\x76\xb0\x41\xa3\x05\x89\x16\xdb\xd4\x42\x0d" - "\x02\x1a\x2c\xbf\x14\x6c\xa3\xa2\x09\x1a\xe8\xa0\x11\x22\x44\x18" - "\x20\x64\xc2\x80\x36\x41\x20\xa9\xa0\x46\x09\x09\xbd\xf2\x23\x56" - "\xac\xd8\x02\x62\x45\x19\x24\xf6\x4b\x7b\x93\x0c\xed\x8b\xf7\x9b" - "\xdb\x17\x6f\x47\x6e\x84\x94\x1b\x60\x4a\x06\x32\x26\x33\x67\xbf" - "\x9f\xb5\xf7\x39\xc9\xcc\x30\x41\xb9\xf7\x3e\xcf\xfb\x4f\xf3\x3c" - "\x93\x73\xce\x3e\x7b\xaf\xbd\xf6\xda\x6b\xad\xbd\xf6\xde\x6b\xaf" - "\x43\x74\xe5\x7f\x3e\xb2\xf0\x25\x81\x4c\x07\x8a\x0f\xfd\x37\xca" - "\xff\xf3\xef\x9f\x7f\xff\xfc\xfb\xe7\xdf\x3f\xff\xfe\xf9\xf7\xcf" - "\xbf\xff\x7f\xff\xfc\x09\x34\xe6\xbc\xc9\x4c\x1f\x57\x13\x75\xb9" - "\x2d\xc3\x7c\xa4\x15\xbd\xba\x51\x84\xf0\x2a\x01\xe3\xfc\x30\xbe" - "\xf2\xef\x25\xa4\x99\xaa\xc9\x72\x63\x1a\xa5\x89\x57\x6d\xa6\x09" - "\x5b\x88\x36\x0d\x11\x1d\x1b\x5f\x11\xfe\xc6\x52\xa2\xc3\xdb\xf0" - "\xfc\x8a\x68\xdf\x38\x44\x04\x00\xa7\xc0\x47\xf9\x9b\x18\xce\x6a" - "\x3c\xaf\x46\x3a\xd2\x4a\x7c\x54\xb0\x86\xd3\xaa\x50\xce\x48\xf7" - "\xae\xb9\x48\x8d\xf6\x10\x55\x31\x1c\x7b\x98\x26\x0e\x97\x78\x6c" - "\x45\xde\x54\xce\xbb\x6a\x08\xea\x4d\x27\x72\xbf\x22\x82\x11\x38" - "\x58\xb8\x1e\xae\x5b\xcf\x7f\x34\xa6\x3e\x3f\xd2\xda\x8c\xfa\xfa" - "\x81\x91\xc6\xe5\xb9\x0d\xf6\x6f\x51\xe2\x49\xba\xfa\x3a\x86\xc9" - "\xb8\x09\x37\x59\xbc\xdd\x21\x3a\x49\xc9\x99\x9d\x6e\x4a\x3c\x0c" - "\x6a\x6c\x78\x45\xa6\x27\x7a\x03\x21\xb2\x97\x51\x02\xde\x4d\xc5" - "\xd5\x84\x72\x03\x99\x3e\x33\x6b\x29\x83\xeb\x06\x5c\xb3\x30\x79" - "\x12\xea\x07\x13\x31\x8d\x02\x26\xba\x39\xe0\xa6\x84\x2e\x77\x32" - "\xda\x6f\xc9\x94\xed\x47\xbd\x28\x6b\x3e\x49\x29\xff\x30\x21\x3f" - "\xea\xf4\xdb\x97\x33\x0e\x29\x9f\x08\xb7\xc7\x64\xc0\xd1\xdc\x9e" - "\xab\xeb\x5e\x22\xea\x74\x9b\x26\x07\x4c\x56\xa1\xc3\x39\x60\xc0" - "\xe1\x7c\xa8\x2b\x95\xeb\xea\x74\x9b\x5f\x8a\xc8\xe3\x33\xf2\x00" - "\x6f\xff\xe8\x00\x25\x32\xce\x27\x28\x25\x9b\xeb\xd3\xdb\x62\xe6" - "\x3a\xbc\x4b\x42\xe4\x45\xdf\xa3\xee\x74\xb4\xd5\x7e\x38\x48\x04" - "\x98\xd7\xd4\x97\x11\x31\x7c\xe0\x6f\x57\x30\x53\xc6\x18\x30\x19" - "\x46\x6f\x5b\xdd\x9e\xc1\xf5\x12\x47\x6e\xab\x85\xf4\xbc\x05\x91" - "\x38\x32\x5c\xb4\xe5\x7a\x6e\x4b\x23\x38\x4a\xcf\xb3\xa6\x97\x1e" - "\xbd\xed\xbf\x3a\x27\x06\xb6\x4d\xc1\x4e\x00\xec\x04\x8f\x5e\xae" - "\xb7\xfd\xbe\x98\xfc\x2a\x6f\x5a\x72\xc0\x24\x74\x3a\xa4\xb4\xf7" - "\xe5\x4d\xde\x14\x99\x17\xf8\x98\x14\x6d\xc9\xe4\xa3\x94\x56\xb4" - "\x33\x11\x79\xa6\xa0\x1f\xed\xfa\xfb\xeb\xf4\xf7\x36\xbc\xbb\x5b" - "\xc1\xbb\x3a\x3b\x02\x5e\x1a\xc3\x8b\xe4\x2d\x25\x51\x66\xfc\x92" - "\x60\x20\x5f\x85\xdf\x00\x8b\xc1\x6f\x8b\x6d\x42\x73\x7d\x03\x6d" - "\x5a\xbb\x1d\xb4\x10\xe4\x75\x06\xc9\x3e\x94\x5c\x27\xe8\xea\xdd" - "\x80\x4f\x1b\x96\x93\xc5\x55\x2c\x82\x5e\x67\x07\xb5\xf8\x3b\xc8" - "\xe5\x87\x6c\x84\x2e\x50\xd9\x05\xf0\x62\xe8\x0c\x95\x3d\x4b\xb6" - "\xc6\xd2\x2f\x28\x1e\x2f\x6b\x26\x41\xae\x61\x5c\xb6\x8d\x5a\x6a" - "\xdb\xc8\x55\x1b\x5d\xd6\x75\x03\xd9\x9a\xf1\x8c\x3e\xb7\x32\x1e" - "\x2c\x6f\xa1\x94\xed\xf6\xd2\xd7\xc8\xec\x1a\x4e\xa6\xe6\x42\x8f" - "\x8e\x4b\xaa\x93\x71\x59\x73\x9a\x2c\x6f\xcc\x03\x1f\x9e\x66\x7c" - "\xdf\xb6\xbf\xb3\x3c\x68\x3a\x6c\x9b\x42\x87\x6d\xc7\xa9\xd1\x36" - "\x8e\x1a\x9d\x13\x69\xc3\x69\x4a\x3d\x1c\x1c\x4b\x8d\xe6\x7b\xa9" - "\x31\x63\x22\x79\x3b\x70\x0f\xf9\x3d\x6c\x0b\x90\x7d\x09\xf3\x53" - "\xaa\x63\xd3\x53\x64\xf1\x29\x98\xa0\x5d\x6a\xc9\xa1\x12\x22\xa6" - "\x1d\x3f\xc7\x6b\xc7\xe2\x6f\x90\x0d\xf8\xb5\x03\x97\x1f\x02\x97" - "\xb7\x33\x6c\x94\x05\x9c\x07\x78\x6b\x42\x64\x2e\xa5\xe4\x7e\xe4" - "\x38\x5d\x03\xef\x41\x76\x3b\xea\xa0\x4f\x58\x7e\x3b\x57\xe4\x41" - "\x27\xa4\x42\xfe\x53\xd7\xe8\x32\xd0\xe1\xfa\x15\x99\x3b\x97\xe6" - "\x25\xd4\xbf\x22\xda\xba\xdc\x03\xc9\x78\x07\x59\x6c\xc3\xfb\xf6" - "\xd1\xe9\x94\xe6\x0d\xe5\xd0\xc1\xee\x76\x96\xc7\x8e\x41\x01\x4a" - "\x60\x78\x56\x27\x64\x67\x09\x25\x01\x9f\x3f\xd7\x23\xfd\x3b\xc8" - "\x87\xf2\x39\x3e\x7a\xb9\x83\xcb\x8b\xeb\x1f\x0d\x68\xd7\x3f\x7a" - "\x41\x7b\xf5\xd1\x4e\xf1\xea\xa3\xe7\xc3\xaf\x3e\xfa\x0f\xd7\x32" - "\xb2\x84\xaf\x7f\xd4\xdf\x52\x2c\xfb\x20\xad\xa5\x18\x7d\x10\x26" - "\xcb\xca\x33\x94\xf6\xf8\xb3\xe8\xfb\xd0\x67\xb4\x72\x3e\xd9\xb4" - "\xe4\xb7\x5a\xbd\xa1\x4f\xe9\xf1\x52\x12\xb8\x6f\x8f\xd7\xbe\xce" - "\x94\xb7\x0b\x0c\xd9\x42\xbd\xfb\x7d\xa6\x6d\x36\xae\xd7\x9f\xbc" - "\xb7\x00\xbf\x42\xfc\x1c\xf8\x15\x89\x94\xb7\x8b\x40\x2b\xd7\xa0" - "\x55\x09\x54\xd7\x4d\x34\x5a\xa3\x84\xd3\x34\xf0\x18\xf0\x4f\xeb" - "\x87\x6e\xc3\xb4\xb5\x9e\xea\x9b\xcb\xa9\xac\xab\xcb\x41\xac\x0b" - "\x59\xff\xb1\x3e\xec\x72\x0f\xb2\xa3\x9e\x3c\x29\xbf\xaf\x40\xc7" - "\xa4\x78\xaa\x91\xde\x1e\x58\xe1\x48\xf0\xaf\x70\x98\x3a\x53\x3c" - "\x1b\x91\x67\x22\xf2\x54\xeb\x34\x6c\x67\x58\x90\x2d\xff\xc0\x10" - "\x25\x02\x66\xf1\x7b\x17\x5b\xcd\x5b\x5e\x11\xc7\x91\xaf\xa8\x17" - "\x16\x60\x03\x0e\xe8\x3f\xa8\xdc\x48\x03\xad\xdb\xd6\x23\x1f\x97" - "\xf7\x06\x73\x78\x4c\xf1\x79\x8b\xda\xc9\x1a\xa2\x14\xd1\xa3\xea" - "\x43\x9e\x76\xd6\xe9\x03\x83\x74\x55\x97\x9b\x66\x30\x6c\x2e\xe7" - "\xed\x68\x27\x94\xdb\x28\x5c\x0e\x13\xd2\xa7\x75\x09\x47\xc2\x1a" - "\xa4\x1f\x46\x79\xbd\xee\x76\x03\x47\xae\x83\xfb\x5a\xe2\x09\x7e" - "\x38\x5c\x14\xa4\x81\x35\x94\x88\x72\x33\x19\x1e\xc3\x02\x1f\xf8" - "\xd0\xd6\x8d\x87\x8b\xfc\xa4\x89\x28\x98\x3e\x05\xcf\x9a\x1d\x05" - "\x0f\xe9\x02\xf0\x98\xff\x1a\x51\x66\xe0\x56\x09\xef\xc1\xf7\x34" - "\x86\x17\x24\xb3\x5d\xe2\xfb\x53\x86\xd1\xc5\xfa\x03\x30\x3d\x4b" - "\xee\xa1\x0e\xb2\x6e\xf5\xbb\x1c\x89\x2d\x18\x37\xb9\xfc\x3b\x65" - "\xed\x49\xa2\x33\x2f\x91\x79\x8e\xdf\x7b\x43\xe7\x39\xcf\x2a\xd1" - "\xe9\x48\x1c\xd8\x01\x5d\x84\x3c\x28\xef\x64\x3c\x23\xfb\xf2\xc1" - "\x49\x3f\x1d\x47\x3f\x9d\x38\x79\xe2\x38\x9a\x3a\x7e\xc2\x38\xca" - "\xfa\xe1\xa8\xac\x31\xdf\xfb\xc1\xf7\xe4\xcd\xf7\x7e\x90\xfd\x3d" - "\x9a\xf1\xb3\x07\xc7\xd1\x8c\x69\xe3\x68\x26\x7e\x33\x66\x4e\x7a" - "\x70\xe2\xa4\x99\xe3\x28\xef\xde\xc9\x78\x9a\x30\xee\xf6\xac\xfb" - "\x46\xcd\x98\x30\x79\x12\x3d\x30\xeb\x8e\xac\x3b\xee\xa0\xf1\x93" - "\xa6\xdc\x9e\x95\xa5\x5f\x6f\xcf\xe2\x2c\x8f\x64\x4f\x9a\x39\x6a" - "\xc6\xa2\x85\x25\x0b\x47\x4d\x9b\x3c\x81\x53\xa0\xdd\x22\x78\x28" - "\x33\x7c\x51\x63\x5a\x07\xc4\xb9\x5c\xd2\xa0\x3b\xea\xc0\x03\xf8" - "\x75\x78\xca\x4e\x40\x07\x5c\xf3\x5c\x1d\xf7\x9d\x1c\x03\xac\x07" - "\x20\xf7\xe6\x2e\x77\x5a\x29\x68\x78\x94\x69\x68\xbf\x91\xf5\xc4" - "\xf5\xef\xe3\xdd\x21\x7d\xac\x49\xc2\xfb\xda\xe8\xf7\xd7\x42\x07" - "\x5b\xff\x4f\x8b\x9d\xc8\x8b\x1f\xe8\x1e\x80\x2e\x04\x7d\xfd\xd4" - "\xe9\xca\x4b\x02\x7f\x27\xa0\x8e\x36\xc8\xe6\x51\x94\x6d\x8d\x90" - "\xf9\x36\xf4\xcf\x51\x1e\x57\xce\x52\xda\xbb\x2d\x25\x39\xc4\xfd" - "\xe4\x2d\xd1\x61\x5c\xe8\x85\x91\x22\x61\xa0\xef\x01\xe7\x98\x82" - "\x73\x8d\x3d\x42\x3f\xf8\x18\xce\x06\xbc\xd3\x61\x5d\x68\x81\x9e" - "\x80\x1e\xbf\x55\x73\x65\x92\x48\xd9\x9e\xa9\xf5\x64\xca\xb1\x12" - "\xe5\xf2\x22\xf8\x3a\xd0\xe8\x44\xbe\x37\x72\x13\xc0\x07\x09\x18" - "\x7f\xd1\x96\xb4\x42\xf0\x77\x20\xbc\x76\xef\xb3\xe2\x5c\x1e\xdb" - "\x11\x57\x9d\xa4\xc1\x7f\x46\xfb\x9a\xb4\xb5\x7b\x8b\x45\x97\x4c" - "\x63\xba\xed\x17\xfc\x9c\x82\x7c\x3d\xbd\x69\xef\x73\x1a\xf8\x20" - "\x91\xe5\x55\x08\x99\x8e\x31\x73\xf0\x32\xe8\xb4\x56\xe4\x2d\xe6" - "\xbc\xa3\x43\x34\x00\xba\xc6\x66\x77\x25\xd0\x09\x1a\x4c\x5a\xca" - "\xde\x45\x11\xf5\x01\xce\x60\x1e\xa4\x98\x1f\xcd\x5d\xe7\x00\xa7" - "\x53\xa6\xc3\x8e\x19\xfc\x18\xe0\x2f\x66\x5d\xa9\xf4\xf7\xf5\xff" - "\xce\xf9\xf4\xb1\xb9\xef\x19\xb2\xae\xe0\x5c\xff\xef\x87\x41\x4b" - "\xb6\x17\xd8\xfe\xeb\x72\x0f\x9e\xe5\xa3\x81\x7e\x35\x36\x5e\xdf" - "\xca\x79\x35\xe0\x28\x52\x93\xb8\x2d\x25\x9e\xe5\x1d\x74\xb2\x98" - "\xc7\xda\xc1\x69\x9a\xcb\x41\xd1\x38\x5d\xd3\xc4\xf8\xb3\xfe\x00" - "\x2d\x3e\x05\x1f\x24\x03\xde\xb6\x68\x3e\x18\xec\x01\x9c\x67\x81" - "\x5f\x2b\xda\xf4\xac\x8f\xae\x39\xa2\x75\x3a\x50\x2f\x99\x20\x57" - "\xd0\xe7\x7d\x30\xf4\xf2\x6d\xd1\xe5\xaf\xa9\xe0\x72\xc8\x9f\xd4" - "\xd5\x29\xf3\xaf\x63\x9a\xeb\x7c\x07\xbe\xbc\x36\x3d\x86\x2f\xb7" - "\x00\x97\xff\x88\x78\x3f\x26\xe6\xfd\x2a\xbc\xff\x4f\xfd\x3d\xe4" - "\xfe\xda\x59\x31\x7c\x5b\x8c\xf7\xa7\x80\x6f\x00\x72\x0d\xdb\xe2" - "\x9a\x5c\xf0\x98\x3f\x22\xff\x9a\x98\xfc\x5b\x91\xff\xbf\x98\x6f" - "\x78\xcc\xe1\xfc\xf5\xba\xec\x20\xbf\x05\xf9\xf7\xc4\xd4\x3f\x07" - "\xf9\x03\x11\xf8\x1d\x8b\x7e\x9f\x5e\x8b\xf7\x5f\x32\xaf\xc3\x26" - "\x4a\x42\x9e\x01\xac\x4b\x58\x8f\x1d\x2e\xe2\xfe\x4a\x37\xc7\xe4" - "\xcf\x40\xbe\x54\x9d\x46\x26\x9d\x46\xb9\xdc\x8f\xa8\xe3\xb8\xc2" - "\x21\x3d\x3b\xa6\x4c\x1e\xca\xa4\x83\x8e\xcf\x1a\x7c\x19\xa7\x4c" - "\x51\x4c\x99\x75\xdc\x8f\x42\xd5\x63\xee\xea\xe9\x2b\xa3\xeb\xc8" - "\x48\x18\xdc\xb6\xab\x01\x63\x77\x34\x8c\x21\xed\xa8\x77\xd8\x7a" - "\xa5\x77\xae\x06\x0f\xdd\x81\xb4\x7f\x07\xcc\xe7\x58\x06\x20\xab" - "\x01\xaf\x3f\x48\xc2\x95\x9b\xaa\x78\xf7\xba\x6b\x06\x85\x88\xef" - "\x47\xf1\x3d\xc3\x16\x5d\x53\x74\x99\xbc\xee\x1a\x5c\x91\x9e\xce" - "\xf6\x5b\x02\xeb\x60\xd1\xf5\x13\x4d\xc1\xbc\xee\x4e\x61\x22\x13" - "\x9e\xc3\x7a\x1d\x7f\xc6\x73\x02\xf0\x5f\x84\x31\x87\xc4\x52\xe4" - "\x5b\x4e\x13\x90\x7e\x48\xca\xaa\xca\x27\x9f\x55\x1d\xb9\xcc\xdf" - "\x63\xf0\xfc\xbe\x5e\xfe\x5d\x86\x87\xfb\xdb\xf5\xfb\x84\x30\xc3" - "\x3a\x67\xc8\xe0\x90\x37\x65\x39\xc8\xa1\x84\x8f\xf2\x62\xa9\x7c" - "\xc7\x30\x5f\xc6\x75\x32\xae\xab\x70\x7d\x00\xd7\xc7\x5c\x5f\x92" - "\xcd\x15\x96\xf2\xc8\xcf\x93\x71\x7d\x10\xd7\x3b\x71\x9d\x89\xeb" - "\x70\x5c\xef\x41\x1b\xc2\x2c\x17\x18\x47\x79\x8e\x15\xc0\xb8\xaa" - "\x78\x8b\xe7\x00\x5d\xb9\x4c\x83\x49\xc8\xd3\x2e\xe5\x55\xe9\x17" - "\x8b\xea\xc7\xeb\x3a\x64\x5a\x8a\x4c\x1b\xa0\xf8\x41\xa5\x85\x0d" - "\x3d\x74\xae\x2f\x4d\xd7\x4d\xba\x2c\xea\x69\x0a\xfe\x0c\xc0\xf7" - "\x30\xae\x42\xc1\x4a\x52\x7d\xae\xc3\x57\xe5\xcc\x71\xea\x4c\x88" - "\xac\x13\xd7\x4d\x2e\xa7\x10\xb8\x96\x73\x1f\xf9\x68\xc8\x6e\x21" - "\xf9\x1e\x63\xac\x82\x37\x5b\xcf\x37\x86\x69\x2c\xcb\xcb\xf4\xf4" - "\xa3\x11\xbc\x34\xb8\xcb\x3d\x24\x14\x23\x47\x59\xe0\xa5\xdb\x98" - "\x67\x98\xee\xdc\xb6\x41\xc5\x72\x1c\x97\x6d\x91\xf0\xcf\x29\x9e" - "\xac\xd3\xe7\xad\x4a\x7e\xaf\x9f\x18\xa3\x5f\x24\xcf\xc6\xc8\x7b" - "\x07\xd3\x3c\xb1\x94\xe5\xe0\x7a\xcc\xff\xde\x19\x26\x6d\xc6\xb5" - "\x7b\x97\xf0\xfb\x00\xfa\x98\xeb\x4d\x2c\xe6\x76\x5c\xbf\xc9\x78" - "\x2f\xdf\x25\x1f\x4a\x63\xfe\x4e\x2c\x92\xef\x76\x63\x3c\xda\x6f" - "\xbc\x33\xea\x49\x2c\x91\xef\x9a\xfa\xe0\x6e\xcf\xd5\xe1\x26\xc6" - "\xb3\xf9\x44\xc5\xf6\xec\x51\x44\xa6\x5b\xcb\x29\xc9\x1b\x3a\x46" - "\xd3\x43\x22\x3c\xaa\x9c\x92\xbd\xa1\x5d\x74\x0b\xd1\x35\xde\xd0" - "\x71\xba\x95\x68\xb8\x37\xb4\x09\x36\xc8\x36\x7e\x7f\xf0\x66\x4a" - "\x48\xc0\xd5\x75\x53\xb9\x29\xc1\x1b\x2a\xa1\x8c\x72\x33\xae\x45" - "\x74\x6f\x92\xe8\xf2\x86\xa6\x20\x5f\x21\x4d\x0f\x8b\x73\x13\x93" - "\xc4\xdf\xf2\xc3\x94\x36\xe5\x79\xe1\xf2\x86\x30\x1f\x08\x35\x21" - "\x5d\x13\xd3\xc3\x5f\xe2\xd7\x25\xb4\x8a\xed\xb9\xd3\xc3\xe7\xc4" - "\x84\xe7\x0f\xe2\xf9\x6f\x02\x7d\x24\xbc\xa1\xb1\xd4\x12\x08\x20" - "\x9f\x4b\x88\xca\xed\xd9\x8f\x5f\x30\x51\x0f\x6c\x08\xad\x72\x7b" - "\x2e\xda\x92\xd7\x83\x76\x60\x7c\xfd\x59\xcf\x0a\x5c\xd7\x6e\xff" - "\xa9\x7c\xae\xd8\xee\x10\x96\xed\x79\xb7\x61\x72\xc5\x6d\xf0\x86" - "\xda\x28\x1f\xd3\x83\xe9\xcb\xfc\x82\xf1\x1f\xb4\x8a\xe7\x56\x63" - "\x09\x7d\x60\x9d\xbe\xcc\x25\xf0\xce\x22\x92\xb7\xe7\x79\x43\x1d" - "\x84\x3a\x1c\x80\x37\x57\xc2\xab\xd8\x5e\x81\xbc\x7e\xce\x17\x09" - "\x87\x61\x70\xde\xe9\x61\xb2\x22\x7f\x45\x4f\xf2\x76\x27\x7e\x35" - "\xf8\x1d\x41\xd9\xbf\x0a\x77\xfa\x21\x81\xf1\x1e\xe5\xdb\xf1\x1c" - "\x0c\x42\x86\x25\x2d\xc3\x34\x00\xf9\xdb\xc1\x2f\x13\xc1\x77\xc0" - "\x77\x87\x4d\xe2\xbb\x76\xc7\xf5\x41\xd9\x8e\x1d\x43\x54\x3b\x76" - "\x5c\xc7\xe9\x9d\xb0\x75\x70\x9f\xdd\xa9\xde\xfd\x00\xe5\x66\xc9" - "\x72\x15\x3b\xb2\x85\x65\x47\x6e\x10\xf2\x05\xba\x96\x33\x1d\x41" - "\xd7\x72\xa6\xa5\xa8\xdc\x91\xed\x75\xae\x23\x91\xbc\x23\xb7\x27" - "\x79\x47\x1e\xca\x3f\xd5\x23\x6d\x90\x1d\xce\xa0\x82\xbd\x14\x70" - "\x66\x83\x6f\x13\x01\xc3\x09\x58\x15\x3d\x6e\x3b\x4d\x5f\x26\x82" - "\xd3\x43\xab\x42\xf9\xcb\x28\x71\x24\x95\x03\xdf\x0f\x41\xa3\x42" - "\xb4\xb3\x11\xd7\x89\x78\x4f\xd7\xa2\xae\x83\x80\xeb\xe4\xfa\x50" - "\x4f\x05\x60\x3e\x0f\x58\x85\x8c\xd3\x97\x6e\x4a\xc3\x73\xcd\x97" - "\x0a\xbf\xfd\x5a\xc5\x8e\x56\xcd\xb2\xe3\x88\xc1\x43\xcc\x3f\x8a" - "\x6e\x9b\x68\x5a\x40\x84\xbc\xa1\x2d\x04\x1e\x4b\x6b\x09\x1c\xe7" - "\xf7\x98\xff\xec\x42\x3f\x33\x4f\x95\xe0\xba\x8d\x98\x7f\x5a\x8a" - "\x9f\xe7\xbc\x07\x99\x87\xa6\x15\x07\x56\x8d\xa2\xe2\x04\x3c\xbb" - "\xf2\x43\x16\x7a\xbc\xd8\x5c\x1e\xae\xd8\xd1\xd0\x52\xcc\xfd\x72" - "\x0c\x65\xb8\x5c\x11\x59\x13\x30\x07\x48\x10\x21\xab\xd3\x6f\x1e" - "\xe8\x70\x89\x96\xc0\x14\xe4\x2d\x26\x6e\x0f\xf3\x11\xe7\x9f\xda" - "\x21\x7c\x61\xcb\xce\x3c\x6e\x9b\x18\x54\x4e\xcd\x1d\x77\x12\xcf" - "\xc3\x9a\x3b\xb6\x31\x9f\x6a\xc2\xb2\x33\x13\x3c\xda\x33\xb5\xa3" - "\x3c\xe9\xf1\x0b\x94\x80\xb4\x70\xb3\x63\x17\xde\x37\x22\x5f\x93" - "\xe4\xdb\x69\x17\x42\xd6\x90\x65\x47\x4d\xa8\x62\x67\xf6\xb4\x0b" - "\x3d\xa2\xd9\xb1\x89\x1e\xeb\x28\x07\xad\x76\xd1\xd4\x33\xa1\xc4" - "\x96\xe2\x42\xe4\xe9\x42\xfa\x36\xc9\xff\x53\xcf\x74\x8a\x69\xb0" - "\x66\xa6\x5d\xf8\x9b\x98\xea\x10\x07\xf3\x9d\x34\xe8\xea\x55\x42" - "\x63\xb9\x68\x6a\xdb\x45\x57\x1f\xf7\x11\xcb\xc4\x94\x39\x9a\x98" - "\x7a\xe6\x9c\x78\xfc\x59\xa6\xcd\x58\x6a\x76\x40\x7e\x9c\x9b\x98" - "\xde\xfb\x9b\x1d\x07\x50\xff\x44\xc0\x75\x09\xaf\x73\x0b\xf2\x7a" - "\xac\x8f\x9d\x49\xa3\xa6\xb6\x4d\x14\x4a\xde\x51\x13\xae\xdc\xd1" - "\xa0\x25\xef\x38\xa2\x55\xee\x68\x15\xc9\x3b\x33\x43\x95\x3b\xb3" - "\xc3\xc9\x3b\xc1\x03\x3b\x1b\xd0\x4f\xc9\xdc\xe7\xdd\x6e\xb2\xe3" - "\x79\x47\x37\xf7\x7f\xc5\xce\xfd\x68\x6b\x2b\x6c\x5e\xa1\x78\x7f" - "\xe7\x7e\x5e\x5b\x40\xd9\xd6\x9e\xe4\x9d\x47\x90\xaf\x55\xc9\xd7" - "\xce\x76\xe6\x4b\xe4\x33\x21\xed\x14\xe6\x3d\x89\x78\x1f\xec\x49" - "\x6e\xb0\xe0\x67\x13\x6b\x1b\x1c\x80\x7f\x8d\xe4\xa9\x8a\x06\x87" - "\xf8\x71\x35\x6c\xe8\x0b\x80\xd3\x50\x31\x3d\x7c\xb7\x00\x0d\x21" - "\x27\x0d\x0e\xad\xb2\xc1\x29\x52\x1a\x1a\x82\x92\xf7\x1b\x76\x32" - "\xec\x9e\x15\x99\xbc\xe6\x60\xc6\x7b\xd8\x80\x6f\xde\x1a\x64\x5e" - "\xb5\xbc\x99\xa9\x59\xde\xac\x10\x15\x6f\x66\xff\xe4\x79\xe1\x0f" - "\x57\xbc\x99\xa7\x55\xbc\x99\x1b\xba\x0a\xb6\xb9\xf3\x00\xb1\x7e" - "\x0a\x7d\x24\x40\x83\x4f\x40\x8f\x6d\xb2\xff\xbd\x4e\xc8\xc0\xb2" - "\xa1\xe5\xcd\x1d\xe0\x85\xe2\xb7\xa5\x6e\x6a\x09\x1c\x93\x34\x15" - "\xc9\x6f\x66\x32\x4f\x71\xff\x3e\x5e\x4c\xe5\xa2\xf2\xcd\x6c\xad" - "\xf2\xcd\xdc\x70\x25\xe0\x26\xa3\x9e\x94\xb7\xfe\x14\x94\xf2\xfa" - "\x16\xf8\xf5\x00\xca\x7c\x42\x8a\xc7\xdf\x3a\xd2\x9f\x8e\x64\x5d" - "\xc5\xfa\x69\x7a\x28\xc8\x3c\x73\x8a\xf5\x9a\xd2\x53\x94\x6f\xe8" - "\x29\xd6\x51\x3c\xdf\x61\x3d\xa5\xe9\x7a\x4a\xd3\xf5\x94\x7c\xb6" - "\x40\xd7\x54\x6c\xcf\x63\x7d\x34\xdd\xa9\xf4\xcc\xf4\x70\x96\x00" - "\x6f\xa4\x02\x46\x9e\xea\x0b\xe4\x59\xbb\x7d\xae\xcc\x2f\xe9\xb4" - "\xbd\x42\x83\xbe\xc1\xaf\x46\x53\xfa\xa6\x55\xd7\x37\x26\x43\xdf" - "\x84\x31\xae\x41\xa6\xb4\x78\xfa\x46\xd3\xf5\x4d\x58\x28\x7d\xa3" - "\xe9\xfa\x86\xd3\xc3\xba\xbe\x09\xc7\xd1\x37\x90\x67\x6e\x6f\xa2" - "\xae\x67\xca\x59\xcf\x70\x7b\xc1\x6b\xb9\x9a\xd2\x33\x0e\xcc\x75" - "\x4c\xac\x67\xc2\x28\xa3\x19\x7a\xa6\x4b\x96\xaf\x60\x5d\xd3\xf3" - "\x02\x41\x7f\xda\x89\x75\x8c\xd4\x27\xa1\xe1\x21\xd6\x27\xa0\xdf" - "\xdd\xb1\xfa\x04\xf0\x6a\x70\x9f\xa6\xeb\xa9\x23\x98\xe9\x86\xa0" - "\x4f\x1a\xa6\x3b\x03\xe8\xeb\xcf\x30\xf7\x87\xde\x76\x96\x94\x7b" - "\x9d\x21\x82\x1e\x68\x15\x2d\xe5\x04\x1c\xc1\xbf\x61\xe8\x0a\x22" - "\xc8\x65\x66\x08\x32\x0e\x1e\xcf\x6e\x29\xfe\x94\xc2\x90\xd5\xa9" - "\x1d\x9d\xde\xc7\x03\x99\x69\x53\xcf\x08\x3f\xe8\xe3\x7b\xbc\xb8" - "\x1c\xfa\x25\xd3\xdf\xdc\xf1\x21\x4d\x69\x13\xda\x94\x02\x9f\x1d" - "\x32\x90\x3d\x75\xbe\xc7\xfa\xf8\xb3\x69\x90\x33\xe1\x81\x5e\xfc" - "\x7f\xa6\x9e\x49\xb3\xce\x6e\xa3\x6f\x4d\x99\x23\xb4\x30\xe4\x0c" - "\xed\x6d\x40\xbb\xf7\x03\xf7\x23\x90\xb9\x56\xc8\x59\x66\x28\x46" - "\xce\x20\x33\x3b\x70\x6f\x57\xf4\xdb\xd9\x0a\x39\xdb\xaf\xc9\xf1" - "\xac\x4d\xce\x31\x51\x4f\x2b\xaf\xc5\x41\xd6\xf6\x6b\x95\x4a\xd6" - "\x34\x55\xae\x5d\x63\xfa\x99\x74\x59\x43\x5f\xe0\x7d\x10\xb2\x63" - "\xc1\x2f\xbe\xac\x15\x47\xc8\xda\xb3\xba\xac\x25\x2b\x59\x43\x9f" - "\x26\x86\x57\x28\x79\x63\xf8\x3c\x0f\xed\x95\xb7\x94\x37\x33\x71" - "\x9f\xa0\x78\x47\xca\x1c\xc6\x95\x37\xf3\x20\x6f\xb9\x90\x37\xc0" - "\x13\x7e\xd6\x9b\xe0\xcd\xff\xe0\xb1\x6e\x5a\xb1\xf8\x8f\xfc\xf0" - "\xd0\x72\xc8\x53\x1e\x74\xd9\xdf\xa0\x47\xff\xe3\xf1\x00\x6d\x85" - "\x3c\x65\x42\x8e\xb2\x21\x4f\xb9\x90\x2b\x96\xa7\x23\xe1\x15\x0c" - "\xf3\xad\x23\xbd\x30\xe4\x58\x19\x2d\x4f\xfd\xad\x83\x76\xb9\xed" - "\xa5\x3e\xfa\xa0\x98\xed\x15\xdc\x57\xf8\xe8\xc0\x44\xfd\x1e\xf6" - "\xcf\x56\xb9\xb6\xc5\x32\x58\x5c\x46\xd7\x9d\xa6\xe1\xb9\xe0\x77" - "\xc2\x7d\x2a\xee\xa7\x4c\xbf\xe5\x20\xec\x88\x8e\x76\xd4\xdb\xc5" - "\x72\x28\xdc\x63\xd8\x3e\xcb\x01\x1f\x5a\x44\x57\x66\x2a\xec\x4b" - "\x4d\xf4\xd8\x78\xad\xcd\x8a\xe7\x41\x68\x7f\x06\xae\x83\xb7\x5c" - "\xa4\x74\xfc\x6c\x5b\xdc\x5a\x39\xdb\x4e\xb8\xcf\x12\x4b\x6d\x29" - "\x1b\x96\xd0\x48\x6b\x80\x2c\xf5\x6e\x2d\xcf\xba\x2a\x8d\xd7\x9c" - "\xd2\xf9\x5e\xb8\xb7\x8d\xad\xbf\x48\x66\x5e\x17\xd0\x92\x51\x9f" - "\xd3\x2a\xc4\xe2\x4c\xaa\x5f\x04\xfd\xe0\x26\x5b\xbd\x5b\xec\x0e" - "\x77\x49\x99\xcc\x36\x70\x61\xdc\x80\xe7\x0d\xc0\x73\xf6\x43\xcb" - "\x72\xe8\x13\x27\xc5\x5d\xab\xed\x72\x0f\xef\x6d\x7f\x3f\xef\x6b" - "\x0d\x9a\xf4\xf3\xfe\x80\x41\xa7\x7e\xd6\xf5\xcc\x3c\x46\x87\x97" - "\x08\x7f\xd5\x53\xc4\xb4\xb0\xb9\x42\xe2\x3f\x41\xc7\xf2\xb2\x30" - "\xdd\x30\x7d\xd9\xb7\x85\xb7\x43\x78\xbc\xce\x33\x54\x8f\xf7\x65" - "\xa5\x42\xd3\x92\xf7\xfa\x44\xe5\xde\xe3\x9d\x4b\x44\x88\xd7\x72" - "\xba\xdc\x37\xda\x7d\xf4\x23\x8f\xea\x8b\x1d\xfb\xe5\x1c\xd2\xb2" - "\xf7\x38\x60\x5d\xc3\xb0\x9a\x51\x3e\x5c\xb9\xb7\x0d\xf9\x60\x6f" - "\xfe\x51\xae\x77\x40\x8e\xf7\x17\x2f\xa7\x6f\x9e\xa6\x1b\x25\x8d" - "\x45\xc5\xde\x00\xeb\x03\xa4\xa5\x21\x6d\x1d\xe0\x07\x91\xdf\xe9" - "\xa3\xbd\x9b\x94\x1d\x7b\xe3\x3a\x23\x1f\xee\x0b\xf8\x3e\x8a\x7f" - "\x12\xe4\x62\x3a\x60\xd9\xfb\x36\xab\x12\xf4\xe5\x75\xe3\x2f\x0d" - "\xbf\x9c\xf8\xaf\xfb\xf4\xf9\xce\x6c\xd8\x5a\xe4\x5a\x49\xc3\xd0" - "\x3f\xc0\xef\x3b\x09\x98\x47\x9c\x14\xee\x1b\x6b\xde\x58\x1e\xc4" - "\x3c\xe1\x3b\xa9\x3e\x7a\xb1\xb1\x3f\x7a\x0a\xb6\x75\x2e\x8a\xf6" - "\xaa\x25\xbd\xb4\xfc\x7c\xfa\x32\x4d\xf0\x3d\xeb\xa3\x7a\xa4\x33" - "\xdd\x00\x67\x96\x41\xb3\xfe\xfb\x65\xaf\x5f\xcd\x39\xbf\xb3\x47" - "\xb8\x05\x79\xbe\xc5\x7b\x4c\xdf\xd9\xab\xe8\xb0\xf3\x48\x27\xf4" - "\x08\xaf\x13\x63\x6e\x16\x58\x6c\x13\xa0\xd7\x77\x1a\x7c\x34\x32" - "\x4b\x5f\x87\x0a\x78\x43\x93\x58\xb7\xc4\x1d\xb7\x78\x4f\xac\x0f" - "\x7e\xc6\xb1\x96\x61\xd0\x43\x52\x37\x1d\x9a\x55\xa6\xf0\x0e\x32" - "\x5c\x4f\xd9\x79\x6a\xc3\xfb\xc5\x01\xd1\x2e\x2a\x0e\xe5\xf2\x3c" - "\xc2\xb3\xa4\x9b\xd3\x3e\x05\x6f\x0b\xcf\x22\xc6\x29\xe3\x53\xcf" - "\xb7\xba\xe9\xa4\x93\x12\xeb\x7b\xd7\x7f\x32\x3c\xbc\xde\xa3\xd6" - "\xb9\x32\x72\x7c\x34\x2a\x68\xe0\xc5\x36\x06\xe8\xcb\xb4\xde\xcf" - "\xb6\x06\xef\x3d\x2c\x2e\x15\x41\xb6\x39\x90\xb7\xc8\x68\x03\xb7" - "\x4f\xb5\x2b\xa3\x3c\xb2\x5d\xbc\x47\x65\x2d\x55\x34\x58\xbc\x8c" - "\x2c\x76\x45\x6b\x0b\xb7\x97\xdb\xc2\x6d\x96\x6d\x91\x3a\x16\x63" - "\x44\xe8\x4e\xcc\xc7\x64\x7a\x2b\x60\x61\xfe\x33\x52\xe7\xa9\x8c" - "\x9c\x58\x3e\xea\xed\x47\xcb\x8e\x0a\xcc\x41\xbf\xe5\xd2\xc4\x89" - "\x93\x34\xe2\x61\xb5\x76\x36\xe2\x61\x8d\xed\xec\x20\xf3\xef\x07" - "\xad\x3c\x26\x7b\x4b\x59\xdf\xca\xbc\xd7\x22\x6f\x1b\xf2\x4c\xd6" - "\xf3\x4e\x56\x7b\x76\xf2\x3a\x80\xaf\x18\xc7\x9e\xf7\xd1\x88\x02" - "\xbf\x1c\xef\x0f\xa5\x19\xcf\x98\xbb\x63\xfe\x37\xc2\x26\x2a\x3f" - "\x68\x8d\x8f\xcb\x9b\x15\x3c\x9e\x85\x2f\x8a\x0e\xd4\x73\x3d\xf3" - "\x94\x6b\x19\x7d\x03\x7c\xf9\x79\xd9\x4a\xba\x96\xf9\x49\x24\xef" - "\x0d\x29\xba\x8f\xd8\x25\xdc\xb0\x3d\xa1\x51\x8b\x97\xd0\x37\x21" - "\x47\x81\xd3\x34\xe2\x50\x7e\xa9\x1d\xb8\x12\x55\x9d\x25\x92\x3a" - "\x28\x79\x6f\xd0\x1b\xfa\x82\xea\xcf\xf2\xda\xce\x08\x9f\xc1\x8b" - "\xb8\xef\xb8\x9c\xbe\xc0\x38\x63\x51\x6b\x0f\x37\x3d\xcc\xfb\x0c" - "\x27\xe8\xa6\x89\xdc\x5e\xb5\xc7\x79\xd3\x9d\xe2\xa2\x98\x2d\xd4" - "\x98\x16\xf4\xd1\x4d\xc5\x18\x5b\x2c\xf2\xe7\xa6\x02\xf5\xbc\x33" - "\x88\x7c\x19\xe2\xa2\x46\x9c\x8e\xb4\xb1\xc2\x9d\xc0\x32\x71\xa0" - "\xcb\x7d\x93\xc3\x47\x3f\x6e\x55\x7d\x73\xd3\x18\x86\x15\x1f\x87" - "\x9d\x41\xf4\x2d\x31\x6f\x02\xd6\x9f\xed\x65\xbc\x76\x79\xd3\x76" - "\x29\x17\x80\x55\x6f\x52\x7a\x5b\x03\xae\x75\x6e\xcd\x01\x1d\xed" - "\xd0\xd6\x7e\x94\x23\xef\xf5\x77\x42\x1f\x47\xe3\xc3\x3f\x34\xcb" - "\x33\x94\x79\xfc\xe6\x91\x0a\xce\xa1\x5c\xcf\xd0\xd3\xfc\x3c\x8a" - "\x9f\x03\x96\x83\x39\xde\x9a\x1c\xd4\x7f\x1a\xf5\xde\x3c\x52\xcd" - "\xe7\x6f\x1e\xd5\x89\x3a\xba\xdc\x37\x8f\xf4\xd1\x68\xb3\xda\x73" - "\x39\x98\xd3\xdf\x5e\x32\xcb\x0e\xcb\x9c\x92\xe9\xcc\x33\xcd\x5b" - "\xa5\xfc\xb5\x77\x5a\x1a\x2c\xba\xde\xe0\x75\x9a\xd4\x13\x94\xd9" - "\xd1\x6c\x93\xfc\x6d\x12\xa6\x9b\xd7\xfd\x46\xf3\x9b\x78\x5f\x4c" - "\xa9\xaf\xcc\x8e\x4b\x7f\x37\x7b\xf0\x3b\x8a\xdf\x71\xfd\xb9\x1d" - "\xbf\x10\xee\xa7\xe0\x77\x5c\xd2\x6e\x73\x61\x82\x0f\xef\x3a\x61" - "\xb3\xf3\xb3\x8f\x6e\x3e\x22\x36\x67\x98\x60\x97\xc8\xfb\xfa\x6f" - "\xf0\x3a\xc1\xcd\xd0\xb3\x37\x95\xaa\xbe\xc8\x94\x6b\x2a\x90\x47" - "\xa6\xbb\x70\xd5\x88\x60\x63\x59\x80\xf1\xce\x68\xac\x09\x90\xfd" - "\x26\x6e\x7f\x26\xdb\x0f\x22\x00\xfa\xf3\x75\x71\x8d\xf0\x1f\xae" - "\x0d\x11\xef\xcf\x75\xb9\x33\x21\xff\xf3\xa7\xa8\x35\x87\x43\xc5" - "\x0c\x4f\xe7\x09\x61\xb4\x5f\xe9\xb4\x83\x39\xdc\x97\x78\x7e\x0e" - "\x6d\xb7\x9e\xa5\xcc\xbd\x22\xe5\xa3\x9c\xc3\x0e\xa2\x2d\xd0\x23" - "\x18\x6b\xe4\x5e\x41\xbd\xf4\x0f\xc8\xc4\xf8\x7f\xd3\x71\x63\x3f" - "\x69\x3d\xde\x6f\xc0\x3b\x8c\x3d\xfe\x66\x47\x90\x18\x56\x98\xdb" - "\x87\xf2\x1f\x6a\x7e\x33\xc6\x6a\xf4\xf9\xc1\x9c\xb2\x62\xe8\x99" - "\x5e\xbd\x95\x39\x7b\xe5\x19\x11\x34\xda\x77\x78\x2b\xcb\x42\x26" - "\xf8\xff\x69\x47\xbf\xfc\xdf\x8b\xf3\xad\xc9\x87\x33\x54\x9f\x69" - "\xa0\x4b\x74\x9f\xdd\x6a\x51\xfd\x75\xcb\xd8\xe8\xfe\xba\x15\xb6" - "\xcd\x2d\x6b\xf0\xab\xc5\x6f\x97\x7a\x8e\xfc\xdd\x52\x1c\x71\x7f" - "\x00\x3f\xe8\xce\x5b\x30\xfe\x8f\x08\xaa\x7e\xe0\x74\xb4\x83\x79" - "\xe4\x1f\x64\xd1\x7a\xf2\x88\xf7\x6b\x39\x9d\xf9\x99\xd3\x35\xd8" - "\x33\x3e\xba\xa5\x1a\xef\xd3\x58\x56\xab\x34\x8a\x7a\xef\x45\xed" - "\x9e\xe5\xd0\xd5\x74\xcb\xe7\x0c\xcb\xba\xaa\xa2\x82\xf9\x14\x65" - "\x36\x59\x43\x15\x15\xa8\xaf\xc3\xa0\x2b\xd2\x8e\xf1\x7b\xe6\xc9" - "\x2e\xf7\xad\x66\xd0\xa5\x41\xee\xc7\x62\xbe\x17\xdf\xd6\xb8\x35" - "\xb3\xd7\x26\xb3\x34\x38\x58\x1f\x75\xd0\x77\xc7\x40\x67\xa1\x6f" - "\x3f\xca\x56\x63\xcd\x77\xef\xe4\x67\xe8\xca\xcf\x71\x9f\xd5\x0c" - "\x9d\xd4\xbd\x76\x6f\x41\x8f\x89\x06\x74\x9b\x28\x27\xb4\xf6\x4c" - "\x6a\x28\xe5\xed\x22\x6f\xfb\x1e\x6a\x09\xfd\x96\xec\x4f\x49\x18" - "\xb7\x78\xc1\x03\xae\x65\x22\xfc\x4e\x77\x83\xd9\x1b\x3a\xe7\xc1" - "\xd8\xfc\xed\xd3\xf4\x5d\x49\x8f\x17\x4f\x60\xd4\x7f\x5c\xc2\xd6" - "\xe9\xd3\xd1\xbe\x61\x9e\x08\x6d\x38\x29\x02\xb0\xef\x52\xd6\x77" - "\xd3\xc8\xd7\x97\x53\x56\x6d\x37\x65\xd4\x75\x53\xa6\x38\x95\x69" - "\xaa\x85\xdd\xf6\xf8\x85\x34\x82\x4e\xc8\x1b\x54\x4c\x96\xba\xe5" - "\x24\x79\x24\x5c\x09\xfb\x2d\x04\xfb\xed\x5c\x26\xeb\xc6\x5e\xfb" - "\xad\x47\xda\xc5\xfb\x0a\x15\x1f\xed\x2b\x1c\xe8\xa0\x84\xd4\x02" - "\x4a\x03\x7e\xae\xb3\x74\xeb\xfc\x54\x0c\x88\xdc\x66\x9f\xde\x5e" - "\xd0\xbc\xd4\xea\xa0\x01\xb2\xad\xd0\xd7\xa2\xf2\xa3\xec\x7e\xc7" - "\x61\x13\xf3\x54\x80\xe5\x86\xdb\xb0\x8a\xf7\x8c\xf7\x0c\x0d\x9a" - "\x17\xd7\x8a\x20\xa7\x97\x0c\x17\xd0\x99\xdf\x75\x70\xdd\xbb\x91" - "\xde\xe5\xfe\x6e\xb5\xcf\xf4\xab\x91\xfd\xf1\x28\xe6\x47\xba\x5e" - "\x19\x79\x8d\x30\x95\x83\x47\x1b\x1a\x56\x86\x60\x7b\x9f\x65\x99" - "\x1d\x99\x36\xbd\x48\x84\xec\x0b\x78\xff\x7e\x24\xb1\x6f\x01\xef" - "\x29\xfe\x06\xb6\xcd\x57\xf9\x13\xf0\x78\xc1\x73\x05\x6b\x11\x60" - "\xae\x6d\x68\x10\x98\x9f\x7f\x5d\x7f\x06\xb4\x33\x75\xe3\x10\xf6" - "\xb3\x19\x39\xc5\x47\x53\xb6\x31\xee\xd2\x97\x06\xba\x13\xf6\xd6" - "\xb5\xc0\xab\x22\x00\x3a\xe0\x3d\xc6\xff\xc9\x4e\x7d\xff\xd7\xcf" - "\x7b\xaf\x48\xc3\xf8\x7f\xff\x01\x4e\x2b\x19\x4e\xb6\x12\xbb\x88" - "\xbb\xf7\xcd\x36\x13\xef\x49\x03\xde\xf5\x28\xb3\xc7\x80\x83\x71" - "\xea\xd7\x9d\xa6\x87\x1e\x42\xda\x11\x03\x0e\xf2\x5c\x87\xe7\xd6" - "\xde\x3c\xaa\x4c\x7b\x44\x99\x87\x3a\x4d\xb7\xfe\x1a\x69\xa1\xe8" - "\x32\xa3\x52\xa3\xcb\x8c\x1a\x16\x51\xa6\x5c\xd5\x33\x2a\x2b\xa6" - "\x4c\x4e\x4c\x99\x19\x97\xe2\x36\xaa\x30\xa6\x4c\x49\x4c\x99\x35" - "\x97\xe2\x36\xaa\x26\xa6\x4c\x43\x4c\x99\xfd\x11\xb4\x64\xbf\x9a" - "\x2c\xa4\x35\xc5\x94\x39\x1e\x53\xa6\xc3\x78\xee\x87\xc6\xa9\x8b" - "\xb7\x90\x0d\xbc\xc9\xbe\x5b\xfe\x8d\xe8\x9f\xce\x57\x9f\xee\x52" - "\x65\x6f\xcb\xbc\xb4\x5d\xb7\x8d\x8d\xae\xef\xb6\x29\xd1\xf5\xdd" - "\x36\xfb\xd2\x76\xdd\x56\x1c\x53\xa6\x3c\xa6\x4c\x75\x44\x99\xad" - "\x7a\x3d\xdb\x62\xca\xec\x89\x29\xd3\x78\x29\x5f\xdd\xd6\x1a\x53" - "\xa6\x3d\xa6\x4c\xf0\x2b\x68\xc1\xe3\xb8\xf2\x6b\x1b\xc2\xb6\xf2" - "\x3d\xb0\x11\x46\xcf\x61\xdf\x08\xde\x07\x7d\xa3\x3b\x98\xc4\xfb" - "\x73\x3c\x5e\x1d\x76\x06\x31\xb6\x8c\xc6\xfc\x67\x8c\xc7\x18\xb3" - "\xd8\x6f\x84\x65\x5a\xd9\xd8\xa3\x33\xfb\xb3\x45\xa5\xef\x99\xee" - "\xbf\xc6\x75\x1d\x1e\xc6\xe3\xd4\xe8\x4d\xbd\x36\xb1\xf2\x41\x23" - "\x1d\xce\xdf\x8d\x7d\xd8\x7a\xe5\x8f\x92\xc0\x36\xf9\x61\xa7\x2c" - "\x73\x24\xc2\x8e\xe6\xfa\x03\x7b\x96\x07\xcd\x31\x78\x34\x5c\x06" - "\x8f\x54\xd8\x46\xd9\x2d\x18\xbd\x78\x7f\xbd\xb9\x16\x36\x10\xec" - "\x7e\xc6\xed\x04\x65\x65\x49\x9b\x6c\x41\x37\xf1\xbd\xb7\xf4\x2e" - "\xb9\xff\xae\x6c\xd2\x2c\x47\x23\xea\x67\xdb\xbd\xb1\xf8\x3c\xfb" - "\x48\x61\xfc\x65\xdb\x2d\xeb\xe5\xc3\xa5\x7e\xe0\x95\x55\x60\xf8" - "\xa9\xf8\x28\x6b\x93\xb4\x35\x2a\x0e\x65\xb1\x6f\x00\xfb\xd0\x1c" - "\x0e\x64\x73\x1e\xf0\xff\xe8\x22\xa3\xbd\x18\xeb\xfd\xc8\x3b\xf6" - "\x72\x34\x53\x7d\x98\x75\x20\x9a\x27\x93\xc0\x2b\x59\x47\xa3\xfb" - "\x3d\xcb\x17\xdd\xef\x59\xfe\x68\x9e\x34\x81\x27\x6f\x37\x47\x97" - "\xb9\x3d\x3d\xba\xcc\xed\x19\x11\x65\xaa\x55\x3d\xb7\x67\xc7\x94" - "\xc9\x8d\x29\x93\x17\xf1\x8c\x36\xde\xee\xe8\x9d\xfb\x48\x1f\xa8" - "\xdb\x9d\x11\xcf\xa6\x4d\x52\x7f\xde\xbe\xce\x48\xe3\xb5\xa3\xba" - "\x57\x94\x0f\x8e\x0e\xaf\x21\x46\xde\x39\xff\x81\x18\x1c\x9a\x62" - "\x70\xe8\x95\x7f\x7d\xef\xfe\xe3\x93\x74\xc7\x1e\x7d\xef\xbe\x03" - "\x63\xf6\x74\x7e\x06\xac\x1a\xe4\x07\x1d\xee\x48\x8d\x86\x77\xc7" - "\xb0\x68\x78\x77\x8c\x8c\x78\x4e\xc3\xf3\xd8\x88\x36\xa4\x25\xda" - "\x28\x01\xfc\x02\xfb\xed\x8e\x59\x46\x3a\xcf\x29\x81\x6f\xbb\x4b" - "\x8e\x35\x39\xec\x5b\x36\xf8\x04\xdd\x31\x9e\xe7\x9f\x3a\xcc\x48" - "\xf9\x27\xd5\xae\x3b\x36\xc5\xe0\xb1\x2d\x06\x8f\x3d\x11\xed\x0a" - "\x58\x57\xd1\x03\xd6\xd0\x83\x0f\xb3\xed\xc3\xfe\x94\xd2\xc7\x6b" - "\x25\x6c\xb6\x0b\x94\xc6\xbe\x75\x27\x4b\x28\xd1\xeb\x6c\xc7\x5c" - "\x6e\x5f\x41\xbf\xfc\x94\x72\x28\x47\xf9\x56\x91\xbd\xcb\xfd\xbd" - "\x74\x83\x1f\xb5\xb5\x87\x72\xb4\xca\x0f\x33\x90\x06\xfd\x97\xb5" - "\x55\xd9\xb9\x07\x8a\x85\x2b\xaf\x06\xf4\xc4\xbc\x68\xcc\x75\xfa" - "\x3c\x62\x16\xfb\x88\xb1\x1f\x2b\xc6\xf8\x54\xb5\x0f\xff\xbd\xd9" - "\x11\x7c\x1d\xb0\x2f\xbf\x5b\x9c\xa0\x31\xc3\xd9\x06\x60\x19\x65" - "\x5f\xb3\xc3\x21\x3f\xf1\xdc\xdb\x1b\x3a\x2d\x6d\x37\xbc\xb7\xeb" - "\x65\x6b\x22\xca\xfa\xf5\xb9\x71\x3b\xbf\x1b\x1d\x22\xf3\xe1\x80" - "\x9f\x00\x27\x5d\xd9\x7b\x63\x86\x1f\x86\xbc\xa2\x4c\x93\x51\x86" - "\xe7\xd1\x72\x8f\xb7\x84\xcc\xb7\x95\x92\xd9\xb3\xfc\x84\x84\x6d" - "\xf8\x6d\xc0\x96\xee\xf0\x96\xb6\x93\x37\xd0\xca\x6b\x5d\x66\xe5" - "\xa3\x33\xc6\x9e\x18\x24\x4b\x67\xe5\x21\x8c\x71\x63\xec\xe1\xca" - "\x43\xd9\xc0\x0d\xe3\xd9\xf7\x26\xb2\xbe\x89\xa4\xdd\xa4\x49\x33" - "\x1e\x9c\x3e\x75\xd4\xcf\x1e\x9c\x3c\x6b\xd2\x5d\xf6\x59\xf3\x9f" - "\x99\x5b\x38\x6a\xe1\x73\x25\xf6\xa5\x8b\xe6\x97\xcc\x5f\xf0\x73" - "\x7b\x96\x73\x84\xd3\x3e\xa7\x44\x5d\x33\x8b\xe6\x2c\x2e\x19\xc7" - "\xb7\x23\xed\xc5\x8b\xe6\x2e\x91\xb7\xb7\xa4\x50\x34\x90\xf9\x25" - "\x73\x17\xd9\x47\x14\x8e\xb4\xdf\x3b\x67\x7e\xd1\x73\x8b\xe6\xc6" - "\x85\x75\x97\x7d\xd1\xdc\x45\x73\xe7\x14\xda\xc7\xd9\xb3\x18\x72" - "\x24\xb8\x88\xfe\xcc\x32\xc6\x31\x1e\xbf\xaa\xdc\xe2\xa8\x3e\x9e" - "\xf9\x14\xff\x8c\x09\x5c\x3a\x96\xdd\x69\x89\xe6\xb9\x3b\x6d\xd1" - "\x3c\x77\x67\xe6\xa5\x63\xd9\x9d\x31\xe3\xdf\x9d\x31\xe3\xdf\x9d" - "\xb3\x2f\x1d\xcb\xee\x8c\x19\xff\xee\x8c\x19\xff\xee\xec\x1d\xff" - "\xc0\x4b\xbe\xd5\x52\x2f\xdc\x19\x33\xfe\xdd\x19\x33\xfe\xdd\xd9" - "\x18\xf3\x7c\x2c\xe2\xf9\x5a\x3c\xb7\x45\x8e\x8f\x78\x0e\x18\xf2" - "\xd9\xa7\x5f\xbe\x6f\x31\xf2\xb0\xae\x87\x6e\x6e\x53\x79\xbf\x6f" - "\x8f\xc8\xdb\xae\xe7\x1d\xd3\x2b\x7f\xbc\xaf\x8d\x74\x35\x5f\xff" - "\xfe\x6b\xac\xd3\xd9\x1f\x8f\xc7\x26\xc8\xc7\xb7\xcf\xd2\xf7\xaf" - "\x61\x58\xcc\xc3\xec\x9f\x29\x5e\x7d\xb4\xab\x7e\x30\x59\xb8\x4c" - "\xfd\x4b\xec\xd7\x3b\x66\x24\xfb\xea\x22\x8d\x7d\x97\xa1\x53\xbe" - "\xcf\xf6\x6f\x48\x8d\x17\xdf\xf7\x49\x9b\x1f\x65\x74\xf8\x72\x5e" - "\x03\x38\xec\x0b\x6c\xa9\x52\x63\x71\x1b\xee\x53\x99\xa7\x51\xde" - "\x2c\x4c\x63\x9e\x65\x1f\x68\xa4\xa5\xe1\x97\x0e\x78\x3e\x03\xde" - "\x9a\x21\xf1\x6d\xcb\x58\x3b\xb7\x77\x3e\x68\x22\x6b\x95\x5b\x6b" - "\xf5\x6a\x6c\x5b\xff\x20\x5d\xad\x2d\xec\x2d\x17\xee\x83\x79\xf5" - "\x48\x8f\x3f\x4f\xfa\x01\xe4\xe5\x07\x16\xb5\xde\xf2\x03\xf4\xff" - "\xd4\x31\x6a\xed\x74\x6f\x39\xf4\x6d\x37\xe0\x5c\xc0\xb5\x07\xd7" - "\x7f\x37\xe0\x7b\xe4\x7c\xfb\x07\x25\xc2\x9d\x30\x93\xe1\xc6\xa4" - "\xaf\x83\x7e\xeb\xb6\x86\xca\xf3\xe2\xbc\x6b\x10\xee\xc4\x07\xe3" - "\xa4\x7b\x60\x33\x74\x03\x8f\x00\xe3\x1b\x91\xde\x2a\xdc\x83\x66" - "\x71\x7e\x1f\xd7\x87\x32\xfd\xd9\xda\x86\xff\xad\xf2\xe1\xcf\xce" - "\x88\x69\xc7\x97\x27\x29\xfb\x57\xaa\x1d\xd9\xe1\xe8\xba\xb3\xc7" - "\xc6\x6f\x47\xf6\x2c\xb4\xe3\xcb\xf8\xed\xc8\x2e\x96\xb4\x35\xa1" - "\x2d\xa6\x4b\xde\xad\x43\x5b\xbe\x94\x74\x8f\x4e\xdf\xa6\xdb\x42" - "\x01\xcc\xc3\xd2\xf0\x4e\x96\x9d\x59\xda\xd7\x6f\x7a\xbe\x26\x6b" - "\x0d\xcd\x88\x53\x67\x9b\x70\x0f\x98\xe9\xa3\x1f\xca\x73\x0d\x11" - "\xe9\x21\x85\x0b\xe8\x64\x62\x3a\xa1\x3d\x28\xd7\x5f\x7f\x1b\xf3" - "\x12\xb5\x16\xf2\x43\xc8\x7f\x36\x19\x6b\x99\x8b\x4b\x85\xdf\xa0" - "\x23\xde\x39\x62\xde\x05\x23\xde\xad\x89\x7a\xb7\xb2\x37\xbd\xd6" - "\x48\xff\x7a\xfd\xf4\xc3\xa6\x98\x7e\x42\xff\xdc\xf5\x58\x74\xbb" - "\x7f\x78\x5c\xb5\x0f\x7d\x74\x09\xad\x7f\x18\x44\x1f\xf5\xc4\xef" - "\xa3\xbb\xd2\xe3\xf3\xda\x5d\x72\x1d\x4d\x0c\xa6\x38\xf0\xee\xca" - "\x45\xdf\xf5\x48\x1e\xd4\xfb\xe9\xd2\xfe\xb9\xab\xc8\xe8\x9f\xaf" - "\xd7\xc6\xbb\x76\xc7\xb4\x31\x7c\x92\x7e\x34\x4a\xb5\xf5\x47\x2b" - "\x63\x60\x1f\x89\xcf\x8b\x77\xf9\xd0\xce\x70\x3f\xed\x0c\xf5\xcf" - "\x8b\x3f\xb2\xa1\x3d\xe1\x4b\x79\xf1\x47\x59\xaa\x0c\xc5\x2b\x33" - "\x45\xb8\xe3\xd5\xf3\xa3\x42\x57\x88\xed\xdc\x1f\xd5\xf2\xfa\x52" - "\x44\x7a\x69\x34\xff\xa1\x0d\x5c\x8e\xe9\x17\x52\x7a\x96\xfb\xe1" - "\xa4\x9d\x4c\x5f\xc5\x93\x5d\xee\x1f\x1d\x8f\xa1\xd5\xb9\x93\x34" - "\xf6\xb1\x4e\x53\xc2\x36\x45\xaf\x71\xc3\x63\x70\x0a\xc6\xa7\xd7" - "\xd8\x34\xd0\xeb\x5c\x7c\x7a\x8d\x1d\xd9\x3f\xbd\xc6\x72\xff\x9f" - "\xbb\x94\x5e\x63\x0b\x22\xe9\x05\x5b\x57\xb6\xef\x3b\x36\xf0\x46" - "\x4f\xbe\xa8\xe7\xb6\x86\x29\xcd\x0a\x5e\x51\x65\x3a\xb8\xcc\x26" - "\x6b\x50\xf1\x09\x6c\x48\xcb\x59\x1a\x5b\x6a\xc8\xff\xa0\x1a\x1a" - "\x20\x7a\x1e\x65\x3f\xa2\x04\x2e\xe7\x75\x9e\xf3\x78\x43\x59\xc4" - "\xf3\x8f\x98\x7a\x5b\xe3\xeb\x82\xb1\x7e\xd0\xf4\xa5\x4b\xd3\xc7" - "\x59\x94\x1f\xd9\xb8\x9c\x68\x1d\x31\xce\x1e\xdd\x47\x3f\xe2\xb5" - "\x53\xab\xbe\xed\xf4\x95\xbf\xcb\xf7\xd9\xb8\xea\x4b\xfb\xec\xc7" - "\xb7\xab\xfe\xfa\xf1\x35\x31\xf8\x35\xc4\xef\xaf\x71\x9e\xfe\xfb" - "\x6b\xdc\xf1\xfe\xfb\x6b\x1c\xaf\x9f\x9e\xf3\xd1\x8f\xb3\xa2\xc7" - "\x8d\x1f\xa7\x45\xb7\x17\xf5\xa2\x9c\x30\x5d\x75\x2d\x3f\x7f\xdd" - "\x76\x1b\x3f\xd6\x71\xdc\x57\x7c\xae\x08\xf8\x0f\x67\x1c\xaf\x14" - "\x46\xbf\xb0\x41\xc3\xea\xe5\xf1\xf7\x5b\x79\x8e\xdb\x52\x43\xc4" - "\xfb\xc8\xf6\x6f\xb1\xed\x7e\x77\x92\x66\xa2\x56\xdc\x9b\x4e\x52" - "\xce\x9f\x35\x93\xa9\x94\xf7\x3c\xa5\xdf\xba\x5c\x43\xb8\x7b\x58" - "\x64\x5f\xf0\xde\x27\xcf\x4d\x37\xa8\xb9\xd3\xdf\x50\x7e\xbb\xea" - "\x97\x9c\x77\xa3\xe9\x78\x77\x4e\xfc\x7e\xb9\x3b\x0f\xfd\xf2\xb7" - "\xf8\xfd\x72\x77\x49\xff\xfd\x72\x77\x35\xfa\xe5\x6f\x97\xca\xd1" - "\xdd\x0d\xba\x1c\xad\xe6\x32\xf6\x05\x3c\x1f\xcf\xf9\x06\xe7\xc1" - "\x3d\x64\x24\x47\xd2\x64\x54\x87\x21\x47\xb2\xcc\x71\xc0\x92\xf5" - "\xab\x3c\x77\xb7\xea\x30\x22\xe0\xe6\x90\xb5\x23\x9e\x9c\xe4\xd8" - "\x38\xef\x6d\xc5\x64\x01\x0d\xf3\xb6\x30\x8c\x45\x44\xa8\xe7\x19" - "\xce\xc7\xe9\xb7\x05\x22\xe5\x24\x27\xd7\xc8\xc7\xba\x4e\xcf\x9b" - "\x23\xba\x1c\xc4\xf9\x62\x60\xeb\xed\x1f\x20\xc7\x11\xce\xcf\xf9" - "\x62\xf2\xd4\x28\x79\xcc\x39\x1e\x2d\x8f\x39\xbb\xa3\xf9\x13\xf4" - "\x47\x39\x0d\x7a\x0e\xf7\x66\xe0\xf0\xb5\xf9\xeb\xf2\xb2\x39\x7e" - "\x64\x8c\x6c\x82\x07\xc6\x37\x2b\x1e\x18\xff\x76\x34\xae\xe3\x27" - "\xc6\xe7\x81\xf1\xb3\xfb\xe7\x81\xf1\xce\xfe\x79\x60\xfc\x26\xe6" - "\x01\x1f\x8d\x6f\x8a\x96\xcd\xf1\xbb\xa2\xdb\x8e\x7a\xa5\x6c\xd2" - "\x35\x57\x22\x9b\xb0\x85\xae\xed\x4f\x0e\x59\xa6\xd8\x7f\xa4\xbe" - "\xdb\xd8\xeb\xf8\x5a\x34\xb3\x40\xae\x80\xdf\x3d\x05\xbc\xa6\x04" - "\x1d\x9f\xcd\x34\xac\x93\xe7\x31\xef\x29\x89\xa4\xe3\x06\x75\x06" - "\xd2\x85\xbc\x5f\xf2\xbe\xb2\xa2\xe7\x84\x43\xd1\xed\xbf\x67\x53" - "\x7c\x7a\xde\xb3\x0b\xf4\x74\xc5\xa7\xe7\x3d\x47\xfa\xa7\xe7\x3d" - "\x6d\x7c\x46\xea\x52\x99\xba\x27\x64\x5f\x22\x6d\x14\x59\xe6\x2c" - "\x4d\x78\xe8\xeb\x8d\x4f\x13\xc6\x44\x8f\x4f\x13\x86\x5d\xf9\xf8" - "\x34\xc1\x19\x7f\x7c\x9a\x50\x1d\x7f\x7c\x9a\xd0\xa0\xe4\x61\x82" - "\x2f\x5a\x1e\x26\x78\xa2\x79\x02\xb4\xfb\x5f\x1b\x9f\x26\x66\xc5" - "\xc8\x40\xd5\x49\x9a\xf8\x2e\x6c\x0a\xdd\xde\x9c\xf4\x5c\x34\x8e" - "\x13\xa7\xc4\xef\xb7\x89\x85\xe8\xb7\xaa\xf8\xfd\x36\xb1\xbc\xff" - "\x7e\x9b\x58\x8b\x7e\xab\xba\xb4\xdf\x26\xee\xb9\x72\x9b\x62\x62" - "\x7b\x74\x9f\x4d\x3c\x7a\xe5\x7d\x36\x69\x64\xfc\x3e\x9b\x34\x31" - "\x7e\x9f\x4d\xd2\x7d\xd3\x27\x6d\x8a\xee\xb3\x49\x25\xd1\x7d\x06" - "\xba\xfd\x0f\xfb\x0c\xfd\xb3\x46\xf9\x27\x4c\xba\x80\x79\xfb\x80" - "\x2e\xf7\xa4\x0e\x1f\xdd\xbb\x47\xcd\xad\xef\x55\x63\x87\xea\xc3" - "\x77\x90\xc7\x77\xe9\x38\x70\xaf\x45\x4f\xfb\xd9\xa5\xfd\x70\x6f" - "\x06\x74\x74\x47\x63\xa9\xdc\xdb\x52\x7d\xc8\x34\x47\x3e\xcf\x72" - "\xde\x9f\xba\x77\x22\x97\x45\x1f\x0b\x6f\x30\x44\xac\xd7\x91\x3f" - "\xc0\x70\xf8\x6c\x68\x0c\xac\xe2\x2b\x19\xe3\x2f\xe3\x53\xb3\xc6" - "\x53\x76\x07\xe0\xdd\xf7\xbc\xe2\xd5\x7b\x63\xed\xdf\x7a\xbc\x7b" - "\x58\xf1\xe9\xe4\x11\x31\x38\x04\xe2\xf3\xe9\x7d\xa9\x68\x43\x7d" - "\x7c\x3e\xbd\x2f\xb3\x7f\x3e\xbd\x0f\xfd\x4f\xf5\x11\x73\x9f\xc1" - "\x8f\x87\x7c\x31\x73\x9f\xfb\x1c\xd6\x80\xe2\x1d\x69\x13\x55\xee" - "\x5d\xd3\xe5\xbe\x2f\xd6\xfe\x43\xdf\xe4\x0e\xd4\x71\x4e\x8a\x29" - "\xdf\x8f\xfd\x77\x1f\xdb\x7f\xef\xf4\x83\xf3\x65\xec\xbf\xfb\xd8" - "\xfe\x7b\xe7\x52\xd9\xca\xd5\xed\xbf\x78\x73\xbc\xdc\x91\xf1\xfb" - "\x3f\x37\xa6\xff\x29\xaf\x04\xf3\x61\x59\x3e\x3a\x5f\x51\x64\x3e" - "\xf6\x4d\xe2\xbc\xcc\x23\x71\xf2\xd6\xc4\xc2\xec\x27\x9f\xe7\x12" - "\xde\x63\x5f\xaa\xb8\xbc\x97\xab\x9f\x29\x99\x3c\x31\x5a\x1e\x27" - "\x9b\xa3\xe5\xf1\xbe\x86\xe8\x72\x93\x33\xa2\xdf\xdf\x1b\xf8\xdf" - "\xd3\xb1\x93\x37\xc5\xf0\xc0\xc1\x93\x74\xff\x35\x8a\x07\xee\x9f" - "\x1f\x83\xc7\xae\xf8\x3c\x30\xb9\x11\xed\x3f\x18\x9f\x07\x26\xfb" - "\xfa\xe7\x81\xc9\x21\xd0\xf2\x60\x24\xdf\xce\x2c\xcd\x19\x10\x9d" - "\xe7\x7e\x7b\x7c\x9d\x77\x7f\x76\xfc\x35\x82\xfb\x67\x28\x1a\xdf" - "\x5f\x11\x4d\xe3\xfb\x1d\xd1\x34\x44\x5b\xfe\xe7\x34\xec\x8d\x07" - "\xd1\xe5\xbe\x3f\x56\xfe\xbd\x27\xe9\x27\xba\xfc\x4f\x79\x20\x06" - "\xc7\x80\xc2\x25\xde\xba\xc8\x4f\x78\xfe\xeb\x8d\x4f\xcb\x9f\x8c" - "\x8c\xdf\xe6\x9f\x4c\xc4\x18\xe4\xd5\x2e\x91\xa5\x9f\xcc\x46\xfa" - "\x4c\x5e\x0f\xe5\xf5\x90\x3a\xa4\xcf\x0c\x91\x45\x8e\x57\xbd\xe3" - "\xd2\x4f\xca\xd9\x17\x85\xe9\xcf\xfc\x6b\x1d\x46\x33\x78\x0c\x62" - "\xbc\xf2\x4b\xa5\xdf\x82\x75\x0d\xf3\xfa\x8d\xcc\xeb\x3f\x91\xf6" - "\x1f\xef\xb3\xb0\x1f\xa1\xd5\x49\x33\x38\x2e\x85\xc1\xef\x9c\x3f" - "\x06\xf6\x71\x96\x0b\xce\x6f\xe4\x55\xeb\x66\xe5\x31\xba\x69\x8a" - "\x39\x7e\x1f\x4f\x19\xd6\x3f\xef\x4c\xc9\x56\xfd\x3c\xa5\x28\xba" - "\x9f\xa7\xcc\xd0\xdc\x83\x66\x71\x5b\xc1\x03\x57\x24\x27\x25\x76" - "\xe1\xef\x57\xdf\xaf\x7e\xb4\xb5\xb8\x8c\xbe\x75\x9a\xa6\x1c\x93" - "\xf5\x99\x44\xd0\xba\x2a\x81\x1a\xa5\x0e\x98\x7a\x8b\xc4\x13\x79" - "\xf2\x43\x64\x12\xab\x9f\x6e\xe5\x77\xf5\x6e\x11\x44\xbe\xa3\xbc" - "\x27\xc0\x67\xab\xc1\x0b\xd7\x9e\xa0\x29\x67\xa2\xca\x43\xf2\xbd" - "\x0a\x46\x66\xbd\x94\xc7\xa9\x19\xc6\x9a\xee\x1a\x3c\xc7\x5f\xf7" - "\x9d\x9a\x6b\xf8\x3e\x28\x9f\xb1\xa9\xfd\xee\x5f\x32\x4e\x7c\x56" - "\x86\x71\xba\xbc\x1e\x98\x5a\x6b\xf0\xaf\xf2\xb5\x9c\xba\xab\xcf" - "\x97\x6f\xea\x7e\xbc\x2b\xb8\xcc\xda\x60\x84\x1c\x4c\x6d\x8b\x84" - "\xa3\x62\xa2\x4c\x0d\x1a\xfe\x78\x5d\xee\x69\xe6\xaf\x80\xa5\xe3" - "\x33\x6d\x64\x34\x3e\xd3\xc6\xc2\x4e\x49\xd7\x61\xe4\x5e\x0e\x06" - "\xf7\xb9\xe2\x59\xe6\x87\x69\x05\x97\x5b\xf3\x4b\xb4\xd1\x8c\x8d" - "\x97\xf0\xd6\x34\x69\x2f\x31\x8c\xaf\xc0\xf1\x68\xd4\xdc\x42\xee" - "\xdd\xf3\xde\xd6\xf4\x2d\x4a\xee\xa7\xc7\xac\x11\x4e\xeb\x90\xfe" - "\x54\xba\xdc\x3f\x1e\x8a\x95\x83\xe9\xa9\xc6\x18\x1d\x93\x9e\x61" - "\xc8\x3d\xe6\xb5\x0c\x37\x66\x9d\x75\xfa\x44\x25\x0b\xd3\x6b\xb5" - "\xe4\xc8\xf9\xda\x74\x69\xff\x19\xeb\xa5\x78\x3f\x31\xa6\x5c\xcc" - "\xfa\xdf\xb4\x0e\xd1\xff\x3a\x7d\x2a\xfa\x37\xc0\x7b\x5b\x2a\x56" - "\xc3\xf4\xa6\x98\xf5\x0a\xff\x06\x79\xfe\xfe\xaf\x80\x3b\x43\xd7" - "\x7b\x0f\x8c\x8f\xa9\xaf\xc3\x75\xe6\x72\xed\x9f\xd1\x4f\xfb\x67" - "\xf4\xb5\x7f\x81\x84\x1b\xb3\x96\x38\x43\xb6\x3f\x7c\x89\xfe\x9b" - "\xc1\x3e\xa4\x06\xdd\x60\x73\xcf\xd8\x6b\xd8\xea\xbc\x7e\xd0\xbf" - "\xad\x3e\xa3\x6f\xfd\x4f\x95\xeb\x5b\xff\xf3\xc7\xb3\xd5\x7d\x24" - "\xf7\x56\xa3\xeb\x6e\xb5\xd6\xc6\x6d\x4b\x3f\xeb\x7f\x0f\xe8\xeb" - "\x7f\x0f\x14\x44\xeb\xb3\x07\xec\xd1\x7d\x38\x23\xa6\x0f\x1f\xc8" - "\x89\xee\xc3\xe9\x1d\xff\xdd\x71\x0d\xcf\x94\x98\x98\x68\x4a\x4c" - "\x30\x25\x24\xe2\x35\x9a\x48\x03\x12\xcd\x89\x49\xf8\x5d\xa5\x5f" - "\x07\x98\x12\x4d\x66\xfc\x92\xf4\xeb\x55\x31\xcf\x03\xb8\x2c\x7e" - "\x66\xfd\x9a\x14\xf3\x7c\xd5\x57\xbc\x1f\xa0\xd7\x6b\xd4\x6f\x8e" - "\x79\x4e\xfa\x8a\xf7\x57\xfd\x0f\xcb\xd3\x25\xcf\xd1\x7e\x68\x93" - "\x17\x2c\x99\x53\x34\xbf\x50\xee\x17\xcf\xb5\xcf\x79\xf2\xc9\xb9" - "\x8b\x17\xdb\x4b\x16\xda\xef\x19\xff\xe0\x1d\x77\xd9\xd5\xb6\x73" - "\xd1\xb8\x11\x85\x29\x34\x75\xe9\x22\x7e\x31\x75\xe6\xe4\x3c\xfb" - "\x8c\x7b\xc6\x47\xbf\x34\xc0\xc8\xed\xe5\xcb\x41\x89\x90\xbf\x9c" - "\xca\x21\x44\xeb\x5e\x91\xba\xa7\x8d\xfd\x7c\xd5\x9a\xc7\xcf\x0e" - "\x35\xb1\xff\x68\xb7\x4b\x78\x6e\xe4\x3d\xfd\x99\x73\xb9\x11\xa3" - "\xb6\x96\x53\xf1\x13\x7c\x7e\x65\xe6\x2a\xf1\x91\x9f\xec\xf7\x93" - "\xe9\x04\xcd\xfe\x73\x63\x2e\xf2\xe2\xd9\xeb\x0b\x91\xdd\x45\x16" - "\x94\x7f\x16\xef\x12\xc4\x8f\x35\xa4\x05\x74\x5f\xe8\x9f\xae\x92" - "\x69\x1f\x95\x1b\xf9\xac\x27\x69\xd6\x08\xf1\x91\x90\xcf\x7c\x3e" - "\x48\xe5\x9b\xf9\xa5\x30\x3d\xb8\x9f\x75\x43\xed\x60\x32\xf3\x5e" - "\xe8\x6b\x83\xc9\xf2\xda\x10\x8e\x59\x32\xb3\xc3\xd8\x0b\xad\xc4" - "\xb3\x8f\x66\x1f\xe5\xba\x39\xaf\x66\x7a\xf0\x04\xe7\xaf\x8b\xca" - "\x3f\x6b\x58\xdf\x5e\xec\xcc\x0e\x13\xf2\x4d\xff\x9c\xac\xd6\xb0" - "\xf8\x47\x30\xe5\xed\x82\xdb\x72\x29\xc1\x8b\xae\x68\x0a\x95\x93" - "\xf2\xf9\x99\x35\x77\x59\x58\x84\xd8\x3f\x7d\x6a\x87\x4b\x54\x3d" - "\x43\x66\xc8\x74\x82\x67\x11\xfb\x28\xcc\x9a\x52\x3f\x97\xcc\x68" - "\xff\xb0\xd3\xf4\x50\xa9\x7d\x1a\x91\x6b\x2a\x99\xff\xe4\x64\x7f" - "\xc3\xbd\xda\x86\xbf\x90\xf9\xad\xee\x72\x53\xb7\xb0\x51\x69\x89" - "\x68\x17\x1c\xc7\x28\x20\x82\xec\xe3\xdf\x54\x10\xe6\x3c\x67\xbb" - "\x5c\x36\x6a\x29\x09\xd0\xca\xe3\x22\x58\xf1\x17\x75\x36\xa0\xb9" - "\x23\xc0\xfe\x8b\x96\x95\x53\x29\xf1\x64\x1e\x99\x9a\x1d\x35\xe4" - "\x9d\x1d\xa0\xd2\xe3\xa2\xbd\xa9\xe0\x0b\x6a\x71\xec\xa6\xfc\x56" - "\x32\x35\xb5\x7d\x46\x32\x16\xcf\xda\x33\xec\xf7\x68\x5b\x39\x9f" - "\xd3\x2e\xd0\xf2\x95\x34\x70\xf9\xa7\x64\xf5\xb6\xb7\xa2\x9e\x33" - "\xf4\xc8\x31\x4a\x00\x3c\xd3\x8a\xcf\xc8\xb6\xe2\x61\xf6\xf3\xcd" - "\xa1\xda\x32\xb2\x09\x57\x66\x6a\xb7\x2b\x33\xad\x5b\x64\x0e\xee" - "\x72\x65\xa6\xb7\x14\x23\x7f\xdb\x87\x34\xa8\x95\xd2\x3f\x3a\xdd" - "\x6a\xaa\x39\x4f\xc3\xb8\x4d\x27\xd1\xb6\xda\xf3\xc8\xbf\xf6\xe3" - "\x72\x0d\x65\x23\xcb\x84\x92\x3f\xae\xf1\xe6\x05\x49\x03\xac\x9a" - "\x6e\x1a\x56\xdb\x4d\x36\xad\xf2\xe3\x72\x2e\xd7\x41\x3f\x5d\xe6" - "\x6d\x22\x2a\x5d\x29\xc2\x3d\x6b\xf7\x16\x40\x27\x0e\x78\xe7\x89" - "\xfd\x66\x6f\x53\x07\x35\x07\xba\xa9\x85\xfe\x4a\x5e\xe7\x29\xcf" - "\x5b\x4f\xec\xe7\x35\xeb\x04\xcf\xf2\x36\xd4\xa5\x78\xc7\xd5\xcc" - "\x67\x95\xcb\xa9\xaa\x8c\x52\x8b\x97\xd3\x80\xd3\x48\x57\x73\xfb" - "\x06\x87\x37\x74\xca\xb3\x5c\xfa\xe3\xce\x3e\x5a\xd6\x4c\x89\x2d" - "\x81\x1a\x6e\xbf\x29\x9c\x72\x86\xbc\x81\xa3\xe4\x2d\xfe\x9b\x47" - "\xb3\x74\xb4\xaf\xd3\xc8\xf2\xf6\xc5\xa3\x26\xaf\xf9\x22\x79\xf3" - "\x02\x74\x10\x75\x8b\xb5\x67\x52\xa1\xb7\x72\x5a\x02\x41\x3e\xef" - "\x94\x25\x3a\x6d\x29\x55\x8b\x68\x64\xdd\x79\xca\xd8\x72\x9e\x32" - "\x45\x57\xa6\x89\x7d\x6c\xf9\x6c\xea\x16\x5c\x53\xdb\xc8\x82\xb6" - "\x2b\x7f\xec\x64\xdd\xd7\xb6\x27\x93\xea\xbb\xfb\x7c\x6d\xbb\x3b" - "\xfb\x7c\x6d\xc1\x53\x7e\xf6\xb7\xf5\xd1\x43\x6b\xac\x4d\x34\x00" - "\x72\xd2\xc0\xfc\x5d\x75\x96\xcc\xab\xcf\x12\xdd\x56\x6e\x22\xfb" - "\x3c\x3e\x67\xf1\xb3\xb9\x5e\xf4\x0d\xdf\x9f\xa0\x9f\x0d\xc3\x35" - "\x15\xbf\x04\xa4\xcb\xf8\x0d\x6d\x3a\x1f\x23\xcd\x84\xb4\x24\x5c" - "\x13\x21\x2f\x61\x57\xad\xf0\xa3\xae\xfd\x9d\x26\x4a\x61\x7e\xd6" - "\xfd\x7b\xf7\x77\xb9\x7f\x1a\xf0\xd1\x33\x1d\x06\x5f\x2b\x1d\x3f" - "\xd3\x7f\xf0\xc4\x19\x8e\x97\xe5\x97\x78\xf5\x38\x12\x38\x76\x96" - "\x9e\xce\x38\x3c\xc6\xf5\xa2\xfe\x1c\x5c\xad\xf8\x41\x4e\x7f\x7a" - "\xcc\x28\xdb\xd9\xe3\x40\x9d\x3f\x7b\x08\xe9\xc2\x48\x47\xbb\xcd" - "\xfc\xee\x77\x27\xce\x98\x54\x9e\x4c\x13\x60\x06\x75\xf8\x90\xfd" - "\x99\x9b\x58\xc6\x3b\x4d\x56\x71\xb8\x60\x0c\xd5\xbe\x22\x9a\xb6" - "\xbc\x22\x1a\x95\xec\xfd\xac\xc6\x47\x0b\x8d\xf8\x42\x8d\xeb\xf0" - "\xee\x30\x46\x1d\xa6\x4b\x63\x21\xfb\x93\xfd\x0c\xf6\xdf\xd5\x07" - "\x22\xdb\x20\xdc\x0f\xd4\xf0\x58\xfa\x9b\xb2\x23\x49\xd0\x01\x35" - "\x2d\x6d\x1d\xf4\x56\x77\x7b\x92\xeb\x8f\x64\xf2\x86\x4e\xd0\xe8" - "\x74\xb2\xb1\x3d\x58\xff\x8a\xf0\x6d\xe4\xf8\x7c\xaf\x88\x0e\xf0" - "\xcb\x0d\xa7\x29\x2f\xe9\xbb\xe9\x94\xfe\xaf\x4e\xd2\xf5\x53\xde" - "\x0d\x11\xfa\x69\x7b\xb3\x6f\x7f\x84\x6e\x9a\xfd\xd0\xa5\xba\xe9" - "\xd1\x07\x94\x6e\x82\xec\x4b\x5d\x14\xf6\xe9\xe9\xe3\x62\xd2\x75" - "\x3f\x91\x47\x87\xc7\xa4\x07\xf5\xf4\x81\x31\xe9\x7e\x95\xfe\xc8" - "\x54\x43\xf7\xb5\x30\x1e\x4b\x59\xf7\x3d\x72\x3b\xeb\xbe\x96\x02" - "\x5d\xf7\x49\xfd\xf3\xc8\x75\xe2\x5f\xa0\x8b\x96\xb0\xbe\x79\xf8" - "\x0c\xe3\x2f\x3e\x22\x03\xf7\x64\xa4\xbd\xcd\x69\xd5\x7f\x25\x33" - "\x7e\x86\xde\x13\xac\xf7\x58\xe7\xb1\xee\xdb\x3c\x44\xb4\x6e\x7e" - "\x45\x1c\xab\x95\xb1\x7f\x1e\xee\xd5\x7f\x2f\x22\x6d\x1d\xd2\x5e" - "\xc4\x7b\xd6\x83\x4c\x93\xe6\xbc\xfd\xc4\xfe\x27\xb0\xb5\x42\x9a" - "\x29\x8b\x36\xa0\xbf\xf9\xbc\xe1\x1a\xd0\xd7\x9a\x40\xc5\xde\x12" - "\x3e\xc3\x1a\x66\x9f\xb4\xb6\x96\x92\x36\x96\xbb\x21\xab\x21\x67" - "\x5e\xe7\x17\x54\x16\x10\xa7\xf9\xdc\x1d\xe3\x90\xbf\xec\x7e\x8e" - "\x97\x94\xd0\x88\xd9\x30\xfb\x85\xb3\xce\x06\x2e\xe6\x6a\xe0\xa4" - "\xe2\xb3\x3c\xbc\xcd\x47\xdb\xca\x55\x5f\xcf\x3e\xca\x71\xd9\x4e" - "\x50\x5e\x3b\xe6\x7b\x41\x6e\x9b\x35\x5c\x4e\x7c\x0e\x86\x63\x15" - "\xf2\x75\xb3\x49\x73\x54\x1b\x67\x61\xdc\xd0\x0d\xc8\xe3\x6d\x0d" - "\x12\xe3\xec\xa3\x87\xc7\x34\x97\xee\xe7\xf2\xad\x4c\x1b\xe1\x76" - "\x19\x30\x12\x24\x0c\x93\x9c\x37\x3a\x90\x4f\xad\x9d\xa7\xec\x2d" - "\x68\x9e\xed\x27\xd6\xfb\xde\x76\xc0\x28\x3d\xa1\x60\x00\x96\xc0" - "\x18\x10\xf5\x4e\x87\x3f\x70\xa5\xf8\x07\xe0\x6f\xe3\xfe\xe2\x73" - "\x91\xbc\xdf\x06\xba\xa4\xb2\xaf\xbc\xb2\x45\x1f\x1e\x55\xff\x57" - "\x22\xfd\x6c\x27\xf8\xed\xe1\x91\x7c\x6e\x89\xcf\x73\x5e\xee\x2c" - "\x27\x68\x94\x61\x9c\xe7\xd4\x96\xfe\xef\x9e\xe5\x04\x6c\x5b\x9d" - "\x49\xec\x06\xfe\x23\xf9\x3c\x27\xf0\x5f\xc7\x7c\xa8\xb7\x29\xeb" - "\xe5\x47\x24\xcd\x4b\x38\x0d\x73\xc7\x23\x46\xff\x73\x7b\xb9\x2d" - "\x78\x97\xa7\x6c\x44\x81\xf9\xc7\xa3\x59\xfc\x1e\x69\x13\x39\xff" - "\x68\xe8\x31\x2f\xc6\xb0\x77\x4e\x84\x4d\x55\xcb\xc9\xac\x74\xda" - "\xec\xc9\x5c\x5e\xe9\xb4\xd9\xd4\xa7\xd3\x1e\xbd\xa0\x74\x9a\xa2" - "\xb1\xd2\x69\x8f\xfe\x5d\xe9\xb4\x47\x3f\x97\xfb\x62\xd0\x69\xfc" - "\x8e\xf5\x9a\xa1\xd3\xb6\x0c\x11\x47\x58\x77\x74\xb9\x1f\x3d\x6a" - "\xe8\xb6\xf5\x48\x63\xdd\xc1\x38\x2a\x3d\xf5\x48\xa6\xf8\x7f\x33" - "\x49\xf9\x1d\xf0\xbd\x83\xcf\x2f\xb4\xeb\xf7\x3c\x9e\x8c\x57\x3a" - "\x6e\x76\x46\x9f\x8e\x7b\xb4\xa1\xaf\x2c\xeb\xb8\xd9\x3f\x54\x3a" - "\x4e\xa5\xd7\x3f\xc2\x3a\xee\x91\x4c\xa6\x81\x0e\xdf\xc4\x6b\x78" - "\x7a\x7e\xa6\x63\x56\xa4\x8e\x8b\x96\xaf\xd9\xa5\x86\x8e\x63\xdd" - "\x86\xe7\x75\xd0\x69\x72\x0e\xc9\x72\xb6\x09\x34\x37\xe4\x8e\xfb" - "\x80\xdb\xcc\xf1\xd7\x98\x6e\x13\xce\xd0\x00\xfd\xec\x90\xde\xee" - "\xd9\x47\x0c\xdf\x47\xd0\xff\x68\x3c\x3b\xba\x2f\x46\x22\x7d\x9b" - "\xcf\xce\x7b\xcb\x4f\x90\xb7\x46\x94\xb7\x84\x8e\x53\x7e\x09\x74" - "\x45\xe2\xd3\x9f\x73\xdf\x62\xde\xf1\x23\xbe\xb2\xee\x39\x4d\x8f" - "\x0d\xcc\x0f\xd0\x55\x98\xab\x7f\x5e\x65\xc2\x3b\x67\xd4\x3b\xb9" - "\xc6\x70\xdb\x22\x8e\xaf\x07\x41\xe8\x67\xbe\x7f\x85\xf5\xad\xbc" - "\x4c\x7d\xaf\xc9\xfa\x60\x53\x61\x0e\x74\xcd\x59\x7a\x4c\xce\x4b" - "\x64\x7c\x9b\xd5\x71\x61\xfd\x51\x7f\x9f\xd4\xcf\xfb\xbf\x5f\xbe" - "\xfc\xe3\xc9\x97\x2f\xff\xf8\x2d\xac\x8b\xd0\x3e\x6b\xd8\x1d\x0d" - "\x67\x50\xc8\xc8\x77\x9a\xf3\x3d\xa0\xaf\xc5\x7c\xee\x1a\x2e\xe7" - "\x68\x36\x03\x26\xf3\xdf\x06\xe4\x93\x31\x43\xa0\x2b\x27\x2e\x23" - "\x8e\xd7\x12\x59\x76\x7d\x1f\x8d\x1f\xcf\xb9\xcc\xba\x5f\xaa\xb7" - "\x86\x64\xcc\xd8\xc3\xb0\x49\x39\xa6\xd1\xa6\xde\xf5\x8f\xc7\xdb" - "\xa0\x37\x7d\x11\x7e\xb1\x3c\x1f\xfb\x36\xc7\x35\x60\xfb\xb2\x4a" - "\xcd\x37\xaf\x87\x7e\x1e\xcc\xe7\x61\xf8\x6c\x4c\x7e\x78\x86\xe9" - "\xb0\x8c\x65\x96\x6f\x37\xca\xf6\xb7\xce\xc2\xf5\xea\x75\xb2\x8f" - "\x69\x00\x65\x66\x19\x65\x18\x36\xfb\x29\x62\x5c\xfe\xb6\x3c\x53" - "\x1a\xea\x60\x5d\x78\x3d\x6c\xd1\xc1\xaa\x9e\x02\xd2\xeb\xa9\xf0" - "\xd1\x63\x33\x2e\x77\x36\xa3\xff\xf6\xe5\x37\x5e\x79\xfb\x48\x6f" - "\x5f\x01\x7d\x45\xfb\x2e\x53\x6f\xc1\xd8\x2b\xaf\x37\xcd\xa8\xd7" - "\x79\xe5\x74\x2d\xd8\xf5\xf5\xe9\x9a\xa5\xd3\xb5\xc0\xf7\x15\x74" - "\x8d\x53\xcf\x9c\xf4\xaf\x5f\x8f\x5d\xaf\x67\x4e\x6e\xbc\x7a\x48" - "\xfe\xf5\x7b\x6e\xca\x62\xc4\xda\xec\x84\xec\xa8\x58\x75\x73\xaa" - "\x23\xe3\x17\x77\x4a\xb9\x9a\xb3\xad\x37\x5e\xb2\xda\x2b\x87\xae" - "\x9e\x73\x28\x7f\x2b\x8f\xef\x42\xf3\xd1\x9c\x46\x8e\xe3\x3a\x71" - "\xa5\x3a\x93\xad\x97\x69\xbd\x5c\xdc\x64\x8e\xd1\xc5\x31\xf9\xbc" - "\x36\xb4\xbd\x86\x63\x97\x1c\x2a\x60\xff\x7b\xcc\xa9\xa0\xe3\x9f" - "\xb8\x81\x63\x8e\xe1\x7e\x00\xee\x33\x95\x0e\x78\x22\x13\xf5\xf4" - "\x7f\x76\x72\xed\xa1\xe2\x6d\x65\x59\x49\xfd\xf9\xd7\xa3\x3c\x6c" - "\x8a\x67\xe5\xda\x94\x96\x72\x70\x06\xe6\x12\x7a\xbc\xbf\xc2\x2f" - "\x64\x0c\x38\x57\x1e\x9f\x27\xc1\xb8\x58\x38\x50\x3f\x07\x00\x7a" - "\x94\x83\xae\x4f\x6c\x35\xe8\x61\xa4\x23\x6d\x8f\x41\x0f\xd8\x37" - "\xa9\xde\xad\x21\x3e\xa7\x13\x50\x67\xb2\x9f\xf8\x77\x51\x79\xc8" - "\xa1\x60\x3f\xa9\xf6\x68\xb8\xbe\x9e\x3c\xb3\x9c\x37\x95\xf1\xbc" - "\xe9\xc9\x03\xfe\xe4\x43\x0e\x03\x0f\xb1\xd8\x66\xe2\xb3\xdf\xa3" - "\x31\x96\x6e\x50\x31\xf7\x12\xf8\x9c\x9c\x7c\xbf\x38\xd3\xa4\x68" - "\xf2\xe4\x38\xd1\xc9\xb1\x63\x24\xec\x54\xe0\xd9\xc6\x70\x7d\xb8" - "\xfa\x57\x64\x72\xdc\x0b\xbd\x3d\x4f\x8e\xd0\xd6\x1e\x9c\xa1\x75" - "\xd9\x4c\x06\xbe\x75\xf2\x4c\xeb\x93\x68\x7f\x81\x8a\x13\x2b\xf1" - "\xb1\x99\xd8\x9f\x5f\x4b\x39\x54\x2c\x56\xd8\x68\xcf\xa2\x76\x39" - "\x6f\xe2\x3a\x47\xa3\x7e\xc1\xf3\x24\xd8\x26\x28\xb7\xb5\x97\x6e" - "\x80\x2b\xba\x0c\xba\x3d\x39\x45\x8d\xcb\xaa\x8d\x81\x15\x36\xd3" - "\x61\xbf\x3c\x6f\x47\x19\x76\xd7\x97\x2a\x16\xf6\x93\xc7\x0d\xda" - "\xf5\xe2\x04\x7c\x38\x8f\xf2\x6f\x7a\x32\x64\xe0\x24\x65\x37\x85" - "\xcf\xef\x3e\xe1\xe7\x73\x43\x8a\xfe\x87\x53\xbb\xdc\x85\xf6\x4b" - "\xe9\x5f\x38\x26\x82\xfe\x89\xcc\x7b\x4c\x7f\x5e\xeb\x00\x5d\x1e" - "\x03\x2d\x2d\xea\xbc\x03\xdb\x33\x85\x73\xf1\x9c\xca\x78\x6a\x95" - "\x06\xcd\xf3\xcc\x6a\x9d\xac\xb0\x26\xa2\x1f\xd0\x5e\x1b\xdb\x6a" - "\x09\x46\xfb\xb9\x0c\xd3\x80\xe3\x4a\x72\xdd\xc0\xe7\x6a\xd4\xbd" - "\x3b\xb6\x4d\xab\xd5\x59\x12\x52\xbe\x25\x85\x47\x23\x62\x8b\xfb" - "\x4b\xec\x22\xa8\xce\x25\x17\x3a\xf7\x94\xf9\xcd\xfd\xe9\x00\xe6" - "\x41\x19\xa3\xd2\x24\xd7\x15\x60\x73\xcd\xfb\x44\x00\x37\xd5\xf7" - "\xf3\xb6\xa8\xb4\xb9\x7f\xc7\x15\x3c\x36\x77\xbc\x40\xdd\x7e\x97" - "\x8c\xb1\x82\xb6\xcd\xf3\x31\xcf\x19\x7c\xc6\xeb\x90\xca\x67\x7c" - "\xee\x76\xd6\x29\x06\xcd\x81\x7f\x4a\x97\x7b\x6e\xb1\x81\xbf\x91" - "\x9f\xfb\x8e\xf3\xf0\x9e\x4d\xa3\x3d\x28\x75\xad\x3a\x33\x34\xb7" - "\xd6\x90\x61\xae\x83\xfb\x99\x75\x0d\xd3\x43\xd1\x62\xee\x81\x68" - "\x58\x36\x93\x8a\x9b\xc9\x3c\x0f\x79\x5c\x1e\x4c\x42\x1e\x5f\x1f" - "\x8c\xb9\xb3\xd5\xbb\x5e\x3c\xd9\xcf\x5f\xfa\xe2\xa9\xfe\x98\x37" - "\x99\xdb\xd5\x87\x2f\xcb\xdf\xbc\xde\xfe\xe7\x77\x01\x97\x8d\x63" - "\xf0\x4a\x1d\x53\x32\x9c\xf1\xf5\x73\x6c\x5b\xc9\xeb\x80\x5f\xcd" - "\xb8\x73\x1e\xa3\xcf\xfa\x78\x71\x9e\x23\x12\x8e\x70\x49\x5c\x25" - "\x1c\xa5\x3b\xfc\xbc\xb7\x6d\x57\xfb\x2d\xf3\x36\x45\xb4\x3b\xd5" - "\xc0\xa7\x4f\x27\xcc\xdb\x13\xcb\x93\x5c\x37\xc7\xe2\xd3\x61\xb3" - "\x2e\x49\x3b\x41\xf3\xb6\xea\x78\xd9\xb8\x1f\xfb\x1b\xdf\x38\xce" - "\x25\xc7\x3e\xdd\xa8\x74\x08\xfa\xd9\x31\x7c\xa3\x3a\x47\x14\x50" - "\xf1\x4f\x7f\x3e\x42\x98\x7e\xc5\xb4\xe2\xf5\x74\xbf\x8c\xd7\x21" - "\xcf\x98\xff\x9c\xf7\xf8\xc5\xa0\xe2\x5f\xc9\x58\xb7\xba\x6f\xa0" - "\xbf\xb1\x38\x24\x63\xf9\xb9\x4a\xf8\xcc\x6d\x88\xe7\x7a\xd2\xf7" - "\xed\x70\x49\x88\x66\x06\x59\x26\x7e\x5e\xc2\x67\xe9\x55\x1c\xf1" - "\x9f\x97\x1b\xe7\xe7\x39\x76\x26\xc7\x7d\x85\x1e\x4a\xec\x8b\xdb" - "\xea\xc8\x63\x1b\x4b\xef\x5f\xda\x60\x12\x47\x95\xfc\xff\xfc\x8f" - "\x7c\x5e\x5e\xed\x63\x9d\x80\x4e\x48\x3c\x75\x82\x7e\xfe\xb9\x5a" - "\xf7\x31\x74\x94\xe3\x61\xde\xcb\xf2\xe9\x30\x50\x57\x07\xe4\x7b" - "\xc6\xa5\xba\xe4\xe7\x7f\x34\xe6\x2e\x7c\xfe\x4e\xed\x8b\xf5\xc1" - "\xf3\xd1\xcf\xe5\x5c\xb0\xaf\x0f\x3e\x06\x2c\x47\xf6\xa5\x7a\xc1" - "\x31\xc5\x90\xbd\xe2\x1b\xf9\x0c\xf7\xcf\xd3\xb8\xfe\xfe\xc6\x0b" - "\xe1\x7a\x98\xfb\xc9\x72\xd2\x1e\xbf\x6f\xe2\xef\xb3\x39\x76\x1b" - "\x6d\x30\x68\xa2\xda\x30\x3f\xb9\x33\x65\xef\xba\xbe\xb6\xcf\x97" - "\xb6\x6b\xc4\xfb\xf1\x11\xb4\xe1\xe7\x1c\x35\xae\xcd\x07\x7d\x0a" - "\xf5\x58\xb5\x2a\x0d\xb2\xf3\xb4\x58\x91\x47\x0a\xc7\xf9\x64\xc8" - "\x3a\xf2\x8e\xf4\xd1\x05\x9b\xda\xef\x9a\x8f\xf6\x3b\x2a\x54\x39" - "\xc7\x31\xc6\x25\x6e\x3b\xa3\x71\xdc\xcf\xb6\x86\x8a\xa9\x30\xff" - "\x7d\xc6\xd7\x7e\x13\xf7\xf1\xfc\xe7\xa5\x0e\xe7\xf8\x0a\x3d\x8e" - "\xa4\x40\x4f\x26\x75\xf6\x38\xa0\x17\x32\x4d\xa8\x07\xfa\xbf\x33" - "\xa0\xd7\xb9\xcb\xc0\x95\x71\x93\xf1\x39\xc5\xfc\xf8\xf4\xe5\x7a" - "\x65\xcc\x27\xc7\x00\xfc\x2c\xf8\x5d\xf5\x75\xed\x12\xd8\xe9\xed" - "\xfe\xca\x03\x69\xda\x12\x71\x84\xe3\x8b\x61\x2e\xd2\x5e\x05\xfe" - "\x1d\xb4\xca\x03\xdb\xfc\x31\x53\xfe\x32\xca\xc1\x9c\x99\xc4\x45" - "\x91\x5d\xa7\xe1\xba\x44\x8c\xe1\x38\xe3\x78\xce\xd2\x9f\x47\xf2" - "\x73\xe7\x12\x31\xbb\xcb\xfd\x54\x81\xb1\x47\xa8\x62\xe3\x3c\x55" - "\xdc\x1b\x4f\x28\xf1\x51\x3e\x4f\xc4\x71\xa7\x34\xcc\x85\xda\xb9" - "\xde\x7c\x9e\xcf\xa2\x3e\xe4\xab\x81\xbd\xd1\xc6\xf9\xfc\x89\xb7" - "\x0e\xc6\x2f\xb3\x9f\xbd\xd4\x76\xc6\xab\x33\xf9\x40\x9a\x81\xeb" - "\xa0\x40\x8e\xe9\x6b\xe2\x16\x32\x70\x43\xfa\x91\x2a\x95\x1e\xe2" - "\xf8\x87\xec\xeb\xd8\xe5\x7e\x7a\x98\x81\xab\x81\x03\xd7\xc7\xe7" - "\x37\x45\xca\xde\x1a\x8e\x3d\xc3\xf5\x71\x3c\x55\xe4\xcd\x35\xf0" - "\xfd\xba\xbc\x5c\x56\x2b\x04\x8f\x9f\xac\x7f\xed\x43\x89\x5a\x02" - "\xac\x53\x9e\xae\x3d\x5c\x1b\xe0\xf5\xee\xd7\x51\xc7\x6b\x9d\xc2" - "\x41\x5a\x8f\x23\x6e\x1f\x73\x19\xe4\x6f\x95\xfa\x61\xed\xde\xd7" - "\x34\x91\x0b\x3d\x81\x72\x3d\xb9\xbc\xd6\x04\xb9\x2d\x32\x37\x96" - "\xb6\xf3\x99\x4b\xe8\x9c\x22\x33\xf2\xd4\xb0\x9d\x85\xf9\x56\x50" - "\x7e\xbf\x02\xba\xc9\xb3\x64\x0c\x60\x14\x25\x99\x9d\x64\x6e\x8c" - "\x89\x53\xd5\x1f\x7f\x74\x5a\x0e\x56\x74\xae\x3d\x58\xd0\xe5\x2e" - "\x82\xfd\xff\x4c\xbf\x7b\xbe\xab\x87\x80\x9e\xc8\x57\x3d\x94\xe7" - "\x7b\x45\x8e\xcb\xe5\x35\xf6\xab\x59\x07\x8d\xb6\x51\xaa\x48\x3e" - "\x58\xc1\xfa\xb6\x33\xe5\x60\x01\x8f\x25\x28\xdf\x60\x94\xe7\x71" - "\x9d\xc7\x0e\xf4\x97\xad\xaa\x57\x1f\x16\x1d\x55\xf2\x5c\x74\xd4" - "\x90\xd1\x78\xf5\x94\x6c\x13\x9a\x6b\x04\x99\xbc\x18\xb7\x6e\x0b" - "\x52\x6a\xdd\xeb\x44\xd5\xcb\x45\x70\xe3\x72\xcc\x61\x86\xf2\xf7" - "\x2e\x8a\x72\x59\x46\x99\xbf\x37\x80\x5f\x12\x81\xcb\xc6\x8b\xa8" - "\xb3\x4c\xe5\xd3\xfd\xd6\x6d\xc8\x57\x82\x6b\xba\x30\x99\x68\x53" - "\x19\x59\x36\x69\x64\xae\x2e\xa3\x61\x48\x83\xad\xfb\xcc\x2c\x43" - "\x66\xe3\xe1\x50\x55\x47\xf4\x12\xea\x5d\x55\x26\x42\x1f\x63\x3c" - "\x77\x6b\x22\xf8\x75\xe8\x8e\xf6\xef\x51\x6d\x7c\x66\x8f\x61\x13" - "\xe2\xde\x13\xed\x77\xf0\xcc\x25\x67\xbc\x9f\x58\xb8\xb0\x24\x7f" - "\xd1\x5c\xbe\x64\x8e\x78\xee\x96\x94\xc8\xb5\x10\x1e\xff\x54\x9c" - "\x8a\x67\x5a\x79\xdd\x71\xe3\x60\x63\x1f\x7d\x81\xcd\x58\xfb\xd4" - "\xfd\xf5\xef\xe6\x39\x1d\xcf\x7d\xf0\x6e\xcc\xa1\xd2\x95\x0c\x26" - "\xe1\x73\x0b\x99\x62\xeb\x9b\x37\xa7\x64\x4e\xd1\x5d\xbc\x63\x96" - "\x12\xa7\x9e\x05\xb9\x31\xf5\x94\xf7\xd6\xa3\xc6\x9f\x80\x89\xf3" - "\xad\x4f\xdc\x2a\x92\xdb\x73\xd4\x59\xe9\x05\xdb\x8c\x35\xad\x7e" - "\xfc\x1c\x5b\xc3\x6b\x3f\xf6\xb0\x3c\xb8\x56\x92\xe9\x77\xcb\x5b" - "\x4d\x6c\x47\x96\xe1\x9e\xd7\x16\xe4\x1a\x99\x1e\x2f\xea\xa3\xf3" - "\xad\x18\xdf\x17\x04\x45\xe5\x5e\xcc\x8f\x16\xf4\xbb\x66\x13\xe9" - "\x23\xc2\x3e\x85\x6d\xb4\x30\xed\x72\x3e\x47\x9c\x9f\xdb\xc3\x3c" - "\x1b\x53\xee\x79\xd5\x67\x0b\xc1\xff\x45\xf6\xde\xf3\xbc\x7a\x9e" - "\xaa\x21\x46\x1c\xae\x85\xb3\xfb\xf5\x17\xa9\x38\x58\xad\x78\x7c" - "\xe1\x27\x8d\x98\xaf\xa1\x9d\xbf\x38\x41\x0b\x0f\x99\x6d\xb0\x11" - "\x86\xd2\x4e\xdc\x7f\xc2\x65\xf9\x5d\x14\x1f\xdd\x70\x66\xab\x19" - "\xda\x05\x5a\x26\x41\xa8\x3f\x32\xeb\x37\x89\xf8\x99\x44\x82\xdc" - "\x4d\x4d\x44\x0f\x0e\xb8\xca\x4c\xd6\x41\xa9\x96\x6f\x7f\x6b\x98" - "\xed\xee\x1f\x8f\xcd\x76\x95\x95\x42\x2b\x87\x82\x56\x11\x19\x3f" - "\xed\x54\xfb\x43\xb7\x94\x93\xf4\xa7\xa9\x3c\x15\xf7\x2c\xe5\x7a" - "\xb7\x28\xe6\xb3\xeb\x5a\x8a\x48\x73\x3d\x47\xa6\x77\xba\x7d\x26" - "\x8e\xd1\xcc\xf6\x33\x7f\xeb\xe2\x04\x15\x3f\x70\x10\x69\xa0\x97" - "\x53\x54\x88\x34\x65\x77\x16\xff\x52\x5b\x2b\xd2\xfa\xe0\x9b\x89" - "\xe1\xbb\x5e\x23\xd3\xb6\xb2\x76\x93\xd7\xfc\x63\xf2\xda\x03\x74" - "\x10\xf7\x71\xfb\x0a\x75\xb2\x2d\xcb\x30\xea\xdd\x1a\xc7\xeb\x32" - "\xe9\xe7\x4f\x4d\x67\xa9\xf8\x8f\xbb\xfb\x29\xc7\xe7\xbd\x3b\x53" - "\x3e\xf8\xb7\x2e\xf7\xb3\x66\x1f\xdd\x33\x51\xb7\x65\x30\xe6\x3e" - "\x8b\xf9\xff\x42\x19\xe7\x09\xef\x3f\xe5\xef\xc2\x20\x2d\xd3\xc8" - "\x13\xdf\x9e\xe1\x35\x78\xe1\x61\x3e\x10\x17\xff\xde\xce\x67\x5b" - "\xfa\xf1\x83\x19\xe0\x75\xde\xc1\x7b\x91\x49\x83\xa0\x7f\x5c\x17" - "\x44\x4f\xd8\x4d\xe9\x10\x27\x53\xd8\x44\xdf\x0e\x5d\x14\x79\xcd" - "\x1d\xe7\x65\x4c\x53\xd6\x35\xbf\x99\xf7\xb1\xc9\x1b\x3c\xe7\xf1" - "\xae\xd1\xa8\x05\x76\xa5\xb7\xf6\x9c\x47\xc5\x3e\x0d\x53\x33\xfd" - "\x95\x9a\x9d\xff\xb7\xdc\x5b\xfe\x57\xa4\x0b\x19\x0b\xbb\xe7\xa2" - "\x98\xe5\x35\xff\x1b\xf1\x77\x8a\x78\x8c\x03\xdd\xed\x67\xe9\xd9" - "\x7f\x7c\x04\x38\xef\xfc\x07\x60\xc9\x98\x69\xe3\xe8\x20\xee\xd1" - "\xa6\xde\xf1\x2f\x6e\xac\x99\x04\xcf\x7a\xab\xf3\x31\x93\x86\xb1" - "\x94\x63\xdb\x61\x0c\x1d\xc3\xed\xc2\x73\x16\x3f\xe3\x3a\x92\xaf" - "\xd6\x55\x9e\x2d\xd6\xd0\x63\x3c\xb6\xe6\xf1\xb8\x89\xf4\x59\xf5" - "\x17\xe5\x58\x3b\x43\x7f\x9e\xa2\x3f\xe7\xea\xcf\x13\xf5\xe7\x1c" - "\xfd\x99\xd7\xe5\xf5\x31\x79\x51\x75\xaf\xbd\x60\x1a\x70\x14\xcf" - "\x5b\x8d\xbe\x00\x3e\x03\xad\xce\x95\x72\x6c\xd7\xf1\x18\xa3\xe3" - "\x95\xa5\x3f\x1b\xf8\xdc\x60\x0d\xad\xfc\x5f\xc2\x67\xb1\x3d\x1a" - "\x9f\xc5\x59\x11\xf8\x90\xd5\x99\xf3\x75\xf0\x49\xb3\xf2\x77\x22" - "\xfe\x07\xf8\x30\x2e\x9c\x86\xfa\x77\xc7\xe0\xe3\x31\xf0\x89\xcb" - "\x6f\x4b\x44\x3b\xdb\x35\x8b\xbf\x21\xe3\x3a\x0f\x60\x9b\xa5\xbe" - "\xdb\x88\x53\xb8\x38\x74\xb9\x38\x85\x90\x05\x8c\xdb\x25\x68\xff" - "\xe2\x26\xdd\x7e\x3b\xa0\xec\xfc\x92\x31\x86\xef\x18\xda\xda\x50" - "\xa5\xda\xba\x6b\x0d\xc7\xea\x5b\x46\xdf\x74\x39\x45\x3b\xe6\xdd" - "\xff\xc9\x73\xc3\x48\xb8\x45\x25\x8b\x17\x3f\x73\x97\xbd\x68\xce" - "\x82\xb9\xf6\x11\x85\xf6\xc5\x8e\xf9\xf3\x4a\xe6\x46\xfb\x53\xa4" - "\xe9\xdf\xef\x91\xe7\x44\x78\x2e\x25\xe7\xd2\xe0\x7f\xa9\x27\xa5" - "\x4f\x5e\xc9\x05\xe1\x2e\x29\x60\x9d\x5b\xf7\x92\xfa\xce\x13\xf0" - "\x69\x34\xc6\x10\x63\xfe\xcb\x63\x08\xd2\x8f\x63\x9c\x9c\x1d\x91" - "\xce\x79\xfd\x46\x1a\xc3\xd7\x75\xd3\x80\x13\x54\xf2\x4b\xae\x33" - "\x2e\x0d\x2f\x8a\xad\xb0\x9b\xf8\x1b\x16\x26\xe8\x14\xc1\x71\xb7" - "\xf8\xfc\x25\xca\x89\x93\xf4\x9c\x9c\x57\xcc\xc2\xb3\x9a\xb3\x09" - "\xe0\xf8\xdc\x43\x28\xb3\x0d\x69\x66\xb6\x21\x30\x0f\x6c\xe7\x72" - "\x48\x7f\x86\xe3\x60\x20\xdd\xa2\xc7\x13\xe3\xb4\x55\x1c\xa7\x02" - "\x69\x69\x11\x69\x2f\x23\xcd\x86\x34\xbb\x0e\x6f\x3b\xd3\x19\xcf" - "\x39\xfa\x3a\x19\xe7\x79\x5f\xaf\xb7\x3c\x12\x67\xfe\x86\xcb\x1d" - "\xb7\x65\xd9\x67\xcd\xfc\xfe\xb8\x1f\x3f\xb9\x70\xc1\xbc\x14\x92" - "\x64\xcf\xc4\x70\x9c\x75\x87\xf3\x96\xbb\xec\xc5\x73\xe7\x2e\xb2" - "\x2f\x9d\xbb\xa0\xc4\x3e\x67\xe9\x9c\x65\x29\x34\x6f\xe1\xa2\x27" - "\x39\xca\x02\x77\xcb\xe2\xfc\x27\xe7\xfd\x9c\x9d\x5e\x54\xee\x94" - "\x28\x3b\x61\x16\xeb\x36\x3d\x2e\xc9\x91\x2a\xb6\x21\x93\x3d\x79" - "\xb8\xe7\x78\x5d\x36\x5c\x1b\xf1\x3b\x80\xdf\x7e\xfc\x8e\xe1\x77" - "\xf4\x34\xad\x58\x83\xeb\x9e\x2e\xf7\x92\x42\xc3\x5e\xe9\xe3\xa1" - "\x25\x4e\x83\x87\x60\x5f\xec\x51\xe3\xdb\x92\x86\x96\x90\x94\x9f" - "\x5e\x9e\xaa\xba\xd8\xc7\x53\x1c\x6f\xb4\x85\x7d\xba\x96\xe0\x7d" - "\xb7\x5c\xab\xe4\x35\x93\x64\xa6\xdb\x49\x5a\xb6\xa5\xfe\x15\xd1" - "\xc4\xb1\x72\x70\x6d\x04\xbf\x34\xa9\xf8\x34\x4b\x33\x90\x6f\x38" - "\xea\x38\xa0\xea\xd0\x9f\x87\x88\x23\xfc\x0d\x97\x13\xfa\x33\xc3" - "\x02\x8c\x3b\xf9\x9e\xaf\xfa\xde\xa9\x55\xff\xc6\x9b\xa9\xef\xdd" - "\xd2\x66\xbd\x0e\x0f\x68\x51\x5e\xe7\x96\x73\x29\x39\x77\xe6\x35" - "\x62\x6b\xc2\xdd\x02\xf8\x9c\xd3\x12\x1f\x6d\x95\xf1\x2f\xcb\xbb" - "\xa1\x23\xbe\xf7\x3d\xaf\x53\xe6\x4f\xe0\x35\xe4\x69\xc5\x42\xe3" - "\x38\xe4\x5a\xe2\xd3\xad\x5c\x4e\x58\x3c\x79\xda\x86\x81\x39\xca" - "\x66\xe0\xb8\x83\x4b\x1b\x74\x98\x41\xa6\xed\x69\x5a\xf2\xb0\x9a" - "\x87\xaf\x58\xa3\x6c\x89\xa5\x7b\x0c\x5f\x4b\xc8\x68\x26\x9e\x1b" - "\x0d\x1d\xe0\xa3\xa5\xd5\xba\x5f\x9c\x47\x6f\x7f\x48\x7f\xde\xaf" - "\xe3\x98\xc0\xb1\x50\x80\xff\x51\xee\x3b\xd8\x2b\xfb\x71\x7f\x0c" - "\xf4\x69\x52\xf4\x71\xca\x38\x07\xb0\x9b\xf8\xfd\x31\xfe\xde\x0d" - "\xde\x1d\x53\x71\x46\x96\x8e\xe1\x36\xf7\xf9\xce\xd6\xe6\x00\xd7" - "\x3b\x79\x8f\x19\xb2\xb4\xdf\x7b\x91\xe5\x73\x69\x16\xe0\xed\x36" - "\xf4\x0e\xeb\x99\xfc\x30\xe4\x54\xce\xa7\x9c\x45\x86\xbe\xe9\xe3" - "\x03\x67\x79\x3c\x5d\x12\xaf\xdf\x15\xfd\x9d\x7f\x17\xee\xe7\x1a" - "\x81\xd3\x6e\xd9\x07\x1c\x8f\xf5\x62\xef\xbc\xad\x47\xe9\x48\xe7" - "\xb1\xde\x39\xa6\x8e\x07\xc7\x76\xf7\x31\x6e\xdd\x72\xdf\x5f\xd7" - "\x1b\xce\x90\xa1\x37\x0c\x38\xd6\x04\xa1\x59\x9d\xf8\x57\xb1\xcf" - "\xc9\x7b\x24\x3c\x5e\x4a\x7b\x04\x70\x06\x5d\x50\x67\xe0\xb4\xca" - "\x7d\xe0\x5d\xe7\x1e\xfe\xe6\x9b\xb4\x69\xdd\xcf\xfd\xdf\x3e\x5d" - "\xb4\x6c\x46\x24\x4c\x61\xd9\xe7\x64\xb8\xac\x8f\xd8\x26\xc9\x0f" - "\x9b\x39\x0e\x8d\x53\x1f\x5f\xa0\x83\x97\x95\x1b\xb8\x82\x86\x47" - "\x0c\x7c\xf5\x6f\x8e\x1d\x41\x3d\xbe\xe9\xe1\x1e\xf6\x05\x6f\x54" - "\xfd\xb9\x42\xea\x1b\xbc\xdb\x85\xb2\x07\x7c\xf4\x5c\x9a\x2e\x43" - "\x4d\x28\xbf\xeb\x70\xd9\x44\xe4\x59\xd6\xaa\xfb\x33\x1f\x45\xff" - "\x1e\xeb\xe3\xfd\x25\xcd\x11\xeb\x3c\xc7\x54\x1f\xfe\xb8\xfc\x04" - "\x2d\xb7\x45\xa4\xeb\x7d\x7b\x78\x06\xd2\x9b\xd5\x9a\xc9\x3e\x3d" - "\xbe\xdf\x72\xe5\xbb\xaa\xe3\xc8\xba\x80\xcf\xeb\xb1\x8c\x4b\xda" - "\xcb\x3e\x5e\x3e\xc3\x18\x2f\x00\x6b\x8f\xa4\xf9\x10\x71\x80\xe9" - "\xa4\xe2\x7d\x3c\x77\x51\xd1\x69\xb9\x33\x8a\xf6\x3c\x6e\xa2\x1e" - "\xa6\xd3\xa0\x55\x42\x1b\x14\x48\x10\xf9\xcb\xcc\xc4\xf2\xc2\x32" - "\xce\x7b\x83\xe0\x0f\x69\x57\x29\xba\x2d\xdf\x6f\xd0\xcd\xe8\x3b" - "\xa6\x93\x8f\x96\x67\x32\x6d\xa3\xdb\x38\xe0\xe8\x09\xa3\xed\xa0" - "\x29\xc7\x34\xc5\x73\x93\x2e\x17\x4d\x9e\xa1\xec\x3b\xb2\xe4\xcf" - "\x87\xcd\xdf\xa7\xc3\xce\x31\xa4\x68\xbb\xc2\xe6\xa3\x12\x67\xc4" - "\xbc\xe4\x08\xd3\x97\x65\x05\x78\x96\xe8\xb1\xb7\x8e\x28\x3f\xa6" - "\x25\x4d\xa2\x72\x5f\x89\x94\xe5\x25\x32\x46\x0a\xc7\xed\x3d\xca" - "\x34\x62\xbd\xc8\xb2\xc4\x32\xc0\xf2\xa4\x68\xb4\xa2\x24\x82\x46" - "\x8d\x4c\x1f\x9d\x4e\x7b\x62\x74\xf9\x5c\x7b\xd1\x38\xa5\x8b\xed" - "\x99\x23\x0a\x47\xcb\x40\x37\xf6\x7b\x27\xdc\x65\x9f\x31\x6e\x84" - "\xd3\x31\x72\x9a\xba\x4c\x98\x31\x85\xaf\x29\xd1\xf3\x3a\x3b\xea" - "\x39\x1e\x3d\x37\x5c\xe5\x50\xfa\x63\x45\xc0\x97\x70\xb5\xfc\x86" - "\x08\xc7\x9d\xad\x5a\x40\x14\x06\xde\x1b\x4e\xa3\x4f\x2d\xfb\xd2" - "\x39\xce\xf1\x74\x27\x71\x5c\xf4\x2f\xeb\xf1\xae\x0e\xe9\x83\x8a" - "\xf9\xfb\x08\x7f\x13\x5a\xf2\xbe\x74\x5e\xb3\x11\x95\x3b\x5a\xfd" - "\xc9\xa7\xda\xf1\xdb\xed\x4f\xfe\xa0\x7d\xd2\x2d\x2e\xd1\xe5\x2e" - "\x9d\x62\xb4\x8b\xd7\x76\x40\xa7\xf4\xe9\x4e\x11\x66\x1a\xe5\x3b" - "\x39\x16\x39\x60\x27\xf2\xda\x4e\x29\xda\x5f\xbc\x5b\xcd\x5f\x4b" - "\xc1\xff\x4b\x74\x7b\x86\x66\xe0\x19\xf6\xdf\xf7\xe5\x1a\x97\xe6" - "\xb6\xc9\x18\xe6\xda\xea\x5b\x1f\xc4\x7c\x60\xb7\x01\x13\xb0\xae" - "\xd2\xfd\x1e\x24\xbc\xaf\xeb\x57\xab\xad\x7d\x2f\xc3\x9a\xa0\xe2" - "\x42\x42\xc6\xcb\xeb\x4d\x5a\x5e\xaf\x9f\x0c\xde\x0d\x5a\x95\xc6" - "\x7e\x34\x79\xe0\xbd\x72\xce\x63\xbc\xab\x72\x6b\xbe\x2a\x93\x16" - "\x44\x3f\xa6\x29\xfb\xb9\x83\xf5\x27\xe6\xae\x2b\xc7\x1a\xe3\x9a" - "\x1c\x0f\x4d\x54\xae\xe6\x33\x2b\x1f\xe3\x72\xe7\xdd\x66\x82\xce" - "\x6e\xba\x31\x5d\xce\x51\x82\x9a\x3b\x81\x94\x2f\xf3\xca\xdb\x0d" - "\x1d\xcb\xfb\xa5\xd6\x55\xc2\xcf\x6b\xc4\xd6\x90\xf0\xcb\x58\xfb" - "\x3c\x76\xd0\x69\xf2\x96\x76\x95\x7b\xe5\x37\x38\xf9\xbb\x22\x01" - "\x7d\xdc\x08\xab\x71\x03\xf5\xfb\x13\x6f\x2d\xc0\xf8\x90\x70\x9a" - "\x60\xeb\x02\x7f\xa6\x0d\xef\xb5\x68\xa0\x95\x97\xc7\x49\xa6\x4f" - "\xca\xfe\x6d\xec\x03\xc3\x6d\xb5\x86\xd0\xe6\xc8\x76\x99\x34\xdf" - "\x06\x37\xda\x65\x42\xbb\x9c\x67\x58\x66\x82\xec\x9b\x04\x79\x1b" - "\x22\xe3\x59\xcb\xf9\x79\x99\x3d\xb2\x8d\xac\xff\x55\x1b\xca\xc6" - "\xc7\x6b\xa3\x30\x71\x1b\x99\x06\x65\xd7\xe9\xf2\x26\xf1\x64\xfd" - "\xd1\x41\x2b\x8f\x0d\x5a\xc5\x3e\x41\xfb\xd2\xa1\xdf\x26\x70\x1f" - "\x62\xfc\xac\x66\x3c\xe3\xf5\x17\xc3\xd3\x61\xf9\xac\xab\xca\x0b" - "\x80\xcb\xae\xf8\xf4\x2e\x6b\xbe\x3c\xbd\xcb\x7e\xc5\xe5\x19\x0f" - "\xde\xdf\xb1\x86\x4c\xd0\xc1\xa7\x76\x63\xbe\x56\x11\xaf\xde\x41" - "\xab\xb6\x32\x5e\x71\xdf\x09\x96\x17\x5d\x07\x81\x0f\x05\xe4\x44" - "\xb0\x4e\xea\x72\xbb\x72\x0d\x7d\x64\x4d\xb0\x27\x4a\xfd\x60\x12" - "\xd5\xf1\x60\x58\x57\x55\xf3\x3e\xd7\x04\xd4\x1f\xf7\xbd\xc6\xdf" - "\xee\xa8\xd8\x47\xda\xea\xef\xde\x68\x4d\xa0\xbb\xfd\x89\xdf\x4d" - "\xb1\x3a\x43\x19\x4c\x43\xc0\x74\x42\x8e\x1f\xe2\x79\xaa\x5a\x1b" - "\x71\xc1\xfe\xff\xa5\x8c\xcf\xe4\x4f\xde\xa7\xef\x1b\xb9\x30\xfe" - "\xd5\xd8\x8d\xb5\x79\x3c\xb7\xf9\xe8\xef\x0e\x25\x97\xdf\x7c\x5d" - "\xac\xfd\x60\x8f\xe6\xb6\x0a\xfb\x72\x2b\xec\xc8\xf2\x95\x9a\xe0" - "\xef\x39\x7c\xb0\xa7\x8f\x4f\x94\xbf\x94\xc1\x27\x5d\xee\xf2\x8c" - "\xf8\x3c\x50\x3e\xe9\xf2\x3c\x50\xfe\x0d\x7e\xcf\x74\x57\x73\x95" - "\xf2\x22\xc3\x4e\x11\xab\xbf\xf9\xba\xbd\x4c\xd6\x4f\xaa\x6e\xa6" - "\x49\x0e\xe3\x3f\x05\x74\x29\x47\xde\x1a\x43\x0f\x30\xbf\x58\xc3" - "\xfc\xad\x0b\x92\x3c\x8d\x77\x18\x57\x4a\x2c\x6a\x1d\xfc\x40\xb1" - "\xfc\x7e\xa5\x7b\x45\xb5\xdf\xe5\xd8\xcc\xdf\x69\x0d\x24\xef\x2b" - "\x45\x9e\x56\x1f\x35\xaa\xfd\x56\xcb\xbe\x12\xc0\x70\x6e\x52\xfe" - "\xd0\x16\x19\x2f\x0a\x32\xcd\x31\xa2\x58\xae\x91\x96\x0e\xbc\x39" - "\x5e\x14\xe6\x3b\xab\xd2\x7a\xc7\x25\x77\x0e\x74\x85\x90\xb6\x18" - "\xc6\xa5\x61\x9d\xa0\xdd\xcb\x26\xad\xe1\xe2\x68\x1b\x71\x9b\x2f" - "\xae\x1e\xda\xf0\x8b\xdb\xc8\xfc\x07\xdb\x13\x54\x7c\x07\xa5\xaf" - "\xfa\xbe\x99\xfe\x2b\x9b\x4c\x4c\x07\x1f\xad\xb2\x2b\xda\xad\x2a" - "\x30\xfa\xc7\x47\xae\x23\x52\x77\xae\x7e\xb4\x7d\x7a\x48\x7c\xa9" - "\xd6\xb9\x57\x41\xff\x3d\x53\xa3\xde\xaf\x68\x8f\x5d\x03\x62\x7b" - "\xde\x3e\x7f\xb1\xbd\x70\xe1\xd2\x05\xc3\x87\x47\xcd\x95\xcc\xea" - "\xbb\xb8\xab\x36\xa9\xf1\x74\xd5\x11\x03\x6f\xb6\x4b\xf0\x8c\xf6" - "\xaf\xb8\x24\x96\xfd\x94\x7c\xdd\xcd\x3d\x3f\x8b\xfa\xee\x6f\xa7" - "\x29\xb7\x47\x3c\x7e\x8f\xa6\xdc\xf1\xbd\xfc\x07\xe7\xce\x29\x5c" - "\x16\x91\x7a\x67\xe4\xba\x61\xd5\xeb\xa8\x3b\x71\xe8\x3d\xd0\x15" - "\x09\xd3\x56\xf0\xd8\xe2\xfe\xb0\x2c\x24\x4e\x41\x5f\x67\x43\xc6" - "\xf2\x9b\x4b\x42\xd4\x0c\x5d\x26\xbe\xc9\x3a\x7c\x80\x3a\xdb\x09" - "\x7b\x0a\xbc\x65\x45\xdb\xfd\xb0\xeb\x2e\xf0\xfa\x0c\xca\x7d\xde" - "\x52\xc3\x31\x9d\x3f\xd0\xfd\x1a\xdc\xb5\x48\xbf\x06\xd7\x4f\x70" - "\xbd\x0a\xd7\x3f\xda\x17\x60\xde\xc3\xbe\xf4\x4b\xd8\x97\xde\xfd" - "\xae\xf4\x07\x0a\x94\x13\xfb\x04\xe1\xfd\x2c\xb6\x41\x7c\xb4\xda" - "\xcc\xeb\xe0\x9c\x17\x69\x5b\xec\x4f\x51\x16\x5f\x85\xdc\x1b\x74" - "\xd7\x8a\xca\x0f\xfc\x62\x73\x1e\x7f\x6f\x2d\xe3\x24\xad\x4e\x48" - "\x4c\xf8\x9c\x12\x6d\x96\xd4\x2e\xf7\x6a\x94\x5d\x30\x8b\xe9\xd4" - "\xdf\xb7\x68\xe5\x37\x80\x63\xec\xc3\x3e\xdb\x70\x2d\x49\xfb\x56" - "\xb7\xe7\xea\xe4\xb8\xb0\x7a\x56\x84\x4d\xc7\x7b\xd3\x29\xca\x3e" - "\x11\x61\x65\x9f\xae\x2e\x31\xe4\x00\xf7\xe5\x06\x9f\x46\xc5\xd7" - "\x5b\x50\x32\x77\xd1\xdc\x42\xfb\x88\xc5\x29\x14\x11\x5d\xcf\x31" - "\x77\x81\x7d\xd1\xdc\x67\x9f\x9b\xbb\x58\x46\xc6\xe3\xb7\x51\x63" - "\x3e\xf4\xfd\xef\x33\x8c\x73\x5f\xf6\xa1\x4c\xdf\xd5\x5f\x70\x4c" - "\x36\xb1\xf6\xf7\xdb\xd8\x77\x47\xcd\x37\x44\x66\xf4\x7c\xe3\x79" - "\x15\x77\xa2\xe2\x03\x9f\x9a\xeb\x3c\x2f\xbf\x63\x7d\x82\xd6\x54" - "\xf7\xc5\x7f\x5f\x33\x1e\xb4\x34\xe9\x74\xbb\xd0\xe5\x5e\x93\x6d" - "\xd0\xcd\x47\xcf\x7b\x74\x5b\xaa\x43\xea\x0f\x8c\xb1\xd0\x7f\x51" - "\xe3\xab\xfa\x06\xed\x1a\x8e\xcb\x91\x28\xd7\x93\x93\x3f\x68\xe3" - "\xba\x18\x26\xea\xf3\xa0\x7f\x7c\xd0\x9b\xac\xdf\x2a\x0c\x78\xa8" - "\x33\x93\xeb\xd3\xe7\x41\xd7\x9f\xa6\xe7\xe5\x9a\xb3\x56\xf1\x41" - "\x1b\xeb\x14\x8e\x21\xa2\x55\x02\x8e\xdc\xa3\x7d\xde\x23\xd7\x61" - "\xf9\x1b\x04\x80\xc5\xeb\xc0\xd0\x73\x01\xfe\x5e\x31\xa7\xa9\xd8" - "\x70\xab\xd7\xf1\xda\x33\xea\x3a\x0e\xfc\x83\x7d\x67\x1b\x9e\xf7" - "\xb0\xdd\xc9\x70\x7d\xb4\xe6\x00\xc3\x53\xb1\xef\x9e\x1f\x06\xde" - "\xc9\xe8\xb3\x9f\x9e\x2f\x88\x98\x97\x31\x3e\x12\xcf\x00\x70\x91" - "\x71\x56\x95\xaf\xa9\x6c\x37\xeb\xcf\x4d\x7a\xdb\x8d\xf6\x00\x1e" - "\xf4\xdf\xea\x34\xc3\x6f\xc2\xa7\xb7\x9b\xf1\x63\xdc\x23\x71\xd6" - "\xf1\xad\x61\x7c\x51\x6e\x5b\x84\x6c\xf3\xba\x4c\x12\xd2\xf6\xf7" - "\xf9\xb0\xaf\xa1\x58\xbd\xb1\x70\x81\xbd\x68\xfe\x82\xa7\xf3\x97" - "\xce\x79\x7a\x6e\xfe\x73\xc5\x23\xed\xcf\x2d\x78\xa2\x68\xe1\x93" - "\x4f\x33\xd7\x2c\x2e\x79\xee\xc9\xa7\xed\xac\x59\xf2\x27\x4e\x99" - "\x92\x7f\xcf\x43\x33\x1f\x4e\xa1\x7b\xe6\x20\x0d\x33\xff\x29\x59" - "\x23\xd5\xab\x07\x27\x4d\xf8\x69\xfe\x84\xe9\x0f\x4d\x9b\x25\x0f" - "\xbd\xf4\xbe\x9f\xb8\x20\x7e\x86\x28\x3e\x4c\x03\x2f\x1d\x47\xff" - "\x26\x9d\xa0\xca\xb1\x2a\x5e\xfa\x0b\x45\xd1\xf1\xd2\x5f\x00\xd2" - "\x2f\x6c\xc5\xef\x00\xd1\x2f\xfc\xf8\x41\xbb\x57\x66\x29\xfe\x4a" - "\x7e\xbc\xcb\xfd\x42\x4d\x1f\x7f\x55\xca\xb3\x94\xec\xa7\xa4\xd6" - "\x67\x5f\x80\xfe\x5f\xbd\x3f\xf2\x5d\xdf\x7c\xf2\x85\xa3\xbd\xf3" - "\xc9\x5e\x9d\xf2\x42\xef\xdc\x12\x69\xed\x98\x57\x26\xf3\xbc\x52" - "\xad\x27\x55\x8e\x93\x3c\xd5\xaf\x7c\x5b\xc8\x98\x57\xb2\x6c\xcb" - "\x3d\x29\x39\xff\xf8\x45\x76\xa4\x8c\xcb\x35\x7d\x5d\xc6\xb9\x9c" - "\x5c\xbf\xb3\x88\x74\x5e\xd3\x86\x7d\x7c\x1c\xb6\x02\xc6\xaf\x2e" - "\x21\x92\x45\xba\xc2\xe9\x17\x4e\x5e\xe3\x66\xbb\x59\xe7\xa7\x41" - "\xa7\xe9\x17\x7b\x85\xfb\xf9\x26\x35\xa7\x7c\x3e\xcc\x7a\x5d\xac" - "\x1e\x7a\x0f\xfb\x16\xf1\xdc\x09\x75\xee\xea\xe3\xd9\xca\xb1\xcc" - "\x0b\x7d\x73\xd9\x5f\x44\xe9\xff\x4e\xf9\x5d\xc2\x5f\x1c\x37\xe2" - "\x3d\x94\x0c\x27\x93\x79\x78\x35\x6d\x32\x09\xe8\x9b\x5f\xac\xe3" - "\x3a\x98\x9e\x3e\x7a\xa1\x01\x79\xcd\x7d\xf4\xab\x48\xeb\xa5\x9f" - "\xbe\xce\x62\xac\xb1\x28\xbc\x2b\xc7\xf5\x47\xab\xf8\x74\xaa\x28" - "\xf8\x4a\x3a\xb9\x29\x89\x65\xd2\xa0\xd7\xa5\xb4\xaa\xd8\x76\x29" - "\xad\x2a\x2e\xf4\xd1\xea\x85\x1b\x2e\xa5\x55\x45\x6b\xc4\xbe\x92" - "\xbe\x8e\x52\x39\x8e\x69\xc6\x3c\x86\x76\xaf\x03\x9f\xd5\xf4\xd1" - "\xaf\xd2\x72\x29\xfd\x2a\x87\xc5\xa7\x5f\x05\x9f\xaf\x8a\x84\x53" - "\x17\x6f\xdc\x18\xb4\xca\xa4\x9f\x07\xab\xfc\x25\x7f\xeb\x9e\xf1" - "\xd8\x68\xd2\x1c\x1b\xdd\xf8\xe1\xca\xf3\x88\x3e\x5b\x5c\x04\x75" - "\xfa\x56\x37\x62\xce\xcb\xeb\x4a\x97\x19\x8b\x8e\x1b\x6b\x1e\xb8" - "\x6f\xe5\xb9\x33\x7f\x13\x8a\xd3\x99\x9e\xfc\x8d\x31\xf0\x7b\xab" - "\xb2\x4b\x2b\x7b\xbf\xff\xd1\x79\xd3\x83\x05\x89\xab\xc8\x7e\xb8" - "\xf6\x0e\x4e\x0f\x82\x87\x72\x39\x9d\x7d\xb7\xfa\x83\x99\x1f\xce" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 02:26:38 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 214931065674; Sat, 2 Jun 2012 02:26:38 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E5A3D8FC14; Sat, 2 Jun 2012 02:26:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q522Qba8059273; Sat, 2 Jun 2012 02:26:37 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q522QbDu059268; Sat, 2 Jun 2012 02:26:37 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201206020226.q522QbDu059268@svn.freebsd.org> From: Glen Barber Date: Sat, 2 Jun 2012 02:26:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236430 - in stable/9: share/man/man5 share/man/man7 tools/build/options X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 02:26:38 -0000 Author: gjb (doc committer) Date: Sat Jun 2 02:26:37 2012 New Revision: 236430 URL: http://svn.freebsd.org/changeset/base/236430 Log: MFC r236274, r236278, r236279: r236274: - Fix an mdoc(7) formatting nit. r236278: - Fix mdoc(7) style nits. r236279: - Add '-width Pa' to src.conf.5 for mdoc(7) style consistency. Modified: stable/9/share/man/man5/devfs.conf.5 stable/9/share/man/man5/devfs.rules.5 stable/9/share/man/man7/release.7 stable/9/tools/build/options/makeman Directory Properties: stable/9/share/man/man5/ (props changed) stable/9/share/man/man7/ (props changed) stable/9/tools/build/options/ (props changed) Modified: stable/9/share/man/man5/devfs.conf.5 ============================================================================== --- stable/9/share/man/man5/devfs.conf.5 Sat Jun 2 00:47:14 2012 (r236429) +++ stable/9/share/man/man5/devfs.conf.5 Sat Jun 2 02:26:37 2012 (r236430) @@ -91,7 +91,7 @@ as explained in .Xr chmod 1 . .El .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /etc/devfs.conf .It Pa /usr/share/examples/etc/devfs.conf .El Modified: stable/9/share/man/man5/devfs.rules.5 ============================================================================== --- stable/9/share/man/man5/devfs.rules.5 Sat Jun 2 00:47:14 2012 (r236429) +++ stable/9/share/man/man5/devfs.rules.5 Sat Jun 2 02:26:37 2012 (r236430) @@ -82,7 +82,7 @@ file: devfs_system_ruleset="localrules" .Ed .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /etc/defaults/devfs.rules Default .Nm Modified: stable/9/share/man/man7/release.7 ============================================================================== --- stable/9/share/man/man7/release.7 Sat Jun 2 00:47:14 2012 (r236429) +++ stable/9/share/man/man7/release.7 Sat Jun 2 02:26:37 2012 (r236430) @@ -278,7 +278,7 @@ Typically, one only needs to set .Va TARGET . .El .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk Modified: stable/9/tools/build/options/makeman ============================================================================== --- stable/9/tools/build/options/makeman Sat Jun 2 00:47:14 2012 (r236429) +++ stable/9/tools/build/options/makeman Sat Jun 2 02:26:37 2012 (r236430) @@ -265,7 +265,7 @@ EOF cat < Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 7766F10657CC; Sat, 2 Jun 2012 02:26:50 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 479568FC0C; Sat, 2 Jun 2012 02:26:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q522Qo0P059319; Sat, 2 Jun 2012 02:26:50 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q522QoEa059314; Sat, 2 Jun 2012 02:26:50 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201206020226.q522QoEa059314@svn.freebsd.org> From: Glen Barber Date: Sat, 2 Jun 2012 02:26:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236431 - in stable/8: share/man/man5 share/man/man7 tools/build/options X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 02:26:50 -0000 Author: gjb (doc committer) Date: Sat Jun 2 02:26:49 2012 New Revision: 236431 URL: http://svn.freebsd.org/changeset/base/236431 Log: MFC r236274, r236278, r236279: r236274: - Fix an mdoc(7) formatting nit. r236278: - Fix mdoc(7) style nits. r236279: - Add '-width Pa' to src.conf.5 for mdoc(7) style consistency. Modified: stable/8/share/man/man5/devfs.conf.5 stable/8/share/man/man5/devfs.rules.5 stable/8/share/man/man7/release.7 stable/8/tools/build/options/makeman Directory Properties: stable/8/share/man/man5/ (props changed) stable/8/share/man/man7/ (props changed) stable/8/tools/build/options/ (props changed) Modified: stable/8/share/man/man5/devfs.conf.5 ============================================================================== --- stable/8/share/man/man5/devfs.conf.5 Sat Jun 2 02:26:37 2012 (r236430) +++ stable/8/share/man/man5/devfs.conf.5 Sat Jun 2 02:26:49 2012 (r236431) @@ -91,7 +91,7 @@ as explained in .Xr chmod 1 . .El .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /etc/devfs.conf .It Pa /usr/share/examples/etc/devfs.conf .El Modified: stable/8/share/man/man5/devfs.rules.5 ============================================================================== --- stable/8/share/man/man5/devfs.rules.5 Sat Jun 2 02:26:37 2012 (r236430) +++ stable/8/share/man/man5/devfs.rules.5 Sat Jun 2 02:26:49 2012 (r236431) @@ -82,7 +82,7 @@ file: devfs_system_ruleset="localrules" .Ed .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /etc/defaults/devfs.rules Default .Nm Modified: stable/8/share/man/man7/release.7 ============================================================================== --- stable/8/share/man/man7/release.7 Sat Jun 2 02:26:37 2012 (r236430) +++ stable/8/share/man/man7/release.7 Sat Jun 2 02:26:49 2012 (r236431) @@ -457,7 +457,7 @@ will instruct to execute up to four processes at a time. .El .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk Modified: stable/8/tools/build/options/makeman ============================================================================== --- stable/8/tools/build/options/makeman Sat Jun 2 02:26:37 2012 (r236430) +++ stable/8/tools/build/options/makeman Sat Jun 2 02:26:49 2012 (r236431) @@ -179,7 +179,7 @@ EOF cat < Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AFF731065686; Sat, 2 Jun 2012 02:27:02 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 80BAE8FC14; Sat, 2 Jun 2012 02:27:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q522R2Lv059369; Sat, 2 Jun 2012 02:27:02 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q522R2xD059364; Sat, 2 Jun 2012 02:27:02 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201206020227.q522R2xD059364@svn.freebsd.org> From: Glen Barber Date: Sat, 2 Jun 2012 02:27:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236432 - in stable/7: share/man/man5 share/man/man7 tools/build/options X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 02:27:02 -0000 Author: gjb (doc committer) Date: Sat Jun 2 02:27:01 2012 New Revision: 236432 URL: http://svn.freebsd.org/changeset/base/236432 Log: MFC r236274, r236278, r236279: r236274: - Fix an mdoc(7) formatting nit. r236278: - Fix mdoc(7) style nits. r236279: - Add '-width Pa' to src.conf.5 for mdoc(7) style consistency. Modified: stable/7/share/man/man5/devfs.conf.5 stable/7/share/man/man5/devfs.rules.5 stable/7/share/man/man7/release.7 stable/7/tools/build/options/makeman Directory Properties: stable/7/share/man/man5/ (props changed) stable/7/share/man/man7/ (props changed) stable/7/tools/build/options/ (props changed) Modified: stable/7/share/man/man5/devfs.conf.5 ============================================================================== --- stable/7/share/man/man5/devfs.conf.5 Sat Jun 2 02:26:49 2012 (r236431) +++ stable/7/share/man/man5/devfs.conf.5 Sat Jun 2 02:27:01 2012 (r236432) @@ -91,7 +91,7 @@ as explained in .Xr chmod 1 . .El .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /etc/devfs.conf .It Pa /usr/share/examples/etc/devfs.conf .El Modified: stable/7/share/man/man5/devfs.rules.5 ============================================================================== --- stable/7/share/man/man5/devfs.rules.5 Sat Jun 2 02:26:49 2012 (r236431) +++ stable/7/share/man/man5/devfs.rules.5 Sat Jun 2 02:27:01 2012 (r236432) @@ -82,7 +82,7 @@ file: devfs_system_ruleset="localrules" .Ed .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /etc/defaults/devfs.rules Default .Nm Modified: stable/7/share/man/man7/release.7 ============================================================================== --- stable/7/share/man/man7/release.7 Sat Jun 2 02:26:49 2012 (r236431) +++ stable/7/share/man/man7/release.7 Sat Jun 2 02:27:01 2012 (r236432) @@ -457,7 +457,7 @@ will instruct to execute up to four processes at a time. .El .Sh FILES -.Bl -tag -compact +.Bl -tag -compact -width Pa .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk Modified: stable/7/tools/build/options/makeman ============================================================================== --- stable/7/tools/build/options/makeman Sat Jun 2 02:26:49 2012 (r236431) +++ stable/7/tools/build/options/makeman Sat Jun 2 02:27:01 2012 (r236432) @@ -179,7 +179,7 @@ EOF cat < Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 87717106566B; Sat, 2 Jun 2012 10:14:56 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 727558FC08; Sat, 2 Jun 2012 10:14:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52AEuKb080597; Sat, 2 Jun 2012 10:14:56 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52AEuWt080595; Sat, 2 Jun 2012 10:14:56 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201206021014.q52AEuWt080595@svn.freebsd.org> From: Jaakko Heinonen Date: Sat, 2 Jun 2012 10:14:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236440 - stable/8/sbin/mount_ntfs X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 10:14:56 -0000 Author: jh Date: Sat Jun 2 10:14:55 2012 New Revision: 236440 URL: http://svn.freebsd.org/changeset/base/236440 Log: MFC r230642: Remove trailing whitespace. Modified: stable/8/sbin/mount_ntfs/mount_ntfs.c Directory Properties: stable/8/sbin/mount_ntfs/ (props changed) Modified: stable/8/sbin/mount_ntfs/mount_ntfs.c ============================================================================== --- stable/8/sbin/mount_ntfs/mount_ntfs.c Sat Jun 2 09:10:51 2012 (r236439) +++ stable/8/sbin/mount_ntfs/mount_ntfs.c Sat Jun 2 10:14:55 2012 (r236440) @@ -162,7 +162,7 @@ main(argc, argv) } /* - * Resolve the mountpoint with realpath(3) and remove unnecessary + * Resolve the mountpoint with realpath(3) and remove unnecessary * slashes from the devicename if there are any. */ (void)checkpath(dir, mntpath); From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 11:39:41 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4A45A106566B; Sat, 2 Jun 2012 11:39:41 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 33AF98FC0A; Sat, 2 Jun 2012 11:39:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52BdfFH086652; Sat, 2 Jun 2012 11:39:41 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52Bde7S086650; Sat, 2 Jun 2012 11:39:41 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201206021139.q52Bde7S086650@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 2 Jun 2012 11:39:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236445 - stable/9/sys/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 11:39:41 -0000 Author: kib Date: Sat Jun 2 11:39:40 2012 New Revision: 236445 URL: http://svn.freebsd.org/changeset/base/236445 Log: MFC r236312: Clarify that the v_lockf is advisory lock list. Modified: stable/9/sys/sys/vnode.h Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/sys/vnode.h ============================================================================== --- stable/9/sys/sys/vnode.h Sat Jun 2 11:07:19 2012 (r236444) +++ stable/9/sys/sys/vnode.h Sat Jun 2 11:39:40 2012 (r236445) @@ -164,7 +164,7 @@ struct vnode { */ struct vpollinfo *v_pollinfo; /* i Poll events, p for *v_pi */ struct label *v_label; /* MAC label for vnode */ - struct lockf *v_lockf; /* Byte-level lock list */ + struct lockf *v_lockf; /* Byte-level advisory lock list */ }; #endif /* defined(_KERNEL) || defined(_KVM_VNODE) */ From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 11:44:50 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B5B86106566C; Sat, 2 Jun 2012 11:44:50 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9FB4C8FC0A; Sat, 2 Jun 2012 11:44:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52BioR1086932; Sat, 2 Jun 2012 11:44:50 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52Bio2J086930; Sat, 2 Jun 2012 11:44:50 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201206021144.q52Bio2J086930@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 2 Jun 2012 11:44:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236446 - stable/9/sys/fs/nfsclient X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 11:44:50 -0000 Author: kib Date: Sat Jun 2 11:44:50 2012 New Revision: 236446 URL: http://svn.freebsd.org/changeset/base/236446 Log: MFC r236313: Capitalize start of sentence. Modified: stable/9/sys/fs/nfsclient/nfs_clbio.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/fs/ (props changed) Modified: stable/9/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/9/sys/fs/nfsclient/nfs_clbio.c Sat Jun 2 11:39:40 2012 (r236445) +++ stable/9/sys/fs/nfsclient/nfs_clbio.c Sat Jun 2 11:44:50 2012 (r236446) @@ -1178,7 +1178,7 @@ again: * significant cache coherency problems with multiple clients, * especially if locking is implemented later on. * - * as an optimization we could theoretically maintain + * As an optimization we could theoretically maintain * a linked list of discontinuous areas, but we would still * have to commit them separately so there isn't much * advantage to it except perhaps a bit of asynchronization. From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 12:22:21 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5416B106564A; Sat, 2 Jun 2012 12:22:21 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3F1BC8FC0A; Sat, 2 Jun 2012 12:22:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52CMLF7088595; Sat, 2 Jun 2012 12:22:21 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52CMLqd088593; Sat, 2 Jun 2012 12:22:21 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201206021222.q52CMLqd088593@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 2 Jun 2012 12:22:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236447 - stable/8/sys/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 12:22:21 -0000 Author: kib Date: Sat Jun 2 12:22:20 2012 New Revision: 236447 URL: http://svn.freebsd.org/changeset/base/236447 Log: MFC r236312: Clarify that the v_lockf is advisory lock list. Modified: stable/8/sys/sys/vnode.h Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/sys/vnode.h ============================================================================== --- stable/8/sys/sys/vnode.h Sat Jun 2 11:44:50 2012 (r236446) +++ stable/8/sys/sys/vnode.h Sat Jun 2 12:22:20 2012 (r236447) @@ -165,7 +165,7 @@ struct vnode { */ struct vpollinfo *v_pollinfo; /* i Poll events, p for *v_pi */ struct label *v_label; /* MAC label for vnode */ - struct lockf *v_lockf; /* Byte-level lock list */ + struct lockf *v_lockf; /* Byte-level advisory lock list */ }; #endif /* defined(_KERNEL) || defined(_KVM_VNODE) */ From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 12:26:14 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AD071065672; Sat, 2 Jun 2012 12:26:14 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 858AD8FC15; Sat, 2 Jun 2012 12:26:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52CQEel088806; Sat, 2 Jun 2012 12:26:14 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52CQEau088804; Sat, 2 Jun 2012 12:26:14 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201206021226.q52CQEau088804@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 2 Jun 2012 12:26:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236448 - stable/8/sys/fs/nfsclient X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 12:26:14 -0000 Author: kib Date: Sat Jun 2 12:26:14 2012 New Revision: 236448 URL: http://svn.freebsd.org/changeset/base/236448 Log: MFC r236313: Capitalize start of sentence. Modified: stable/8/sys/fs/nfsclient/nfs_clbio.c Directory Properties: stable/8/sys/ (props changed) Modified: stable/8/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clbio.c Sat Jun 2 12:22:20 2012 (r236447) +++ stable/8/sys/fs/nfsclient/nfs_clbio.c Sat Jun 2 12:26:14 2012 (r236448) @@ -1165,7 +1165,7 @@ again: * significant cache coherency problems with multiple clients, * especially if locking is implemented later on. * - * as an optimization we could theoretically maintain + * As an optimization we could theoretically maintain * a linked list of discontinuous areas, but we would still * have to commit them separately so there isn't much * advantage to it except perhaps a bit of asynchronization. From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 15:13:29 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6BDA41065670; Sat, 2 Jun 2012 15:13:29 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 546EE8FC0A; Sat, 2 Jun 2012 15:13:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52FDTU3096255; Sat, 2 Jun 2012 15:13:29 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52FDTpn096251; Sat, 2 Jun 2012 15:13:29 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201206021513.q52FDTpn096251@svn.freebsd.org> From: Baptiste Daroussin Date: Sat, 2 Jun 2012 15:13:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236451 - stable/9/lib/libutil X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 15:13:29 -0000 Author: bapt Date: Sat Jun 2 15:13:28 2012 New Revision: 236451 URL: http://svn.freebsd.org/changeset/base/236451 Log: MFC: 228545,229572 Modify pw_copy: - if pw is NULL and oldpw is not NULL then the oldpw is deleted - if pw->pw_name != oldpw->pw_name but pw->pw_uid == oldpw->pw_uid then it renames the user add new gr_* functions so now gr_util API is similar to pw_util API, this allow to manipulate groups in a safe way. Add new pw_make_v7 to make a passwd line (in v7 format) out of a struct passwd Approved by: des (mentor) Modified: stable/9/lib/libutil/gr_util.c stable/9/lib/libutil/libutil.h stable/9/lib/libutil/pw_util.c Directory Properties: stable/9/lib/libutil/ (props changed) Modified: stable/9/lib/libutil/gr_util.c ============================================================================== --- stable/9/lib/libutil/gr_util.c Sat Jun 2 13:13:38 2012 (r236450) +++ stable/9/lib/libutil/gr_util.c Sat Jun 2 15:13:28 2012 (r236451) @@ -28,23 +28,319 @@ __FBSDID("$FreeBSD$"); #include +#include +#include +#include +#include +#include #include #include #include +#include #include #include #include #include +#include struct group_storage { struct group gr; char *members[]; }; +static int lockfd = -1; +static char group_dir[PATH_MAX]; +static char group_file[PATH_MAX]; +static char tempname[PATH_MAX]; +static int initialized; + static const char group_line_format[] = "%s:%s:%ju:"; /* + * Initialize statics + */ +int +gr_init(const char *dir, const char *group) +{ + if (dir == NULL) { + strcpy(group_dir, _PATH_ETC); + } else { + if (strlen(dir) >= sizeof(group_dir)) { + errno = ENAMETOOLONG; + return (-1); + } + strcpy(group_dir, dir); + } + + if (group == NULL) { + if (dir == NULL) { + strcpy(group_file, _PATH_GROUP); + } else if (snprintf(group_file, sizeof(group_file), "%s/group", + group_dir) > (int)sizeof(group_file)) { + errno = ENAMETOOLONG; + return (-1); + } + } else { + if (strlen(group) >= sizeof(group_file)) { + errno = ENAMETOOLONG; + return (-1); + } + strcpy(group_file, group); + } + initialized = 1; + return (0); +} + +/* + * Lock the group file + */ +int +gr_lock(void) +{ + if (*group_file == '\0') + return (-1); + + for (;;) { + struct stat st; + + lockfd = open(group_file, O_RDONLY, 0); + if (lockfd < 0 || fcntl(lockfd, F_SETFD, 1) == -1) + err(1, "%s", group_file); + if (flock(lockfd, LOCK_EX|LOCK_NB) == -1) { + if (errno == EWOULDBLOCK) { + errx(1, "the group file is busy"); + } else { + err(1, "could not lock the group file: "); + } + } + if (fstat(lockfd, &st) == -1) + err(1, "fstat() failed: "); + if (st.st_nlink != 0) + break; + close(lockfd); + lockfd = -1; + } + return (lockfd); +} + +/* + * Create and open a presmuably safe temp file for editing group data + */ +int +gr_tmp(int mfd) +{ + char buf[8192]; + ssize_t nr; + const char *p; + int tfd; + + if (*group_file == '\0') + return (-1); + if ((p = strrchr(group_file, '/'))) + ++p; + else + p = group_file; + if (snprintf(tempname, sizeof(tempname), "%.*sgroup.XXXXXX", + (int)(p - group_file), group_file) >= (int)sizeof(tempname)) { + errno = ENAMETOOLONG; + return (-1); + } + if ((tfd = mkstemp(tempname)) == -1) + return (-1); + if (mfd != -1) { + while ((nr = read(mfd, buf, sizeof(buf))) > 0) + if (write(tfd, buf, (size_t)nr) != nr) + break; + if (nr != 0) { + unlink(tempname); + *tempname = '\0'; + close(tfd); + return (-1); + } + } + return (tfd); +} + +/* + * Copy the group file from one descriptor to another, replacing, deleting + * or adding a single record on the way. + */ +int +gr_copy(int ffd, int tfd, const struct group *gr, struct group *old_gr) +{ + char buf[8192], *end, *line, *p, *q, *r, t; + struct group *fgr; + const struct group *sgr; + size_t len; + int eof, readlen; + + sgr = gr; + if (gr == NULL) { + line = NULL; + if (old_gr == NULL) + return (-1); + sgr = old_gr; + } else if ((line = gr_make(gr)) == NULL) + return (-1); + + eof = 0; + len = 0; + p = q = end = buf; + for (;;) { + /* find the end of the current line */ + for (p = q; q < end && *q != '\0'; ++q) + if (*q == '\n') + break; + + /* if we don't have a complete line, fill up the buffer */ + if (q >= end) { + if (eof) + break; + if ((size_t)(q - p) >= sizeof(buf)) { + warnx("group line too long"); + errno = EINVAL; /* hack */ + goto err; + } + if (p < end) { + q = memmove(buf, p, end -p); + end -= p - buf; + } else { + p = q = end = buf; + } + readlen = read(ffd, end, sizeof(buf) - (end -buf)); + if (readlen == -1) + goto err; + else + len = (size_t)readlen; + if (len == 0 && p == buf) + break; + end += len; + len = end - buf; + if (len < (ssize_t)sizeof(buf)) { + eof = 1; + if (len > 0 && buf[len -1] != '\n') + ++len, *end++ = '\n'; + } + continue; + } + + /* is it a blank line or a comment? */ + for (r = p; r < q && isspace(*r); ++r) + /* nothing */; + if (r == q || *r == '#') { + /* yep */ + if (write(tfd, p, q -p + 1) != q - p + 1) + goto err; + ++q; + continue; + } + + /* is it the one we're looking for? */ + + t = *q; + *q = '\0'; + + fgr = gr_scan(r); + + /* fgr is either a struct group for the current line, + * or NULL if the line is malformed. + */ + + *q = t; + if (fgr == NULL || fgr->gr_gid != sgr->gr_gid) { + /* nope */ + if (fgr != NULL) + free(fgr); + if (write(tfd, p, q - p + 1) != q - p + 1) + goto err; + ++q; + continue; + } + if (old_gr && !gr_equal(fgr, old_gr)) { + warnx("entry inconsistent"); + free(fgr); + errno = EINVAL; /* hack */ + goto err; + } + free(fgr); + + /* it is, replace or remove it */ + if (line != NULL) { + len = strlen(line); + if (write(tfd, line, len) != (int) len) + goto err; + } else { + /* when removed, avoid the \n */ + q++; + } + /* we're done, just copy the rest over */ + for (;;) { + if (write(tfd, q, end - q) != end - q) + goto err; + q = buf; + readlen = read(ffd, buf, sizeof(buf)); + if (readlen == 0) + break; + else + len = (size_t)readlen; + if (readlen == -1) + goto err; + end = buf + len; + } + goto done; + } + + /* if we got here, we didn't find the old entry */ + if (line == NULL) { + errno = ENOENT; + goto err; + } + len = strlen(line); + if ((size_t)write(tfd, line, len) != len || + write(tfd, "\n", 1) != 1) + goto err; + done: + if (line != NULL) + free(line); + return (0); + err: + if (line != NULL) + free(line); + return (-1); +} + +/* + * Regenerate the group file + */ +int +gr_mkdb(void) +{ + return (rename(tempname, group_file)); +} + +/* + * Clean up. Preserver errno for the caller's convenience. + */ +void +gr_fini(void) +{ + int serrno; + + if (!initialized) + return; + initialized = 0; + serrno = errno; + if (*tempname != '\0') { + unlink(tempname); + *tempname = '\0'; + } + if (lockfd != -1) + close(lockfd); + errno = serrno; +} + +/* * Compares two struct group's. */ int Modified: stable/9/lib/libutil/libutil.h ============================================================================== --- stable/9/lib/libutil/libutil.h Sat Jun 2 13:13:38 2012 (r236450) +++ stable/9/lib/libutil/libutil.h Sat Jun 2 15:13:28 2012 (r236451) @@ -151,6 +151,7 @@ int pw_equal(const struct passwd *_pw1, void pw_fini(void); int pw_init(const char *_dir, const char *_master); char *pw_make(const struct passwd *_pw); +char *pw_make_v7(const struct passwd *_pw); int pw_mkdb(const char *_user); int pw_lock(void); struct passwd * @@ -161,12 +162,16 @@ int pw_tmp(int _mfd); #endif #ifdef _GRP_H_ -struct group * - gr_dup(const struct group *_gr); -int gr_equal(const struct group *_gr1, const struct group *_gr2); -char *gr_make(const struct group *_gr); -struct group * - gr_scan(const char *_line); +int gr_copy(int __ffd, int _tfd, const struct group *_gr, struct group *_old_gr); +struct group *gr_dup(const struct group *gr); +int gr_equal(const struct group *gr1, const struct group *gr2); +void gr_fini(void); +int gr_init(const char *_dir, const char *_master); +int gr_lock(void); +char *gr_make(const struct group *gr); +int gr_mkdb(void); +int gr_tmp(int _mdf); +struct group *gr_scan(const char *line); #endif #ifdef _UFS_UFS_QUOTA_H_ Modified: stable/9/lib/libutil/pw_util.c ============================================================================== --- stable/9/lib/libutil/pw_util.c Sat Jun 2 13:13:38 2012 (r236450) +++ stable/9/lib/libutil/pw_util.c Sat Jun 2 15:13:28 2012 (r236451) @@ -406,22 +406,43 @@ pw_make(const struct passwd *pw) pw->pw_passwd, (uintmax_t)pw->pw_uid, (uintmax_t)pw->pw_gid, pw->pw_class, (uintmax_t)pw->pw_change, (uintmax_t)pw->pw_expire, pw->pw_gecos, pw->pw_dir, pw->pw_shell); - return line; + return (line); } /* - * Copy password file from one descriptor to another, replacing or adding - * a single record on the way. + * Make a passwd line (in v7 format) out of a struct passwd + */ +char * +pw_make_v7(const struct passwd *pw) +{ + char *line; + + asprintf(&line, "%s:*:%ju:%ju:%s:%s:%s", pw->pw_name, + (uintmax_t)pw->pw_uid, (uintmax_t)pw->pw_gid, + pw->pw_gecos, pw->pw_dir, pw->pw_shell); + return (line); +} + +/* + * Copy password file from one descriptor to another, replacing, deleting + * or adding a single record on the way. */ int pw_copy(int ffd, int tfd, const struct passwd *pw, struct passwd *old_pw) { char buf[8192], *end, *line, *p, *q, *r, t; struct passwd *fpw; + const struct passwd *spw; size_t len; int eof, readlen; - if ((line = pw_make(pw)) == NULL) + spw = pw; + if (pw == NULL) { + line = NULL; + if (old_pw == NULL) + return (-1); + spw = old_pw; + } else if ((line = pw_make(pw)) == NULL) return (-1); eof = 0; @@ -489,7 +510,7 @@ pw_copy(int ffd, int tfd, const struct p */ *q = t; - if (fpw == NULL || strcmp(fpw->pw_name, pw->pw_name) != 0) { + if (fpw == NULL || fpw->pw_uid != spw->pw_uid) { /* nope */ if (fpw != NULL) free(fpw); @@ -506,11 +527,15 @@ pw_copy(int ffd, int tfd, const struct p } free(fpw); - /* it is, replace it */ - len = strlen(line); - if (write(tfd, line, len) != (int)len) - goto err; - + /* it is, replace or remove it */ + if (line != NULL) { + len = strlen(line); + if (write(tfd, line, len) != (int)len) + goto err; + } else { + /* when removed, avoid the \n */ + q++; + } /* we're done, just copy the rest over */ for (;;) { if (write(tfd, q, end - q) != end - q) @@ -528,16 +553,22 @@ pw_copy(int ffd, int tfd, const struct p goto done; } - /* if we got here, we have a new entry */ + /* if we got here, we didn't find the old entry */ + if (line == NULL) { + errno = ENOENT; + goto err; + } len = strlen(line); if ((size_t)write(tfd, line, len) != len || write(tfd, "\n", 1) != 1) goto err; done: - free(line); + if (line != NULL) + free(line); return (0); err: - free(line); + if (line != NULL) + free(line); return (-1); } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 15:14:13 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 69FDE106564A; Sat, 2 Jun 2012 15:14:13 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 539928FC15; Sat, 2 Jun 2012 15:14:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52FEDVD096329; Sat, 2 Jun 2012 15:14:13 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52FEDgM096325; Sat, 2 Jun 2012 15:14:13 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201206021514.q52FEDgM096325@svn.freebsd.org> From: Baptiste Daroussin Date: Sat, 2 Jun 2012 15:14:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236452 - stable/8/lib/libutil X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 15:14:13 -0000 Author: bapt Date: Sat Jun 2 15:14:12 2012 New Revision: 236452 URL: http://svn.freebsd.org/changeset/base/236452 Log: MFC: 228545,229572 Modify pw_copy: - if pw is NULL and oldpw is not NULL then the oldpw is deleted - if pw->pw_name != oldpw->pw_name but pw->pw_uid == oldpw->pw_uid then it renames the user add new gr_* functions so now gr_util API is similar to pw_util API, this allow to manipulate groups in a safe way. Add new pw_make_v7 to make a passwd line (in v7 format) out of a struct passwd Approved by: des (mentor) Modified: stable/8/lib/libutil/gr_util.c stable/8/lib/libutil/libutil.h stable/8/lib/libutil/pw_util.c Directory Properties: stable/8/lib/libutil/ (props changed) Modified: stable/8/lib/libutil/gr_util.c ============================================================================== --- stable/8/lib/libutil/gr_util.c Sat Jun 2 15:13:28 2012 (r236451) +++ stable/8/lib/libutil/gr_util.c Sat Jun 2 15:14:12 2012 (r236452) @@ -28,23 +28,319 @@ __FBSDID("$FreeBSD$"); #include +#include +#include +#include +#include +#include #include #include #include +#include #include #include #include #include +#include struct group_storage { struct group gr; char *members[]; }; +static int lockfd = -1; +static char group_dir[PATH_MAX]; +static char group_file[PATH_MAX]; +static char tempname[PATH_MAX]; +static int initialized; + static const char group_line_format[] = "%s:%s:%ju:"; /* + * Initialize statics + */ +int +gr_init(const char *dir, const char *group) +{ + if (dir == NULL) { + strcpy(group_dir, _PATH_ETC); + } else { + if (strlen(dir) >= sizeof(group_dir)) { + errno = ENAMETOOLONG; + return (-1); + } + strcpy(group_dir, dir); + } + + if (group == NULL) { + if (dir == NULL) { + strcpy(group_file, _PATH_GROUP); + } else if (snprintf(group_file, sizeof(group_file), "%s/group", + group_dir) > (int)sizeof(group_file)) { + errno = ENAMETOOLONG; + return (-1); + } + } else { + if (strlen(group) >= sizeof(group_file)) { + errno = ENAMETOOLONG; + return (-1); + } + strcpy(group_file, group); + } + initialized = 1; + return (0); +} + +/* + * Lock the group file + */ +int +gr_lock(void) +{ + if (*group_file == '\0') + return (-1); + + for (;;) { + struct stat st; + + lockfd = open(group_file, O_RDONLY, 0); + if (lockfd < 0 || fcntl(lockfd, F_SETFD, 1) == -1) + err(1, "%s", group_file); + if (flock(lockfd, LOCK_EX|LOCK_NB) == -1) { + if (errno == EWOULDBLOCK) { + errx(1, "the group file is busy"); + } else { + err(1, "could not lock the group file: "); + } + } + if (fstat(lockfd, &st) == -1) + err(1, "fstat() failed: "); + if (st.st_nlink != 0) + break; + close(lockfd); + lockfd = -1; + } + return (lockfd); +} + +/* + * Create and open a presmuably safe temp file for editing group data + */ +int +gr_tmp(int mfd) +{ + char buf[8192]; + ssize_t nr; + const char *p; + int tfd; + + if (*group_file == '\0') + return (-1); + if ((p = strrchr(group_file, '/'))) + ++p; + else + p = group_file; + if (snprintf(tempname, sizeof(tempname), "%.*sgroup.XXXXXX", + (int)(p - group_file), group_file) >= (int)sizeof(tempname)) { + errno = ENAMETOOLONG; + return (-1); + } + if ((tfd = mkstemp(tempname)) == -1) + return (-1); + if (mfd != -1) { + while ((nr = read(mfd, buf, sizeof(buf))) > 0) + if (write(tfd, buf, (size_t)nr) != nr) + break; + if (nr != 0) { + unlink(tempname); + *tempname = '\0'; + close(tfd); + return (-1); + } + } + return (tfd); +} + +/* + * Copy the group file from one descriptor to another, replacing, deleting + * or adding a single record on the way. + */ +int +gr_copy(int ffd, int tfd, const struct group *gr, struct group *old_gr) +{ + char buf[8192], *end, *line, *p, *q, *r, t; + struct group *fgr; + const struct group *sgr; + size_t len; + int eof, readlen; + + sgr = gr; + if (gr == NULL) { + line = NULL; + if (old_gr == NULL) + return (-1); + sgr = old_gr; + } else if ((line = gr_make(gr)) == NULL) + return (-1); + + eof = 0; + len = 0; + p = q = end = buf; + for (;;) { + /* find the end of the current line */ + for (p = q; q < end && *q != '\0'; ++q) + if (*q == '\n') + break; + + /* if we don't have a complete line, fill up the buffer */ + if (q >= end) { + if (eof) + break; + if ((size_t)(q - p) >= sizeof(buf)) { + warnx("group line too long"); + errno = EINVAL; /* hack */ + goto err; + } + if (p < end) { + q = memmove(buf, p, end -p); + end -= p - buf; + } else { + p = q = end = buf; + } + readlen = read(ffd, end, sizeof(buf) - (end -buf)); + if (readlen == -1) + goto err; + else + len = (size_t)readlen; + if (len == 0 && p == buf) + break; + end += len; + len = end - buf; + if (len < (ssize_t)sizeof(buf)) { + eof = 1; + if (len > 0 && buf[len -1] != '\n') + ++len, *end++ = '\n'; + } + continue; + } + + /* is it a blank line or a comment? */ + for (r = p; r < q && isspace(*r); ++r) + /* nothing */; + if (r == q || *r == '#') { + /* yep */ + if (write(tfd, p, q -p + 1) != q - p + 1) + goto err; + ++q; + continue; + } + + /* is it the one we're looking for? */ + + t = *q; + *q = '\0'; + + fgr = gr_scan(r); + + /* fgr is either a struct group for the current line, + * or NULL if the line is malformed. + */ + + *q = t; + if (fgr == NULL || fgr->gr_gid != sgr->gr_gid) { + /* nope */ + if (fgr != NULL) + free(fgr); + if (write(tfd, p, q - p + 1) != q - p + 1) + goto err; + ++q; + continue; + } + if (old_gr && !gr_equal(fgr, old_gr)) { + warnx("entry inconsistent"); + free(fgr); + errno = EINVAL; /* hack */ + goto err; + } + free(fgr); + + /* it is, replace or remove it */ + if (line != NULL) { + len = strlen(line); + if (write(tfd, line, len) != (int) len) + goto err; + } else { + /* when removed, avoid the \n */ + q++; + } + /* we're done, just copy the rest over */ + for (;;) { + if (write(tfd, q, end - q) != end - q) + goto err; + q = buf; + readlen = read(ffd, buf, sizeof(buf)); + if (readlen == 0) + break; + else + len = (size_t)readlen; + if (readlen == -1) + goto err; + end = buf + len; + } + goto done; + } + + /* if we got here, we didn't find the old entry */ + if (line == NULL) { + errno = ENOENT; + goto err; + } + len = strlen(line); + if ((size_t)write(tfd, line, len) != len || + write(tfd, "\n", 1) != 1) + goto err; + done: + if (line != NULL) + free(line); + return (0); + err: + if (line != NULL) + free(line); + return (-1); +} + +/* + * Regenerate the group file + */ +int +gr_mkdb(void) +{ + return (rename(tempname, group_file)); +} + +/* + * Clean up. Preserver errno for the caller's convenience. + */ +void +gr_fini(void) +{ + int serrno; + + if (!initialized) + return; + initialized = 0; + serrno = errno; + if (*tempname != '\0') { + unlink(tempname); + *tempname = '\0'; + } + if (lockfd != -1) + close(lockfd); + errno = serrno; +} + +/* * Compares two struct group's. */ int Modified: stable/8/lib/libutil/libutil.h ============================================================================== --- stable/8/lib/libutil/libutil.h Sat Jun 2 15:13:28 2012 (r236451) +++ stable/8/lib/libutil/libutil.h Sat Jun 2 15:14:12 2012 (r236452) @@ -152,6 +152,7 @@ int pw_equal(const struct passwd *_pw1, void pw_fini(void); int pw_init(const char *_dir, const char *_master); char *pw_make(const struct passwd *_pw); +char *pw_make_v7(const struct passwd *_pw); int pw_mkdb(const char *_user); int pw_lock(void); struct passwd *pw_scan(const char *_line, int _flags); @@ -160,9 +161,15 @@ int pw_tmp(int _mfd); #endif #ifdef _GRP_H_ +int gr_copy(int __ffd, int _tfd, const struct group *_gr, struct group *_old_gr); +struct group *gr_dup(const struct group *gr); int gr_equal(const struct group *gr1, const struct group *gr2); +void gr_fini(void); +int gr_init(const char *_dir, const char *_master); +int gr_lock(void); char *gr_make(const struct group *gr); -struct group *gr_dup(const struct group *gr); +int gr_mkdb(void); +int gr_tmp(int _mdf); struct group *gr_scan(const char *line); #endif Modified: stable/8/lib/libutil/pw_util.c ============================================================================== --- stable/8/lib/libutil/pw_util.c Sat Jun 2 15:13:28 2012 (r236451) +++ stable/8/lib/libutil/pw_util.c Sat Jun 2 15:14:12 2012 (r236452) @@ -406,22 +406,43 @@ pw_make(const struct passwd *pw) pw->pw_passwd, (uintmax_t)pw->pw_uid, (uintmax_t)pw->pw_gid, pw->pw_class, (uintmax_t)pw->pw_change, (uintmax_t)pw->pw_expire, pw->pw_gecos, pw->pw_dir, pw->pw_shell); - return line; + return (line); } /* - * Copy password file from one descriptor to another, replacing or adding - * a single record on the way. + * Make a passwd line (in v7 format) out of a struct passwd + */ +char * +pw_make_v7(const struct passwd *pw) +{ + char *line; + + asprintf(&line, "%s:*:%ju:%ju:%s:%s:%s", pw->pw_name, + (uintmax_t)pw->pw_uid, (uintmax_t)pw->pw_gid, + pw->pw_gecos, pw->pw_dir, pw->pw_shell); + return (line); +} + +/* + * Copy password file from one descriptor to another, replacing, deleting + * or adding a single record on the way. */ int pw_copy(int ffd, int tfd, const struct passwd *pw, struct passwd *old_pw) { char buf[8192], *end, *line, *p, *q, *r, t; struct passwd *fpw; + const struct passwd *spw; size_t len; int eof, readlen; - if ((line = pw_make(pw)) == NULL) + spw = pw; + if (pw == NULL) { + line = NULL; + if (old_pw == NULL) + return (-1); + spw = old_pw; + } else if ((line = pw_make(pw)) == NULL) return (-1); eof = 0; @@ -489,7 +510,7 @@ pw_copy(int ffd, int tfd, const struct p */ *q = t; - if (fpw == NULL || strcmp(fpw->pw_name, pw->pw_name) != 0) { + if (fpw == NULL || fpw->pw_uid != spw->pw_uid) { /* nope */ if (fpw != NULL) free(fpw); @@ -506,11 +527,15 @@ pw_copy(int ffd, int tfd, const struct p } free(fpw); - /* it is, replace it */ - len = strlen(line); - if (write(tfd, line, len) != (int)len) - goto err; - + /* it is, replace or remove it */ + if (line != NULL) { + len = strlen(line); + if (write(tfd, line, len) != (int)len) + goto err; + } else { + /* when removed, avoid the \n */ + q++; + } /* we're done, just copy the rest over */ for (;;) { if (write(tfd, q, end - q) != end - q) @@ -528,16 +553,22 @@ pw_copy(int ffd, int tfd, const struct p goto done; } - /* if we got here, we have a new entry */ + /* if we got here, we didn't find the old entry */ + if (line == NULL) { + errno = ENOENT; + goto err; + } len = strlen(line); if ((size_t)write(tfd, line, len) != len || write(tfd, "\n", 1) != 1) goto err; done: - free(line); + if (line != NULL) + free(line); return (0); err: - free(line); + if (line != NULL) + free(line); return (-1); } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 15:38:38 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D2949106566B; Sat, 2 Jun 2012 15:38:38 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com [209.85.212.172]) by mx1.freebsd.org (Postfix) with ESMTP id 9C9208FC08; Sat, 2 Jun 2012 15:38:37 +0000 (UTC) Received: by wibhj8 with SMTP id hj8so1253000wib.13 for ; Sat, 02 Jun 2012 08:38:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=F3ZHxIwzGxOP/PkehOyRDUIUbR1DWdiQjpY9k+Me7pg=; b=zaQvD0HNhNn6bpUDvLt6IClGjXJ/LlcNM2Bxa4KZGmCSJlslvCtn266opE2JV5ouH8 HtYBpfmQL1MLgRjkKYP78/F3iEnSrAx1KTlbxOH1XyVzC16lWwlxR/8TCINKgW8ToSV/ wKhLqWSdyv6ufFzCB2x9GiR7gtPODRWSdh4qzoC8RAxQAfe5I/KjbV+3DsmmKzjdDbCY G11B3vQ9qz6rbze7AUYfcDc6j4uLm/Dh685ptMiWnYS7h+35WcmSKHN0G3Xv3+5MtK0K W+FSxh2GuAy2gTwi4p7MBJDd2oZLI6UvfoHrf8/3k5J4aNJKNqefXhFsmc71C2T3p1m3 YPXA== Received: by 10.216.202.14 with SMTP id c14mr5790361weo.63.1338651516498; Sat, 02 Jun 2012 08:38:36 -0700 (PDT) Received: from mavbook2.mavhome.dp.ua (pc.mavhome.dp.ua. [212.86.226.226]) by mx.google.com with ESMTPS id i10sm8856501wiy.10.2012.06.02.08.38.33 (version=SSLv3 cipher=OTHER); Sat, 02 Jun 2012 08:38:35 -0700 (PDT) Sender: Alexander Motin Message-ID: <4FCA3377.3050505@FreeBSD.org> Date: Sat, 02 Jun 2012 18:38:31 +0300 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:10.0.3) Gecko/20120328 Thunderbird/10.0.3 MIME-Version: 1.0 To: Adrian Chadd References: <201203102158.q2ALw89R080428@svn.freebsd.org> <20120504160806.GF6475@goofy01.vnodelab.local> <4FA514EA.1020504@FreeBSD.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org, Joel Dahl Subject: Re: svn commit: r232798 - in stable/9: share/man/man4 sys/conf sys/dev/sound/pci/hda sys/dev/sound/pcm sys/modules/sound/driver/hda X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 15:38:39 -0000 On 05/31/12 01:13, Adrian Chadd wrote: > Hm, this stuff is tricky. Is it possible that Joel's setup has some > default volume level that you weren't programming before, but now you > are? The driver is reprogramming all volume levels, but the algorithm of choosing values indeed has changed. Click most likely is a result of some constant voltage on some input and enabling that input causes some capacitor to charge that could be heard. Problem is that I have no idea what is that input and what has changed there. -- Alexander Motin From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 16:16:04 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 45127106566C; Sat, 2 Jun 2012 16:16:04 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2FD738FC12; Sat, 2 Jun 2012 16:16:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52GG4Kf098981; Sat, 2 Jun 2012 16:16:04 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52GG3lC098979; Sat, 2 Jun 2012 16:16:03 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201206021616.q52GG3lC098979@svn.freebsd.org> From: Baptiste Daroussin Date: Sat, 2 Jun 2012 16:16:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236453 - stable/9/usr.sbin/pkg_install/lib X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 16:16:04 -0000 Author: bapt Date: Sat Jun 2 16:16:03 2012 New Revision: 236453 URL: http://svn.freebsd.org/changeset/base/236453 Log: RFC: 235276 - Print package name in case an empty pkgdep line is found. PR: bin/164378 Submitted by: Yuri and many others Approved by: des (mentor) Modified: stable/9/usr.sbin/pkg_install/lib/plist.c Directory Properties: stable/9/usr.sbin/pkg_install/ (props changed) Modified: stable/9/usr.sbin/pkg_install/lib/plist.c ============================================================================== --- stable/9/usr.sbin/pkg_install/lib/plist.c Sat Jun 2 15:14:12 2012 (r236452) +++ stable/9/usr.sbin/pkg_install/lib/plist.c Sat Jun 2 16:16:03 2012 (r236453) @@ -286,7 +286,8 @@ read_plist(Package *pkg, FILE *fp) if (*cp == '\0') { cp = NULL; if (cmd == PLIST_PKGDEP) { - warnx("corrupted record (pkgdep line without argument), ignoring"); + warnx("corrupted record for package %s (pkgdep line without " + "argument), ignoring", pkg->name); cmd = FAIL; } goto bottom; From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 16:16:46 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 635581065680; Sat, 2 Jun 2012 16:16:46 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4DAEF8FC1A; Sat, 2 Jun 2012 16:16:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52GGkWH099044; Sat, 2 Jun 2012 16:16:46 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52GGk06099042; Sat, 2 Jun 2012 16:16:46 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201206021616.q52GGk06099042@svn.freebsd.org> From: Baptiste Daroussin Date: Sat, 2 Jun 2012 16:16:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236454 - stable/8/usr.sbin/pkg_install/lib X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 16:16:46 -0000 Author: bapt Date: Sat Jun 2 16:16:45 2012 New Revision: 236454 URL: http://svn.freebsd.org/changeset/base/236454 Log: RFC: 235276 - Print package name in case an empty pkgdep line is found. PR: bin/164378 Submitted by: Yuri and many others Approved by: des (mentor) Modified: stable/8/usr.sbin/pkg_install/lib/plist.c Directory Properties: stable/8/usr.sbin/pkg_install/ (props changed) Modified: stable/8/usr.sbin/pkg_install/lib/plist.c ============================================================================== --- stable/8/usr.sbin/pkg_install/lib/plist.c Sat Jun 2 16:16:03 2012 (r236453) +++ stable/8/usr.sbin/pkg_install/lib/plist.c Sat Jun 2 16:16:45 2012 (r236454) @@ -286,7 +286,8 @@ read_plist(Package *pkg, FILE *fp) if (*cp == '\0') { cp = NULL; if (cmd == PLIST_PKGDEP) { - warnx("corrupted record (pkgdep line without argument), ignoring"); + warnx("corrupted record for package %s (pkgdep line without " + "argument), ignoring", pkg->name); cmd = FAIL; } goto bottom; From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 16:17:26 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 69D37106566C; Sat, 2 Jun 2012 16:17:26 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 540768FC08; Sat, 2 Jun 2012 16:17:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52GHQM7099120; Sat, 2 Jun 2012 16:17:26 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52GHQDw099118; Sat, 2 Jun 2012 16:17:26 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201206021617.q52GHQDw099118@svn.freebsd.org> From: Baptiste Daroussin Date: Sat, 2 Jun 2012 16:17:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236455 - stable/7/usr.sbin/pkg_install/lib X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 16:17:26 -0000 Author: bapt Date: Sat Jun 2 16:17:25 2012 New Revision: 236455 URL: http://svn.freebsd.org/changeset/base/236455 Log: RFC: 235276 - Print package name in case an empty pkgdep line is found. PR: bin/164378 Submitted by: Yuri and many others Approved by: des (mentor) Modified: stable/7/usr.sbin/pkg_install/lib/plist.c Directory Properties: stable/7/usr.sbin/pkg_install/ (props changed) Modified: stable/7/usr.sbin/pkg_install/lib/plist.c ============================================================================== --- stable/7/usr.sbin/pkg_install/lib/plist.c Sat Jun 2 16:16:45 2012 (r236454) +++ stable/7/usr.sbin/pkg_install/lib/plist.c Sat Jun 2 16:17:25 2012 (r236455) @@ -286,7 +286,8 @@ read_plist(Package *pkg, FILE *fp) if (*cp == '\0') { cp = NULL; if (cmd == PLIST_PKGDEP) { - warnx("corrupted record (pkgdep line without argument), ignoring"); + warnx("corrupted record for package %s (pkgdep line without " + "argument), ignoring", pkg->name); cmd = FAIL; } goto bottom; From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:13:54 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8BD901065675; Sat, 2 Jun 2012 18:13:54 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 758B58FC12; Sat, 2 Jun 2012 18:13:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IDstk004453; Sat, 2 Jun 2012 18:13:54 GMT (envelope-from jpaetzel@svn.freebsd.org) Received: (from jpaetzel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IDsrp004451; Sat, 2 Jun 2012 18:13:54 GMT (envelope-from jpaetzel@svn.freebsd.org) Message-Id: <201206021813.q52IDsrp004451@svn.freebsd.org> From: Josh Paetzel Date: Sat, 2 Jun 2012 18:13:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236457 - stable/9/usr.sbin/pc-sysinstall/backend X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:13:54 -0000 Author: jpaetzel Date: Sat Jun 2 18:13:53 2012 New Revision: 236457 URL: http://svn.freebsd.org/changeset/base/236457 Log: MFC 236330: Fix French Canadian console keyboard layout Submitted by: kmoore Obtained from: PC-BSD Sponsored by: iXsystems Modified: stable/9/usr.sbin/pc-sysinstall/backend/functions-localize.sh Directory Properties: stable/9/usr.sbin/pc-sysinstall/ (props changed) Modified: stable/9/usr.sbin/pc-sysinstall/backend/functions-localize.sh ============================================================================== --- stable/9/usr.sbin/pc-sysinstall/backend/functions-localize.sh Sat Jun 2 18:10:16 2012 (r236456) +++ stable/9/usr.sbin/pc-sysinstall/backend/functions-localize.sh Sat Jun 2 18:13:53 2012 (r236457) @@ -168,6 +168,7 @@ localize_key_layout() # Set the keylayout in rc.conf case ${KEYLAYOUT} in am) KEYLAYOUT_CONSOLE="hy.armscii-8" ;; + ca) KEYLAYOUT_CONSOLE="fr_CA.acc.iso" ;; ch) KEYLAYOUT_CONSOLE="swissgerman.iso" ;; cz) KEYLAYOUT_CONSOLE="cz.iso2" ;; de) KEYLAYOUT_CONSOLE="german.iso" ;; From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:22:38 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BC07F106566C; Sat, 2 Jun 2012 18:22:38 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A43898FC16; Sat, 2 Jun 2012 18:22:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IMcE5004894; Sat, 2 Jun 2012 18:22:38 GMT (envelope-from jpaetzel@svn.freebsd.org) Received: (from jpaetzel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IMcaU004892; Sat, 2 Jun 2012 18:22:38 GMT (envelope-from jpaetzel@svn.freebsd.org) Message-Id: <201206021822.q52IMcaU004892@svn.freebsd.org> From: Josh Paetzel Date: Sat, 2 Jun 2012 18:22:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236458 - stable/9/usr.sbin/pc-sysinstall/backend X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:22:38 -0000 Author: jpaetzel Date: Sat Jun 2 18:22:38 2012 New Revision: 236458 URL: http://svn.freebsd.org/changeset/base/236458 Log: MFC 236331 Fix detecting available zpool names. Submitted by: kmoore Obtained from: PC-BSD Sponsored by: iXsystems Modified: stable/9/usr.sbin/pc-sysinstall/backend/functions.sh Directory Properties: stable/9/usr.sbin/pc-sysinstall/ (props changed) Modified: stable/9/usr.sbin/pc-sysinstall/backend/functions.sh ============================================================================== --- stable/9/usr.sbin/pc-sysinstall/backend/functions.sh Sat Jun 2 18:13:53 2012 (r236457) +++ stable/9/usr.sbin/pc-sysinstall/backend/functions.sh Sat Jun 2 18:22:38 2012 (r236458) @@ -277,7 +277,7 @@ get_zpool_name() while : do NEWNAME="${BASENAME}${NUM}" - zpool import | grep -qw "${NEWNAME}" && break + zpool import | grep -qw "${NEWNAME}" || break NUM=$((NUM+1)) done From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:24:44 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4C3891065689; Sat, 2 Jun 2012 18:24:44 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 36F818FC18; Sat, 2 Jun 2012 18:24:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IOiwq005053; Sat, 2 Jun 2012 18:24:44 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IOivm005051; Sat, 2 Jun 2012 18:24:44 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021824.q52IOivm005051@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:24:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236459 - stable/9/tools/tools/zfsboottest X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:24:44 -0000 Author: avg Date: Sat Jun 2 18:24:43 2012 New Revision: 236459 URL: http://svn.freebsd.org/changeset/base/236459 Log: MFC r235129: zfsboottest.sh: gracefully handle default value of bootfs property Modified: stable/9/tools/tools/zfsboottest/zfsboottest.sh Directory Properties: stable/9/tools/tools/ (props changed) stable/9/tools/tools/nanobsd/ (props changed) stable/9/tools/tools/zfsboottest/ (props changed) Modified: stable/9/tools/tools/zfsboottest/zfsboottest.sh ============================================================================== --- stable/9/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:22:38 2012 (r236458) +++ stable/9/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:24:43 2012 (r236459) @@ -52,8 +52,7 @@ if [ $? -ne 0 ]; then fi bootfs=`zpool get bootfs "${pool}" | tail -1 | awk '{print $3}'` if [ "${bootfs}" = "-" ]; then - echo "The \"bootfs\" property is not configured for pool \"${pool}\"." >&2 - exit 1 + bootfs="${pool}" fi # Dataset's mountpoint property should be set to 'legacy'. if [ "`zfs get -H -o value mountpoint ${bootfs}`" != "legacy" ]; then From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:26:05 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 982AB106567C; Sat, 2 Jun 2012 18:26:05 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 812128FC18; Sat, 2 Jun 2012 18:26:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IQ5PI005178; Sat, 2 Jun 2012 18:26:05 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IQ59f005176; Sat, 2 Jun 2012 18:26:05 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021826.q52IQ59f005176@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:26:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236460 - stable/9/tools/tools/zfsboottest X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:26:05 -0000 Author: avg Date: Sat Jun 2 18:26:05 2012 New Revision: 236460 URL: http://svn.freebsd.org/changeset/base/236460 Log: MFC r235130: zfsboottest.sh: correctly check and suggest value of vfs.root.mountfrom Modified: stable/9/tools/tools/zfsboottest/zfsboottest.sh Directory Properties: stable/9/tools/tools/ (props changed) stable/9/tools/tools/nanobsd/ (props changed) stable/9/tools/tools/zfsboottest/ (props changed) Modified: stable/9/tools/tools/zfsboottest/zfsboottest.sh ============================================================================== --- stable/9/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:24:43 2012 (r236459) +++ stable/9/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:26:05 2012 (r236460) @@ -72,11 +72,11 @@ fi # or vfs.root.mountfrom variable set in /boot/loader.conf. egrep -q '^'"${bootfs}"'[[:space:]]+/[[:space:]]+zfs[[:space:]]+' "${mountpoint}/etc/fstab" 2>/dev/null if [ $? -ne 0 ]; then - egrep -q 'vfs.root.mountfrom="?'"${bootfs}"'"?[[:space:]]*$' "${mountpoint}/boot/loader.conf" 2>/dev/null + egrep -q 'vfs.root.mountfrom="?'"zfs:${bootfs}"'"?[[:space:]]*$' "${mountpoint}/boot/loader.conf" 2>/dev/null if [ $? -ne 0 ]; then echo "To be able to boot from \"${bootfs}\", you need to declare" >&2 echo "\"${bootfs}\" as being root file system in ${mountpoint}/etc/fstab" >&2 - echo "or add \"vfs.root.mountfrom\" variable set to \"${bootfs}\" to" >&2 + echo "or add \"vfs.root.mountfrom\" variable set to \"zfs:${bootfs}\" to" >&2 echo "${mountpoint}/boot/loader.conf." >&2 exit 1 fi From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:27:15 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A19C1065675; Sat, 2 Jun 2012 18:27:15 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D06E58FC1D; Sat, 2 Jun 2012 18:27:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IREDd005280; Sat, 2 Jun 2012 18:27:14 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IREKm005278; Sat, 2 Jun 2012 18:27:14 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021827.q52IREKm005278@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:27:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236461 - in stable/8/tools/tools: ath/common termcap zfsboottest X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:27:15 -0000 Author: avg Date: Sat Jun 2 18:27:14 2012 New Revision: 236461 URL: http://svn.freebsd.org/changeset/base/236461 Log: MFC r235129: zfsboottest.sh: gracefully handle default value of bootfs property Modified: stable/8/tools/tools/zfsboottest/zfsboottest.sh Directory Properties: stable/8/tools/tools/ (props changed) stable/8/tools/tools/aac/ (props changed) stable/8/tools/tools/ath/ (props changed) stable/8/tools/tools/ath/common/dumpregs.h (props changed) stable/8/tools/tools/ath/common/dumpregs_5210.c (props changed) stable/8/tools/tools/ath/common/dumpregs_5211.c (props changed) stable/8/tools/tools/ath/common/dumpregs_5212.c (props changed) stable/8/tools/tools/ath/common/dumpregs_5416.c (props changed) stable/8/tools/tools/cfi/ (props changed) stable/8/tools/tools/ether_reflect/ (props changed) stable/8/tools/tools/iwi/ (props changed) stable/8/tools/tools/mctest/ (props changed) stable/8/tools/tools/nanobsd/ (props changed) stable/8/tools/tools/netrate/ (props changed) stable/8/tools/tools/netrate/netblast/ (props changed) stable/8/tools/tools/netrate/netsend/ (props changed) stable/8/tools/tools/netrate/tcpp/ (props changed) stable/8/tools/tools/termcap/termcap.pl (props changed) stable/8/tools/tools/umastat/ (props changed) stable/8/tools/tools/vimage/ (props changed) Modified: stable/8/tools/tools/zfsboottest/zfsboottest.sh ============================================================================== --- stable/8/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:26:05 2012 (r236460) +++ stable/8/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:27:14 2012 (r236461) @@ -52,8 +52,7 @@ if [ $? -ne 0 ]; then fi bootfs=`zpool get bootfs "${pool}" | tail -1 | awk '{print $3}'` if [ "${bootfs}" = "-" ]; then - echo "The \"bootfs\" property is not configured for pool \"${pool}\"." >&2 - exit 1 + bootfs="${pool}" fi # Dataset's mountpoint property should be set to 'legacy'. if [ "`zfs get -H -o value mountpoint ${bootfs}`" != "legacy" ]; then From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:28:35 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id A8DF2106566B; Sat, 2 Jun 2012 18:28:35 +0000 (UTC) (envelope-from jpaetzel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8A95E8FC1C; Sat, 2 Jun 2012 18:28:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52ISZln005405; Sat, 2 Jun 2012 18:28:35 GMT (envelope-from jpaetzel@svn.freebsd.org) Received: (from jpaetzel@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52ISZhH005398; Sat, 2 Jun 2012 18:28:35 GMT (envelope-from jpaetzel@svn.freebsd.org) Message-Id: <201206021828.q52ISZhH005398@svn.freebsd.org> From: Josh Paetzel Date: Sat, 2 Jun 2012 18:28:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236462 - in stable/9/usr.sbin/pkg_install: add lib X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:28:35 -0000 Author: jpaetzel Date: Sat Jun 2 18:28:34 2012 New Revision: 236462 URL: http://svn.freebsd.org/changeset/base/236462 Log: MFC 236333,236336 Let pkg_add use the ENV variable PACKAGESUFFIX. This can be used to override the default .tbz package extension to .txz .tgz or .tar Submitted by: kmoore Obtained from: PC-BSD Sponsored by: iXsystems Modified: stable/9/usr.sbin/pkg_install/add/main.c stable/9/usr.sbin/pkg_install/add/perform.c stable/9/usr.sbin/pkg_install/add/pkg_add.1 stable/9/usr.sbin/pkg_install/lib/file.c stable/9/usr.sbin/pkg_install/lib/lib.h stable/9/usr.sbin/pkg_install/lib/url.c Directory Properties: stable/9/usr.sbin/pkg_install/ (props changed) stable/9/usr.sbin/pkg_install/add/ (props changed) Modified: stable/9/usr.sbin/pkg_install/add/main.c ============================================================================== --- stable/9/usr.sbin/pkg_install/add/main.c Sat Jun 2 18:27:14 2012 (r236461) +++ stable/9/usr.sbin/pkg_install/add/main.c Sat Jun 2 18:28:34 2012 (r236462) @@ -234,10 +234,17 @@ main(int argc, char **argv) remotepkg = temppackageroot; if (!((ptr = strrchr(remotepkg, '.')) && ptr[1] == 't' && (ptr[2] == 'b' || ptr[2] == 'g' || ptr[2] == 'x') && - ptr[3] == 'z' && !ptr[4])) - if (strlcat(remotepkg, ".tbz", - sizeof(temppackageroot)) >= sizeof(temppackageroot)) - errx(1, "package name too long"); + ptr[3] == 'z' && !ptr[4])) { + if (getenv("PACKAGESUFFIX")) { + if (strlcat(remotepkg, getenv("PACKAGESUFFIX"), + sizeof(temppackageroot)) >= sizeof(temppackageroot)) + errx(1, "package name too long"); + } else { + if (strlcat(remotepkg, ".tbz", + sizeof(temppackageroot)) >= sizeof(temppackageroot)) + errx(1, "package name too long"); + } + } } if (!strcmp(*argv, "-")) /* stdin? */ pkgs[ch] = (char *)"-"; Modified: stable/9/usr.sbin/pkg_install/add/perform.c ============================================================================== --- stable/9/usr.sbin/pkg_install/add/perform.c Sat Jun 2 18:27:14 2012 (r236461) +++ stable/9/usr.sbin/pkg_install/add/perform.c Sat Jun 2 18:28:34 2012 (r236462) @@ -307,8 +307,12 @@ pkg_do(char *pkg) *sep = '\0'; strlcat(subpkg, "/All/", sizeof subpkg); strlcat(subpkg, p->name, sizeof subpkg); - if ((ext = strrchr(pkg, '.')) == NULL) - ext = ".tbz"; + if ((ext = strrchr(pkg, '.')) == NULL) { + if (getenv("PACKAGESUFFIX")) + ext = getenv("PACKAGESUFFIX"); + else + ext = ".tbz"; + } strlcat(subpkg, ext, sizeof subpkg); pkg_do(subpkg); } @@ -345,8 +349,13 @@ pkg_do(char *pkg) const char *ext; ext = strrchr(pkg_fullname, '.'); - if (ext == NULL) - ext = ".tbz"; + if (ext == NULL) { + if (getenv("PACKAGESUFFIX")) { + ext = getenv("PACKAGESUFFIX"); + } else { + ext = ".tbz"; + } + } snprintf(path, FILENAME_MAX, "%s/%s%s", getenv("_TOP"), p->name, ext); if (fexists(path)) cp = path; Modified: stable/9/usr.sbin/pkg_install/add/pkg_add.1 ============================================================================== --- stable/9/usr.sbin/pkg_install/add/pkg_add.1 Sat Jun 2 18:27:14 2012 (r236461) +++ stable/9/usr.sbin/pkg_install/add/pkg_add.1 Sat Jun 2 18:28:34 2012 (r236462) @@ -553,6 +553,11 @@ The environment variable specifies an alternative location to save downloaded packages to when .Fl K option is used. +.Pp +The environment variable +.Ev PACKAGESUFFIX +specifies an alternative file extension to use when fetching remote +packages. Default is .tbz .Sh FILES .Bl -tag -width /var/db/pkg -compact .It Pa /var/tmp Modified: stable/9/usr.sbin/pkg_install/lib/file.c ============================================================================== --- stable/9/usr.sbin/pkg_install/lib/file.c Sat Jun 2 18:27:14 2012 (r236461) +++ stable/9/usr.sbin/pkg_install/lib/file.c Sat Jun 2 18:28:34 2012 (r236462) @@ -140,7 +140,7 @@ fileFindByPath(const char *base, const c { static char tmp[FILENAME_MAX]; char *cp; - const char *suffixes[] = {".tbz", ".tgz", ".tar", NULL}; + const char *suffixes[] = {".tbz", ".tgz", ".tar", ".txz", NULL}; int i; if (fexists(fname) && isfile(fname)) { Modified: stable/9/usr.sbin/pkg_install/lib/lib.h ============================================================================== --- stable/9/usr.sbin/pkg_install/lib/lib.h Sat Jun 2 18:27:14 2012 (r236461) +++ stable/9/usr.sbin/pkg_install/lib/lib.h Sat Jun 2 18:28:34 2012 (r236462) @@ -99,7 +99,7 @@ * Version of the package tools - increase whenever you make a change * in the code that is not cosmetic only. */ -#define PKG_INSTALL_VERSION 20100403 +#define PKG_INSTALL_VERSION 20120530 #define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf" #define main(argc, argv) real_main(argc, argv) Modified: stable/9/usr.sbin/pkg_install/lib/url.c ============================================================================== --- stable/9/usr.sbin/pkg_install/lib/url.c Sat Jun 2 18:27:14 2012 (r236461) +++ stable/9/usr.sbin/pkg_install/lib/url.c Sat Jun 2 18:28:34 2012 (r236462) @@ -73,7 +73,10 @@ fileGetURL(const char *base, const char *(cp + 1) = '\0'; strcat(cp, "All/"); strcat(cp, spec); - strcat(cp, ".tbz"); + if (getenv("PACKAGESUFFIX")) + strcat(cp, getenv("PACKAGESUFFIX")); + else + strcat(cp, ".tbz"); } else return NULL; @@ -85,7 +88,10 @@ fileGetURL(const char *base, const char */ strcpy(fname, hint); strcat(fname, spec); - strcat(fname, ".tbz"); + if (getenv("PACKAGESUFFIX")) + strcat(fname, getenv("PACKAGESUFFIX")); + else + strcat(fname, ".tbz"); } } else From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:29:17 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 408F4106567F; Sat, 2 Jun 2012 18:29:17 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 111468FC27; Sat, 2 Jun 2012 18:29:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52ITGjx005469; Sat, 2 Jun 2012 18:29:16 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52ITG5d005467; Sat, 2 Jun 2012 18:29:16 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021829.q52ITG5d005467@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:29:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236463 - in stable/8/tools/tools: ath/common termcap zfsboottest X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:29:17 -0000 Author: avg Date: Sat Jun 2 18:29:16 2012 New Revision: 236463 URL: http://svn.freebsd.org/changeset/base/236463 Log: MFC r235130: zfsboottest.sh: correctly check and suggest value of vfs.root.mountfrom Modified: stable/8/tools/tools/zfsboottest/zfsboottest.sh Directory Properties: stable/8/tools/tools/ (props changed) stable/8/tools/tools/aac/ (props changed) stable/8/tools/tools/ath/ (props changed) stable/8/tools/tools/ath/common/dumpregs.h (props changed) stable/8/tools/tools/ath/common/dumpregs_5210.c (props changed) stable/8/tools/tools/ath/common/dumpregs_5211.c (props changed) stable/8/tools/tools/ath/common/dumpregs_5212.c (props changed) stable/8/tools/tools/ath/common/dumpregs_5416.c (props changed) stable/8/tools/tools/cfi/ (props changed) stable/8/tools/tools/ether_reflect/ (props changed) stable/8/tools/tools/iwi/ (props changed) stable/8/tools/tools/mctest/ (props changed) stable/8/tools/tools/nanobsd/ (props changed) stable/8/tools/tools/netrate/ (props changed) stable/8/tools/tools/netrate/netblast/ (props changed) stable/8/tools/tools/netrate/netsend/ (props changed) stable/8/tools/tools/netrate/tcpp/ (props changed) stable/8/tools/tools/termcap/termcap.pl (props changed) stable/8/tools/tools/umastat/ (props changed) stable/8/tools/tools/vimage/ (props changed) Modified: stable/8/tools/tools/zfsboottest/zfsboottest.sh ============================================================================== --- stable/8/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:28:34 2012 (r236462) +++ stable/8/tools/tools/zfsboottest/zfsboottest.sh Sat Jun 2 18:29:16 2012 (r236463) @@ -72,11 +72,11 @@ fi # or vfs.root.mountfrom variable set in /boot/loader.conf. egrep -q '^'"${bootfs}"'[[:space:]]+/[[:space:]]+zfs[[:space:]]+' "${mountpoint}/etc/fstab" 2>/dev/null if [ $? -ne 0 ]; then - egrep -q 'vfs.root.mountfrom="?'"${bootfs}"'"?[[:space:]]*$' "${mountpoint}/boot/loader.conf" 2>/dev/null + egrep -q 'vfs.root.mountfrom="?'"zfs:${bootfs}"'"?[[:space:]]*$' "${mountpoint}/boot/loader.conf" 2>/dev/null if [ $? -ne 0 ]; then echo "To be able to boot from \"${bootfs}\", you need to declare" >&2 echo "\"${bootfs}\" as being root file system in ${mountpoint}/etc/fstab" >&2 - echo "or add \"vfs.root.mountfrom\" variable set to \"${bootfs}\" to" >&2 + echo "or add \"vfs.root.mountfrom\" variable set to \"zfs:${bootfs}\" to" >&2 echo "${mountpoint}/boot/loader.conf." >&2 exit 1 fi From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:36:30 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EAB0106566B; Sat, 2 Jun 2012 18:36:30 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4FFA98FC17; Sat, 2 Jun 2012 18:36:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IaUTG005840; Sat, 2 Jun 2012 18:36:30 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IaUWq005838; Sat, 2 Jun 2012 18:36:30 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021836.q52IaUWq005838@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:36:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236464 - stable/9/sys/i386/include X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:36:30 -0000 Author: avg Date: Sat Jun 2 18:36:29 2012 New Revision: 236464 URL: http://svn.freebsd.org/changeset/base/236464 Log: MFC r235391: i386 bootinfo: re-arrange EFI fields for natural alignment and packing Modified: stable/9/sys/i386/include/bootinfo.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/i386/include/bootinfo.h ============================================================================== --- stable/9/sys/i386/include/bootinfo.h Sat Jun 2 18:29:16 2012 (r236463) +++ stable/9/sys/i386/include/bootinfo.h Sat Jun 2 18:36:29 2012 (r236464) @@ -65,13 +65,13 @@ struct bootinfo { u_int32_t bi_kernend; /* end of kernel space */ u_int32_t bi_envp; /* environment */ u_int32_t bi_modulep; /* preloaded modules */ + uint32_t bi_memdesc_version; /* EFI memory desc version */ + uint64_t bi_memdesc_size; /* sizeof EFI memory desc */ + uint64_t bi_memmap; /* pa of EFI memory map */ + uint64_t bi_memmap_size; /* size of EFI memory map */ uint64_t bi_hcdp; /* DIG64 HCDP table */ uint64_t bi_fpswa; /* FPSWA interface */ uint64_t bi_systab; /* pa of EFI system table */ - uint64_t bi_memmap; /* pa of EFI memory map */ - uint64_t bi_memmap_size; /* size of EFI memory map */ - uint64_t bi_memdesc_size; /* sizeof EFI memory desc */ - uint32_t bi_memdesc_version; /* EFI memory desc version */ }; #ifdef _KERNEL From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:55:26 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id BB59D1065677; Sat, 2 Jun 2012 18:55:26 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A60458FC1A; Sat, 2 Jun 2012 18:55:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52ItQcR006885; Sat, 2 Jun 2012 18:55:26 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52ItQFS006883; Sat, 2 Jun 2012 18:55:26 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021855.q52ItQFS006883@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:55:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236466 - stable/9/cddl/contrib/opensolaris/cmd/zpool X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:55:26 -0000 Author: avg Date: Sat Jun 2 18:55:25 2012 New Revision: 236466 URL: http://svn.freebsd.org/changeset/base/236466 Log: MFC r235478: zpool_do_import: use /dev instead of /dev/dsk as a default Modified: stable/9/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Sat Jun 2 18:44:40 2012 (r236465) +++ stable/9/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Sat Jun 2 18:55:25 2012 (r236466) @@ -1909,7 +1909,7 @@ zpool_do_import(int argc, char **argv) if (searchdirs == NULL) { searchdirs = safe_malloc(sizeof (char *)); - searchdirs[0] = "/dev/dsk"; + searchdirs[0] = "/dev"; nsearch = 1; } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:56:42 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 596C81065672; Sat, 2 Jun 2012 18:56:42 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 428778FC1D; Sat, 2 Jun 2012 18:56:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52Iugns006993; Sat, 2 Jun 2012 18:56:42 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IugOH006991; Sat, 2 Jun 2012 18:56:42 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021856.q52IugOH006991@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:56:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236467 - stable/9/cddl/contrib/opensolaris/lib/libzfs/common X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:56:42 -0000 Author: avg Date: Sat Jun 2 18:56:41 2012 New Revision: 236467 URL: http://svn.freebsd.org/changeset/base/236467 Log: MFC r235479: zpool_find_import_impl: another /dev/dsk -> /dev fix PR: bin/155104 Modified: stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Directory Properties: stable/9/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c ============================================================================== --- stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Sat Jun 2 18:55:25 2012 (r236466) +++ stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Sat Jun 2 18:56:41 2012 (r236467) @@ -1145,7 +1145,7 @@ zpool_find_import_impl(libzfs_handle_t * char *end, **dir = iarg->path; size_t pathleft; nvlist_t *ret = NULL; - static char *default_dir = "/dev/dsk"; + static char *default_dir = "/dev"; pool_list_t pools = { 0 }; pool_entry_t *pe, *penext; vdev_entry_t *ve, *venext; From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:57:14 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 0A4451065673; Sat, 2 Jun 2012 18:57:14 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E727D8FC0A; Sat, 2 Jun 2012 18:57:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IvD5D007080; Sat, 2 Jun 2012 18:57:13 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IvDOI007072; Sat, 2 Jun 2012 18:57:13 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021857.q52IvDOI007072@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 18:57:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236468 - in stable/9/sys: arm/at91 arm/conf dev/sym X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:57:14 -0000 Author: marius Date: Sat Jun 2 18:57:13 2012 New Revision: 236468 URL: http://svn.freebsd.org/changeset/base/236468 Log: MFC: r236061 - When creating the DMA tag for user data, don't ask for more segments than required for handling MAXPHYS and report the resulting maximum I/O size to CAM instead of implicitly limiting it to DFLTPHYS. - Move the variables of sym_action2() out of nested scope as required by style(9) and remove extraneous curly braces. - Replace a magic value for PCIR_COMMAND with the appropriate macro. - Use DEVMETHOD_END. - Use NULL instead of 0 for pointers. Tested with a HBA donated by wilko. Added: stable/9/sys/arm/at91/board_ethernut5.c - copied unchanged from r235348, head/sys/arm/at91/board_ethernut5.c stable/9/sys/arm/at91/std.ethernut5 - copied unchanged from r235348, head/sys/arm/at91/std.ethernut5 stable/9/sys/arm/conf/ETHERNUT5 - copied unchanged from r235348, head/sys/arm/conf/ETHERNUT5 stable/9/sys/arm/conf/ETHERNUT5.hints - copied unchanged from r235348, head/sys/arm/conf/ETHERNUT5.hints Modified: stable/9/sys/arm/at91/files.at91sam9 stable/9/sys/dev/sym/sym_conf.h stable/9/sys/dev/sym/sym_hipd.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Copied: stable/9/sys/arm/at91/board_ethernut5.c (from r235348, head/sys/arm/at91/board_ethernut5.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/sys/arm/at91/board_ethernut5.c Sat Jun 2 18:57:13 2012 (r236468, copy of r235348, head/sys/arm/at91/board_ethernut5.c) @@ -0,0 +1,146 @@ +/*- + * Copyright (c) 2012 Marius Strobl + * 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. + */ + +/* + * Ethernut 5 board support + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +long +board_init(void) +{ + + /* + * DBGU + */ + /* DRXD */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB14, 0); + /* DTXD */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB15, 1); + + /* + * EMAC + */ + /* ETX0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA12, 0); + /* ETX1 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA13, 0); + /* ERX0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA14, 0); + /* ERX1 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA15, 0); + /* ETXEN */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA16, 0); + /* ERXDV */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA17, 0); + /* ERXER */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA18, 0); + /* ETXCK */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA19, 0); + /* EMDC */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA20, 0); + /* EMDIO */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA21, 0); + + /* + * MMC + */ + /* MCDA0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA6, 1); + /* MCCDA */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA7, 1); + /* MCCK */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA8, 1); + /* MCDA1 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA9, 1); + /* MCDA2 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA10, 1); + /* MCDA3 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA11, 1); + + /* + * SPI0 + */ + /* MISO */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA0, 0); + /* MOSI */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA1, 0); + /* SPCK */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA2, 0); + /* NPCS0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA3, 0); + + /* + * TWI + */ + /* TWD */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA23, 1); + /* TWCK */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA24, 1); + + /* + * USART0 + */ + /* TXD0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB4, 1); + /* RXD0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB5, 0); + /* DSR0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB22, 0); + /* DCD0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB23, 0); + /* DTR0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB24, 1); + /* RI0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB25, 0); + /* RTS0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB26, 1); + /* CTS0 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB27, 0); + + /* + * USART2 + */ + /* RTS2 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA4, 1); + /* CTS2 */ + at91_pio_use_periph_a(AT91SAM9260_PIOA_BASE, AT91C_PIO_PA5, 0); + /* TXD2 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB8, 1); + /* RXD2 */ + at91_pio_use_periph_a(AT91SAM9260_PIOB_BASE, AT91C_PIO_PB9, 0); + + return (at91_ramsize()); +} Modified: stable/9/sys/arm/at91/files.at91sam9 ============================================================================== --- stable/9/sys/arm/at91/files.at91sam9 Sat Jun 2 18:56:41 2012 (r236467) +++ stable/9/sys/arm/at91/files.at91sam9 Sat Jun 2 18:57:13 2012 (r236468) @@ -31,6 +31,7 @@ arm/at91/at91sam9260.c optional at91sam # # All the boards we support # +arm/at91/board_ethernut5.c optional at91_board_ethernut5 arm/at91/board_hl201.c optional at91_board_hl201 arm/at91/board_sam9g20ek.c optional at91_board_sam9g20ek arm/at91/board_qila9g20.c optional at91_board_qila9g20 Copied: stable/9/sys/arm/at91/std.ethernut5 (from r235348, head/sys/arm/at91/std.ethernut5) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/sys/arm/at91/std.ethernut5 Sat Jun 2 18:57:13 2012 (r236468, copy of r235348, head/sys/arm/at91/std.ethernut5) @@ -0,0 +1,14 @@ +# $FreeBSD$ +include "../at91/std.at91sam9" + +options STARTUP_PAGETABLE_ADDR=0x20800000 +makeoptions KERNPHYSADDR=0x20000000 +makeoptions KERNVIRTADDR=0xc0000000 +options KERNPHYSADDR=0x20000000 +options KERNVIRTADDR=0xc0000000 + +# SAM9XE512 w/ 90.3168 MHz master clock +options AT91C_MASTER_CLOCK=90316800 + +device at91_board_ethernut5 +nodevice at91sam9g20 Copied: stable/9/sys/arm/conf/ETHERNUT5 (from r235348, head/sys/arm/conf/ETHERNUT5) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/sys/arm/conf/ETHERNUT5 Sat Jun 2 18:57:13 2012 (r236468, copy of r235348, head/sys/arm/conf/ETHERNUT5) @@ -0,0 +1,158 @@ +# Kernel configuration for Ethernut 5 boards +# +# For more information on this file, please read the config(5) manual page, +# and/or the handbook section on Kernel Configuration Files: +# +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ + +ident ETHERNUT5 + +include "../at91/std.ethernut5" + +# To statically compile in device wiring instead of /boot/device.hints +hints "ETHERNUT5.hints" + +#makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols + +options SCHED_4BSD # 4BSD scheduler +#options PREEMPTION # Enable kernel thread preemption +options INET # InterNETworking +#options INET6 # IPv6 communications protocols +#options SCTP # Stream Control Transmission Protocol +options FFS # Berkeley Fast Filesystem +options SOFTUPDATES # Enable FFS soft updates support +#options UFS_ACL # Support for access control lists +options UFS_DIRHASH # Improve performance on big directories +#options UFS_GJOURNAL # Enable gjournal-based UFS journaling +#options MD_ROOT # MD is a potential root device +options NFSCL # New Network Filesystem Client +#options NFSD # New Network Filesystem Server +options NFSLOCKD # Network Lock Manager +options NFS_ROOT # NFS usable as /, requires NFSCL +#options MSDOSFS # MSDOS Filesystem +#options CD9660 # ISO 9660 Filesystem +#options PROCFS # Process filesystem (requires PSEUDOFS) +#options PSEUDOFS # Pseudo-filesystem framework +#options GEOM_PART_GPT # GUID Partition Tables. +#options GEOM_LABEL # Provides labelization +#options COMPAT_FREEBSD5 # Compatible with FreeBSD5 +#options COMPAT_FREEBSD6 # Compatible with FreeBSD6 +#options COMPAT_FREEBSD7 # Compatible with FreeBSD7 +options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI +options KTRACE # ktrace(1) support +#options STACK # stack(9) support +options SYSVSHM # SYSV-style shared memory +options SYSVMSG # SYSV-style message queues +options SYSVSEM # SYSV-style semaphores +options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions +options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. +#options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) +#options AUDIT # Security event auditing +#options CAPABILITY_MODE # Capsicum capability mode +#options CAPABILITIES # Capsicum capabilities +#options MAC # TrustedBSD MAC Framework +#options INCLUDE_CONFIG_FILE # Include this file in kernel + +# required for netbooting +options BOOTP_NFSROOT +options BOOTP +options BOOTP_NFSV3 +options BOOTP_WIRED_TO=ate0 +options BOOTP_COMPAT + +# alternatively, boot from a MMC/SD memory card +#options ROOTDEVNAME=\"ufs:/dev/mmcsd0a\" + +# kernel/memory size reduction +options MUTEX_NOINLINE +options NO_FFS_SNAPSHOT +options NO_SWAPPING +options NO_SYSCTL_DESCR +options RWLOCK_NOINLINE + +# Debugging support. Always need this: +#options KDB # Enable kernel debugger support. +# For minimum debugger support (stable branch) use: +#options KDB_TRACE # Print a stack trace for a panic. +# For full debugger support use this instead: +#options DDB # Support DDB. +#options GDB # Support remote GDB. +#options DEADLKRES # Enable the deadlock resolver +#options INVARIANTS # Enable calls of extra sanity checking +#options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS +#options WITNESS # Enable checks to detect deadlocks and cycles +#options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed +#options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones + +# The `bpf' device enables the Berkeley Packet Filter. +# Be aware of the administrative consequences of enabling this! +# Note that 'bpf' is required for DHCP. +device bpf # Berkeley packet filter + +# Ethernet +device mii # Minimal MII support +device ate # Atmel AT91 Ethernet friver + +# I2C +device at91_twi # Atmel AT91 Two-wire Interface +device iic # I2C generic I/O device driver +device iicbus # I2C bus system +device pcf8563 # NXP PCF8563 clock/calendar + +# MMC/SD +device at91_mci # Atmel AT91 Multimedia Card Interface +options AT91_MCI_HAS_4WIRE +device mmc # MMC/SD bus +device mmcsd # MMC/SD memory card + +# DataFlash - totally b0rken drivers +#device at91_spi # Atmel AT91 Serial Peripheral Interface +#device spibus # SPI bus +#device at45d # Atmel AT45D +#device geom_map # GEOM partition mapping + +# Pseudo devices. +device loop # Network loopback +device random # Entropy device +device ether # Ethernet support +#device vlan # 802.1Q VLAN support +#device tun # Packet tunnel. +#device md # Memory "disks" +#device gif # IPv6 and IPv4 tunneling +#device faith # IPv6-to-IPv4 relaying (translation) +#device firmware # firmware assist module + +# SCSI peripherals +#device scbus # SCSI bus (required for ATA/SCSI) +#device ch # SCSI media changers +#device da # Direct Access (disks) +#device sa # Sequential Access (tape etc) +#device cd # CD +#device pass # Passthrough device (direct ATA/SCSI access) +#device ses # SCSI Environmental Services (and SAF-TE) +#device ctl # CAM Target Layer + +# Serial (COM) ports +device uart # Multi-uart driver +options ALT_BREAK_TO_DEBUGGER + +# USB support +#options USB_DEBUG # enable debug msgs +device ohci # OHCI PCI->USB interface +device usb # USB Bus (required) +#device umass # Disks/Mass storage - Requires scbus and da + +# watchdog +device at91_wdt # Atmel AT91 Watchdog Timer Copied: stable/9/sys/arm/conf/ETHERNUT5.hints (from r235348, head/sys/arm/conf/ETHERNUT5.hints) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/9/sys/arm/conf/ETHERNUT5.hints Sat Jun 2 18:57:13 2012 (r236468, copy of r235348, head/sys/arm/conf/ETHERNUT5.hints) @@ -0,0 +1,45 @@ +# $FreeBSD$ + +# Atmel AT45DB21D +hint.at45d.0.at="spibus0" +hint.at45d.0.addr=0x00 +# user 132 kbytes +hint.map.0.at="flash/spi0" +hint.map.0.start=0x00000000 +hint.map.0.end=0x00020fff +hint.map.0.name="user" +hint.map.0.readonly=1 +# setup 132 kbytes +hint.map.1.at="flash/spi0" +hint.map.1.start=0x00021000 +hint.map.1.end=0x00041fff +hint.map.1.name="setup" +hint.map.1.readonly=1 +# uboot 528 kbytes +hint.map.2.at="flash/spi0" +hint.map.2.start=0x00042000 +hint.map.2.end=0x000c5fff +hint.map.2.name="uboot" +hint.map.2.readonly=1 +# kernel 2640 kbytes +hint.map.3.at="flash/spi0" +hint.map.3.start=0x000c6000 +hint.map.3.end=0x00359fff +hint.map.3.name="kernel" +#hint.map.3.readonly=1 +# nutos 3432 kbytes +hint.map.4.at="flash/spi0" +hint.map.4.start=0x0035a000 +hint.map.4.end=0x003ddfff +hint.map.4.name="nutos" +hint.map.4.readonly=1 +# env 3960 kbytes +hint.map.5.at="flash/spi0" +hint.map.5.start=0x003de000 +hint.map.5.end=0x003fefff +hint.map.5.name="env" +hint.map.5.readonly=1 + +# NXP PCF8563 clock/calendar +hint.pcf8563_rtc.0.at="iicbus0" +hint.pcf8563_rtc.0.addr=0xa2 Modified: stable/9/sys/dev/sym/sym_conf.h ============================================================================== --- stable/9/sys/dev/sym/sym_conf.h Sat Jun 2 18:56:41 2012 (r236467) +++ stable/9/sys/dev/sym/sym_conf.h Sat Jun 2 18:57:13 2012 (r236468) @@ -83,6 +83,13 @@ #define SYM_CONF_MAX_TAG_ORDER (6) /* + * DMA boundary + * We need to ensure 16 MB boundaries not to be crossed during DMA of + * each segment, due to some chips being flawed. + */ +#define SYM_CONF_DMA_BOUNDARY (1UL << 24) + +/* * Max number of scatter/gather entries for en IO. * Each entry costs 8 bytes in the internal CCB data structure. * For now 65 should suffice given the BSD O/Ses capabilities. Modified: stable/9/sys/dev/sym/sym_hipd.c ============================================================================== --- stable/9/sys/dev/sym/sym_hipd.c Sat Jun 2 18:56:41 2012 (r236467) +++ stable/9/sys/dev/sym/sym_hipd.c Sat Jun 2 18:57:13 2012 (r236468) @@ -1623,6 +1623,7 @@ struct sym_hcb { u_int features; /* Chip features map */ u_char myaddr; /* SCSI id of the adapter */ u_char maxburst; /* log base 2 of dwords burst */ + u_char maxsegcnt; /* Max DMA S/G segments */ u_char maxwide; /* Maximum transfer width */ u_char minsync; /* Min sync period factor (ST) */ u_char maxsync; /* Max sync period factor (ST) */ @@ -7988,10 +7989,7 @@ sym_fast_scatter_sg_physical(hcb_p np, c /* * Scatter a SG list with physical addresses into bus addressable chunks. - * We need to ensure 16MB boundaries not to be crossed during DMA of - * each segment, due to some chips being flawed. */ -#define BOUND_MASK ((1UL<<24)-1) static int sym_scatter_sg_physical(hcb_p np, ccb_p cp, bus_dma_segment_t *psegs, int nsegs) { @@ -8007,7 +8005,7 @@ sym_scatter_sg_physical(hcb_p np, ccb_p pe = ps + psegs[t].ds_len; while (s >= 0) { - pn = (pe - 1) & ~BOUND_MASK; + pn = (pe - 1) & ~(SYM_CONF_DMA_BOUNDARY - 1); if (pn <= ps) pn = ps; k = pe - pn; @@ -8032,17 +8030,21 @@ sym_scatter_sg_physical(hcb_p np, ccb_p return t >= 0 ? -1 : 0; } -#undef BOUND_MASK /* * SIM action for non performance critical stuff. */ static void sym_action2(struct cam_sim *sim, union ccb *ccb) { + union ccb *abort_ccb; + struct ccb_hdr *ccb_h; + struct ccb_pathinq *cpi; + struct ccb_trans_settings *cts; + struct sym_trans *tip; hcb_p np; tcb_p tp; lcb_p lp; - struct ccb_hdr *ccb_h; + u_char dflags; /* * Retrieve our controller data structure. @@ -8055,9 +8057,6 @@ static void sym_action2(struct cam_sim * switch (ccb_h->func_code) { case XPT_SET_TRAN_SETTINGS: - { - struct ccb_trans_settings *cts; - cts = &ccb->cts; tp = &np->target[ccb_h->target_id]; @@ -8079,13 +8078,7 @@ static void sym_action2(struct cam_sim * sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_GET_TRAN_SETTINGS: - { - struct ccb_trans_settings *cts; - struct sym_trans *tip; - u_char dflags; - cts = &ccb->cts; tp = &np->target[ccb_h->target_id]; lp = sym_lp(np, tp, ccb_h->target_lun); @@ -8129,16 +8122,12 @@ static void sym_action2(struct cam_sim * #undef cts__scsi sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_CALC_GEOMETRY: - { cam_calc_geometry(&ccb->ccg, /*extended*/1); sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_PATH_INQ: - { - struct ccb_pathinq *cpi = &ccb->cpi; + cpi = &ccb->cpi; cpi->version_num = 1; cpi->hba_inquiry = PI_MDP_ABLE|PI_SDTR_ABLE|PI_TAG_ABLE; if ((np->features & FE_WIDE) != 0) @@ -8173,12 +8162,11 @@ static void sym_action2(struct cam_sim * cpi->xport_specific.spi.ppr_options = SID_SPI_CLOCK_DT_ST; } + cpi->maxio = np->maxsegcnt * SYM_CONF_DMA_BOUNDARY; sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_ABORT: - { - union ccb *abort_ccb = ccb->cab.abort_ccb; + abort_ccb = ccb->cab.abort_ccb; switch(abort_ccb->ccb_h.func_code) { case XPT_SCSI_IO: if (sym_abort_scsiio(np, abort_ccb, 0) == 0) { @@ -8190,14 +8178,10 @@ static void sym_action2(struct cam_sim * break; } break; - } case XPT_RESET_DEV: - { sym_reset_dev(np, ccb); break; - } case XPT_RESET_BUS: - { sym_reset_scsi_bus(np, 0); if (sym_verbose) { xpt_print_path(np->path); @@ -8206,7 +8190,6 @@ static void sym_action2(struct cam_sim * sym_init (np, 1); sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_ACCEPT_TARGET_IO: case XPT_CONT_TARGET_IO: case XPT_EN_LUN: @@ -8362,7 +8345,7 @@ sym_update_dflags(hcb_p np, u_char *flag static device_method_t sym_pci_methods[] = { DEVMETHOD(device_probe, sym_pci_probe), DEVMETHOD(device_attach, sym_pci_attach), - { 0, 0 } + DEVMETHOD_END }; static driver_t sym_pci_driver = { @@ -8373,7 +8356,7 @@ static driver_t sym_pci_driver = { static devclass_t sym_devclass; -DRIVER_MODULE(sym, pci, sym_pci_driver, sym_devclass, 0, 0); +DRIVER_MODULE(sym, pci, sym_pci_driver, sym_devclass, NULL, NULL); MODULE_DEPEND(sym, cam, 1, 1, 1); MODULE_DEPEND(sym, pci, 1, 1, 1); @@ -8586,15 +8569,16 @@ sym_pci_attach(device_t dev) /* * Allocate a tag for the DMA of user data. */ - if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24), - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, - BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG, - (1<<24), 0, busdma_lock_mutex, &np->mtx, - &np->data_dmat)) { + np->maxsegcnt = MIN(SYM_CONF_MAX_SG, + (MAXPHYS / SYM_CONF_DMA_BOUNDARY) + 1); + if (bus_dma_tag_create(np->bus_dmat, 1, SYM_CONF_DMA_BOUNDARY, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + BUS_SPACE_MAXSIZE, np->maxsegcnt, SYM_CONF_DMA_BOUNDARY, + BUS_DMA_ALLOCNOW, busdma_lock_mutex, &np->mtx, &np->data_dmat)) { device_printf(dev, "failed to create DMA tag.\n"); goto attach_failed; } + /* * Read and apply some fix-ups to the PCI COMMAND * register. We want the chip to be enabled for: @@ -8603,9 +8587,8 @@ sym_pci_attach(device_t dev) * - Write And Invalidate. */ command = pci_read_config(dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - command |= PCIM_CMD_PERRESPEN; - command |= /* PCIM_CMD_MWIEN */ 0x0010; + command |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_PERRESPEN | + PCIM_CMD_MWRICEN; pci_write_config(dev, PCIR_COMMAND, command, 2); /* From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:57:17 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 488B1106564A; Sat, 2 Jun 2012 18:57:17 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 32C8E8FC08; Sat, 2 Jun 2012 18:57:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IvHZS007118; Sat, 2 Jun 2012 18:57:17 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IvGHZ007115; Sat, 2 Jun 2012 18:57:16 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021857.q52IvGHZ007115@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 18:57:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236469 - stable/8/sys/dev/sym X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:57:17 -0000 Author: marius Date: Sat Jun 2 18:57:16 2012 New Revision: 236469 URL: http://svn.freebsd.org/changeset/base/236469 Log: MFC: r236061 - When creating the DMA tag for user data, don't ask for more segments than required for handling MAXPHYS and report the resulting maximum I/O size to CAM instead of implicitly limiting it to DFLTPHYS. - Move the variables of sym_action2() out of nested scope as required by style(9) and remove extraneous curly braces. - Replace a magic value for PCIR_COMMAND with the appropriate macro. - Use DEVMETHOD_END. - Use NULL instead of 0 for pointers. Tested with a HBA donated by wilko. Modified: stable/8/sys/dev/sym/sym_conf.h stable/8/sys/dev/sym/sym_hipd.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/sym/sym_conf.h ============================================================================== --- stable/8/sys/dev/sym/sym_conf.h Sat Jun 2 18:57:13 2012 (r236468) +++ stable/8/sys/dev/sym/sym_conf.h Sat Jun 2 18:57:16 2012 (r236469) @@ -83,6 +83,13 @@ #define SYM_CONF_MAX_TAG_ORDER (6) /* + * DMA boundary + * We need to ensure 16 MB boundaries not to be crossed during DMA of + * each segment, due to some chips being flawed. + */ +#define SYM_CONF_DMA_BOUNDARY (1UL << 24) + +/* * Max number of scatter/gather entries for en IO. * Each entry costs 8 bytes in the internal CCB data structure. * For now 65 should suffice given the BSD O/Ses capabilities. Modified: stable/8/sys/dev/sym/sym_hipd.c ============================================================================== --- stable/8/sys/dev/sym/sym_hipd.c Sat Jun 2 18:57:13 2012 (r236468) +++ stable/8/sys/dev/sym/sym_hipd.c Sat Jun 2 18:57:16 2012 (r236469) @@ -1623,6 +1623,7 @@ struct sym_hcb { u_int features; /* Chip features map */ u_char myaddr; /* SCSI id of the adapter */ u_char maxburst; /* log base 2 of dwords burst */ + u_char maxsegcnt; /* Max DMA S/G segments */ u_char maxwide; /* Maximum transfer width */ u_char minsync; /* Min sync period factor (ST) */ u_char maxsync; /* Max sync period factor (ST) */ @@ -7988,10 +7989,7 @@ sym_fast_scatter_sg_physical(hcb_p np, c /* * Scatter a SG list with physical addresses into bus addressable chunks. - * We need to ensure 16MB boundaries not to be crossed during DMA of - * each segment, due to some chips being flawed. */ -#define BOUND_MASK ((1UL<<24)-1) static int sym_scatter_sg_physical(hcb_p np, ccb_p cp, bus_dma_segment_t *psegs, int nsegs) { @@ -8007,7 +8005,7 @@ sym_scatter_sg_physical(hcb_p np, ccb_p pe = ps + psegs[t].ds_len; while (s >= 0) { - pn = (pe - 1) & ~BOUND_MASK; + pn = (pe - 1) & ~(SYM_CONF_DMA_BOUNDARY - 1); if (pn <= ps) pn = ps; k = pe - pn; @@ -8032,17 +8030,21 @@ sym_scatter_sg_physical(hcb_p np, ccb_p return t >= 0 ? -1 : 0; } -#undef BOUND_MASK /* * SIM action for non performance critical stuff. */ static void sym_action2(struct cam_sim *sim, union ccb *ccb) { + union ccb *abort_ccb; + struct ccb_hdr *ccb_h; + struct ccb_pathinq *cpi; + struct ccb_trans_settings *cts; + struct sym_trans *tip; hcb_p np; tcb_p tp; lcb_p lp; - struct ccb_hdr *ccb_h; + u_char dflags; /* * Retrieve our controller data structure. @@ -8055,9 +8057,6 @@ static void sym_action2(struct cam_sim * switch (ccb_h->func_code) { case XPT_SET_TRAN_SETTINGS: - { - struct ccb_trans_settings *cts; - cts = &ccb->cts; tp = &np->target[ccb_h->target_id]; @@ -8079,13 +8078,7 @@ static void sym_action2(struct cam_sim * sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_GET_TRAN_SETTINGS: - { - struct ccb_trans_settings *cts; - struct sym_trans *tip; - u_char dflags; - cts = &ccb->cts; tp = &np->target[ccb_h->target_id]; lp = sym_lp(np, tp, ccb_h->target_lun); @@ -8129,16 +8122,12 @@ static void sym_action2(struct cam_sim * #undef cts__scsi sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_CALC_GEOMETRY: - { cam_calc_geometry(&ccb->ccg, /*extended*/1); sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_PATH_INQ: - { - struct ccb_pathinq *cpi = &ccb->cpi; + cpi = &ccb->cpi; cpi->version_num = 1; cpi->hba_inquiry = PI_MDP_ABLE|PI_SDTR_ABLE|PI_TAG_ABLE; if ((np->features & FE_WIDE) != 0) @@ -8173,12 +8162,11 @@ static void sym_action2(struct cam_sim * cpi->xport_specific.spi.ppr_options = SID_SPI_CLOCK_DT_ST; } + cpi->maxio = np->maxsegcnt * SYM_CONF_DMA_BOUNDARY; sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_ABORT: - { - union ccb *abort_ccb = ccb->cab.abort_ccb; + abort_ccb = ccb->cab.abort_ccb; switch(abort_ccb->ccb_h.func_code) { case XPT_SCSI_IO: if (sym_abort_scsiio(np, abort_ccb, 0) == 0) { @@ -8190,14 +8178,10 @@ static void sym_action2(struct cam_sim * break; } break; - } case XPT_RESET_DEV: - { sym_reset_dev(np, ccb); break; - } case XPT_RESET_BUS: - { sym_reset_scsi_bus(np, 0); if (sym_verbose) { xpt_print_path(np->path); @@ -8206,7 +8190,6 @@ static void sym_action2(struct cam_sim * sym_init (np, 1); sym_xpt_done2(np, ccb, CAM_REQ_CMP); break; - } case XPT_ACCEPT_TARGET_IO: case XPT_CONT_TARGET_IO: case XPT_EN_LUN: @@ -8362,7 +8345,7 @@ sym_update_dflags(hcb_p np, u_char *flag static device_method_t sym_pci_methods[] = { DEVMETHOD(device_probe, sym_pci_probe), DEVMETHOD(device_attach, sym_pci_attach), - { 0, 0 } + DEVMETHOD_END }; static driver_t sym_pci_driver = { @@ -8373,7 +8356,7 @@ static driver_t sym_pci_driver = { static devclass_t sym_devclass; -DRIVER_MODULE(sym, pci, sym_pci_driver, sym_devclass, 0, 0); +DRIVER_MODULE(sym, pci, sym_pci_driver, sym_devclass, NULL, NULL); MODULE_DEPEND(sym, cam, 1, 1, 1); MODULE_DEPEND(sym, pci, 1, 1, 1); @@ -8586,15 +8569,16 @@ sym_pci_attach(device_t dev) /* * Allocate a tag for the DMA of user data. */ - if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24), - BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, - BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG, - (1<<24), 0, busdma_lock_mutex, &np->mtx, - &np->data_dmat)) { + np->maxsegcnt = MIN(SYM_CONF_MAX_SG, + (MAXPHYS / SYM_CONF_DMA_BOUNDARY) + 1); + if (bus_dma_tag_create(np->bus_dmat, 1, SYM_CONF_DMA_BOUNDARY, + BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, + BUS_SPACE_MAXSIZE, np->maxsegcnt, SYM_CONF_DMA_BOUNDARY, + BUS_DMA_ALLOCNOW, busdma_lock_mutex, &np->mtx, &np->data_dmat)) { device_printf(dev, "failed to create DMA tag.\n"); goto attach_failed; } + /* * Read and apply some fix-ups to the PCI COMMAND * register. We want the chip to be enabled for: @@ -8603,9 +8587,8 @@ sym_pci_attach(device_t dev) * - Write And Invalidate. */ command = pci_read_config(dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - command |= PCIM_CMD_PERRESPEN; - command |= /* PCIM_CMD_MWIEN */ 0x0010; + command |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_PERRESPEN | + PCIM_CMD_MWRICEN; pci_write_config(dev, PCIR_COMMAND, command, 2); /* From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 18:59:19 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 465861065673; Sat, 2 Jun 2012 18:59:19 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 312E68FC24; Sat, 2 Jun 2012 18:59:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52IxJI4007244; Sat, 2 Jun 2012 18:59:19 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52IxIIk007242; Sat, 2 Jun 2012 18:59:18 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021859.q52IxIIk007242@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 18:59:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236470 - stable/8/cddl/contrib/opensolaris/cmd/zpool X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 18:59:19 -0000 Author: avg Date: Sat Jun 2 18:59:18 2012 New Revision: 236470 URL: http://svn.freebsd.org/changeset/base/236470 Log: MFC r235478: zpool_do_imp_import: use /dev instead of /dev/dsk as a default Modified: stable/8/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Sat Jun 2 18:57:16 2012 (r236469) +++ stable/8/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c Sat Jun 2 18:59:18 2012 (r236470) @@ -1909,7 +1909,7 @@ zpool_do_import(int argc, char **argv) if (searchdirs == NULL) { searchdirs = safe_malloc(sizeof (char *)); - searchdirs[0] = "/dev/dsk"; + searchdirs[0] = "/dev"; nsearch = 1; } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:01:47 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 90AC7106566B; Sat, 2 Jun 2012 19:01:47 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7B8098FC1D; Sat, 2 Jun 2012 19:01:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52J1lpS007416; Sat, 2 Jun 2012 19:01:47 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52J1loJ007414; Sat, 2 Jun 2012 19:01:47 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021901.q52J1loJ007414@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 19:01:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236471 - stable/8/cddl/contrib/opensolaris/lib/libzfs/common X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:01:47 -0000 Author: avg Date: Sat Jun 2 19:01:47 2012 New Revision: 236471 URL: http://svn.freebsd.org/changeset/base/236471 Log: MFC r235479: zpool_find_import_impl: another /dev//dsk -> /dev fix PR: bin/155104 Modified: stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Sat Jun 2 18:59:18 2012 (r236470) +++ stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Sat Jun 2 19:01:47 2012 (r236471) @@ -1145,7 +1145,7 @@ zpool_find_import_impl(libzfs_handle_t * char *end, **dir = iarg->path; size_t pathleft; nvlist_t *ret = NULL; - static char *default_dir = "/dev/dsk"; + static char *default_dir = "/dev"; pool_list_t pools = { 0 }; pool_entry_t *pe, *penext; vdev_entry_t *ve, *venext; From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:04:22 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1BA3C1065672; Sat, 2 Jun 2012 19:04:22 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 060488FC23; Sat, 2 Jun 2012 19:04:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52J4LjM007591; Sat, 2 Jun 2012 19:04:21 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52J4LCc007589; Sat, 2 Jun 2012 19:04:21 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021904.q52J4LCc007589@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:04:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236472 - in stable/9/sys/arm: at91 conf X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:04:22 -0000 Author: marius Date: Sat Jun 2 19:04:21 2012 New Revision: 236472 URL: http://svn.freebsd.org/changeset/base/236472 Log: Revert changes accidentally committed as part of r236468. Deleted: stable/9/sys/arm/at91/board_ethernut5.c stable/9/sys/arm/at91/std.ethernut5 stable/9/sys/arm/conf/ETHERNUT5 stable/9/sys/arm/conf/ETHERNUT5.hints Modified: stable/9/sys/arm/at91/files.at91sam9 Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/arm/at91/files.at91sam9 ============================================================================== --- stable/9/sys/arm/at91/files.at91sam9 Sat Jun 2 19:01:47 2012 (r236471) +++ stable/9/sys/arm/at91/files.at91sam9 Sat Jun 2 19:04:21 2012 (r236472) @@ -31,7 +31,6 @@ arm/at91/at91sam9260.c optional at91sam # # All the boards we support # -arm/at91/board_ethernut5.c optional at91_board_ethernut5 arm/at91/board_hl201.c optional at91_board_hl201 arm/at91/board_sam9g20ek.c optional at91_board_sam9g20ek arm/at91/board_qila9g20.c optional at91_board_qila9g20 From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:06:01 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 8FA4D106566C; Sat, 2 Jun 2012 19:06:01 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 78FC58FC14; Sat, 2 Jun 2012 19:06:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52J61JE007722; Sat, 2 Jun 2012 19:06:01 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52J61VI007720; Sat, 2 Jun 2012 19:06:01 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021906.q52J61VI007720@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:06:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236473 - stable/9/sys/dev/sym X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:06:01 -0000 Author: marius Date: Sat Jun 2 19:06:01 2012 New Revision: 236473 URL: http://svn.freebsd.org/changeset/base/236473 Log: MFC: r236063 Remove extraneous empty lines. Modified: stable/9/sys/dev/sym/sym_hipd.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/sym/sym_hipd.c ============================================================================== --- stable/9/sys/dev/sym/sym_hipd.c Sat Jun 2 19:04:21 2012 (r236472) +++ stable/9/sys/dev/sym/sym_hipd.c Sat Jun 2 19:06:01 2012 (r236473) @@ -70,7 +70,6 @@ __FBSDID("$FreeBSD$"); #include "opt_sym.h" #include - #include #include #include @@ -128,7 +127,6 @@ typedef u_int32_t u32; * requires memory barriers (and also IO barriers when they * make sense) to be used. */ - #if defined __i386__ || defined __amd64__ #define MEMORY_BARRIER() do { ; } while(0) #elif defined __powerpc__ @@ -144,7 +142,6 @@ typedef u_int32_t u32; /* * A la VMS/CAM-3 queue management. */ - typedef struct sym_quehead { struct sym_quehead *flink; /* Forward pointer */ struct sym_quehead *blink; /* Backward pointer */ @@ -206,7 +203,6 @@ static __inline void sym_que_splice(stru #define sym_que_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(size_t)(&((type *)0)->member))) - #define sym_insque(new, pos) __sym_que_add(new, pos, (pos)->flink) #define sym_remque(el) __sym_que_del((el)->blink, (el)->flink) @@ -373,7 +369,6 @@ static void MDELAY(int ms) { while (ms-- * pages of memory that will be useful if we ever need to deal * with IO MMUs for PCI. */ - #define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */ #define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */ #if 0 @@ -567,7 +562,6 @@ static m_pool_s mp0 = {0, 0, ___mp0_getp static m_pool_s mp0 = {0, 0, ___mp0_getp}; #endif - /* * Actual memory allocation routine for non-DMAed memory. */ @@ -768,7 +762,6 @@ static m_addr_t __vtobus(bus_dma_tag_t d return vp ? vp->baddr + (((m_addr_t) m) - a) : 0; } - /* * Verbs for DMAable memory handling. * The _uvptv_ macro avoids a nasty warning about pointer to volatile @@ -783,7 +776,6 @@ static m_addr_t __vtobus(bus_dma_tag_t d #define _vtobus(np, p) __vtobus(np->bus_dmat, _uvptv_(p)) #define vtobus(p) _vtobus(np, p) - /* * Print a buffer in hexadecimal format. */ @@ -858,14 +850,12 @@ struct sym_nvram { * Symbios chips (never seen, by the way). * For now, this stuff does not deserve any comments. :) */ - #define sym_offb(o) (o) #define sym_offw(o) (o) /* * Some provision for support for BIG ENDIAN CPU. */ - #define cpu_to_scr(dw) htole32(dw) #define scr_to_cpu(dw) le32toh(dw) @@ -874,8 +864,6 @@ struct sym_nvram { * We use the `bus space' interface under FreeBSD-4 and * later kernel versions. */ - - #if defined(SYM_CONF_IOMAPPED) #define INB_OFF(o) bus_read_1(np->io_res, (o)) @@ -901,7 +889,6 @@ struct sym_nvram { #define OUTRAM_OFF(o, a, l) \ bus_write_region_1(np->ram_res, (o), (a), (l)) - /* * Common definitions for both bus space and legacy IO methods. */ @@ -1333,7 +1320,6 @@ struct sym_pmc { * For SYMBIOS chips that support LOAD/STORE this copy is * not needed and thus not performed. */ - struct sym_ccbh { /* * Start and restart SCRIPTS addresses (must be at 0). @@ -1749,7 +1735,6 @@ static __inline const char *sym_name(hcb #define PADDR_A(label) SYM_GEN_PADDR_A(struct SYM_FWA_SCR, label) #define PADDR_B(label) SYM_GEN_PADDR_B(struct SYM_FWB_SCR, label) - #ifdef SYM_CONF_GENERIC_SUPPORT /* * Allocate firmware #1 script area. @@ -2453,7 +2438,6 @@ static __inline void sym_init_burst(hcb_ } } - /* * Print out the list of targets that have some flag disabled by user. */ @@ -2848,7 +2832,6 @@ static int sym_prepare_setting(hcb_p np, * negotiation and the nego_status field of the CCB. * Returns the size of the message in bytes. */ - static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr) { tcb_p tp = &np->target[cp->target]; @@ -2966,7 +2949,6 @@ static void sym_put_start_queue(hcb_p np OUTB (nc_istat, SIGP|np->istat_sem); } - /* * Soft reset the chip. * @@ -3842,7 +3824,6 @@ static void sym_log_hard_error(hcb_p np, * ask me for any guarantee that it will never fail. :-) * Use at your own decision and risk. */ - static void sym_intr1 (hcb_p np) { u_char istat, istatc; @@ -4004,7 +3985,6 @@ static void sym_poll(struct cam_sim *sim sym_intr1(cam_sim_softc(sim)); } - /* * generic recovery from scsi interrupt * @@ -5292,7 +5272,6 @@ static void sym_sir_task_recovery(hcb_p * offset (basically from the MDP message) and returns * the corresponding values of dp_sg and dp_ofs. */ - static int sym_evaluate_dp(hcb_p np, ccb_p cp, u32 scr, int *ofs) { u32 dp_scr; @@ -5410,7 +5389,6 @@ out_err: * Btw, we assume in that situation that such a message * is equivalent to a MODIFY DATA POINTER (offset=-1). */ - static void sym_modify_dp(hcb_p np, tcb_p tp, ccb_p cp, int ofs) { int dp_ofs = ofs; @@ -5494,7 +5472,6 @@ out_reject: OUTL_DSP (SCRIPTB_BA (np, msg_bad)); } - /* * chip calculation of the data residual. * @@ -5509,7 +5486,6 @@ out_reject: * any software that considers this data residual as * a relevant information. :) */ - static int sym_compute_residual(hcb_p np, ccb_p cp) { int dp_sg, dp_sgmin, resid = 0; @@ -5575,7 +5551,6 @@ static int sym_compute_residual(hcb_p np /* * Print out the content of a SCSI message. */ - static int sym_show_msg (u_char * msg) { u_char i; @@ -7771,7 +7746,6 @@ sym_setup_data_pointers(hcb_p np, ccb_p cp->startp = cp->phys.head.savep; } - /* * Call back routine for the DMA map service. * If bounce buffers are used (why ?), we may sleep and then @@ -7986,7 +7960,6 @@ sym_fast_scatter_sg_physical(hcb_p np, c return 0; } - /* * Scatter a SG list with physical addresses into bus addressable chunks. */ @@ -8338,10 +8311,8 @@ sym_update_dflags(hcb_p np, u_char *flag #undef cts__scsi } - /*============= DRIVER INITIALISATION ==================*/ - static device_method_t sym_pci_methods[] = { DEVMETHOD(device_probe, sym_pci_probe), DEVMETHOD(device_attach, sym_pci_attach), @@ -8360,7 +8331,6 @@ DRIVER_MODULE(sym, pci, sym_pci_driver, MODULE_DEPEND(sym, cam, 1, 1, 1); MODULE_DEPEND(sym, pci, 1, 1, 1); - static const struct sym_pci_chip sym_pci_dev_table[] = { {PCI_ID_SYM53C810, 0x0f, "810", 4, 8, 4, 64, FE_ERL} @@ -9260,7 +9230,6 @@ static void sym_display_Tekram_nvram(hcb #endif /* SYM_CONF_DEBUG_NVRAM */ #endif /* SYM_CONF_NVRAM_SUPPORT */ - /* * Try reading Symbios or Tekram NVRAM */ @@ -9298,7 +9267,6 @@ static int sym_read_nvram(hcb_p np, stru return nvp->type; } - #ifdef SYM_CONF_NVRAM_SUPPORT /* * 24C16 EEPROM reading. From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:06:05 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6C8901065673; Sat, 2 Jun 2012 19:06:05 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5629B8FC1D; Sat, 2 Jun 2012 19:06:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52J65IT007762; Sat, 2 Jun 2012 19:06:05 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52J65Id007760; Sat, 2 Jun 2012 19:06:05 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021906.q52J65Id007760@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:06:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236474 - stable/8/sys/dev/sym X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:06:05 -0000 Author: marius Date: Sat Jun 2 19:06:04 2012 New Revision: 236474 URL: http://svn.freebsd.org/changeset/base/236474 Log: MFC: r236063 Remove extraneous empty lines. Modified: stable/8/sys/dev/sym/sym_hipd.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/sym/sym_hipd.c ============================================================================== --- stable/8/sys/dev/sym/sym_hipd.c Sat Jun 2 19:06:01 2012 (r236473) +++ stable/8/sys/dev/sym/sym_hipd.c Sat Jun 2 19:06:04 2012 (r236474) @@ -70,7 +70,6 @@ __FBSDID("$FreeBSD$"); #include "opt_sym.h" #include - #include #include #include @@ -128,7 +127,6 @@ typedef u_int32_t u32; * requires memory barriers (and also IO barriers when they * make sense) to be used. */ - #if defined __i386__ || defined __amd64__ #define MEMORY_BARRIER() do { ; } while(0) #elif defined __powerpc__ @@ -144,7 +142,6 @@ typedef u_int32_t u32; /* * A la VMS/CAM-3 queue management. */ - typedef struct sym_quehead { struct sym_quehead *flink; /* Forward pointer */ struct sym_quehead *blink; /* Backward pointer */ @@ -206,7 +203,6 @@ static __inline void sym_que_splice(stru #define sym_que_entry(ptr, type, member) \ ((type *)((char *)(ptr)-(size_t)(&((type *)0)->member))) - #define sym_insque(new, pos) __sym_que_add(new, pos, (pos)->flink) #define sym_remque(el) __sym_que_del((el)->blink, (el)->flink) @@ -373,7 +369,6 @@ static void MDELAY(int ms) { while (ms-- * pages of memory that will be useful if we ever need to deal * with IO MMUs for PCI. */ - #define MEMO_SHIFT 4 /* 16 bytes minimum memory chunk */ #define MEMO_PAGE_ORDER 0 /* 1 PAGE maximum */ #if 0 @@ -567,7 +562,6 @@ static m_pool_s mp0 = {0, 0, ___mp0_getp static m_pool_s mp0 = {0, 0, ___mp0_getp}; #endif - /* * Actual memory allocation routine for non-DMAed memory. */ @@ -768,7 +762,6 @@ static m_addr_t __vtobus(bus_dma_tag_t d return vp ? vp->baddr + (((m_addr_t) m) - a) : 0; } - /* * Verbs for DMAable memory handling. * The _uvptv_ macro avoids a nasty warning about pointer to volatile @@ -783,7 +776,6 @@ static m_addr_t __vtobus(bus_dma_tag_t d #define _vtobus(np, p) __vtobus(np->bus_dmat, _uvptv_(p)) #define vtobus(p) _vtobus(np, p) - /* * Print a buffer in hexadecimal format. */ @@ -858,14 +850,12 @@ struct sym_nvram { * Symbios chips (never seen, by the way). * For now, this stuff does not deserve any comments. :) */ - #define sym_offb(o) (o) #define sym_offw(o) (o) /* * Some provision for support for BIG ENDIAN CPU. */ - #define cpu_to_scr(dw) htole32(dw) #define scr_to_cpu(dw) le32toh(dw) @@ -874,8 +864,6 @@ struct sym_nvram { * We use the `bus space' interface under FreeBSD-4 and * later kernel versions. */ - - #if defined(SYM_CONF_IOMAPPED) #define INB_OFF(o) bus_read_1(np->io_res, (o)) @@ -901,7 +889,6 @@ struct sym_nvram { #define OUTRAM_OFF(o, a, l) \ bus_write_region_1(np->ram_res, (o), (a), (l)) - /* * Common definitions for both bus space and legacy IO methods. */ @@ -1333,7 +1320,6 @@ struct sym_pmc { * For SYMBIOS chips that support LOAD/STORE this copy is * not needed and thus not performed. */ - struct sym_ccbh { /* * Start and restart SCRIPTS addresses (must be at 0). @@ -1749,7 +1735,6 @@ static __inline const char *sym_name(hcb #define PADDR_A(label) SYM_GEN_PADDR_A(struct SYM_FWA_SCR, label) #define PADDR_B(label) SYM_GEN_PADDR_B(struct SYM_FWB_SCR, label) - #ifdef SYM_CONF_GENERIC_SUPPORT /* * Allocate firmware #1 script area. @@ -2453,7 +2438,6 @@ static __inline void sym_init_burst(hcb_ } } - /* * Print out the list of targets that have some flag disabled by user. */ @@ -2848,7 +2832,6 @@ static int sym_prepare_setting(hcb_p np, * negotiation and the nego_status field of the CCB. * Returns the size of the message in bytes. */ - static int sym_prepare_nego(hcb_p np, ccb_p cp, int nego, u_char *msgptr) { tcb_p tp = &np->target[cp->target]; @@ -2966,7 +2949,6 @@ static void sym_put_start_queue(hcb_p np OUTB (nc_istat, SIGP|np->istat_sem); } - /* * Soft reset the chip. * @@ -3842,7 +3824,6 @@ static void sym_log_hard_error(hcb_p np, * ask me for any guarantee that it will never fail. :-) * Use at your own decision and risk. */ - static void sym_intr1 (hcb_p np) { u_char istat, istatc; @@ -4004,7 +3985,6 @@ static void sym_poll(struct cam_sim *sim sym_intr1(cam_sim_softc(sim)); } - /* * generic recovery from scsi interrupt * @@ -5292,7 +5272,6 @@ static void sym_sir_task_recovery(hcb_p * offset (basically from the MDP message) and returns * the corresponding values of dp_sg and dp_ofs. */ - static int sym_evaluate_dp(hcb_p np, ccb_p cp, u32 scr, int *ofs) { u32 dp_scr; @@ -5410,7 +5389,6 @@ out_err: * Btw, we assume in that situation that such a message * is equivalent to a MODIFY DATA POINTER (offset=-1). */ - static void sym_modify_dp(hcb_p np, tcb_p tp, ccb_p cp, int ofs) { int dp_ofs = ofs; @@ -5494,7 +5472,6 @@ out_reject: OUTL_DSP (SCRIPTB_BA (np, msg_bad)); } - /* * chip calculation of the data residual. * @@ -5509,7 +5486,6 @@ out_reject: * any software that considers this data residual as * a relevant information. :) */ - static int sym_compute_residual(hcb_p np, ccb_p cp) { int dp_sg, dp_sgmin, resid = 0; @@ -5575,7 +5551,6 @@ static int sym_compute_residual(hcb_p np /* * Print out the content of a SCSI message. */ - static int sym_show_msg (u_char * msg) { u_char i; @@ -7771,7 +7746,6 @@ sym_setup_data_pointers(hcb_p np, ccb_p cp->startp = cp->phys.head.savep; } - /* * Call back routine for the DMA map service. * If bounce buffers are used (why ?), we may sleep and then @@ -7986,7 +7960,6 @@ sym_fast_scatter_sg_physical(hcb_p np, c return 0; } - /* * Scatter a SG list with physical addresses into bus addressable chunks. */ @@ -8338,10 +8311,8 @@ sym_update_dflags(hcb_p np, u_char *flag #undef cts__scsi } - /*============= DRIVER INITIALISATION ==================*/ - static device_method_t sym_pci_methods[] = { DEVMETHOD(device_probe, sym_pci_probe), DEVMETHOD(device_attach, sym_pci_attach), @@ -8360,7 +8331,6 @@ DRIVER_MODULE(sym, pci, sym_pci_driver, MODULE_DEPEND(sym, cam, 1, 1, 1); MODULE_DEPEND(sym, pci, 1, 1, 1); - static const struct sym_pci_chip sym_pci_dev_table[] = { {PCI_ID_SYM53C810, 0x0f, "810", 4, 8, 4, 64, FE_ERL} @@ -9260,7 +9230,6 @@ static void sym_display_Tekram_nvram(hcb #endif /* SYM_CONF_DEBUG_NVRAM */ #endif /* SYM_CONF_NVRAM_SUPPORT */ - /* * Try reading Symbios or Tekram NVRAM */ @@ -9298,7 +9267,6 @@ static int sym_read_nvram(hcb_p np, stru return nvp->type; } - #ifdef SYM_CONF_NVRAM_SUPPORT /* * 24C16 EEPROM reading. From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:08:47 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 865A9106567D; Sat, 2 Jun 2012 19:08:47 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 705948FC19; Sat, 2 Jun 2012 19:08:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52J8lkL007970; Sat, 2 Jun 2012 19:08:47 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52J8lDa007968; Sat, 2 Jun 2012 19:08:47 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021908.q52J8lDa007968@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:08:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236475 - stable/9/sys/dev/usb/controller X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:08:47 -0000 Author: marius Date: Sat Jun 2 19:08:47 2012 New Revision: 236475 URL: http://svn.freebsd.org/changeset/base/236475 Log: MFC: r236069, r236073 Make the VIA workaround actually do its intended job. Modified: stable/9/sys/dev/usb/controller/ehci_pci.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/usb/controller/ehci_pci.c ============================================================================== --- stable/9/sys/dev/usb/controller/ehci_pci.c Sat Jun 2 19:06:04 2012 (r236474) +++ stable/9/sys/dev/usb/controller/ehci_pci.c Sat Jun 2 19:08:47 2012 (r236475) @@ -243,6 +243,7 @@ ehci_pci_via_quirk(device_t self) val = pci_read_config(self, 0x4b, 1); if (val & 0x20) return; + val |= 0x20; pci_write_config(self, 0x4b, val, 1); device_printf(self, "VIA-quirk applied\n"); } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:08:49 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0569A1065678; Sat, 2 Jun 2012 19:08:49 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E3D5A8FC1C; Sat, 2 Jun 2012 19:08:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52J8m01008000; Sat, 2 Jun 2012 19:08:48 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52J8m8q007998; Sat, 2 Jun 2012 19:08:48 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021908.q52J8m8q007998@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:08:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236476 - stable/8/sys/dev/usb/controller X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:08:49 -0000 Author: marius Date: Sat Jun 2 19:08:48 2012 New Revision: 236476 URL: http://svn.freebsd.org/changeset/base/236476 Log: MFC: r236069, r236073 Make the VIA workaround actually do its intended job. Modified: stable/8/sys/dev/usb/controller/ehci_pci.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/usb/controller/ehci_pci.c ============================================================================== --- stable/8/sys/dev/usb/controller/ehci_pci.c Sat Jun 2 19:08:47 2012 (r236475) +++ stable/8/sys/dev/usb/controller/ehci_pci.c Sat Jun 2 19:08:48 2012 (r236476) @@ -243,6 +243,7 @@ ehci_pci_via_quirk(device_t self) val = pci_read_config(self, 0x4b, 1); if (val & 0x20) return; + val |= 0x20; pci_write_config(self, 0x4b, val, 1); device_printf(self, "VIA-quirk applied\n"); } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:10:01 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 661D61065679; Sat, 2 Jun 2012 19:10:01 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 462828FC15; Sat, 2 Jun 2012 19:10:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JA11u008125; Sat, 2 Jun 2012 19:10:01 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JA1vN008124; Sat, 2 Jun 2012 19:10:01 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021910.q52JA1vN008124@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:10:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236477 - stable/9/sys/dev/usb X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:10:01 -0000 Author: marius Date: Sat Jun 2 19:10:00 2012 New Revision: 236477 URL: http://svn.freebsd.org/changeset/base/236477 Log: MFC: r236070 Consistently use USB_PAGE_SIZE. Currently, this is cosmetic. Modified: stable/9/sys/dev/usb/usb_transfer.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/usb/usb_transfer.c ============================================================================== --- stable/9/sys/dev/usb/usb_transfer.c Sat Jun 2 19:08:48 2012 (r236476) +++ stable/9/sys/dev/usb/usb_transfer.c Sat Jun 2 19:10:00 2012 (r236477) @@ -217,12 +217,12 @@ usbd_transfer_setup_sub_malloc(struct us * Try multi-allocation chunks to reduce the number of DMA * allocations, hence DMA allocations are slow. */ - if (size >= PAGE_SIZE) { + if (size >= USB_PAGE_SIZE) { n_dma_pc = count; n_obj = 1; } else { /* compute number of objects per page */ - n_obj = (PAGE_SIZE / size); + n_obj = (USB_PAGE_SIZE / size); /* * Compute number of DMA chunks, rounded up * to nearest one: From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:10:03 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 22C361065676; Sat, 2 Jun 2012 19:10:03 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F26058FC16; Sat, 2 Jun 2012 19:10:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JA27j008159; Sat, 2 Jun 2012 19:10:02 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JA2nl008157; Sat, 2 Jun 2012 19:10:02 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021910.q52JA2nl008157@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:10:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236478 - stable/8/sys/dev/usb X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:10:03 -0000 Author: marius Date: Sat Jun 2 19:10:02 2012 New Revision: 236478 URL: http://svn.freebsd.org/changeset/base/236478 Log: MFC: r236070 Consistently use USB_PAGE_SIZE. Currently, this is cosmetic. Modified: stable/8/sys/dev/usb/usb_transfer.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/usb/usb_transfer.c ============================================================================== --- stable/8/sys/dev/usb/usb_transfer.c Sat Jun 2 19:10:00 2012 (r236477) +++ stable/8/sys/dev/usb/usb_transfer.c Sat Jun 2 19:10:02 2012 (r236478) @@ -217,12 +217,12 @@ usbd_transfer_setup_sub_malloc(struct us * Try multi-allocation chunks to reduce the number of DMA * allocations, hence DMA allocations are slow. */ - if (size >= PAGE_SIZE) { + if (size >= USB_PAGE_SIZE) { n_dma_pc = count; n_obj = 1; } else { /* compute number of objects per page */ - n_obj = (PAGE_SIZE / size); + n_obj = (USB_PAGE_SIZE / size); /* * Compute number of DMA chunks, rounded up * to nearest one: From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:11:45 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5708A1065670; Sat, 2 Jun 2012 19:11:45 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 405908FC20; Sat, 2 Jun 2012 19:11:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JBj9X008305; Sat, 2 Jun 2012 19:11:45 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JBjdi008303; Sat, 2 Jun 2012 19:11:45 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021911.q52JBjdi008303@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:11:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236479 - stable/9/sys/dev/mmc X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:11:45 -0000 Author: marius Date: Sat Jun 2 19:11:44 2012 New Revision: 236479 URL: http://svn.freebsd.org/changeset/base/236479 Log: MFC: r236156 - Fix some typos in mmc_acquire_bus() and mmc_send_csd(). - Fix some math errors in mmc_decode_csd_sd(). - Fix incorrect arguments to mmc_send_app_op_cond() in mmc_go_discovery(). - Add reporting of CSD for debug purposes. - Add detection (and skipping) of password-locked cards. - Add setting of block length on card if necessary. Submitted by: Patrick Kelsey Modified: stable/9/sys/dev/mmc/mmc.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/mmc/mmc.c ============================================================================== --- stable/9/sys/dev/mmc/mmc.c Sat Jun 2 19:10:02 2012 (r236478) +++ stable/9/sys/dev/mmc/mmc.c Sat Jun 2 19:11:44 2012 (r236479) @@ -224,7 +224,7 @@ mmc_acquire_bus(device_t busdev, device_ sc = device_get_softc(busdev); MMC_LOCK(sc); if (sc->owner) - panic("mmc: host bridge didn't seralize us."); + panic("mmc: host bridge didn't serialize us."); sc->owner = dev; MMC_UNLOCK(sc); @@ -859,7 +859,7 @@ mmc_decode_csd_sd(uint32_t *raw_csd, str if (v == 0) { m = mmc_get_bits(raw_csd, 128, 115, 4); e = mmc_get_bits(raw_csd, 128, 112, 3); - csd->tacc = exp[e] * mant[m] + 9 / 10; + csd->tacc = (exp[e] * mant[m] + 9) / 10; csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; m = mmc_get_bits(raw_csd, 128, 99, 4); e = mmc_get_bits(raw_csd, 128, 96, 3); @@ -887,7 +887,7 @@ mmc_decode_csd_sd(uint32_t *raw_csd, str } else if (v == 1) { m = mmc_get_bits(raw_csd, 128, 115, 4); e = mmc_get_bits(raw_csd, 128, 112, 3); - csd->tacc = exp[e] * mant[m] + 9 / 10; + csd->tacc = (exp[e] * mant[m] + 9) / 10; csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; m = mmc_get_bits(raw_csd, 128, 99, 4); e = mmc_get_bits(raw_csd, 128, 96, 3); @@ -1002,7 +1002,7 @@ mmc_all_send_cid(struct mmc_softc *sc, u } static int -mmc_send_csd(struct mmc_softc *sc, uint16_t rca, uint32_t *rawcid) +mmc_send_csd(struct mmc_softc *sc, uint16_t rca, uint32_t *rawcsd) { struct mmc_command cmd; int err; @@ -1012,7 +1012,7 @@ mmc_send_csd(struct mmc_softc *sc, uint1 cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; cmd.data = NULL; err = mmc_wait_for_cmd(sc, &cmd, 0); - memcpy(rawcid, cmd.resp, 4 * sizeof(uint32_t)); + memcpy(rawcsd, cmd.resp, 4 * sizeof(uint32_t)); return (err); } @@ -1121,6 +1121,35 @@ mmc_send_relative_addr(struct mmc_softc return (err); } +static int +mmc_send_status(struct mmc_softc *sc, uint16_t rca, uint32_t *status) +{ + struct mmc_command cmd; + int err; + + cmd.opcode = MMC_SEND_STATUS; + cmd.arg = rca << 16; + cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; + cmd.data = NULL; + err = mmc_wait_for_cmd(sc, &cmd, 0); + *status = cmd.resp[0]; + return (err); +} + +static int +mmc_set_blocklen(struct mmc_softc *sc, uint32_t len) +{ + struct mmc_command cmd; + int err; + + cmd.opcode = MMC_SET_BLOCKLEN; + cmd.arg = len; + cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; + cmd.data = NULL; + err = mmc_wait_for_cmd(sc, &cmd, 0); + return (err); +} + static void mmc_log_card(device_t dev, struct mmc_ivars *ivar, int newcard) { @@ -1144,8 +1173,7 @@ mmc_discover_cards(struct mmc_softc *sc) struct mmc_ivars *ivar = NULL; device_t *devlist; int err, i, devcount, newcard; - uint32_t raw_cid[4]; - uint32_t resp, sec_count; + uint32_t raw_cid[4], resp, sec_count, status; device_t child; uint16_t rca = 2; u_char switch_res[64]; @@ -1194,6 +1222,12 @@ mmc_discover_cards(struct mmc_softc *sc) ivar->rca = resp >> 16; /* Get card CSD. */ mmc_send_csd(sc, ivar->rca, ivar->raw_csd); + if (bootverbose || mmc_debug) + device_printf(sc->dev, + "%sard detected (CSD %08x%08x%08x%08x)\n", + newcard ? "New c" : "C", ivar->raw_csd[0], + ivar->raw_csd[1], ivar->raw_csd[2], + ivar->raw_csd[3]); mmc_decode_csd_sd(ivar->raw_csd, &ivar->csd); ivar->sec_count = ivar->csd.capacity / MMC_SECTOR_SIZE; if (ivar->csd.csd_structure > 0) @@ -1201,6 +1235,19 @@ mmc_discover_cards(struct mmc_softc *sc) ivar->tran_speed = ivar->csd.tran_speed; ivar->erase_sector = ivar->csd.erase_sector * ivar->csd.write_bl_len / MMC_SECTOR_SIZE; + + err = mmc_send_status(sc, ivar->rca, &status); + if (err != MMC_ERR_NONE) { + device_printf(sc->dev, + "Error reading card status %d\n", err); + break; + } + if ((status & R1_CARD_IS_LOCKED) != 0) { + device_printf(sc->dev, + "Card is password protected, skipping.\n"); + break; + } + /* Get card SCR. Card must be selected to fetch it. */ mmc_select_card(sc, ivar->rca); mmc_app_send_scr(sc, ivar->rca, ivar->raw_scr); @@ -1228,7 +1275,22 @@ mmc_discover_cards(struct mmc_softc *sc) if ((mmcbr_get_caps(sc->dev) & MMC_CAP_4_BIT_DATA) && (ivar->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) ivar->bus_width = bus_width_4; + + /* + * Some cards that report maximum I/O block sizes + * greater than 512 require the block length to be + * set to 512, even though that is supposed to be + * the default. Example: + * + * Transcend 2GB SDSC card, CID: + * mid=0x1b oid=0x534d pnm="00000" prv=1.0 mdt=00.2000 + */ + if (ivar->csd.read_bl_len != MMC_SECTOR_SIZE || + ivar->csd.write_bl_len != MMC_SECTOR_SIZE) + mmc_set_blocklen(sc, MMC_SECTOR_SIZE); + mmc_format_card_id_string(ivar); + if (bootverbose || mmc_debug) mmc_log_card(sc->dev, ivar, newcard); if (newcard) { @@ -1243,11 +1305,31 @@ mmc_discover_cards(struct mmc_softc *sc) mmc_set_relative_addr(sc, ivar->rca); /* Get card CSD. */ mmc_send_csd(sc, ivar->rca, ivar->raw_csd); + if (bootverbose || mmc_debug) + device_printf(sc->dev, + "%sard detected (CSD %08x%08x%08x%08x)\n", + newcard ? "New c" : "C", ivar->raw_csd[0], + ivar->raw_csd[1], ivar->raw_csd[2], + ivar->raw_csd[3]); + mmc_decode_csd_mmc(ivar->raw_csd, &ivar->csd); ivar->sec_count = ivar->csd.capacity / MMC_SECTOR_SIZE; ivar->tran_speed = ivar->csd.tran_speed; ivar->erase_sector = ivar->csd.erase_sector * ivar->csd.write_bl_len / MMC_SECTOR_SIZE; + + err = mmc_send_status(sc, ivar->rca, &status); + if (err != MMC_ERR_NONE) { + device_printf(sc->dev, + "Error reading card status %d\n", err); + break; + } + if ((status & R1_CARD_IS_LOCKED) != 0) { + device_printf(sc->dev, + "Card is password protected, skipping.\n"); + break; + } + /* Only MMC >= 4.x cards support EXT_CSD. */ if (ivar->csd.spec_vers >= 4) { /* Card must be selected to fetch EXT_CSD. */ @@ -1286,7 +1368,21 @@ mmc_discover_cards(struct mmc_softc *sc) ivar->bus_width = bus_width_1; ivar->timing = bus_timing_normal; } + + /* + * Some cards that report maximum I/O block sizes greater + * than 512 require the block length to be set to 512, even + * though that is supposed to be the default. Example: + * + * Transcend 2GB SDSC card, CID: + * mid=0x1b oid=0x534d pnm="00000" prv=1.0 mdt=00.2000 + */ + if (ivar->csd.read_bl_len != MMC_SECTOR_SIZE || + ivar->csd.write_bl_len != MMC_SECTOR_SIZE) + mmc_set_blocklen(sc, MMC_SECTOR_SIZE); + mmc_format_card_id_string(ivar); + if (bootverbose || mmc_debug) mmc_log_card(sc->dev, ivar, newcard); if (newcard) { @@ -1362,8 +1458,7 @@ mmc_go_discovery(struct mmc_softc *sc) err = mmc_send_if_cond(sc, 1); if ((bootverbose || mmc_debug) && err == 0) device_printf(sc->dev, "SD 2.0 interface conditions: OK\n"); - if (mmc_send_app_op_cond(sc, err ? 0 : MMC_OCR_CCS, &ocr) != - MMC_ERR_NONE) { + if (mmc_send_app_op_cond(sc, 0, &ocr) != MMC_ERR_NONE) { if (bootverbose || mmc_debug) device_printf(sc->dev, "SD probe: failed\n"); /* @@ -1535,7 +1630,6 @@ mmc_write_ivar(device_t bus, device_t ch return (EINVAL); } - static void mmc_delayed_attach(void *xsc) { From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:11:48 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F22B106564A; Sat, 2 Jun 2012 19:11:48 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 38F408FC08; Sat, 2 Jun 2012 19:11:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JBmVx008339; Sat, 2 Jun 2012 19:11:48 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JBmTF008337; Sat, 2 Jun 2012 19:11:48 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021911.q52JBmTF008337@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:11:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236480 - stable/8/sys/dev/mmc X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:11:48 -0000 Author: marius Date: Sat Jun 2 19:11:47 2012 New Revision: 236480 URL: http://svn.freebsd.org/changeset/base/236480 Log: MFC: r236156 - Fix some typos in mmc_acquire_bus() and mmc_send_csd(). - Fix some math errors in mmc_decode_csd_sd(). - Fix incorrect arguments to mmc_send_app_op_cond() in mmc_go_discovery(). - Add reporting of CSD for debug purposes. - Add detection (and skipping) of password-locked cards. - Add setting of block length on card if necessary. Submitted by: Patrick Kelsey Modified: stable/8/sys/dev/mmc/mmc.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/mmc/mmc.c ============================================================================== --- stable/8/sys/dev/mmc/mmc.c Sat Jun 2 19:11:44 2012 (r236479) +++ stable/8/sys/dev/mmc/mmc.c Sat Jun 2 19:11:47 2012 (r236480) @@ -224,7 +224,7 @@ mmc_acquire_bus(device_t busdev, device_ sc = device_get_softc(busdev); MMC_LOCK(sc); if (sc->owner) - panic("mmc: host bridge didn't seralize us."); + panic("mmc: host bridge didn't serialize us."); sc->owner = dev; MMC_UNLOCK(sc); @@ -859,7 +859,7 @@ mmc_decode_csd_sd(uint32_t *raw_csd, str if (v == 0) { m = mmc_get_bits(raw_csd, 128, 115, 4); e = mmc_get_bits(raw_csd, 128, 112, 3); - csd->tacc = exp[e] * mant[m] + 9 / 10; + csd->tacc = (exp[e] * mant[m] + 9) / 10; csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; m = mmc_get_bits(raw_csd, 128, 99, 4); e = mmc_get_bits(raw_csd, 128, 96, 3); @@ -887,7 +887,7 @@ mmc_decode_csd_sd(uint32_t *raw_csd, str } else if (v == 1) { m = mmc_get_bits(raw_csd, 128, 115, 4); e = mmc_get_bits(raw_csd, 128, 112, 3); - csd->tacc = exp[e] * mant[m] + 9 / 10; + csd->tacc = (exp[e] * mant[m] + 9) / 10; csd->nsac = mmc_get_bits(raw_csd, 128, 104, 8) * 100; m = mmc_get_bits(raw_csd, 128, 99, 4); e = mmc_get_bits(raw_csd, 128, 96, 3); @@ -1002,7 +1002,7 @@ mmc_all_send_cid(struct mmc_softc *sc, u } static int -mmc_send_csd(struct mmc_softc *sc, uint16_t rca, uint32_t *rawcid) +mmc_send_csd(struct mmc_softc *sc, uint16_t rca, uint32_t *rawcsd) { struct mmc_command cmd; int err; @@ -1012,7 +1012,7 @@ mmc_send_csd(struct mmc_softc *sc, uint1 cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; cmd.data = NULL; err = mmc_wait_for_cmd(sc, &cmd, 0); - memcpy(rawcid, cmd.resp, 4 * sizeof(uint32_t)); + memcpy(rawcsd, cmd.resp, 4 * sizeof(uint32_t)); return (err); } @@ -1121,6 +1121,35 @@ mmc_send_relative_addr(struct mmc_softc return (err); } +static int +mmc_send_status(struct mmc_softc *sc, uint16_t rca, uint32_t *status) +{ + struct mmc_command cmd; + int err; + + cmd.opcode = MMC_SEND_STATUS; + cmd.arg = rca << 16; + cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; + cmd.data = NULL; + err = mmc_wait_for_cmd(sc, &cmd, 0); + *status = cmd.resp[0]; + return (err); +} + +static int +mmc_set_blocklen(struct mmc_softc *sc, uint32_t len) +{ + struct mmc_command cmd; + int err; + + cmd.opcode = MMC_SET_BLOCKLEN; + cmd.arg = len; + cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; + cmd.data = NULL; + err = mmc_wait_for_cmd(sc, &cmd, 0); + return (err); +} + static void mmc_log_card(device_t dev, struct mmc_ivars *ivar, int newcard) { @@ -1144,8 +1173,7 @@ mmc_discover_cards(struct mmc_softc *sc) struct mmc_ivars *ivar = NULL; device_t *devlist; int err, i, devcount, newcard; - uint32_t raw_cid[4]; - uint32_t resp, sec_count; + uint32_t raw_cid[4], resp, sec_count, status; device_t child; uint16_t rca = 2; u_char switch_res[64]; @@ -1194,6 +1222,12 @@ mmc_discover_cards(struct mmc_softc *sc) ivar->rca = resp >> 16; /* Get card CSD. */ mmc_send_csd(sc, ivar->rca, ivar->raw_csd); + if (bootverbose || mmc_debug) + device_printf(sc->dev, + "%sard detected (CSD %08x%08x%08x%08x)\n", + newcard ? "New c" : "C", ivar->raw_csd[0], + ivar->raw_csd[1], ivar->raw_csd[2], + ivar->raw_csd[3]); mmc_decode_csd_sd(ivar->raw_csd, &ivar->csd); ivar->sec_count = ivar->csd.capacity / MMC_SECTOR_SIZE; if (ivar->csd.csd_structure > 0) @@ -1201,6 +1235,19 @@ mmc_discover_cards(struct mmc_softc *sc) ivar->tran_speed = ivar->csd.tran_speed; ivar->erase_sector = ivar->csd.erase_sector * ivar->csd.write_bl_len / MMC_SECTOR_SIZE; + + err = mmc_send_status(sc, ivar->rca, &status); + if (err != MMC_ERR_NONE) { + device_printf(sc->dev, + "Error reading card status %d\n", err); + break; + } + if ((status & R1_CARD_IS_LOCKED) != 0) { + device_printf(sc->dev, + "Card is password protected, skipping.\n"); + break; + } + /* Get card SCR. Card must be selected to fetch it. */ mmc_select_card(sc, ivar->rca); mmc_app_send_scr(sc, ivar->rca, ivar->raw_scr); @@ -1228,7 +1275,22 @@ mmc_discover_cards(struct mmc_softc *sc) if ((mmcbr_get_caps(sc->dev) & MMC_CAP_4_BIT_DATA) && (ivar->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) ivar->bus_width = bus_width_4; + + /* + * Some cards that report maximum I/O block sizes + * greater than 512 require the block length to be + * set to 512, even though that is supposed to be + * the default. Example: + * + * Transcend 2GB SDSC card, CID: + * mid=0x1b oid=0x534d pnm="00000" prv=1.0 mdt=00.2000 + */ + if (ivar->csd.read_bl_len != MMC_SECTOR_SIZE || + ivar->csd.write_bl_len != MMC_SECTOR_SIZE) + mmc_set_blocklen(sc, MMC_SECTOR_SIZE); + mmc_format_card_id_string(ivar); + if (bootverbose || mmc_debug) mmc_log_card(sc->dev, ivar, newcard); if (newcard) { @@ -1243,11 +1305,31 @@ mmc_discover_cards(struct mmc_softc *sc) mmc_set_relative_addr(sc, ivar->rca); /* Get card CSD. */ mmc_send_csd(sc, ivar->rca, ivar->raw_csd); + if (bootverbose || mmc_debug) + device_printf(sc->dev, + "%sard detected (CSD %08x%08x%08x%08x)\n", + newcard ? "New c" : "C", ivar->raw_csd[0], + ivar->raw_csd[1], ivar->raw_csd[2], + ivar->raw_csd[3]); + mmc_decode_csd_mmc(ivar->raw_csd, &ivar->csd); ivar->sec_count = ivar->csd.capacity / MMC_SECTOR_SIZE; ivar->tran_speed = ivar->csd.tran_speed; ivar->erase_sector = ivar->csd.erase_sector * ivar->csd.write_bl_len / MMC_SECTOR_SIZE; + + err = mmc_send_status(sc, ivar->rca, &status); + if (err != MMC_ERR_NONE) { + device_printf(sc->dev, + "Error reading card status %d\n", err); + break; + } + if ((status & R1_CARD_IS_LOCKED) != 0) { + device_printf(sc->dev, + "Card is password protected, skipping.\n"); + break; + } + /* Only MMC >= 4.x cards support EXT_CSD. */ if (ivar->csd.spec_vers >= 4) { /* Card must be selected to fetch EXT_CSD. */ @@ -1286,7 +1368,21 @@ mmc_discover_cards(struct mmc_softc *sc) ivar->bus_width = bus_width_1; ivar->timing = bus_timing_normal; } + + /* + * Some cards that report maximum I/O block sizes greater + * than 512 require the block length to be set to 512, even + * though that is supposed to be the default. Example: + * + * Transcend 2GB SDSC card, CID: + * mid=0x1b oid=0x534d pnm="00000" prv=1.0 mdt=00.2000 + */ + if (ivar->csd.read_bl_len != MMC_SECTOR_SIZE || + ivar->csd.write_bl_len != MMC_SECTOR_SIZE) + mmc_set_blocklen(sc, MMC_SECTOR_SIZE); + mmc_format_card_id_string(ivar); + if (bootverbose || mmc_debug) mmc_log_card(sc->dev, ivar, newcard); if (newcard) { @@ -1362,8 +1458,7 @@ mmc_go_discovery(struct mmc_softc *sc) err = mmc_send_if_cond(sc, 1); if ((bootverbose || mmc_debug) && err == 0) device_printf(sc->dev, "SD 2.0 interface conditions: OK\n"); - if (mmc_send_app_op_cond(sc, err ? 0 : MMC_OCR_CCS, &ocr) != - MMC_ERR_NONE) { + if (mmc_send_app_op_cond(sc, 0, &ocr) != MMC_ERR_NONE) { if (bootverbose || mmc_debug) device_printf(sc->dev, "SD probe: failed\n"); /* @@ -1535,7 +1630,6 @@ mmc_write_ivar(device_t bus, device_t ch return (EINVAL); } - static void mmc_delayed_attach(void *xsc) { From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:13:57 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83CDC106564A; Sat, 2 Jun 2012 19:13:57 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6E9708FC0A; Sat, 2 Jun 2012 19:13:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JDvcw008514; Sat, 2 Jun 2012 19:13:57 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JDvqC008511; Sat, 2 Jun 2012 19:13:57 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021913.q52JDvqC008511@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 19:13:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236481 - stable/9/sys/vm X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:13:57 -0000 Author: avg Date: Sat Jun 2 19:13:56 2012 New Revision: 236481 URL: http://svn.freebsd.org/changeset/base/236481 Log: MFC r235829: vm_pager_object_lookup: small performance optimization Modified: stable/9/sys/vm/vm_pager.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/vm/vm_pager.c ============================================================================== --- stable/9/sys/vm/vm_pager.c Sat Jun 2 19:11:47 2012 (r236480) +++ stable/9/sys/vm/vm_pager.c Sat Jun 2 19:13:56 2012 (r236481) @@ -270,14 +270,15 @@ vm_pager_object_lookup(struct pagerlst * vm_object_t object; TAILQ_FOREACH(object, pg_list, pager_object_list) { - VM_OBJECT_LOCK(object); - if (object->handle == handle && - (object->flags & OBJ_DEAD) == 0) { - vm_object_reference_locked(object); + if (object->handle == handle) { + VM_OBJECT_LOCK(object); + if ((object->flags & OBJ_DEAD) == 0) { + vm_object_reference_locked(object); + VM_OBJECT_UNLOCK(object); + break; + } VM_OBJECT_UNLOCK(object); - break; } - VM_OBJECT_UNLOCK(object); } return (object); } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:15:22 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 50CC31065674; Sat, 2 Jun 2012 19:15:22 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3BA948FC1E; Sat, 2 Jun 2012 19:15:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JFMG6008651; Sat, 2 Jun 2012 19:15:22 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JFMAS008649; Sat, 2 Jun 2012 19:15:22 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021915.q52JFMAS008649@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:15:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236482 - stable/8/sys/dev/bge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:15:22 -0000 Author: marius Date: Sat Jun 2 19:15:21 2012 New Revision: 236482 URL: http://svn.freebsd.org/changeset/base/236482 Log: MFC: r236328 Try to finally get the point in time at which bge_add_sysctls() is called right; it needs to be called before bge_can_use_msi() but in turn requires bge_flags to be properly set. Submitted by: yongari Modified: stable/8/sys/dev/bge/if_bge.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/dev/bge/if_bge.c ============================================================================== --- stable/8/sys/dev/bge/if_bge.c Sat Jun 2 19:13:56 2012 (r236481) +++ stable/8/sys/dev/bge/if_bge.c Sat Jun 2 19:15:21 2012 (r236482) @@ -2368,7 +2368,6 @@ bge_dma_free(struct bge_softc *sc) if (sc->bge_cdata.bge_tx_mtag) bus_dma_tag_destroy(sc->bge_cdata.bge_tx_mtag); - /* Destroy standard RX ring. */ if (sc->bge_cdata.bge_rx_std_ring_map) bus_dmamap_unload(sc->bge_cdata.bge_rx_std_ring_tag, @@ -2894,8 +2893,6 @@ bge_attach(device_t dev) sc = device_get_softc(dev); sc->bge_dev = dev; - bge_add_sysctls(sc); - TASK_INIT(&sc->bge_intr_task, 0, bge_intr_task, sc); /* @@ -3041,6 +3038,9 @@ bge_attach(device_t dev) break; } + /* Add SYSCTLs, requires the chipset family to be set. */ + bge_add_sysctls(sc); + /* Set various PHY bug flags. */ if (sc->bge_chipid == BGE_CHIPID_BCM5701_A0 || sc->bge_chipid == BGE_CHIPID_BCM5701_B0) From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:15:23 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80A76106567C; Sat, 2 Jun 2012 19:15:23 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 680A58FC29; Sat, 2 Jun 2012 19:15:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JFNo8008683; Sat, 2 Jun 2012 19:15:23 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JFNjU008681; Sat, 2 Jun 2012 19:15:23 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021915.q52JFNjU008681@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:15:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236483 - stable/7/sys/dev/bge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:15:23 -0000 Author: marius Date: Sat Jun 2 19:15:22 2012 New Revision: 236483 URL: http://svn.freebsd.org/changeset/base/236483 Log: MFC: r236328 Try to finally get the point in time at which bge_add_sysctls() is called right; it needs to be called before bge_can_use_msi() but in turn requires bge_flags to be properly set. Submitted by: yongari Modified: stable/7/sys/dev/bge/if_bge.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/bge/if_bge.c ============================================================================== --- stable/7/sys/dev/bge/if_bge.c Sat Jun 2 19:15:21 2012 (r236482) +++ stable/7/sys/dev/bge/if_bge.c Sat Jun 2 19:15:22 2012 (r236483) @@ -2372,7 +2372,6 @@ bge_dma_free(struct bge_softc *sc) if (sc->bge_cdata.bge_tx_mtag) bus_dma_tag_destroy(sc->bge_cdata.bge_tx_mtag); - /* Destroy standard RX ring. */ if (sc->bge_cdata.bge_rx_std_ring_map) bus_dmamap_unload(sc->bge_cdata.bge_rx_std_ring_tag, @@ -2898,8 +2897,6 @@ bge_attach(device_t dev) sc = device_get_softc(dev); sc->bge_dev = dev; - bge_add_sysctls(sc); - TASK_INIT(&sc->bge_intr_task, 0, bge_intr_task, sc); /* @@ -3045,6 +3042,9 @@ bge_attach(device_t dev) break; } + /* Add SYSCTLs, requires the chipset family to be set. */ + bge_add_sysctls(sc); + /* Set various PHY bug flags. */ if (sc->bge_chipid == BGE_CHIPID_BCM5701_A0 || sc->bge_chipid == BGE_CHIPID_BCM5701_B0) From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:16:10 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 286AC106566C; Sat, 2 Jun 2012 19:16:10 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EDDA98FC08; Sat, 2 Jun 2012 19:16:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JG915008763; Sat, 2 Jun 2012 19:16:09 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JG95h008761; Sat, 2 Jun 2012 19:16:09 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201206021916.q52JG95h008761@svn.freebsd.org> From: Marius Strobl Date: Sat, 2 Jun 2012 19:16:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236484 - stable/9/sys/dev/bge X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:16:10 -0000 Author: marius Date: Sat Jun 2 19:16:09 2012 New Revision: 236484 URL: http://svn.freebsd.org/changeset/base/236484 Log: MFC: r236328 Try to finally get the point in time at which bge_add_sysctls() is called right; it needs to be called before bge_can_use_msi() but in turn requires bge_flags to be properly set. Submitted by: yongari Modified: stable/9/sys/dev/bge/if_bge.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/amd64/include/xen/ (props changed) stable/9/sys/boot/ (props changed) stable/9/sys/boot/i386/efi/ (props changed) stable/9/sys/boot/ia64/efi/ (props changed) stable/9/sys/boot/ia64/ski/ (props changed) stable/9/sys/boot/powerpc/boot1.chrp/ (props changed) stable/9/sys/boot/powerpc/ofw/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) stable/9/sys/conf/ (props changed) stable/9/sys/contrib/dev/acpica/ (props changed) stable/9/sys/contrib/octeon-sdk/ (props changed) stable/9/sys/contrib/pf/ (props changed) stable/9/sys/contrib/x86emu/ (props changed) stable/9/sys/dev/ (props changed) stable/9/sys/dev/e1000/ (props changed) stable/9/sys/dev/ixgbe/ (props changed) stable/9/sys/fs/ (props changed) stable/9/sys/fs/ntfs/ (props changed) stable/9/sys/modules/ (props changed) Modified: stable/9/sys/dev/bge/if_bge.c ============================================================================== --- stable/9/sys/dev/bge/if_bge.c Sat Jun 2 19:15:22 2012 (r236483) +++ stable/9/sys/dev/bge/if_bge.c Sat Jun 2 19:16:09 2012 (r236484) @@ -2368,7 +2368,6 @@ bge_dma_free(struct bge_softc *sc) if (sc->bge_cdata.bge_tx_mtag) bus_dma_tag_destroy(sc->bge_cdata.bge_tx_mtag); - /* Destroy standard RX ring. */ if (sc->bge_cdata.bge_rx_std_ring_map) bus_dmamap_unload(sc->bge_cdata.bge_rx_std_ring_tag, @@ -2894,8 +2893,6 @@ bge_attach(device_t dev) sc = device_get_softc(dev); sc->bge_dev = dev; - bge_add_sysctls(sc); - TASK_INIT(&sc->bge_intr_task, 0, bge_intr_task, sc); /* @@ -3041,6 +3038,9 @@ bge_attach(device_t dev) break; } + /* Add SYSCTLs, requires the chipset family to be set. */ + bge_add_sysctls(sc); + /* Set various PHY bug flags. */ if (sc->bge_chipid == BGE_CHIPID_BCM5701_A0 || sc->bge_chipid == BGE_CHIPID_BCM5701_B0) From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 19:21:35 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70ECF106564A; Sat, 2 Jun 2012 19:21:35 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C4588FC17; Sat, 2 Jun 2012 19:21:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52JLZCt009043; Sat, 2 Jun 2012 19:21:35 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52JLZCn009041; Sat, 2 Jun 2012 19:21:35 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201206021921.q52JLZCn009041@svn.freebsd.org> From: Andriy Gapon Date: Sat, 2 Jun 2012 19:21:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236485 - stable/8/sys/vm X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 19:21:35 -0000 Author: avg Date: Sat Jun 2 19:21:34 2012 New Revision: 236485 URL: http://svn.freebsd.org/changeset/base/236485 Log: MFC r235829: vm_pager_object_lookup: small performance optimization Modified: stable/8/sys/vm/vm_pager.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/boot/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/e1000/ (props changed) Modified: stable/8/sys/vm/vm_pager.c ============================================================================== --- stable/8/sys/vm/vm_pager.c Sat Jun 2 19:16:09 2012 (r236484) +++ stable/8/sys/vm/vm_pager.c Sat Jun 2 19:21:34 2012 (r236485) @@ -272,14 +272,15 @@ vm_pager_object_lookup(struct pagerlst * vm_object_t object; TAILQ_FOREACH(object, pg_list, pager_object_list) { - VM_OBJECT_LOCK(object); - if (object->handle == handle && - (object->flags & OBJ_DEAD) == 0) { - vm_object_reference_locked(object); + if (object->handle == handle) { + VM_OBJECT_LOCK(object); + if ((object->flags & OBJ_DEAD) == 0) { + vm_object_reference_locked(object); + VM_OBJECT_UNLOCK(object); + break; + } VM_OBJECT_UNLOCK(object); - break; } - VM_OBJECT_UNLOCK(object); } return (object); } From owner-svn-src-stable@FreeBSD.ORG Sat Jun 2 20:18:34 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B71B6106564A; Sat, 2 Jun 2012 20:18:34 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A0D398FC0C; Sat, 2 Jun 2012 20:18:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q52KIYJq011765; Sat, 2 Jun 2012 20:18:34 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q52KIYdK011763; Sat, 2 Jun 2012 20:18:34 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201206022018.q52KIYdK011763@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 2 Jun 2012 20:18:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236490 - stable/9/lib/libfetch X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Jun 2012 20:18:34 -0000 Author: jilles Date: Sat Jun 2 20:18:34 2012 New Revision: 236490 URL: http://svn.freebsd.org/changeset/base/236490 Log: MFC r236193: libfetch: Avoid SIGPIPE on network connections. To avoid unexpected process termination from SIGPIPE when writing to a closed network connection, enable SO_NOSIGPIPE on all network connections. The POSIX standard MSG_NOSIGNAL is not used since it requires modifying all send calls to add this flag. This is particularly nasty for SSL connections. Modified: stable/9/lib/libfetch/common.c Directory Properties: stable/9/lib/libfetch/ (props changed) Modified: stable/9/lib/libfetch/common.c ============================================================================== --- stable/9/lib/libfetch/common.c Sat Jun 2 20:00:52 2012 (r236489) +++ stable/9/lib/libfetch/common.c Sat Jun 2 20:18:34 2012 (r236490) @@ -209,11 +209,13 @@ conn_t * fetch_reopen(int sd) { conn_t *conn; + int opt = 1; /* allocate and fill connection structure */ if ((conn = calloc(1, sizeof(*conn))) == NULL) return (NULL); fcntl(sd, F_SETFD, FD_CLOEXEC); + setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, &opt, sizeof opt); conn->sd = sd; ++conn->ref; return (conn);