From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 00:57:01 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A8FE64F0; Sun, 11 Aug 2013 00:57:01 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 95DFC28C2; Sun, 11 Aug 2013 00:57:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B0v1cX067288; Sun, 11 Aug 2013 00:57:01 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B0v1Ca067287; Sun, 11 Aug 2013 00:57:01 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201308110057.r7B0v1Ca067287@svn.freebsd.org> From: Rui Paulo Date: Sun, 11 Aug 2013 00:57:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254198 - head/sys/cddl/contrib/opensolaris/uts/common/dtrace X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 00:57:01 -0000 Author: rpaulo Date: Sun Aug 11 00:57:01 2013 New Revision: 254198 URL: http://svnweb.freebsd.org/changeset/base/254198 Log: fasttrap_fork(): unlock the processes before removing the tracepoints. In the future, we'll need to come up with new proc_*() functions that accept locked processes. For now, this prevents postgresql + DTrace from crashing the system. MFC after: 1 month Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Sat Aug 10 23:17:09 2013 (r254197) +++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c Sun Aug 11 00:57:01 2013 (r254198) @@ -502,7 +502,13 @@ fasttrap_fork(proc_t *p, proc_t *cp) sprlock_proc(cp); mtx_unlock_spin(&cp->p_slock); #else + /* + * fasttrap_tracepoint_remove() expects the child process to be + * unlocked and the VM then expects curproc to be unlocked. + */ _PHOLD(cp); + PROC_UNLOCK(cp); + PROC_UNLOCK(p); #endif /* @@ -537,6 +543,8 @@ fasttrap_fork(proc_t *p, proc_t *cp) mutex_enter(&cp->p_lock); sprunlock(cp); #else + PROC_LOCK(p); + PROC_LOCK(cp); _PRELE(cp); #endif } From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 01:03:33 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 77D50653; Sun, 11 Aug 2013 01:03:33 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 185D22902; Sun, 11 Aug 2013 01:03:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B13WTC070721; Sun, 11 Aug 2013 01:03:32 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B13WJn070719; Sun, 11 Aug 2013 01:03:32 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308110103.r7B13WJn070719@svn.freebsd.org> From: Adrian Chadd Date: Sun, 11 Aug 2013 01:03:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254199 - in head/sys: contrib/dev/iwn modules/iwnfw/iwn6000g2a X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 01:03:33 -0000 Author: adrian Date: Sun Aug 11 01:03:32 2013 New Revision: 254199 URL: http://svnweb.freebsd.org/changeset/base/254199 Log: Update the 6000g2a image. Obtained from: Linux, Intel Added: head/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu Modified: head/sys/modules/iwnfw/iwn6000g2a/Makefile Added: head/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu Sun Aug 11 01:03:32 2013 (r254199) @@ -0,0 +1,30188 @@ +Copyright (c) 2006-2012, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +begin 644 iwlwifi-6000g2a-18.168.6.1.fw.uu +M`````$E73`HV,#`P9S)A(&9W('8Q."XQ-C@N-BXQ(&)U:6QD(#`*```````` +M`````````````````````````````````````0:H$@`````!``````````$` +M``!07`(`(""`#P``0`!I(```:2!``&D@``!I($``(""`#P``Z`!I(```:2!` +M`&D@``!I($``(""`#P``L/]I(```:2!``&D@``!*(```2B$``$HB``!*(P`` +M2B0``$HE``!*)@``2B<``$H@`!!*(0`02B(`$$HC`!!*)``02B4`$$HF`!!* +M)P`02B``($HA`"!*(@`@2B,`($HD`"!*)0`@2B8`($HG`"!*(``P2B$`,`HD +M@#^!``!`02R<,$`LG#!")!PT"B*`/X``(%L*(P`WS@B`!THF`'!I($``2B8` +M<$HF`'!*)@!P2B8`<``6`'"``"0=0'@@($"'`````````````/P`3<.-TU\.!X!-PTW3/PX'@$W##=,?#@>`3<+-TO\.!X!-PHW2WP +MX'@$W"3=*_#@>`3<(-TI\.!X!-P`3<%-TC\.!X!-P0 +MW2'PX'@$W`S='_#@>`3<"-T<\.!X!-P$W1GP-!0:,#`4&3`L%!@P*!07,"04 +M%C`@%!4P'!04,!@4$S`4%!(P$!01,`P4$#`"QP'&L"1-,[`D'S/@?N!XX'C@ +M>.!XX'C@>`HD@/`%($0`X"#!!T0D_H!!*L0`A``"`"\D`O%"(0$!0B`#`>@@ +MH@0$$00"!!$%`@01!@($$0<"!!L(`00;2`$$&X@!!!O(`2P`)0!$(CZ!/``B +M`$0B_(!`(<$`X"#!!T`CPP"H((`!`1&$`@$;"@$@(,`'!!$$`@01!0($&P@! +MU`?A_P0;2`%$(OR`!!$$`LD'[_\$&P@!0B%!`$(@0P"H((`!`1&$`@$;"@$@ +M(,`'SW&@`*PO&(&:N!BAT0!@$@78X'C/<:``K"\8@;.XNK@8H;T`8!)DV`HB +M0(``V>X``0`O)@#P2B9``$X`!@!/`"``BB7_#^!X"B)`@`#9S@`!`&P`)``O +M)@#P7``%`"L(-0A*)D``"'$`V`(AOH#@(,4'0GD!X`(AOH#@(,4'0GGK!^__ +M`>`O+0$`0"5%``(F?/$``"```"A``>@@8@,O(`"`+R%+``(AOH#`((8!PB&& +M`.!^$0`@`$H@`!!*($`0#B)"`"\@"Q+.($6`BB7_#P@`!0`O+0$`0"5%``(F +M?/$``"```"A``4HF0`#H("(#+R``@"\A2P`"(;Z`P""&`<(AA@!*)@``0B#^ +MD,X@@@%$('Z0SB&"`>!^*0```.!X_!R(L?P<2+'\'`BQX.!XX'C@ +M>.!XX'C@>.!XX'C@>.!XX'C@>.!XX'C@>&&]C"7_G^WUX'_!Q>!X\<#AQ<]P +M@`#X'DV`SW6``+2%((6WNKBZ!"&!#P,````'N45Y+:"."B`2`-@`A<]Q@`#< +MJU$@@(),B<]P@`!0PC)J-GG'<8``$+]@@59X08`%\I6[8*&KN@3PM;M@H8NZ +M0:`+C:.X%07O_PNMHL'QP)(,S_]%P<]U@`#X'B>%,'`(]#"5%!0.,3!V!/19 +M'8(0T!4!%C!P#O3/<8``!"(\D104#3$P=0;TSW&``%PB6:F`X@STSW6``,0' +MP8V`Y@#9RB!!`"7R(:V.X@3T`=@A\$$H#0('?4$H`02G><]W@`#$!Z"/4R5% +M$4PE`(3&N8WV"B'`#^MRSW```,T;G]NA`2`!BB2##U$E@)$&\@#8#-Q;!,__ +MSW:``-#!%B9-$:>-H*_)=18E31$`I104`#%&K<=Q@`"0O@*U`(D'K0`90@$` +M&T(!Q/'@>/'`M@O/_PC(SW*@`,@?#AH8@`G(#QH8@`K($!H8@`L2`38"R"1X +M$1H8@`S(SW&```PZ+1H8@`"!`>``H<.XC>`I]`O(?]D*N21X+R@!`$X@@@<` +MV`\@@``$(0&`0B*-`AGR"R-`P!?TSW"@`(@@\"!0`\]V@`#<-@"&$'7/=X`` +MX#8&]`"'$G#D#\$&H*8`'P`4B0//_^!X\<#AQ0'9SW"@`+`?.:#/<8``6!T( +M@0"`K,%)P`R!`(#/<8``X"'/=8``#)%*P`J!H;@*H0B%X+@)\E$@P($'](X( +M``8F#V`"&-B+<:EP?@A@#R3:SW"``,`'((`"B8#@$O0$B5$@`(`.\@O(!""` +M#_[__P,+&A@P"\B&N(RXC[B0N`OP"\@%((`/`0``_`L:&#`+R*RX"QH8,-(. +MS_^+<##9D-H>V\H.8`X8N\]PGP"X_P+9-J`HP('@RB'"#\HBP@?*(((/``#J +M',HC@@\``/P`RB0B`.@'X@#*)2(`.@H`!H#@!_1:"^```-C:"Z`.!MBI`N__ +MK,#/<8``G%K@?PAAX'CQP*X(``;/<8``L!CP(0``0'C/<*``T!N`VE"@SW"` +M`#@=`(!1(`""`-D&\L]PGP"X_SV@T<#@?O'`Z@GO_P_9SW6```C(`!8`0``6 +M`$!5)4X4`*72"*`1!&W)<(X(H!$BE1Z5SW&``,`'VF#88`$0A0!,)0"`0*$3 +M]`*%\+C*(<$/RB+!!\H@@0\``.D(#A +MRB1-<.!XZ"`M`L]QH`!0#"6!`1A2`.!^X'CQP%H)S__/<(``^!X#@!B(I<&$ +MX$H@`"`,]`HAP`_K`X`)@%$@@(`,\L8,8`('V`'8`:7/<*``+"`0@`"E +MSW"``&0Q`("!X`WTSW"``'C'SW$``!`G[@GO_P6`$'@"\`#8SW&``.2H![$# +MA8'@#!D$!##T`(&"X,P@XH`$]`'8`*%,%8`0@>`F],]PH``L(-"`SW`!`-0Q +M0,`!V$'`"!P`-!'80\``V(RX1,``V!#9!-H(*+!\<"B#Z__F')%P4$H`0('>4$H`@0G>L:ZSW6` +M`)"^267GN5UE$_04%`XQSW.``-#!:'(V>N""\7`%].*2T7<'\B>*Y[FG:O7S +M`-@H\,:*@.8'](#?SW"``,0'X:C/=X``3!\%CQ!V!/2`V`6O"O#/=X``7"(9 +MCQ!V!/2`V!FOQHHV>P`<@`,'BH>Y`*W/<(``Q`=`B""H`=A'JPS<

/_^!X +MH<'QP`,2`C?7<@```$`!VL(BB@`7NL=R``X``(.Z['-`H^QR`*+Z#*`$*'#1 +MP.!_H<#@>*7@'_()]H/@%?*$X!?RA>`;].!_`=B]X`_R!O:MX!7TX'\"V,S@ +M#_*,($.'#?3@?P;8X'\`V.!_`]C@?P38X'\%V.!_!]@(V.!^X'CQP.'%SW6` +M`(0OJ7!`)8$;&@P@#R[:`=CA!J__81T"$/'`6@Z/_X+@"'6-]PHAP`_K`X`(@,]QI`"T15$@`(`/ +M\D0MOAL`)T`>;)!+D'M[97I3&9B`#9!4&1B`!?!3&9B#5!F8@T0MOALG=PZ7 +M5AD8@`^76!D8@!"751D8@!&75QD8@!*76AD8@!.77!D8@!2761D8@!676QD8 +M@*((8`@J<&4%C__@>/'`(@OO_^'%U@J`!,]P@`#X'@.`&(B!X"[TSW&```C( +MSW*```Q%`()@@6"@`((/'`@>#AQ0#8 +M"?3/<(``1Y$!W;(*[_^I<:EPF02/_^!X\<"6X.'%`-B,]\]U@`"TA:EPD@KO +M_P39"XV#N`NM`=AQ!(__\<":X.'%`-B,]\]U@`"TA01M;@KO_P39"XV"N`NM +M`=A-!(__\<"DP9#@`-G*($(`$_2+<$H*[_\0V0`4`#&$X,P@8H$(],]P@`!0 +MJQ^`];@"\DQP`=BDP-'`X'[QP)8+C_\(=\]P@`#X'@.`&(B$X!IQ2?*$YP#= +MC``E`,H@10//=H``,)%`)@`3]@GO_P39+HZPKE,A```1KD$HP""@N3!P8@`E +M``(@0@!CO_%R5@`&`(#B#O+/<:``T`\0$0"&8;I88!`9&(`E$0"&#W@#\`^. +M`-E3(((@#R&!`"1X+R8'\,]QGP"X_Q"N&('/(.('T"#A!QBA&(&>N!BA&(&^ +MN!BA`=A1`X__X<3\',B^_!Q(ON'`X<'APN'#_!P(L?P<2+'\'(BQ_!S(L?P< +M"++\'$BR_!R(LOP(P@7((!V.!_ +MPB`+`/'`%@JO_THD0`#/=8``^!X5)0,0`(-`)0X5T7#")`(!\"4-$<@5!19$ +M);Z!"?(*(<`/ZW*.V(VX=0>@`'3;R!`-!J5YR!A8`*"#!ME&><@5`!8D>,@= +M&!``@\@0``:&('^.=`H!$AT"C__@>/'`I@F/_\]S@`#$!@2#@.!$],]V@`!$ +ME!,6`I8`WX0J"`D`(8!_@`!(C`*C)(@!W8#AZZ.LHR+R'1[8DPP0!0`$)8$/ +MP/\``$$I!`;/<8``>,<4$08`!2X^`0`AA'\_`/__!"1!`1X>6)`@D(PA@H8! +MV<(A3@`JH^>C)(#/=H``@)#`N2JVSW:``'0E**Y`K@*(I*,!KB#P!(.!X!ST +MY@\`"0#8!*,"@R2(@.$2]">#'.`V>"2(SW"``"0B!X@0<0'9P'G/<(``<"4@ +MH`+8`_`!V`.C.0&O_P'8X'CQP,H(C__/=8``Q`8$A:/!@.``WR?T^@I```'8 +M!*4"A02(@.!2`@$`SW"``'`E`("`X$8"`@#/<(``6!T0@,]R@`"DD`"`(X(9 +M8<]P@`!@)0"`.&"2#B`0`J*`X!H"`0!V\`2%@N`\]`J%@.`/]`P5!!`0%040 +M"B'`#^MRSW```(H,Y06@`(HCC@M"A2>%0"(`!S9X)HA@P2:(`1Q",":(`AQ" +M,">(8<$GB`4<0C`'B(MQ!AP",)8*8`ZH$@``SW"``%@=$(`@@,]P@`!T)2&@ +M@@^@`.6E`]@$I<_P!(6#X#KT0H4GA4`B```6(42!`@1/RSW&``%@=`Y(P +M@<]S@`!T)2"!88,*N&)Y,'`%]PG8"Z6.\`6%@.`-]`2*@."K\L]P@`"DD+X- +M(!`"@(#@H_(%A8#@!O(%V`NE`=@)\,]P@`!P)0"`@."7]`#8E@B`!Y/P!(6! +MX&_TT@E``R*%1X5`(0`'5GA%B."Z&_*#ND6HSW.``,@ZR8//#?F88&IB#!8A1($"`*_*N"P`0@.`0 +M]`HAP`\"A>MR'!4%$`00A`#/<```BPR=!*``BB,0`)X+(!`"V"X+(!`(V"*% +M!(F"X`KT`=@`I0#8#J46"R`06M@BA02)@>`#]`'8`:4'A1SA%GD%B88@_XS* +M(((/```P0U@-8@3*(2(``H4GA1S@-G@%B(8@_H<$\@+8!*4E\`38!*4A\"2% +MA.$!V!WT#Z7/=H``6!T0AG7:'ML@@,]P@`!T)2&@#-F^"B`.&+L$AL]Q@`!H +M)0"`=@A@`2"!!J7DI038`Z4!V+D&;_^CP.!X\$2(SW"``+P&`)`0<@'>#_3/<(``O@9`D,]P@`"`D`J0$'(% +M],2E`-A*\`2)@.`:\L]P@`!P)0"`@.`4],]P@`"DD".`SW"``&0E`(!2#6`& +M.&"`X`;T\@Y@!P#8`=@P\,2E`=@L\`2%@>`L]`*%SW*``/@>(X)D@&BA(X)E +M@!S@::$GA39X)(@#@@#>-+`"V`39C@OO_\ERSW.``("00H4'A4`B`0<6>0J3 +M)(E$@GH,X`S)<\2E`]@#I0'8X05/_PP5!!`0%040"B'`#^MRSW```(D,]0*@ +M`(HC#@'QP%(-3__/=8``Q`8$A8#@H<$P]`'?SW"``'`EX*``V`^E`*4!I0+> +MR7!^#*`$Z7'/<(``D`8`@":`GA$`!J:XGAD8`,EP`-GZ"N__!-JV"J`1R7#/ +M<(``^!XC@$B!-)%3(@``Y@O@#.ESQ*7I<&WP!(6"X!WT`H4$B(#@%_()A8#@ +M%?3/VT#`BW"&""`.&+L:ANFEA"@("0`A@'^``#B.*X"AN2N@ +M!M@$I0#8!?`$A8;@!O(!V'4$;_^AP`;8`Z4`V-;Q\<#^"T__SW6``,0&!(6` +MX*7!"/0"A02(@.`9]`+8!*4$A8'@5/0%A8#@1O3/<(``6!T$@,]Q@``P1P"` +MI@@@$""!@.`S]`#8-_#/<(``6!T$@`#>Q:7/<8``9"4`@+8-(`$@@<]Q@``P +M1P'?!-H`H<]PH``L($`0!P#/<```/'A`P`780'#P```'TJ"N`$V';DI>EP*_#N".`$!=@$V`/P!=B`X`':!/0!V"'P*86! +MX0KR3*4+I0CP!(6"X!;T"86!X`3T`=@/\(#@\/4"A>()H`0#@`AQSW"``!Q" +M0@G`#P#8O@[`!N+Q`-AI`V__I<#QP/H*3__/=8``Q`8$A8#@I<&K]`*%1X4D +M@%9XSW*``"0B!"&!#P`&``"`X0'99XH@$(X`P'EP=@CTSW>``("0ZI?!BO%V +M!/(`W@;PQHK1$#`!=A!P`'?0L=#QD3&Z7`&V03:`-N8<[AS@@C@!-ASSW"``!A'P*CDI>EP +M'O``V,]Q@``81P"I`MDCI1;P!(6!X`'>$?0%A8#@'?3/<(``I)`C@,]P@`!D +M)0"`Y@A@!CA@@.`%\@'8T0%O_Z7`SW"``!A'P*CV#J`$!=@`V`2EH?$%V`NE +M`@W@!LEP`-G/<(``&$<@J.GQ\<`Z"4__SW:``,0&!(:`X'CT`H8$B(#@%/+/ +M<(``<"4`@(#@#O3/<(``I)`J#^`/`H"`X`;R'@I@!P#8'0,``,]P@`!8'1"` +M1X8@@,]P@`!T)0&``GD"AE9X!X`0<8;W`=@$IO4"````AH#@#/)1(T#`"O(" +MV<]PH`#0&S.@]@S@#Q[8SW:``%@=!(;/=8``Q`8`@(H-X`\FA8#@O`(!``2& +MSW&``&@E`("F"B`!(($&I0*%)X4"(]`*&)X8C"!8$$!P6!1!`)``'%B!``06(42``@$`C`@<:\@#9 +M2B3`<"AUJ"#``?`B0`,!Y1EA`]]*)$!Q`-VH(,`!\"+``P'G'64P=<3W&(N" +MN!BK`-W/=X``I)"EIQ@4``%`)4$`$'$GID?WAQ0`!E$@0(`&\@'8F@\@!PRF +M3O#V">`&"X8+R`0@@`____\#"QH8,$(-X`BKI@+8`Z8"AL]R@`!P)22(@.$/ +M]">&'.`V>,]Q@``D(B>)!(@P<`'8P'@`HBGP((*`X07R`=@#IB/P)X8V>!P0 +M!`#/<(``!(,$$`4`SW"``'C'!8`,'P`1!2A^`4`I@'*0<,HBS@?*((X/``"- +M#,HCC@\``$X%B`-N`,HAS@^DIDD&+_\!V`P6!!`0%@40"B'`#^MRSW```(X, +M90-@`(HCU07@>/'`SW"``'`E`("`X!WRSW"``)PJ`("`X!OT_@@`#H#@"/0+ +MR`4@@`\````\"QH8,#()``Z`X`GT"\@%((`/````U`L:&#`+R)"X"QH8,"8* +M0`;1P.!^X'CQP&8-#_\(=<]VH``X+@>&SW$``"0IJ+@'IKX)(`<-V(#E`-_$ +M#Z(1RB`B!,]U@`#8*D45`18'AB5X!Z;/<(``0"(LD,]P@`#X'AZ0$'$+R$4= +MV!,*\@4@@`\```#4"QH8,`O(D+@&\`4@@`\!``#\"QH8,#H)3_\`A;"X4@V@ +M$0"E@.#8#((1104/__'`SW"``$P3#X"`X`_RSW*?`+C_':+/<8``.!T$@0'@ +ML[BUN+BX!*$6HF(/@`"#X`GTSW"``-Q#8@J`#[()X``%V,]P@``X'0"`[[@& +M\@#9SW"?`+C_/:#1P.!^\<#/<(``3!,/@(#@#_+/"SN+6XN+@$H1:B!@^``(?@"?3/<(``W$,&"H`/5@G@``;8SW"``#@=`(#O +MN`;R`-G/<)\`N/\]H-'`X'[QP,]P@`!,$P^`@.`/\L]RGP"X_QVBSW&``#@= +M!($!X+.XM;BXN`2A%J*J#H``A.`)],]P@`#<0ZH)@`_Z".```MC/<(``.!T` +M@.^X!O(`V<]PGP"X_SV@T<#@?O'`SW"``$P3#X"`X`_RSW*?`+C_':+/<8`` +M.!T$@0'@L[BUN+BX!*$6HDX.@`"(X`GTSW"``-Q#3@F`#YX(X``!V,]P@``X +M'0"`[[@&\@#9SW"?`+C_/:#1P.!^\<#/<(``3!,/@(#@#_+/"SN+6XN+@$H1:BE@Q@``38"B4`@,HAP@_*(L('RB""#P``WP[* +M(X(/``!Y`;@`8@#*)&(`SW"``#@=`(#ON`?R`-G/<)\`N/\]H-'`X'[@>.'% +M`=O/.!XX'C@>.!XX'C@>.!XX'C@>.!XX'C@>.!XX'C@ +M>.!XX'C@>.!XX'C@>.!XX'C@>.!XX'C@>.!XX'@&N$4@S0#/<*``[">FH`J` +M`-L`L7ZRX'_!Q>!X\<">#<`"W@E`$98/`!&`V<]PH`#0&S"@T<#@?O'`:@H/ +M_QIP`=\`$!(!%/!:=1+P%2#`(Z"0`A`1`0'GUW4``/O_\']T]@PB@*\``/__ +M"?+/<```^_]2<.SUB0(/_\]V@`!0'0"&`>"!X`"F"?0!V<]PH`#('#&@:@Q@ +M$2AP!KV!O4`I`"2E>,]QH`#L)P:A`(9"($"``*;<]<]QH`#('`#8$:'6\>!X +M\<#/<(``0"X`@('@RB'"#\HBP@?*(((/``"O$\HC@@\``/,!RB0B`%P'(@#* +M)0(!&@@``-'`X'[QP'X(P!`*"\`-T<#@?N!X\<"&"0__SW"``/@>`X#/LFY)7K/<:<`%$A-H46``8`*NLFX9'I% +M>`ZASW&``!`Z#HF&(/\!6VC/<(``^'],J$^),(E`(!,#AB+_`4.ZAB'_`4VH +M0[GJ":`'+JC:<,]P@`!0'0"``>"!X,]Q@`!0'0"A"O0!V<]PH`#('#&@7@M@ +M$2APSW$(`(<0SW"@`.PG)J`#V`#9,B-5(#IQ3"4`HI0`*@!:<$HD`"`:\$`E +M@0$P>0:Y@;D0OR5_SW&@`.PGYJ%`)H$!,'D&N8&Y$+@E>,]QH`#L)P:A0"14 +M(,]P@`#`*B"`8'D&V))P]@`.`!$E`*7T\ZIP=@A@!8IQ&G"J<.(.(`6*<9AP +M0"A`(1!X$+B!N(>XC+C/<:``["<&H4PD`*`F\DPD0*`4](HEQ`:*)H0((O`* +M(<`/ZW+/<```L!.*(\4-"B1`!=T%(`!*)0``"B'`#^MRSW```*XHBB-&!DHD +M``#!!2``"B4`!8HE@@V*)D(/`-\$VY]SZ7"H(``,8;M`+H(A0"P!`5EA=7D` +M(TT!QW&``/220I&P?0:]@;U<>A"Z17W/FHD*1P+IX>N5Z4']#D0`C +MC0&P?0:]7'J!O1"ZI7K/=J``["=&IB.1P+EX>25X$'AH\4(B0""`X+(&[?]` +M(4$@SW$(`(80SW"@`.PG)J#/<(``4!T`@,]Q@`!0'4(@0(``H0?TSW&@`,@< +M`-@1H:$'S_[@>/'``-B-N#(/H`P&&A@P#,R&(/^*"/+/<(``U#8`B(#@B`]" +M!-'`X'[/<0,`0`W/<*``J"`MH,]Q@`!`"$"!`6H`H<]PH``X+@6`!""`#\`` +M``#7<,`````*\DC8SW&?`+C_&J%;H6G8&+@9H<]R@`"Z"?+&N@JZSW"``,!#R@Q@ +M#UEAT<#@?N!X\<#AQ<]S@``41`:#`X`@@,]P@`#4*ZB(2HA$+3X;`"&`?X`` +M4"M5>$R0:'`*NI(,8`]98!XSW"``-0K2(@JB,]S@``41$0J/@L`(8!_@`!0*S5X3)`B@VAP"KI%!&`/ +M66'QP/X-S_[/<8``>$HA@:/!0L'/<8``^!X5(1```!``(,`0#@:`YB\H@0-. +M((T'6/(2;19X`""2#X``$+\&$H`@SW&``-#!%GD`@2*1CN4('$0PRB!A``;R +MBW(.#B__`L&`X#?R`-C/<8``7`=`@0\@0`,O(0H@!"&`H`"A!O2`XL0((@C* +M("((KWAF#F`$$-D`WP0:Q".*(0@``!I`(*EPZ7$6#^`&#]H`$`(@P!(`!@0@ +M0`3`&A@`SW"``%#"MGC@H.&@SW"``'"^M'C@L!`F3I,O*($#3B"-!ZSU?07O +M_J/`X'CQP.'%"'4$\-X*0`]""V`/J7"`X/KUB07/_N!XH\%`P$'!!12!,`#8 +M@>%"P@WR@N$'\H/A#?0AP0#8#R!```,4@3`/($```A2!,`\@0``&%($P@>$. +M\H+A!_*#X0_T(<$#X0\@0``#%($P`^$/($```A2!,`/A#R!```D4@3"!X0[T +M`A2!,`JY3R$"!`,4@3`,N25Z(<$.N45Y)7@@P8'A"/0'%($P(L(&N0BZ17DE +M>.!_H\"CP>'%0L$)%($P0\*#X4'``-@*]H#AR/8*%($P@.'$]H/AP_8!V`<4 +M@C`&%(,P4',&\B+!,'/,(D*``_0!V"'%@>40]`H4@3`CPW!Q2O8+%((P4'', +M(ZJ`A/:`XLH@:0"!X`WTBB')#\]P@``T!R"@@>7_V*SNK6ZN+I$H%:A +MSW:``(!%SW>``,A5`_``%040`85`+0$")7@@AC!P`_(`IO`G0!%`>(#@\_// +M<(``.!T`@%$@@((&\@#9SW"?`+C_/:"Y`\_^HL'AQ4+!02@"`@=Z02@!!$=Y +MSW*``)"^QKDJ8N>Z$O0(%`,QSW6``-#!J7%6>4"!4'`%]$*1<'(&\D>)Y[KW +M\X#8`_`&B<'%X'^BP/'`SW*``!J_,F@V>3%BHL%`P4'`BW`(V9[:'MLR#V`- +M&+NBP-'`X'[@?N!X\<`(R)6X"!H8,`G(F[@)&A@P"\B*N(VXD+@+&A@PSW"` +M`/@>`X`8B('@#/0+R,]Q``!P*ZRX"QH8,`X/H`8/V-'`X'[QP.'%"'4^B,]P +M@`!L%$"`0"4`%`.Y-7E98?8(8`X*VIH/[_^I<.4"S_[@>/'`I<%!P$+!#!P` +M,1`<0#'/<8``?'XT&<`/,!D`#RP9P`XH&8`.)!E`#L]P@`!\?B`80`O/<(`` +M?'X<&``+SW"``'Q^&!C`"L]P@`!\?A08@`K/<(``?'X0&,`(SW"``'Q^#!B` +M",]P@`!\?@@80`C/<8```'Z`&0`(?!G`!W@9@`=T&4`'Z#!0& +M,,ES`-VV#"`&$!0',,]PH`"T#[R@6@^``\]P``"MWEH(``$(V`#9+@]@!IFY +M009`#O'`Q@C/_L]R@`#X)8#ASW6```Q'#O(`H@"%@.`3].X,8`$/V/8+X`<( +MV`'8`*4+\`#>P**R"V`!#]C&"^`'"-C`I?$`S_[@>,]Q@`#\*0"!'-K/`6(H.`,],]P@`"\!@"02'2`)$03`*P>VP/P&-MBH54B0`UX8`6A +M\05@#2APX'CQP`H(S_[/<(``3!,#@(#@#_+/"S +MN+6XN+@$H1:BSW"``&@&0(#/=H``Q`^@A@0B@P\/``#@!".!#P$````2:61X +M!WV@IIAU!"*.#P```$#/=8``P`_@A0.^9'X]><=_X*4$)`T`!"*"#P```(`& +M(T`#17D"N>1^!".##P(```#&>&1Y)G@O*`$`3B!!!(;A#1I8,`?RSW"```"J +M#I"`X"CRSW"``"0'`(C/(`V07T28.XXH+W`=F`X0'="?3/<:``B"`5>:"A%/`& +MV-OQH@Y@#`8:6#.6#X`%@.`*]`#9D;G/<*``T!LQH+H,H`^I&1B`'1F8@)H-8`P& +M&E@S+0:O_@#8X'CQP.'%SW"``&@&`(`$((`/#P``X"\M`1#Z#N__3B5`%`HE +M`(`-\@HAP`_K#HHCQ0HE`^__3B5$%'_8"KC/<:``T!L3H7_8$*'I +M!8_^X'CQP&(-C_X(=NR(*);/<(``B`:R;RASAB/S#[9]0BL1`L=U@``0OV"% +M[;L(<@+R1&CKN8H@PR\$]!X6D!`-CE$@`("D\N.Y/?3KNQ7R_]@'K4HD`'$` +MV:@@@`,H8@`A@P^``/C&]GL$JRAB`>$O>0"K7?!,(0"AD/8*(<`/ZW+/<``` +M+26*(PL$2B1``'D"[_\*)4`$[KD'C3(B0@0`(8$O@`#XQO9Y"?)$J039`"E! +M!"5X!ZT]\$"I#R!`!&/P3"``I);VC"##K\HAP@_*(L('RB""#P``+B7*(X(/ +M``#D`LHD8@`@`N+_RB4"!.X)[__)<`B6[K@%\@*.":T#\`&."*T`A>NX&/(` +MVD>M2B0`<<]Q@`#XQJ@@P`(X8O9X!!@"!``8`@0!XD]Z`8X(K0*.":TL\$PA +M`*'*(0GR!!D"!`39`"E!!"9X!ZW=\0`9`@0`V0\A000F>`>M`8X(K3D$C_[QP-X+ +MC_[/SW6?`+C__85Y8<]S@`!L!N"CW:7/V.E$!I8@`'8L0./_O'`1@N/_L]P@`!,$P^`K,&`X`#?#_+/"SN+6XN+@$H1:BSW&``,@D&8&AN!FASW&```R1`I%!D1"X!7H" +M'(0P,+HH@00`(;$$``&SW6``,@Z42!`@0?T6@C`!`'8W!T`$`&&&(A! +M'1@0Y@X@`1C8SW"``-0K*(C/<(``9"M$*3X+-"!`#E$@`('*(`$'RB$A#,HB +M@0\``)``RB.A![0.(0W`*R$&SW"``#@=`(#ON`7RSW"?`+C__:"U`J_^K,#Q +MP/8)(``!V,]P@`#8*B"`Z[D/\L]P@`#X'@"`Q!``!E$@0($%\E$A@(($V`+R +M`M@J#P``T<#@?O'`#@J/_E$@@,&EP9@/X@/*(*(`"\B0N`L:&#`Z#J_^`-W/ +M<(``W$,F@".!((&,O1(((`^Y80#9SW:``-@J_!Y`$,]PH``L(/"`SW```%0< +M0,`"V$'``=A"P$/!1,$%V03:`-N8<[ASV'-N""`$`"='$P"&B[@`IOT!K_ZE +MP.!X\<"."8_^42"`P:7!&`_B`\H@H@`+R)"X"QH8,+H-K_X`W<]P@`#<0R:` +M(X$@@8R]D@_@#KEA`=K/=H``V"K\'H`0`-G/<*``+"#P@,]P```,'4#``MA! +MP$+"0\%$P2AP!=D$V@ASF'"X<-APZ@_@`P`G1Q,`AJNX`*9]`:_^I<#QP!() +MC_[/=8``V"H`A>NX!?*2"X`%@.`*\@O(!2"`#P```#P+&A@P+@V/_L]SH``X +M+@>#P[B/X`_R'!,$``HAP`_K`'\HC@$?0`A5$@`((-]"8+@`6`X`GRSW"``!1$!H`#@`"`U@G``!X+@`6` +MX`KRSW"``-Q#.@[`#HH-(```V`GP"(Z)X`GT`(51(("`!?0`V)H+H`>,N,D` +MC_[@>/'`0@B/_GIP@>`!W<(E01.!X`'8SW>``/@>((?`>,@1#@8AAT0FOI'( +M$0,&!/1$([Z!$O(*(<`/ZW)`*PT$SW```,L;BB-'#`HDP`2A!:__!26%$\]Q +M@`!`(EZ7+)%0<0?TSW*``,B;08)0<1KR(@H``.H)(`"I<*H)``#P)T`3Q!`! +M!JEP);G`N1H(X```VH(.0`\+R)"X"QH8,/X+C_ZJ#J`0`=CN"6`*`-CF"6`* +M`MC/=J``P"^I%@"6JQ8!EJH6`I8%>:P6`)8`W:T6`Y8%>JX6`)8%>\]P#P`` +M^`0A`8`$(A``!",1`%IU%_(O*D$`3B*`!\]RH``,+?`B`@!1(@""`-H/(@(` +M!/1%?03P!2*2(`8A@8#K]<]P@`!`(BR0'I<0<0_TSW"``-@J`(`$(+Z/```X +M$`7TR@Y`!8#@*/1,(T"@"_2E%@&63R(`(8:X!GFE'EB0#_#/<(``0"(LD!Z7 +M$'$)\J46`)9%)4$1)GBE'AB03"-`H`GRSW"``$`B+)`>EQ!Q!/)."2`1!=A, +M(T"@"_2E%@"6125!$04A`00E>*4>&)`Z\$\B`"&&N,]Q@`#0*TB!!2!`!`5Z +M`-@(H0&'P!`#!H#C+RC!`$X@C0%7T@A<]R@`#L +MD4AP@"$#`"H,X`T#VB"%SW"``-`Z@"$#`Q8,X`V#V@T&3_[@>/'`H<'/<(`` +M2$D`@+8*H`9`P(MP!-F]VA[;P@D@#1B[H<#1P.!^X'C/<(``T"O@?P:`X'C/ +M<(``O"O@?L]P@`!\!^!_`(#@>/'`1@UO_@#92B2`<.!XJ"``"L]U@`#4+'#< +M`B4"$T0I/@P*(%VV2BSW,"`&P&8Z(!VV6BYJ)")0(>`")` +M#L"@!MI$H,]R`@``!T.@9:#FH`'A405/_O'`X<7/<(``?`?/<8``3!-O@4"` +M@.-/>`_RSW&?`+C_?:'//'` +M*@SO_P#8SW"``-@J`(#@N`;R[K@']`C8`_`!V'()``#1P.!^X'CQP%(,3_ZE +MP5$@@,$"W=P)X@/*($(#"\B0N`L:&#!^"*_^`-_/<(``W$,F@".!((&,OU8* +MX`[Y8<]V@`#8*OP>0!,`V<]PH``L($`0!P#/<```L!Q`P$'%0L%#P43!`=@% +MV03:`-N8<[ASV'"N"N`#`"?'`P"&@+@`ID$$;_ZEP/'`T@M/_E$@@,&EP5P) +MX@/*(*(`"\B0N`L:&##^#V_^`-W/<(``W$,F@".!((&,O=8)X`ZY80/8SW:` +M`-@J_!X`$`#9SW"@`"P@\(#/<```:!U`P`+80/'`_@I@!>'%@.`+\@O(!2"` +M#P```-0+&A@P?@]/_L]U@`#8*@"%Y[@&\J>X`*52"Z`.`-C/<(``0"((B(G@ +M"/*(X`[T`(51(`"""O3/<(``%$0&@`.``(`^#(``:0-/_L]Q@`!\!P4&[_\` +MH?'``=G/<(``T"L@H,]S@`#X0P:#`X`@@,]P@`!8'06`0(!H<-6Z\@C@#EEA +MSW"``,`'((`$B:"X!*G1P.!^X'C//'`F@E/_L]P@`!,$P*`!Q(/-H#@#1(.-@$2$#8/\L]RGP"X +M_QVBSW&``#@=!($!X+.XM;BXN`2A%J(&V`T:&##/=:``%`0*I0F%@.`G\@/8 +M$*4$I<]P@``(RJ((8`\#&A@PDMD#R)"YH!A``'(,X`,`V`F%@.`/\B@5!!`D +M%040'M@*(<`/ZW*,N+$&;_^*(P0&!QK8,P$:/<(``.!W*I0"`42"`@`T: +MF#,&\L]QGP"X_P#8':%%`4_^\<#AQ0AU`@S@`!38SW"``/@>`(#$$``&);@B +M#N``P+C^"V`'!-BN#^`,J7!&#(`,]@F`#"4!3_[QP.'%@N"AP2(!+@`(=<(, +MK_\`VL]RH/X4!H#@SW&?`+C_!O1(OQ@>$Y]'8.;_Z+<"#` +MSW&``+2%4R`"`(8@?P](J1QX":GL\8[A3@`%`,]P@`#X'@.`&(B!X!_RSW*` +M`.B"2'`^#F_^!ME`(@`",@YO_@;9#)*!N`RRO_&$X8WWSW*``.B"0"(`!18. +M;_X$V0R2@+@,LK'Q$]@"\!S8\0`1A_\HE +M(0!1)$""-?0`V<]S@`#4*RBK`=I)JTJKC!U$$`K;CAW"$(?@`MN/'<(0!O*( +MX`[T420`@@SR[!4`$6JX$'B0'000"MB4'000!_!DV)`=!!"4'400DAU"$)8= +M@A!5)<`85B7!%?(,H`T+V@"%B;@`I0'8`:7/<8``^!X`@<@0``:&('^."?0! +M@<@0``:&('^.K`X!`PB.A^`(\L]QH``X+@>!J+@'H:$&#_[QP.'%`-C/=8`` +MY*A*)$!Q)(6H((`"`-L/(P,`"R'`@`/T`>`%\&9Y`@F@`"2E!(6`X"`)X0#* +M(&$";08/_N!X"',X8-6[U;DP,=%@@'@R;@B>GIB +M%KC@?T5XX'CQP,(-+_Z8<@AUSW:``$"&]"9`$,]W@`#`A5$@0(+*($$`RB0B +M=,H@(@#H(&("]"8"$%$B0((#\@'@D.!&``8`+;O`N\]R@`!POK1Z0"N%`F"2 +M!+V&)?@3B;T/(T,`8+(`VA9_0*=!I\.YI7D%(4,!%'Y@ML]Q@`!@AA5Y`!D` +M`0+P@-BE!0_^X'[@>/'`X<7/<8``T(I!B<]U@`"`%8#BSW.``)PJ((,&\@'8 +M`*6"N2"C"?``VD"EHKF`X""CG`_""0#8/@QO_PAQ1@C@`0#8:04/_O'`\@PO +M_IAP`Q(!-@"1(8%`X/2YP""B``/@!""`#P``_/_/<:``U`SW6@`,@?42!`@,]P@`#XQR&``\@/\J`5`A#X%0,08GD" +M(E<`=A`!`2\GR"59803PA!`7`>)Q.AC$!1^%$''%]S!XH@D@!@+9`=G/<*`` +MU``4A%0`#R"&``!`2`4/!N!"8`'(0 +M`0&Z$``!`B$4!FX-X`9$P('@"_3/<(``#!T`D('@`=C`>`RX0L`"\$+&`\C/ +M<:``U`=9@(@9@`"D$`$`V:"X&((#NAB$`[>YI!A```/`]K@(\L]RH`!("$`B +M`",'\$`B`"'/04E52`G:,]S``#\_V1YSW.``/C'8X,( +M(<4`SW.@`-0'%:,`&D`%`B(`)0^C`B5``!NC\*//"F`SW*```"J.V-IH*05`!#X%0$0 +M@'`B>$7``=C/<:``U`L0H0/`-;C`N!>X`""!#P`.``#/<(``^,<"@`*X*^`$ +M((`/``#\_R5X['$`H0$2`3;L<""@SW"``/C'(H#L<""H#<@4(@$`,(GL<""H +M['#`L`/(E!`!`.QP(*`-R/`E`0#L<""P['#`L.QPP*#L<,"@!Q(!-NQP(*`# +MR""05!```1"Y)7CL<0"A`Q(#-@*``@0_R,HMPB\]P@`!0P79X`(B&('\, +M''@$N"5X`O"`V.QQ`*D#R#MV,(@S$(``!+DE>.QQ`*D#R!IV/)#L<""P`Q(# +M-L]P@``\19P3`0%O@R:YP+G`NPRY#;ME>2"@#1(!-@`A@`^``"BJP*C/<(`` +MK*DV>#1ZP+("D,`:A`,5)4$`>!H$`,]P@`#X'@2`&I#0&H0#1L#/<(``^,<" +M@,"A@.#*)XX3'@,N`,HACB/)=`_[@`WNCS+_``WOJXRB:" +M'P```0+YN,HF@A\```("_+C*)H(?```!`H#B"O+/$DHU$A@*!#]!X:6(,=$@"&!QH8,!T2`(9* +MP!T2`88$R""@'1(!AB&@'1(!AB*@'1(!AB.@'1(!AB2@5B4`$AX:&(`=$@*& +M0"\`)%!Y!2$5``02`3:&(O,/`!$2`8PB#(`!@4/`%_(:V!;PSW"``/C'"!`$ +M```0!0`*(<`/ZW)7V,]S``",$]$$+_^,N`#>T?`@V)IP`W`0>'(9!```WDP@ +M`*`#]`/(CO0'R`#!!""`#_$``/`0<93T +M`\CI<`,2`3<0N25X['$`H0K`0"%9,`$:&#`$R`,2`39! +MQ0,:&#`$&E@P(8``D`'%-+G`N31X`^!`Y00@@`\``/S_'64-$@$V!_`5(D`P +M#A``!@)]%2)`,`X0``80=7;W`\S/<9\`N/\8H<]PH`#\1%V`!"*^CP`&``!A +M]$P@`*`,\@3(4(A3(L$`AB+^`T2ZQ!B"`#"HSW"@`!0$Q*`'R,]QH`!(+!VA +MSW"``/C'`H!`(%`@$G`,!`%H;3Q!H&!OP'@!J&P\>"_"/+/<8``/#P%@0'@!:$Z=P/(Z7'( +MN0B(#+@E>`,2`3<0N25X['$J=(0D`I$`H4`A33`;\L]QH`#4!X`9P`0#S"IR +MR+H0N$5X['(`HLRA`=@4&1B`S@\@$`'ESW&@_H0`SW"?`+C_-J`#$@(VDA(` +M`>JX!!(!-@;TDA$#`5$C@((V\JJXDAH$`)(1``&JN)H-(`F2&00`$-G/<*`` +MT`\0&%B`)!`!AL]R@``(SD62,'D"ND5Y#!A8@!39$!A8@,]Q@``(SF>11I$8 +MV1"[97H,&)B`$!A8@,]Q@``(SFF12)$0NV5Z#!B8@`;PSW"```C.RJC/QP(*`!Y<]P@`#XQP*`$'6W +M]\]P@`"HDB20E.'`(88/``"3`,]PH`!H+/`@0`#/<8``/$4@@<]UH`#4!R5X +M#:(#V!*EB@A`#%$G0)(%\IX.K_\!P`;P`]@3'1B0%!V8DTP@`*`7\L]PH``L +M(#"`!<`P<`'=RB6&$P0@CT\@````SW```#45[@H`!8#ES"(X'/<(``$#H0B!"X,B&!#P``V`*?N(#A`=G`>0^Y)7C/<:`` +M_$0-H4PC`*`-\L]PH`#T!V`8P`3/<8``/#P#@0'@`Z'/<(``J)(DD)3AP"&& +M#P``DP#/<*``:"SP($``SW&``#Q%(($`VL]VH`#4!R5XSW&@`-0+#:%,IAX) +MX`X&P!D6`);`X*(`#@`-S%$@0(!+\@/=(!Y8DP'8%!X8D`02`38`%@1`!QH8 +M,0`6!4`!&E@Q!,J6),0B5,@P@"&(/X#1+C$&0(`4*G/`##1("-@3(SW&@`"P@L!```2^!9.`P<,H@A0\2*`@`A/?/<``H"``&&A@P +M`-X-S`0@@`\```((@N`*]`02`3:*(`0``@Z@"9@1`0`-R,]Q@``0JL]R@`#D +MJ!1YP+$FDL]P@`#XQP*`&6$P>2:RK=C/<@"[`+M"#R`'!;@#R!J0<@Y@!PT2 +M`3;/=8``J)($E<]V@`!@O?0F`1`&E3!P%/(&":`%!\@*(<`/ZW($E0P5!!'/ +M_]J\#@>%$@0,/QP.'%)_+/<(``^,H1#8#J$!V!49&(`J"R`00=A1($##$_(!V<]P@``(12"@P@R@ +M#@'8SW&``#0]#8$!X`VABB4($B[PSW&@`/Q$'8$Y@00A@H\````(`-T']`0@ +MOH\`!@``&?(`W?JXRB6"'P```0+YN,HE@A\```("@.(*\L]S@`"X/%"#BB4( +M$@'B4*->"P`0!O`#V<]PH``4!"6@_0#O_:EPX'CQP'X(S_T(=<]V@`"(#0". +M@."HP5CTBW?I<,]Q@`"<2B()[_T@V@'8`*X`V(^X"QH<,`#8%1H",,]V@``` +M`-=U``#^RJ"V!?0'P("X1\#/<*``K"\:@%(@``!1(`"`"/(!EH"X`;8'P(&X +M1\#/<(``"$^@B#H/8`2JKL]Q0W6H$D#!BB$:"D'!*XX$ID;`Z7!CP0T<0C// +M<8``?#Y$P<]Q@`#H/47!(-D!VCW;'@Q@#!>["-@J#F`%`=D"V<]P@`!$)22@ +M(0#O_:C`X'CQP+(/K_TO)`<`@.#/BHZ.CS"$A@`'9RB$A`,]U@`!`(LB-B>87],&#Q!8.%E$F0)$1\LR5 +MOI.Q=@WR@>`*\H#@"?0`@\00``91($"!`_0`V8'BRB$A``#>SW6@`+0/W*7Z +M"6`&B'#/<(``1"4$@%$@@(`1\L]P@`!4.`"`@.`+],]P```6"88(P`2!X`7T +MI@L`"PKP`-F>N<]PH`#\1"&@X'C!H-RE@.=$#&(`RB!B`+X/@`2`X`3T!@]` +M#@3P-@]`#L]U@`!<#@"-@.`&]*8-0`T!V`"M)0>/_?'`L@Z/_<]V@`#4*RF. +M:(XP<\]U@`#8*AIP!?0`A>RXD_)*CL]P@`!D*T`@D0%$*SX+)W!5>`:(@>`H +MKE3T`(7/=X``4"M$*3X+0"*I"@N2JP"/"`X0;RN@Z`!0"%C+@`I0B.1"@^"S(A0"Z!X`'8PB`! +M`*8.X`\*KBB.2HY$*3X+`"=`'E5X3)"`XL]P@``41!/RSW.``$`B:(N)XP?R +MB.,-]&"%42,`@@GT1"D^"S(A02Z!X23R"G$E\"UJ"KDB\$0I/@LR(4`NSW>` +M`%`K@.#*(&(`0@[@#PJN"(Y*CD0H/@LO<3AG57A,D(#BSW"``!1$X_,R(4$@ +M@>'?\T`J@0("<@`"P@4(<`W@:%1Z6Z#J_]#B"` +M``BEQ+40A\6U!J5U!:_]"(7QP,]Q@`#DJ``1!`"X<,]R@``4,4`L@``5>!4@ +M0`$P(@8`3"8`@0OT"B'`#^MRBB#,#'$"[_Z*(\4"3"8`@"OR3"9`@!+R3":` +M@!?R3";`@!#R"B'`#^MRBB`,#8HC10M!`N_^"B6``48*``#1P.!^(@D``/SQ +M3"1`@`/8`O(`H0#8!:$$@:"X!*'&"&```]CN\>[Q\<#/#!P!K+,]@2*@>`&]`6*@>`!V`/R`-B`X(`(`@#1P.!^SW"``%"K()!$(0`# +MB.`T]`#;SW*``.2H9:($@E$A@(&@N`2B'O0$DL]Q@``\J0'@)($0>#!P!++, +M]P2*@>`&]`6*@>`!V`/R`-B`X"P``@#/<(``[#0#@(#@"_(#V`KPSW&``.PT +M`X&`X`/R8Z$$V&4!``#@?N!X\<#//'`4@N/_>X/S__/<(``$*E@@,]R@`#DJ*B`8*+/=H``9#$$@JBB +M`-G`AJ"X@>8EH@2B$O2"X\PCXH`3](#ESW"``.PT(Z`%\I(/S_\)\&(*```' +M\`';8*(HHJ"X!*)A`X_]X'CQP.X*K_T`V,]QH``L(%"!SW:``.2H)([/=8`` +M$*F!X0BE!?0ECH'A`O(!V(#@)?0JAH#A'/(&ADX,K_T.((``SW$``!`G,'#0 +M]\]Q@`!XQR6!F2'-"C!P2O<%\,]P```0)PBE`M@(\`#8"/`)AH#@]O4!V`"E +M`=CA`H_]SW*``.2H)((/(0$`)**I!B``"=CQP%H*C_W/=J``+"`0AL]U@`#D +MJ`>ESW"``(Q"_@_@#0#?`!4%$$PE0(`2\DPE@(#,)>*`/?(*(<`/ZW**($P- +MBB,(![$'K_Z*)(,/!)6`X&SRS@S/_\]P@`!XQP6`*(69(,T*,'`!V,(@#@"` +MX%[RSW"``'PTZ:#7<0``$"=O(`L`@.`2\@2-@>`&]`6-@>`!V`/R`-B`X`3R +M^@W/_T;PSW```(@3"*4^#L__/O`$E8#@&_0EE0B%@>'`(($/``"($P/R&WC/ +M<8``>,`&]`6-@>`!V`/R`-B`X`3R@@W/_PCPSW```(@3"*7& +M#<__!)4%M>2U$(:5`:_]!J7@>/'`SW&```2#08'/<8``>,/'`X<4`V,]S@`#D +MJ`"CSW6@`"P@$(4!V<]R@``0J0:C$(4@H@:BSW"``'PT`X@DJXP@@X8DJ@3R +M):HEJ](+(``#V"$!C_W@>`'9SW"``.2HX'\@H,]P@`#X'@.`SW&D`!Q`"(#` +MN!-XP;@2H>!^X'CAQ0#:2B0`=,]U@`#`A<]S@``XADAPJ"```T`C`0(4>4"Q +M%B4!$$"A0:$!X$HDP',`V:@@0`+/<(``<+XT>$"P`>'/<(``6`=!H,]P@`#H +M@DRPX'_!Q>!X!?!"><=P0````,]R@`!XQT6"4'$W]U,@0P5P<<`@C0]````` +MP""-`.!_(G@&\&)Y`B"`#T````#/,=E@G!Q-_=3($(%.F)0`5A +M+;W`O0/P_]TB"H`$@.`(\L]P@`!`(@B(A^`"V`/R`-C/<8``,)%WB<]R@`#( +MFR&",',$\B""@.$$]`'?`_``W\]V@`#X'B"&Q!$!!E$A0($K\H#E*?0CACB) +MA.$E\OH/P`V`Y\]Q@`!$.QCRSW*``)@'`H(!X`*B`-C/`0H:H-C_V&"8`$@.`.\L]P@`!`(@B( +MB.#,)6&0!O2>#^`-`=@^#(`%C"7#GTGR@.<1\L]Q@`"`%0"!@.`+\@#8`*'/ +M<8``G"H`@:*X4@E@"0"AW@E`#<]Q@`!XQP:!12!``0:ASW>``+2%"X]1(,"` +ME`F"_0N/42"`@-@,P@,V#(`#]@F`!(#@Q`HB`,H@(@:`Y0CR`(;$$``&42!` +M@1'TSW&``%PX!(F`X`OR`XF`X$@*X0O*(.$`E@H@`!78L09/_>!XX<7/<8`` +MA!4`B0';@.!AJ23RSW"@`+`?>:#/<(``6!T(@*.!8(`"@1!U`-H8],]P@`"< +M%0"(@.`#]`'8"O`!@0(C#0#7=4P`0$MY]T&I2'"!X`/T8:%"J>!_P<6BH>_Q +M@.`!V,(@#`#/_^`-J`X`3T$]TN\,]R@``PD4AP(@RO_0S9SW&``(05`(F`X`[R +MSW"``%"K`)"&(/P`C"`"@`;T!9)DDF=X`Z%")0`3*@O@!8AQ"B4`D`STSW"` +M`%"K`)"&(/P`C"`"@`P/P?_!!6_]J7#@>/'`F'"X<9S@RB+&!\H@A@\``.,. +MRB.&#P``@P#``J;^RB'&#TPE@('*(L8'RB"&#P``Y`[*(X8/``"$`*`"IO[* +M(<8/`-K/<8``P'^>NA4A00$`@0$J`@%&>-8.8`<`H='`X'Z=!^__!=G@>/'` +MX<4`W<]P@`#`?TH*+_\.'%SW*``(06((H`W>"Y9-C*($$# +MX;G//'`X<4`W<]PH`#`':"@J7!J""``J7'/<(`` +MA!:CH*2@*0-O_::@X'CQP.'%3@@@``AQ@.``W1_RZ@R@#S+8Y@R@#Q[8SW*@ +M`,@??Q(`AL]S@`"@%C"X(8O$N#!P`=G"(4H`@.`@J\?VK:*!X0/T!-@!J]D" +M3_W@>.'%X<;/CN8#]X#F`O0`WL]P@`#(FWB(@.,$](#F!/0`VP3PPH`$V\]P +M@`#X'@.`&(B#X,P@(H',(.*!S"`B@LP@8H(#\@#8%_`*DA!V!_0+DA!SS"$A +M@/?S`=C/<:``R!\-H.!^X'C@ +M?P#8X'[@>.!^X'C@?N!XX'[@>.!^X'C/<8``P#L2@0'@$J$-R,=P@``$O>2RHSW"``(06`H@0<`N\F(((```V*((```N#X`/`=A` +MP('!VMP")P`3:@Z@#"#:J7`DV;S:'MO^#.`+&+L!V%$>&!`2\(#@$/)."2`) +M5!8`%@#?0,>I<"39O-H>V]H,X`L8NU$>V!/I`&_]J<#@>`S:SW&``-0L`N`/ +M>"<9`H``V"@9`H`+$8"`)AF"@`@1@H`I&0*``>`/>`L9`H#/<(``9BM$*CX+ +M,B!`#N!_*AD"@.!XW=C/<8``\"L$J0N)!^`/>`6I4-@&J6_8!ZF:V`BI"=C@ +M?PFI\<`."&_])-JMP<]Q@`",2\8(;_V$P,]R@`!`(@B*A^!\`@(`SW>``-0L +M"!>!D`H7@Y#/=8``9"M`)9`1`VU$*3X+)W5U?6:-SW:``-@J@>-,`@(`;)+/ +MDE!S"/1`A@0BOH\``#@0+`(!``#=J7(+\$0I/@L`(8-_@`!0*U5[ +M;),!XGUE1"D^"S(@1`Z0$#'$(P"!>`D`J]1"@^"S(@02XO +M<,=P@`!0*X#ARB%B`#5X#)`*N$'`SW"``!1$`H!"Q>EQ@B%#!4/`0"3`,(8, +MH`P-VEX.[_\-V)X.S_\J#8`/`=A$P(7!VMP")P`39@R@#"#:A,`DV;S:'MOZ +M"N`+&+L"V%$>&!"6\`+9SW"@`+`?.:!1%@$6@^$(%X"0N'`G]$0H/@LO<#(@ +M`2#'<(``4"L*(D"`RB)B`!4@@P"D%@(7;)-0$!V<(A00`U>*46`1=, +MD#!RSW"``%@=!_0-@`"`4Q8!%A!Q9/+_V`,<`C!$+3X+,B!!+B]PQW"``%`K +M"KV`X`R0"KA!P,]P@`!8'0F`0L4@@``A``%#P.EQ0"3`,((A0P6B +M"Z`,#=I^#>__#=BZ#<__1@R`#P'81,"%P=K<`B<`$X(+H`P@VH3`)-F\VA[; +M&@K@"QB[`]A1'A@0"!>`D$0H/@LR($(N+W#'<(``4"L*(X"`RB-B`!4@P0`L +MD8'BI!Y<$`'9PB%!`#5X#)"E'AP0SW"``%@=#8``@%,>&!`$\%X,S__5!2_] +MK<#@>/'`;@T/_9@0`@`$(H$/````"#MY!"*##P```!`E>\]Q@`#X'J2!Z;I6 +M)4X45B4/%9@0@0`(\H8A_P-$N2]GB;_I<1GP42(`@KP5`A$,\L*Y@"4"&3]E +MZ(\]93"-97_P?T5Y"?##N3QY/V8^9C".Z(]%>8@8P`-E>5T%+_V,&$``\<#A +MQ0/(I!`!`)@0`@!1(0"`'V"6`"`-JL:"(/ +MP`W/B!*]`T2`3<# +MR.2Y>!`"`2'R42%`@,]Q@`#X'B2!5!$!`0GR?A`-`2)]8GT")$,#*_"`$`,! +MSW6``/"]`"-$`'"(=GU@E0`C#0&$$`,!NV,;\*00`0#TN0CR<(C/<8``\+UV +M>6"1!/""$`,!SW&``/@>)(&`$`T!5!$!`3UENV.$$`T!NV.`$`T!N6%^$`T! +M0GTG\(+@(?0#$@TV#EQ#&)"`V`ZF*0,O_7!X\<"Z"@_]SW&``/@>\"$"`%8B100(@E8B +M!`51(,"`BB`(`,H@(0"\&@0`2B0`<@#9J""`#\]U@`!,4/R*+F7D?B\H@0-. +M((,'SW"``#12;V``)4,`X*M$$H\`Y'XO+H$33B:/%^Y@R*O(@E$FP)`/\AV* +MAN'3(*8`+R@!`$X@C0?/<(``<$ZH8!#PSW:``'10+F;.9;R*Q'U8$HX`Q'TO +M+4$33B6.%\A@$*L!X4HD`'(`VZ@@@0#5@2C@#$>2\I +M00!.(8X'R64L&$(``>-*)`!Q`-BH($`%SW&``&Q.?8H)80`D#``!X&1Y+RE! +M`$XA@P?/<8``<$YI82"LP0$/_>!XX<7AQL]SI`"T12D3`(;/<8``R#K(&0`` +M*Q,`ALP9``#/<*4`"`P#@.09```.$P"&$'HPN-09``#0&8``#Q,`AM@9``#/ +M<(``C*O4B+:(Z!F``WB([!E``PV0\!G``"S@`B""`_09@``"($(#8GCX&8`` +M_!D``,'&X'_!Q<]P@`#D1`:``X`@@,]P@`#.'%X<:8<,]R@`"D +M%@6"(()F@LJX$+C*N04A`8`!@LJ[$+O*N`4C!0!G@@*"RKL0N\JX!2,'`&B" +M`X+*N\JX$+L%(P8`)/(`%`X`+RA!`$X@@P<`V`\@P``2?00@0P&D?F5^`!R` +M`]J"I'[%>WJB>8($((X!!"#``:1[Q7MYHGB"I'L$(4a@8HM_UP<;@?\'% +MX'CQP"((#_TZ<`6!H('*N!"XRKT%)0V0`8$F@`1_!R>/ +MDT''%O2`YEOT:@S@!`K8@.!7\@HAP`_KP3:"O"`X`CTSW"``*`J((!@>0W8"R>`DP7R2@NO_PK8"/"`Y@;T&@JO +M_PK85@@``-RE"-Q/!^_\H\#@>/'`X@[O_`#:SW.``*06.X.Z@P#>#R8.$*1Y +M!"9`$$(@`(#*(&(`+R8'\`'=RB"!``?R'(,D>.8.[__%>*EP$0?/_.!X\<#A +MQ:'!`=A`P,]U@`"D%@J%42``@`SRBW`$V6?:/=O&"J`+%[L*A:"X"J7E!N_\ +MH<#@>/'`8@[/_!IP*'5(=VAV.&-FV3W:"@N@"Q>Z@>`)]`IPX@J@"ZEQZ7"R +M"J`+R7&9!L_\X'CQP"X.S_RFP2AU&G)@P`#8`1P",`'8`AP",`,<`C"+<'8) +MH`>!P8#E!?($P0IP8'T%P@/!@.$.]`HAP`_K/'`S@WO_`'9HL'/=8``I!8:A5N%!'H#>__ +M"G"Q!>_\HL#@>.!^X'@`V<]P@`"\+N!_.*#@?N!X\<#B"0`$SW`!`+A4@.`* +M\L]Q@`"D%K@9```;@9&X&Z'/<`$`)%2`X`CRSW&``*06'J$;@8&X&Z'/<``` +MW&.`X`GRSW&``*06E!D``!N!B+@;H<]P``#@8X#@"O+/<8``I!:8&0``&X&) +MN!NASW```.QC@.`)\L]Q@`"D%IP9```;@8JX&Z'/<`$`+%V`X`KRSW&``*06 +MV!D``!N!F;@;H='`X'[QP.'%H<'/__BB,(``C8 +M`-D>#N__*'(`V+T$[_RAP/'`-@SO_`C9SW*MWN^^+@L@`CIPL@\@`"IP@^!( +M\L]P@`#:$YJCW`>>' +MY[@'Q?\J<,]RK=[OOK8*(`(0V3X/(``J<(/@#O+/<:W>[[ZB"B`"*G`&#^__ +M*G"#X,H@(@#I`\_\\<"*"^_\`]JFP1IP_@E@#(/!`\'/<(``D`\4%`[[Y"P`3""G"`VSX* +M(`*8<]()(``*<(/@0/(#P\]P@`"P#T*%\"#!`,"E@.$,%1`0P:4(\L]W@`"X +M#_`GP!"`X`;TP*7!I0#9&?"$*@P#F@A@`"]P#B"!#P````$@I0/`A"@,(_`G +M`1"""&``+W`.(($/`````2&E!(6!X`WT`(41>(P@!XW"]\"E,7F,(0>-P_?! +MI0#8%0/O_*;`X'CQP*X*[_P$VJ;!(@E@#(MQSW```!O2`-VI<88,8`"I<@#! +MSW```!S2=@Q@`*ER`,'/<(``[`T!PA4@00``D0+!!;I*#6``17D#P(#@W``% +M`,]V@``@"-+8"+@9V4(,8```VL]P```BTD`F`1)R"F``!-K/<```(])`)@$3 +M8@I@``#:SW```"#2A,%6"F```-J%Q\]P```ATNEQ1@I@``#:`H87V;8.H`M` +M)@(2`X87V:H.H`M`)@(3!,`7V9X.H`N$P@7`%]F6#J`+Z7("A@#9>@\@`(NY +M`J8#A@#9;@\@`(NY`Z8$P`#9"+AB#R``B[D(=P7``-D(N%(/(`"+N2*&,7D9 +MX04I?@`CAB]R4'1GA!2E^`"]QS"!%@(;W`\`!Y1!U,@?._P/`$'7&]P'9 +MSW"``"`()*``V-T![_RFP/'`<@GO_`G:J<$(=MX/(`R+<38/[_PAP`AQ0M@N +M#&``!;D,%`0P`,')<`;""B6`#ZW>[[XV""`"`L.2#B``R7"#X"KR`,$%PL]P +M@``T#@#=\"!```3!"KH$(H(/#P``_,FY17GZ"F``J7)6"R`/!=@@%`0P`,') +M<`;""B6`#ZW>[[[J#^`!!\,Z#N__R7"#X,H@0@-)`>_\J<#@>/'`L@CO_`+: +MI\&:<$(/(`R#P<]P@`"P2P"`!]E%P,]P```1TIX*8```VL]P```2T@#9D@I@ +M``#:SW```!/2`-F""F```-K/<```%-(`V78*8```VL]P```!1`?99@I@``#: +MSW"@`+0/MWN^^0L>*<`3!`\(>VYAS2B4``$HF``#Z#N`!2B<``(H.[_^*<(/@W/+/ +M=8``(`@(%180#!43$`[80,!!QD+'BG`$P0/"'MN8*<`3!`\+AVYAS +M2B4``$HF``!6#N`!2B<``.8-[_^*<(/@BO(BA:.%+R#'!<]RH`"T#QRB!,+/ +MP"CP]M5?F"FSW:``*@/ +M57Y@IB+TM@V``PHAP`^`X.MR#_+/<*``_$1T$`0`9!`%`,]P``"Q$WT$[_V* +M(TD*SW```*T3BB.)"DHD``!E!._]"B4``8#@'?1R#8`#"B'`#X#@ZW(/\L]P +MH`#\1'00!`!D$`4`SW```+$3.03O_8HCB0S/<```KA.*(\D,WO$"((`E&6$" +M(8&$#_("(((D#'H2#"``+W`$P@(@`2#/<(``D`]5>""@`B7`)+E@`B%!A`_R +M`B5")`QZZ@L@`"]P!,(")0$@SW"``)@/57@@H`#870:O_*?`X'CQP/X-(``` +MV,]P```-T@#9#@A@``#:SW````S2`-D""&```-K/<```%=+/(/(```VL]P```"TJ#9FKG2#R```-H)V(RX`-G&#R```-H4 +MV(RX_]FZ#R```-H`V(RX_]FN#R```-H1V(RX_]FB#R```-H"V(ZX`-F6#R`` +M`-H!V(ZXSW$``/__A@\@``#:SW````O2`-EV#R```-K/<```#=(!V6H/(``` +MVL]P```2T@#96@\@``#:SW```!/2`-E.#R```-K/<```%-(`V3X/(```V@#8 +MT<#@?O'`1@V/_*/!BW$!W;(+(`RI83@S"!B@68/(``/V`#8\02O_*/`\<#AQ:'!BW'N"B`,`=K/=8``[($` +M%`0PSW"``)`-0"4!'Q+:Z@T@``#;`!0$,,]P@`",#:EQ`=K6#2```MO/<(`` +MM`TD;1S:W@T@``##`-BA!*_\H<#@>/'`"@RO_`/:H\&Z<)(*(`R+<0'!SW"` +M`#P.`-_T($X``L'/<(``5`Z`YO0@5`#/<(``(`C@H.&@S":BD,PF8I',)J*1 +MRB7"$P+T`-V!YLPFXI#,)N*1S"8BD@/T`=V$YLPF8I+,)J*2S";BD@+T`MV& +M#<__JG#/[[ZB"N`!R7%B#N__JG"#X';R`,"`X,P@HH%0](#FS"9BD,PF +M(I%*]`+`@.!(],]P@`"0#[5X6G#@H,]P@`"8#[5X>G#@H,]P@`"P#[5X&G#@ +MH,]P@`"X#[5X.G#@H,]P@`"@#[5XX*#/<(``J`^U>."@JG#)<<]SK=[OOBH* +MX`&I`RAJG"I<[[[>">`!BG-.#Z__JG"#X!+R +M`,#/<8``(`A`@02^!KC88!4@``7'<(``])(A@4*P([``V.4"K_RCP.!X\<"D +MP8MQ'@D@#`3:`,`!P02X-7C/<8``]`T0868-(``"P0#``<$$N#5XSW&``!0. +M$&%2#2```\$`V*3`T<#@?O'`H<'Z"R`"BW(`P*'`T<#@?N!XH<'AQ>'&N'#/ +M<(``R)L0$`8`SW"``$`N!8"8<8#@H<&&)/D`NC0&T?;IB%7K/<8``N)1(8=1^"'.&(_T/>WLZ8D&*97A(]UE +M%27-$;YAPHYE>LESAB/]#WM[N6$CB65^*'.&(_T/3"0`@'M[97D3\L]UJ@#@ +M!W.%42,`@`;R2*4)I2JERZ40\`BE2:7*I2NE"O`)ND5XSW*G`!1(`Z()N25^ +MQ*+/<8``C$4`&8`!SW"``)1%`!A``<]P@`"010`8``&AP,'&P<7@?Z'`\<`^ +M"8_\Z@B``X#@J`K!`@#>%_!PW`(E`!-$+CX7+W?>#N`,)W!")0`>U@[@#/A@ +M`-D`)H`?@`!"+""H`>;/=8``U"QK%8"0$':F]\]P@`#`0ZX.P`S/<8``V"H` +M@:&XKKA%`:_\`*'QP,]Q`((!`,]PH`"L+SR@SW"``%0X`("`X`STSW"``*08 +M`(""X`;R9@]``]'`X'ZR"T``:@B@!6_8@.`'].H*X`X*V)X+0`#R\?+QSW*` +M`%0X(((&>>!_(*+@>,]R@`!4.""")7C@?P"BX'@$*(`/```OND(IPG10>D0J +M_@("($`.$'B`X`3R`>)0>H/@0+$#]H#@`_0`V`+P@-C@?N!XM04/_O'`*@B/ +M_#IPSW6``%`=`(4!X('@`*4*]`'9SW"@`,@<,:!B"N`.*'":#B`%!]@:<,]V +MH`#L)^N&F@D@!RIP"Z8`A4(@0(``I0;TSW&@`,@<`-@1H6X+(`4*<#$`K_SI +M]L*)$`$X02O_0HE``3QP#8/3_P(=SIQ@.(:S?=(=?0G@!,5(8$C4@_O +M_PIR8;V`Y0'F-O=M!T_\X'CQP`H/3_RAP0AW@.(:<0#>S_=(=?0G@!,>""`` +MBW$`P!0@C"-AO8#E`+0!YC3W00=O_*'`\<#6#D_\H<$:<,]V@`!0'0"&`>"! +MX"AU`*8*]`'9SW"@`,@<,:`&">`.*'`^#2`%!]@(=QX(H`.SV(#@%?*+<:(+ +M;_T*<``4`#$`I0"&0B!`@`"F!O0`V<]PH`#('#&@"@H@!>EPU09O_*'`423` +M@/'`!?(J#\__`_#B"```T<#@?N!X42/`@/'`!?)"#\__`_#Z"```T<#@?N!X +M\S?=(=?0G@!/P(8$C5@_O_PIR8;V` +MY0'F-O>Q!4_\X'CQP$X-3_P(=X#B&G$`WLWW2'7T)X`3&@@@`/0@@2-AO8#E +M`>8W]XT%3_S@>/'`'@U/_!IPSW:``%`=`(8!X('@*'4`I@GT`=G/<*``R!PQ +MH%(/H`XH<(X+(`4'V#IP;@Y@`Y/8@.`9\K!]0"B/(8&_$+VE?\]PH`#L)^:@ +M`(9"($"``-D`I@;TSW"@`,@<,:!2""`%*G`5!4_\X'C/<8``^!XC@<]R@`#4 +M!S(A@P\``!\#`:(R(8$/```9`V&R2'`@L@C9<]H>V]4`(`L8N^!X\<#/<(`` +M^!X#@`F`42!`@.!^X'CQP%H,3_P( +M=2AV((5"(0&`RB%B`(#A`-@%\OX)X`RI<`'8)(6`YM`A8@#/(2(`T"$A`,\A +M80"`X"2E-`GB#,H@0@.%!$_\X'CQP!(,;_R*(@0.SW"``)`&`(#/=H``T(HF +M@$`F`!2:">`+!.$!AL]U@`#X'B*&R!T8$,]R@``D(LD=6!`AEB>J((X$((`/ +M``8``(#@`=C`>"&J!JH`WC((H`G)<,]P@`!5'?X/[_[`J&8-0`.`X`KRZ@U` +M`X#@!O1B#B_^R7`7\`+8X@J@`0'9-@F@#@+8(X5(@3214R(``&X*X`D!VP#9 +MGKG/<(``^"4@H-4#3_S@>/'`L.#AQ0AU@_:YY/'`+@MO_)AP08'DNK")._)RB<]V@``0O_)M +M]G_F9C3*]KX($84`22#```CRSW:``%#!MG[!C@/P`-['<(``4,&V>`2("",# +M``@C@P,`(T`!22##`Q9M=7C/I(6XA0&` +MI7@$((`/````"`9[`O!C@>B[F!G```#="?*D$0```-V7O9&XE+BD&0``420` +M@!SRSW"``/@>Q(#`NLB&!":.'P!````^OA[FV'I%>_Z[F!G```WRI!$``(4E +M`12,N)&XI!D``)P90`,=\/^[$O*D$0(`A24!%):]F+V-NI&ZI!F``)P90`,D +M@!"!GK@0H0OPE+V6O9P90`,D@!"!GKB?N!"A@0)/_.!X\<`."F_\`]C/=H`` +MN"H@AD!Y@.!M\B"&8'D$V(#@:?(@AF!Y`-AGN(O@"O0!Y`-A"\,]P@`#`*B"`8'D!V(#@`=C`>#CPSW6``,`J((5@>0'8@>`1\B"% +M8'D!V(/@"_(@A6!Y`=B"X`?R((5@>0'8@>#>]0'8'O#/<(``P"H@@&!Y`=B% +MX`'8P'@4\,]P@`#`*B"`8'D!V('@`=C`>`KPSW"``,`J((!@>0'8@^`!V,!X +M@>`7\B"&ZW5@>0#8&G#/<(``P"H@@&!Y`=BX<#?8"B'`#ZERE-O)!F_]"B0` +M!(4!3_S@>,]P@``,D2`0@`"!X,]Q@`#$!@OT`-K/<*``M`]!^SW"```R1(!"``('@SW&``,0&!?0"V`2A`_`!V`6AX'[QP,]Q@``8 +M"`"!@>`.\@HAP`_K#/<8``Q`8%]`38!*$#\`'8 +M!:'@?O'`SW"``$P3"H"`X`_RSW*?`+C_':+/<8``.!T$@0'@L[BUN+BX!*$6 +MHL]P@``4"``0!`#/<8``&`@`$04`3"0`@,%V!?RPN//:+/$O>83A-*@#$@(VC/;/<`,`A`"@&@``BB`(``8:&#`+\(H@$``&&A@PSW`" +M`80`H!H``.!^SW.@`+`?`=I9H\]S@`!8'6B#@.!@@P7R(GMP<(/W`-@"\$AP +MX'[@>,]RH``L('""@.`*\@(C0@#7<@"````&]U!PAO<`V`7P<'!^]P'8X'[Q +MP%8.+_R8<*7!*'>X!".`#_\````8N@5Z;WD(N?_8"+AD>"BX!7E%>0C= +M]"2``R=X1,`V"N`,$!0`,1(4`C%AO4`H`00%>4=Y1,$0%`(Q%"2`,X#E0+`! +MYBGW4R7"!4"G`!0-`0?9!_`0?10G3!``M&&Y%"1`,+M[3[T`D*5[@>%P>WA@ +M,O<$((`/````_Q"X!7I`IR4&+_REP.!X\<`V"```]@@```H)``#1P.!^X'C/ +M<8``="5`(0`#52'"!5!P1O<`V0084`!0<+WWX'[@>/'`.@R@!@#8<@\O_0#8 +MSW"``&!$2@A/_<]P@`!`1$((3_WJ#(_^$@V`"`#8I@L@`X#92@F`#)8-@`** +M"\`,!@C``8X(``,`V.(*[_X(<<]P@`"$%@"(42"`@`CRSW&@`,`=`(&@N`"A +M&@L`"^((``.J"J`!_]@^#T`!BB"%#PAQM@J@!0ART<#@?N!X\<#Z#"_\BB#_ +M#\]UH``X+L>%!Z7/<*``5"X+@-.X!B8`<`\`__^""N`-%MG&#\`!QZ4U!0_\ +MX'CQP'8+H`8!V*X.+_T!V&(.@`[1P.!^X'CQP.'%`-W/<(``7`>@H,]P@`#H +M@JRP,@K@#*EP2@T/_=X/X`NI<)(*``3B"L_]J@Y``8H@!@H(<2(*H`4(<@H. +M;_RI<.(-3_S5!`_\`-G/<*``["``I0GT`=G/<*``R!PQ +MH"X.8`XH<`"%0B!`@`"E!_0`V<]PH`#('#&@G@D``3D$+_RDP/'`H<&+<+X* +MX`T!V88)``&AP-'`X'[@>/'`H<&+<&H*X`T$V0#`42!`@-@/H@;*(*(``,!1 +M(("`8`K""P#`42#`@+@)`@<`P%$@`(&<#L(&,@_@#`'8SW&`KN`!['`@H`'( +M['$`H<]R@``4@(HD@7T`V:@@``+P(D,`['!@H`'A5@D@`0#8H<#1P.!^\<#A +MQ:/!`=A`P,]U@`"D%JEPZ@G@#5S9]@G/_CJ%&X4D>#R%!'F!P$H*+_]!P0'! +M&X4D>$'`525`'\X*+_^I<<]P@``<&,(*+_]`)0$;BW"N#^``!-D6"R__`<`` +MA8#@!?0%A8#@,`P!_UX)S_XY`R_\H\#QP.'%SW"``-!(`("BP4'`@<`!W:X) +MX`VI<4#%BW!N#^``!-D-`R_\HL#@>/'`H<&+<)()X`T!V0#`42#`@2\D!P`` +M'``Q#/('$@4V"B'`#^MRBB#%``$`;_TGVW(-H`%`V#((``$.#D`'H<#1P.!^ +M\$''`?JEP.@G@#0/9!@@``8#F`_("A0+P`(6- +M`B_\`Z7@>.!^X'CQP.'%SW6``"@=J7#2".`-$-D`%0003"1`@!'R3"3`@!_R +M3"0`@1/R"B'`#^MRC]B-N)C;>0)]>!!R^?=1 +M(P"`"?(`%@!!`_``V!4AC```I`'BA>*Z]P/,UW````!``=C"(`H`%[C'<``. +M``"#N)VXG[CL<@"B`1("-NQP0*#"#N```HFAP-'`X'[@>/'`X<7/=8``-`BI +M<"8/H`T(V0"%SW&@`+@>`J$!A0.A'@[``+D`#_P5!L``\<"DP8MP`@^@#1#9 +M`\S7<````$`!V,(@"@`7N,=P``X``(.XG;B?N.QQ`*$!$@$V['`@H`#`42`` +M@`/`!O0"P28-(`$`V@7P^@Y@`@'!"@[``*3`T<#@?@D````%````\<"R#<`` +M406`"^!X\<#AQ;3!BW6I<,X.H`T4V0#`AN#,(.*!!O1F"&`#J7`(<23P@N`' +M]`8)8`.I<`AQ'/"!X`;TA@I@`ZEP"'$6\(/@S"`B@@?TH@\@`ZEP"'$,\(3@ +M!O2B"&`#J7`(<0;PB>`>](HA1``#S-=P````0`'8PB`*`!>XQW``#@``@[B= +MN)^X['(`H@$2`C;L<$"@6@W@`"APL0?O^[3`"B'`#^MR?-B-N'?;B[M*)``` +MO00O_0HE``'@>/'`X<6BP8MUJ7`6#J`-`ME""F`#J7#:#,``=0?O^Z+`\<#R +M#L_[`!800*'!3""`H,HAQ@_*(L8'RB"&#P``CPS*(X8/``",!.'X``1(YF#&`,!&[/<(``*)`: +M@!)P$/(D%H`0@.`C\JEP!-F9VA[;T@J@"AB[`-@D'@(0&?#'=X``.(X+AX&X +M"Z?/<(``Q`8O@(#A`=H$\D2@!-@'\`#9+*!)H"2@!=CF"8`#J0;O^Z'`\<#A +MQ<]P@`#X)0"`!""^CP#````(],]P@``@C`"(C"##CP7R]@NO_0'8SW6``-"* +MJ7`:#:`-4MFR#(`'W@O@`*.%C@P@`:EP"''/<(``L$`F#$`,_MG/<(``((Q= +M!N_[(*C@>/'`SW"``,"0W@R@#0W9J@O``&(.0`;1P.!^X'CQP*X-[_L"V:+! +MP@R@#8MP`Q22,$PB@*"/]@04A3`*(<`/ZW+/<```A`R*(X4),0,O_0HD@`0" +M%(`PSW:``,0&A"H(*2]W(!X"$,]P@`!@A3/=8``2(Q` +M)1$2_66+<*EQI@M@"P+:0"4`$NH+H`U")($A`">`'X``2(P($`4`SW"``'C' +M!8!3)4$%$''*(<8/RB+&!\H@A@\``(4,RB.&#P``A`&``B;]RB2&!'8,H`=* +M<$HD@'``V:@@@`2$*0@)+W`R(`(@@.()\@@5!1`P(00@#"1`@17R`>%`)@`8 +M>@G@``39`=D,&T(@AQ4`%H"XAQT8$`8/8`,H<,T$[_NBP`HAP`_K.!^X'C@?N!XX'[@ +M>.!^X'C@?N!X\<`6#._[!-FCP0#>0L;&"Z`-BW`#S-=P````0`'8PB`*`!>X +M`""!#P`.```&%``Q&W@3X`0@@`\``/S_)7B=N)^X['$`H0$2`3;L<""@`,'L +M<""@!!0!,>QP(+`&%`$Q['`@L`84!#%1)`"`#/(!$@4V"B'`#^MRSW```$\F +M.0$O_6G;&@[@`P'8`L$`Q25X0L#/<*``+"!`$!``P+T!Y0+P`>8&%``Q$':` +M``H`@N4$%``Q@L<6]!MX$'CI`'@$'C:#N`# +MJ7+L<0"I"/#I<8/@`#1 +MP.!^X'CQP*7!BW`&":`-!=D`P%$@`(`5\L]P@`#X'@.`&(B!X`WT`-B:N,]Q +MH`#('P^A`<"D&0``P]@:N`ZAH@^``*7`T<#@?OD`8`8`V.!X\<#/<(``(#AZ +M"*`-*-F"#X``T<#@?N!X\<#AQ0`6`$""X,]U@`"D&`"E'_0`V<]PGP"X_SV@ +M'-D5\,]PH`#(.S:`1"$"!S:`AB'_""5Z-H"&(?\(17G/` +MX>OU*@^``""%A.%>``T`,R9!<(``9$A`)X!R-'@`>#@0!`!8$`4`"B'`#^MR +MSW```)DAO0;O_"_;-@]@`U3842!`@!/RSW&``%0X`(&!N!(.X`T`H0GP1@UO +M_@'85@J``P/PZ@^`!&4!S_O@>/'`+@W`"+H.@`#1P.!^X'CQP$8+8`D`V,]P +M@`#X'L@0`0;`N8'A`=G`>1(*X`T\$(``T<#@?N!X\<#AQ<]U@`#X'@"%Q!`` +M!E$@0($-\@HAP`_K#F`,`=C/<(`` +M0"((B(?@'O0!A<00``91($"!&/(&"T_]SW&``'C'!)`E@0JX,'`.\@HAP`_K +M/'` +MV@M@"0#8/@W/_,]Q@`#DFP*)6@G@#2")T<#@?N!X\<"BP8MPP@Y@#0C9`,"` +MX,]Q@`"@.`"A!_(&%``Q`[$$%``Q`K&N#8``HL#1P.!^\<#"#Z_[@=BAP6#` +M`\P`W\]V@``4"`(`#H0'8`O`"V!IP`,!Z""_\"G'/=8``K#@#$@$W7I6!V&"& +MX@_@#0HD``3/<*``+"`0@$`=0!1,(("@$:5('0`43?(`AHC@$_3/<(``;$/Z +M#``,6@IO_A38:@K@!`38X*;/<(``&`C@H`#8A>`#\@#8"/#/<(``&`@`@(3@ +M^?4!V"\F!_`.\LX+H`,4V(#@"O3/<(``4$,F@".!(($>#0`,`(:`X`/R`-@( +M\,]P@``8"`"`@.#Y]0'8+R8'\`7T.@C``H#@"_+/<(``X`<`@"\H`0#6#6_] +M3B#`!P4'K_NAP/'`G@ZO^X#8H<$#$@$W8,#/$ +M*!\`,B9%'@`F0!Y,)0"``*$-\@HAP`_K">;V\$"[_R*)(,/SW&` +M``2MP@H@"ZAR`(^$*!\`-"%!+L]P@`#AJR`!8`00'A&[)@CX0K'P``(8!_@`!,K4.(4'&,!^7_+W4`)8$?@`#(LP`E +M@A^``$BT6@Q`!WH(;_X4V((/H`0$V$"/`*)(,/'0'O_$HE``#@>/'`X<4@V\]QH`#('&FA`!8`0,]RH``0%`RB`!8% +M0`'=3"4`@,HAP0_*(L$'RB"!#P``+"7*(X$/```)`=0`X?S*)$$#&!I``6@9 +M0`$#V`^BN:%JH?H(@`"5`X_[\<#AQ:W!BW6I/'`V@JO^PS9 +MK,':"6`-BW``%``Q@.`P],]U@`"X*B"%SW:``(0O8'D`V(S@0"2/,!#R((5@ +M>0#8D.`,\B"%8'D`V)'@!O(@A6!Y`-B2X`;TZ7#)<1C:!?#I<,EQ+MHF"``+ +M`=A@'@(0%X:`X`P,X?O*("$``!0`,8'@$_1`)(`PSW6``(0O0"6!&_H/X`HN +MV@'8-X5A'0(0@>'@"\'[%@B``*$"K_NLP/'`)@JO^Q?9M\$R"6`-BW`CP$HB +M0"!3(-``AB#^`TP@`*1"*!$!#!P"-(_V"B'`#^MRO +M_`HE``1(%`4P(,!`*(X@SW6``!"_UGY1(`"`P&5!+4\#P+^^9H8@]P]>](#@ +M#?0*(<`/ZW)SV(VXBB//!%$'K_P*)``$BB!/!0IQ6@_@!*AR`<`"P0IR!@VO +M^V9N@.`]\NEP4@Z@#0IQ#12`,(4@P0`-'`(PBB#_#U/``(:IN`"F$L"&(/L/ +M*+@/KDHD`'0`V:@@``/_VKAA0"B#('9[$N!X8$"H`>$*<$X-H`V+<<]P@`#X +M'O`@P0/`$0`&#R``!,`9&``/CH'@!_2`Y\P@HJ/`"`(.`=\"\`+?<@A@`@IP +M!_"`X,HG@13*)R(2@>=0`@(`((;/<(``^!X#@!B(*'6!X(8E^Q\1\FX+@`*` +MX""&&O+/<(``0"((B(?@%/1!*4`#42``@`[R$\#HN!+""O*&(OL/02H$`D^. +MD'($\JBX4\`3P!+"!GE$>"5X@.4`IH8@^P\+\H#@RB`!!,HA(0`\"J$#RB+A +M`PX>0A0`V,]Q@`!0PA8A`01`A@"A];H!H07T`-B+N`&A]KH%\@&!12``!@&A +M]@KO_(MP#12`,%$@0($A\E@4`#$%MEH4`#$&M@66@.`9\OH*@`*`X!#R!I91 +M($"`"?(J#:_\"G!:"``.!=@2K@#8!;8'\`IP`-F^":`##]H-%(`P42!`@'[R +M4!0%,0*6'MHO(4H!,'DD>"\I`0`"(D``$'A`*`$A)7C/<:``P"^B$0&&$'@0 +M\"\M01`"(D,#`-T/)`A4!X`"NHZZAIJ*FI*:EIKBNN:X!P+JN +M`L$'I@/`**8)IH'`/@T@#0'9`<`'IGIUB_""P"X-(`T"V0&.`\$!W^.N`>`! +MK@+`*:8(IFH.K_N+<@0@``4O)`>@`MDCK@*N`,$AIF_R$FD6>,]R@``0OP!B +M2B$`(`\A42`MN%,@$`"*(%0%B@O@!`IRSW&``%P'0($O(DHD^*X0'D`4!"*` +MH!0>`!0`H0/9(ZY"I@.F!_2`X@7RX@B@!"#8^:X%V`.N(,!Z#N``$-D`P#)H +M-GD`(8(/@``0OXHA"`"BLB"B!MDCK@#9(@]@`P_:`,*`V1)J%GC'<(``$+\H +MJ"FH!]@#KL]P@`#X'O`@``3/\`0`08$(8$$P!A8``#9(*//<(`` +M<+XAHU1XE@W@#:"P@.`'\AH-P`T(V`.N^JY`(U,@(/'`BB!5"P#9>@K@!"AR0@_`"I8*0`#1P.!^X'CQP.'%`!8- +M0`/,`=K7<````$`!R,(BB@`7NL=R``X``$8((`M3)0$0425`D,]Q@`#(.@'8 +MRB`A`/$$;_L`H>!X\<"AP8MP=@L@#0'9`!0%,$PE`(`+]`HAP`_K/'`Z@H`!\]P@`#X'BP0A`!,)`"!"?3) +M$``&42!`@07R@@W``1#P3"1`@`SRSW"``$`B"!"%`$PEP(',)6*"!O3*#H_[ +MT<#@?@HAP`_K8+]P0DA"\````D#"2` +MCP```"0L\H+@5``-`(+@!O2`XB;R@N8D](#B!?+,X4``"0#/<(``P"H@@&!Y +M!M@0=A;WSW"``/@>\"#`!,,0``8!V00@OH\`!@``!"2`+P````C"(4$`*[@0 +M<43W`-@#\`'8#W@#\`'?Z7`$)($O`0``P"ZYSW*``#1:*6(P=P'9PB%-`(#@ +MS"$B@!CR0B%`((#@(`?M_P'E`A"`(,]Q@`#030AA@>`<\@HAP`_K\"#`!.MRBB-8#\,0!`9XV(VX50=O_`HE``4#$(`@ +M"&&"X`GR"B'`#^MR>MB-N(HCF0(2\>X/8`U*<,]P@`#PO18@@`0@D,]R```8 +M%0DA@0!6#R``(+"M`6_[HL#@>/'``!:!0,]P@`!<12"H`!:$0``6@4#/<(`` +M944@J``6@$!0)+Z!RB'"#\HBP@?*(((/``#:%,HC@@\``($'S`9B_,HE(@#/ +M<(``O`8`D(#@!?(:"4`--@A`#>X.``#1P.!^X'C1`^`,`-C@>/'`!@EO^P#9 +M2B0`ET@K@#3_8 +M`,`$%`$Q!Z7N#>`,@KD<'0`4#@X@``$:F#.-`&_[HL#QP`#8:@T@``02@3`$ +M$H4P"B'`#^MR.-B*(P\!I05O_$HD``#QP.'%SW6``-@JJ7"`(``X,/VCN#)]@HAP`_K2FMSW>``&0K52;`&$0I/@LG<,8-X`P+V6F-`V]$ +M*SX+,B!`#HK@RB')#\H@B0\``-$;RB.)#P``:@&J`"D`RB+)!X+@RB'+#\H@ +MBP\``-(;RB.+#P``;`&*`"L`RB++!X'@`=G3]D(@1``*)`!Q*'"H($`#1"L^ +M"P`G01X5>4:)(HDP`/>,H(0`*`X!WRSW"``$`B"(B)X`?RB.`5]`"& +M42``@A'TU@C/_(+@!?+.",_\@>`)],]P@``41`:``X``@%(/3_W>"P``:08/ +M^PHAP`_K!D%H`4!V.!X10#@"`'8 +MX'CQP/8(8`+AQ8#@SW6``-@J#O0$%000"B'`#^MRSW```+X;BB,&!$4#;_RX +M`(#$$``&42!`@1OR[!4`$<]Q@`!XQR6!"K@P +M<,HAP@_*(L('RB""#P``Q!O*(X(/``">`,$'H`P!V.!XN0&@ +M#0'8X'CQP*'!`-E`P0`6`D``%@!`@>(:\@/,UW````!``=C"(`H`%[C'<``. +M``!%(``#G;B?N.QR`*(!$@(V['!`H.QP(*`?\%(((`:+<`/,`=G7<````$`! +MV,(@"@`7N,=P``X``(2XG;B?N.QR`*(!$@(V['!`H.QP(*``PNQP0*"*"B`` +M*'"AP-'`X'[@>/'`7@PO^P+9SW>``'1%"@S@#.EP0(?/=J``["?/=8``P"K@ +MNDOR*X9$(H``AB+_#B*ZH;D4NK2Y!2"#`&5Y*Z8$((`/$``"``0B@@\0``(` +MSW&``.0%17@+H2"%!-Y@>H8X.P`4@A6!Y`=B%X#7T`(=1(,"` +M,?+/<*``1!W%H,.@Q*`I\,]PH`#('`'9/J`+AH&X"Z9J#P`&((5@>0'8A>`3 +M],]P@`#X'@.`"(!1(`"`"_(`V92YSW"``.0%*Z`+AI2X"/#/<(``Y`4`V2N@ +M"X:TN`NF+@D``+D##_O@>/'`SW"``'04^@K@#`+9%@D``-'`X'[@>/'`-@LO +M^P#:"'4H=L]PH`#4"SB`0B$!"(#ARB&,`$`F`!(0<6`/10T#S-=P````0`'8 +MPB`*`!>X`""!#P`.```';@0@@`\``/S_)7B=N)^X['$`H0$2`3;L<""@(KX& +M\.QQ`*$$Y6&^@>8`A3KWX@@``#$##_O@>/'`X<7/`/,UW````!``=C" +M(`H`%[C'<``.``!/(($`G;F?N>QP(*#/<*``%`0#V26@`1("-L]PH`#4"TV@ +MSW"@`$0=-:#@?N!X`]K/<:``%`1%H<]QH`#4"PVASW"@`$0=5:#@?@/:SW&@ +M`!0$1:'/<:``U`L-H>!^`]K/<:``%`1%H<]QH`#\"PRISW"@`$0=5:#@?N!^ +MX'C@?N!XX'[@>.!^X'C@?N!XX'[@>.!^X'C/"2_[N''/<(``*)!H$`0`2B``($PD@(#*(L8'RB"&#P`` +MD0S*(X8/``"W!]`&)OS*(<8/SW"``,0&!X"$+`@)`"&!?X``2(Q,)0"`%GG' +M@3[TSW"``/PEB@ZO_(HA#P_/<(``D"5Z#J_\(-G/<*4`"`R@@%,E39`3\H'E +M$_*"Y13R"B'`#^MRSW```)(,BB.?!YAU:08O_`HE``3_V`;P_]@(N`3P_]@0 +MN,]Q@`#D!0RAK:'.H0#9D;G/<*``T!LQH)X.X`L!V!_PSW.``.0%#H.`X!OT +MSW&``"Q/SW*``/PESW6``'0EBB3#?PIPJ"#``@]A%27#$^>#\"(.``'@_F;' +MH[T`#_LX$P0`"B'`#^MRSW```),,BB,?#.$%+_P*)0`$X'CAQ>'&SW"@`!0$ +M`]DCH`W(SW*``!"K89+/<8```*K$BA0A#0!HM0`@@P^``""J..'`JV*"%7D& +MDF"A`Q(#-L`=!!`$@J`3`0"&(<,/)7B@&P``P<;@?\'%\<#F#\_Z"'9>"B`" +M*'6`X-$E8I,!V`/T`-@$N,]U@`"8QQ1X"66!X1UE"O2*"N`+J7`"#J_]`8T` +MV`"M`845`"_[`*;QP*(.@`AR"R`+`-C/<(``0"(($(0`3"3`@1/R3"0`@A7R +M3"1`@AKR"B'`#^MRSW```,H;N]L%!2_\2B4``((,C_Q6#T`-T<#@?L]P@`#8 +M*@"`42``@@7TO@@/_/7Q_@F/_)X,C_P+R*ZXK[@+&A@P"\B'N`L:&#!N"P_[ +MY?'@>/'`(@_/^L]Q@`!`(@R1SW6``/@>WI4.)@Z0SW"``+@L#I#*)F(0#+$! +MV$H.(```V68+(`@!V)H)C_R!X!CT`(7$$``&42!`@0/R@.80\@'8"'$>#R_] +M"'(+R)"X"QH8,`O(!2"`#P```-0)\`O(KKBON`L:&#`+R(>X"QH8,.H*#_L- +M!\_ZX'CQP((.S_H-$@$VSW>@`+PMSW"``/@>+J<$@`#=1A`1`58@4@16(),$ +M#1(0-U8@%`5&(,`@`Q("-@T:'#"D$@``A+BD&@```9*BP8#@AAI$`PCRSW"` +M``"K]"!``(#@"?(!@NZX!?10(``@+R`((%,@?J!*`P$`SW:``,@Z:18`%@'@ +M!!(#-FD>&!"D&T`#`9*`X$KRSW"```"J-'B`$`$'@.%"]-`0`0%3(<&`%/1R +M$@$!X)(B?[@2@0`B?_!_X!C$`Z02`0"&(?./!O)HO_!_X!C$`W`2#P'@$``! +M(9+B>/%PPB<.$,(AS@-T$@`!.&"X$H$`=!M$`Z"S.&`0>)`;!`"^&P0`$(H0 +MJP&"`:,(B@BK$HH`VA*KEKHR\!8-(`**(`4!#X?WN/KS3X?VNE,BP`(F\H[@ +M2?>G%@`6MKH!X*<>&!`<\&2X!!(!-A!XD!D$``0B@`\```#P++AT&40#H+$0 +MJ:&Q`\B^&40#88"HJ88C_PV$NV&A$H@2J?:Z/@(!``#8EKCUN@02`3:D&0`` +M$O+:":_^`-@$$@$VI!$```0@@@\"````+;H%(@($+R"(($#P`8%1(`"!4O(T +MRE")22#$`/)JSW"``!"_]G_@8/:X,]S@`#0P@!CSW.``%#"5GM!@\]S@`#X +M'F2#>(-E>@0B@@\````(1GB8&0```-B6N/2X08&&(O\-'_*`XE+RF!&"`$`B +M`"E(8,]S@`!0DD#`(,+#NEQZ]"."`%;P"B'`#^MR--B,N%_;!;N*)(,/Q0$O +M_$HE``"8$0,`Z;N<&4`#(_*`XH"XI!D``"SRF!&``,]R@`#X'D."AB#_`T2X +M,B0`((FX0,`@PU2"9'J&(_\#AB+_#D2[>F)/>L]S@`!,3O0C@@`@\%$C`((* +M\H#B"O*8$8(`0"(`*4A@#?"`X@7T`-I(.!X]#W`KK/<8``$+]6>D%A\;D(\K@6`!8!X+@>&!`-\(!P$'B&'000 +M:A8`%@T:'#0!X&H>&!`=`^_ZHL"AP?'`R@K/^@AU1L#HO2APT``A`$AV`[A` +M()`%1"4"%B.Z!"6/'P8````!XD$O0!0$)8$?P````%A@-KG/`%\E,@`0`X8.V]`BF!(P_RSW*``!A20)(%*CX``"&` +M?P``_S\NN%T`(``985D`(``5>5$E0))4`"$`)L6WY2``"P`S:%,E`A#/<(`` +ME$[P((``!2D^``H@P`X!X`?PBN7`*.$`P"BB`,]Q@`#X'B.!P-HT@:1YAB'_ +M#B*Y.GK:>AEB,'@(W/L!S_HS:%,EP!`<>,]R@`!<4O`B```6X04I/@`*(,`. +M`>`4V8,'[__:>>!XSW&``%@=)(%!*((%U;@@@4$I@P75N0)YSW"``'C'8GH% *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 01:04:08 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 90CBA79D; Sun, 11 Aug 2013 01:04:08 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 647EB290B; Sun, 11 Aug 2013 01:04:08 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B148Pj070898; Sun, 11 Aug 2013 01:04:08 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B148Ei070897; Sun, 11 Aug 2013 01:04:08 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308110104.r7B148Ei070897@svn.freebsd.org> From: Adrian Chadd Date: Sun, 11 Aug 2013 01:04:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254200 - head/sys/contrib/dev/iwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 01:04:08 -0000 Author: adrian Date: Sun Aug 11 01:04:07 2013 New Revision: 254200 URL: http://svnweb.freebsd.org/changeset/base/254200 Log: Remove a now-unused firmware. Deleted: head/sys/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.3.fw.uu From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 01:09:17 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 20E01A4F; Sun, 11 Aug 2013 01:09:17 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0CB692940; Sun, 11 Aug 2013 01:09:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B19HF5071993; Sun, 11 Aug 2013 01:09:17 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B19GoC071991; Sun, 11 Aug 2013 01:09:16 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308110109.r7B19GoC071991@svn.freebsd.org> From: Adrian Chadd Date: Sun, 11 Aug 2013 01:09:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254202 - in head/sys: contrib/dev/iwn modules/iwnfw modules/iwnfw/iwn2030 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 01:09:17 -0000 Author: adrian Date: Sun Aug 11 01:09:16 2013 New Revision: 254202 URL: http://svnweb.freebsd.org/changeset/base/254202 Log: Add firmware for the Intel 2030 and variants. Submitted by: Cedric GROSS Obtained from: Linux, Intel Added: head/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu (contents, props changed) head/sys/modules/iwnfw/iwn2030/ head/sys/modules/iwnfw/iwn2030/Makefile (contents, props changed) Modified: head/sys/modules/iwnfw/Makefile Added: head/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu Sun Aug 11 01:09:16 2013 (r254202) @@ -0,0 +1,24904 @@ +Copyright (c) 2006-2012, Intel Corporation. +All rights reserved. + +Redistribution. Redistribution and use in binary form, without +modification, are permitted provided that the following conditions are +met: + +* Redistributions must reproduce the above copyright notice and the + following disclaimer in the documentation and/or other materials + provided with the distribution. +* Neither the name of Intel Corporation nor the names of its suppliers + may be used to endorse or promote products derived from this software + without specific prior written permission. +* No reverse engineering, decompilation, or disassembly of this software + is permitted. + +Limited patent license. Intel Corporation grants a world-wide, +royalty-free, non-exclusive license under patents it now or hereafter +owns or controls to make, have made, use, import, offer to sell and +sell ("Utilize") this software, but solely to the extent that any +such patent is necessary to Utilize the software alone, or in +combination with an operating system licensed under an approved Open +Source license as listed by the Open Source Initiative at +http://opensource.org/licenses. The patent license shall not apply to +any other combinations which include this software. No hardware per +se is licensed hereunder. + +DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 +COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +begin-base64 644 iwlwifi-2030-18.168.6.1.fw +AAAAAElXTAoyMDMwIGZ3IHYxOC4xNjguNi4xIGJ1aWxkIDAKAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQaoEgAAAAABAAAAAAAAAAEAAABErAIAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwEANB1pIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBC +JBw0CiKAP4AAIIcKIwA3ng8ACEomAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAIwvQHggIECH +AAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzI +s/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTd +K/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATcFN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c +8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAgFBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHG +sCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiAD +AeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEEG4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA +4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQRBQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8E +GwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3GgAKwvGIGauBihcQDgFAXY4HjPcaAArC8YgbO4 +urgYoV0A4BRk2AoiQIAA2e4AAQAvJgDwSiZAAE4ABgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAv +JgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAIm +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 01:57:55 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 170C2228; Sun, 11 Aug 2013 01:57:55 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 01E6C2A9E; Sun, 11 Aug 2013 01:57:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B1vsos091209; Sun, 11 Aug 2013 01:57:54 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B1vsXY091207; Sun, 11 Aug 2013 01:57:54 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308110157.r7B1vsXY091207@svn.freebsd.org> From: Adrian Chadd Date: Sun, 11 Aug 2013 01:57:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254204 - head/sys/dev/iwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 01:57:55 -0000 Author: adrian Date: Sun Aug 11 01:57:54 2013 New Revision: 254204 URL: http://svnweb.freebsd.org/changeset/base/254204 Log: Prepare for the PAN (personal area network) support for iwn(4). * Break out the single, static RX context into a pointer, and .. * .. extend it to two RX contexts - a default and a PAN context. Whilst here, add a few extra fields in preparation for further iwn(4) work. Tested: * Intel 4965, STA mode - same level of stability * Intel 5100, STA mode - no change Submitted by: Cedric Gross Modified: head/sys/dev/iwn/if_iwn.c head/sys/dev/iwn/if_iwnvar.h Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Sun Aug 11 01:14:46 2013 (r254203) +++ head/sys/dev/iwn/if_iwn.c Sun Aug 11 01:57:54 2013 (r254204) @@ -1,4 +1,6 @@ /*- + * Copyright (c) 2013 Cedric GROSS + * Copyright (c) 2011 Intel Corporation * Copyright (c) 2007-2009 * Damien Bergamini * Copyright (c) 2008 @@ -521,6 +523,7 @@ iwn_attach(device_t dev) /* Read hardware revision and attach. */ sc->hw_type = (IWN_READ(sc, IWN_HW_REV) >> IWN_HW_REV_TYPE_SHIFT) & IWN_HW_REV_TYPE_MASK; + sc->subdevice_id = pci_get_subdevice(dev); if (sc->hw_type == IWN_HW_REV_TYPE_4965) error = iwn4965_attach(sc, pci_get_device(dev)); else @@ -908,19 +911,27 @@ iwn_vap_create(struct ieee80211com *ic, { struct iwn_vap *ivp; struct ieee80211vap *vap; + uint8_t mac1[IEEE80211_ADDR_LEN]; + struct iwn_softc *sc = ic->ic_ifp->if_softc; if (!TAILQ_EMPTY(&ic->ic_vaps)) /* only one at a time */ return NULL; + + IEEE80211_ADDR_COPY(mac1, mac); + ivp = (struct iwn_vap *) malloc(sizeof(struct iwn_vap), M_80211_VAP, M_NOWAIT | M_ZERO); if (ivp == NULL) return NULL; vap = &ivp->iv_vap; - ieee80211_vap_setup(ic, vap, name, unit, opmode, flags, bssid, mac); + ieee80211_vap_setup(ic, vap, name, unit, opmode, flags, bssid, mac1); + ivp->ctx = IWN_RXON_BSS_CTX; + IEEE80211_ADDR_COPY(ivp->macaddr, mac1); vap->iv_bmissthreshold = 10; /* override default */ /* Override with driver methods. */ ivp->iv_newstate = vap->iv_newstate; vap->iv_newstate = iwn_newstate; + sc->ivap[IWN_RXON_BSS_CTX] = vap; ieee80211_ratectl_init(vap); /* Complete setup. */ @@ -2339,6 +2350,8 @@ iwn_newstate(struct ieee80211vap *vap, e IWN_LOCK(sc); callout_stop(&sc->calib_to); + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; + switch (nstate) { case IEEE80211_S_ASSOC: if (vap->iv_state != IEEE80211_S_RUN) @@ -2352,8 +2365,8 @@ iwn_newstate(struct ieee80211vap *vap, e * !AUTH -> AUTH transition requires state reset to handle * reassociations correctly. */ - sc->rxon.associd = 0; - sc->rxon.filter &= ~htole32(IWN_FILTER_BSS); + sc->rxon->associd = 0; + sc->rxon->filter &= ~htole32(IWN_FILTER_BSS); sc->calib.state = IWN_CALIB_STATE_INIT; if ((error = iwn_auth(sc, vap)) != 0) { @@ -4367,6 +4380,8 @@ iwn_add_broadcast_node(struct iwn_softc DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; + memset(&node, 0, sizeof node); IEEE80211_ADDR_COPY(node.macaddr, ifp->if_broadcastaddr); node.id = sc->broadcast_id; @@ -4550,8 +4565,9 @@ iwn4965_set_txpower(struct iwn_softc *sc int i, c, grp, maxpwr; uint8_t chan; + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; /* Retrieve current channel from last RXON. */ - chan = sc->rxon.chan; + chan = sc->rxon->chan; DPRINTF(sc, IWN_DEBUG_RESET, "setting TX power for channel %d\n", chan); @@ -4910,8 +4926,8 @@ iwn_collect_noise(struct iwn_softc *sc, #ifdef notyet /* XXX Disable RX chains with no antennas connected. */ - sc->rxon.rxchain = htole16(IWN_RXCHAIN_SEL(sc->chainmask)); - (void)iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 1); + sc->rxon->rxchain = htole16(IWN_RXCHAIN_SEL(sc->chainmask)); + (void)iwn_cmd(sc, IWN_CMD_RXON, sc->rxon, sc->rxonsz, 1); #endif /* Enable power-saving mode if requested by user. */ @@ -5440,39 +5456,40 @@ iwn_config(struct iwn_softc *sc) } /* Set mode, channel, RX filter and enable RX. */ - memset(&sc->rxon, 0, sizeof (struct iwn_rxon)); - IEEE80211_ADDR_COPY(sc->rxon.myaddr, IF_LLADDR(ifp)); - IEEE80211_ADDR_COPY(sc->rxon.wlap, IF_LLADDR(ifp)); - sc->rxon.chan = ieee80211_chan2ieee(ic, ic->ic_curchan); - sc->rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; + memset(sc->rxon, 0, sizeof (struct iwn_rxon)); + IEEE80211_ADDR_COPY(sc->rxon->myaddr, IF_LLADDR(ifp)); + IEEE80211_ADDR_COPY(sc->rxon->wlap, IF_LLADDR(ifp)); + sc->rxon->chan = ieee80211_chan2ieee(ic, ic->ic_curchan); + sc->rxon->flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); if (IEEE80211_IS_CHAN_2GHZ(ic->ic_curchan)) - sc->rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); + sc->rxon->flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); switch (ic->ic_opmode) { case IEEE80211_M_STA: - sc->rxon.mode = IWN_MODE_STA; - sc->rxon.filter = htole32(IWN_FILTER_MULTICAST); + sc->rxon->mode = IWN_MODE_STA; + sc->rxon->filter = htole32(IWN_FILTER_MULTICAST); break; case IEEE80211_M_MONITOR: - sc->rxon.mode = IWN_MODE_MONITOR; - sc->rxon.filter = htole32(IWN_FILTER_MULTICAST | + sc->rxon->mode = IWN_MODE_MONITOR; + sc->rxon->filter = htole32(IWN_FILTER_MULTICAST | IWN_FILTER_CTL | IWN_FILTER_PROMISC); break; default: /* Should not get there. */ break; } - sc->rxon.cck_mask = 0x0f; /* not yet negotiated */ - sc->rxon.ofdm_mask = 0xff; /* not yet negotiated */ - sc->rxon.ht_single_mask = 0xff; - sc->rxon.ht_dual_mask = 0xff; - sc->rxon.ht_triple_mask = 0xff; + sc->rxon->cck_mask = 0x0f; /* not yet negotiated */ + sc->rxon->ofdm_mask = 0xff; /* not yet negotiated */ + sc->rxon->ht_single_mask = 0xff; + sc->rxon->ht_dual_mask = 0xff; + sc->rxon->ht_triple_mask = 0xff; rxchain = IWN_RXCHAIN_VALID(sc->rxchainmask) | IWN_RXCHAIN_MIMO_COUNT(2) | IWN_RXCHAIN_IDLE_COUNT(2); - sc->rxon.rxchain = htole16(rxchain); + sc->rxon->rxchain = htole16(rxchain); DPRINTF(sc, IWN_DEBUG_RESET, "%s: setting configuration\n", __func__); - error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 0); + error = iwn_cmd(sc, IWN_CMD_RXON, sc->rxon, sc->rxonsz, 0); if (error != 0) { device_printf(sc->sc_dev, "%s: RXON command failed\n", __func__); @@ -5543,6 +5560,7 @@ iwn_scan(struct iwn_softc *sc) DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; buf = malloc(IWN_SCAN_MAXSZ, M_DEVBUF, M_NOWAIT | M_ZERO); if (buf == NULL) { device_printf(sc->sc_dev, @@ -5584,7 +5602,7 @@ iwn_scan(struct iwn_softc *sc) } else { hdr->flags = htole32(IWN_RXON_24GHZ | IWN_RXON_AUTO); if (sc->hw_type == IWN_HW_REV_TYPE_4965 && - sc->rxon.associd && sc->rxon.chan > 14) + sc->rxon->associd && sc->rxon->chan > 14) tx->rate = htole32(0xd); else { /* Send probe requests at 1Mbps. */ @@ -5643,7 +5661,7 @@ iwn_scan(struct iwn_softc *sc) } else if (IEEE80211_IS_CHAN_5GHZ(c)) { chan->rf_gain = 0x3b; chan->active = htole16(24); - if (sc->rxon.associd) + if (sc->rxon->associd) chan->passive = htole16(78); else chan->passive = htole16(110); @@ -5656,7 +5674,7 @@ iwn_scan(struct iwn_softc *sc) } else { chan->rf_gain = 0x28; chan->active = htole16(36); - if (sc->rxon.associd) + if (sc->rxon->associd) chan->passive = htole16(88); else chan->passive = htole16(120); @@ -5695,31 +5713,32 @@ iwn_auth(struct iwn_softc *sc, struct ie DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; /* Update adapter configuration. */ - IEEE80211_ADDR_COPY(sc->rxon.bssid, ni->ni_bssid); - sc->rxon.chan = ieee80211_chan2ieee(ic, ni->ni_chan); - sc->rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); + IEEE80211_ADDR_COPY(sc->rxon->bssid, ni->ni_bssid); + sc->rxon->chan = ieee80211_chan2ieee(ic, ni->ni_chan); + sc->rxon->flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); if (IEEE80211_IS_CHAN_2GHZ(ni->ni_chan)) - sc->rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); + sc->rxon->flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); if (ic->ic_flags & IEEE80211_F_SHSLOT) - sc->rxon.flags |= htole32(IWN_RXON_SHSLOT); + sc->rxon->flags |= htole32(IWN_RXON_SHSLOT); if (ic->ic_flags & IEEE80211_F_SHPREAMBLE) - sc->rxon.flags |= htole32(IWN_RXON_SHPREAMBLE); + sc->rxon->flags |= htole32(IWN_RXON_SHPREAMBLE); if (IEEE80211_IS_CHAN_A(ni->ni_chan)) { - sc->rxon.cck_mask = 0; - sc->rxon.ofdm_mask = 0x15; + sc->rxon->cck_mask = 0; + sc->rxon->ofdm_mask = 0x15; } else if (IEEE80211_IS_CHAN_B(ni->ni_chan)) { - sc->rxon.cck_mask = 0x03; - sc->rxon.ofdm_mask = 0; + sc->rxon->cck_mask = 0x03; + sc->rxon->ofdm_mask = 0; } else { /* Assume 802.11b/g. */ - sc->rxon.cck_mask = 0x0f; - sc->rxon.ofdm_mask = 0x15; + sc->rxon->cck_mask = 0x0f; + sc->rxon->ofdm_mask = 0x15; } DPRINTF(sc, IWN_DEBUG_STATE, "rxon chan %d flags %x cck %x ofdm %x\n", - sc->rxon.chan, sc->rxon.flags, sc->rxon.cck_mask, - sc->rxon.ofdm_mask); - error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 1); + sc->rxon->chan, sc->rxon->flags, sc->rxon->cck_mask, + sc->rxon->ofdm_mask); + error = iwn_cmd(sc, IWN_CMD_RXON, sc->rxon, sc->rxonsz, 1); if (error != 0) { device_printf(sc->sc_dev, "%s: RXON command failed, error %d\n", __func__, error); @@ -5761,6 +5780,7 @@ iwn_run(struct iwn_softc *sc, struct iee DPRINTF(sc, IWN_DEBUG_TRACE, "->%s begin\n", __func__); + sc->rxon = &sc->rx_on[IWN_RXON_BSS_CTX]; if (ic->ic_opmode == IEEE80211_M_MONITOR) { /* Link LED blinks while monitoring. */ iwn_set_led(sc, IWN_LED_LINK, 5, 5); @@ -5773,26 +5793,26 @@ iwn_run(struct iwn_softc *sc, struct iee } /* Update adapter configuration. */ - IEEE80211_ADDR_COPY(sc->rxon.bssid, ni->ni_bssid); - sc->rxon.associd = htole16(IEEE80211_AID(ni->ni_associd)); - sc->rxon.chan = ieee80211_chan2ieee(ic, ni->ni_chan); - sc->rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); + IEEE80211_ADDR_COPY(sc->rxon->bssid, ni->ni_bssid); + sc->rxon->associd = htole16(IEEE80211_AID(ni->ni_associd)); + sc->rxon->chan = ieee80211_chan2ieee(ic, ni->ni_chan); + sc->rxon->flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF); if (IEEE80211_IS_CHAN_2GHZ(ni->ni_chan)) - sc->rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); + sc->rxon->flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ); if (ic->ic_flags & IEEE80211_F_SHSLOT) - sc->rxon.flags |= htole32(IWN_RXON_SHSLOT); + sc->rxon->flags |= htole32(IWN_RXON_SHSLOT); if (ic->ic_flags & IEEE80211_F_SHPREAMBLE) - sc->rxon.flags |= htole32(IWN_RXON_SHPREAMBLE); + sc->rxon->flags |= htole32(IWN_RXON_SHPREAMBLE); if (IEEE80211_IS_CHAN_A(ni->ni_chan)) { - sc->rxon.cck_mask = 0; - sc->rxon.ofdm_mask = 0x15; + sc->rxon->cck_mask = 0; + sc->rxon->ofdm_mask = 0x15; } else if (IEEE80211_IS_CHAN_B(ni->ni_chan)) { - sc->rxon.cck_mask = 0x03; - sc->rxon.ofdm_mask = 0; + sc->rxon->cck_mask = 0x03; + sc->rxon->ofdm_mask = 0; } else { /* Assume 802.11b/g. */ - sc->rxon.cck_mask = 0x0f; - sc->rxon.ofdm_mask = 0x15; + sc->rxon->cck_mask = 0x0f; + sc->rxon->ofdm_mask = 0x15; } if (IEEE80211_IS_CHAN_HT(ni->ni_chan)) { htflags |= IWN_RXON_HT_PROTMODE(ic->ic_curhtprotmode); @@ -5809,11 +5829,11 @@ iwn_run(struct iwn_softc *sc, struct iee if (IEEE80211_IS_CHAN_HT40D(ni->ni_chan)) htflags |= IWN_RXON_HT_HT40MINUS; } - sc->rxon.flags |= htole32(htflags); - sc->rxon.filter |= htole32(IWN_FILTER_BSS); + sc->rxon->flags |= htole32(htflags); + sc->rxon->filter |= htole32(IWN_FILTER_BSS); DPRINTF(sc, IWN_DEBUG_STATE, "rxon chan %d flags %x\n", - sc->rxon.chan, sc->rxon.flags); - error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 1); + sc->rxon->chan, sc->rxon->flags); + error = iwn_cmd(sc, IWN_CMD_RXON, sc->rxon, sc->rxonsz, 1); if (error != 0) { device_printf(sc->sc_dev, "%s: could not update configuration, error %d\n", __func__, @@ -6795,6 +6815,27 @@ iwn_read_firmware_tlv(struct iwn_softc * sc->noise_gain = tmp + 1; } break; + case IWN_FW_TLV_PAN: + sc->sc_flags |= IWN_FLAG_PAN_SUPPORT; + DPRINTF(sc, IWN_DEBUG_RESET, + "PAN Support found: %d\n", 1); + break; + case IWN_FW_TLV_FLAGS : + sc->tlv_feature_flags = htole32(*ptr); + break; + case IWN_FW_TLV_PBREQ_MAXLEN: + case IWN_FW_TLV_RUNT_EVTLOG_PTR: + case IWN_FW_TLV_RUNT_EVTLOG_SIZE: + case IWN_FW_TLV_RUNT_ERRLOG_PTR: + case IWN_FW_TLV_INIT_EVTLOG_PTR: + case IWN_FW_TLV_INIT_EVTLOG_SIZE: + case IWN_FW_TLV_INIT_ERRLOG_PTR: + case IWN_FW_TLV_WOWLAN_INST: + case IWN_FW_TLV_WOWLAN_DATA: + DPRINTF(sc, IWN_DEBUG_RESET, + "TLV type %d reconized but not handled\n", + le16toh(tlv->type)); + break; default: DPRINTF(sc, IWN_DEBUG_RESET, "TLV type %d not handled\n", le16toh(tlv->type)); Modified: head/sys/dev/iwn/if_iwnvar.h ============================================================================== --- head/sys/dev/iwn/if_iwnvar.h Sun Aug 11 01:14:46 2013 (r254203) +++ head/sys/dev/iwn/if_iwnvar.h Sun Aug 11 01:57:54 2013 (r254204) @@ -2,6 +2,8 @@ /* $OpenBSD: if_iwnvar.h,v 1.18 2010/04/30 16:06:46 damien Exp $ */ /*- + * Copyright (c) 2013 Cedric GROSS + * Copyright (c) 2011 Intel Corporation * Copyright (c) 2007, 2008 * Damien Bergamini * Copyright (c) 2008 Sam Leffler, Errno Consulting @@ -18,6 +20,38 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +enum iwn_rxon_ctx_id { + IWN_RXON_BSS_CTX, + IWN_RXON_PAN_CTX, + IWN_NUM_RXON_CTX +}; + +struct iwn_pan_slot { + uint16_t time; + uint8_t type; + uint8_t reserved; +} __packed; + +struct iwn_pan_params_cmd { + uint16_t flags; +#define IWN_PAN_PARAMS_FLG_SLOTTED_MODE (1 << 3) + + uint8_t reserved; + uint8_t num_slots; + struct iwn_pan_slot slots[10]; +} __packed; + +struct iwn_led_mode +{ + uint8_t led_cur_mode; + uint64_t led_cur_bt; + uint64_t led_last_bt; + uint64_t led_cur_tpt; + uint64_t led_last_tpt; + uint64_t led_bt_diff; + int led_cur_time; + int led_last_time; +}; struct iwn_rx_radiotap_header { struct ieee80211_radiotap_header wr_ihdr; @@ -191,6 +225,10 @@ struct iwn_vap { int (*iv_newstate)(struct ieee80211vap *, enum ieee80211_state, int); + int ctx; + int beacon_int; + uint8_t macaddr[IEEE80211_ADDR_LEN]; + }; #define IWN_VAP(_vap) ((struct iwn_vap *)(_vap)) @@ -210,8 +248,11 @@ struct iwn_softc { #define IWN_FLAG_HAS_11N (1 << 6) #define IWN_FLAG_ENH_SENS (1 << 7) #define IWN_FLAG_ADV_BTCOEX (1 << 8) +#define IWN_FLAG_PAN_SUPPORT (1 << 9) uint8_t hw_type; + /* subdevice_id used to adjust configuration */ + uint16_t subdevice_id; struct iwn_ops ops; const char *fwname; @@ -272,7 +313,7 @@ struct iwn_softc { int calib_cnt; struct iwn_calib_state calib; struct callout watchdog_to; - + struct callout ct_kill_exit_to; struct iwn_fw_info fw; struct iwn_calib_info calibcmd[5]; uint32_t errptr; @@ -280,7 +321,12 @@ struct iwn_softc { struct iwn_rx_stat last_rx_stat; int last_rx_valid; struct iwn_ucode_info ucode_info; - struct iwn_rxon rxon; + struct iwn_rxon rx_on[IWN_NUM_RXON_CTX]; + struct iwn_rxon *rxon; + int ctx; + struct ieee80211vap *ivap[IWN_NUM_RXON_CTX]; + + uint8_t uc_scan_progress; uint32_t rawtemp; int temp; int noise; @@ -295,11 +341,14 @@ struct iwn_softc { char eeprom_domain[4]; uint32_t eeprom_crystal; int16_t eeprom_temp; + int16_t eeprom_temp_high; int16_t eeprom_voltage; int8_t maxpwr2GHz; int8_t maxpwr5GHz; int8_t maxpwr[IEEE80211_CHAN_MAX]; + uint32_t tlv_feature_flags; + int32_t temp_off; uint32_t int_mask; uint8_t ntxchains; @@ -309,6 +358,7 @@ struct iwn_softc { uint8_t chainmask; int sc_tx_timer; + int sc_scan_timer; struct ieee80211_tx_ampdu *qid2tap[IWN5000_NTXQUEUES]; @@ -323,9 +373,22 @@ struct iwn_softc { void (*sc_addba_stop)(struct ieee80211_node *, struct ieee80211_tx_ampdu *); + struct iwn_led_mode sc_led; struct iwn_rx_radiotap_header sc_rxtap; struct iwn_tx_radiotap_header sc_txtap; + + /* The power save level originally configured by user */ + int desired_pwrsave_level; + + /* + * The current power save level, this may differ from the + * configured value due to thermal throttling etc. + */ + int current_pwrsave_level; + + /* For specifique params */ + struct iwn_base_params *base_params; }; #define IWN_LOCK_INIT(_sc) \ From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 03:39:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 08FE72F0; Sun, 11 Aug 2013 03:39:29 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E87812EC7; Sun, 11 Aug 2013 03:39:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B3dScX030930; Sun, 11 Aug 2013 03:39:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B3dSfT030929; Sun, 11 Aug 2013 03:39:28 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308110339.r7B3dSfT030929@svn.freebsd.org> From: Adrian Chadd Date: Sun, 11 Aug 2013 03:39:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254206 - head/sys/dev/iwn X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 03:39:29 -0000 Author: adrian Date: Sun Aug 11 03:39:28 2013 New Revision: 254206 URL: http://svnweb.freebsd.org/changeset/base/254206 Log: Use the correct structure size when flipping the BT coex state machine. This showed up when doing some basic testing on the Intel 6230. Tested: * Intel 6230, STA mode Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Sun Aug 11 02:53:18 2013 (r254205) +++ head/sys/dev/iwn/if_iwn.c Sun Aug 11 03:39:28 2013 (r254206) @@ -5372,7 +5372,7 @@ iwn_send_advanced_btcoex(struct iwn_soft return error; /* Force BT state machine change. */ - memset(&btprot, 0, sizeof btprio); + memset(&btprot, 0, sizeof btprot); btprot.open = 1; btprot.type = 1; error = iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, &btprot, sizeof(btprot), 1); From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 06:57:57 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CC42091C; Sun, 11 Aug 2013 06:57:57 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B7DF52644; Sun, 11 Aug 2013 06:57:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7B6vvb1005920; Sun, 11 Aug 2013 06:57:57 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7B6vvUC005919; Sun, 11 Aug 2013 06:57:57 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201308110657.r7B6vvUC005919@svn.freebsd.org> From: Rui Paulo Date: Sun, 11 Aug 2013 06:57:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254207 - head/sys/dev/pci X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 06:57:57 -0000 Author: rpaulo Date: Sun Aug 11 06:57:57 2013 New Revision: 254207 URL: http://svnweb.freebsd.org/changeset/base/254207 Log: Use device_printf(). Modified: head/sys/dev/pci/fixup_pci.c Modified: head/sys/dev/pci/fixup_pci.c ============================================================================== --- head/sys/dev/pci/fixup_pci.c Sun Aug 11 03:39:28 2013 (r254206) +++ head/sys/dev/pci/fixup_pci.c Sun Aug 11 06:57:57 2013 (r254207) @@ -92,13 +92,13 @@ fixwsc_natoma(device_t dev) pmccfg = pci_read_config(dev, 0x50, 2); #if defined(SMP) if (pmccfg & 0x8000) { - printf("Correcting Natoma config for SMP\n"); + device_printf(dev, "correcting Natoma config for SMP\n"); pmccfg &= ~0x8000; pci_write_config(dev, 0x50, pmccfg, 2); } #else if ((pmccfg & 0x8000) == 0) { - printf("Correcting Natoma config for non-SMP\n"); + device_printf(dev, "correcting Natoma config for non-SMP\n"); pmccfg |= 0x8000; pci_write_config(dev, 0x50, pmccfg, 2); } @@ -132,7 +132,8 @@ fixc1_nforce2(device_t dev) pci_get_function(dev) == 0) { val = pci_read_config(dev, 0x6c, 4); if (val & 0x000e0000) { - printf("Correcting nForce2 C1 CPU disconnect hangs\n"); + device_printf(dev, + "correcting nForce2 C1 CPU disconnect hangs\n"); val &= ~0x000e0000; pci_write_config(dev, 0x6c, val, 4); } From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 10:35:39 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3B619E1D; Sun, 11 Aug 2013 10:35:39 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0EE202E6D; Sun, 11 Aug 2013 10:35:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BAZcqv089504; Sun, 11 Aug 2013 10:35:38 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BAZcUl089503; Sun, 11 Aug 2013 10:35:38 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308111035.r7BAZcUl089503@svn.freebsd.org> From: Peter Wemm Date: Sun, 11 Aug 2013 10:35:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254213 - head/contrib/nvi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 10:35:39 -0000 Author: peter Date: Sun Aug 11 10:35:38 2013 New Revision: 254213 URL: http://svnweb.freebsd.org/changeset/base/254213 Log: Bootstrap svn:mergeinfo as of the 2008 run of cvs2svn. Modified: Directory Properties: head/contrib/nvi/ (props changed) From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 11:06:50 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8A270515; Sun, 11 Aug 2013 11:06:50 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 779082F9F; Sun, 11 Aug 2013 11:06:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BB6okD001142; Sun, 11 Aug 2013 11:06:50 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BB6oIs001141; Sun, 11 Aug 2013 11:06:50 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201308111106.r7BB6oIs001141@svn.freebsd.org> From: Edward Tomasz Napierala Date: Sun, 11 Aug 2013 11:06:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254215 - head/usr.bin/su X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 11:06:50 -0000 Author: trasz Date: Sun Aug 11 11:06:49 2013 New Revision: 254215 URL: http://svnweb.freebsd.org/changeset/base/254215 Log: In su(1), fix option ordering and clarify that the login class specified must be defined in login.conf. MFC after: 1 month Modified: head/usr.bin/su/su.1 Modified: head/usr.bin/su/su.1 ============================================================================== --- head/usr.bin/su/su.1 Sun Aug 11 10:54:16 2013 (r254214) +++ head/usr.bin/su/su.1 Sun Aug 11 11:06:49 2013 (r254215) @@ -28,7 +28,7 @@ .\" @(#)su.1 8.2 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd June 6, 2011 +.Dd August 11, 2013 .Dt SU 1 .Os .Sh NAME @@ -37,8 +37,8 @@ .Sh SYNOPSIS .Nm .Op Fl -.Op Fl flms .Op Fl c Ar class +.Op Fl flms .Op Ar login Op Ar args .Sh DESCRIPTION The @@ -85,6 +85,11 @@ are also normally retained unless the ta .Pp The options are as follows: .Bl -tag -width Ds +.It Fl c Ar class +Use the settings of the specified login class. +The login class must be defined in +.Xr login.conf 5 . +Only allowed for the super-user. .It Fl f If the invoked shell is .Xr csh 1 , @@ -139,9 +144,6 @@ is not sufficient to transition to the u If the label cannot be set, .Nm will fail. -.It Fl c Ar class -Use the settings of the specified login class. -Only allowed for the super-user. .El .Pp The From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 12:01:24 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7E83DD59; Sun, 11 Aug 2013 12:01:24 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-ee0-x22a.google.com (mail-ee0-x22a.google.com [IPv6:2a00:1450:4013:c00::22a]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8CD422217; Sun, 11 Aug 2013 12:01:23 +0000 (UTC) Received: by mail-ee0-f42.google.com with SMTP id b45so2967168eek.29 for ; Sun, 11 Aug 2013 05:01:21 -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=M5Hi/hMAl8+m925svgpiXwRYWBDX+KE0Cuv5IMD6bK4=; b=WurDbLdMmZkttzCHcG00DCgPmj+mkobA6CW7haPCeI87JzBU5npybNqnjT0nRzKUJ7 5tRmTJgwrOkc40SpCC2fEl6C/jI2l2sW7ko/7vsCNGpx1GBaRt2SuL6VsecojIvRYLrN z0gsmHuSF6Q7DZtCmX3BRPWXNUEh5LoZPBzLZcE7YtgS6cX17lS3VCE3K93fF+i8yWbI zwxxJ+arGKdzhzUBdrhV6+iH4DSh+i3dJmfgeC9evaEPqI0mlZ78ZNYODWVnnv8FAg2N wUaiNanbCtC4RBfjM6npQQV2Yg0GR8Q1D+1a1JfFZZhBaSbPe4YtETS7HnzPulTbq0/1 U7Hg== X-Received: by 10.15.27.133 with SMTP id p5mr20883443eeu.65.1376222481834; Sun, 11 Aug 2013 05:01:21 -0700 (PDT) Received: from mavbook.mavhome.dp.ua ([37.229.21.195]) by mx.google.com with ESMTPSA id f49sm42002038eec.7.2013.08.11.05.01.19 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 11 Aug 2013 05:01:20 -0700 (PDT) Sender: Alexander Motin Message-ID: <52077D0D.8090607@FreeBSD.org> Date: Sun, 11 Aug 2013 15:01:17 +0300 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130616 Thunderbird/17.0.6 MIME-Version: 1.0 To: Scott Long Subject: Re: svn commit: r253460 - head/sys/dev/mps References: <201307190012.r6J0Cg1r027645@svn.freebsd.org> In-Reply-To: <201307190012.r6J0Cg1r027645@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 12:01:24 -0000 On 19.07.2013 03:12, Scott Long wrote: > Author: scottl > Date: Fri Jul 19 00:12:41 2013 > New Revision: 253460 > URL: http://svnweb.freebsd.org/changeset/base/253460 > > Log: > Overhaul error, information, and debug logging. > > Obtained from: Netflix > MFC after: 3 days > > Modified: > head/sys/dev/mps/mps.c > head/sys/dev/mps/mps_mapping.c > head/sys/dev/mps/mps_pci.c > head/sys/dev/mps/mps_sas.c > head/sys/dev/mps/mps_sas_lsi.c > head/sys/dev/mps/mps_table.c > head/sys/dev/mps/mps_user.c > head/sys/dev/mps/mpsvar.h This change created significant CPU overhead under high I/O rate (350K IOPS) because several functions inside mpssas_log_command() are now writing into the buffer that is just discarded after that. The following simple patch seems fixes the situation for me: Index: mps_sas.c =================================================================== --- mps_sas.c (revision 254181) +++ mps_sas.c (working copy) @@ -304,7 +304,7 @@ mpssas_log_command(struct mps_command *cm, u_int l char str[192]; char path_str[64]; - if (cm == NULL) + if (cm == NULL || (cm->cm_sc->mps_debug & level) == 0) return; sbuf_new(&sb, str, sizeof(str), 0); -- Alexander Motin From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 13:57:15 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 84CC8DB; Sun, 11 Aug 2013 13:57:15 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 725AD267A; Sun, 11 Aug 2013 13:57:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BDvF01065443; Sun, 11 Aug 2013 13:57:15 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BDvF7H065442; Sun, 11 Aug 2013 13:57:15 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308111357.r7BDvF7H065442@svn.freebsd.org> From: Glen Barber Date: Sun, 11 Aug 2013 13:57:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254217 - head/sys/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 13:57:15 -0000 Author: gjb Date: Sun Aug 11 13:57:14 2013 New Revision: 254217 URL: http://svnweb.freebsd.org/changeset/base/254217 Log: Use realpath(1) to determine the location of the newvers.sh script, since the current working directory might not be what is expected, causing svn{,lite}version to fail to find ${0} (itself). Submitted by: Dan Mack Modified: head/sys/conf/newvers.sh Modified: head/sys/conf/newvers.sh ============================================================================== --- head/sys/conf/newvers.sh Sun Aug 11 11:33:48 2013 (r254216) +++ head/sys/conf/newvers.sh Sun Aug 11 13:57:14 2013 (r254217) @@ -96,7 +96,7 @@ for dir in /usr/bin /usr/local/bin; do # Run svnversion from ${dir} on this script; if return code # is not zero, the checkout might not be compatible with the # svnversion being used. - ${dir}/svnversion $(basename ${0}) >/dev/null 2>&1 + ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1 if [ $? -eq 0 ]; then svnversion=${dir}/svnversion break @@ -105,7 +105,7 @@ for dir in /usr/bin /usr/local/bin; do done if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then - /usr/bin/svnliteversion $(basename ${0}) >/dev/null 2>&1 + /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1 if [ $? -eq 0 ]; then svnversion=/usr/bin/svnliteversion else From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 14:15:01 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E1CFF6BA; Sun, 11 Aug 2013 14:15:01 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CF8CF2731; Sun, 11 Aug 2013 14:15:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BEF18m073065; Sun, 11 Aug 2013 14:15:01 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BEF1Pt073064; Sun, 11 Aug 2013 14:15:01 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308111415.r7BEF1Pt073064@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 11 Aug 2013 14:15:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254218 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 14:15:02 -0000 Author: jilles Date: Sun Aug 11 14:15:01 2013 New Revision: 254218 URL: http://svnweb.freebsd.org/changeset/base/254218 Log: wait: Make sure WIFSIGNALED(s) is false if WIFCONTINUED(s) is true. Modified: head/sys/sys/wait.h Modified: head/sys/sys/wait.h ============================================================================== --- head/sys/sys/wait.h Sun Aug 11 13:57:14 2013 (r254217) +++ head/sys/sys/wait.h Sun Aug 11 14:15:01 2013 (r254218) @@ -53,7 +53,7 @@ #define _WSTOPPED 0177 /* _WSTATUS if process is stopped */ #define WIFSTOPPED(x) (_WSTATUS(x) == _WSTOPPED) #define WSTOPSIG(x) (_W_INT(x) >> 8) -#define WIFSIGNALED(x) (_WSTATUS(x) != _WSTOPPED && _WSTATUS(x) != 0) +#define WIFSIGNALED(x) (_WSTATUS(x) != _WSTOPPED && _WSTATUS(x) != 0 && (x) != 0x13) #define WTERMSIG(x) (_WSTATUS(x)) #define WIFEXITED(x) (_WSTATUS(x) == 0) #define WEXITSTATUS(x) (_W_INT(x) >> 8) From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 15:38:49 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 43EC77D7; Sun, 11 Aug 2013 15:38:49 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3111C29DE; Sun, 11 Aug 2013 15:38:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BFcnQ2004843; Sun, 11 Aug 2013 15:38:49 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BFcmNO004842; Sun, 11 Aug 2013 15:38:48 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308111538.r7BFcmNO004842@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 11 Aug 2013 15:38:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254222 - head/lib/libc/db/hash X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 15:38:49 -0000 Author: jilles Date: Sun Aug 11 15:38:48 2013 New Revision: 254222 URL: http://svnweb.freebsd.org/changeset/base/254222 Log: db/hash: Use O_CLOEXEC instead of separate fcntl() call. In particular, a hash db is used by getpwnam() and getpwuid(). MFC after: 1 week Modified: head/lib/libc/db/hash/hash.c Modified: head/lib/libc/db/hash/hash.c ============================================================================== --- head/lib/libc/db/hash/hash.c Sun Aug 11 14:39:27 2013 (r254221) +++ head/lib/libc/db/hash/hash.c Sun Aug 11 15:38:48 2013 (r254222) @@ -121,9 +121,8 @@ __hash_open(const char *file, int flags, hashp->flags = flags; if (file) { - if ((hashp->fp = _open(file, flags, mode)) == -1) + if ((hashp->fp = _open(file, flags | O_CLOEXEC, mode)) == -1) RETURN_ERROR(errno, error0); - (void)_fcntl(hashp->fp, F_SETFD, 1); new_table = _fstat(hashp->fp, &statbuf) == 0 && statbuf.st_size == 0 && (flags & O_ACCMODE) != O_RDONLY; } else From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 18:05:20 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DFE39D36; Sun, 11 Aug 2013 18:05:20 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CD4C920BC; Sun, 11 Aug 2013 18:05:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BI5KN6061848; Sun, 11 Aug 2013 18:05:20 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BI5Kv1061847; Sun, 11 Aug 2013 18:05:20 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308111805.r7BI5Kv1061847@svn.freebsd.org> From: Glen Barber Date: Sun, 11 Aug 2013 18:05:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254223 - head/gnu/usr.bin/groff/tmac X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 18:05:21 -0000 Author: gjb Date: Sun Aug 11 18:05:20 2013 New Revision: 254223 URL: http://svnweb.freebsd.org/changeset/base/254223 Log: Add FreeBSD 9.2 to mdoc.local. Modified: head/gnu/usr.bin/groff/tmac/mdoc.local Modified: head/gnu/usr.bin/groff/tmac/mdoc.local ============================================================================== --- head/gnu/usr.bin/groff/tmac/mdoc.local Sun Aug 11 15:38:48 2013 (r254222) +++ head/gnu/usr.bin/groff/tmac/mdoc.local Sun Aug 11 18:05:20 2013 (r254223) @@ -52,6 +52,7 @@ .ds doc-operating-system-FreeBSD-8.3 8.3 .ds doc-operating-system-FreeBSD-8.4 8.4 .ds doc-operating-system-FreeBSD-9.1 9.1 +.ds doc-operating-system-FreeBSD-9.2 9.2 .ds doc-operating-system-FreeBSD-10.0 10.0 . .\" Definitions not (yet) in doc-syms From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 18:57:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9F0734D4; Sun, 11 Aug 2013 18:57:27 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8B10122D1; Sun, 11 Aug 2013 18:57:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BIvRhh080971; Sun, 11 Aug 2013 18:57:27 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BIvRSq080970; Sun, 11 Aug 2013 18:57:27 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308111857.r7BIvRSq080970@svn.freebsd.org> From: Glen Barber Date: Sun, 11 Aug 2013 18:57:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254224 - head/share/man/man7 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 18:57:27 -0000 Author: gjb Date: Sun Aug 11 18:57:27 2013 New Revision: 254224 URL: http://svnweb.freebsd.org/changeset/base/254224 Log: - Update the wrapper script to 'release.sh', as used by the FreeBSD Release Engineering Team as of 9.2-RELEASE. - Document that a cross-build release is possible by setting the TARGET and TARGET_ARCH variables. - Include an example of using release.sh with and without the optional configuration file. - Document the supported release.sh configuration file variables. - Update the 'cdrom' target output file to disc1.iso. - Update the 'memstick' target output file to memstick.img. - Add attributions for the last major updates to this manual page. - Fix some mdoc(7) style nits: - Sentences should begin on a new line - Use .Pq to enclose full lines in parenthesis Modified: head/share/man/man7/release.7 Modified: head/share/man/man7/release.7 ============================================================================== --- head/share/man/man7/release.7 Sun Aug 11 18:05:20 2013 (r254223) +++ head/share/man/man7/release.7 Sun Aug 11 18:57:27 2013 (r254224) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 3, 2013 +.Dd August 11, 2013 .Dt RELEASE 7 .Os .Sh NAME @@ -50,8 +50,9 @@ For some users, it may be desirable to p build environment, with no local modifications to the source tree or to .Xr make.conf 5 , and with clean checkouts of specific versions of the doc, src, and ports -trees. For this purpose, a script -.Pq Pa src/release/generate-release.sh +trees. +For this purpose, a script +.Pq Pa src/release/release.sh is provided to automate these checkouts and then execute .Dq Li "make release" in a clean @@ -70,86 +71,194 @@ and .Dq Li "make buildkernel" . This is necessary to provide the object files for the release or, when using -.Pa generate-release.sh , +.Pa release.sh , so that the object files for a complete system can be installed into a clean .Xr chroot 8 -environment. In this second case, the built world must be capable of running -on the build system (i.e. it must be for the same architecture and be -compatible with the installed kernel). +environment. +.Pp +If the target release build is for a different architecture or machine type, +the +.Va TARGET +and +.Va TARGET_ARCH +variables must be used. +See the supported +.Fa release.conf +variables for more information. +.Pp The release procedure on some architectures may also require that the .Xr md 4 (memory disk) device driver be present in the kernel -(either by being compiled in or available as a module). +.Pq either by being compiled in or available as a module . .Pp This document does not cover source code management, quality assurance, or other aspects of the release engineering process. .Sh CLEAN RELEASE GENERATION -Official releases of FreeBSD are produced in a totally clean environment to +Official releases of +.Fx +are produced in a totally clean environment to ensure consistency between the versions of the src, ports, and doc trees -and to avoid contamination from the host system (e.g. local patches, changes +and to avoid contamination from the host system +.Po such as local patches, changes to .Xr make.conf 5 , -etc.). This is accomplished using the wrapper script -.Pa src/release/generate-release.sh . -.Pp -.Ic generate-release.sh -svn-branch scratch-dir -.Pp -.Ic generate-release.sh -calls +etc. +.Pc . +This is accomplished using the wrapper script +.Pa src/release/release.sh . +.Pp +.Ic release.sh +.Op Fl c Ar release.conf +.Pp +.Ic release.sh +checks out the +.Li src/ , +.Li ports/ , +and +.Li doc/ +trees to +.Va CHROOTDIR , +then calls +.Dq Li "make buildworld" +and .Dq Li "make installworld" to generate a .Xr chroot 8 -environment in -.Ar scratch-dir . -It then checks out the src tree specified by -.Ar svn-branch -using -.Xr svn 1 . -Once the various source trees have been obtained, it executes +environment. +Next, .Dq Li "make release" -within the +is run within the .Xr chroot 8 environment and places the result in -.Pa $scratch-dir/R . -Note that because this uses a chroot, it cannot be used to cross-build -.Fx -release media. +.Pa $CHROOTDIR/R . .Pp -Optional environment variables: -.Bl -tag -width ".Cm WORLD_FLAGS" -.It Ev WORLD_FLAGS -This environment variable can be set to pass flags (e.g. -j) to -.Xr make 1 -when invoked to build a world by the script. -.It Ev KERNEL_FLAGS -This environment variable can be set to pass flags (e.g. -j) to -.Xr make 1 -when invoked to build a kernel by the script. -.It Ev SVNROOTBASE -The base part of URL of the FreeBSD SVN repositories. +The optional +.Fa release.conf +configuration file supports the following variables: +.Bl -tag -width Ev +.It Va CHROOTDIR +The directory within which the release will be built. +.It Va SVNROOT +The +.Xr svn 1 +host used to check out the various trees. Defaults to -.Pa svn://svn.freebsd.org . -.It Ev SVNROOTSRC -The URL of the FreeBSD SVN source repository. +.Pa svn://svn.FreeeBSD.org . +.It Va SRCBRANCH +The +.Li src/ +branch to use. Defaults to -.Pa ${SVNROOTBASE}/base . -.It Ev SVNROOTDOC -The URL of the FreeBSD SVN doc repository. +.Va head/ . +.It Va DOCBRANCH +The +.Li doc/ +branch to use. Defaults to -.Pa ${SVNROOTBASE}/doc . -.It Ev SVNROOTPORTS -The URL of the FreeBSD SVN ports repository. +.Va head/ . +.It Va PORTBRANCH +The +.Li ports/ +branch to use. Defaults to -.Pa ${SVNROOTBASE}/ports . -.It Ev BRANCHDOC -The branch name of the FreeBSD SVN doc repository. +.Va head/ . +.It Va SRCREVISION +The revision of the +.Li src/ +tree to use. +Defaults to the current top of tree revision. +.It Va DOCREVISION +The revision of the +.Li doc/ +tree to use. +Defaults to the current top of tree revision. +.It Va PORTREVISION +The revision of the +.Li ports/ +tree to use. +Defaults to the current top of tree revision. +.It Va TARGET +The target machine type for the release. +Defaults to the current machine type. +.It Va TARGET_ARCH +The target machine architecture for the release. +Defaults to the value of +.Va TARGET . +.Pp +For the supported list of +.Va TARGET +and +.Va TARGET_ARCH +combinations, consult the output of +.Dq make targets +as documented in +.Xr build 7 . +.It Va KERNEL +The target kernel configuration to use. Defaults to -.Pa head . -.It Ev BRANCHPORTS -The branch name of the FreeBSD SVN ports repository. +.Va GENERIC . +Multiple +.Va KERNEL +entries may be specified. +.It Va MAKE_CONF +The +.Xr make.conf 5 +to use for the release build. Defaults to -.Pa head . +.Fa /dev/null +to prevent polluting the release with local system changes. +.It Va SRC_CONF +The +.Xr src.conf 5 +to use for the release build. +Defaults to +.Fa /dev/null +to prevent polluting the release with local system changes. +.It Va MAKE_FLAGS +Additional flags to pass to +.Xr make 1 . +.It Va WORLD_FLAGS +Additional flags to pass to +.Xr make 1 +during the +.Dq buildworld +phase. +Defaults to setting the number of +.Xr make 1 +jobs +.Pq Ar -j +to the number of CPUs available on the system. +.It Va KERNEL_FLAGS +Additional flags to pass to +.Xr make 1 +during the +.Dq buildkernel +phase. +Defaults to setting the number of +.Xr make 1 +jobs +.Pq Ar -j +to half the number of CPUs available on the system. +.It Va NODOC +Set to a non-empty value to skip the +.Li doc/ +tree checkout. +When set, +.Va NODOC +will prevent the +.Fa doc.txz +distribution package from being created. +.It Va NOPORTS +Set to a non-empty value to skip the +.Li ports/ +tree checkout. +When set, +.Va NOPORTS +will prevent the +.Fa ports.txz +distribution package from being created. +Setting this also sets +.Va NODOC . .El .Sh MAKEFILE TARGETS The release makefile @@ -175,18 +284,19 @@ This may require the (memory disk) device driver be present in the kernel (either by being compiled in or available as a module). This target produces files called -.Pa release.iso +.Pa disc1.iso and .Pa bootonly.iso as its output. .It Cm memstick Builds an installation memory stick image named -.Pa memstick . +.Pa memstick.img . Not applicable on all platforms. Requires that the .Xr md 4 -(memory disk) device driver be present in the kernel -(either by being compiled in or available as a module). +.Pq memory disk +device driver be present in the kernel +.Pq either by being compiled in or available as a module . .It Cm ftp Creates a directory named .Pa ftp @@ -197,7 +307,8 @@ and suitable for upload to an FTP mirror Major subtargets called by targets above: .Bl -tag -width ".Cm packagesystem" .It Cm packagesystem -Generates all the distribution archives (e.g. base, kernel, ports, doc) +Generates all the distribution archives +.Pq base, kernel, ports, doc applicable on this platform. .It Cm system Builds a bootable installation system containing all the distribution files @@ -211,8 +322,9 @@ targets. .It Cm reldoc Builds the release documentation. This includes the release notes, -hardware guide, and installation instructions. Other documentation (e.g. -the Handbook) is built during the +hardware guide, and installation instructions. +Other documentation, such as the Handbook, +is built during the .Cm base.txz target invoked by .Cm packagesystem . @@ -221,20 +333,24 @@ target invoked by Optional variables: .Bl -tag -width ".Ev TARGET_ARCH" .It Ev OSRELEASE -Optional base name for generated media images (e.g. FreeBSD-9.0-RC2-amd64). +Optional base name for generated media images +.Pq e.g., FreeBSD-9.0-RC2-amd64 . Defaults to the output of .Ic `uname -s`-`uname -r`-`uname -p` within the chroot. .It Ev WORLDDIR -Location of a directory containing the src tree. By default, the directory +Location of a directory containing the src tree. +By default, the directory above the one containing the makefile .Pq Pa src . .It Ev PORTSDIR -Location of a directory containing the ports tree. By default, +Location of a directory containing the ports tree. +By default, .Pa /usr/ports . If it is unset or cannot be found, ports will not be included in the release. .It Ev DOCDIR -Location of a directory containing the doc tree. By default, +Location of a directory containing the doc tree. +By default, .Pa /usr/doc . If it is unset or cannot be found, most documentation will not be included in the release; see @@ -291,7 +407,8 @@ Typically, one only needs to set .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .It Pa /usr/src/release/Makefile -.It Pa /usr/src/release/generate-release.sh +.It Pa /usr/src/release/release.sh +.It Pa /usr/src/release/release.conf.sample .El .Sh EXAMPLES The following sequence of commands can be used to build a @@ -316,12 +433,27 @@ The following sequence of commands can b in a clean environment, including ports and documentation: .Bd -literal -offset indent cd /usr/src/release -sh generate-release.sh head /local3/release +sh release.sh +.Ed +.Pp +Optionally, a configuration file can be used customize the release build, +such as the subversion revision to use, the branch of the subversion tree for +.Li src/ , +.Li ports/ , +and +.Li doc/ . +.Bd -literal -offset indent +cd /usr/src/release +sh release.sh -c $HOME/release.conf .Ed .Pp After running these commands, all prepared release files are available in the -.Pa /local3/release/R +.Pa /scratch directory. +The target directory can be changed by specifying the +.Va CHROOTDIR +variable in +.Li release.conf . .Sh SEE ALSO .Xr cc 1 , .Xr install 1 , @@ -372,6 +504,16 @@ was overhauled and the wrapper script .Pa src/release/generate-release.sh introduced to support the introduction of a new installer. .Pp +For the +.Fx 9.2 +release, +.Pa src/release/release.sh +was introduced to support per-build configuration files. +.Pa src/release/release.sh +is heavily based on the +.Pa src/release/generate-release.sh +script. +.Pp At near 1000 revisions spread over multiple branches, the .Xr svn 1 log of @@ -386,5 +528,22 @@ was originally written by .An Jordan Hubbard , and .An Poul-Henning Kamp . -This manual page was written by +.Pp +This manual page was originally written by .An Murray Stokely Aq murray@FreeBSD.org . +.Pp +It was updated by +.An Nathan Whitehorn Aq nwhitehorn@FreeBSD.org +to include the +.Fa generate-release.sh +script used for the +.Fx 9.0 +release cycle. +.Pp +It was later updated by +.An Glen Barber Aq gjb@FreeBSD.org +to include the +.Fa release.sh +script used for the +.Fx 9.2 +release cycle. From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 20:03:15 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 93ACE431; Sun, 11 Aug 2013 20:03:15 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7D6D7256A; Sun, 11 Aug 2013 20:03:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BK3FOf006877; Sun, 11 Aug 2013 20:03:15 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BK3Dqt006856; Sun, 11 Aug 2013 20:03:13 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308112003.r7BK3Dqt006856@svn.freebsd.org> From: Peter Wemm Date: Sun, 11 Aug 2013 20:03:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254225 - in head: . contrib/nvi contrib/nvi/build contrib/nvi/catalog contrib/nvi/cl contrib/nvi/clib contrib/nvi/common contrib/nvi/docs/USD.doc/vi.man contrib/nvi/ex contrib/nvi/incl... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 20:03:15 -0000 Author: peter Date: Sun Aug 11 20:03:12 2013 New Revision: 254225 URL: http://svnweb.freebsd.org/changeset/base/254225 Log: Update nvi-1.79 to 2.1.1-4334a8297f This is the gsoc-2011 project to clean up and backport multibyte support from other nvi forks in a form we can use. USE_WIDECHAR is on unless building for the rescue crunchgen. This should allow editing in the native locale encoding. USE_ICONV depends on make.conf having 'WITH_ICONV=YES' for now. This adds the ability to do things like edit a KOI8-R file while having $LANG set to (say) en_US.UTF-8. iconv is used to transcode the characters for display. Other points: * It uses gencat and catopen/etc instead of homegrown msg catalog stuff. * A lot of stuff has been trimmed out, eg: the perl and tcl bindings which we could never use in base anyway. * It uses ncursesw when in widechar mode. This could be interesting. GSoC info: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/zy/1 Repo at: https://github.com/lichray/nvi2 Obtained from: Zhihao Yuan Added: head/contrib/nvi/catalog/zh_CN.GB2312.base (contents, props changed) head/contrib/nvi/catalog/zh_CN.GB2312.owner head/contrib/nvi/cl/extern.h (contents, props changed) head/contrib/nvi/common/conv.c (contents, props changed) head/contrib/nvi/common/conv.h (contents, props changed) head/contrib/nvi/common/encoding.c (contents, props changed) head/contrib/nvi/common/extern.h (contents, props changed) head/contrib/nvi/common/multibyte.h (contents, props changed) head/contrib/nvi/common/options_def.h (contents, props changed) head/contrib/nvi/ex/ex_def.h (contents, props changed) head/contrib/nvi/ex/extern.h (contents, props changed) head/contrib/nvi/regex/ head/contrib/nvi/regex/COPYRIGHT head/contrib/nvi/regex/WHATSNEW head/contrib/nvi/regex/cclass.h (contents, props changed) head/contrib/nvi/regex/cname.h (contents, props changed) head/contrib/nvi/regex/engine.c (contents, props changed) head/contrib/nvi/regex/re_format.7 (contents, props changed) head/contrib/nvi/regex/regcomp.c (contents, props changed) head/contrib/nvi/regex/regerror.c (contents, props changed) head/contrib/nvi/regex/regex.3 (contents, props changed) head/contrib/nvi/regex/regex.h (contents, props changed) head/contrib/nvi/regex/regex2.h (contents, props changed) head/contrib/nvi/regex/regexec.c (contents, props changed) head/contrib/nvi/regex/regfree.c (contents, props changed) head/contrib/nvi/regex/utils.h (contents, props changed) head/contrib/nvi/vi/extern.h (contents, props changed) head/usr.bin/vi/catalog/ head/usr.bin/vi/catalog/Makefile (contents, props changed) Deleted: head/contrib/nvi/FAQ head/contrib/nvi/LAYOUT head/contrib/nvi/build/ head/contrib/nvi/catalog/dutch head/contrib/nvi/catalog/dutch.check head/contrib/nvi/catalog/english head/contrib/nvi/catalog/english.base head/contrib/nvi/catalog/english.check head/contrib/nvi/catalog/french head/contrib/nvi/catalog/french.check head/contrib/nvi/catalog/german head/contrib/nvi/catalog/german.check head/contrib/nvi/catalog/polish head/contrib/nvi/catalog/polish.check head/contrib/nvi/catalog/ru_RU.KOI8-R head/contrib/nvi/catalog/ru_RU.KOI8-R.check head/contrib/nvi/catalog/spanish head/contrib/nvi/catalog/spanish.check head/contrib/nvi/catalog/swedish head/contrib/nvi/catalog/swedish.check head/contrib/nvi/catalog/uk_UA.KOI8-U head/contrib/nvi/cl/cl_bsd.c head/contrib/nvi/clib/ head/contrib/nvi/common/api.c head/contrib/nvi/ex/ex_perl.c head/contrib/nvi/ex/ex_tcl.c head/contrib/nvi/include/ head/contrib/nvi/ip/ head/contrib/nvi/ip_cl/ head/contrib/nvi/perl_api/ head/contrib/nvi/perl_scripts/ head/contrib/nvi/tcl_api/ head/contrib/nvi/tcl_scripts/ head/contrib/nvi/tk/ head/usr.bin/vi/port.h Modified: head/Makefile.inc1 head/contrib/nvi/LICENSE head/contrib/nvi/README head/contrib/nvi/catalog/Makefile head/contrib/nvi/catalog/README head/contrib/nvi/catalog/dump.c head/contrib/nvi/catalog/dutch.base (contents, props changed) head/contrib/nvi/catalog/french.base (contents, props changed) head/contrib/nvi/catalog/german.base (contents, props changed) head/contrib/nvi/catalog/german.owner head/contrib/nvi/catalog/polish.base (contents, props changed) head/contrib/nvi/catalog/ru_RU.KOI8-R.base (contents, props changed) head/contrib/nvi/catalog/ru_RU.KOI8-R.owner head/contrib/nvi/catalog/spanish.base (contents, props changed) head/contrib/nvi/catalog/swedish.base (contents, props changed) head/contrib/nvi/catalog/uk_UA.KOI8-U.base (contents, props changed) head/contrib/nvi/cl/README.signal head/contrib/nvi/cl/cl.h head/contrib/nvi/cl/cl_funcs.c head/contrib/nvi/cl/cl_main.c head/contrib/nvi/cl/cl_read.c head/contrib/nvi/cl/cl_screen.c head/contrib/nvi/cl/cl_term.c head/contrib/nvi/common/args.h head/contrib/nvi/common/common.h head/contrib/nvi/common/cut.c head/contrib/nvi/common/cut.h head/contrib/nvi/common/delete.c head/contrib/nvi/common/exf.c head/contrib/nvi/common/exf.h head/contrib/nvi/common/gs.h head/contrib/nvi/common/key.c head/contrib/nvi/common/key.h head/contrib/nvi/common/line.c head/contrib/nvi/common/log.c head/contrib/nvi/common/main.c head/contrib/nvi/common/mark.c head/contrib/nvi/common/mark.h head/contrib/nvi/common/mem.h head/contrib/nvi/common/msg.c head/contrib/nvi/common/msg.h head/contrib/nvi/common/options.c head/contrib/nvi/common/options.h head/contrib/nvi/common/options_f.c head/contrib/nvi/common/put.c head/contrib/nvi/common/recover.c head/contrib/nvi/common/screen.c head/contrib/nvi/common/screen.h head/contrib/nvi/common/search.c head/contrib/nvi/common/seq.c head/contrib/nvi/common/seq.h head/contrib/nvi/common/util.c head/contrib/nvi/common/util.h head/contrib/nvi/docs/USD.doc/vi.man/vi.1 head/contrib/nvi/ex/ex.c head/contrib/nvi/ex/ex.h head/contrib/nvi/ex/ex_abbrev.c head/contrib/nvi/ex/ex_append.c head/contrib/nvi/ex/ex_args.c head/contrib/nvi/ex/ex_argv.c head/contrib/nvi/ex/ex_at.c head/contrib/nvi/ex/ex_bang.c head/contrib/nvi/ex/ex_cd.c head/contrib/nvi/ex/ex_cmd.c head/contrib/nvi/ex/ex_cscope.c head/contrib/nvi/ex/ex_delete.c head/contrib/nvi/ex/ex_display.c head/contrib/nvi/ex/ex_edit.c head/contrib/nvi/ex/ex_equal.c head/contrib/nvi/ex/ex_file.c head/contrib/nvi/ex/ex_filter.c head/contrib/nvi/ex/ex_global.c head/contrib/nvi/ex/ex_init.c head/contrib/nvi/ex/ex_join.c head/contrib/nvi/ex/ex_map.c head/contrib/nvi/ex/ex_mark.c head/contrib/nvi/ex/ex_mkexrc.c head/contrib/nvi/ex/ex_move.c head/contrib/nvi/ex/ex_open.c head/contrib/nvi/ex/ex_preserve.c head/contrib/nvi/ex/ex_print.c head/contrib/nvi/ex/ex_put.c head/contrib/nvi/ex/ex_quit.c head/contrib/nvi/ex/ex_read.c head/contrib/nvi/ex/ex_screen.c head/contrib/nvi/ex/ex_script.c head/contrib/nvi/ex/ex_set.c head/contrib/nvi/ex/ex_shell.c head/contrib/nvi/ex/ex_shift.c head/contrib/nvi/ex/ex_source.c head/contrib/nvi/ex/ex_stop.c head/contrib/nvi/ex/ex_subst.c head/contrib/nvi/ex/ex_tag.c head/contrib/nvi/ex/ex_txt.c head/contrib/nvi/ex/ex_undo.c head/contrib/nvi/ex/ex_usage.c head/contrib/nvi/ex/ex_util.c head/contrib/nvi/ex/ex_version.c head/contrib/nvi/ex/ex_visual.c head/contrib/nvi/ex/ex_write.c head/contrib/nvi/ex/ex_yank.c head/contrib/nvi/ex/ex_z.c head/contrib/nvi/ex/script.h head/contrib/nvi/ex/tag.h head/contrib/nvi/ex/version.h head/contrib/nvi/vi/getc.c head/contrib/nvi/vi/v_at.c head/contrib/nvi/vi/v_ch.c head/contrib/nvi/vi/v_cmd.c head/contrib/nvi/vi/v_delete.c head/contrib/nvi/vi/v_ex.c head/contrib/nvi/vi/v_increment.c head/contrib/nvi/vi/v_init.c head/contrib/nvi/vi/v_itxt.c head/contrib/nvi/vi/v_left.c head/contrib/nvi/vi/v_mark.c head/contrib/nvi/vi/v_match.c head/contrib/nvi/vi/v_paragraph.c head/contrib/nvi/vi/v_put.c head/contrib/nvi/vi/v_redraw.c head/contrib/nvi/vi/v_replace.c head/contrib/nvi/vi/v_right.c head/contrib/nvi/vi/v_screen.c head/contrib/nvi/vi/v_scroll.c head/contrib/nvi/vi/v_search.c head/contrib/nvi/vi/v_section.c head/contrib/nvi/vi/v_sentence.c head/contrib/nvi/vi/v_status.c head/contrib/nvi/vi/v_txt.c head/contrib/nvi/vi/v_ulcase.c head/contrib/nvi/vi/v_undo.c head/contrib/nvi/vi/v_util.c head/contrib/nvi/vi/v_word.c head/contrib/nvi/vi/v_xchar.c head/contrib/nvi/vi/v_yank.c head/contrib/nvi/vi/v_z.c head/contrib/nvi/vi/v_zexit.c head/contrib/nvi/vi/vi.c head/contrib/nvi/vi/vi.h head/contrib/nvi/vi/vs_line.c head/contrib/nvi/vi/vs_msg.c head/contrib/nvi/vi/vs_refresh.c head/contrib/nvi/vi/vs_relative.c head/contrib/nvi/vi/vs_smap.c head/contrib/nvi/vi/vs_split.c head/usr.bin/vi/Makefile head/usr.bin/vi/config.h head/usr.bin/vi/pathnames.h Directory Properties: head/contrib/nvi/ (props changed) Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Sun Aug 11 18:57:27 2013 (r254224) +++ head/Makefile.inc1 Sun Aug 11 20:03:12 2013 (r254225) @@ -1331,7 +1331,8 @@ build-tools: .MAKE usr.bin/awk \ lib/libmagic \ usr.bin/mkesdb_static \ - usr.bin/mkcsmapper_static + usr.bin/mkcsmapper_static \ + usr.bin/vi/catalog ${_+_}@${ECHODIR} "===> ${_tool} (obj,build-tools)"; \ cd ${.CURDIR}/${_tool} && \ ${MAKE} DIRPRFX=${_tool}/ obj && \ Modified: head/contrib/nvi/LICENSE ============================================================================== --- head/contrib/nvi/LICENSE Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/LICENSE Sun Aug 11 20:03:12 2013 (r254225) @@ -1,14 +1,19 @@ -The vi program is freely redistributable. You are welcome to copy, modify -and share it with others under the conditions listed in this file. If any -company (not any individual!) finds vi sufficiently useful that you would -have purchased it, or if any company wishes to redistribute it, contributions -to the authors would be appreciated. - /*- + * $Id: LICENSE,v 8.18 2011/07/10 11:58:35 zy Exp $ + */ + +The following are the copyrights and redistribution conditions that apply +to this copy of the Vi software. + +/* * Copyright (c) 1991, 1992, 1993, 1994 * The Regents of the University of California. All rights reserved. - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 * Keith Bostic. All rights reserved. + * Copyright (c) 1999, 2000 + * Sven Verdoolaege. All rights reserved. + * Copyright (c) 2011 + * Zhihao Yuan. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -18,11 +23,7 @@ to the authors would be appreciated. * 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. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * Modified: head/contrib/nvi/README ============================================================================== --- head/contrib/nvi/README Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/README Sun Aug 11 20:03:12 2013 (r254225) @@ -1,31 +1,32 @@ -# @(#)README 8.147 (Berkeley) 10/19/96 +# $Id: README,v 9.0 2012/10/07 09:13:54 zy Exp $ -This is the README for nex/nvi, a freely redistributable implementation -of the ex/vi text editors originally distributed as part of the Fourth -Berkeley Software Distribution (4BSD), by the University of California, -Berkeley. - -The source code for nex/nvi can be retrieved by using anonymous ftp to -ftp.cs.berkeley.edu. The file ucb/4bsd/nvi.tar.gz is the gzip'd archive, -of version 1.71 of nex/nvi. This version is believed to be stable and -problem free. The file ucb/4bsd/nvi-###.ALPHA.tar.gz is a gzip'd archive -of the current alpha-test release of nex/nvi. This version reflects the -current development tree, and will be more likely to have problems. - -See the file: - build/README for information on building nvi. - LAYOUT for a description of where everything is. - LICENSE for the copyright and redistribution terms. - -If you have any questions about nex/nvi, problems with it, or concerns -about the conditions for redistribution, please contact me: - - Keith Bostic +1-508-287-4781 - 394 E. Riding Dr. bostic@bostic.com - Carlisle, MA 01741 - USA +This is version 2.1.1 (2012-10-07) of nex/nvi, a reimplementation of the ex/vi +text editors originally distributed as part of the Fourth Berkeley +Software Distribution (4BSD), by the University of California, Berkeley. + +The directory layout is as follows: + + LICENSE ....... Copyright, use and redistribution information. + README ........ This file. + build ......... Build directory. + catalog ....... Message catalogs; see catalog/README. + cl ............ Vi interface to the curses(3) library. + common ........ Code shared by ex and vi. + docs .......... Ex/vi documentation, both current and historic. + ex ............ Ex source code. + regex ......... Modified regex library with wide character support. + vi ............ Vi source code. -Keith Bostic +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +o Nvi was written by Keith Bostic, and the last version is 1.79. After that, + + Sven Verdoolaege added the iconv support and the DB3 locking. + + Jun-ichiro itojun Hagino developed the file encoding detection + techniques in his nvi-m17n. + +The following acknowledgments were written by Keith Bostic: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= o This software is several years old and is the product of many folks' work. @@ -63,51 +64,3 @@ o From the original vi acknowledgements, o And... The financial support of UUNET Communications Services is gratefully acknowledged. - -=-=-=-=-=-=-=-=-=-=-= -o Status: - -This software is in beta test, and it's pretty stable. Almost all of the -historic functionality in ex/vi is there, the only major missing pieces -are open mode and the lisp edit option. - -Nvi is largely 8-bit clean. This isn't difficult to fix, and was left in -during initial development to keep things simple. Wide character support -will be integrated at the same time that it is made fully 8-bit clean. - -There aren't a lot of new features in nex/nvi, but there are a few things -you might like. The "Additional Features" section of the reference work -(docs/USD.doc/vi.ref/vi.ref.txt, docs/USD.doc/vi.ref/vi.ref.ps) has more -information. - -=-=-=-=-=-=-=-=-=-=-= -o Debugging: - -Code fixes are greatly appreciated, of course, but if you can't provide -them, please email me as much information as you can as to how I might -reproduce the bug, and I'll try to fix it locally. Stack traces of core -dumps are only rarely helpful -- an example file with a set of keystrokes -that causes the problem is almost invariably necessary. I know it's -annoying, but simply playing with the bug until you can reproduce it at -will, with minimal keystrokes, is immensely helpful to me. - -Please include the following in the bug report; - - o The version of nvi you're running (use :version to get it). - o The row/column dimensions of the screen (80 x 32). - o Unless you're confident that they're not part of the problem, - your startup files (.exrc, .nexrc) and the environment variable - (EXINIT, NEXINIT) values. (Cutting and pasting the output - of ":set all" is usually sufficient.) - -If you want to do your own debugging, recompile the program with DEBUG -defined. (Configuring with --enable-debug will do this for you.) This -turns on the additional command-line option -D, that takes either s or w -as an argument. The option -Ds causes nvi to ignore the EXINIT and -.exrc files on startup, and -Dw causes nvi to print out the process id -and wait for you to enter a to continue. - -If you're running a memory checker (e.g. Purify) on nvi, you will first -want to recompile everything with "-DPURIFY" set in the CFLAGS. This -initializes allocated pages in the DB code, and free's allocated memory -at the end of the nvi execution. Modified: head/contrib/nvi/catalog/Makefile ============================================================================== --- head/contrib/nvi/catalog/Makefile Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/Makefile Sun Aug 11 20:03:12 2013 (r254225) @@ -1,7 +1,8 @@ -# @(#)Makefile 8.29 (Berkeley) 10/19/96 +# $Id: Makefile,v 9.0 2012/10/19 15:13:11 zy Exp $ -CAT= dutch english french german polish ru_SU.KOI8-R spanish swedish -FILES= ../cl/*.c ../common/*.c ../ex/*.c ../tk/*.c ../vi/*.c +CAT= dutch english french german polish ru_RU.KOI8-R spanish swedish \ + uk_UA.KOI8-U zh_CN.GB2312 +FILES= ../cl/*.c ../common/*.c ../ex/*.c ../vi/*.c all: dump ${CAT} @@ -18,13 +19,10 @@ ${CAT}: english.base print "DUPLICATE MESSAGE NUMBER " $$1; \ exit 1; \ } \ - for (; nline < $$1; ++nline) \ - print ""; \ print $0; \ }' | \ - sed -e '1s/^/VI_MESSAGE_CATALOG/' \ - -e '/"/s/^[^"]*"//' \ - -e '1!s/"$$/X/' > $@; \ + sed -e '1s/^/$$set 1~$$quote "~/; 1y/~/\n/' | \ + gencat $@ /dev/stdin; \ chmod 444 $@; \ if grep DUPLICATE $@ > /dev/null; then \ grep DUPLICATE $@; \ @@ -34,7 +32,8 @@ ${CAT}: english.base fi CHK= dutch.check english.check french.check german.check \ - polish.check ru_SU.KOI8-R.check spanish.check swedish.check + polish.check ru_RU.KOI8-R.check spanish.check swedish.check \ + uk_UA.KOI8-U.check zh_CN.GB2312.check check: ${CHK} ${CHK}: ${CAT} @echo "... $@"; \ @@ -63,19 +62,14 @@ ${CHK}: ${CAT} echo "Duplicate messages, both id and message (this is okay):"; \ sed '/^$$/d' < $$f.base | sort | uniq -c | \ awk '$$1 != 1 { print $$0 }' | sort -n; \ - echo =========================; \ - echo "Duplicate messages, just message (this is okay):"; \ - sed '/^$$/d' < $$f | sort | uniq -c | \ - awk '$$1 != 1 { print $$0 }' | sort -n; \ echo =========================) > $@ english.base: dump ${FILES} #Makefile ./dump ${FILES} |\ sed -e '/|/!d' \ -e 's/|/ "/' \ - -e 's/^"//' \ - -e 's/\\"/"/g' |\ - sort -n > $@ + -e 's/^"//' |\ + sort -nu > $@ dump: dump.c ${CC} -O -o dump dump.c Modified: head/contrib/nvi/catalog/README ============================================================================== --- head/contrib/nvi/catalog/README Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/README Sun Aug 11 20:03:12 2013 (r254225) @@ -1,15 +1,9 @@ -# @(#)README 8.4 (Berkeley) 11/22/94 +# $Id: README,v 9.0 2012/10/19 17:06:15 zy Exp $ Generally, all non-system error and informational messages in nvi are catalog messages, i.e. they can be tailored to a specific langauge. -Command strings, usage strings, system errors and other "known text" -are not. It would certainly be possible to internationalize all the -text strings in nvi, but it's unclear that it's the right thing to do. - -First, there's no portable way to do message catalogs. The System V -scheme is a reasonable choice, but none of the 4BSD derived systems -support it. So, catalogs are completely implemented within nvi, and -don't require any library support. +Command strings, usage strings, system errors and other 'known text' +are not. Message catalogs in nvi are fairly simple. Every catalog message consists of two parts -- an initial number followed by a pipe (`|') @@ -33,19 +27,7 @@ For example: msgq(sp, M_ERR, "002|Error: %d %x", arg1, arg2); -is a format string that displays two arguments. It is possible, however, -to reorder the arguments or to not display all of them. The convention -nvi uses is the System V printf(3) convention, i.e. "%[0-9]*$" is the name -of a specific, numbered argument. For example: - - msgq(sp, M_ERR, "002|Error: %2$d %1$x", arg1, arg2); - -displays the arguments in reverse order. - -If the system supports this convention in its library printf routines -(as specified by the test #define NL_ARGMAX), nvi uses those routines. -Otherwise, there is some serious magic going on in common/msg.c to make -this all work. +is a format string that displays two arguments. Arguments to the msgq function are required to contain ONLY printable characters. No further translation is done by the msgq routine before @@ -54,14 +36,16 @@ displaying the message on the screen. F msgq(sp, M_ERR, "003|File: %s", file_name); "file_name" must contain only printable characters. The routine -msg_print() returns a printable version of a string in allocated -memory. For example: +msg_print() returns a printable version of a string; the third argument +indicates whether the string needs to be freed. For example: char *p; + int nf; - p = msg_print(sp, file_name); - msgq(sp, M_ERR, M("003", "File: %s"), p); - FREE_SPACE(sp, p, 0); + p = msg_print(sp, file_name, &nf); + msgq(sp, M_ERR, "003|File: %s", p); + if (nf) + FREE_SPACE(sp, p, 0); makes sure that "file_name" is printable before calling the msgq routine. @@ -71,63 +55,40 @@ routine. The message catalogs themselves are maintained in two files. The first is the "base file" which contains two fields, a record number and the message itself. All base files are named using the convention -"vi_.base", e.g. the English one is "vi_english.base". For +".base", e.g. the English one is "english.base". For example: - 002 "Unable to create temporary file" - 003 "Warning: %s is not a regular file" - 004 "%s already locked, session is read-only" - 005 "%s: remove" - 006 "%s: close" - 007 "%s: remove" - 008 "%s: remove" - 009 "Read-only file, not written; use ! to override" - 010 "Read-only file, not written" - -are the first few lines of the current vi_english.base file. Note that -message #1 is missing -- the first message of each catalog is a special -one, so that nvi can recognize message catalog files. It's added by the -Makefile script that creates the second version of the message catalog. - -The second file is the file used by nvi to access messages, and is a list -of the messages, one per line: - - VI_MESSAGE_CATALOG - Unable to create temporary fileX - Warning: %s is not a regular fileX - %s already locked, session is read-onlyX - %s: removeX - %s: closeX - %s: removeX - %s: removeX - Read-only file, not written; use ! to overrideX - Read-only file, not writtenX - -Note that all messages have had a trailing 'X' character appended. This -is to provide nvi a place to store a trailing nul for the message so that -C library routines that expect one won't be disappointed. + 002 "Line length overflow" + 003 "unable to delete line %lu" + 004 "unable to append to line %lu" + 005 "unable to insert at line %lu" + 006 "unable to store line %lu" + 007 "unable to get last line" + +are the first few lines of the current english.base file. + +Before this file being converted to the second file, the POSIX formatted +message catalog file, by gencat(1), two lines: + + $set 1 + $quote " + +will be inserted before the base text to setup the set_id and the quote +character. So the double-quote needs to be escaped by a backslash to be +included in a message; same as the backslash itself. -These files are named for their language, e.g. "vi_english". The second -files are automatically created from the first files. +These files are named for their language, e.g. "english". However, a +locale(1) name is also recommended. To create a new catalog for nvi: -Copy the file vi_english.base to a file that you can modify , e.g. "cp -vi_english.base vi_german.base". For each of the messages in the file, -replace the message with the string that you want to use. To find out -what the arguments to a message are, I'm afraid you'll have to search -the source code for the message number. You can find them fairly quickly -by doing: - - cd ..; egrep '123\|' */*.[chys] - -I'm sorry that there's not an easier way, but I couldn't think of -anything that wasn't a lot of work. - -If, for some reason, you don't have the file vi_english.base, or you -have new sources for which you want to create a new base catalog, you -can create it by running the command "make english" in the catalog -directory. +Copy the file english.base to a file that you can modify , e.g. "cp +english.base german.base". For each of the messages in the file, +replace the message with the string that you want to use. If you have +doubts about the meaning of a message, just email me. + +A latest english.base can be created from source by running the command +"make english" in the catalog/ directory. Once you've translated all of the strings, then add your catalog to the "CAT=" line of the Makefile, and run the command "make catalog". This @@ -156,11 +117,11 @@ a single place. =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= To select a catalog when running nvi, set the "msgcat" option. If the value of this option ends with a '/', it is treated as the name of a -directory that contains a message catalog "vi_XXXX", where XXXX is the -value of the LANG environmental variable, if it's set, or the value of -the LC_MESSAGES environmental variable if it's not. If neither of those -environmental variables are set, or if the option doesn't end in a '/', -the option is treated as the full path name of the message catalog to use. +directory that contains a message catalog "$LC_MESSAGES", which is set +through the LC_MESSAGES environment variable but returned by setlocale(3). +Check the output of locale(1) to validate such a value. If the option +doesn't end in a '/', the option is treated as the full path name of the +message catalog to use. If any messages are missing from the catalog, the backup text (English) is used instead. Modified: head/contrib/nvi/catalog/dump.c ============================================================================== --- head/contrib/nvi/catalog/dump.c Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/dump.c Sun Aug 11 20:03:12 2013 (r254225) @@ -105,10 +105,10 @@ main(argc, argv) for (; *argv != NULL; ++argv) { if ((fp = fopen(*argv, "r")) == NULL) { perror(*argv); - exit (1); + return (1); } parse(fp); (void)fclose(fp); } - exit (0); + return (0); } Modified: head/contrib/nvi/catalog/dutch.base ============================================================================== --- head/contrib/nvi/catalog/dutch.base Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/dutch.base Sun Aug 11 20:03:12 2013 (r254225) @@ -43,8 +43,7 @@ 044 "De lisp optie is niet ondersteund" 045 "messages niet uitgeschakeld: %s" 046 "messages niet geactiveerd: %s" -048 "De paragraph optie moet karakter paren bevatten" -049 "De section optie moet karakter paren bevatten" +047 "De %s optie moet karakter paren bevatten" 053 "De standaard buffer is leeg" 054 "Buffer %s is leeg" 055 "Bestanden met newlines in de naam kunnen niet hersteld worden" @@ -97,16 +96,16 @@ 103 "Ongeldig adres: het bestand is leeg" 104 "Het %s commando staat het adres 0 niet toe" 105 "Geen afkortingen om weer te geven" -106 "Afkortingen moeten eindigen met een "woord" letter" +106 "Afkortingen moeten eindigen met een \"woord\" letter" 107 "Afkortingen mogen geen tabulaties of spaties bevatten" 108 "Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het einde" -109 ""%s" is geen afkorting" +109 "\"%s\" is geen afkorting" 110 "Vi commando mislukt: gemappede toetsen genegeerd" 111 "Dit is het laatste bestand" 112 "Dit is het eerste bestand" 113 "Dit is het eerste bestand" 114 "lijst met bestanden is leeg" -115 "Geen voorgaand commando om "!" te vervangen" +115 "Geen voorgaand commando om \"!\" te vervangen" 116 "Geen bestandsnaam voor %%" 117 "Geen bestandsnaam voor #" 118 "Fout: execl: %s" @@ -119,14 +118,14 @@ 125 "%s/%s: niet gelezen: noch U noch root is de eigenaar" 126 "%s/%s: niet gelezen: U bent niet de eigenaar" 127 "%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikers" -128 "%s: niet gelezen: noch U noch root is de eigenaar"" +128 "%s: niet gelezen: noch U noch root is de eigenaar" 129 "%s: niet gelezen: U bent niet de eigenaar" 130 "%s: niet gelezen: kan gewijzigd worden door andere gebruikers" 131 "Geen volgende regel om samen te voegen" 132 "Geen input map entries" 133 "Geen command map entries" 134 "Het %s karakter kan niet ge-remapped worden" -135 ""%s" is niet gemapped" +135 "\"%s\" is niet gemapped" 136 "Merk naam moet een enkel karakter zijn" 137 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren" 138 "Nieuw .exrc bestand: %s. " @@ -296,7 +295,7 @@ 306 "Vi was niet geladen met een Perl interpreter" 307 "Geen ex commando om uit te voeren" 308 "Kies om commando uit te voeren, :q om te stoppen" -309 "Gebruik "cscope help" voor uitleg" +309 "Gebruik \"cscope help\" voor uitleg" 310 "Nog geen cscope connectie aanwezig" 311 "%s: onbekend zoek type: gebruik een van %s" 312 "%d: onbekende cscope sessie" Modified: head/contrib/nvi/catalog/french.base ============================================================================== --- head/contrib/nvi/catalog/french.base Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/french.base Sun Aug 11 20:03:12 2013 (r254225) @@ -43,8 +43,7 @@ 044 "L'option lisp n'est pas implémentée" 045 "Les messages ne sont pas désactivés : %s" 046 "Les messages ne sont pas activés : %s" -048 "L'option de paragraphe doit être en groupe de deux caractères" -049 "L'option de section doit être en groupe de deux caractères" +047 "L'option de %s doit être en groupe de deux caractères" 053 "Le tampon par défaut est vide" 054 "Le tampon %s est vide" 055 "Les fichiers dont le nom contient des caractères de saut de ligne sont irrécupérables" @@ -97,16 +96,16 @@ 103 "Adresse non valide : le fichier est vide" 104 "La commande %s ne permet pas une adresse de 0" 105 "Pas d'abréviations à afficher" -106 "Les abréviations doivent finir par un caractère"mot" +106 "Les abréviations doivent finir par un caractère \"mot\"" 107 "Les abréviations ne peuvent pas contenir de tabulations ni d'espaces" 108 "Les abréviations ne peuvent pas contenir un mélange de caractères mot/non-mot, sauf à la fin" -109 ""%s" n'est pas une abréviation" +109 "\"%s\" n'est pas une abréviation" 110 "La commande Vi a échoué : Les touches affectées ont été abandonnées" 111 "Plus de fichiers à éditer" 112 "Pas de fichiers précédents à éditer" 113 "Pas de fichiers précédents à rembobiner" 114 "Pas de liste de fichiers à afficher" -115 "Pas de commande précédente à remplacer"!"" +115 "Pas de commande précédente à remplacer \"!\"" 116 "Pas de nom de fichier à substituer à %%" 117 "Pas de nom de fichier à substituer à #" 118 "Erreur : execl : %s" @@ -126,7 +125,7 @@ 132 "Pas d'entrées de mappage d'entrée" 133 "Pas d'entrées de mappage de commandes" 134 "Le caractère %s ne peut pas être remappé" -135 ""%s" n'est pas actuellement mappé" +135 "\"%s\" n'est pas actuellement mappé" 136 "Les noms de marque ne doivent avoir qu'un caractère" 137 "%s existe, non enregistré; utiliser ! pour outrepasser" 138 "Nouveau fichier exrc : %s" @@ -200,7 +199,6 @@ 207 "La commande Q nécessite une interface terminal ex" 208 "Pas de commande à répéter" 209 "Le fichier est vide" -209 "Le fichier est vide" 210 "Vous ne pouvez pas utiliser %s comme commande de déplacement" 211 "Déjà en mode commande" 212 "Le curseur n'est pas dans un mot" @@ -293,12 +291,11 @@ 302 "Vi n'a pas été chargé avec un interprétateur Tcl" 303 "Ficher modifié depuis le dernier enregistrement." 304 "L'expansion du shell a échoué" -304 "L'expansion du shell a échoué" 305 "Pas d'option d'édition %s spécifiée" 306 "Vi n'a pas été chargé avec un interprétateur Perl" 307 "Pas de commande ex à exécuter" 308 "Entrez pour exécuter une commande, :q pour quitter" -309 "Utiliser "cscope help" pour obtenir de l'aide" +309 "Utiliser \"cscope help\" pour obtenir de l'aide" 310 "Aucune connexion cscope n'est lancée" 311 "%s : type de recherche inconnu : utiliser un des %s" 312 "%d : Il n'existe pas de telle session cscope" Modified: head/contrib/nvi/catalog/german.base ============================================================================== --- head/contrib/nvi/catalog/german.base Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/german.base Sun Aug 11 20:03:12 2013 (r254225) @@ -1,67 +1,66 @@ -002 "Zeilenlaengen Ueberlauf" -003 "kann Zeile %lu nicht loeschen" -004 "kann an Zeile %lu nicht anfuegen" -005 "kann in Zeile %lu nicht einfuegen" +002 "Zeilenlängen-Überlauf" +003 "kann Zeile %lu nicht löschen" +004 "kann an Zeile %lu nicht anfügen" +005 "kann in Zeile %lu nicht einfügen" 006 "kann Zeile %lu nicht speichern" 007 "kann letzte Zeile nicht lesen" 008 "Fehler: kann Zeile %lu nicht wiederherstellen" 009 "Protokolldatei" -010 "Keine Protokollierung aktiv, rueckgaengig machen nicht moeglich" -011 "Keine Aenderungen rueckgaengig zu machen" -012 "Keine Protokollierung aktiv, rueckgaengig machen nicht moeglich" -013 "Keine Protokollierung aktiv, Wiederholung von Aenderungen nicht moeglich" -014 "Keine Aenderungen zu wiederholen" +010 "Keine Protokollierung aktiv, Rückgängigmachen nicht möglich" +011 "Keine Änderungen rückgängig zu machen" +012 "Keine Protokollierung aktiv, Rückgängigmachen nicht möglich" +013 "Keine Protokollierung aktiv, Wiederholung von Änderungen nicht möglich" +014 "Keine Änderungen zu wiederholen" 015 "%s/%d: Protokollschreibfehler" -016 "Vi's Standardein- und ausgabe muss ein Terminal sein" +016 "Vi's Standardein- und -ausgabe muß ein Terminal sein" 017 "Marke %s: nicht gesetzt" -018 "Marke %s: die Zeile wurde geloescht" +018 "Marke %s: die Zeile wurde gelöscht" 019 "Marke %s: Cursorposition existiert nicht mehr" 020 "Fehler: " 021 "neue Datei" -022 "Name geaendert" -023 "geaendert" -024 "nicht geaendert" -025 "NICHT GELOCKED" +022 "Name geändert" +023 "geändert" +024 "nicht geändert" +025 "NICHT GELOCKT" 026 "nur zum Lesen" 027 "Zeile %lu von %lu [%ld%%]" 028 "leere Datei" 029 "Zeile %lu" 030 "Die Datei %s ist kein Meldungskatalog" -031 "Setzen der Voreinstellung fuer %s Option nicht moeglich" +031 "Setzen der Voreinstellung für %s Option nicht möglich" 032 "Benutzung: %s" 033 "set: keine %s Option: 'set all' zeigt alle Optionen mit Werten an" 034 "set: der [no]%s Option kann kein Wert zugewiesen werden" -035 "set: %s ist keine boolsche Option" +035 "set: %s ist keine Boolsche Option" 036 "set: %s Option: %s" -037 "set: %s Option: %s: Wert Ueberlauf" -038 "set: %s Option: %s ist eine ungueltige Zahl" -039 "set: %s ist keine boolsche Option" -040 "Anzeige hat zu wenig Spalten, weniger als %d" -041 "Anzeige hat zu viele Spalten, mehr als %d" -042 "Anzeige hat zu wenig Zeilen, weniger als %d" -043 "Anzeige hat zu viele Zeilen, mehr als %d" -044 "Die lisp Option ist nicht implementiert" -045 "Messages nicht abgeschalten: %s" -046 "Messages nicht eingeschalten: %s" -048 "Die paragraph Option muss Gruppen zu zwei Zeichen enthalten" -049 "Die section Option muss Gruppen zu zwei Zeichen enthalten" +037 "set: %s Option: %s: Werte-Überlauf" +038 "set: %s Option: %s ist eine ungültige Zahl" +039 "set: %s ist keine Boolsche Option" +040 "Bildschirm hat zu wenig Spalten, weniger als %d" +041 "Bildschirm hat zu viele Spalten, mehr als %d" +042 "Bildschirm hat zu wenig Zeilen, weniger als %d" +043 "Bildschirm hat zu viele Zeilen, mehr als %d" +044 "Die lisp-Option ist nicht implementiert" +045 "Meldungen nicht abgeschaltet: %s" +046 "Meldungen nicht eingeschaltet: %s" +047 "Die %s-Option muß Gruppen zu zwei Zeichen enthalten" 053 "Der Standardpuffer ist leer" 054 "Puffer %s ist leer" 055 "Dateien mit newlines im Namen sind nicht wiederherstellbar" -056 "Aenderungen nicht wiederherstellbar falls die Editorsitzung schief geht" -057 "kopiere Datei fuer Wiederherstellung ..." +056 "Änderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht" +057 "kopiere Datei für Wiederherstellung ..." 058 "Rettungsmechanismus funktioniert nicht: %s" -059 "Aenderungen nicht wiederherstellbar falls die Editorsitzung schief geht" +059 "Änderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht" 060 "Sicherung der Datei gescheitert: %s" -061 "kopiere Datei fuer Wiederherstellung ..." -062 "Informationen ueber den Benutzer mit id %u nicht gefunden" -063 "Wiederherstellungsdatei kann nicht gesperrt werden" -064 "Puffer der Wiederherstellungsdatei uebergelaufen" +061 "kopiere Datei für Wiederherstellung ..." +062 "Informationen über den Benutzer mit id %u nicht gefunden" +063 "Wiederherstellungsdatei kann nicht gelockt werden" +064 "Puffer der Wiederherstellungsdatei übergelaufen" 065 "Wiederherstellungsdatei" 066 "%s: Wiederherstellungsdatei hat falsches Format" 067 "%s: Wiederherstellungsdatei hat falsches Format" 068 "Keine von Ihnen lesbaren Dateien mit Namen %s zum Wiederherstellen" -069 "Es gibt aeltere Versionen dieser Datei von Ihnen zum Wiederherstellen" +069 "Es gibt ältere Versionen dieser Datei von Ihnen zum Wiederherstellen" 070 "Sie haben noch andere Dateien zum Wiederherstellen" 071 "schicke keine email: %s" 072 "Datei leer; nichts zu suchen" @@ -69,110 +68,110 @@ 074 "Kein altes Suchmuster" 075 "Suchmuster nicht gefunden" 076 "Dateianfang erreicht, ohne das Suchmuster zu finden" -077 "Suche umgeschlagen" +077 "Suche beginnt von vorn" 078 "suche ..." 079 "Keine nichtdruckbaren Zeichen gefunden" 080 "Unbekannter Kommandoname" -082 "%s: Kommando im ex Modus nicht verfuegbar" -083 "Count darf nicht Null sein" +082 "%s: Kommando im ex-Modus nicht verfügbar" +083 "Anzahl darf nicht Null sein" 084 "%s: falsche Zeilenangabe" 085 "Interner Syntaxtabellenfehler (%s: %s)" 086 "Benutzung: %s" -087 "%s: temporaerer Puffer nicht freigegeben" +087 "%s: temporärer Puffer nicht freigegeben" 088 "Flagoffset vor Zeile 1" 089 "Flagoffset hinter dem Dateiende" -090 "@ mit Bereich lief als Datei/Anzeige geaendert wurde" -091 "globales oder v-Kommando lief als Datei/Anzeige geaendert wurde" -092 "Ex Kommando misslungen: restliche Kommandoeingabe ignoriert" -093 "Ex Kommando misslungen: umdefinierte Tasten ungueltig" +090 "@ mit Bereich lief, als Datei/Anzeige geändert wurde" +091 "globales oder v-Kommando lief, als Datei/Anzeige geändert wurde" +092 "Ex-Kommando mißlungen: restliche Kommandoeingabe ignoriert" +093 "Ex-Kommando mißlungen: umdefinierte Tasten ungültig" 094 "Die zweite Adresse ist kleiner als die erste" 095 "Kein Markenname angegeben" 096 "\\ ohne folgenden / oder ?" 097 "Referenz auf eine negative Zeilennummer" 098 "Das Kommando %s ist unbekannt" -099 "Adresswert zu gross" -100 "Adresswert zu klein" -101 "Ungueltige Adresskombination" -102 "Ungueltige Adresse: nur %lu Zeilen in der Datei" -103 "Ungueltige Adresse: die Datei ist leer" +099 "Adreßwert zu groß" +100 "Adreßwert zu klein" +101 "Ungültige Adreßkombination" +102 "Ungültige Adresse: nur %lu Zeilen in der Datei" +103 "Ungültige Adresse: die Datei ist leer" 104 "Das Kommando %s erlaubt keine Adresse 0" -105 "Keine Abkuerzungen zum Anzeigen" -106 "Abkuerzungen muessen mit einem "Wort"-Zeichen enden" -107 "Abkuerzungen duerfen keine Tabulator- oder Leerzeichen enthalten" -108 "In Abkuerzungen duerfen ausser am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werden" -109 ""%s" ist keine Abkuerzung" -110 "Vi Kommando misslungen: umdefinierte Tasten ungueltig" -111 "Keine weiteren Dateien zu edieren" -112 "Keine vorhergehenden Dateien zu edieren" -113 "Keine vorhergehenden Dateien fuer rewind" +105 "Keine Abkürzungen zum Anzeigen" +106 "Abkürzungen müssen mit einem \"Wort\"-Zeichen enden" +107 "Abkürzungen dürfen keine Tabulator- oder Leerzeichen enthalten" +108 "In Abkürzungen dürfen außer am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werden" +109 "\"%s\" ist keine Abkürzung" +110 "Vi Kommando mißlungen: umdefinierte Tasten ungültig" +111 "Keine weiteren Dateien zu editieren" +112 "Keine vorhergehenden Dateien zu editieren" +113 "Keine vorhergehenden Dateien für rewind" 114 "Keine Dateiliste zum Anzeigen" -115 "Kein vorhergehendes Kommando um "!" zu ersetzen" -116 "Kein Dateiname fuer %%" -117 "Kein Dateiname fuer #" +115 "Kein vorhergehendes Kommando, um \"!\" zu ersetzen" +116 "Kein Dateiname für %%" +117 "Kein Dateiname für #" 118 "Fehler: execl: %s" -119 "I/O Fehler: %s" -120 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorieren" +119 "E/A-Fehler: %s" +120 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende ! zum ignorieren" 121 "Kann Homedirectory nicht bestimmen" 122 "Neues aktuelles Directory: %s" 123 "Keine Puffer anzuzeigen" 124 "Das Kommando %s kann nicht als Teil eines global oder v Kommandos verwendet werden" -125 "%s/%s: nicht gelesen: gehoehrt weder Ihnen noch root" -126 "%s/%s: nicht gelesen: gehoehrt nicht Ihnen" -127 "%s/%s: nicht gelesen: anderer Benutzer als Eigentuemer hat Schreibrecht" -128 "%s: nicht gelesen: gehoehrt weder Ihnen noch root" -129 "%s: nicht gelesen: gehoehrt nicht Ihnen" -130 "%s: nicht gelesen: anderer Benutzer als Eigentuemer hat Schreibrecht" +125 "%s/%s: nicht gelesen: gehört weder Ihnen noch root" +126 "%s/%s: nicht gelesen: gehört nicht Ihnen" +127 "%s/%s: nicht gelesen: anderer Benutzer als Eigentümer hat Schreibrecht" +128 "%s: nicht gelesen: gehört weder Ihnen noch root" +129 "%s: nicht gelesen: gehört nicht Ihnen" +130 "%s: nicht gelesen: anderer Benutzer als Eigentümer hat Schreibrecht" 131 "Keine folgenden Zeilen zum Verbinden" -132 "Kein Eingabe-Map Eintrag" -133 "Kein Kommando-Map Eintrag" +132 "Kein input-Map Eintrag" +133 "Kein command-Map Eintrag" 134 "Das %s Zeichen kann nicht umgemappt werden" -135 ""%s" ist momentan nicht gemappt" -136 "Markennamen muessen einzelne Buchstaben sein" -137 "%s existiert, nicht geschrieben; verwende ! zum Ueberschreiben" +135 "\"%s\" ist momentan nicht gemappt" +136 "Markennamen müssen einzelne Buchstaben sein" +137 "%s existiert, nicht geschrieben; verwende ! zum Überschreiben" 138 "Neue .exrc Datei: %s. " 139 "Zielzeile ist innerhalb des Verschiebebereichs" -140 "Das open Kommando verlangt, dass die open Option gesetzt ist" +140 "Das open Kommando verlangt, daß die open Option gesetzt ist" 141 "Das open Kommando ist nocht nicht implementiert" -142 "Rettung dieser Datei nicht moeglich" +142 "Rettung dieser Datei nicht möglich" 143 "Datei gerettet" 144 "%s wurde in zu viele Dateinamen expandiert" -145 "Nur regulaere Dateien und named pipes koennen gelesen werden" -146 "%s: Lesesperrung war nicht moeglich" +145 "Nur reguläre Dateien und named pipes können gelesen werden" +146 "%s: Locken zum Lesen war nicht möglich" 147 "lese ..." 148 "%s: %lu Zeilen, %lu Zeichen" -149 "Keine Hintegrundanzeigen vorhanden" -150 "Das script Kommando ist nur im vi Modus verfuegbar" -151 "Kein Kommando auszufuehren" +149 "Keine Hintergrundanzeigen vorhanden" +150 "Das script Kommando ist nur im vi Modus verfügbar" +151 "Kein Kommando auszuführen" 152 "shiftwidth Option auf 0 gesetzt" -153 "Count ueberlauf" -154 "Count unterlauf" -155 "Regulaerer Ausdruck angegeben; r Flag bedeutungslos" -156 "Die #, l und p Flags koennen im vi Modus nicht mit dem c Flag kombiniert werden" -157 "Keine Uebereinstimmung gefunden" +153 "Anzahl-Überlauf" +154 "Anzahl-Unterlauf" +155 "Regulärer Ausdruck angegeben; r Flag bedeutungslos" +156 "Die #, l und p Flags können im vi Modus nicht mit dem c Flag kombiniert werden" +157 "Keine Übereinstimmung gefunden" 158 "Kein vorhergehender 'tag' angegeben" -159 "Weniger als %s Eintraege auf dem 'tag'-Stack; verwende :display t[ags]" +159 "Weniger als %s Einträge auf dem 'tag'-Stack; verwende :display t[ags]" 160 "Keine Datei namens %s auf dem 'tag'-Stack; verwende :display t[ags]" -161 "Druecke Enter um fortzufahren: " +161 "Drücke Enter um fortzufahren: " 162 "%s: 'tag' nicht gefunden" 163 "%s: kaputter 'tag' in %s" 164 "%s: die Zeilennummer des 'tag' ist hinter dem Dateiende" 165 "Der 'tag' Stack ist leer" 166 "%s: Suchmuster nicht gefunden" -167 "%d weitere Dateien zu edieren" +167 "%d weitere Dateien zu editieren" 168 "Puffer %s ist leer" -169 "Bestaetige Aenderung [n]" +169 "Bestätige Änderung [n]" 170 "Unterbrochen." -171 "Kein vorhergehender Puffer zum Ausfuehren" -172 "Kein vorhergehender regulaerer Ausdruck" -173 "Das Kommando %s verlangt, dass bereits eine Datei eingelesen wurde" +171 "Kein vorhergehender Puffer zum Ausführen" +172 "Kein vorhergehender regulärer Ausdruck" +173 "Das Kommando %s verlangt, daß bereits eine Datei eingelesen wurde" 174 "Benutzung: %s" -175 "Das visual Kommando verlangt dass die open Option gesetzt ist" +175 "Das visual Kommando verlangt daß die open Option gesetzt ist" 177 "Leere Datei" 178 "Keine vorhergehende F, f, T oder t Suche" 179 "%s nicht gefunden" -180 "Keine vorhergehende Datei zu edieren" +180 "Keine vorhergehende Datei zu editieren" 181 "Cursor nicht auf einer Zahl" -182 "Sich ergebende Zahl ist zu gross" +182 "Sich ergebende Zahl ist zu groß" 183 "Sich ergebende Zahl ist zu klein" 184 "Kein korrespondierendes Zeichen in dieser Zeile" 185 "Korrespondierendes Zeichen nicht gefunden" @@ -180,11 +179,11 @@ 187 "Keine andere Anzeige zum Hinschalten" 188 "Zeichen nach Suchmuster, Zeilenoffset und/oder z Kommando" 189 "Kein altes Suchmuster" -190 "Suche zur urspruenglichen Position umgeschlagen" -191 "Abkuerzung ueberschreitet Expansionsgrenze: Zeichen weggelassen" +190 "Suche zur ursprünglichen Position zurückgekehrt" +191 "Abkürzung überschreitet Expansionsgrenze: Zeichen weggelassen" 192 "Nicht erlaubtes Zeichen; maskiere zum Eingeben" 193 "Bereits am Anfang der Eingabe" -194 "Keine weiteren Zeichen zu loeschen" +194 "Keine weiteren Zeichen zu löschen" 195 "Bewegung hinter das Dateiende" 196 "Bewegung hinter das Zeilenende" 197 "Keine Cursorbewegung gemacht" @@ -196,73 +195,73 @@ 203 "Bereits am Zeilenende" 204 "%s ist kein vi Kommando" 205 "Benutzung: %s" -206 "Keine Zeichen zu loeschen" -207 "Das Q Kommando benoetigt das ex Terminal Interface" +206 "Keine Zeichen zu löschen" +207 "Das Q Kommando benötigt das ex Terminal Interface" 208 "Kein Kommando zu wiederholen" 209 "Die Datei ist leer" 210 "%s kann nicht als Bewegungskommando verwendet werden" 211 "Bereits im Kommando-Modus" 212 " Cursor nicht auf einem Wort" -214 "Wert der Window Option ist zu gross, max ist %u" -215 "Anfuegen" -216 "Aendern" +214 "Wert der Window Option ist zu groß, max ist %u" +215 "Anhängen" +216 "Ändern" 217 "Kommando" -218 "Einfuegen" +218 "Einfügen" 219 "Ersetzen" 220 "Bewegung hinter das Anzeigenende" 221 "Bewegung vor den Anzeigenanfang" -222 "Anzeige muss zum Zerlegen groesser als %d sein" +222 "Anzeige muß für Bildschirmteilung größer als %d sein" 223 "Keine Hintergrundanzeigen vorhanden" -224 "Es gibt keine Hintergrundanzeige die eine Datei namens %s ediert" +224 "Es gibt keine Hintergrundanzeige, die eine Datei namens %s editiert" 225 "Die einzige dargestellte Anzeige kann nicht in den Hintergrund gebracht werden" 226 "Die Anzeige kann nur auf %d Zeilen verkleinert werden" 227 "Die Anzeige kann nicht verkleinert werden" -228 "Die Anzeige kann nicht vergroessert werden" -230 "Diese Anzeige kann nicht gestopped werden" -231 "Unterbrochen: umdefinierte Tasten ungueltig" -232 "vi: temporaerer Puffer nicht freigegeben" +228 "Die Anzeige kann nicht vergrößert werden" +230 "Diese Anzeige kann nicht gestopt werden" +231 "Unterbrochen: umdefinierte Tasten ungültig" +232 "vi: temporärer Puffer nicht freigegeben" 233 "Dieses Terminal hat keine %s Taste" 234 "es kann nur ein Puffer angegeben werden" -235 "Zahl groesser als %lu" +235 "Zahl größer als %lu" 236 "Unterbrochen" -237 "Nicht moeglich temporaere Datei anzulegen" -238 "Warnung: %s ist keine regulaere Datei" -239 "%s ist bereits gesperrt, nur-lese Editorsitzung" -240 "%s: loeschen" -241 "%s: schliessen" -242 "%s: loeschen" -243 "%s: loeschen" -244 "Nur-lese Datei, nicht geschrieben; verwende ! zum Ueberschreiben" -245 "Nur-lese Datei, nicht geschrieben" -246 "%s existiert, nicht geschrieben; verwende ! zum Ueberschreiben" +237 "Nicht möglich, temporäre Datei anzulegen" +238 "Warnung: %s ist keine reguläre Datei" +239 "%s ist bereits gelockt, Editorsitzung schreibgeschützt" +240 "%s: löschen" +241 "%s: schließen" +242 "%s: löschen" +243 "%s: löschen" +244 "Datei nicht schreibbar, nicht geschrieben; verwende ! zum Überschreiben" +245 "Datei nicht schreibbar, nicht geschrieben" +246 "%s existiert, nicht geschrieben; verwende ! zum Überschreiben" 247 "%s existiert, nicht geschrieben" -248 "Teil der Datei, nicht geschrieben; verwende ! zum Ueberschreiben" +248 "Teil der Datei, nicht geschrieben; verwende ! zum Überschreiben" 249 "Teil der Datei, nicht geschrieben" -250 "%s: Datei wurde spaeter als diese Kopie veraendert; verwende ! zum Ueberschreiben" -251 "%s: Datei wurde spaeter als diese Kopie veraendert" -252 "%s: Schreibsperrung war nicht moeglich" +250 "%s: Datei wurde später als diese Kopie verändert; verwende ! zum Überschreiben" +251 "%s: Datei wurde später als diese Kopie verändert" +252 "%s: Locken zum Schreiben war nicht möglich" 253 "schreibe ..." 254 "%s: WARNUNG: DATEI ABGESCHNITTEN" 255 "Bereits am ersten 'tag' dieser Gruppe" 256 "%s: neue Datei: %lu Zeilen, %lu Zeichen" 257 "%s: %lu Zeilen, %lu Zeichen" 258 "%s wurde in zu viele Dateinamen expandiert" -259 "%s: keine regulaere Datei" -260 "%s: gehoehrt nicht Ihnen" -261 "%s: anderer Benutzer als Eigentuemer hat Zugriff" -262 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorieren" -263 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende :edit! zum ignorieren" -264 "Datei wurde seit dem letzten vollstaendigen Schreiben geaendert; schreibe oder verwende ! zum ignorieren" -265 "Datei ist temporaer; beim Verlassen gehen die Aenderungen verloren" -266 "Nur-lese Datei, Aenderungen werden nicht automatisch geschrieben" +259 "%s: keine reguläre Datei" +260 "%s: gehört nicht Ihnen" +261 "%s: anderer Benutzer als Eigentümer hat Zugriff" +262 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende ! zum ignorieren" +263 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende :edit! zum ignorieren" +264 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende ! zum ignorieren" +265 "Datei ist temporär; beim Verlassen gehen die Änderungen verloren" +266 "Datei ist schreibgeschützt, Änderungen werden nicht automatisch geschrieben" 267 "Portokollierung neu begonnen" -268 "bestaetigen [ynq]" -269 "Druecke beliebige Taste um fortzufahren" -270 "Druecke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: " -271 "Druecke beliebige Taste um fortzufahren [q zum Verlassen]: " -272 "Diese Form von %s benoetigt das ex Terminal-Interface" +268 "bestätigen [ynq]" +269 "Drücke beliebige Taste um fortzufahren" +270 "Drücke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: " +271 "Drücke beliebige Taste um fortzufahren [q zum Verlassen]: " +272 "Diese Form von %s benötigt das ex Terminal-Interface" 273 "Gehe in ex Eingabe-Modus.\n" -274 "Kommando schief gelaufen, noch keine Datei eingelesen" +274 "Kommando schiefgelaufen, noch keine Datei eingelesen" 275 " weiter?" 276 "unerwartetes Zeichen - Ereignis" 277 "unerwartetes Dateiende - Ereignis" @@ -271,18 +270,18 @@ 280 "unerwartetes Verlassen - Ereignis" 281 "unerwartetes Wiederherstellungs - Ereignis" 282 "Bereits am letzten 'tag' dieser Gruppe" -283 "Das %s Kommando benoetigt das ex Terminal-Interface" -284 "Diese Form von %s wird nicht unterstuetzt wenn die 'secure edit' - Option gesetzt ist" +283 "Das %s Kommando benötigt das ex Terminal-Interface" +284 "Diese Form von %s wird nicht unterstützt wenn die 'secure edit' - Option gesetzt ist" 285 "unerwartetes Zeichenketten - Ereignis" 286 "unerwartetes timeout - Ereignis" 287 "unerwartetes Schreibe - Ereignis" -289 "Shell Expandierungen nicht unterstuetzt wenn die 'secure edit' - Option gesetzt ist" -290 "Das %s Kommando wird nicht unterstuetzt wenn die 'secure edit' - Option gesetzt ist" +289 "Shell Expandierungen nicht unterstützt wenn die 'secure edit' - Option gesetzt ist" +290 "Das %s Kommando wird nicht unterstützt wenn die 'secure edit' - Option gesetzt ist" 291 "set: %s kann nicht ausgeschaltet werden" 292 "Anzeige zu klein." -293 "angefuegt" -294 "geaendert" -295 "geloescht" +293 "angefügt" +294 "geändert" +295 "gelöscht" 296 "verbunden" 297 "verschoben" 298 "geschoben" @@ -290,18 +289,18 @@ 300 "Zeile" 301 "Zeilen" 302 "Vi wurde nicht mit dem Tcl Interpreter gelinkt" -303 "Datei wurde seit dem letzten Schreiben veraendert." -304 "Shell Expansion nicht geklappt" -305 "Es ist keine %s Edieroption angegeben" +303 "Datei wurde seit dem letzten Schreiben verändert." +304 "Shell Expansion hat nicht geklappt" +305 "Es ist keine %s Editieroption angegeben" 306 "Vi wurde nicht mit einem Perl Interpreter geladen" -307 "Kein ex Kommando auszufuehren" -308 "Druecke um ein Kommando auszufuehren, :q zum verlassen" -309 "Verwende "cscope help" fuer Hilestellung" +307 "Kein ex Kommando auszuführen" +308 "Drücke um ein Kommando auszuführen, :q zum verlassen" +309 "Verwende \"cscope help\" für Hilestellung" 310 "Keine cscope Verbindung aktiv" 311 "%s: unbekannter Suchtyp: verwende einen aus %s" 312 "%d: keine solche cscope Verbindung" 313 "set: die %s Option kann nicht eingeschaltet werden" 314 "set: die %s Option kann nicht auf 0 gesetzt werden" -315 "%s: angefuegt: %lu Zeilen, %lu Zeichen" -316 "unerwartetes Groessenveraenderungs - Ereignis" +315 "%s: angefügt: %lu Zeilen, %lu Zeichen" +316 "unerwartetes Größenveränderungs - Ereignis" 317 "%d Dateien zu edieren" Modified: head/contrib/nvi/catalog/german.owner ============================================================================== --- head/contrib/nvi/catalog/german.owner Sun Aug 11 18:57:27 2013 (r254224) +++ head/contrib/nvi/catalog/german.owner Sun Aug 11 20:03:12 2013 (r254225) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 20:46:06 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 10FDA9F8; Sun, 11 Aug 2013 20:46:06 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F052226D8; Sun, 11 Aug 2013 20:46:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BKk5gs022489; Sun, 11 Aug 2013 20:46:05 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BKk5cW022488; Sun, 11 Aug 2013 20:46:05 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308112046.r7BKk5cW022488@svn.freebsd.org> From: Peter Wemm Date: Sun, 11 Aug 2013 20:46:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254227 - head/usr.bin/vi/catalog X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 20:46:06 -0000 Author: peter Date: Sun Aug 11 20:46:05 2013 New Revision: 254227 URL: http://svnweb.freebsd.org/changeset/base/254227 Log: Don't install a ru_SU.KOI8-R symlink, 'make delete-old' will just remove it again. Modified: head/usr.bin/vi/catalog/Makefile Modified: head/usr.bin/vi/catalog/Makefile ============================================================================== --- head/usr.bin/vi/catalog/Makefile Sun Aug 11 20:24:00 2013 (r254226) +++ head/usr.bin/vi/catalog/Makefile Sun Aug 11 20:46:05 2013 (r254227) @@ -163,7 +163,6 @@ SYMLINKS+= swedish ${FILESDIR}/$l.ISO885 SYMLINKS+= polish ${FILESDIR}/$l.ISO8859-2 .endfor # iconv not required for these. -SYMLINKS+= ru_RU.KOI8-R ${FILESDIR}/ru_SU.KOI8-R SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GB18030 SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GBK SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.eucCN From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 21:15:04 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D44C8383; Sun, 11 Aug 2013 21:15:04 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C1B282814; Sun, 11 Aug 2013 21:15:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BLF4XP034079; Sun, 11 Aug 2013 21:15:04 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BLF4Hf034078; Sun, 11 Aug 2013 21:15:04 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201308112115.r7BLF4Hf034078@svn.freebsd.org> From: Attilio Rao Date: Sun, 11 Aug 2013 21:15:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254228 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 21:15:04 -0000 Author: attilio Date: Sun Aug 11 21:15:04 2013 New Revision: 254228 URL: http://svnweb.freebsd.org/changeset/base/254228 Log: Correct the recovery logic in vm_page_alloc_contig: what is really needed on this code snipped is that all the pages that are already fully inserted gets fully freed, while for the others the object removal itself might be skipped, hence the object might be set to NULL. Sponsored by: EMC / Isilon storage division Reported by: alc, kib Reviewed by: alc Modified: head/sys/vm/vm_page.c Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Sun Aug 11 20:46:05 2013 (r254227) +++ head/sys/vm/vm_page.c Sun Aug 11 21:15:04 2013 (r254228) @@ -1807,11 +1807,9 @@ retry: &deferred_vdrop_list); if (vm_paging_needed()) pagedaemon_wakeup(); - for (m = m_ret, m_tmp = m_ret; + for (m_tmp = m, m = m_ret; m < &m_ret[npages]; m++) { - if (m_tmp < m) - m_tmp++; - else + if (m >= m_tmp) m->object = NULL; vm_page_free(m); } From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 21:21:02 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id EB2C64EA; Sun, 11 Aug 2013 21:21:02 +0000 (UTC) (envelope-from cognet@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D8C522858; Sun, 11 Aug 2013 21:21:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BLL2pg037122; Sun, 11 Aug 2013 21:21:02 GMT (envelope-from cognet@svn.freebsd.org) Received: (from cognet@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BLL2H5037121; Sun, 11 Aug 2013 21:21:02 GMT (envelope-from cognet@svn.freebsd.org) Message-Id: <201308112121.r7BLL2H5037121@svn.freebsd.org> From: Olivier Houchard Date: Sun, 11 Aug 2013 21:21:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254229 - head/sys/arm/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 21:21:03 -0000 Author: cognet Date: Sun Aug 11 21:21:02 2013 New Revision: 254229 URL: http://svnweb.freebsd.org/changeset/base/254229 Log: Only allocate 2 bounce pages for maps that can only use them for buffers that are unaligned on cache lines boundary, as we will never need more. Modified: head/sys/arm/arm/busdma_machdep-v6.c Modified: head/sys/arm/arm/busdma_machdep-v6.c ============================================================================== --- head/sys/arm/arm/busdma_machdep-v6.c Sun Aug 11 21:15:04 2013 (r254228) +++ head/sys/arm/arm/busdma_machdep-v6.c Sun Aug 11 21:21:02 2013 (r254229) @@ -425,6 +425,8 @@ bus_dma_tag_create(bus_dma_tag_t parent, if (_bus_dma_can_bounce(newtag->lowaddr, newtag->highaddr) || newtag->alignment > 1) newtag->flags |= BUS_DMA_COULD_BOUNCE; + else + maxsize = 2; /* Need at most 2 bounce pages for unaligned access on cache line boundaries */ if ((flags & BUS_DMA_ALLOCNOW) != 0) { struct bounce_zone *bz; @@ -519,7 +521,10 @@ static int allocate_bz_and_pages(bus_dma * Attempt to add pages to our pool on a per-instance * basis up to a sane limit. */ - maxpages = MAX_BPAGES; + if (dmat->flags & BUS_DMA_COULD_BOUNCE) + maxpages = MAX_BPAGES; + else + maxpages = 2 * bz->map_count; /* Only need at most 2 pages for buffers unaligned on cache line boundaries */ if ((dmat->flags & BUS_DMA_MIN_ALLOC_COMP) == 0 || (bz->map_count > 0 && bz->total_bpages < maxpages)) { int pages; From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 21:46:07 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2B8CB7D7; Sun, 11 Aug 2013 21:46:07 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 18D382917; Sun, 11 Aug 2013 21:46:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BLk6js045308; Sun, 11 Aug 2013 21:46:06 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BLk6Hp045307; Sun, 11 Aug 2013 21:46:06 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308112146.r7BLk6Hp045307@svn.freebsd.org> From: Peter Wemm Date: Sun, 11 Aug 2013 21:46:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254230 - head/usr.bin/vi/catalog X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 21:46:07 -0000 Author: peter Date: Sun Aug 11 21:46:06 2013 New Revision: 254230 URL: http://svnweb.freebsd.org/changeset/base/254230 Log: Don't build the UTF-8 version of the catalogs without iconv enabled. Pointy-hat to: peter (don't do things at 4am!) Modified: head/usr.bin/vi/catalog/Makefile Modified: head/usr.bin/vi/catalog/Makefile ============================================================================== --- head/usr.bin/vi/catalog/Makefile Sun Aug 11 21:21:02 2013 (r254229) +++ head/usr.bin/vi/catalog/Makefile Sun Aug 11 21:46:06 2013 (r254230) @@ -5,13 +5,6 @@ V= ${.CURDIR}/../../../contrib/nvi -.if ${MK_ICONV} == yes -UCAT= dutch english french german polish spanish swedish -.else -# turn on WITH_ICONV=yes if you want UTF-8 -UCAT= -.endif - CAT= dutch english french german polish ru_RU.KOI8-R spanish swedish \ uk_UA.KOI8-U zh_CN.GB2312 @@ -23,7 +16,11 @@ all: dump build-tools: dump -.for c in ${UCAT} +# If we have iconv available, convert the ISO-8859 encoded files +# to UTF-8 as well. +.if ${MK_ICONV} == yes + +.for c in dutch english french german polish spanish swedish CAT+= ${c}.UTF-8 CLEANFILES+=${c}.UTF-8.base $c.UTF-8.base: ${c}.base @@ -45,6 +42,8 @@ uk_UA.UTF-8.base: uk_UA.KOI8-U.base ru_RU.UTF-8.base: ru_RU.KOI8-R.base iconv -f KOI8-R -t UTF-8 ${.ALLSRC} > ${.TARGET} +.endif + .for c in ${CAT} ${c}: ${c}.base @echo "... $c"; \ From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 21:46:39 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DEB5F90D for ; Sun, 11 Aug 2013 21:46:38 +0000 (UTC) (envelope-from scott4long@yahoo.com) Received: from nm15-vm2.bullet.mail.ne1.yahoo.com (nm15-vm2.bullet.mail.ne1.yahoo.com [98.138.91.91]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8ED42291D for ; Sun, 11 Aug 2013 21:46:38 +0000 (UTC) Received: from [98.138.226.176] by nm15.bullet.mail.ne1.yahoo.com with NNFMP; 11 Aug 2013 21:40:10 -0000 Received: from [98.138.84.41] by tm11.bullet.mail.ne1.yahoo.com with NNFMP; 11 Aug 2013 21:40:10 -0000 Received: from [127.0.0.1] by smtp109.mail.ne1.yahoo.com with NNFMP; 11 Aug 2013 21:40:10 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1376257210; bh=1JKaHRi2TFqwNaR/oRkjAeoIo4YaPmlszuCCiEuwezg=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:X-Rocket-Received:Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References:To:X-Mailer; b=Da2LXx/D3eTaCQ2QCbtAPLQAnykLVJhdtbCjDADIaMKqIFBLNhx6opqwFrzmV/tEisx+CamxbnEPrhoBRNmo3Vy+a57H5sSh55w14COOcrSftImG8L0+kh7wD4pdwHNP7Vqp7npI0TgDvXSaEsiZSUGYOTGc+Jh0AJA71zAWrTA= X-Yahoo-Newman-Id: 399430.40155.bm@smtp109.mail.ne1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: AYw5ehIVM1m2TlALwTEmdoAwpfOeNIrVdLIwtRyFPrKCBg5 _5bDrMFEZSaRpbIN1erYshU98YDPBx7_.RvIsEN18v9IPT25mbmVwDkDX4vy ipGrJlQGbUufGgWyAhsqNMbJdBrjeDY2aPrgegA6K2q1ofGd1PA7J_zN1TmX uF6ai7TX3SBdFQsdpBUfzl4SwNE30RGCBU9pYeXCW9AH0UvDg7ohyqdtN8E3 ewUoPnytJvGP_KxehDPwlk83w4NuK78coZAgFtE4Jq.DZu_OWDtpBGhaQWOD ao0HMvefHoQ.dBN_HraZ_SrDpgBsIbngi1qA8cdCSMxx7uXllAlK53JQ8htE 4CoFwjNErdJSN5Rlr.BcBXu61qTCsLJapU2JyPZLLtwUNNVTC2uOFQ7by_US hdRN5D.WKYh4kKasX.HGyVT0h6W9IlsZCBZXe.PQdFLXCtRff9IcKpI7D7qK n_oRnyKhNb5jqeyFOpv1yBcPOxpbSp1qPcvDbf5E.uKoKk38l3JtQilb3RNS qbnLbrbLLBkvD879no5txQIo.I1LqOfot4S8Wh_AO.WUe4_V8lKVWVVIR.g- - X-Yahoo-SMTP: clhABp.swBB7fs.LwIJpv3jkWgo2NU8- X-Rocket-Received: from [192.168.254.206] (scott4long@168.103.85.57 with ) by smtp109.mail.ne1.yahoo.com with SMTP; 11 Aug 2013 14:40:10 -0700 PDT Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r253460 - head/sys/dev/mps From: Scott Long In-Reply-To: <52077D0D.8090607@FreeBSD.org> Date: Sun, 11 Aug 2013 15:40:09 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201307190012.r6J0Cg1r027645@svn.freebsd.org> <52077D0D.8090607@FreeBSD.org> To: Alexander Motin X-Mailer: Apple Mail (2.1508) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Scott Long X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 21:46:39 -0000 Thanks, I'll look into it. Scott On Aug 11, 2013, at 6:01 AM, Alexander Motin wrote: > On 19.07.2013 03:12, Scott Long wrote: >> Author: scottl >> Date: Fri Jul 19 00:12:41 2013 >> New Revision: 253460 >> URL: http://svnweb.freebsd.org/changeset/base/253460 >>=20 >> Log: >> Overhaul error, information, and debug logging. >>=20 >> Obtained from: Netflix >> MFC after: 3 days >>=20 >> Modified: >> head/sys/dev/mps/mps.c >> head/sys/dev/mps/mps_mapping.c >> head/sys/dev/mps/mps_pci.c >> head/sys/dev/mps/mps_sas.c >> head/sys/dev/mps/mps_sas_lsi.c >> head/sys/dev/mps/mps_table.c >> head/sys/dev/mps/mps_user.c >> head/sys/dev/mps/mpsvar.h >=20 > This change created significant CPU overhead under high I/O rate (350K = IOPS) because several functions inside mpssas_log_command() are now = writing into the buffer that is just discarded after that. The following = simple patch seems fixes the situation for me: >=20 > Index: mps_sas.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- mps_sas.c (revision 254181) > +++ mps_sas.c (working copy) > @@ -304,7 +304,7 @@ mpssas_log_command(struct mps_command *cm, u_int l > char str[192]; > char path_str[64]; >=20 > - if (cm =3D=3D NULL) > + if (cm =3D=3D NULL || (cm->cm_sc->mps_debug & level) =3D=3D 0) > return; >=20 > sbuf_new(&sb, str, sizeof(str), 0); >=20 >=20 > --=20 > Alexander Motin From owner-svn-src-head@FreeBSD.ORG Sun Aug 11 21:54:21 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2D760A89; Sun, 11 Aug 2013 21:54:21 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1A629296B; Sun, 11 Aug 2013 21:54:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7BLsKbR048684; Sun, 11 Aug 2013 21:54:20 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7BLsKGh048683; Sun, 11 Aug 2013 21:54:20 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308112154.r7BLsKGh048683@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 11 Aug 2013 21:54:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254231 - head/tools/regression/lib/libc/gen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Aug 2013 21:54:21 -0000 Author: jilles Date: Sun Aug 11 21:54:20 2013 New Revision: 254231 URL: http://svnweb.freebsd.org/changeset/base/254231 Log: fnmatch(): Add test for r254091 (pattern with single backslash). This test cannot be converted to an sh(1) test because the syntax would be invalid. PR: 181129 MFC after: 1 week Modified: head/tools/regression/lib/libc/gen/test-fnmatch.c Modified: head/tools/regression/lib/libc/gen/test-fnmatch.c ============================================================================== --- head/tools/regression/lib/libc/gen/test-fnmatch.c Sun Aug 11 21:46:06 2013 (r254230) +++ head/tools/regression/lib/libc/gen/test-fnmatch.c Sun Aug 11 21:54:20 2013 (r254231) @@ -135,6 +135,8 @@ struct testcase { "\\[", "\\[", 0, FNM_NOMATCH, "\\(", "\\(", 0, FNM_NOMATCH, "\\a", "\\a", 0, FNM_NOMATCH, + "\\", "\\", 0, FNM_NOMATCH, + "\\", "", 0, 0, "\\*", "\\*", FNM_NOESCAPE, 0, "\\?", "\\?", FNM_NOESCAPE, 0, "\\", "\\", FNM_NOESCAPE, 0, @@ -236,6 +238,8 @@ write_sh_tests(const char *progname, int if (strchr(t->pattern, '\'') != NULL || strchr(t->string, '\'') != NULL) continue; + if (t->flags == 0 && strcmp(t->pattern, "\\") == 0) + continue; if (num == 1 && t->flags == 0) printf("test%smatch '%s' '%s'\n", t->result == FNM_NOMATCH ? "no" : "", From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 00:38:48 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 65414B82; Mon, 12 Aug 2013 00:38:48 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 52E652F1A; Mon, 12 Aug 2013 00:38:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C0cmG3009898; Mon, 12 Aug 2013 00:38:48 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C0cmKA009897; Mon, 12 Aug 2013 00:38:48 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308120038.r7C0cmKA009897@svn.freebsd.org> From: Adrian Chadd Date: Mon, 12 Aug 2013 00:38:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254234 - head/sys/mips/atheros X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 00:38:48 -0000 Author: adrian Date: Mon Aug 12 00:38:47 2013 New Revision: 254234 URL: http://svnweb.freebsd.org/changeset/base/254234 Log: Add a missing break. Modified: head/sys/mips/atheros/ar71xx_gpio.c Modified: head/sys/mips/atheros/ar71xx_gpio.c ============================================================================== --- head/sys/mips/atheros/ar71xx_gpio.c Sun Aug 11 22:32:22 2013 (r254233) +++ head/sys/mips/atheros/ar71xx_gpio.c Mon Aug 12 00:38:47 2013 (r254234) @@ -156,6 +156,7 @@ ar71xx_gpio_pin_max(device_t dev, int *m case AR71XX_SOC_AR9342: case AR71XX_SOC_AR9344: *maxpin = AR934X_GPIO_COUNT - 1; + break; default: *maxpin = AR71XX_GPIO_PINS - 1; } From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 01:01:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 032D1E57; Mon, 12 Aug 2013 01:01:29 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-we0-x234.google.com (mail-we0-x234.google.com [IPv6:2a00:1450:400c:c03::234]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E57912FEE; Mon, 12 Aug 2013 01:01:27 +0000 (UTC) Received: by mail-we0-f180.google.com with SMTP id p61so5033972wes.11 for ; Sun, 11 Aug 2013 18:01:26 -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:message-id:subject :from:to:cc:content-type; bh=JEBQL8wyw0FkGTATublHwdRX23uNVFKD/dVYJhQlv6U=; b=gWSvpAFUYLcIIhNa23mmpnk2OJjAJQo6pY9rkK39Z3ka5AT4TG5Pll+u7zbRNo56Pk 6xnzKJzFnQp+E+jPolL7D58+AZPLMipeulXHWP2mgpgKvKcj1VUDonDlHJE1m+ZSVxSW x5fXc6DZ10FCRy+YOaEZ1RWNw29GziTn208nN0WwdVs+TlnHs51tKq1zof7NoM6QyGjI LdoW2U5WCYGxbWN799J7h0HnHF8r9PiHFa1e2eHZBNue8kbBljzYWHxfKA1Pfu6LHchI /mU0b9YzdjRMaV6y5SpXRsfkFH2mSrt3Dr1lQjCEKwy5JVn/H5cRGOFASfgIhgP+yyRh kiXA== MIME-Version: 1.0 X-Received: by 10.194.201.202 with SMTP id kc10mr11419929wjc.1.1376269286198; Sun, 11 Aug 2013 18:01:26 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.217.116.136 with HTTP; Sun, 11 Aug 2013 18:01:26 -0700 (PDT) In-Reply-To: References: <201307190012.r6J0Cg1r027645@svn.freebsd.org> <52077D0D.8090607@FreeBSD.org> Date: Sun, 11 Aug 2013 18:01:26 -0700 X-Google-Sender-Auth: A4l_ptZac6ZacA03JkaWCLP8R9s Message-ID: Subject: Re: svn commit: r253460 - head/sys/dev/mps From: Adrian Chadd To: Scott Long Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-head@freebsd.org, Alexander Motin , src-committers@freebsd.org, Scott Long , svn-src-all@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 01:01:29 -0000 On 11 August 2013 14:40, Scott Long wrote: > Thanks, I'll look into it. Yo! Damnit, I really should create a generic "here's a 64 bit mask for debug" set of macros we can use elsewhere. Anyway, you should consider a #define that means you can avoid actually evaluating the arguments that you pass in. That saves even more CPU. Ie: #ifdef DRV_DEBUG #define DPRINTF(sc, mask, ...) do { if ( (sc)->sc_debug & mask ) dev_printf(sc->sc_dev, __VA_ARGS__); } while (0) #else #define DPRINTF(sc, mask, ...) #endif -adrian From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 02:21:45 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8BED6B0A; Mon, 12 Aug 2013 02:21:45 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 79A4B2347; Mon, 12 Aug 2013 02:21:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C2Ljof054806; Mon, 12 Aug 2013 02:21:45 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C2LjPk054805; Mon, 12 Aug 2013 02:21:45 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308120221.r7C2LjPk054805@svn.freebsd.org> From: Adrian Chadd Date: Mon, 12 Aug 2013 02:21:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254236 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 02:21:45 -0000 Author: adrian Date: Mon Aug 12 02:21:44 2013 New Revision: 254236 URL: http://svnweb.freebsd.org/changeset/base/254236 Log: When flushing packets from the powersave queue, make sure that m_nextpkt is NULL before passing it up to the parent transmit method. Modified: head/sys/net80211/ieee80211_power.c Modified: head/sys/net80211/ieee80211_power.c ============================================================================== --- head/sys/net80211/ieee80211_power.c Mon Aug 12 01:21:14 2013 (r254235) +++ head/sys/net80211/ieee80211_power.c Mon Aug 12 02:21:44 2013 (r254236) @@ -456,6 +456,7 @@ pwrsave_flushq(struct ieee80211_node *ni while (parent_q != NULL) { m = parent_q; parent_q = m->m_nextpkt; + m->m_nextpkt = NULL; /* must be encapsulated */ KASSERT((m->m_flags & M_ENCAP), ("%s: parentq with non-M_ENCAP frame!\n", From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 03:52:24 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6191559A; Mon, 12 Aug 2013 03:52:24 +0000 (UTC) (envelope-from dteske@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 358BF2742; Mon, 12 Aug 2013 03:52:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C3qOas089567; Mon, 12 Aug 2013 03:52:24 GMT (envelope-from dteske@svn.freebsd.org) Received: (from dteske@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C3qOh5089566; Mon, 12 Aug 2013 03:52:24 GMT (envelope-from dteske@svn.freebsd.org) Message-Id: <201308120352.r7C3qOh5089566@svn.freebsd.org> From: Devin Teske Date: Mon, 12 Aug 2013 03:52:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254237 - head/sys/boot/forth X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 03:52:24 -0000 Author: dteske Date: Mon Aug 12 03:52:23 2013 New Revision: 254237 URL: http://svnweb.freebsd.org/changeset/base/254237 Log: Add optional support for default override of standard setup; but only if corresponding functions are provided. If override function does not exist, boot remains unmodified. This patch should not result in any changes. Modified: head/sys/boot/forth/beastie.4th Modified: head/sys/boot/forth/beastie.4th ============================================================================== --- head/sys/boot/forth/beastie.4th Mon Aug 12 02:21:44 2013 (r254236) +++ head/sys/boot/forth/beastie.4th Mon Aug 12 03:52:23 2013 (r254237) @@ -181,8 +181,10 @@ variable logoY \ beastie Color ``Helper Daemon'' mascot (19 rows x 34 columns) \ beastiebw B/W ``Helper Daemon'' mascot (19 rows x 34 columns) \ fbsdbw "FreeBSD" logo in B/W (13 rows x 21 columns) -\ orb Color ``Orb'' mascot (15 rows x 30 columns) (default) +\ orb Color ``Orb'' mascot (15 rows x 30 columns) (2nd default) \ orbbw B/W ``Orb'' mascot (15 rows x 32 columns) +\ tribute Color ``Tribute'' (must fit 19 rows x 34 columns) (default) +\ tributebw B/W ``Tribute'' (must fit 19 rows x 34 columns) \ \ NOTE: Setting `loader_logo' to an undefined value (such as "none") will \ prevent beastie from being drawn. @@ -203,9 +205,21 @@ variable logoY s" loader_logo" getenv dup -1 = if logoX @ logoY @ loader_color? if - orb-logo + s" tribute-logo" + sfind if + execute + else + drop + orb-logo + then else - orbbw-logo + s" tributebw-logo" + sfind if + execute + else + drop + orbbw-logo + then then drop exit then @@ -230,6 +244,24 @@ variable logoY logoX @ logoY @ orbbw-logo 2drop exit then + 2dup s" tribute" compare-insensitive 0= if + logoX @ logoY @ + s" tribute-logo" sfind if + execute + else + orb-logo + then + 2drop exit + then + 2dup s" tributebw" compare-insensitive 0= if + logoX @ logoY @ + s" tributebw-logo" sfind if + execute + else + orbbw-logo + then + 2drop exit + then 2drop ; From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 06:09:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 05F68209; Mon, 12 Aug 2013 06:09:29 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E657F2BFB; Mon, 12 Aug 2013 06:09:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C69Snu040565; Mon, 12 Aug 2013 06:09:28 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C69Swq040564; Mon, 12 Aug 2013 06:09:28 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201308120609.r7C69Swq040564@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 12 Aug 2013 06:09:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254238 - head/sys/dev/usb/controller X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 06:09:29 -0000 Author: hselasky Date: Mon Aug 12 06:09:28 2013 New Revision: 254238 URL: http://svnweb.freebsd.org/changeset/base/254238 Log: Correct an EHCI register write. MFC after: 1 week Reported by: aseem.jolly@gmail.com Modified: head/sys/dev/usb/controller/ehci.c Modified: head/sys/dev/usb/controller/ehci.c ============================================================================== --- head/sys/dev/usb/controller/ehci.c Mon Aug 12 03:52:23 2013 (r254237) +++ head/sys/dev/usb/controller/ehci.c Mon Aug 12 06:09:28 2013 (r254238) @@ -259,7 +259,7 @@ ehci_init_sub(struct ehci_softc *sc) DPRINTF("HCC uses 64-bit structures\n"); /* MUST clear segment register if 64 bit capable */ - EWRITE4(sc, EHCI_CTRLDSSEGMENT, 0); + EOWRITE4(sc, EHCI_CTRLDSSEGMENT, 0); } usbd_get_page(&sc->sc_hw.pframes_pc, 0, &buf_res); From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 09:15:34 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DB1CE733; Mon, 12 Aug 2013 09:15:34 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id ADC7E271C; Mon, 12 Aug 2013 09:15:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C9FYmJ010140; Mon, 12 Aug 2013 09:15:34 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C9FYDO010135; Mon, 12 Aug 2013 09:15:34 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201308120915.r7C9FYDO010135@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 12 Aug 2013 09:15:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254241 - head/tools/tools/usbtest X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 09:15:35 -0000 Author: hselasky Date: Mon Aug 12 09:15:33 2013 New Revision: 254241 URL: http://svnweb.freebsd.org/changeset/base/254241 Log: Fix some signed comparison compile warnings. Modified: head/tools/tools/usbtest/usb_control_ep_test.c head/tools/tools/usbtest/usb_modem_test.c head/tools/tools/usbtest/usb_msc_test.c Modified: head/tools/tools/usbtest/usb_control_ep_test.c ============================================================================== --- head/tools/tools/usbtest/usb_control_ep_test.c Mon Aug 12 09:03:34 2013 (r254240) +++ head/tools/tools/usbtest/usb_control_ep_test.c Mon Aug 12 09:15:33 2013 (r254241) @@ -286,7 +286,7 @@ usb_port_reset_test(uint16_t vid, uint16 } timersub(&sub_tv, &ref_tv, &res_tv); - if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= duration)) + if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= (int)duration)) break; if (libusb20_dev_reset(pdev)) { @@ -445,7 +445,7 @@ usb_suspend_resume_test(uint16_t vid, ui } timersub(&sub_tv, &ref_tv, &res_tv); - if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= duration)) + if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= (int)duration)) break; error = libusb20_dev_set_power_mode(pdev, (iter & 1) ? Modified: head/tools/tools/usbtest/usb_modem_test.c ============================================================================== --- head/tools/tools/usbtest/usb_modem_test.c Mon Aug 12 09:03:34 2013 (r254240) +++ head/tools/tools/usbtest/usb_modem_test.c Mon Aug 12 09:15:33 2013 (r254241) @@ -215,7 +215,7 @@ usb_modem_control_ep_test(struct modem * } timersub(&sub_tv, &ref_tv, &res_tv); - if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= duration)) + if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= (int)duration)) break; LIBUSB20_INIT(LIBUSB20_CONTROL_SETUP, &setup); @@ -333,7 +333,7 @@ usb_modem_data_stress_test(struct modem } timersub(&sub_tv, &ref_tv, &res_tv); - if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= duration)) + if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= (int)duration)) break; libusb20_dev_process(p->usb_dev); Modified: head/tools/tools/usbtest/usb_msc_test.c ============================================================================== --- head/tools/tools/usbtest/usb_msc_test.c Mon Aug 12 09:03:34 2013 (r254240) +++ head/tools/tools/usbtest/usb_msc_test.c Mon Aug 12 09:15:33 2013 (r254241) @@ -798,7 +798,7 @@ retry_read_init: } timersub(&sub_tv, &ref_tv, &res_tv); - if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= p->duration)) + if ((res_tv.tv_sec < 0) || (res_tv.tv_sec >= (int)p->duration)) break; do_io_test(p, lun, lba_max, buffer, reference); From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 09:17:49 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id BA8E8A20; Mon, 12 Aug 2013 09:17:49 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 987152734; Mon, 12 Aug 2013 09:17:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C9HnxC010547; Mon, 12 Aug 2013 09:17:49 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C9HmU3010543; Mon, 12 Aug 2013 09:17:48 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201308120917.r7C9HmU3010543@svn.freebsd.org> From: Hans Petter Selasky Date: Mon, 12 Aug 2013 09:17:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254243 - head/sys/dev/usb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 09:17:49 -0000 Author: hselasky Date: Mon Aug 12 09:17:48 2013 New Revision: 254243 URL: http://svnweb.freebsd.org/changeset/base/254243 Log: - Try to fix build of 32-bit compatibility USB support for FreeBSD and Linux targets without breaking the existing IOCTL API. - Remove some not-needed header file inclusions. - Wrap a long line. MFC after: 1 week Reported by: Damjan Jovanovic Modified: head/sys/dev/usb/usb_compat_linux.c head/sys/dev/usb/usb_hub.c head/sys/dev/usb/usb_ioctl.h head/sys/dev/usb/usb_request.c Modified: head/sys/dev/usb/usb_compat_linux.c ============================================================================== --- head/sys/dev/usb/usb_compat_linux.c Mon Aug 12 09:17:46 2013 (r254242) +++ head/sys/dev/usb/usb_compat_linux.c Mon Aug 12 09:17:48 2013 (r254243) @@ -48,7 +48,6 @@ #include #include -#include #include #include Modified: head/sys/dev/usb/usb_hub.c ============================================================================== --- head/sys/dev/usb/usb_hub.c Mon Aug 12 09:17:46 2013 (r254242) +++ head/sys/dev/usb/usb_hub.c Mon Aug 12 09:17:48 2013 (r254243) @@ -53,7 +53,6 @@ #include #include -#include #include #include Modified: head/sys/dev/usb/usb_ioctl.h ============================================================================== --- head/sys/dev/usb/usb_ioctl.h Mon Aug 12 09:17:46 2013 (r254242) +++ head/sys/dev/usb/usb_ioctl.h Mon Aug 12 09:17:48 2013 (r254243) @@ -31,6 +31,7 @@ #ifndef USB_GLOBAL_INCLUDE_FILE #include +#include /* Building "kdump" depends on these includes */ @@ -43,6 +44,16 @@ #define USB_GENERIC_NAME "ugen" #define USB_TEMPLATE_SYSCTL "hw.usb.template" /* integer type */ +/* + * Align IOCTL structures to hide differences when running 32-bit + * programs under 64-bit kernels: + */ +#ifdef COMPAT_32BIT +#define USB_IOCTL_STRUCT_ALIGN(n) __aligned(n) +#else +#define USB_IOCTL_STRUCT_ALIGN(n) +#endif + /* Definition of valid template sysctl values */ enum { @@ -64,7 +75,7 @@ struct usb_read_dir { #endif uint32_t urd_startentry; uint32_t urd_maxlen; -}; +} USB_IOCTL_STRUCT_ALIGN(8); struct usb_ctl_request { #ifdef COMPAT_32BIT @@ -76,12 +87,12 @@ struct usb_ctl_request { uint16_t ucr_actlen; /* actual length transferred */ uint8_t ucr_addr; /* zero - currently not used */ struct usb_device_request ucr_request; -}; +} USB_IOCTL_STRUCT_ALIGN(8); struct usb_alt_interface { uint8_t uai_interface_index; uint8_t uai_alt_index; -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_gen_descriptor { #ifdef COMPAT_32BIT @@ -100,7 +111,7 @@ struct usb_gen_descriptor { uint8_t ugd_endpt_index; uint8_t ugd_report_type; uint8_t reserved[8]; -}; +} USB_IOCTL_STRUCT_ALIGN(8); struct usb_device_info { uint16_t udi_productNo; @@ -129,7 +140,7 @@ struct usb_device_info { char udi_vendor[128]; char udi_serial[64]; char udi_release[8]; -}; +} USB_IOCTL_STRUCT_ALIGN(2); #define USB_DEVICE_PORT_PATH_MAX 32 @@ -138,24 +149,24 @@ struct usb_device_port_path { uint8_t udp_index; /* which device index */ uint8_t udp_port_level; /* how many levels: 0, 1, 2 ... */ uint8_t udp_port_no[USB_DEVICE_PORT_PATH_MAX]; -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_device_stats { uint32_t uds_requests_ok[4]; /* Indexed by transfer type UE_XXX */ uint32_t uds_requests_fail[4]; /* Indexed by transfer type UE_XXX */ -}; +} USB_IOCTL_STRUCT_ALIGN(4); struct usb_fs_start { uint8_t ep_index; -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_fs_stop { uint8_t ep_index; -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_fs_complete { uint8_t ep_index; -}; +} USB_IOCTL_STRUCT_ALIGN(1); /* This structure is used for all endpoint types */ struct usb_fs_endpoint { @@ -188,7 +199,7 @@ struct usb_fs_endpoint { /* timeout value for no timeout */ #define USB_FS_TIMEOUT_NONE 0 int status; /* see USB_ERR_XXX */ -}; +} USB_IOCTL_STRUCT_ALIGN(8); struct usb_fs_init { /* userland pointer to endpoints structure */ @@ -199,11 +210,11 @@ struct usb_fs_init { #endif /* maximum number of endpoints */ uint8_t ep_index_max; -}; +} USB_IOCTL_STRUCT_ALIGN(8); struct usb_fs_uninit { uint8_t dummy; /* zero */ -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_fs_open { #define USB_FS_MAX_BUFSIZE (1 << 18) @@ -215,20 +226,20 @@ struct usb_fs_open { uint8_t dev_index; /* currently unused */ uint8_t ep_index; uint8_t ep_no; /* bEndpointNumber */ -}; +} USB_IOCTL_STRUCT_ALIGN(4); struct usb_fs_open_stream { struct usb_fs_open fs_open; - uint16_t stream_id; -}; + uint16_t stream_id; /* stream ID */ +} USB_IOCTL_STRUCT_ALIGN(4); struct usb_fs_close { uint8_t ep_index; -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_fs_clear_stall_sync { uint8_t ep_index; -}; +} USB_IOCTL_STRUCT_ALIGN(1); struct usb_gen_quirk { uint16_t index; /* Quirk Index */ @@ -238,11 +249,11 @@ struct usb_gen_quirk { uint16_t bcdDeviceHigh; /* High Device Revision */ uint16_t reserved[2]; /* - * String version of quirk including terminating zero. See UQ_XXX in - * "usb_quirk.h". + * String version of quirk including terminating zero. See + * UQ_XXX in "usb_quirk.h". */ char quirkname[64 - 14]; -}; +} USB_IOCTL_STRUCT_ALIGN(2); /* USB controller */ #define USB_REQUEST _IOWR('U', 1, struct usb_ctl_request) Modified: head/sys/dev/usb/usb_request.c ============================================================================== --- head/sys/dev/usb/usb_request.c Mon Aug 12 09:17:46 2013 (r254242) +++ head/sys/dev/usb/usb_request.c Mon Aug 12 09:17:48 2013 (r254243) @@ -51,7 +51,6 @@ #include #include #include -#include #include #define USB_DEBUG_VAR usb_debug From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 09:56:54 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1EE5D7F5; Mon, 12 Aug 2013 09:56:54 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0AECF2A7A; Mon, 12 Aug 2013 09:56:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7C9useC025343; Mon, 12 Aug 2013 09:56:54 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7C9urH2025338; Mon, 12 Aug 2013 09:56:53 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308120956.r7C9urH2025338@svn.freebsd.org> From: Peter Wemm Date: Mon, 12 Aug 2013 09:56:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254244 - head/usr.bin/vi/catalog X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 09:56:54 -0000 Author: peter Date: Mon Aug 12 09:56:52 2013 New Revision: 254244 URL: http://svnweb.freebsd.org/changeset/base/254244 Log: Give up on using iconv to convert to UTF-8 at build time. I don't see any practical way to make iconv(1) as a build tool. Instead pre-convert. This gives us UTF-8 nvi catalogs even on systems without iconv enabled. Added: head/usr.bin/vi/catalog/dutch.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/french.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/german.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/polish.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/ru_RU.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/spanish.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/swedish.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/uk_UA.UTF-8.base (contents, props changed) head/usr.bin/vi/catalog/zh_CN.UTF-8.base (contents, props changed) Modified: head/usr.bin/vi/catalog/Makefile Modified: head/usr.bin/vi/catalog/Makefile ============================================================================== --- head/usr.bin/vi/catalog/Makefile Mon Aug 12 09:17:48 2013 (r254243) +++ head/usr.bin/vi/catalog/Makefile Mon Aug 12 09:56:52 2013 (r254244) @@ -16,33 +16,19 @@ all: dump build-tools: dump -# If we have iconv available, convert the ISO-8859 encoded files -# to UTF-8 as well. -.if ${MK_ICONV} == yes - -.for c in dutch english french german polish spanish swedish -CAT+= ${c}.UTF-8 -CLEANFILES+=${c}.UTF-8.base -$c.UTF-8.base: ${c}.base -.if ${c} == "polish" - iconv -f ISO8859-2 -t UTF-8 ${.ALLSRC} > ${.TARGET} -.else - iconv -f ISO8859-1 -t UTF-8 ${.ALLSRC} > ${.TARGET} -.endif -.endfor - -CAT+= zh_CN.UTF-8 uk_UA.UTF-8 ru_RU.UTF-8 -CLEANFILES+= zh_CN.UTF-8.base uk_UA.UTF-8.base ru_RU.UTF-8.base -zh_CN.UTF-8.base: zh_CN.GB2312.base - iconv -f GB2312 -t UTF-8 ${.ALLSRC} > ${.TARGET} - -uk_UA.UTF-8.base: uk_UA.KOI8-U.base - iconv -f KOI8-U -t UTF-8 ${.ALLSRC} > ${.TARGET} - -ru_RU.UTF-8.base: ru_RU.KOI8-R.base - iconv -f KOI8-R -t UTF-8 ${.ALLSRC} > ${.TARGET} - -.endif +# Helper since iconv is non trivial to make a build tool +utf8convert: +.for c in dutch french german spanish swedish + iconv -f ISO8859-1 -t UTF-8 $V/catalog/$c.base > $c.UTF-8.base +.endfor + iconv -f ISO8859-2 -t UTF-8 $V/catalog/polish.base > polish.UTF-8.base + iconv -f GB2312 -t UTF-8 $V/catalog/zh_CN.GB2312.base > zh_CN.UTF-8.base + iconv -f KOI8-R -t UTF-8 $V/catalog/ru_RU.KOI8-R.base > ru_RU.UTF-8.base + iconv -f KOI8-U -t UTF-8 $V/catalog/uk_UA.KOI8-U.base > uk_UA.UTF-8.base + +.for c in dutch french german polish spanish swedish zh_CN ru_RU uk_UA +CAT+= $c.UTF-8 +.endfor .for c in ${CAT} ${c}: ${c}.base @@ -134,59 +120,42 @@ SYMLINKS= .for l in ${NLLINKS} SYMLINKS+= dutch ${FILESDIR}/$l.ISO8859-1 SYMLINKS+= dutch ${FILESDIR}/$l.ISO8859-15 +SYMLINKS+= dutch.UTF-8 ${FILESDIR}/$l.UTF-8 .endfor .for l in ${ENLINKS} SYMLINKS+= english ${FILESDIR}/$l.ISO8859-1 SYMLINKS+= english ${FILESDIR}/$l.ISO8859-15 SYMLINKS+= english ${FILESDIR}/$l.US-ASCII +SYMLINKS+= english ${FILESDIR}/$l.UTF-8 .endfor SYMLINKS+= english ${FILESDIR}/POSIX SYMLINKS+= english ${FILESDIR}/C .for l in ${FRLINKS} SYMLINKS+= french ${FILESDIR}/$l.ISO8859-1 SYMLINKS+= french ${FILESDIR}/$l.ISO8859-15 +SYMLINKS+= french.UTF-8 ${FILESDIR}/$l.UTF-8 .endfor .for l in ${DELINKS} SYMLINKS+= german ${FILESDIR}/$l.ISO8859-1 SYMLINKS+= german ${FILESDIR}/$l.ISO8859-15 +SYMLINKS+= german.UTF-8 ${FILESDIR}/$l.UTF-8 .endfor .for l in ${ESLINKS} SYMLINKS+= spanish ${FILESDIR}/$l.ISO8859-1 SYMLINKS+= spanish ${FILESDIR}/$l.ISO8859-15 +SYMLINKS+= spanish.UTF-8 ${FILESDIR}/$l.UTF-8 .endfor .for l in ${SVLINKS} SYMLINKS+= swedish ${FILESDIR}/$l.ISO8859-1 SYMLINKS+= swedish ${FILESDIR}/$l.ISO8859-15 +SYMLINKS+= swedish.UTF-8 ${FILESDIR}/$l.UTF-8 .endfor .for l in ${PLLINKS} SYMLINKS+= polish ${FILESDIR}/$l.ISO8859-2 +SYMLINKS+= polish.UTF-8 ${FILESDIR}/$l.UTF-8 .endfor -# iconv not required for these. SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GB18030 SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.GBK SYMLINKS+= zh_CN.GB2312 ${FILESDIR}/zh_CN.eucCN -.if ${MK_ICONV} == yes -.for l in ${NLLINKS} -SYMLINKS+= dutch.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.for l in ${ENLINKS} -SYMLINKS+= english.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.for l in ${FRLINKS} -SYMLINKS+= french.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.for l in ${DELINKS} -SYMLINKS+= german.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.for l in ${ESLINKS} -SYMLINKS+= spanish.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.for l in ${SVLINKS} -SYMLINKS+= swedish.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.for l in ${PLLINKS} -SYMLINKS+= polish.UTF-8 ${FILESDIR}/$l.UTF-8 -.endfor -.endif .include Added: head/usr.bin/vi/catalog/dutch.UTF-8.base ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/vi/catalog/dutch.UTF-8.base Mon Aug 12 09:56:52 2013 (r254244) @@ -0,0 +1,306 @@ +002 "regel te lang" +003 "kan regel %lu niet verwijderen" +004 "kan niet toevoegen aan regel %lu" +005 "kan niet invoegen vooraan regel %lu" +006 "kan regel %lu niet opslaan" +007 "kan laatste regel niet lezen" +008 "Fout: kan regel %lu niet vinden" +009 "log bestand" +010 "Er vindt geen logging plaats, kan wijzigingen niet ongedaan maken" +011 "geen wijzigingen om ongedaan te maken" +012 "Er vindt geen logging plaats, kan wijzigingen niet ongedaan maken" +013 "Er vindt geen logging plaats, herhaling niet mogelijk" +014 "geen wijzigingen om te herhalen" +015 "%s/%d: schrijven naar log mislukt" +016 "Vi's standaard invoer en uitvoer moeten aan een terminal gekoppeld zijn" +017 "Merk %s: niet gezet" +018 "Merk %s: de regel is verwijderd" +019 "Merk %s: de cursor positie bestaat niet meer" +020 "Fout: " +021 "nieuw bestand" +022 "naam veranderd" +023 "gewijzigd" +024 "ongewijzigd" +025 "NIET BEVEILIGD" +026 "niet schrijfbaar" +027 "regel %lu uit %lu [%ld%%]" +028 "leeg bestand" +029 "regel %lu" +030 "Het bestand %s is geen message catalog" +031 "Niet in staat om de standaard %s optie in te stellen" +032 "Gebruik: %s" +033 "set: optie %s onbekend: 'set all' laat alle opties zien" +034 "set: [no]%s optie kan geen waarde hebben" +035 "set: %s optie moet een waarde hebben" +036 "set: %s optie: %s" +037 "set: %s optie: %s: getal is te groot" +038 "set: %s optie: %s is een ongeldige waarde" +039 "set: %s optie moet een waarde hebben" +040 "Te weinig kolommen op het scherm, minder dan %d" +041 "Aantal kolommen te groot, meer dan %d" +042 "Te weinig regels op het scherm, minder dan %d" +043 "Aantal regels te groot, meer dan %d" +044 "De lisp optie is niet ondersteund" +045 "messages niet uitgeschakeld: %s" +046 "messages niet geactiveerd: %s" +047 "De %s optie moet karakter paren bevatten" +053 "De standaard buffer is leeg" +054 "Buffer %s is leeg" +055 "Bestanden met newlines in de naam kunnen niet hersteld worden" +056 "Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie mislukt" +057 "Bestand wordt gecopieerd voor herstel..." +058 "Herstel mechanisme werkt niet: %s" +059 "Wijzigingen kunnen niet ongedaan gemaakt worden als deze sessie mislukt" +060 "Kon bestand niet veilig stellen: %s" +061 "Bestand wordt gecopieerd voor herstel..." +062 "Informatie met betrekking tot gebruiker nummer %u niet gevonden" +063 "Kan herstel bestand niet beveiligen" +064 "herstel buffer overgelopen" +065 "herstel bestand" +066 "%s: verminkt herstel bestand" +067 "%s: verminkt herstel bestand" +068 "U heeft geen bestand genaamd %s te herstellen" +069 "U kan eerdere versies van dit bestand herstellen" +070 "U kan nog meer bestanden herstellen" +071 "kan geen email versturen: %s" +072 "Bestand leeg; niets om te doorzoeken" +073 "Einde van het bestand bereikt zonder dat het patroon gevonden is" +074 "Geen vorig zoek patroon" +075 "Patroon niet gevonden" +076 "Begin van het bestand bereikt zonder dat het patroon gevonden is" +077 "Zoek-operatie omgeslagen" +078 "Bezig met zoeken..." +079 "Geen niet-printbaar karakter gevonden" +080 "Onbekend commando" +082 "Commando niet beschikbaar in ex mode" +083 "Aantal mag niet nul zijn" +084 "%s: ongeldige regel aanduiding" +085 "Interne fout in syntax tabel (%s: %s)" +086 "Gebruik: %s" +087 "%s: tijdelijke buffer niet vrijgegeven" +088 "Vlag offset voor regel 1" +089 "Vlag offset voorbij bestands einde" +090 "bestand/scherm veranderd tijdens uitvoeren van @ in een blok" +091 "bestand/scherm veranderd tijdens uitvoeren van globaal/v commando" +092 "Ex commando mislukt: rest van commando(s) genegeerd" +093 "Ex commando mislukt: gemappede toetsen genegeerd" +094 "Het tweede adres is kleiner dan het eerste" +095 "Geen merk naam opgegeven" +096 "\\ niet gevolgd door / of ?" +097 "Referentie aan een regel nummer kleiner dan 0" +098 "Het %s commando is onbekend" +099 "Adres waarde te groot" +100 "Adres waarde te klein" +101 "Ongeldige adres combinatie" +102 "Ongeldig adres: slechts %lu regels in het bestand aanwezig" +103 "Ongeldig adres: het bestand is leeg" +104 "Het %s commando staat het adres 0 niet toe" +105 "Geen afkortingen om weer te geven" +106 "Afkortingen moeten eindigen met een \"woord\" letter" +107 "Afkortingen mogen geen tabulaties of spaties bevatten" +108 "Afkortingen mogen geen woord/niet-woord karakters mengen, behalve aan het einde" +109 "\"%s\" is geen afkorting" +110 "Vi commando mislukt: gemappede toetsen genegeerd" +111 "Dit is het laatste bestand" +112 "Dit is het eerste bestand" +113 "Dit is het eerste bestand" +114 "lijst met bestanden is leeg" +115 "Geen voorgaand commando om \"!\" te vervangen" +116 "Geen bestandsnaam voor %%" +117 "Geen bestandsnaam voor #" +118 "Fout: execl: %s" +119 "I/O fout: %s" +120 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren" +121 "Kan uw home directory niet vinden" +122 "Nieuwe huidige directory: %s" +123 "Geen cut buffers aanwezig" +124 "Het %s commando kan niet gebruikt worden in een globaal of v commando" +125 "%s/%s: niet gelezen: noch U noch root is de eigenaar" +126 "%s/%s: niet gelezen: U bent niet de eigenaar" +127 "%s/%s: niet gelezen: kan gewijzigd worden door andere gebruikers" +128 "%s: niet gelezen: noch U noch root is de eigenaar" +129 "%s: niet gelezen: U bent niet de eigenaar" +130 "%s: niet gelezen: kan gewijzigd worden door andere gebruikers" +131 "Geen volgende regel om samen te voegen" +132 "Geen input map entries" +133 "Geen command map entries" +134 "Het %s karakter kan niet ge-remapped worden" +135 "\"%s\" is niet gemapped" +136 "Merk naam moet een enkel karakter zijn" +137 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren" +138 "Nieuw .exrc bestand: %s. " +139 "doel regel ligt in het blok" +140 "Het open commando vereist dat de open optie actief is" +141 "Het open commando is nog niet ondersteund" +142 "Kan dit bestand niet veilig stellen" +143 "Bestand veilig gesteld" +144 "%s resulteert in te veel bestandsnamen" +145 "Alleen echte bestanden en named pipes kunnen gelezen worden" +146 "%s: lees beveiliging niet beschikbaar" +147 "Bezig met lezen..." +148 "%s: %lu regels, %lu karakters" +149 "Geen achtergrond schermen aanwezig" +150 "Het script commando is alleen beschikbaar in vi mode" +151 "Geen comando om uit te voeren" +152 "shiftwidth optie op 0 gezet" +153 "Count te groot" +154 "Count te klein" +155 "Reguliere expressie opgegeven; r vlag heeft geen betekenis" +156 "De #, l en p vlaggen kunnen niet gecombineerd worden met de c vlag in vi mode" +157 "Geen match gevonden" +158 "Geen voorafgaande tag aanwezig" +159 "Minder dan %s elementen op de tags stapel; gebruik :display t[ags]" +160 "Geen bestand genaamd %s op de tags stapel; gebruik :display t[ags]" +161 "Kies Enter om door te gaan: " +162 "%s: tag niet gevonden" +163 "%s: verminkte tag in %s" +164 "%s: Het regel nummer van deze tag is voorbij het einde van het bestand" +165 "De tags stapel is leeg" +166 "%s: zoek patroon niet gevonden" +167 "%d andere bestanden te wijzigen" +168 "Buffer %s is leeg" +169 "Bevestig wijziging? [n]" +170 "Onderbroken" +171 "Geen voorafgaande buffer om uit te voeren" +172 "Geen vorige reguliere expressie" +173 "Het %s commando vereist dat er een bestand geladen is" +174 "Gebruik: %s" +175 "Het visual commando vereist dat de open optie actief is" +177 "Leeg bestand" +178 "Geen voorafgaand F, f, T of t zoek commando" +179 "%s niet gevonden" +180 "Geen voorafgaand bestand te bewerken" +181 "Cursor niet op een getal" +182 "Getal wordt te groot" +183 "Getal wordt te klein" +184 "Geen overeenkomstig karakter op deze regel" +185 "Overeenkomstig karakter niet gevonden" +186 "Geen karakters te vervangen" +187 "Geen ander scherm aanwezig" +188 "Karakters achter het zoek patroon, de regel offset, en/of het z commando" +189 "Geen voorafgaand zoek patroon" +190 "Zoekopdracht na omslag teruggekeerd op originele positie" +191 "Afkorting overschrijdt expansie limiet: karakters genegeerd" +192 "Ongeldig karakter; quote to enter" +193 "Reeds aan het begin van de invoer" +194 "Niet meer karakters te verwijderen" +195 "Verplaatsing voorbij het einde van het bestand" +196 "Verplaatsing voorbij het einde van de regel" +197 "Cursor niet verplaatst" +198 "Reeds aan het begin van het bestand" +199 "Verplaatsing voorbij het begin van het bestand" +200 "Reeds in de eerste kolom" +201 "Buffers moeten voor het commando opgegeven worden" +202 "Reeds bij het einde van het bestand" +203 "Reeds bij het einde van de regel" +204 "%s is geen vi commando" +205 "Gebruik: %s" +206 "Geen karakters te verwijderen" +207 "Het Q commando vereist de ex terminal interface" +208 "Geen commando om te herhalen" +209 "Het bestand is leeg" +210 "%s mag niet gebruikt worden als een verplaatsings commando" +211 "Al in commando mode" +212 "Cursor niet in een woord" +214 "Windows optie waarde is te groot, maximum is %u" +215 "Toevoegen" +216 "Veranderen" +217 "Commando" +218 "Invoegen" +219 "Vervangen" +220 "Verplaatsing voorbij het eind van het scherm" +221 "Verplaatsing voorbij het begin van het scherm" +222 "Scherm moet meer dan %d regels hebben om het te kunnen splitsen" +223 "Er zijn geen achtergrond schermen" +224 "Er is geen achtergrond scherm waarin U bestand %s aan het bewerken bent" +225 "U kan uw enige scherm niet in de achtergrond zetten" +226 "Het scherm kan slechts verkleind worden tot %d regels" +227 "Het scherm kan niet kleiner" +228 "Het scherm kan niet groter" +230 "Dit scherm kan niet gesuspend worden" +231 "Onderbroken: gemappede toetsen genegeerd" +232 "vi: tijdelijke buffer niet vrijgegeven" +233 "Deze terminal heeft geen %s toets" +234 "Er kan slechts een buffer opgegeven worden" +235 "Getal groter dan %lu" +236 "Onderbroken" +237 "Aanmaken van tijdelijk bestand is mislukt" +238 "Waarschuwing: %s is geen regulier bestand" +239 "%s is al geopend, bestand is in deze sessie niet schrijfbaar" +240 "%s: verwijdering mislukt" +241 "%s: sluiting mislukt" +242 "%s: verwijdering mislukt" +243 "%s: verwijdering mislukt" +244 "Bestand niet schrijfbaar, niet weggeschreven; gebruik ! om het te forceren" +245 "Bestand niet schrijfbaar, niet weggeschreven" +246 "%s bestaat al, niet weggeschreven; gebruik ! om het te forceren" +247 "%s bestaat al, niet weggeschreven" +248 "Gebruik ! om een incompleet bestand weg te schrijven" +249 "Bestand incompleet, niet weggeschreven" +250 "%s: bestand op disk nieuwer dan deze versie; gebruik ! om het te forceren" +251 "%s: bestand op disk nieuwer dan deze versie" +252 "%s: schrijf beveiliging niet beschikbaar" +253 "Bezig met schrijven..." +254 "%s: WAARSCHUWING: BESTAND INCOMPLEET" +255 "Reeds op de eerste tag van deze groep" +256 "%s: nieuw bestand: %lu regels, %lu karakters" +257 "%s: %lu regels, %lu karakters" +258 "%s resulteert in te veel bestandsnamen" +259 "%s: geen normaal bestand" +260 "%s: U bent niet de eigenaar" +261 "%s: kan gewijzigd worden door andere gebruikers" +262 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren" +263 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik :edit! om het te forceren" +264 "Bestand gewijzigd sinds laatste schrijfactie; schrijf het weg of gebruik ! om het te forceren" +265 "Tijdelijk bestand; exit negeert wijzigingen" +266 "Bestand niet schrijfbaar, wijzigingen niet automatisch weggeschreven" +267 "log opnieuw gestart" +268 "Bevestig? [ynq]" +269 "Druk op een toets om door te gaan: " +270 "Druk op een toets om door te gaan [: voor meer ex commandos]: " +271 "Druk op een toets om door te gaan [q om te stoppen]: " +272 "Deze vorm van %s vereist de ex terminal interface" +273 "Entering ex input mode." +274 "Commando mislukt, nog geen bestand geladen." +275 " doorgaan?" +276 "Onverwacht character event" +277 "Onverwacht end-of-file event" +278 "Geen match gevonden voor dit patroon" +279 "Onverwacht interrupt event" +280 "Onverwacht quit event" +281 "Onverwacht repaint event" +282 "Reeds op de laatste tag van deze groep" +283 "Het %s command vereist de ex terminal interface" +284 "Deze vorm van %s is niet ondersteund als de secure edit optie actief is" +285 "Onverwacht string event" +286 "Onverwacht timeout event" +287 "Onverwacht write event" +289 "Shell expansies zijn niet ondersteund als de secure edit optie actief is" +290 "Het %s commando is niet ondersteund als de secure edit optie actief is" +291 "set: %s mag niet uitgezet worden" +292 "Scherm te klein." +293 "toegevoegd" +294 "gewijzigd" +295 "verwijderd" +296 "samengevoegd" +297 "verplaatst" +298 "verschoven" +299 "gebufferd" +300 "regel" +301 "regels" +302 "Vi was niet geladen met een Tcl interpreter" +303 "Bestand gewijzigd sinds het de laatste keer weg is geschreven." +304 "Shell expansie mislukt" +305 "Geen %s edit optie opgegeven" +306 "Vi was niet geladen met een Perl interpreter" +307 "Geen ex commando om uit te voeren" +308 "Kies om commando uit te voeren, :q om te stoppen" +309 "Gebruik \"cscope help\" voor uitleg" +310 "Nog geen cscope connectie aanwezig" +311 "%s: onbekend zoek type: gebruik een van %s" +312 "%d: onbekende cscope sessie" +313 "set: de %s optie mag nooit aangezet worden" +314 "set: de %s optie mag nooit op 0 gezet worden" +315 "%s: toegevoegd: %lu regels, %lu karakters" +316 "Onverwacht resize event" +317 "%d bestanden te wijzigen" Added: head/usr.bin/vi/catalog/french.UTF-8.base ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/vi/catalog/french.UTF-8.base Mon Aug 12 09:56:52 2013 (r254244) @@ -0,0 +1,306 @@ +002 "Dépassement de longueur de ligne" +003 "impossible de supprimer la ligne %lu" +004 "impossible d'ajouter à la ligne %lu" +005 "impossible d'insérer devant la ligne %lu" +006 "impossible de stocker la ligne %lu" +007 "impossible d'obtenir la dernière ligne" +008 "Erreur : impossible de récupérer la ligne %lu" +009 "Fichier journal" +010 "Aucune journalisation n'étant effectuée, impossible d'annuler" +011 "Aucune action à annuler" +012 "Aucune journalisation n'étant effectuée, impossible d'annuler" +013 "Aucune journalisation n'étant effectuée, reprise actualisée impossible" +014 "Aucune action à refaire" +015 "%s/%d : Erreur d'écriture de journal" +016 "L'entrée et la sortie Vi standards doivent être un terminal" +017 "Marque %s : non définie" +018 "Marque %s : la ligne a été supprimée" +019 "Marque %s : la position du curseur n'existe plus" +020 "Erreur : " +021 "nouveau fichier" +022 "le nom a changé" +023 "modifié" +024 "non modifié" +025 "DÉVERROUILLÉ" +026 "lecture seule" +027 "ligne %lu de %lu [%ld%%]" +028 "fichier vide" +029 "ligne %lu" +030 "Ce fichier %s n'est pas un catalogue de messages" +031 "Impossible de configurer option %s par défaut" +032 "Utilisation : %s" +033 "Définition : pas d'option %s : 'set all' donne toutes les valeurs optionnelles" +034 "Définition : option [no]%s ne prend pas de valeur" +035 "Définition : l'option %s n'est pas booléenne" +036 "Définition : option %s : %s" +037 "Définition : option %s : %s : Dépassement de valeur" +038 "Définition : option %s : %s n'est pas un nombre valide" +039 "Définition : l'option %s n'est pas booléenne" +040 "Les colonnes de l'écran sont trop petites, inférieures à %d" +041 "Les colonnes de l'écran sont trop grandes, supérieures à %d" +042 "Les lignes de l'écran sont trop courtes, inférieures à %d" +043 "Les lignes de l'écran sont trop longues, supérieures à %d" +044 "L'option lisp n'est pas implémentée" +045 "Les messages ne sont pas désactivés : %s" +046 "Les messages ne sont pas activés : %s" +047 "L'option de %s doit être en groupe de deux caractères" +053 "Le tampon par défaut est vide" +054 "Le tampon %s est vide" +055 "Les fichiers dont le nom contient des caractères de saut de ligne sont irrécupérables" +056 "Impossible de récupérer les modifications si la session échoue" +057 "Copie en cours du fichier pour récupération..." +058 "La préservation a échoué : %s" +059 "Impossible de récupérer les modifications si la session échoue" +060 "La sauvegarde du fichier a échoué : %s" +061 "Copie en cours du fichier pour récupération..." +062 "Les renseignements sur l'identité %u de l'utilisateur sont introuvables" +063 "Impossible de verrouiller le fichier de récupération" +064 "Débordement de tampon du fichier de récupération" +065 "Fichier de récupération" +066 "%s : Fichier de récupération malformé" +067 "%s : Fichier de récupération malformé" +068 "Aucun fichier nommé %s à récupérer, que vous puissiez lire" +069 "Il existe des versions récupérables antérieures à ce fichier" +070 "Vous avez d'autres fichiers à récupérer" +071 "pas d'envoi d'email : %s" +072 "Fichier vide, rien à rechercher" +073 "Fin de fichier atteinte sans trouver le motif" +074 "Pas de motif de recherche précédent" +075 "Motif introuvable" +076 "Début du fichier atteint sans trouver le motif" +077 "La recherche est revenue à son point de départ" +078 "Recherche en cours..." +079 "Caractère non-imprimable introuvable" +080 "Nom de commande inconnu" +082 "%s : Commande non disponible en ex mode" +083 "Le compteur ne peut être zéro" +084 "%s : mauvaise spécification de ligne" +085 "Erreur de tableau de syntaxe interne (%s: %s)" +086 "Utilisation : %s" +087 "%s : tampon temporaire non libéré" +088 "Décalage de drapeau hors de la ligne 1" +089 "Décalage de drapeau hors de la fin du fichier" +090 "@ avec plage, en cours d'exécution quand le fichier/l'écran a changé" +091 "Commande Global/v en cours d'exécution quand le fichier/l'écran a changé" +092 "La commande ex a échoué : commandes en attente abandonnées" +093 "La commande ex a échoué : les touches affectées sont abandonnées" +094 "La deuxième adresse est plus petite que la première" +095 "Aucun nom de marque fourni" +096 "\\ non suivi par / ou ?" +097 "Référence à un numéro de ligne inférieure à 0" +098 "La commande %s est inconnue" +099 "Dépassement de la valeur adresse" +100 "Dépassement négatif de la valeur adresse" +101 "Combinaison d'adresse non valide" +102 "Adresse non valide : il n'y a que %lu lignes dans ce fichier" +103 "Adresse non valide : le fichier est vide" +104 "La commande %s ne permet pas une adresse de 0" +105 "Pas d'abréviations à afficher" +106 "Les abréviations doivent finir par un caractère \"mot\"" +107 "Les abréviations ne peuvent pas contenir de tabulations ni d'espaces" +108 "Les abréviations ne peuvent pas contenir un mélange de caractères mot/non-mot, sauf à la fin" +109 "\"%s\" n'est pas une abréviation" +110 "La commande Vi a échoué : Les touches affectées ont été abandonnées" +111 "Plus de fichiers à éditer" +112 "Pas de fichiers précédents à éditer" +113 "Pas de fichiers précédents à rembobiner" +114 "Pas de liste de fichiers à afficher" +115 "Pas de commande précédente à remplacer \"!\"" +116 "Pas de nom de fichier à substituer à %%" +117 "Pas de nom de fichier à substituer à #" +118 "Erreur : execl : %s" +119 "Erreur E/S : %s" +120 "Fichier modifié depuis la dernière écriture complète ; écrire ou utiliser ! pour outrepasser" +121 "Impossible de trouver l'emplacement du répertoire d'origine" +122 "Nouveau répertoire en cours : %s" +123 "Pas de tampon de coupure à afficher" +124 "La commande %s ne peut pas être utilisée à l'intérieur d'une commande globale ou commande v" +125 "%s/%s : échec de source : ni vous ni le super-utilisateur n'êtes les propriétaires " +126 "%s/%s : échec de source : vous n'êtes pas le propriétaire" +127 "%s/%s : échec de source : peut être écrit par un utilisateur autre que le propriétaire" +128 "%s : échec de source : ni vous ni le super-utilisateur n'êtes les propriétaires" +129 "%s : échec de source : vous n'êtes pas le propriétaire" +130 "%s : échec de source : peut être écrit par un utilisateur autre que le propriétaire" +131 "Pas de lignes suivantes à joindre" +132 "Pas d'entrées de mappage d'entrée" +133 "Pas d'entrées de mappage de commandes" +134 "Le caractère %s ne peut pas être remappé" +135 "\"%s\" n'est pas actuellement mappé" +136 "Les noms de marque ne doivent avoir qu'un caractère" +137 "%s existe, non enregistré; utiliser ! pour outrepasser" +138 "Nouveau fichier exrc : %s" +139 "La ligne de destination est à l'intérieur de la plage à déplacer" +140 "La commande ouverte nécessite que l'option ouverte soit définie" +141 "La commande ouverte n'est pas encore implémentée" +142 "La préservation de ce fichier est impossible" +143 "Fichier préservé" +144 "%s: étendu dans trop de noms de fichiers" +145 "Vous ne pouvez lire que les fichiers standards et les canaux de transmission nommés" +146 "%s: Interdiction de lecture non disponible" +147 "Lecture en cours..." +148 "%s: %lu lignes, %lu caractères" +149 "Pas d'écrans d'arrière-plan à afficher" +150 "La commande script n'est disponible qu'en mode vi" +151 "Pas de commande à exécuter" +152 "Option de largeur de décalage définie sur 0" +153 "Compter dépassement" +154 "Compter dépassement négatif" +155 "Expression standard spécifiée; drapeau r superflu" +156 "Vous ne pouvez pas en mode vi, combiner les drapeaux #, l et p avec le drapeau c" +157 "Aucune correspondance trouvée" +158 "Aucune marque précédente entrée" +159 "Moins de %s entrées dans la pile de marques ; utilisez t[ags]" +160 "Pas de fichier %s vers lequel retourner dans la pile de marques ; utiliser : affichage t[ags]" +161 "Appuyez sur Entrée pour continuer :" +162 "%s : marque introuvable" +163 "%s : marque corrompue en %s" +164 "%s : le numéro de ligne de la marque dépasse la fin du fichier" +165 "La pile de marques est vide" +166 "%s : motif de recherche introuvable" +167 "%d fichiers supplémentaires à éditer" +168 "Le tampon %s est vide +169 "Confirmer les changements ? [n]" +170 "Interrompu" +171 "Pas de tampon précédent à exécuter" +172 "Pas d'expression standard précédente" +173 "La commande %s nécessite qu'un fichier ait déjà été lu en mémoire" +174 "Utilisation : %s" +175 "La commande visual nécessite que l'option open soit définie" +177 "Fichier vide" +178 "Pas de recherche précédente F, f, T ou t" +179 "%s introuvable" +180 "Pas de fichier précédent à éditer" +181 "Le curseur n'est pas dans un nombre" +182 "Le nombre obtenu est trop grand" +183 "Le nombre obtenu est trop petit" +184 "Pas de correspondance de caractère sur cette ligne" +185 "Caractère correspondant introuvable" +186 "Pas de caractères à remplacer" +187 "Pas d'autre écran vers lequel basculer" +188 "Caractères après la chaîne de recherche, décalage de ligne et/ou commande z" +189 "Pas de motif de recherche précédent" +190 "La recherche est revenue à son point de départ" +191 "L'abréviation a dépassé la limite de l'expansion : caractères abandonnés" +192 "Caractère non valide ; guillemet pour saisir" +193 "Déjà au début de l'insertion" +194 "Plus de caractères à effacer" +195 "Déplacement hors de fin de fichier" +196 "Déplacement hors de fin de ligne" +197 "Aucun mouvement de curseur n'a été effectué" +198 "Déjà au début du fichier" +199 "Déplacement hors du début du fichier" +200 "Déjà dans la première colonne" +201 "Les tampons doivent être spécifiés avant la commande" +202 "Déjà à la fin du fichier" +203 "Déjà à la fin de la ligne" +204 "%s n'est pas une commande vi" +205 "Utilisation : %s" +206 "Pas de caractères à supprimer" +207 "La commande Q nécessite une interface terminal ex" +208 "Pas de commande à répéter" +209 "Le fichier est vide" +210 "Vous ne pouvez pas utiliser %s comme commande de déplacement" +211 "Déjà en mode commande" +212 "Le curseur n'est pas dans un mot" +214 "Valeur optionnelle de fenêtre trop grande, maximum est %u" +215 "Ajouter" +216 "Changer" +217 "Commande" +218 "Insérer" +219 "Remplacer" +220 "Déplacement hors de la fin d'écran" +221 "Déplacement hors du début d'écran" +222 "L'écran doit être supérieur à %d lignes pour se fractionner" +223 "Il n'y a pas d'écran d'arrière-plan" +224 "Il n'y a pas d'écran d'arrière-plan qui édite un fichier nommé %s" +225 "Vous ne pouvez pas mettre à l'arrière-plan votre seul écran affiché" +226 "L'écran ne peut être réduit qu'à %d rangs" +227 "L'écran n'est pas auto-réductible" +228 "L'écran n'est pas auto-extensible" +230 "Vous ne pouvez pas mettre cet écran en attente" +231 "Interrompu : les touches affectées ont été abandonnées" +232 "vi : le tampon temporaire n' a pas été libéré" +233 "Ce terminal n'a pas de touche %s" +234 "Vous ne pouvez spécifier qu'un seul tampon" +235 "Nombre supérieur à %lu" +236 "Interrompu" +237 "Impossible de créer un fichier temporaire" +238 "Avertissement : %s n'est pas un fichier standard" +239 "%s déjà verrouillé, session en lecture seule" +240 "%s: supprimer" +241 "%s: fermer" +242 "%s: supprimer" +243 "%s: supprimer" +244 "Fichier en lecture seule, non écrit, utiliser ! pour outrepasser" +245 "Fichier en lecture seule, non écrit" +246 "%s existe, non écrit; utiliser ! pour outrepasser" +247 "%s existe, non écrit" +248 "Fichier partiel, non écrit; utiliser ! pour outrepasser" +249 "Fichier partiel, non écrit" +250 "%s: fichier modifié plus récemment que cet exemplaire; utiliser ! pour outrepasser" +251 "%s: fichier modifié plus récemment que cet exemplaire" +252 "%s: interdiction d'écriture non disponible" +253 "Ecriture en cours..." +254 "%s: AVERTISSEMENT : FICHIER TRONQUÉ" +255 "Première marque de ce groupe déjà atteinte" +256 "%s: nouveau fichier : %lu lignes, %lu caractères" +257 "%s: %lu lignes, %lu caractères" +258 "%s étendue à trop de noms de fichiers" +259 "%s: pas un fichier standard" +260 "%s: ne vous appartient pas" +261 "%s: accessible par un utilisateur autre que son propriétaire" +262 "Fichier modifé depuis la dernière écriture complète ; écrire ou utiliser ! pour outrepasser " +263 "Fichier modifé depuis la dernière écriture complète ; écrire ou utiliser :edit! pour outrepasser" +264 "Fichier modifé depuis la dernière écriture complète ; écrire ou utiliser ! pour outrepasser" +265 "Fichier temporaire ; quitter annulera les modifications" +266 "Fichier en lecture seule ; les modifications ne sont pas écrites automatiquement" +267 "Journal redémarré" +268 "confirmer ? [ynq]" +269 "Appuyez sur n'importe quelle touche pour continuer : " +270 "Appuyez sur n'importe quelle touche pour continuer [: pour entrer plus de commandes ex] : " +271 "Appuyez sur n'importe quelle touche pour continuer [q pour Quitter]: " +272 "Cette forme de %s nécessite l'interface de terminal ex" +273 "Entrée de mode entrée ex." +274 "La commande a échoué, aucun fichier n'a encore été lu." +275 "cont?" +276 "Evénement imprévu de caractère" +277 "Evénement imprévu de fin-de-fichier" +278 "Pas de correspondances pour cette requête" +279 "Evénement imprévu d'interruption" +280 "Evénement quitter imprévu" +281 "Evénement imprévu de rafraîchissement" +282 "La dernière marque de ce groupe a déjà été atteinte" +283 "La commande %s nécessite l'interface de terminal ex" +284 "Cette forme de %s n'est pas reconnue quand l'option d'édition protégée est activée" +285 "Evénement imprévu de chaîne" +286 "Evénement imprévu de délai imparti" +287 "Evénement d'écriture imprévu" +289 "Les expansions du shell ne sont pas reconnues quand l'option d'édition protégée est activée" +290 "La commande %s n'est pas reconnue quand l'option d'édition protégée est activée" +291 "Définition : l'option %s ne peut pas être désactivée" +292 "Affichage trop petit." +293 "ajouté" +294 "changé" +295 "supprimé" +296 "joint" +297 "déplacé" +298 "décalé" +299 "coupé" +300 "ligne" +301 "lignes" +302 "Vi n'a pas été chargé avec un interprétateur Tcl" +303 "Ficher modifié depuis le dernier enregistrement." +304 "L'expansion du shell a échoué" +305 "Pas d'option d'édition %s spécifiée" +306 "Vi n'a pas été chargé avec un interprétateur Perl" +307 "Pas de commande ex à exécuter" +308 "Entrez pour exécuter une commande, :q pour quitter" +309 "Utiliser \"cscope help\" pour obtenir de l'aide" +310 "Aucune connexion cscope n'est lancée" +311 "%s : type de recherche inconnu : utiliser un des %s" +312 "%d : Il n'existe pas de telle session cscope" +313 "Définition : l'option %s ne peut jamais être activée" +314 "Définition : l'option %s ne peut jamais être définie sur 0" +315 "%s: joints : %lu lignes, %lu caractères" +316 "événement imprévu de redimensionnement" +317 "%d fichiers à éditer" Added: head/usr.bin/vi/catalog/german.UTF-8.base ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/usr.bin/vi/catalog/german.UTF-8.base Mon Aug 12 09:56:52 2013 (r254244) @@ -0,0 +1,306 @@ +002 "Zeilenlängen-Ãœberlauf" +003 "kann Zeile %lu nicht löschen" +004 "kann an Zeile %lu nicht anfügen" +005 "kann in Zeile %lu nicht einfügen" +006 "kann Zeile %lu nicht speichern" +007 "kann letzte Zeile nicht lesen" +008 "Fehler: kann Zeile %lu nicht wiederherstellen" +009 "Protokolldatei" +010 "Keine Protokollierung aktiv, Rückgängigmachen nicht möglich" +011 "Keine Änderungen rückgängig zu machen" +012 "Keine Protokollierung aktiv, Rückgängigmachen nicht möglich" +013 "Keine Protokollierung aktiv, Wiederholung von Änderungen nicht möglich" +014 "Keine Änderungen zu wiederholen" +015 "%s/%d: Protokollschreibfehler" +016 "Vi's Standardein- und -ausgabe muß ein Terminal sein" +017 "Marke %s: nicht gesetzt" +018 "Marke %s: die Zeile wurde gelöscht" +019 "Marke %s: Cursorposition existiert nicht mehr" +020 "Fehler: " +021 "neue Datei" +022 "Name geändert" +023 "geändert" +024 "nicht geändert" +025 "NICHT GELOCKT" +026 "nur zum Lesen" +027 "Zeile %lu von %lu [%ld%%]" +028 "leere Datei" +029 "Zeile %lu" +030 "Die Datei %s ist kein Meldungskatalog" +031 "Setzen der Voreinstellung für %s Option nicht möglich" +032 "Benutzung: %s" +033 "set: keine %s Option: 'set all' zeigt alle Optionen mit Werten an" +034 "set: der [no]%s Option kann kein Wert zugewiesen werden" +035 "set: %s ist keine Boolsche Option" +036 "set: %s Option: %s" +037 "set: %s Option: %s: Werte-Ãœberlauf" +038 "set: %s Option: %s ist eine ungültige Zahl" +039 "set: %s ist keine Boolsche Option" +040 "Bildschirm hat zu wenig Spalten, weniger als %d" +041 "Bildschirm hat zu viele Spalten, mehr als %d" +042 "Bildschirm hat zu wenig Zeilen, weniger als %d" +043 "Bildschirm hat zu viele Zeilen, mehr als %d" +044 "Die lisp-Option ist nicht implementiert" +045 "Meldungen nicht abgeschaltet: %s" +046 "Meldungen nicht eingeschaltet: %s" +047 "Die %s-Option muß Gruppen zu zwei Zeichen enthalten" +053 "Der Standardpuffer ist leer" +054 "Puffer %s ist leer" +055 "Dateien mit newlines im Namen sind nicht wiederherstellbar" +056 "Änderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht" +057 "kopiere Datei für Wiederherstellung ..." +058 "Rettungsmechanismus funktioniert nicht: %s" +059 "Änderungen nicht wiederherstellbar, falls die Editorsitzung schiefgeht" +060 "Sicherung der Datei gescheitert: %s" +061 "kopiere Datei für Wiederherstellung ..." +062 "Informationen über den Benutzer mit id %u nicht gefunden" +063 "Wiederherstellungsdatei kann nicht gelockt werden" +064 "Puffer der Wiederherstellungsdatei übergelaufen" +065 "Wiederherstellungsdatei" +066 "%s: Wiederherstellungsdatei hat falsches Format" +067 "%s: Wiederherstellungsdatei hat falsches Format" +068 "Keine von Ihnen lesbaren Dateien mit Namen %s zum Wiederherstellen" +069 "Es gibt ältere Versionen dieser Datei von Ihnen zum Wiederherstellen" +070 "Sie haben noch andere Dateien zum Wiederherstellen" +071 "schicke keine email: %s" +072 "Datei leer; nichts zu suchen" +073 "Dateiende erreicht, ohne das Suchmuster zu finden" +074 "Kein altes Suchmuster" +075 "Suchmuster nicht gefunden" +076 "Dateianfang erreicht, ohne das Suchmuster zu finden" +077 "Suche beginnt von vorn" +078 "suche ..." +079 "Keine nichtdruckbaren Zeichen gefunden" +080 "Unbekannter Kommandoname" +082 "%s: Kommando im ex-Modus nicht verfügbar" +083 "Anzahl darf nicht Null sein" +084 "%s: falsche Zeilenangabe" +085 "Interner Syntaxtabellenfehler (%s: %s)" +086 "Benutzung: %s" +087 "%s: temporärer Puffer nicht freigegeben" +088 "Flagoffset vor Zeile 1" +089 "Flagoffset hinter dem Dateiende" +090 "@ mit Bereich lief, als Datei/Anzeige geändert wurde" +091 "globales oder v-Kommando lief, als Datei/Anzeige geändert wurde" +092 "Ex-Kommando mißlungen: restliche Kommandoeingabe ignoriert" +093 "Ex-Kommando mißlungen: umdefinierte Tasten ungültig" +094 "Die zweite Adresse ist kleiner als die erste" +095 "Kein Markenname angegeben" +096 "\\ ohne folgenden / oder ?" +097 "Referenz auf eine negative Zeilennummer" +098 "Das Kommando %s ist unbekannt" +099 "Adreßwert zu groß" +100 "Adreßwert zu klein" +101 "Ungültige Adreßkombination" +102 "Ungültige Adresse: nur %lu Zeilen in der Datei" +103 "Ungültige Adresse: die Datei ist leer" +104 "Das Kommando %s erlaubt keine Adresse 0" +105 "Keine Abkürzungen zum Anzeigen" +106 "Abkürzungen müssen mit einem \"Wort\"-Zeichen enden" +107 "Abkürzungen dürfen keine Tabulator- oder Leerzeichen enthalten" +108 "In Abkürzungen dürfen außer am Ende Wort- und Nicht-Wort-Zeichen nicht gemischt werden" +109 "\"%s\" ist keine Abkürzung" +110 "Vi Kommando mißlungen: umdefinierte Tasten ungültig" +111 "Keine weiteren Dateien zu editieren" +112 "Keine vorhergehenden Dateien zu editieren" +113 "Keine vorhergehenden Dateien für rewind" +114 "Keine Dateiliste zum Anzeigen" +115 "Kein vorhergehendes Kommando, um \"!\" zu ersetzen" +116 "Kein Dateiname für %%" +117 "Kein Dateiname für #" +118 "Fehler: execl: %s" +119 "E/A-Fehler: %s" +120 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende ! zum ignorieren" +121 "Kann Homedirectory nicht bestimmen" +122 "Neues aktuelles Directory: %s" +123 "Keine Puffer anzuzeigen" +124 "Das Kommando %s kann nicht als Teil eines global oder v Kommandos verwendet werden" +125 "%s/%s: nicht gelesen: gehört weder Ihnen noch root" +126 "%s/%s: nicht gelesen: gehört nicht Ihnen" +127 "%s/%s: nicht gelesen: anderer Benutzer als Eigentümer hat Schreibrecht" +128 "%s: nicht gelesen: gehört weder Ihnen noch root" +129 "%s: nicht gelesen: gehört nicht Ihnen" +130 "%s: nicht gelesen: anderer Benutzer als Eigentümer hat Schreibrecht" +131 "Keine folgenden Zeilen zum Verbinden" +132 "Kein input-Map Eintrag" +133 "Kein command-Map Eintrag" +134 "Das %s Zeichen kann nicht umgemappt werden" +135 "\"%s\" ist momentan nicht gemappt" +136 "Markennamen müssen einzelne Buchstaben sein" +137 "%s existiert, nicht geschrieben; verwende ! zum Ãœberschreiben" +138 "Neue .exrc Datei: %s. " +139 "Zielzeile ist innerhalb des Verschiebebereichs" +140 "Das open Kommando verlangt, daß die open Option gesetzt ist" +141 "Das open Kommando ist nocht nicht implementiert" +142 "Rettung dieser Datei nicht möglich" +143 "Datei gerettet" +144 "%s wurde in zu viele Dateinamen expandiert" +145 "Nur reguläre Dateien und named pipes können gelesen werden" +146 "%s: Locken zum Lesen war nicht möglich" +147 "lese ..." +148 "%s: %lu Zeilen, %lu Zeichen" +149 "Keine Hintergrundanzeigen vorhanden" +150 "Das script Kommando ist nur im vi Modus verfügbar" +151 "Kein Kommando auszuführen" +152 "shiftwidth Option auf 0 gesetzt" +153 "Anzahl-Ãœberlauf" +154 "Anzahl-Unterlauf" +155 "Regulärer Ausdruck angegeben; r Flag bedeutungslos" +156 "Die #, l und p Flags können im vi Modus nicht mit dem c Flag kombiniert werden" +157 "Keine Ãœbereinstimmung gefunden" +158 "Kein vorhergehender 'tag' angegeben" +159 "Weniger als %s Einträge auf dem 'tag'-Stack; verwende :display t[ags]" +160 "Keine Datei namens %s auf dem 'tag'-Stack; verwende :display t[ags]" +161 "Drücke Enter um fortzufahren: " +162 "%s: 'tag' nicht gefunden" +163 "%s: kaputter 'tag' in %s" +164 "%s: die Zeilennummer des 'tag' ist hinter dem Dateiende" +165 "Der 'tag' Stack ist leer" +166 "%s: Suchmuster nicht gefunden" +167 "%d weitere Dateien zu editieren" +168 "Puffer %s ist leer" +169 "Bestätige Änderung [n]" +170 "Unterbrochen." +171 "Kein vorhergehender Puffer zum Ausführen" +172 "Kein vorhergehender regulärer Ausdruck" +173 "Das Kommando %s verlangt, daß bereits eine Datei eingelesen wurde" +174 "Benutzung: %s" +175 "Das visual Kommando verlangt daß die open Option gesetzt ist" +177 "Leere Datei" +178 "Keine vorhergehende F, f, T oder t Suche" +179 "%s nicht gefunden" +180 "Keine vorhergehende Datei zu editieren" +181 "Cursor nicht auf einer Zahl" +182 "Sich ergebende Zahl ist zu groß" +183 "Sich ergebende Zahl ist zu klein" +184 "Kein korrespondierendes Zeichen in dieser Zeile" +185 "Korrespondierendes Zeichen nicht gefunden" +186 "Keine Zeichen zu ersetzen" +187 "Keine andere Anzeige zum Hinschalten" +188 "Zeichen nach Suchmuster, Zeilenoffset und/oder z Kommando" +189 "Kein altes Suchmuster" +190 "Suche zur ursprünglichen Position zurückgekehrt" +191 "Abkürzung überschreitet Expansionsgrenze: Zeichen weggelassen" +192 "Nicht erlaubtes Zeichen; maskiere zum Eingeben" +193 "Bereits am Anfang der Eingabe" +194 "Keine weiteren Zeichen zu löschen" +195 "Bewegung hinter das Dateiende" +196 "Bewegung hinter das Zeilenende" +197 "Keine Cursorbewegung gemacht" +198 "Bereits am Dateianfang" +199 "Bewegung vor den Dateianfang" +200 "Bereits in der ersten Spalte" +201 "Puffer sollen vor dem Kommando angegeben werden" +202 "Bereits am Dateiende" +203 "Bereits am Zeilenende" +204 "%s ist kein vi Kommando" +205 "Benutzung: %s" +206 "Keine Zeichen zu löschen" +207 "Das Q Kommando benötigt das ex Terminal Interface" +208 "Kein Kommando zu wiederholen" +209 "Die Datei ist leer" +210 "%s kann nicht als Bewegungskommando verwendet werden" +211 "Bereits im Kommando-Modus" +212 " Cursor nicht auf einem Wort" +214 "Wert der Window Option ist zu groß, max ist %u" +215 "Anhängen" +216 "Ändern" +217 "Kommando" +218 "Einfügen" +219 "Ersetzen" +220 "Bewegung hinter das Anzeigenende" +221 "Bewegung vor den Anzeigenanfang" +222 "Anzeige muß für Bildschirmteilung größer als %d sein" +223 "Keine Hintergrundanzeigen vorhanden" +224 "Es gibt keine Hintergrundanzeige, die eine Datei namens %s editiert" +225 "Die einzige dargestellte Anzeige kann nicht in den Hintergrund gebracht werden" +226 "Die Anzeige kann nur auf %d Zeilen verkleinert werden" +227 "Die Anzeige kann nicht verkleinert werden" +228 "Die Anzeige kann nicht vergrößert werden" +230 "Diese Anzeige kann nicht gestopt werden" +231 "Unterbrochen: umdefinierte Tasten ungültig" +232 "vi: temporärer Puffer nicht freigegeben" +233 "Dieses Terminal hat keine %s Taste" +234 "es kann nur ein Puffer angegeben werden" +235 "Zahl größer als %lu" +236 "Unterbrochen" +237 "Nicht möglich, temporäre Datei anzulegen" +238 "Warnung: %s ist keine reguläre Datei" +239 "%s ist bereits gelockt, Editorsitzung schreibgeschützt" +240 "%s: löschen" +241 "%s: schließen" +242 "%s: löschen" +243 "%s: löschen" +244 "Datei nicht schreibbar, nicht geschrieben; verwende ! zum Ãœberschreiben" +245 "Datei nicht schreibbar, nicht geschrieben" +246 "%s existiert, nicht geschrieben; verwende ! zum Ãœberschreiben" +247 "%s existiert, nicht geschrieben" +248 "Teil der Datei, nicht geschrieben; verwende ! zum Ãœberschreiben" +249 "Teil der Datei, nicht geschrieben" +250 "%s: Datei wurde später als diese Kopie verändert; verwende ! zum Ãœberschreiben" +251 "%s: Datei wurde später als diese Kopie verändert" +252 "%s: Locken zum Schreiben war nicht möglich" +253 "schreibe ..." +254 "%s: WARNUNG: DATEI ABGESCHNITTEN" +255 "Bereits am ersten 'tag' dieser Gruppe" +256 "%s: neue Datei: %lu Zeilen, %lu Zeichen" +257 "%s: %lu Zeilen, %lu Zeichen" +258 "%s wurde in zu viele Dateinamen expandiert" +259 "%s: keine reguläre Datei" +260 "%s: gehört nicht Ihnen" +261 "%s: anderer Benutzer als Eigentümer hat Zugriff" +262 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende ! zum ignorieren" +263 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende :edit! zum ignorieren" +264 "Datei wurde seit dem letzten vollständigen Schreiben geändert; schreibe oder verwende ! zum ignorieren" +265 "Datei ist temporär; beim Verlassen gehen die Änderungen verloren" +266 "Datei ist schreibgeschützt, Änderungen werden nicht automatisch geschrieben" +267 "Portokollierung neu begonnen" +268 "bestätigen [ynq]" +269 "Drücke beliebige Taste um fortzufahren" +270 "Drücke beliebige Taste um fortzufahren [: um weitere Kommandos einzugeben]: " +271 "Drücke beliebige Taste um fortzufahren [q zum Verlassen]: " +272 "Diese Form von %s benötigt das ex Terminal-Interface" +273 "Gehe in ex Eingabe-Modus.\n" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 10:11:10 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CA49ECE5; Mon, 12 Aug 2013 10:11:10 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B800A2BF1; Mon, 12 Aug 2013 10:11:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CABAsK032308; Mon, 12 Aug 2013 10:11:10 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CABATX032307; Mon, 12 Aug 2013 10:11:10 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308121011.r7CABATX032307@svn.freebsd.org> From: Peter Wemm Date: Mon, 12 Aug 2013 10:11:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254245 - head/usr.bin/vi/catalog X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 10:11:10 -0000 Author: peter Date: Mon Aug 12 10:11:10 2013 New Revision: 254245 URL: http://svnweb.freebsd.org/changeset/base/254245 Log: It seems the pre-commit checker doesn't detect illegal character sets. Fix. Modified: Directory Properties: head/usr.bin/vi/catalog/dutch.UTF-8.base (props changed) head/usr.bin/vi/catalog/french.UTF-8.base (props changed) head/usr.bin/vi/catalog/german.UTF-8.base (props changed) head/usr.bin/vi/catalog/polish.UTF-8.base (props changed) head/usr.bin/vi/catalog/ru_RU.UTF-8.base (props changed) head/usr.bin/vi/catalog/spanish.UTF-8.base (props changed) head/usr.bin/vi/catalog/swedish.UTF-8.base (props changed) head/usr.bin/vi/catalog/uk_UA.UTF-8.base (props changed) head/usr.bin/vi/catalog/zh_CN.UTF-8.base (props changed) From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 13:52:17 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E7A1DB9E; Mon, 12 Aug 2013 13:52:16 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D4CF82F88; Mon, 12 Aug 2013 13:52:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CDqGgp015021; Mon, 12 Aug 2013 13:52:16 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CDqGth015017; Mon, 12 Aug 2013 13:52:16 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201308121352.r7CDqGth015017@svn.freebsd.org> From: Michael Tuexen Date: Mon, 12 Aug 2013 13:52:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254248 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 13:52:17 -0000 Author: tuexen Date: Mon Aug 12 13:52:15 2013 New Revision: 254248 URL: http://svnweb.freebsd.org/changeset/base/254248 Log: Make the features a 64-bit value instead of 32-bit. This will allow an easier integration of the support for NDATA. While there, do also some minor cleanups. Obtained from: rrs@ MFC after: 2 weeks Modified: head/sys/netinet/sctp.h head/sys/netinet/sctp_indata.c head/sys/netinet/sctp_output.c head/sys/netinet/sctp_pcb.h Modified: head/sys/netinet/sctp.h ============================================================================== --- head/sys/netinet/sctp.h Mon Aug 12 11:41:39 2013 (r254247) +++ head/sys/netinet/sctp.h Mon Aug 12 13:52:15 2013 (r254248) @@ -425,7 +425,7 @@ struct sctp_error_unrecognized_chunk { /* RFC4895 */ #define SCTP_AUTHENTICATION 0x0f /* EY nr_sack chunk id*/ -#define SCTP_NR_SELECTIVE_ACK 0x10 +#define SCTP_NR_SELECTIVE_ACK 0x10 /************0x40 series ***********/ /************0x80 series ***********/ /* RFC5061 */ @@ -509,38 +509,38 @@ struct sctp_error_unrecognized_chunk { /* * PCB Features (in sctp_features bitmask) */ -#define SCTP_PCB_FLAGS_DO_NOT_PMTUD 0x00000001 -#define SCTP_PCB_FLAGS_EXT_RCVINFO 0x00000002 /* deprecated */ -#define SCTP_PCB_FLAGS_DONOT_HEARTBEAT 0x00000004 -#define SCTP_PCB_FLAGS_FRAG_INTERLEAVE 0x00000008 -#define SCTP_PCB_FLAGS_INTERLEAVE_STRMS 0x00000010 -#define SCTP_PCB_FLAGS_DO_ASCONF 0x00000020 -#define SCTP_PCB_FLAGS_AUTO_ASCONF 0x00000040 -#define SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE 0x00000080 +#define SCTP_PCB_FLAGS_DO_NOT_PMTUD 0x0000000000000001 +#define SCTP_PCB_FLAGS_EXT_RCVINFO 0x0000000000000002 /* deprecated */ +#define SCTP_PCB_FLAGS_DONOT_HEARTBEAT 0x0000000000000004 +#define SCTP_PCB_FLAGS_FRAG_INTERLEAVE 0x0000000000000008 +#define SCTP_PCB_FLAGS_INTERLEAVE_STRMS 0x0000000000000010 +#define SCTP_PCB_FLAGS_DO_ASCONF 0x0000000000000020 +#define SCTP_PCB_FLAGS_AUTO_ASCONF 0x0000000000000040 +#define SCTP_PCB_FLAGS_ZERO_COPY_ACTIVE 0x0000000000000080 /* socket options */ -#define SCTP_PCB_FLAGS_NODELAY 0x00000100 -#define SCTP_PCB_FLAGS_AUTOCLOSE 0x00000200 -#define SCTP_PCB_FLAGS_RECVDATAIOEVNT 0x00000400 /* deprecated */ -#define SCTP_PCB_FLAGS_RECVASSOCEVNT 0x00000800 -#define SCTP_PCB_FLAGS_RECVPADDREVNT 0x00001000 -#define SCTP_PCB_FLAGS_RECVPEERERR 0x00002000 -#define SCTP_PCB_FLAGS_RECVSENDFAILEVNT 0x00004000 /* deprecated */ -#define SCTP_PCB_FLAGS_RECVSHUTDOWNEVNT 0x00008000 -#define SCTP_PCB_FLAGS_ADAPTATIONEVNT 0x00010000 -#define SCTP_PCB_FLAGS_PDAPIEVNT 0x00020000 -#define SCTP_PCB_FLAGS_AUTHEVNT 0x00040000 -#define SCTP_PCB_FLAGS_STREAM_RESETEVNT 0x00080000 -#define SCTP_PCB_FLAGS_NO_FRAGMENT 0x00100000 -#define SCTP_PCB_FLAGS_EXPLICIT_EOR 0x00400000 -#define SCTP_PCB_FLAGS_NEEDS_MAPPED_V4 0x00800000 -#define SCTP_PCB_FLAGS_MULTIPLE_ASCONFS 0x01000000 -#define SCTP_PCB_FLAGS_PORTREUSE 0x02000000 -#define SCTP_PCB_FLAGS_DRYEVNT 0x04000000 -#define SCTP_PCB_FLAGS_RECVRCVINFO 0x08000000 -#define SCTP_PCB_FLAGS_RECVNXTINFO 0x10000000 -#define SCTP_PCB_FLAGS_ASSOC_RESETEVNT 0x20000000 -#define SCTP_PCB_FLAGS_STREAM_CHANGEEVNT 0x40000000 -#define SCTP_PCB_FLAGS_RECVNSENDFAILEVNT 0x80000000 +#define SCTP_PCB_FLAGS_NODELAY 0x0000000000000100 +#define SCTP_PCB_FLAGS_AUTOCLOSE 0x0000000000000200 +#define SCTP_PCB_FLAGS_RECVDATAIOEVNT 0x0000000000000400 /* deprecated */ +#define SCTP_PCB_FLAGS_RECVASSOCEVNT 0x0000000000000800 +#define SCTP_PCB_FLAGS_RECVPADDREVNT 0x0000000000001000 +#define SCTP_PCB_FLAGS_RECVPEERERR 0x0000000000002000 +#define SCTP_PCB_FLAGS_RECVSENDFAILEVNT 0x0000000000004000 /* deprecated */ +#define SCTP_PCB_FLAGS_RECVSHUTDOWNEVNT 0x0000000000008000 +#define SCTP_PCB_FLAGS_ADAPTATIONEVNT 0x0000000000010000 +#define SCTP_PCB_FLAGS_PDAPIEVNT 0x0000000000020000 +#define SCTP_PCB_FLAGS_AUTHEVNT 0x0000000000040000 +#define SCTP_PCB_FLAGS_STREAM_RESETEVNT 0x0000000000080000 +#define SCTP_PCB_FLAGS_NO_FRAGMENT 0x0000000000100000 +#define SCTP_PCB_FLAGS_EXPLICIT_EOR 0x0000000000400000 +#define SCTP_PCB_FLAGS_NEEDS_MAPPED_V4 0x0000000000800000 +#define SCTP_PCB_FLAGS_MULTIPLE_ASCONFS 0x0000000001000000 +#define SCTP_PCB_FLAGS_PORTREUSE 0x0000000002000000 +#define SCTP_PCB_FLAGS_DRYEVNT 0x0000000004000000 +#define SCTP_PCB_FLAGS_RECVRCVINFO 0x0000000008000000 +#define SCTP_PCB_FLAGS_RECVNXTINFO 0x0000000010000000 +#define SCTP_PCB_FLAGS_ASSOC_RESETEVNT 0x0000000020000000 +#define SCTP_PCB_FLAGS_STREAM_CHANGEEVNT 0x0000000040000000 +#define SCTP_PCB_FLAGS_RECVNSENDFAILEVNT 0x0000000080000000 /*- * mobility_features parameters (by micchie).Note Modified: head/sys/netinet/sctp_indata.c ============================================================================== --- head/sys/netinet/sctp_indata.c Mon Aug 12 11:41:39 2013 (r254247) +++ head/sys/netinet/sctp_indata.c Mon Aug 12 13:52:15 2013 (r254248) @@ -1417,7 +1417,6 @@ sctp_does_tsn_belong_to_reasm(struct sct return (0); } - static int sctp_process_a_data_chunk(struct sctp_tcb *stcb, struct sctp_association *asoc, struct mbuf **m, int offset, struct sctp_data_chunk *ch, int chk_length, Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Mon Aug 12 11:41:39 2013 (r254247) +++ head/sys/netinet/sctp_output.c Mon Aug 12 13:52:15 2013 (r254248) @@ -7613,7 +7613,7 @@ sctp_med_chunk_output(struct sctp_inpcb #endif ) { - /* + /** * Ok this is the generic chunk service queue. we must do the * following: - Service the stream queue that is next, moving any * message (note I must get a complete message i.e. FIRST/MIDDLE and Modified: head/sys/netinet/sctp_pcb.h ============================================================================== --- head/sys/netinet/sctp_pcb.h Mon Aug 12 11:41:39 2013 (r254247) +++ head/sys/netinet/sctp_pcb.h Mon Aug 12 13:52:15 2013 (r254248) @@ -388,8 +388,8 @@ struct sctp_inpcb { /* back pointer to our socket */ struct socket *sctp_socket; + uint64_t sctp_features; /* Feature flags */ uint32_t sctp_flags; /* INP state flag set */ - uint32_t sctp_features; /* Feature flags */ uint32_t sctp_mobility_features; /* Mobility Feature flags */ struct sctp_pcb sctp_ep;/* SCTP ep data */ /* head of the hash of all associations */ From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 15:53:28 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 83E80D51; Mon, 12 Aug 2013 15:53:28 +0000 (UTC) (envelope-from rpaulo@felyko.com) Received: from felyko.com (felyko.com [174.136.100.2]) by mx1.freebsd.org (Postfix) with ESMTP id 668E62890; Mon, 12 Aug 2013 15:53:28 +0000 (UTC) Received: from [IPv6:2601:9:4d00:119:28e8:48a2:a8c3:3b55] (unknown [IPv6:2601:9:4d00:119:28e8:48a2:a8c3:3b55]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by felyko.com (Postfix) with ESMTPSA id 762B83981E; Mon, 12 Aug 2013 08:53:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=felyko.com; s=mail; t=1376322802; bh=cbTBpEJv4KZ2elMhxAjAvC7IQiVuP6F30RDwJwBBr1I=; h=Subject:From:In-Reply-To:Date:Cc:References:To; b=NtFxzqR7tC6qBE5wUmPGV4AZRRMK/PCV5B6a/3qGMueZMQND/RkiBCsPr0gYTAMXH FH/FIEJF5cSc+xMpjLxHfJrf/TyASRHFJJ3cLu81O4vcDRfCdvJCTrtMVPnDvYOC+R WIc+QOEbqyoNYtGnzVU84mGTxf2ueLdxaa04aCps= Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 7.0 \(1793.5\)) Subject: Re: svn commit: r253460 - head/sys/dev/mps From: Rui Paulo In-Reply-To: Date: Mon, 12 Aug 2013 08:53:19 -0700 Content-Transfer-Encoding: 7bit Message-Id: <4F5740C6-D1D5-4BFB-93E0-4F122F887111@felyko.com> References: <201307190012.r6J0Cg1r027645@svn.freebsd.org> <52077D0D.8090607@FreeBSD.org> To: Adrian Chadd X-Mailer: Apple Mail (2.1793.5) Cc: src-committers@freebsd.org, Scott Long , Alexander Motin , Scott Long , svn-src-head@freebsd.org, svn-src-all@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 15:53:28 -0000 On 11 Aug 2013, at 18:01, Adrian Chadd wrote: > Damnit, I really should create a generic "here's a 64 bit mask for > debug" set of macros we can use elsewhere. Like re-inventing bitstring.h and bitset.h? -- Rui Paulo From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 15:56:56 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 27935F42; Mon, 12 Aug 2013 15:56:56 +0000 (UTC) (envelope-from ken@kdm.org) Received: from nargothrond.kdm.org (nargothrond.kdm.org [70.56.43.81]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E486928D8; Mon, 12 Aug 2013 15:56:55 +0000 (UTC) Received: from nargothrond.kdm.org (localhost [127.0.0.1]) by nargothrond.kdm.org (8.14.2/8.14.2) with ESMTP id r7CFumOE012119; Mon, 12 Aug 2013 09:56:48 -0600 (MDT) (envelope-from ken@nargothrond.kdm.org) Received: (from ken@localhost) by nargothrond.kdm.org (8.14.2/8.14.2/Submit) id r7CFumvi012118; Mon, 12 Aug 2013 09:56:48 -0600 (MDT) (envelope-from ken) Date: Mon, 12 Aug 2013 09:56:48 -0600 From: "Kenneth D. Merry" To: Slawa Olhovchenkov Subject: Re: svn commit: r253550 - head/sys/dev/mps Message-ID: <20130812155647.GA11414@nargothrond.kdm.org> References: <201307221841.r6MIfsoQ075667@svn.freebsd.org> <20130810181454.GA47115@zxy.spb.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130810181454.GA47115@zxy.spb.ru> User-Agent: Mutt/1.4.2i Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 15:56:56 -0000 On Sat, Aug 10, 2013 at 22:14:54 +0400, Slawa Olhovchenkov wrote: > On Mon, Jul 22, 2013 at 06:41:54PM +0000, Kenneth D. Merry wrote: > > > Author: ken > > Date: Mon Jul 22 18:41:53 2013 > > New Revision: 253550 > > URL: http://svnweb.freebsd.org/changeset/base/253550 > > > > Log: > > Merge in phase 14+ -> 16 mps driver fixes from LSI: > > Submitted by: LSI > > MFC after: 1 week > > Not done? I was waiting for the stable/9 freeze to end. Now that it's done, I hope to merge that change to stable/9 this week. Ken -- Kenneth Merry ken@FreeBSD.ORG From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 17:12:06 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A2A75FB2; Mon, 12 Aug 2013 17:12:06 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-we0-x233.google.com (mail-we0-x233.google.com [IPv6:2a00:1450:400c:c03::233]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7197B2DAF; Mon, 12 Aug 2013 17:12:05 +0000 (UTC) Received: by mail-we0-f179.google.com with SMTP id t57so5817022wes.10 for ; Mon, 12 Aug 2013 10:12:03 -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:message-id:subject :from:to:cc:content-type; bh=VXKuHs3lL06XpRUM75cpaW698lH5tun7VYjF+f9Pgc0=; b=Dba9qfwAtt04KGsc1H1qEe13ZIObBx/hbUOkuIEL3s9eFVn+Y7+07V1MeBi/2AxL8M mqLSylrqqRcUACLnJiFwgfuaj5KMwfwiwYK2wh4xMKBD6dZpL7soD6EeMkIOhUZWyYQE rWk3gFaJZx5F9SZUgazAJcdT2dZDW2rDmid3FknzkoeqcRG7QIziHe5iP0z+1/7ILz96 MdxR1g5MnnFAo5Cb+Sp4arvLLFyJDv1GjQRdpEoGMxzIpzW8fMHiHTgiiZwmbiHk479K Qdy552HI2t0+Z8HYfncGOXYPBIa3kBVLmsPBYd0xST9L3d79NH3g6bHPxLDQ8IxUg7HB fkyQ== MIME-Version: 1.0 X-Received: by 10.194.11.67 with SMTP id o3mr59938wjb.0.1376327523587; Mon, 12 Aug 2013 10:12:03 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.217.116.136 with HTTP; Mon, 12 Aug 2013 10:12:03 -0700 (PDT) In-Reply-To: <4F5740C6-D1D5-4BFB-93E0-4F122F887111@felyko.com> References: <201307190012.r6J0Cg1r027645@svn.freebsd.org> <52077D0D.8090607@FreeBSD.org> <4F5740C6-D1D5-4BFB-93E0-4F122F887111@felyko.com> Date: Mon, 12 Aug 2013 10:12:03 -0700 X-Google-Sender-Auth: BshOThrK6hK5ScIZmO77wQsTVh8 Message-ID: Subject: Re: svn commit: r253460 - head/sys/dev/mps From: Adrian Chadd To: Rui Paulo Content-Type: text/plain; charset=ISO-8859-1 Cc: src-committers@freebsd.org, Scott Long , Alexander Motin , Scott Long , svn-src-head@freebsd.org, svn-src-all@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 17:12:06 -0000 On 12 August 2013 08:53, Rui Paulo wrote: > On 11 Aug 2013, at 18:01, Adrian Chadd wrote: > >> Damnit, I really should create a generic "here's a 64 bit mask for >> debug" set of macros we can use elsewhere. > > Like re-inventing bitstring.h and bitset.h? Right, except for use inside a debugging macro. :P (Patches to ath/net80211 to make debugging use those are gratefully accepted, btw. :) -adrian From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 17:20:43 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 99AA733E for ; Mon, 12 Aug 2013 17:20:43 +0000 (UTC) (envelope-from scott4long@yahoo.com) Received: from nm26-vm6.bullet.mail.ne1.yahoo.com (nm26-vm6.bullet.mail.ne1.yahoo.com [98.138.91.119]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3FAF72E41 for ; Mon, 12 Aug 2013 17:20:43 +0000 (UTC) Received: from [98.138.226.177] by nm26.bullet.mail.ne1.yahoo.com with NNFMP; 12 Aug 2013 17:20:40 -0000 Received: from [98.138.226.130] by tm12.bullet.mail.ne1.yahoo.com with NNFMP; 12 Aug 2013 17:20:40 -0000 Received: from [127.0.0.1] by smtp217.mail.ne1.yahoo.com with NNFMP; 12 Aug 2013 17:20:40 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1376328040; bh=EQEDJe44ag/7nWesc/e4i/yjfRr7PrFX8BHa68QiaWM=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:X-Rocket-Received:Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References:To:X-Mailer; b=Ug2fyf5ANIUd7eSuXHkOoisfbx5MeLP72AAriVKBgD5Bavk/bN2JRZmH/wOa/Y8Qhryigr5Dq0GQTJnuzsDFwDLWsfaIarwcrNLRJsNkLD0IVKXUTBqYm+sAyUASqv59LavfSVo7Kq6gXQQTw7eYXPC6HmqFKdqJCab3VUz4QHk= X-Yahoo-Newman-Id: 488787.11600.bm@smtp217.mail.ne1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: S9ilFJwVM1lK2dvczWoTL_3AcZSpz9D8SDJ_k.l_dWh9r8l fS4VMWHLUPE57xWQCvGU8aVTcKAmes.AgyQ2u30f_x2S0vGYZ3JS2_Ui88HM DUoZH3MAlLnT2pGYFUkAX_VpKL2T7Bu.IIY_2fEB4s8UXFYL0OHWqJKh87zu qmpcRbc64B1_ylGUCwhHGhj2zh7ErNfT8c.3ExygdS3f8uPmLeNiwxOYDmc2 GPzjgxflZSvq0vRpi5RMvYYr27UZaaT5LtdhHzCfaOx.Mq_kKAD4MH_9Q6lK tOfbeFdxyJF8hdiwop6wEarrBdpatiK6PhMMgGr2NwQGmbzvwTVgeCoEzUdM oFa9kK8l7dL.eogiOpJR.6AxtP27WVlVcGH390I5ZV5bxcPYxlW.w0QMS0tA sokTCjDaaHql6iDUiC4IlAmCEk37El0OrYLqePefv4uk2V7ROFWiM9RWqpR0 bMCBBipAURUxh0SZ0r3wU9Y.ieZ7UhrGbHQyFBGYARQn5yDByHG1CWCnYaFO Rv44RX_2aT3yb.Fme_jJrToh3Ove7uFLYgrmQ1m4rR3kDZOByoSzl_Kz7sQ- - X-Yahoo-SMTP: clhABp.swBB7fs.LwIJpv3jkWgo2NU8- X-Rocket-Received: from [192.168.254.206] (scott4long@168.103.85.57 with ) by smtp217.mail.ne1.yahoo.com with SMTP; 12 Aug 2013 17:20:40 +0000 UTC Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r253460 - head/sys/dev/mps From: Scott Long In-Reply-To: Date: Mon, 12 Aug 2013 11:20:38 -0600 Content-Transfer-Encoding: quoted-printable Message-Id: <5A2F448F-0E99-4976-B762-9BB2982825D2@yahoo.com> References: <201307190012.r6J0Cg1r027645@svn.freebsd.org> <52077D0D.8090607@FreeBSD.org> <4F5740C6-D1D5-4BFB-93E0-4F122F887111@felyko.com> To: Adrian Chadd X-Mailer: Apple Mail (2.1508) Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, Scott Long , Rui Paulo , svn-src-head@freebsd.org, Alexander Motin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 17:20:43 -0000 On Aug 12, 2013, at 11:12 AM, Adrian Chadd wrote: > On 12 August 2013 08:53, Rui Paulo wrote: >> On 11 Aug 2013, at 18:01, Adrian Chadd wrote: >>=20 >>> Damnit, I really should create a generic "here's a 64 bit mask for >>> debug" set of macros we can use elsewhere. >>=20 >> Like re-inventing bitstring.h and bitset.h? >=20 > Right, except for use inside a debugging macro. :P >=20 > (Patches to ath/net80211 to make debugging use those are gratefully > accepted, btw. :) >=20 Anyways=85 the MPS driver already uses debugging macros, but the case = that Alexander pointed out is more complicated than a simple printf. I'll = take care of it. Scott From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 17:22:40 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4136348C; Mon, 12 Aug 2013 17:22:40 +0000 (UTC) (envelope-from gshapiro@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2CEDD2E51; Mon, 12 Aug 2013 17:22:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CHMeVd094831; Mon, 12 Aug 2013 17:22:40 GMT (envelope-from gshapiro@svn.freebsd.org) Received: (from gshapiro@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CHMduE094830; Mon, 12 Aug 2013 17:22:40 GMT (envelope-from gshapiro@svn.freebsd.org) Message-Id: <201308121722.r7CHMduE094830@svn.freebsd.org> From: Gregory Neil Shapiro Date: Mon, 12 Aug 2013 17:22:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254251 - head/contrib/sendmail/include/sm/os X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 17:22:40 -0000 Author: gshapiro Date: Mon Aug 12 17:22:39 2013 New Revision: 254251 URL: http://svnweb.freebsd.org/changeset/base/254251 Log: Temporarily revert sendmail 8.14.7 change to getipnodebyname() flags to prevent problems between the resolver and Microsoft DNS servers with AAAA lookups. The upstream open source project will work on a more permanent fix for the next release. Issue noted by Pavel Timofeev. MFC after: 3 days Modified: head/contrib/sendmail/include/sm/os/sm_os_freebsd.h Modified: head/contrib/sendmail/include/sm/os/sm_os_freebsd.h ============================================================================== --- head/contrib/sendmail/include/sm/os/sm_os_freebsd.h Mon Aug 12 15:35:10 2013 (r254250) +++ head/contrib/sendmail/include/sm/os/sm_os_freebsd.h Mon Aug 12 17:22:39 2013 (r254251) @@ -39,3 +39,7 @@ #ifndef SM_CONF_MSG # define SM_CONF_MSG 1 #endif /* SM_CONF_MSG */ + +#ifndef SM_IPNODEBYNAME_FLAGS +# define SM_IPNODEBYNAME_FLAGS AI_DEFAULT|AI_ALL +#endif /* SM_IPNODEBYNAME_FLAGS */ From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 17:43:37 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 52B2DC52; Mon, 12 Aug 2013 17:43:37 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) by mx1.freebsd.org (Postfix) with ESMTP id 0E76A2F85; Mon, 12 Aug 2013 17:43:36 +0000 (UTC) Received: from slw by zxy.spb.ru with local (Exim 4.69 (FreeBSD)) (envelope-from ) id 1V8wBd-0001DZ-5b; Mon, 12 Aug 2013 21:45:45 +0400 Date: Mon, 12 Aug 2013 21:45:45 +0400 From: Slawa Olhovchenkov To: "Kenneth D. Merry" Subject: Re: svn commit: r253550 - head/sys/dev/mps Message-ID: <20130812174545.GA3796@zxy.spb.ru> References: <201307221841.r6MIfsoQ075667@svn.freebsd.org> <20130810181454.GA47115@zxy.spb.ru> <20130812155647.GA11414@nargothrond.kdm.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130812155647.GA11414@nargothrond.kdm.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 17:43:37 -0000 On Mon, Aug 12, 2013 at 09:56:48AM -0600, Kenneth D. Merry wrote: > On Sat, Aug 10, 2013 at 22:14:54 +0400, Slawa Olhovchenkov wrote: > > On Mon, Jul 22, 2013 at 06:41:54PM +0000, Kenneth D. Merry wrote: > > > > > Author: ken > > > Date: Mon Jul 22 18:41:53 2013 > > > New Revision: 253550 > > > URL: http://svnweb.freebsd.org/changeset/base/253550 > > > > > > Log: > > > Merge in phase 14+ -> 16 mps driver fixes from LSI: > > > Submitted by: LSI > > > MFC after: 1 week > > > > Not done? > > I was waiting for the stable/9 freeze to end. Hm? Date: Mon Aug 5 23:34:35 2013 New Revision: 253975 URL: http://svnweb.freebsd.org/changeset/base/253975 Log: stable/9 no longer requires re@ approval for commits, now that the releng/9.2 branch is created. Committers are urged to exercise caution with commits to stable/9 until the 9.2-RELEASE is finalized. Or, can you published patch for 9-STABLE? > Now that it's done, I hope to merge that change to stable/9 this week. Also, I see strange behaviour of LSI 9211-8i -- after some activity got timeout and HBA put in looped reset. From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 18:17:46 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 37AAC7DF; Mon, 12 Aug 2013 18:17:46 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 24F202209; Mon, 12 Aug 2013 18:17:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CIHkW8015196; Mon, 12 Aug 2013 18:17:46 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CIHkHT015195; Mon, 12 Aug 2013 18:17:46 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201308121817.r7CIHkHT015195@svn.freebsd.org> From: Ed Schouten Date: Mon, 12 Aug 2013 18:17:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254252 - head/sys/geom/mirror X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 18:17:46 -0000 Author: ed Date: Mon Aug 12 18:17:45 2013 New Revision: 254252 URL: http://svnweb.freebsd.org/changeset/base/254252 Log: Fix the formatting of the error message. The G_MIRROR_DEBUG() macro already appends a newline. Also, most of the log messages emitted by gmirror start with an uppercase letter. Modified: head/sys/geom/mirror/g_mirror.c Modified: head/sys/geom/mirror/g_mirror.c ============================================================================== --- head/sys/geom/mirror/g_mirror.c Mon Aug 12 17:22:39 2013 (r254251) +++ head/sys/geom/mirror/g_mirror.c Mon Aug 12 18:17:45 2013 (r254252) @@ -2052,8 +2052,8 @@ g_mirror_launch_provider(struct g_mirror } /* A provider underneath us doesn't support unmapped */ if ((dp->flags & G_PF_ACCEPT_UNMAPPED) == 0) { - G_MIRROR_DEBUG(0, "cancelling unmapped " - "because of %s\n", dp->name); + G_MIRROR_DEBUG(0, "Cancelling unmapped " + "because of %s.", dp->name); pp->flags &= ~G_PF_ACCEPT_UNMAPPED; } } From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 19:02:33 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 711CF169; Mon, 12 Aug 2013 19:02:33 +0000 (UTC) (envelope-from ken@kdm.org) Received: from nargothrond.kdm.org (nargothrond.kdm.org [70.56.43.81]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9EBB32498; Mon, 12 Aug 2013 19:02:31 +0000 (UTC) Received: from nargothrond.kdm.org (localhost [127.0.0.1]) by nargothrond.kdm.org (8.14.2/8.14.2) with ESMTP id r7CJ2Ugx024500; Mon, 12 Aug 2013 13:02:30 -0600 (MDT) (envelope-from ken@nargothrond.kdm.org) Received: (from ken@localhost) by nargothrond.kdm.org (8.14.2/8.14.2/Submit) id r7CJ2TnW024499; Mon, 12 Aug 2013 13:02:29 -0600 (MDT) (envelope-from ken) Date: Mon, 12 Aug 2013 13:02:29 -0600 From: "Kenneth D. Merry" To: Slawa Olhovchenkov Subject: Re: svn commit: r253550 - head/sys/dev/mps Message-ID: <20130812190229.GA24478@nargothrond.kdm.org> References: <201307221841.r6MIfsoQ075667@svn.freebsd.org> <20130810181454.GA47115@zxy.spb.ru> <20130812155647.GA11414@nargothrond.kdm.org> <20130812174545.GA3796@zxy.spb.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="k1lZvvs/B4yU6o8G" Content-Disposition: inline In-Reply-To: <20130812174545.GA3796@zxy.spb.ru> User-Agent: Mutt/1.4.2i Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 19:02:33 -0000 --k1lZvvs/B4yU6o8G Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, Aug 12, 2013 at 21:45:45 +0400, Slawa Olhovchenkov wrote: > On Mon, Aug 12, 2013 at 09:56:48AM -0600, Kenneth D. Merry wrote: > > > On Sat, Aug 10, 2013 at 22:14:54 +0400, Slawa Olhovchenkov wrote: > > > On Mon, Jul 22, 2013 at 06:41:54PM +0000, Kenneth D. Merry wrote: > > > > > > > Author: ken > > > > Date: Mon Jul 22 18:41:53 2013 > > > > New Revision: 253550 > > > > URL: http://svnweb.freebsd.org/changeset/base/253550 > > > > > > > > Log: > > > > Merge in phase 14+ -> 16 mps driver fixes from LSI: > > > > Submitted by: LSI > > > > MFC after: 1 week > > > > > > Not done? > > > > I was waiting for the stable/9 freeze to end. > > Hm? > > Date: Mon Aug 5 23:34:35 2013 > New Revision: 253975 > URL: http://svnweb.freebsd.org/changeset/base/253975 > > Log: > stable/9 no longer requires re@ approval for commits, now that the > releng/9.2 branch is created. > > Committers are urged to exercise caution with commits to stable/9 > until the 9.2-RELEASE is finalized. > > Or, can you published patch for 9-STABLE? If you really want one now, I've attached a patch from stable/9 on June 27th. It may or may not apply now. > > Now that it's done, I hope to merge that change to stable/9 this week. > > Also, I see strange behaviour of LSI 9211-8i -- after some activity > got timeout and HBA put in looped reset. That's not good. Try with the newer driver and see whether if affects the behavior. Ken -- Kenneth Merry ken@FreeBSD.ORG --k1lZvvs/B4yU6o8G Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="mps_scan_stable9.20130627.1.txt" *** src/sys/cam/cam_ccb.h.orig --- src/sys/cam/cam_ccb.h *************** *** 578,583 **** --- 578,584 ---- PIM_NO_6_BYTE = 0x08, /* Do not send 6-byte commands */ PIM_SEQSCAN = 0x04, /* Do bus scans sequentially, not in parallel */ PIM_UNMAPPED = 0x02, + PIM_NOSCAN = 0x01 /* SIM does its own scanning */ } pi_miscflag; /* Path Inquiry CCB */ *** src/sys/cam/cam_xpt.c.orig --- src/sys/cam/cam_xpt.c *************** *** 4012,4026 **** /* Notify interested parties */ if (sim->path_id != CAM_XPT_PATH_ID) { - union ccb *scan_ccb; xpt_async(AC_PATH_REGISTERED, path, &cpi); ! /* Initiate bus rescan. */ ! scan_ccb = xpt_alloc_ccb_nowait(); ! scan_ccb->ccb_h.path = path; ! scan_ccb->ccb_h.func_code = XPT_SCAN_BUS; ! scan_ccb->crcn.flags = 0; ! xpt_rescan(scan_ccb); } else xpt_free_path(path); return (CAM_SUCCESS); --- 4012,4030 ---- /* Notify interested parties */ if (sim->path_id != CAM_XPT_PATH_ID) { xpt_async(AC_PATH_REGISTERED, path, &cpi); ! ! if ((cpi.hba_misc & PIM_NOSCAN) == 0) { ! union ccb *scan_ccb; ! ! /* Initiate bus rescan. */ ! scan_ccb = xpt_alloc_ccb_nowait(); ! scan_ccb->ccb_h.path = path; ! scan_ccb->ccb_h.func_code = XPT_SCAN_BUS; ! scan_ccb->crcn.flags = 0; ! xpt_rescan(scan_ccb); ! } } else xpt_free_path(path); return (CAM_SUCCESS); *** src/sys/dev/mps/mps.c.orig --- src/sys/dev/mps/mps.c *************** *** 51,56 **** --- 51,57 ---- #include #include #include + #include #include #include *************** *** 61,66 **** --- 62,68 ---- #include + #include #include #include *************** *** 73,85 **** --- 75,93 ---- #include #include #include + #include static int mps_diag_reset(struct mps_softc *sc, int sleep_flag); static int mps_init_queues(struct mps_softc *sc); static int mps_message_unit_reset(struct mps_softc *sc, int sleep_flag); static int mps_transition_operational(struct mps_softc *sc); + static int mps_iocfacts_allocate(struct mps_softc *sc, uint8_t attaching); + static void mps_iocfacts_free(struct mps_softc *sc); static void mps_startup(void *arg); static int mps_send_iocinit(struct mps_softc *sc); + static int mps_alloc_queues(struct mps_softc *sc); + static int mps_alloc_replies(struct mps_softc *sc); + static int mps_alloc_requests(struct mps_softc *sc); static int mps_attach_log(struct mps_softc *sc); static __inline void mps_complete_command(struct mps_command *cm); static void mps_dispatch_event(struct mps_softc *sc, uintptr_t data, *************** *** 88,93 **** --- 96,102 ---- static void mps_periodic(void *); static int mps_reregister_events(struct mps_softc *sc); static void mps_enqueue_request(struct mps_softc *sc, struct mps_command *cm); + static int mps_get_iocfacts(struct mps_softc *sc, MPI2_IOC_FACTS_REPLY *facts); static int mps_wait_db_ack(struct mps_softc *sc, int timeout, int sleep_flag); SYSCTL_NODE(_hw, OID_AUTO, mps, CTLFLAG_RD, 0, "MPS Driver Parameters"); *************** *** 148,154 **** mpt2_reset_magic[i]); /* wait 100 msec */ if (mtx_owned(&sc->mps_mtx) && sleep_flag == CAN_SLEEP) ! msleep(&sc->msleep_fake_chan, &sc->mps_mtx, 0, "mpsdiag", hz/10); else if (sleep_flag == CAN_SLEEP) pause("mpsdiag", hz/10); else --- 157,164 ---- mpt2_reset_magic[i]); /* wait 100 msec */ if (mtx_owned(&sc->mps_mtx) && sleep_flag == CAN_SLEEP) ! msleep(&sc->msleep_fake_chan, &sc->mps_mtx, 0, ! "mpsdiag", hz/10); else if (sleep_flag == CAN_SLEEP) pause("mpsdiag", hz/10); else *************** *** 172,178 **** for (i = 0; i < 60000; i++) { /* wait 50 msec */ if (mtx_owned(&sc->mps_mtx) && sleep_flag == CAN_SLEEP) ! msleep(&sc->msleep_fake_chan, &sc->mps_mtx, 0, "mpsdiag", hz/20); else if (sleep_flag == CAN_SLEEP) pause("mpsdiag", hz/20); else --- 182,189 ---- for (i = 0; i < 60000; i++) { /* wait 50 msec */ if (mtx_owned(&sc->mps_mtx) && sleep_flag == CAN_SLEEP) ! msleep(&sc->msleep_fake_chan, &sc->mps_mtx, 0, ! "mpsdiag", hz/20); else if (sleep_flag == CAN_SLEEP) pause("mpsdiag", hz/20); else *************** *** 302,310 **** return (error); } /* - * XXX Some of this should probably move to mps.c - * * The terms diag reset and hard reset are used interchangeably in the MPI * docs to mean resetting the controller chip. In this code diag reset * cleans everything up, and the hard reset function just sends the reset --- 313,669 ---- return (error); } + /* + * This is called during attach and when re-initializing due to a Diag Reset. + * IOC Facts is used to allocate many of the structures needed by the driver. + * If called from attach, de-allocation is not required because the driver has + * not allocated any structures yet, but if called from a Diag Reset, previously + * allocated structures based on IOC Facts will need to be freed and re- + * allocated bases on the latest IOC Facts. + */ + static int + mps_iocfacts_allocate(struct mps_softc *sc, uint8_t attaching) + { + int error, i; + Mpi2IOCFactsReply_t saved_facts; + uint8_t saved_mode, reallocating; + struct mpssas_lun *lun, *lun_tmp; + struct mpssas_target *targ; + + mps_dprint(sc, MPS_TRACE, "%s\n", __func__); + + /* Save old IOC Facts and then only reallocate if Facts have changed */ + if (!attaching) { + bcopy(sc->facts, &saved_facts, sizeof(MPI2_IOC_FACTS_REPLY)); + } + + /* + * Get IOC Facts. In all cases throughout this function, panic if doing + * a re-initialization and only return the error if attaching so the OS + * can handle it. + */ + if ((error = mps_get_iocfacts(sc, sc->facts)) != 0) { + if (attaching) { + mps_dprint(sc, MPS_FAULT, "%s failed to get IOC Facts " + "with error %d\n", __func__, error); + return (error); + } else { + panic("%s failed to get IOC Facts with error %d\n", + __func__, error); + } + } + + mps_print_iocfacts(sc, sc->facts); + + snprintf(sc->fw_version, sizeof(sc->fw_version), + "%02d.%02d.%02d.%02d", + sc->facts->FWVersion.Struct.Major, + sc->facts->FWVersion.Struct.Minor, + sc->facts->FWVersion.Struct.Unit, + sc->facts->FWVersion.Struct.Dev); + + mps_printf(sc, "Firmware: %s, Driver: %s\n", sc->fw_version, + MPS_DRIVER_VERSION); + mps_printf(sc, "IOCCapabilities: %b\n", sc->facts->IOCCapabilities, + "\20" "\3ScsiTaskFull" "\4DiagTrace" "\5SnapBuf" "\6ExtBuf" + "\7EEDP" "\10BiDirTarg" "\11Multicast" "\14TransRetry" "\15IR" + "\16EventReplay" "\17RaidAccel" "\20MSIXIndex" "\21HostDisc"); + + /* + * If the chip doesn't support event replay then a hard reset will be + * required to trigger a full discovery. Do the reset here then + * retransition to Ready. A hard reset might have already been done, + * but it doesn't hurt to do it again. Only do this if attaching, not + * for a Diag Reset. + */ + if (attaching) { + if ((sc->facts->IOCCapabilities & + MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY) == 0) { + mps_diag_reset(sc, NO_SLEEP); + if ((error = mps_transition_ready(sc)) != 0) { + mps_dprint(sc, MPS_FAULT, "%s failed to " + "transition to ready with error %d\n", + __func__, error); + return (error); + } + } + } + + /* + * Set flag if IR Firmware is loaded. If the RAID Capability has + * changed from the previous IOC Facts, log a warning, but only if + * checking this after a Diag Reset and not during attach. + */ + saved_mode = sc->ir_firmware; + if (sc->facts->IOCCapabilities & + MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID) + sc->ir_firmware = 1; + if (!attaching) { + if (sc->ir_firmware != saved_mode) { + mps_dprint(sc, MPS_FAULT, "%s new IR/IT mode in IOC " + "Facts does not match previous mode\n", __func__); + } + } + + /* Only deallocate and reallocate if relevant IOC Facts have changed */ + reallocating = FALSE; + if ((!attaching) && + ((saved_facts.MsgVersion != sc->facts->MsgVersion) || + (saved_facts.HeaderVersion != sc->facts->HeaderVersion) || + (saved_facts.MaxChainDepth != sc->facts->MaxChainDepth) || + (saved_facts.RequestCredit != sc->facts->RequestCredit) || + (saved_facts.ProductID != sc->facts->ProductID) || + (saved_facts.IOCCapabilities != sc->facts->IOCCapabilities) || + (saved_facts.IOCRequestFrameSize != + sc->facts->IOCRequestFrameSize) || + (saved_facts.MaxTargets != sc->facts->MaxTargets) || + (saved_facts.MaxSasExpanders != sc->facts->MaxSasExpanders) || + (saved_facts.MaxEnclosures != sc->facts->MaxEnclosures) || + (saved_facts.HighPriorityCredit != sc->facts->HighPriorityCredit) || + (saved_facts.MaxReplyDescriptorPostQueueDepth != + sc->facts->MaxReplyDescriptorPostQueueDepth) || + (saved_facts.ReplyFrameSize != sc->facts->ReplyFrameSize) || + (saved_facts.MaxVolumes != sc->facts->MaxVolumes) || + (saved_facts.MaxPersistentEntries != + sc->facts->MaxPersistentEntries))) { + reallocating = TRUE; + } + + /* + * Some things should be done if attaching or re-allocating after a Diag + * Reset, but are not needed after a Diag Reset if the FW has not + * changed. + */ + if (attaching || reallocating) { + /* + * Check if controller supports FW diag buffers and set flag to + * enable each type. + */ + if (sc->facts->IOCCapabilities & + MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER) + sc->fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_TRACE]. + enabled = TRUE; + if (sc->facts->IOCCapabilities & + MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER) + sc->fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_SNAPSHOT]. + enabled = TRUE; + if (sc->facts->IOCCapabilities & + MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER) + sc->fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_EXTENDED]. + enabled = TRUE; + + /* + * Set flag if EEDP is supported and if TLR is supported. + */ + if (sc->facts->IOCCapabilities & MPI2_IOCFACTS_CAPABILITY_EEDP) + sc->eedp_enabled = TRUE; + if (sc->facts->IOCCapabilities & MPI2_IOCFACTS_CAPABILITY_TLR) + sc->control_TLR = TRUE; + + /* + * Size the queues. Since the reply queues always need one free + * entry, we'll just deduct one reply message here. + */ + sc->num_reqs = MIN(MPS_REQ_FRAMES, sc->facts->RequestCredit); + sc->num_replies = MIN(MPS_REPLY_FRAMES + MPS_EVT_REPLY_FRAMES, + sc->facts->MaxReplyDescriptorPostQueueDepth) - 1; + + /* + * Initialize all Tail Queues + */ + TAILQ_INIT(&sc->req_list); + TAILQ_INIT(&sc->high_priority_req_list); + TAILQ_INIT(&sc->chain_list); + TAILQ_INIT(&sc->tm_list); + } + + /* + * If doing a Diag Reset and the FW is significantly different + * (reallocating will be set above in IOC Facts comparison), then all + * buffers based on the IOC Facts will need to be freed before they are + * reallocated. + */ + if (reallocating) { + mps_iocfacts_free(sc); + + /* + * The number of targets is based on IOC Facts, so free all of + * the allocated LUNs for each target and then the target buffer + * itself. + */ + for (i=0; i< saved_facts.MaxTargets; i++) { + targ = &sc->sassc->targets[i]; + SLIST_FOREACH_SAFE(lun, &targ->luns, lun_link, + lun_tmp) { + free(lun, M_MPT2); + } + } + free(sc->sassc->targets, M_MPT2); + + sc->sassc->targets = malloc(sizeof(struct mpssas_target) * + sc->facts->MaxTargets, M_MPT2, M_WAITOK|M_ZERO); + if (!sc->sassc->targets) { + panic("%s failed to alloc targets with error %d\n", + __func__, ENOMEM); + } + } + + /* + * Any deallocation has been completed. Now start reallocating + * if needed. Will only need to reallocate if attaching or if the new + * IOC Facts are different from the previous IOC Facts after a Diag + * Reset. Targets have already been allocated above if needed. + */ + if (attaching || reallocating) { + if (((error = mps_alloc_queues(sc)) != 0) || + ((error = mps_alloc_replies(sc)) != 0) || + ((error = mps_alloc_requests(sc)) != 0)) { + if (attaching ) { + mps_dprint(sc, MPS_FAULT, "%s failed to alloc " + "queues with error %d\n", __func__, error); + mps_free(sc); + return (error); + } else { + panic("%s failed to alloc queues with error " + "%d\n", __func__, error); + } + } + } + + /* Always initialize the queues */ + bzero(sc->free_queue, sc->fqdepth * 4); + mps_init_queues(sc); + + /* + * Always get the chip out of the reset state, but only panic if not + * attaching. If attaching and there is an error, that is handled by + * the OS. + */ + error = mps_transition_operational(sc); + if (error != 0) { + if (attaching) { + mps_printf(sc, "%s failed to transition to operational " + "with error %d\n", __func__, error); + mps_free(sc); + return (error); + } else { + panic("%s failed to transition to operational with " + "error %d\n", __func__, error); + } + } + + /* + * Finish the queue initialization. + * These are set here instead of in mps_init_queues() because the + * IOC resets these values during the state transition in + * mps_transition_operational(). The free index is set to 1 + * because the corresponding index in the IOC is set to 0, and the + * IOC treats the queues as full if both are set to the same value. + * Hence the reason that the queue can't hold all of the possible + * replies. + */ + sc->replypostindex = 0; + mps_regwrite(sc, MPI2_REPLY_FREE_HOST_INDEX_OFFSET, sc->replyfreeindex); + mps_regwrite(sc, MPI2_REPLY_POST_HOST_INDEX_OFFSET, 0); + + /* + * Attach the subsystems so they can prepare their event masks. + */ + /* XXX Should be dynamic so that IM/IR and user modules can attach */ + if (attaching) { + if (((error = mps_attach_log(sc)) != 0) || + ((error = mps_attach_sas(sc)) != 0) || + ((error = mps_attach_user(sc)) != 0)) { + mps_printf(sc, "%s failed to attach all subsystems: " + "error %d\n", __func__, error); + mps_free(sc); + return (error); + } + + if ((error = mps_pci_setup_interrupts(sc)) != 0) { + mps_printf(sc, "%s failed to setup interrupts\n", + __func__); + mps_free(sc); + return (error); + } + } + + /* + * Set flag if this is a WD controller. This shouldn't ever change, but + * reset it after a Diag Reset, just in case. + */ + sc->WD_available = FALSE; + if (pci_get_device(sc->mps_dev) == MPI2_MFGPAGE_DEVID_SSS6200) + sc->WD_available = TRUE; + + return (error); + } + + /* + * This is called if memory is being free (during detach for example) and when + * buffers need to be reallocated due to a Diag Reset. + */ + static void + mps_iocfacts_free(struct mps_softc *sc) + { + struct mps_command *cm; + int i; + + mps_dprint(sc, MPS_TRACE, "%s\n", __func__); + + if (sc->post_busaddr != 0) + bus_dmamap_unload(sc->queues_dmat, sc->queues_map); + if (sc->post_queue != NULL) + bus_dmamem_free(sc->queues_dmat, sc->post_queue, + sc->queues_map); + if (sc->queues_dmat != NULL) + bus_dma_tag_destroy(sc->queues_dmat); + + if (sc->chain_busaddr != 0) + bus_dmamap_unload(sc->chain_dmat, sc->chain_map); + if (sc->chain_frames != NULL) + bus_dmamem_free(sc->chain_dmat, sc->chain_frames, + sc->chain_map); + if (sc->chain_dmat != NULL) + bus_dma_tag_destroy(sc->chain_dmat); + + if (sc->sense_busaddr != 0) + bus_dmamap_unload(sc->sense_dmat, sc->sense_map); + if (sc->sense_frames != NULL) + bus_dmamem_free(sc->sense_dmat, sc->sense_frames, + sc->sense_map); + if (sc->sense_dmat != NULL) + bus_dma_tag_destroy(sc->sense_dmat); + + if (sc->reply_busaddr != 0) + bus_dmamap_unload(sc->reply_dmat, sc->reply_map); + if (sc->reply_frames != NULL) + bus_dmamem_free(sc->reply_dmat, sc->reply_frames, + sc->reply_map); + if (sc->reply_dmat != NULL) + bus_dma_tag_destroy(sc->reply_dmat); + + if (sc->req_busaddr != 0) + bus_dmamap_unload(sc->req_dmat, sc->req_map); + if (sc->req_frames != NULL) + bus_dmamem_free(sc->req_dmat, sc->req_frames, sc->req_map); + if (sc->req_dmat != NULL) + bus_dma_tag_destroy(sc->req_dmat); + + if (sc->chains != NULL) + free(sc->chains, M_MPT2); + if (sc->commands != NULL) { + for (i = 1; i < sc->num_reqs; i++) { + cm = &sc->commands[i]; + bus_dmamap_destroy(sc->buffer_dmat, cm->cm_dmamap); + } + free(sc->commands, M_MPT2); + } + if (sc->buffer_dmat != NULL) + bus_dma_tag_destroy(sc->buffer_dmat); + } + /* * The terms diag reset and hard reset are used interchangeably in the MPI * docs to mean resetting the controller chip. In this code diag reset * cleans everything up, and the hard reset function just sends the reset *************** *** 316,322 **** mps_reinit(struct mps_softc *sc) { int error; - uint32_t db; mps_printf(sc, "%s sc %p\n", __func__, sc); --- 675,680 ---- *************** *** 332,344 **** */ sc->mps_flags |= MPS_FLAGS_DIAGRESET; mps_printf(sc, "%s mask interrupts\n", __func__); mps_mask_intr(sc); error = mps_diag_reset(sc, CAN_SLEEP); if (error != 0) { ! panic("%s hard reset failed with error %d\n", ! __func__, error); } /* Restore the PCI state, including the MSI-X registers */ --- 690,704 ---- */ sc->mps_flags |= MPS_FLAGS_DIAGRESET; + /* + * Mask interrupts here. + */ mps_printf(sc, "%s mask interrupts\n", __func__); mps_mask_intr(sc); error = mps_diag_reset(sc, CAN_SLEEP); if (error != 0) { ! panic("%s hard reset failed with error %d\n", __func__, error); } /* Restore the PCI state, including the MSI-X registers */ *************** *** 347,395 **** /* Give the I/O subsystem special priority to get itself prepared */ mpssas_handle_reinit(sc); ! /* reinitialize queues after the reset */ ! bzero(sc->free_queue, sc->fqdepth * 4); ! mps_init_queues(sc); ! ! /* get the chip out of the reset state */ ! error = mps_transition_operational(sc); ! if (error != 0) ! panic("%s transition operational failed with error %d\n", __func__, error); ! /* Reinitialize the reply queue. This is delicate because this ! * function is typically invoked by task mgmt completion callbacks, ! * which are called by the interrupt thread. We need to make sure ! * the interrupt handler loop will exit when we return to it, and ! * that it will recognize the indexes we've changed. */ ! sc->replypostindex = 0; ! mps_regwrite(sc, MPI2_REPLY_FREE_HOST_INDEX_OFFSET, sc->replyfreeindex); ! mps_regwrite(sc, MPI2_REPLY_POST_HOST_INDEX_OFFSET, sc->replypostindex); ! db = mps_regread(sc, MPI2_DOORBELL_OFFSET); ! mps_printf(sc, "%s doorbell 0x%08x\n", __func__, db); ! ! mps_printf(sc, "%s unmask interrupts post %u free %u\n", __func__, ! sc->replypostindex, sc->replyfreeindex); ! mps_unmask_intr(sc); ! mps_printf(sc, "%s restarting post %u free %u\n", __func__, ! sc->replypostindex, sc->replyfreeindex); ! /* restart will reload the event masks clobbered by the reset, and * then enable the port. */ mps_reregister_events(sc); /* the end of discovery will release the simq, so we're done. */ ! mps_printf(sc, "%s finished sc %p post %u free %u\n", ! __func__, sc, sc->replypostindex, sc->replyfreeindex); - sc->mps_flags &= ~MPS_FLAGS_DIAGRESET; - return 0; } --- 707,756 ---- /* Give the I/O subsystem special priority to get itself prepared */ mpssas_handle_reinit(sc); ! /* ! * Get IOC Facts and allocate all structures based on this information. ! * The attach function will also call mps_iocfacts_allocate at startup. ! * If relevant values have changed in IOC Facts, this function will free ! * all of the memory based on IOC Facts and reallocate that memory. ! */ ! if ((error = mps_iocfacts_allocate(sc, FALSE)) != 0) { ! panic("%s IOC Facts based allocation failed with error %d\n", __func__, error); + } ! /* ! * Mapping structures will be re-allocated after getting IOC Page8, so ! * free these structures here. */ ! mps_mapping_exit(sc); ! /* ! * The static page function currently read is IOC Page8. Others can be ! * added in future. It's possible that the values in IOC Page8 have ! * changed after a Diag Reset due to user modification, so always read ! * these. Interrupts are masked, so unmask them before getting config ! * pages. ! */ mps_unmask_intr(sc); + sc->mps_flags &= ~MPS_FLAGS_DIAGRESET; + mps_base_static_config_pages(sc); ! /* ! * Some mapping info is based in IOC Page8 data, so re-initialize the ! * mapping tables. ! */ ! mps_mapping_initialize(sc); ! /* ! * Restart will reload the event masks clobbered by the reset, and * then enable the port. */ mps_reregister_events(sc); /* the end of discovery will release the simq, so we're done. */ ! mps_printf(sc, "%s finished sc %p post %u free %u\n", __func__, sc, sc->replypostindex, sc->replyfreeindex); return 0; } *************** *** 634,681 **** } static int - mps_get_portfacts(struct mps_softc *sc, MPI2_PORT_FACTS_REPLY *facts, int port) - { - MPI2_PORT_FACTS_REQUEST *request; - MPI2_PORT_FACTS_REPLY *reply; - struct mps_command *cm; - int error; - - mps_dprint(sc, MPS_TRACE, "%s\n", __func__); - - if ((cm = mps_alloc_command(sc)) == NULL) - return (EBUSY); - request = (MPI2_PORT_FACTS_REQUEST *)cm->cm_req; - request->Function = MPI2_FUNCTION_PORT_FACTS; - request->PortNumber = port; - cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; - cm->cm_data = NULL; - error = mps_request_polled(sc, cm); - reply = (MPI2_PORT_FACTS_REPLY *)cm->cm_reply; - if (reply == NULL) { - mps_printf(sc, "%s NULL reply\n", __func__); - goto done; - } - if ((reply->IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS) { - mps_printf(sc, - "%s error %d iocstatus 0x%x iocloginfo 0x%x type 0x%x\n", - __func__, error, reply->IOCStatus, reply->IOCLogInfo, - reply->PortType); - error = ENXIO; - } - bcopy(reply, facts, sizeof(MPI2_PORT_FACTS_REPLY)); - done: - mps_free_command(sc, cm); - - return (error); - } - - static int mps_send_iocinit(struct mps_softc *sc) { MPI2_IOC_INIT_REQUEST init; MPI2_DEFAULT_REPLY reply; int req_sz, reply_sz, error; mps_dprint(sc, MPS_TRACE, "%s\n", __func__); --- 995,1007 ---- } static int mps_send_iocinit(struct mps_softc *sc) { MPI2_IOC_INIT_REQUEST init; MPI2_DEFAULT_REPLY reply; int req_sz, reply_sz, error; + struct timeval now; + uint64_t time_in_msec; mps_dprint(sc, MPS_TRACE, "%s\n", __func__); *************** *** 704,711 **** init.ReplyDescriptorPostQueueAddress.Low = htole32((uint32_t)sc->post_busaddr); init.ReplyFreeQueueAddress.High = 0; init.ReplyFreeQueueAddress.Low = htole32((uint32_t)sc->free_busaddr); ! init.TimeStamp.High = 0; ! init.TimeStamp.Low = htole32((uint32_t)time_uptime); error = mps_request_sync(sc, &init, &reply, req_sz, reply_sz, 5); if ((reply.IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS) --- 1030,1039 ---- init.ReplyDescriptorPostQueueAddress.Low = htole32((uint32_t)sc->post_busaddr); init.ReplyFreeQueueAddress.High = 0; init.ReplyFreeQueueAddress.Low = htole32((uint32_t)sc->free_busaddr); ! getmicrotime(&now); ! time_in_msec = (now.tv_sec * 1000 + now.tv_usec/1000); ! init.TimeStamp.High = htole32((time_in_msec >> 32) & 0xFFFFFFFF); ! init.TimeStamp.Low = htole32(time_in_msec & 0xFFFFFFFF); error = mps_request_sync(sc, &init, &reply, req_sz, reply_sz, 5); if ((reply.IOCStatus & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS) *************** *** 1119,1125 **** int mps_attach(struct mps_softc *sc) { ! int i, error; mps_get_tunables(sc); --- 1447,1453 ---- int mps_attach(struct mps_softc *sc) { ! int error; mps_get_tunables(sc); *************** *** 1141,1291 **** __func__, __LINE__); return (ENOMEM); } - if ((error = mps_get_iocfacts(sc, sc->facts)) != 0) - return (error); - - mps_print_iocfacts(sc, sc->facts); - - snprintf(sc->fw_version, sizeof(sc->fw_version), - "%02d.%02d.%02d.%02d", - sc->facts->FWVersion.Struct.Major, - sc->facts->FWVersion.Struct.Minor, - sc->facts->FWVersion.Struct.Unit, - sc->facts->FWVersion.Struct.Dev); - mps_printf(sc, "Firmware: %s, Driver: %s\n", sc->fw_version, - MPS_DRIVER_VERSION); - mps_printf(sc, "IOCCapabilities: %b\n", sc->facts->IOCCapabilities, - "\20" "\3ScsiTaskFull" "\4DiagTrace" "\5SnapBuf" "\6ExtBuf" - "\7EEDP" "\10BiDirTarg" "\11Multicast" "\14TransRetry" "\15IR" - "\16EventReplay" "\17RaidAccel" "\20MSIXIndex" "\21HostDisc"); - /* ! * If the chip doesn't support event replay then a hard reset will be ! * required to trigger a full discovery. Do the reset here then ! * retransition to Ready. A hard reset might have already been done, ! * but it doesn't hurt to do it again. */ ! if ((sc->facts->IOCCapabilities & ! MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY) == 0) { ! mps_diag_reset(sc, NO_SLEEP); ! if ((error = mps_transition_ready(sc)) != 0) ! return (error); ! } ! ! /* ! * Set flag if IR Firmware is loaded. ! */ ! if (sc->facts->IOCCapabilities & ! MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID) ! sc->ir_firmware = 1; ! ! /* ! * Check if controller supports FW diag buffers and set flag to enable ! * each type. ! */ ! if (sc->facts->IOCCapabilities & ! MPI2_IOCFACTS_CAPABILITY_DIAG_TRACE_BUFFER) ! sc->fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_TRACE].enabled = ! TRUE; ! if (sc->facts->IOCCapabilities & ! MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER) ! sc->fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_SNAPSHOT].enabled = ! TRUE; ! if (sc->facts->IOCCapabilities & ! MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER) ! sc->fw_diag_buffer_list[MPI2_DIAG_BUF_TYPE_EXTENDED].enabled = ! TRUE; ! ! /* ! * Set flag if EEDP is supported and if TLR is supported. ! */ ! if (sc->facts->IOCCapabilities & MPI2_IOCFACTS_CAPABILITY_EEDP) ! sc->eedp_enabled = TRUE; ! if (sc->facts->IOCCapabilities & MPI2_IOCFACTS_CAPABILITY_TLR) ! sc->control_TLR = TRUE; ! ! /* ! * Size the queues. Since the reply queues always need one free entry, ! * we'll just deduct one reply message here. ! */ ! sc->num_reqs = MIN(MPS_REQ_FRAMES, sc->facts->RequestCredit); ! sc->num_replies = MIN(MPS_REPLY_FRAMES + MPS_EVT_REPLY_FRAMES, ! sc->facts->MaxReplyDescriptorPostQueueDepth) - 1; ! TAILQ_INIT(&sc->req_list); ! TAILQ_INIT(&sc->high_priority_req_list); ! TAILQ_INIT(&sc->chain_list); ! TAILQ_INIT(&sc->tm_list); ! ! if (((error = mps_alloc_queues(sc)) != 0) || ! ((error = mps_alloc_replies(sc)) != 0) || ! ((error = mps_alloc_requests(sc)) != 0)) { ! mps_printf(sc, "%s failed to alloc\n", __func__); ! mps_free(sc); ! return (error); ! } ! ! if (((error = mps_init_queues(sc)) != 0) || ! ((error = mps_transition_operational(sc)) != 0)) { ! mps_printf(sc, "%s failed to transition operational\n", __func__); ! mps_free(sc); ! return (error); ! } ! ! /* ! * Finish the queue initialization. ! * These are set here instead of in mps_init_queues() because the ! * IOC resets these values during the state transition in ! * mps_transition_operational(). The free index is set to 1 ! * because the corresponding index in the IOC is set to 0, and the ! * IOC treats the queues as full if both are set to the same value. ! * Hence the reason that the queue can't hold all of the possible ! * replies. ! */ ! sc->replypostindex = 0; ! mps_regwrite(sc, MPI2_REPLY_FREE_HOST_INDEX_OFFSET, sc->replyfreeindex); ! mps_regwrite(sc, MPI2_REPLY_POST_HOST_INDEX_OFFSET, 0); ! ! sc->pfacts = malloc(sizeof(MPI2_PORT_FACTS_REPLY) * ! sc->facts->NumberOfPorts, M_MPT2, M_ZERO|M_WAITOK); ! if(!sc->pfacts) { ! device_printf(sc->mps_dev, "Cannot allocate memory %s %d\n", ! __func__, __LINE__); ! return (ENOMEM); ! } ! for (i = 0; i < sc->facts->NumberOfPorts; i++) { ! if ((error = mps_get_portfacts(sc, &sc->pfacts[i], i)) != 0) { ! mps_printf(sc, "%s failed to get portfacts for port %d\n", ! __func__, i); ! mps_free(sc); ! return (error); ! } ! mps_print_portfacts(sc, &sc->pfacts[i]); ! } ! ! /* Attach the subsystems so they can prepare their event masks. */ ! /* XXX Should be dynamic so that IM/IR and user modules can attach */ ! if (((error = mps_attach_log(sc)) != 0) || ! ((error = mps_attach_sas(sc)) != 0) || ! ((error = mps_attach_user(sc)) != 0)) { ! mps_printf(sc, "%s failed to attach all subsystems: error %d\n", ! __func__, error); ! mps_free(sc); ! return (error); ! } ! ! if ((error = mps_pci_setup_interrupts(sc)) != 0) { ! mps_printf(sc, "%s failed to setup interrupts\n", __func__); ! mps_free(sc); return (error); } - /* - * The static page function currently read is ioc page8. Others can be - * added in future. - */ - mps_base_static_config_pages(sc); - /* Start the periodic watchdog check on the IOC Doorbell */ mps_periodic(sc); --- 1469,1488 ---- __func__, __LINE__); return (ENOMEM); } /* ! * Get IOC Facts and allocate all structures based on this information. ! * A Diag Reset will also call mps_iocfacts_allocate and re-read the IOC ! * Facts. If relevant values have changed in IOC Facts, this function ! * will free all of the memory based on IOC Facts and reallocate that ! * memory. If this fails, any allocated memory should already be freed. */ ! if ((error = mps_iocfacts_allocate(sc, TRUE)) != 0) { ! mps_dprint(sc, MPS_FAULT, "%s IOC Facts based allocation " ! "failed with error %d\n", __func__, error); return (error); } /* Start the periodic watchdog check on the IOC Doorbell */ mps_periodic(sc); *************** *** 1328,1334 **** --- 1525,1533 ---- mps_lock(sc); mps_unmask_intr(sc); + /* initialize device mapping tables */ + mps_base_static_config_pages(sc); mps_mapping_initialize(sc); mpssas_startup(sc); mps_unlock(sc); *************** *** 1411,1418 **** int mps_free(struct mps_softc *sc) { ! struct mps_command *cm; ! int i, error; /* Turn off the watchdog */ mps_lock(sc); --- 1610,1616 ---- int mps_free(struct mps_softc *sc) { ! int error; /* Turn off the watchdog */ mps_lock(sc); *************** *** 1438,1499 **** if (sc->facts != NULL) free(sc->facts, M_MPT2); ! if (sc->pfacts != NULL) ! free(sc->pfacts, M_MPT2); ! ! if (sc->post_busaddr != 0) ! bus_dmamap_unload(sc->queues_dmat, sc->queues_map); ! if (sc->post_queue != NULL) ! bus_dmamem_free(sc->queues_dmat, sc->post_queue, ! sc->queues_map); ! if (sc->queues_dmat != NULL) ! bus_dma_tag_destroy(sc->queues_dmat); ! ! if (sc->chain_busaddr != 0) ! bus_dmamap_unload(sc->chain_dmat, sc->chain_map); ! if (sc->chain_frames != NULL) ! bus_dmamem_free(sc->chain_dmat, sc->chain_frames,sc->chain_map); ! if (sc->chain_dmat != NULL) ! bus_dma_tag_destroy(sc->chain_dmat); ! ! if (sc->sense_busaddr != 0) ! bus_dmamap_unload(sc->sense_dmat, sc->sense_map); ! if (sc->sense_frames != NULL) ! bus_dmamem_free(sc->sense_dmat, sc->sense_frames,sc->sense_map); ! if (sc->sense_dmat != NULL) ! bus_dma_tag_destroy(sc->sense_dmat); ! ! if (sc->reply_busaddr != 0) ! bus_dmamap_unload(sc->reply_dmat, sc->reply_map); ! if (sc->reply_frames != NULL) ! bus_dmamem_free(sc->reply_dmat, sc->reply_frames,sc->reply_map); ! if (sc->reply_dmat != NULL) ! bus_dma_tag_destroy(sc->reply_dmat); ! ! if (sc->req_busaddr != 0) ! bus_dmamap_unload(sc->req_dmat, sc->req_map); ! if (sc->req_frames != NULL) ! bus_dmamem_free(sc->req_dmat, sc->req_frames, sc->req_map); ! if (sc->req_dmat != NULL) ! bus_dma_tag_destroy(sc->req_dmat); - if (sc->chains != NULL) - free(sc->chains, M_MPT2); - if (sc->commands != NULL) { - for (i = 1; i < sc->num_reqs; i++) { - cm = &sc->commands[i]; - bus_dmamap_destroy(sc->buffer_dmat, cm->cm_dmamap); - } - free(sc->commands, M_MPT2); - } - if (sc->buffer_dmat != NULL) - bus_dma_tag_destroy(sc->buffer_dmat); - if (sc->sysctl_tree != NULL) sysctl_ctx_free(&sc->sysctl_ctx); - mps_mapping_free_memory(sc); - /* Deregister the shutdown function */ if (sc->shutdown_eh != NULL) EVENTHANDLER_DEREGISTER(shutdown_final, sc->shutdown_eh); --- 1636,1650 ---- if (sc->facts != NULL) free(sc->facts, M_MPT2); ! /* ! * Free all buffers that are based on IOC Facts. A Diag Reset may need ! * to free these buffers too. ! */ ! mps_iocfacts_free(sc); if (sc->sysctl_tree != NULL) sysctl_ctx_free(&sc->sysctl_ctx); /* Deregister the shutdown function */ if (sc->shutdown_eh != NULL) EVENTHANDLER_DEREGISTER(shutdown_final, sc->shutdown_eh); *************** *** 1914,1920 **** /* first, reregister events */ ! for (i = 0; i < MPI2_EVENT_NOTIFY_EVENTMASK_WORDS; i++) sc->event_mask[i] = -1; TAILQ_FOREACH(eh, &sc->event_list, eh_list) { --- 2065,2071 ---- /* first, reregister events */ ! for (i = 0; i < MPI2_EVENT_NOTIFY_EVENTMASK_WORDS; i++) sc->event_mask[i] = -1; TAILQ_FOREACH(eh, &sc->event_list, eh_list) { *************** *** 1946,1952 **** error = mps_map_command(sc, cm); ! mps_dprint(sc, MPS_TRACE, "%s finished with error %d\n", __func__, error); return (error); } --- 2097,2104 ---- error = mps_map_command(sc, cm); ! mps_dprint(sc, MPS_TRACE, "%s finished with error %d\n", __func__, ! error); return (error); } *************** *** 2325,2350 **** * be executed and enqueued automatically. Other errors come from msleep(). */ int ! mps_wait_command(struct mps_softc *sc, struct mps_command *cm, int timeout) { int error, rc; ! mtx_assert(&sc->mps_mtx, MA_OWNED); ! ! if(sc->mps_flags & MPS_FLAGS_DIAGRESET) return EBUSY; cm->cm_complete = NULL; ! cm->cm_flags |= MPS_CM_FLAGS_WAKEUP; error = mps_map_command(sc, cm); if ((error != 0) && (error != EINPROGRESS)) return (error); ! error = msleep(cm, &sc->mps_mtx, 0, "mpswait", timeout*hz); if (error == EWOULDBLOCK) { mps_dprint(sc, MPS_FAULT, "Calling Reinit from %s\n", __func__); rc = mps_reinit(sc); ! mps_dprint(sc, MPS_FAULT, "Reinit %s\n", ! (rc == 0) ? "success" : "failed"); error = ETIMEDOUT; } return (error); --- 2477,2526 ---- * be executed and enqueued automatically. Other errors come from msleep(). */ int ! mps_wait_command(struct mps_softc *sc, struct mps_command *cm, int timeout, ! int sleep_flag) { int error, rc; + struct timeval cur_time, start_time; ! if (sc->mps_flags & MPS_FLAGS_DIAGRESET) return EBUSY; cm->cm_complete = NULL; ! cm->cm_flags |= (MPS_CM_FLAGS_WAKEUP + MPS_CM_FLAGS_POLLED); error = mps_map_command(sc, cm); if ((error != 0) && (error != EINPROGRESS)) return (error); ! ! // Check for context and wait for 50 mSec at a time until time has ! // expired or the command has finished. If msleep can't be used, need ! // to poll. ! if (curthread->td_pflags & TDP_NOSLEEPING) ! sleep_flag = NO_SLEEP; ! getmicrotime(&start_time); ! if (mtx_owned(&sc->mps_mtx) && sleep_flag == CAN_SLEEP) { ! error = msleep(cm, &sc->mps_mtx, 0, "mpswait", timeout*hz); ! } else { ! while ((cm->cm_flags & MPS_CM_FLAGS_COMPLETE) == 0) { ! mps_intr_locked(sc); ! if (sleep_flag == CAN_SLEEP) ! pause("mpswait", hz/20); ! else ! DELAY(50000); ! ! getmicrotime(&cur_time); ! if ((cur_time.tv_sec - start_time.tv_sec) > timeout) { ! error = EWOULDBLOCK; ! break; ! } ! } ! } ! if (error == EWOULDBLOCK) { mps_dprint(sc, MPS_FAULT, "Calling Reinit from %s\n", __func__); rc = mps_reinit(sc); ! mps_dprint(sc, MPS_FAULT, "Reinit %s\n", (rc == 0) ? "success" : ! "failed"); error = ETIMEDOUT; } return (error); *************** *** 2444,2450 **** cm->cm_complete = mps_config_complete; return (mps_map_command(sc, cm)); } else { ! error = mps_wait_command(sc, cm, 0); if (error) { mps_dprint(sc, MPS_FAULT, "Error %d reading config page\n", error); --- 2620,2626 ---- cm->cm_complete = mps_config_complete; return (mps_map_command(sc, cm)); } else { ! error = mps_wait_command(sc, cm, 0, CAN_SLEEP); if (error) { mps_dprint(sc, MPS_FAULT, "Error %d reading config page\n", error); *** src/sys/dev/mps/mps_config.c.orig --- src/sys/dev/mps/mps_config.c *************** *** 93,104 **** request->Header.PageVersion = MPI2_IOCPAGE8_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for header completed with error %d", __func__, error); error = ENXIO; goto out; --- 93,107 ---- request->Header.PageVersion = MPI2_IOCPAGE8_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for header completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 107,113 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 110,119 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 144,155 **** goto out; } cm->cm_data = page; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 150,165 ---- goto out; } cm->cm_data = page; ! ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 158,164 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 168,177 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 211,216 **** --- 224,234 ---- request->Header.PageVersion = MPI2_MANUFACTURING10_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; + + /* + * This page must be polled because the IOC isn't ready yet when this + * page is needed. + */ error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { *************** *** 262,267 **** --- 280,290 ---- goto out; } cm->cm_data = page; + + /* + * This page must be polled because the IOC isn't ready yet when this + * page is needed. + */ error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { *************** *** 561,572 **** MPI2_DPM_PGAD_ENTRY_COUNT_SHIFT; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for header completed with error %d", __func__, error); error = ENXIO; goto out; --- 584,598 ---- MPI2_DPM_PGAD_ENTRY_COUNT_SHIFT; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for header completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 575,581 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 601,610 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 615,626 **** goto out; } cm->cm_data = page; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 644,658 ---- goto out; } cm->cm_data = page; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 629,635 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 661,670 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 685,696 **** request->PageAddress |= htole16(entry_idx); cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for header completed with error %d", __func__, error); error = ENXIO; goto out; --- 720,734 ---- request->PageAddress |= htole16(entry_idx); cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for header completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 699,705 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 737,746 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 741,752 **** bcopy(config_page, page, MIN(cm->cm_length, (sizeof(Mpi2DriverMappingPage0_t)))); cm->cm_data = page; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 782,796 ---- bcopy(config_page, page, MIN(cm->cm_length, (sizeof(Mpi2DriverMappingPage0_t)))); cm->cm_data = page; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request to write page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 755,761 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: page written with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 799,808 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: page written with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 808,819 **** request->Header.PageVersion = MPI2_SASDEVICE0_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for header completed with error %d", __func__, error); error = ENXIO; goto out; --- 855,869 ---- request->Header.PageVersion = MPI2_SASDEVICE0_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for header completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 822,828 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 872,881 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 862,873 **** } cm->cm_data = page; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 915,929 ---- } cm->cm_data = page; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 876,882 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 932,941 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 928,939 **** request->Header.PageVersion = MPI2_BIOSPAGE3_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for header completed with error %d", __func__, error); error = ENXIO; goto out; --- 987,1001 ---- request->Header.PageVersion = MPI2_BIOSPAGE3_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for header completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 942,948 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 1004,1013 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 980,991 **** } cm->cm_data = page; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 1045,1059 ---- } cm->cm_data = page; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 994,1000 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 1062,1071 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 1046,1051 **** --- 1117,1127 ---- request->Header.PageVersion = MPI2_RAIDVOLPAGE0_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; + + /* + * This page must be polled because the IOC isn't ready yet when this + * page is needed. + */ error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { *************** *** 1099,1104 **** --- 1175,1184 ---- } cm->cm_data = page; + /* + * This page must be polled because the IOC isn't ready yet when this + * page is needed. + */ error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { *************** *** 1166,1177 **** request->Header.PageVersion = MPI2_RAIDVOLPAGE1_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for header completed with error %d", __func__, error); error = ENXIO; goto out; --- 1246,1260 ---- request->Header.PageVersion = MPI2_RAIDVOLPAGE1_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for header completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 1180,1186 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 1263,1272 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: header read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 1219,1230 **** } cm->cm_data = page; ! error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 1305,1319 ---- } cm->cm_data = page; ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 1233,1239 **** bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; --- 1322,1331 ---- bcopy(reply, mpi_reply, sizeof(MPI2_CONFIG_REPLY)); if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ printf("%s: page read with error; iocstatus = 0x%x\n", __func__, ioc_status); error = ENXIO; *************** *** 1311,1316 **** --- 1403,1413 ---- request->Header.PageVersion = MPI2_RAIDPHYSDISKPAGE0_PAGEVERSION; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = NULL; + + /* + * This page must be polled because the IOC isn't ready yet when this + * page is needed. + */ error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { *************** *** 1364,1369 **** --- 1461,1470 ---- } cm->cm_data = page; + /* + * This page must be polled because the IOC isn't ready yet when this + * page is needed. + */ error = mps_request_polled(sc, cm); reply = (MPI2_CONFIG_REPLY *)cm->cm_reply; if (error || (reply == NULL)) { *** src/sys/dev/mps/mps_mapping.c.orig --- src/sys/dev/mps/mps_mapping.c *************** *** 1216,1227 **** phy_change->is_processed = 1; } else { phy_change->is_processed = 1; ! printf("%s: failed to add the " ! "device with handle 0x%04x " ! "to persistent table " ! "because there is no free " ! "space available\n", ! __func__, phy_change->dev_handle); } } else { --- 1216,1227 ---- phy_change->is_processed = 1; } else { phy_change->is_processed = 1; ! mps_dprint(sc, MPS_INFO, "%s: " ! "failed to add the device " ! "with handle 0x%04x to " ! "persistent table because " ! "there is no free space " ! "available\n", __func__, phy_change->dev_handle); } } else { *************** *** 1318,1329 **** phy_change->is_processed = 1; } else if (dpm_idx == MPS_DPM_BAD_IDX) { phy_change->is_processed = 1; ! printf("%s: failed to add the " ! "device with handle 0x%04x " ! "to persistent table " ! "because there is no free " ! "space available\n", ! __func__, phy_change->dev_handle); } } --- 1318,1329 ---- phy_change->is_processed = 1; } else if (dpm_idx == MPS_DPM_BAD_IDX) { phy_change->is_processed = 1; ! mps_dprint(sc, MPS_INFO, "%s: " ! "failed to add the device " ! "with handle 0x%04x to " ! "persistent table because " ! "there is no free space " ! "available\n", __func__, phy_change->dev_handle); } } *** src/sys/dev/mps/mps_sas.c.orig --- src/sys/dev/mps/mps_sas.c *************** *** 136,149 **** static void mpssas_resetdev_complete(struct mps_softc *, struct mps_command *); static int mpssas_send_abort(struct mps_softc *sc, struct mps_command *tm, struct mps_command *cm); static int mpssas_send_reset(struct mps_softc *sc, struct mps_command *tm, uint8_t type); - static void mpssas_rescan(struct mpssas_softc *sassc, union ccb *ccb); - static void mpssas_rescan_done(struct cam_periph *periph, union ccb *done_ccb); - static void mpssas_scanner_thread(void *arg); - #if __FreeBSD_version >= 1000006 static void mpssas_async(void *callback_arg, uint32_t code, struct cam_path *path, void *arg); ! #else ! static void mpssas_check_eedp(struct mpssas_softc *sassc); static void mpssas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb); #endif static int mpssas_send_portenable(struct mps_softc *sc); --- 136,147 ---- static void mpssas_resetdev_complete(struct mps_softc *, struct mps_command *); static int mpssas_send_abort(struct mps_softc *sc, struct mps_command *tm, struct mps_command *cm); static int mpssas_send_reset(struct mps_softc *sc, struct mps_command *tm, uint8_t type); static void mpssas_async(void *callback_arg, uint32_t code, struct cam_path *path, void *arg); ! #if (__FreeBSD_version < 901503) || \ ! ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006)) ! static void mpssas_check_eedp(struct mps_softc *sc, struct cam_path *path, ! struct ccb_getdev *cgd); static void mpssas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb); #endif static int mpssas_send_portenable(struct mps_softc *sc); *************** *** 198,205 **** --- 196,208 ---- mps_dprint(sassc->sc, MPS_INFO, "%s releasing simq\n", __func__); sassc->flags &= ~MPSSAS_IN_STARTUP; + #if (__FreeBSD_version >= 1000036) || \ + ((__FreeBSD_version < 1000000) && (__FreeBSD_version >= 9010506)) + xpt_release_boot(); + #else xpt_release_simq(sassc->sim, 1); mpssas_rescan_target(sassc->sc, NULL); + #endif } mps_dprint(sassc->sc, MPS_TRACE, "%s refcount %u\n", __func__, sassc->startup_refcount); *************** *** 247,253 **** mps_free_high_priority_command(sc, tm); } - void mpssas_rescan_target(struct mps_softc *sc, struct mpssas_target *targ) { --- 250,255 ---- *************** *** 272,278 **** } if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid, ! targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mps_dprint(sc, MPS_FAULT, "unable to create path for rescan\n"); xpt_free_ccb(ccb); return; --- 274,280 ---- } if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, pathid, ! targetid, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { mps_dprint(sc, MPS_FAULT, "unable to create path for rescan\n"); xpt_free_ccb(ccb); return; *************** *** 284,290 **** ccb->ccb_h.func_code = XPT_SCAN_TGT; mps_dprint(sc, MPS_TRACE, "%s targetid %u\n", __func__, targetid); ! mpssas_rescan(sassc, ccb); } static void --- 286,292 ---- ccb->ccb_h.func_code = XPT_SCAN_TGT; mps_dprint(sc, MPS_TRACE, "%s targetid %u\n", __func__, targetid); ! xpt_rescan(ccb); } static void *************** *** 671,679 **** mps_attach_sas(struct mps_softc *sc) { struct mpssas_softc *sassc; - #if __FreeBSD_version >= 1000006 cam_status status; - #endif int unit, error = 0; mps_dprint(sc, MPS_TRACE, "%s\n", __func__); --- 673,679 ---- *************** *** 721,736 **** taskqueue_start_threads(&sassc->ev_tq, 1, 255, "%s taskq", device_get_nameunit(sc->mps_dev)); - TAILQ_INIT(&sassc->ccb_scanq); - error = mps_kproc_create(mpssas_scanner_thread, sassc, - &sassc->rescan_thread, 0, 0, "mps_scan%d", unit); - if (error) { - mps_printf(sc, "Error %d starting rescan thread\n", error); - goto out; - } - mps_lock(sc); - sassc->flags |= MPSSAS_SCANTHREAD; /* * XXX There should be a bus for every port on the adapter, but since --- 721,727 ---- *************** *** 745,756 **** } /* ! * Assume that discovery events will start right away. Freezing ! * the simq will prevent the CAM boottime scanner from running ! * before discovery is complete. */ sassc->flags |= MPSSAS_IN_STARTUP | MPSSAS_IN_DISCOVERY; xpt_freeze_simq(sassc->sim, 1); sc->sassc->startup_refcount = 0; callout_init(&sassc->discovery_callout, 1 /*mpsafe*/); --- 736,752 ---- } /* ! * Assume that discovery events will start right away. ! * ! * Hold off boot until discovery is complete. */ sassc->flags |= MPSSAS_IN_STARTUP | MPSSAS_IN_DISCOVERY; + #if (__FreeBSD_version >= 1000036) || \ + ((__FreeBSD_version < 1000000) && (__FreeBSD_version >= 9010506)) + xpt_hold_boot(); + #else xpt_freeze_simq(sassc->sim, 1); + #endif sc->sassc->startup_refcount = 0; callout_init(&sassc->discovery_callout, 1 /*mpsafe*/); *************** *** 758,770 **** sassc->tm_count = 0; ! #if __FreeBSD_version >= 1000006 ! status = xpt_register_async(AC_ADVINFO_CHANGED, mpssas_async, sc, NULL); if (status != CAM_REQ_CMP) { ! mps_printf(sc, "Error %#x registering async handler for " ! "AC_ADVINFO_CHANGED events\n", status); } - #endif mps_unlock(sc); --- 754,794 ---- sassc->tm_count = 0; ! /* ! * Register for async events so we can determine the EEDP ! * capabilities of devices. ! */ ! status = xpt_create_path(&sassc->path, /*periph*/NULL, ! cam_sim_path(sc->sassc->sim), CAM_TARGET_WILDCARD, ! CAM_LUN_WILDCARD); ! if (status != CAM_REQ_CMP) { ! mps_printf(sc, "Error %#x creating sim path\n", status); ! sassc->path = NULL; ! } else { ! int event; ! ! #if (__FreeBSD_version >= 1000006) || \ ! ((__FreeBSD_version >= 901503) && (__FreeBSD_version < 1000000)) ! event = AC_ADVINFO_CHANGED; ! #else ! event = AC_FOUND_DEVICE; ! #endif ! status = xpt_register_async(event, mpssas_async, sc, ! sassc->path); ! if (status != CAM_REQ_CMP) { ! mps_printf(sc, "Error %#x registering async handler " ! "for event type 0x%x\n", status, event); ! xpt_free_path(sassc->path); ! sassc->path = NULL; ! } ! } if (status != CAM_REQ_CMP) { ! /* ! * EEDP use is the exception, not the rule. ! * Warn the user, but do not fail to attach. ! */ ! mps_printf(sc, "EEDP capabilities disabled.\n"); } mps_unlock(sc); *************** *** 803,811 **** mps_lock(sc); /* Deregister our async handler */ ! #if __FreeBSD_version >= 1000006 ! xpt_register_async(0, mpssas_async, sc, NULL); ! #endif if (sassc->flags & MPSSAS_IN_STARTUP) xpt_release_simq(sassc->sim, 1); --- 827,837 ---- mps_lock(sc); /* Deregister our async handler */ ! if (sassc->path != NULL) { ! xpt_register_async(0, mpssas_async, sc, sassc->path); ! xpt_free_path(sassc->path); ! sassc->path = NULL; ! } if (sassc->flags & MPSSAS_IN_STARTUP) xpt_release_simq(sassc->sim, 1); *************** *** 815,829 **** cam_sim_free(sassc->sim, FALSE); } ! if (sassc->flags & MPSSAS_SCANTHREAD) { ! sassc->flags |= MPSSAS_SHUTDOWN; ! wakeup(&sassc->ccb_scanq); ! ! if (sassc->flags & MPSSAS_SCANTHREAD) { ! msleep(&sassc->flags, &sc->mps_mtx, PRIBIO, ! "mps_shutdown", 30 * hz); ! } ! } mps_unlock(sc); mps_dprint(sc, MPS_INFO, "%s:%d\n", __func__,__LINE__); --- 841,847 ---- cam_sim_free(sassc->sim, FALSE); } ! sassc->flags |= MPSSAS_SHUTDOWN; mps_unlock(sc); mps_dprint(sc, MPS_INFO, "%s:%d\n", __func__,__LINE__); *************** *** 914,920 **** --- 932,943 ---- cpi->version_num = 1; cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE|PI_WIDE_16; cpi->target_sprt = 0; + #if (__FreeBSD_version >= 1000036) || \ + ((__FreeBSD_version < 1000000) && (__FreeBSD_version >= 9010506)) + cpi->hba_misc = PIM_NOBUSRESET | PIM_UNMAPPED | PIM_NOSCAN; + #else cpi->hba_misc = PIM_NOBUSRESET | PIM_UNMAPPED; + #endif cpi->hba_eng_cnt = 0; cpi->max_target = sassc->sc->facts->MaxTargets - 1; cpi->max_lun = 255; *************** *** 1580,1586 **** csio = &ccb->csio; targ = &sassc->targets[csio->ccb_h.target_id]; ! mps_dprint(sc, MPS_TRACE, "%s ccb %p target flag %x\n", __func__, ccb, targ->flags); if (targ->handle == 0x0) { mps_dprint(sc, MPS_TRACE, "%s NULL handle for target %u\n", __func__, csio->ccb_h.target_id); --- 1603,1610 ---- csio = &ccb->csio; targ = &sassc->targets[csio->ccb_h.target_id]; ! mps_dprint(sc, MPS_TRACE, "%s ccb %p target flag %x\n", __func__, ccb, ! targ->flags); if (targ->handle == 0x0) { mps_dprint(sc, MPS_TRACE, "%s NULL handle for target %u\n", __func__, csio->ccb_h.target_id); *************** *** 1589,1601 **** return; } if (targ->flags & MPS_TARGET_FLAGS_RAID_COMPONENT) { ! mps_dprint(sc, MPS_TRACE, "%s Raid component no SCSI IO supported %u\n", ! __func__, csio->ccb_h.target_id); csio->ccb_h.status = CAM_TID_INVALID; xpt_done(ccb); return; } /* * If devinfo is 0 this will be a volume. In that case don't tell CAM * that the volume has timed out. We want volumes to be enumerated * until they are deleted/removed, not just failed. --- 1613,1636 ---- return; } if (targ->flags & MPS_TARGET_FLAGS_RAID_COMPONENT) { ! mps_dprint(sc, MPS_TRACE, "%s Raid component no SCSI IO " ! "supported %u\n", __func__, csio->ccb_h.target_id); csio->ccb_h.status = CAM_TID_INVALID; xpt_done(ccb); return; } /* + * Sometimes, it is possible to get a command that is not "In + * Progress" and was actually aborted by the upper layer. Check for + * this here and complete the command without error. + */ + if (ccb->ccb_h.status != CAM_REQ_INPROG) { + mps_dprint(sc, MPS_TRACE, "%s Command is not in progress for " + "target %u\n", __func__, csio->ccb_h.target_id); + xpt_done(ccb); + return; + } + /* * If devinfo is 0 this will be a volume. In that case don't tell CAM * that the volume has timed out. We want volumes to be enumerated * until they are deleted/removed, not just failed. *************** *** 1663,1669 **** break; } ! if (csio->cdb_len == 32) mpi_control |= 4 << MPI2_SCSIIO_CONTROL_ADDCDBLEN_SHIFT; /* * It looks like the hardware doesn't require an explicit tag --- 1698,1704 ---- break; } ! if (csio->cdb_len == 32) mpi_control |= 4 << MPI2_SCSIIO_CONTROL_ADDCDBLEN_SHIFT; /* * It looks like the hardware doesn't require an explicit tag *************** *** 1791,1796 **** --- 1826,1832 ---- targ->issued++; targ->outstanding++; TAILQ_INSERT_TAIL(&targ->commands, cm, cm_link); + ccb->ccb_h.status |= CAM_SIM_QUEUED; if ((sc->mps_debug & MPS_TRACE) != 0) mpssas_log_command(cm, "%s cm %p ccb %p outstanding %u\n", *************** *** 1969,1982 **** strcat(desc_scsi_state, "autosense valid "); mps_dprint(sc, MPS_INFO, "\thandle(0x%04x), ioc_status(%s)(0x%04x), \n", ! le16toh(mpi_reply->DevHandle), ! desc_ioc_state, ioc_status); /* We can add more detail about underflow data here * TO-DO * */ mps_dprint(sc, MPS_INFO, "\tscsi_status(%s)(0x%02x), " ! "scsi_state(%s)(0x%02x)\n", desc_scsi_status, ! scsi_status, desc_scsi_state, scsi_state); if (sc->mps_debug & MPS_INFO && scsi_state & MPI2_SCSI_STATE_AUTOSENSE_VALID) { --- 2005,2017 ---- strcat(desc_scsi_state, "autosense valid "); mps_dprint(sc, MPS_INFO, "\thandle(0x%04x), ioc_status(%s)(0x%04x), \n", ! le16toh(mpi_reply->DevHandle), desc_ioc_state, ioc_status); /* We can add more detail about underflow data here * TO-DO * */ mps_dprint(sc, MPS_INFO, "\tscsi_status(%s)(0x%02x), " ! "scsi_state(%s)(0x%02x)\n", desc_scsi_status, scsi_status, ! desc_scsi_state, scsi_state); if (sc->mps_debug & MPS_INFO && scsi_state & MPI2_SCSI_STATE_AUTOSENSE_VALID) { *************** *** 2033,2038 **** --- 2068,2074 ---- cm->cm_targ->completed++; cm->cm_targ->outstanding--; TAILQ_REMOVE(&cm->cm_targ->commands, cm, cm_link); + ccb->ccb_h.status |= ~(CAM_STATUS_MASK | CAM_SIM_QUEUED); if (cm->cm_state == MPS_CM_STATE_TIMEDOUT) { TAILQ_REMOVE(&cm->cm_targ->timedout_commands, cm, cm_recovery); *************** *** 2108,2114 **** ccb->ccb_h.status |= CAM_RELEASE_SIMQ; sassc->flags &= ~MPSSAS_QUEUE_FROZEN; mps_dprint(sc, MPS_INFO, ! "Unfreezing SIM queue\n"); } } --- 2144,2150 ---- ccb->ccb_h.status |= CAM_RELEASE_SIMQ; sassc->flags &= ~MPSSAS_QUEUE_FROZEN; mps_dprint(sc, MPS_INFO, ! "Unfreezing SIM queue\n"); } } *************** *** 2335,2341 **** ccb->ccb_h.status |= CAM_RELEASE_SIMQ; sassc->flags &= ~MPSSAS_QUEUE_FROZEN; mps_dprint(sc, MPS_INFO, "Command completed, " ! "unfreezing SIM queue\n"); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { --- 2371,2377 ---- ccb->ccb_h.status |= CAM_RELEASE_SIMQ; sassc->flags &= ~MPSSAS_QUEUE_FROZEN; mps_dprint(sc, MPS_INFO, "Command completed, " ! "unfreezing SIM queue\n"); } if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { *************** *** 2651,2657 **** sasaddr = le32toh(req->SASAddress.Low); sasaddr |= ((uint64_t)(le32toh(req->SASAddress.High))) << 32; ! if ((le16toh(rpl->IOCStatus) & MPI2_IOCSTATUS_MASK) != MPI2_IOCSTATUS_SUCCESS || rpl->SASStatus != MPI2_SASSTATUS_SUCCESS) { mps_dprint(sc, MPS_INFO, "%s: IOCStatus %04x SASStatus %02x\n", __func__, le16toh(rpl->IOCStatus), rpl->SASStatus); --- 2687,2694 ---- sasaddr = le32toh(req->SASAddress.Low); sasaddr |= ((uint64_t)(le32toh(req->SASAddress.High))) << 32; ! if ((le16toh(rpl->IOCStatus) & MPI2_IOCSTATUS_MASK) != ! MPI2_IOCSTATUS_SUCCESS || rpl->SASStatus != MPI2_SASSTATUS_SUCCESS) { mps_dprint(sc, MPS_INFO, "%s: IOCStatus %04x SASStatus %02x\n", __func__, le16toh(rpl->IOCStatus), rpl->SASStatus); *************** *** 2774,2780 **** MPI2_SGLFLAGS_SYSTEM_ADDRESS_SPACE | MPI2_SGLFLAGS_SGL_TYPE_MPI; mps_dprint(sc, MPS_INFO, "%s: sending SMP request to SAS " ! "address %#jx\n", __func__, (uintmax_t)sasaddr); mpi_init_sge(cm, req, &req->SGL); --- 2811,2817 ---- MPI2_SGLFLAGS_SYSTEM_ADDRESS_SPACE | MPI2_SGLFLAGS_SGL_TYPE_MPI; mps_dprint(sc, MPS_INFO, "%s: sending SMP request to SAS " ! "address %#jx\n", __func__, (uintmax_t)sasaddr); mpi_init_sge(cm, req, &req->SGL); *************** *** 2992,2998 **** sc = sassc->sc; tm = mps_alloc_command(sc); if (tm == NULL) { ! mps_printf(sc, "comand alloc failure in mpssas_action_resetdev\n"); ccb->ccb_h.status = CAM_RESRC_UNAVAIL; xpt_done(ccb); return; --- 3029,3036 ---- sc = sassc->sc; tm = mps_alloc_command(sc); if (tm == NULL) { ! mps_printf(sc, "comand alloc failure in " ! "mpssas_action_resetdev\n"); ccb->ccb_h.status = CAM_RESRC_UNAVAIL; xpt_done(ccb); return; *************** *** 3080,3193 **** } static void - mpssas_rescan_done(struct cam_periph *periph, union ccb *done_ccb) - { - struct mpssas_softc *sassc; - char path_str[64]; - - if (done_ccb == NULL) - return; - - sassc = (struct mpssas_softc *)done_ccb->ccb_h.ppriv_ptr1; - - mtx_assert(&sassc->sc->mps_mtx, MA_OWNED); - - xpt_path_string(done_ccb->ccb_h.path, path_str, sizeof(path_str)); - mps_dprint(sassc->sc, MPS_INFO, "Completing rescan for %s\n", path_str); - - xpt_free_path(done_ccb->ccb_h.path); - xpt_free_ccb(done_ccb); - - #if __FreeBSD_version < 1000006 - /* - * Before completing scan, get EEDP stuff for all of the existing - * targets. - */ - mpssas_check_eedp(sassc); - #endif - - } - - /* thread to handle bus rescans */ - static void - mpssas_scanner_thread(void *arg) - { - struct mpssas_softc *sassc; - struct mps_softc *sc; - union ccb *ccb; - - sassc = (struct mpssas_softc *)arg; - sc = sassc->sc; - - mps_dprint(sc, MPS_TRACE, "%s\n", __func__); - - mps_lock(sc); - for (;;) { - /* Sleep for 1 second and check the queue status*/ - msleep(&sassc->ccb_scanq, &sc->mps_mtx, PRIBIO, - "mps_scanq", 1 * hz); - if (sassc->flags & MPSSAS_SHUTDOWN) { - mps_dprint(sc, MPS_TRACE, "Scanner shutting down\n"); - break; - } - next_work: - // Get first work. - ccb = (union ccb *)TAILQ_FIRST(&sassc->ccb_scanq); - if (ccb == NULL) - continue; - // Got first work. - TAILQ_REMOVE(&sassc->ccb_scanq, &ccb->ccb_h, sim_links.tqe); - xpt_action(ccb); - if (sassc->flags & MPSSAS_SHUTDOWN) { - mps_dprint(sc, MPS_TRACE, "Scanner shutting down\n"); - break; - } - goto next_work; - } - - sassc->flags &= ~MPSSAS_SCANTHREAD; - wakeup(&sassc->flags); - mps_unlock(sc); - mps_dprint(sc, MPS_TRACE, "Scanner exiting\n"); - mps_kproc_exit(0); - } - - /* - * This function will send READ_CAP_16 to find out EEDP protection mode. - * It will check inquiry data before sending READ_CAP_16. - * Callback for READ_CAP_16 is "mpssas_read_cap_done". - * This is insternal scsi command and we need to take care release of devq, if - * CAM_DEV_QFRZN is set. Driver needs to release devq if it has frozen any. - * xpt_release_devq is called from mpssas_read_cap_done. - * - * All other commands will be handled by periph layer and there it will - * check for "CAM_DEV_QFRZN" and release of devq will be done. - */ - static void - mpssas_rescan(struct mpssas_softc *sassc, union ccb *ccb) - { - char path_str[64]; - - mps_dprint(sassc->sc, MPS_TRACE, "%s\n", __func__); - - mtx_assert(&sassc->sc->mps_mtx, MA_OWNED); - - if (ccb == NULL) - return; - - xpt_path_string(ccb->ccb_h.path, path_str, sizeof(path_str)); - mps_dprint(sassc->sc, MPS_INFO, "Queueing rescan for %s\n", path_str); - - /* Prepare request */ - ccb->ccb_h.ppriv_ptr1 = sassc; - ccb->ccb_h.cbfcnp = mpssas_rescan_done; - xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, MPS_PRIORITY_XPT); - TAILQ_INSERT_TAIL(&sassc->ccb_scanq, &ccb->ccb_h, sim_links.tqe); - wakeup(&sassc->ccb_scanq); - } - - #if __FreeBSD_version >= 1000006 - static void mpssas_async(void *callback_arg, uint32_t code, struct cam_path *path, void *arg) { --- 3118,3123 ---- *************** *** 3196,3201 **** --- 3126,3133 ---- sc = (struct mps_softc *)callback_arg; switch (code) { + #if (__FreeBSD_version >= 1000006) || \ + ((__FreeBSD_version >= 901503) && (__FreeBSD_version < 1000000)) case AC_ADVINFO_CHANGED: { struct mpssas_target *target; struct mpssas_softc *sassc; *************** *** 3218,3230 **** break; /* - * We're only interested in devices that are attached to - * this controller. - */ - if (xpt_path_path_id(path) != sassc->sim->path_id) - break; - - /* * We should have a handle for this, but check to make sure. */ target = &sassc->targets[xpt_path_target_id(path)]; --- 3150,3155 ---- *************** *** 3275,3452 **** } break; } default: break; } } - #else /* __FreeBSD_version >= 1000006 */ static void ! mpssas_check_eedp(struct mpssas_softc *sassc) { ! struct mps_softc *sc = sassc->sc; struct ccb_scsiio *csio; struct scsi_read_capacity_16 *scsi_cmd; struct scsi_read_capacity_eedp *rcap_buf; ! union ccb *ccb; ! path_id_t pathid = cam_sim_path(sassc->sim); target_id_t targetid; lun_id_t lunid; ! struct cam_periph *found_periph; struct mpssas_target *target; struct mpssas_lun *lun; uint8_t found_lun; - struct ccb_getdev cgd; char path_str[64]; /* ! * Issue a READ CAPACITY 16 command to each LUN of each target. This ! * info is used to determine if the LUN is formatted for EEDP support. */ ! for (targetid = 0; targetid < sc->facts->MaxTargets; targetid++) { ! target = &sassc->targets[targetid]; ! if (target->handle == 0x0) { ! continue; ! } ! lunid = 0; ! do { ! ccb = xpt_alloc_ccb_nowait(); ! if (ccb == NULL) { ! mps_dprint(sc, MPS_FAULT, "Unable to alloc CCB " ! "for EEDP support.\n"); ! return; ! } ! if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, ! pathid, targetid, lunid) != CAM_REQ_CMP) { ! mps_dprint(sc, MPS_FAULT, "Unable to create " ! "path for EEDP support\n"); ! xpt_free_ccb(ccb); ! return; ! } ! /* ! * If a periph is returned, the LUN exists. Create an ! * entry in the target's LUN list. ! */ ! if ((found_periph = cam_periph_find(ccb->ccb_h.path, ! NULL)) != NULL) { ! /* ! * If LUN is already in list, don't create a new ! * one. ! */ ! found_lun = FALSE; ! SLIST_FOREACH(lun, &target->luns, lun_link) { ! if (lun->lun_id == lunid) { ! found_lun = TRUE; ! break; ! } ! } ! if (!found_lun) { ! lun = malloc(sizeof(struct mpssas_lun), ! M_MPT2, M_NOWAIT | M_ZERO); ! if (lun == NULL) { ! mps_dprint(sc, MPS_FAULT, ! "Unable to alloc LUN for " ! "EEDP support.\n"); ! xpt_free_path(ccb->ccb_h.path); ! xpt_free_ccb(ccb); ! return; ! } ! lun->lun_id = lunid; ! SLIST_INSERT_HEAD(&target->luns, lun, ! lun_link); ! } ! lunid++; ! /* Before Issuing READ CAPACITY 16, ! * check Device type. ! */ ! xpt_setup_ccb(&cgd.ccb_h, ccb->ccb_h.path, ! CAM_PRIORITY_NORMAL); ! cgd.ccb_h.func_code = XPT_GDEV_TYPE; ! xpt_action((union ccb *)&cgd); ! /* ! * If this flag is set in the inquiry data, ! * the device supports protection information, ! * and must support the 16 byte read ! * capacity command, otherwise continue without ! * sending read cap 16 ! */ ! xpt_path_string(ccb->ccb_h.path, path_str, ! sizeof(path_str)); ! if ((cgd.inq_data.spc3_flags & ! SPC3_SID_PROTECT) == 0) { ! xpt_free_path(ccb->ccb_h.path); ! xpt_free_ccb(ccb); ! continue; ! } ! ! mps_dprint(sc, MPS_INFO, ! "Sending read cap: path %s" ! " handle %d\n", path_str, target->handle ); ! ! /* ! * Issue a READ CAPACITY 16 command for the LUN. ! * The mpssas_read_cap_done function will load ! * the read cap info into the LUN struct. ! */ ! rcap_buf = ! malloc(sizeof(struct scsi_read_capacity_eedp), ! M_MPT2, M_NOWAIT| M_ZERO); ! if (rcap_buf == NULL) { ! mps_dprint(sc, MPS_FAULT, "Unable to alloc read " ! "capacity buffer for EEDP support.\n"); ! xpt_free_path(ccb->ccb_h.path); ! xpt_free_ccb(ccb); ! return; ! } ! csio = &ccb->csio; ! csio->ccb_h.func_code = XPT_SCSI_IO; ! csio->ccb_h.flags = CAM_DIR_IN; ! csio->ccb_h.retry_count = 4; ! csio->ccb_h.cbfcnp = mpssas_read_cap_done; ! csio->ccb_h.timeout = 60000; ! csio->data_ptr = (uint8_t *)rcap_buf; ! csio->dxfer_len = sizeof(struct ! scsi_read_capacity_eedp); ! csio->sense_len = MPS_SENSE_LEN; ! csio->cdb_len = sizeof(*scsi_cmd); ! csio->tag_action = MSG_SIMPLE_Q_TAG; ! scsi_cmd = (struct scsi_read_capacity_16 *) ! &csio->cdb_io.cdb_bytes; ! bzero(scsi_cmd, sizeof(*scsi_cmd)); ! scsi_cmd->opcode = 0x9E; ! scsi_cmd->service_action = SRC16_SERVICE_ACTION; ! ((uint8_t *)scsi_cmd)[13] = sizeof(struct ! scsi_read_capacity_eedp); ! ! /* ! * Set the path, target and lun IDs for the READ ! * CAPACITY request. ! */ ! ccb->ccb_h.path_id = ! xpt_path_path_id(ccb->ccb_h.path); ! ccb->ccb_h.target_id = ! xpt_path_target_id(ccb->ccb_h.path); ! ccb->ccb_h.target_lun = ! xpt_path_lun_id(ccb->ccb_h.path); ! ! ccb->ccb_h.ppriv_ptr1 = sassc; ! xpt_action(ccb); ! } else { ! xpt_free_path(ccb->ccb_h.path); ! xpt_free_ccb(ccb); ! } ! } while (found_periph); ! } } - static void mpssas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb) { --- 3200,3347 ---- } break; } + #else + case AC_FOUND_DEVICE: { + struct ccb_getdev *cgd; + + cgd = arg; + mpssas_check_eedp(sc, path, cgd); + break; + } + #endif default: break; } } + #if (__FreeBSD_version < 901503) || \ + ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006)) static void ! mpssas_check_eedp(struct mps_softc *sc, struct cam_path *path, ! struct ccb_getdev *cgd) { ! struct mpssas_softc *sassc = sc->sassc; struct ccb_scsiio *csio; struct scsi_read_capacity_16 *scsi_cmd; struct scsi_read_capacity_eedp *rcap_buf; ! path_id_t pathid; target_id_t targetid; lun_id_t lunid; ! union ccb *ccb; ! struct cam_path *local_path; struct mpssas_target *target; struct mpssas_lun *lun; uint8_t found_lun; char path_str[64]; + sassc = sc->sassc; + pathid = cam_sim_path(sassc->sim); + targetid = xpt_path_target_id(path); + lunid = xpt_path_lun_id(path); + + target = &sassc->targets[targetid]; + if (target->handle == 0x0) + return; + /* ! * Determine if the device is EEDP capable. ! * ! * If this flag is set in the inquiry data, ! * the device supports protection information, ! * and must support the 16 byte read ! * capacity command, otherwise continue without ! * sending read cap 16 */ ! if ((cgd->inq_data.spc3_flags & SPC3_SID_PROTECT) == 0) ! return; ! /* ! * Issue a READ CAPACITY 16 command. This info ! * is used to determine if the LUN is formatted ! * for EEDP support. ! */ ! ccb = xpt_alloc_ccb_nowait(); ! if (ccb == NULL) { ! mps_dprint(sc, MPS_FAULT, ! "Unable to alloc CCB for EEDP support.\n"); ! return; ! } ! if (xpt_create_path(&local_path, xpt_periph, ! pathid, targetid, lunid) != CAM_REQ_CMP) { ! mps_dprint(sc, MPS_FAULT, ! "Unable to create path for EEDP support\n"); ! xpt_free_ccb(ccb); ! return; ! } ! /* ! * If LUN is already in list, don't create a new ! * one. ! */ ! found_lun = FALSE; ! SLIST_FOREACH(lun, &target->luns, lun_link) { ! if (lun->lun_id == lunid) { ! found_lun = TRUE; ! break; ! } ! } ! if (!found_lun) { ! lun = malloc(sizeof(struct mpssas_lun), M_MPT2, ! M_NOWAIT | M_ZERO); ! if (lun == NULL) { ! mps_dprint(sc, MPS_FAULT, ! "Unable to alloc LUN for EEDP support.\n"); ! xpt_free_path(local_path); ! xpt_free_ccb(ccb); ! return; ! } ! lun->lun_id = lunid; ! SLIST_INSERT_HEAD(&target->luns, lun, ! lun_link); ! } ! xpt_path_string(local_path, path_str, sizeof(path_str)); ! mps_dprint(sc, MPS_INFO, "Sending read cap: path %s handle %d\n", ! path_str, target->handle); ! /* ! * Issue a READ CAPACITY 16 command for the LUN. ! * The mpssas_read_cap_done function will load ! * the read cap info into the LUN struct. ! */ ! rcap_buf = malloc(sizeof(struct scsi_read_capacity_eedp), ! M_MPT2, M_NOWAIT | M_ZERO); ! if (rcap_buf == NULL) { ! mps_dprint(sc, MPS_FAULT, ! "Unable to alloc read capacity buffer for EEDP support.\n"); ! xpt_free_path(ccb->ccb_h.path); ! xpt_free_ccb(ccb); ! return; ! } ! xpt_setup_ccb(&ccb->ccb_h, local_path, CAM_PRIORITY_XPT); ! csio = &ccb->csio; ! csio->ccb_h.func_code = XPT_SCSI_IO; ! csio->ccb_h.flags = CAM_DIR_IN; ! csio->ccb_h.retry_count = 4; ! csio->ccb_h.cbfcnp = mpssas_read_cap_done; ! csio->ccb_h.timeout = 60000; ! csio->data_ptr = (uint8_t *)rcap_buf; ! csio->dxfer_len = sizeof(struct scsi_read_capacity_eedp); ! csio->sense_len = MPS_SENSE_LEN; ! csio->cdb_len = sizeof(*scsi_cmd); ! csio->tag_action = MSG_SIMPLE_Q_TAG; ! scsi_cmd = (struct scsi_read_capacity_16 *)&csio->cdb_io.cdb_bytes; ! bzero(scsi_cmd, sizeof(*scsi_cmd)); ! scsi_cmd->opcode = 0x9E; ! scsi_cmd->service_action = SRC16_SERVICE_ACTION; ! ((uint8_t *)scsi_cmd)[13] = sizeof(struct scsi_read_capacity_eedp); ! ccb->ccb_h.ppriv_ptr1 = sassc; ! xpt_action(ccb); } static void mpssas_read_cap_done(struct cam_periph *periph, union ccb *done_ccb) { *************** *** 3499,3504 **** --- 3394,3403 ---- } if (rcap_buf->protect & 0x01) { + mps_dprint(sassc->sc, MPS_INFO, "LUN %d for " + "target ID %d is formatted for EEDP " + "support.\n", done_ccb->ccb_h.target_lun, + done_ccb->ccb_h.target_id); lun->eedp_formatted = TRUE; lun->eedp_block_size = scsi_4btoul(rcap_buf->length); } *************** *** 3510,3516 **** xpt_free_path(done_ccb->ccb_h.path); xpt_free_ccb(done_ccb); } ! #endif /* __FreeBSD_version >= 1000006 */ int mpssas_startup(struct mps_softc *sc) --- 3409,3416 ---- xpt_free_path(done_ccb->ccb_h.path); xpt_free_ccb(done_ccb); } ! #endif /* (__FreeBSD_version < 901503) || \ ! ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000006)) */ int mpssas_startup(struct mps_softc *sc) *** src/sys/dev/mps/mps_sas.h.orig --- src/sys/dev/mps/mps_sas.h *************** *** 87,93 **** #define MPSSAS_DISCOVERY_TIMEOUT_PENDING (1 << 2) #define MPSSAS_QUEUE_FROZEN (1 << 3) #define MPSSAS_SHUTDOWN (1 << 4) - #define MPSSAS_SCANTHREAD (1 << 5) struct mpssas_target *targets; struct cam_devq *devq; struct cam_sim *sim; --- 87,92 ---- *************** *** 101,109 **** u_int tm_count; struct proc *sysctl_proc; - TAILQ_HEAD(, ccb_hdr) ccb_scanq; - struct proc *rescan_thread; - struct taskqueue *ev_tq; struct task ev_task; TAILQ_HEAD(, mps_fw_event_work) ev_queue; --- 100,105 ---- *** src/sys/dev/mps/mps_sas_lsi.c.orig --- src/sys/dev/mps/mps_sas_lsi.c *************** *** 699,705 **** --- 699,709 ---- mps_dprint(sc, MPS_INFO, "Found device <%s> <%s> <0x%04x> <%d/%d>\n", devstring, mps_describe_table(mps_linkrate_names, targ->linkrate), targ->handle, targ->encl_handle, targ->encl_slot); + + #if ((__FreeBSD_version < 9010506) || \ + ((__FreeBSD_version >= 1000000) && (__FreeBSD_version < 1000036))) if ((sassc->flags & MPSSAS_IN_STARTUP) == 0) + #endif mpssas_rescan_target(sc, targ); mps_dprint(sc, MPS_INFO, "Target id 0x%x added\n", targ->tid); out: *************** *** 818,829 **** cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = buffer; cm->cm_length = htole32(sz); ! error = mps_request_polled(sc, cm); reply = (Mpi2SataPassthroughReply_t *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* If the poll returns error then we need to do diag reset */ ! printf("%s: poll for page completed with error %d", __func__, error); error = ENXIO; goto out; --- 822,836 ---- cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; cm->cm_data = buffer; cm->cm_length = htole32(sz); ! error = mps_wait_command(sc, cm, 60, CAN_SLEEP); reply = (Mpi2SataPassthroughReply_t *)cm->cm_reply; if (error || (reply == NULL)) { /* FIXME */ ! /* ! * If the request returns an error then we need to do a diag ! * reset ! */ ! printf("%s: request for page completed with error %d", __func__, error); error = ENXIO; goto out; *************** *** 955,961 **** action->Action = MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; mps_lock(sc); ! mps_request_polled(sc, cm); mps_unlock(sc); /* --- 962,968 ---- action->Action = MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; mps_lock(sc); ! mps_wait_command(sc, cm, 5, CAN_SLEEP); mps_unlock(sc); /* *** src/sys/dev/mps/mps_user.c.orig --- src/sys/dev/mps/mps_user.c *************** *** 672,678 **** cm = mps_alloc_command(sc); if (cm == NULL) { ! mps_printf(sc, "mps_user_command: no mps requests\n"); err = ENOMEM; goto Ret; } --- 672,678 ---- cm = mps_alloc_command(sc); if (cm == NULL) { ! mps_printf(sc, "%s: no mps requests\n", __func__); err = ENOMEM; goto Ret; } *************** *** 680,687 **** hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; ! mps_dprint(sc, MPS_INFO, "mps_user_command: req %p %d rpl %p %d\n", ! cmd->req, cmd->req_len, cmd->rpl, cmd->rpl_len ); if (cmd->req_len > (int)sc->facts->IOCRequestFrameSize * 4) { err = EINVAL; --- 680,687 ---- hdr = (MPI2_REQUEST_HEADER *)cm->cm_req; ! mps_dprint(sc, MPS_INFO, "%s: req %p %d rpl %p %d\n", __func__, ! cmd->req, cmd->req_len, cmd->rpl, cmd->rpl_len); if (cmd->req_len > (int)sc->facts->IOCRequestFrameSize * 4) { err = EINVAL; *************** *** 691,698 **** if (err != 0) goto RetFreeUnlocked; ! mps_dprint(sc, MPS_INFO, "mps_user_command: Function %02X " ! "MsgFlags %02X\n", hdr->Function, hdr->MsgFlags ); err = mps_user_setup_request(cm, cmd); if (err != 0) { --- 691,698 ---- if (err != 0) goto RetFreeUnlocked; ! mps_dprint(sc, MPS_INFO, "%s: Function %02X MsgFlags %02X\n", __func__, ! hdr->Function, hdr->MsgFlags); err = mps_user_setup_request(cm, cmd); if (err != 0) { *************** *** 718,725 **** cm->cm_flags = MPS_CM_FLAGS_SGE_SIMPLE; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; mps_lock(sc); ! err = mps_wait_command(sc, cm, 30); if (err) { mps_printf(sc, "%s: invalid request: error %d\n", --- 718,734 ---- cm->cm_flags = MPS_CM_FLAGS_SGE_SIMPLE; cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; + err = mps_user_setup_request(cm, cmd); + if (err == EINVAL) { + mps_printf(sc, "%s: unsupported parameter or unsupported " + "function in request (function = 0x%X)\n", __func__, + hdr->Function); + } + if (err != 0) + goto RetFreeUnlocked; + mps_lock(sc); ! err = mps_wait_command(sc, cm, 60, CAN_SLEEP); if (err) { mps_printf(sc, "%s: invalid request: error %d\n", *************** *** 731,740 **** sz = rpl->MsgLength * 4; if (sz > cmd->rpl_len) { ! mps_printf(sc, ! "mps_user_command: reply buffer too small %d required %d\n", ! cmd->rpl_len, sz ); ! err = EINVAL; sz = cmd->rpl_len; } --- 740,747 ---- sz = rpl->MsgLength * 4; if (sz > cmd->rpl_len) { ! mps_printf(sc, "%s: user reply buffer (%d) smaller than " ! "returned buffer (%d)\n", __func__, cmd->rpl_len, sz); sz = cmd->rpl_len; } *************** *** 742,748 **** copyout(rpl, cmd->rpl, sz); if (buf != NULL) copyout(buf, cmd->buf, cmd->len); ! mps_dprint(sc, MPS_INFO, "mps_user_command: reply size %d\n", sz ); RetFreeUnlocked: mps_lock(sc); --- 749,755 ---- copyout(rpl, cmd->rpl, sz); if (buf != NULL) copyout(buf, cmd->buf, cmd->len); ! mps_dprint(sc, MPS_INFO, "%s: reply size %d\n", __func__, sz); RetFreeUnlocked: mps_lock(sc); *************** *** 849,855 **** cm->cm_complete = NULL; cm->cm_complete_data = NULL; ! err = mps_wait_command(sc, cm, 30); if (err != 0) { err = EIO; --- 856,862 ---- cm->cm_complete = NULL; cm->cm_complete_data = NULL; ! err = mps_wait_command(sc, cm, 30, CAN_SLEEP); if (err != 0) { err = EIO; *************** *** 864,878 **** sz = rpl->MsgLength * 4; if (sz > data->ReplySize) { ! mps_printf(sc, "%s: reply buffer too small: %d, " ! "required: %d\n", __func__, data->ReplySize, sz); ! err = EINVAL; ! } else { ! mps_unlock(sc); ! copyout(cm->cm_reply, PTRIN(data->PtrReply), ! data->ReplySize); ! mps_lock(sc); } } mpssas_free_tm(sc, cm); goto Ret; --- 871,884 ---- sz = rpl->MsgLength * 4; if (sz > data->ReplySize) { ! mps_printf(sc, "%s: user reply buffer (%d) " ! "smaller than returned buffer (%d)\n", ! __func__, data->ReplySize, sz); } + mps_unlock(sc); + copyout(cm->cm_reply, PTRIN(data->PtrReply), + data->ReplySize); + mps_lock(sc); } mpssas_free_tm(sc, cm); goto Ret; *************** *** 986,992 **** mps_lock(sc); ! err = mps_wait_command(sc, cm, 30); if (err) { mps_printf(sc, "%s: invalid request: error %d\n", __func__, --- 992,998 ---- mps_lock(sc); ! err = mps_wait_command(sc, cm, 30, CAN_SLEEP); if (err) { mps_printf(sc, "%s: invalid request: error %d\n", __func__, *************** *** 1025,1039 **** sz = rpl->MsgLength * 4; if (sz > data->ReplySize) { ! mps_printf(sc, "%s: reply buffer too small: %d, " ! "required: %d\n", __func__, data->ReplySize, sz); ! err = EINVAL; ! } else { ! mps_unlock(sc); ! copyout(cm->cm_reply, PTRIN(data->PtrReply), ! data->ReplySize); ! mps_lock(sc); } if ((function == MPI2_FUNCTION_SCSI_IO_REQUEST) || (function == MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH)) { --- 1031,1043 ---- sz = rpl->MsgLength * 4; if (sz > data->ReplySize) { ! mps_printf(sc, "%s: user reply buffer (%d) smaller " ! "than returned buffer (%d)\n", __func__, ! data->ReplySize, sz); } + mps_unlock(sc); + copyout(cm->cm_reply, PTRIN(data->PtrReply), data->ReplySize); + mps_lock(sc); if ((function == MPI2_FUNCTION_SCSI_IO_REQUEST) || (function == MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH)) { *************** *** 1203,1209 **** /* * Send command synchronously. */ ! status = mps_wait_command(sc, cm, 30); if (status) { mps_printf(sc, "%s: invalid request: error %d\n", __func__, status); --- 1207,1213 ---- /* * Send command synchronously. */ ! status = mps_wait_command(sc, cm, 30, CAN_SLEEP); if (status) { mps_printf(sc, "%s: invalid request: error %d\n", __func__, status); *************** *** 1252,1259 **** */ *return_code = MPS_FW_DIAG_ERROR_RELEASE_FAILED; if (!pBuffer->enabled) { ! mps_dprint(sc, MPS_INFO, "%s: This buffer type is not supported " ! "by the IOC", __func__); return (MPS_DIAG_FAILURE); } --- 1256,1263 ---- */ *return_code = MPS_FW_DIAG_ERROR_RELEASE_FAILED; if (!pBuffer->enabled) { ! mps_dprint(sc, MPS_INFO, "%s: This buffer type is not " ! "supported by the IOC", __func__); return (MPS_DIAG_FAILURE); } *************** *** 1287,1293 **** /* * Send command synchronously. */ ! status = mps_wait_command(sc, cm, 30); if (status) { mps_printf(sc, "%s: invalid request: error %d\n", __func__, status); --- 1291,1297 ---- /* * Send command synchronously. */ ! status = mps_wait_command(sc, cm, 30, CAN_SLEEP); if (status) { mps_printf(sc, "%s: invalid request: error %d\n", __func__, status); *** src/sys/dev/mps/mpsvar.h.orig --- src/sys/dev/mps/mpsvar.h *************** *** 26,38 **** * * LSI MPT-Fusion Host Adapter FreeBSD * ! * $FreeBSD: stable/9/sys/dev/mps/mpsvar.h 251874 2013-06-18 00:36:53Z scottl $ */ #ifndef _MPSVAR_H #define _MPSVAR_H ! #define MPS_DRIVER_VERSION "14.00.00.01-fbsd" #define MPS_DB_MAX_WAIT 2500 --- 26,38 ---- * * LSI MPT-Fusion Host Adapter FreeBSD * ! * $FreeBSD: head/sys/dev/mps/mpsvar.h 246713 2013-02-12 16:57:20Z kib $ */ #ifndef _MPSVAR_H #define _MPSVAR_H ! #define MPS_DRIVER_VERSION "16.00.00.00-fbsd" #define MPS_DB_MAX_WAIT 2500 *************** *** 304,310 **** bus_dma_tag_t buffer_dmat; MPI2_IOC_FACTS_REPLY *facts; - MPI2_PORT_FACTS_REPLY *pfacts; int num_reqs; int num_replies; int fqdepth; /* Free queue */ --- 304,309 ---- *************** *** 628,642 **** static __inline void mps_from_u64(uint64_t data, U64 *mps) { ! (mps)->High = (uint32_t)((data) >> 32); ! (mps)->Low = (uint32_t)((data) & 0xffffffff); } static __inline uint64_t mps_to_u64(U64 *data) { ! return (((uint64_t)data->High << 32) | data->Low); } static __inline void --- 627,641 ---- static __inline void mps_from_u64(uint64_t data, U64 *mps) { ! (mps)->High = htole32((uint32_t)((data) >> 32)); ! (mps)->Low = htole32((uint32_t)((data) & 0xffffffff)); } static __inline uint64_t mps_to_u64(U64 *data) { ! return (((uint64_t)le32toh(data->High) << 32) | le32toh(data->Low)); } static __inline void *************** *** 686,692 **** MPI2_EVENT_NOTIFICATION_REPLY *event_reply); int mps_map_command(struct mps_softc *sc, struct mps_command *cm); ! int mps_wait_command(struct mps_softc *sc, struct mps_command *cm, int timeout); int mps_request_polled(struct mps_softc *sc, struct mps_command *cm); int mps_config_get_bios_pg3(struct mps_softc *sc, Mpi2ConfigReply_t --- 685,692 ---- MPI2_EVENT_NOTIFICATION_REPLY *event_reply); int mps_map_command(struct mps_softc *sc, struct mps_command *cm); ! int mps_wait_command(struct mps_softc *sc, struct mps_command *cm, int timeout, ! int sleep_flag); int mps_request_polled(struct mps_softc *sc, struct mps_command *cm); int mps_config_get_bios_pg3(struct mps_softc *sc, Mpi2ConfigReply_t *** src/sys/sys/param.h.orig --- src/sys/sys/param.h *************** *** 58,64 **** * in the range 5 to 9. */ #undef __FreeBSD_version ! #define __FreeBSD_version 901505 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, --- 58,64 ---- * in the range 5 to 9. */ #undef __FreeBSD_version ! #define __FreeBSD_version 901506 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, --k1lZvvs/B4yU6o8G-- From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 19:16:56 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8058C571; Mon, 12 Aug 2013 19:16:56 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6DB5B2570; Mon, 12 Aug 2013 19:16:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CJGu3M038005; Mon, 12 Aug 2013 19:16:56 GMT (envelope-from scottl@svn.freebsd.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CJGuHj038004; Mon, 12 Aug 2013 19:16:56 GMT (envelope-from scottl@svn.freebsd.org) Message-Id: <201308121916.r7CJGuHj038004@svn.freebsd.org> From: Scott Long Date: Mon, 12 Aug 2013 19:16:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254253 - head/sys/dev/mps X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 19:16:56 -0000 Author: scottl Date: Mon Aug 12 19:16:55 2013 New Revision: 254253 URL: http://svnweb.freebsd.org/changeset/base/254253 Log: r253460 accidentally some moderately expensive debugging code, even when debugging isn't enabled. Work around this. Submitted by: mav Obtained from: Netflix MFC after: 3 days Modified: head/sys/dev/mps/mps_sas.c Modified: head/sys/dev/mps/mps_sas.c ============================================================================== --- head/sys/dev/mps/mps_sas.c Mon Aug 12 18:17:45 2013 (r254252) +++ head/sys/dev/mps/mps_sas.c Mon Aug 12 19:16:55 2013 (r254253) @@ -307,6 +307,10 @@ mpssas_log_command(struct mps_command *c if (cm == NULL) return; + /* No need to be in here if debugging isn't enabled */ + if (cm->cm_sc->mps_debug & level) == 0) + return; + sbuf_new(&sb, str, sizeof(str), 0); va_start(ap, fmt); From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 20:17:38 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5DB3C17C; Mon, 12 Aug 2013 20:17:38 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4A5C328C7; Mon, 12 Aug 2013 20:17:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CKHcYW061260; Mon, 12 Aug 2013 20:17:38 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CKHcDv061259; Mon, 12 Aug 2013 20:17:38 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308122017.r7CKHcDv061259@svn.freebsd.org> From: Alexander Motin Date: Mon, 12 Aug 2013 20:17:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254257 - head/sys/dev/mps X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 20:17:38 -0000 Author: mav Date: Mon Aug 12 20:17:37 2013 New Revision: 254257 URL: http://svnweb.freebsd.org/changeset/base/254257 Log: Add brace missing in r254253. Modified: head/sys/dev/mps/mps_sas.c Modified: head/sys/dev/mps/mps_sas.c ============================================================================== --- head/sys/dev/mps/mps_sas.c Mon Aug 12 19:50:08 2013 (r254256) +++ head/sys/dev/mps/mps_sas.c Mon Aug 12 20:17:37 2013 (r254257) @@ -308,7 +308,7 @@ mpssas_log_command(struct mps_command *c return; /* No need to be in here if debugging isn't enabled */ - if (cm->cm_sc->mps_debug & level) == 0) + if ((cm->cm_sc->mps_debug & level) == 0) return; sbuf_new(&sb, str, sizeof(str), 0); From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 21:01:02 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2D5ACD1A; Mon, 12 Aug 2013 21:01:02 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1A6A82B74; Mon, 12 Aug 2013 21:01:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CL11eC079044; Mon, 12 Aug 2013 21:01:01 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CL114L079043; Mon, 12 Aug 2013 21:01:01 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201308122101.r7CL114L079043@svn.freebsd.org> From: Edward Tomasz Napierala Date: Mon, 12 Aug 2013 21:01:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254259 - head/usr.bin/su X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 21:01:02 -0000 Author: trasz Date: Mon Aug 12 21:01:01 2013 New Revision: 254259 URL: http://svnweb.freebsd.org/changeset/base/254259 Log: Make check for unknown login class actually work. Previously, using the "-c" option with login class not defined in login.conf(5) would silently fail, resulting in using the default login class. Modified: head/usr.bin/su/su.c Modified: head/usr.bin/su/su.c ============================================================================== --- head/usr.bin/su/su.c Mon Aug 12 20:27:24 2013 (r254258) +++ head/usr.bin/su/su.c Mon Aug 12 21:01:01 2013 (r254259) @@ -373,6 +373,8 @@ main(int argc, char *argv[]) } lc = login_getclass(class); if (lc == NULL) + err(1, "login_getclass"); + if (lc->lc_class == NULL || strcmp(class, lc->lc_class) != 0) errx(1, "unknown class: %s", class); } From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 21:34:52 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E6D05387; Mon, 12 Aug 2013 21:34:51 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C01F82D31; Mon, 12 Aug 2013 21:34:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CLYpCq091460; Mon, 12 Aug 2013 21:34:51 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CLYnBR091429; Mon, 12 Aug 2013 21:34:49 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201308122134.r7CLYnBR091429@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Mon, 12 Aug 2013 21:34:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254260 - in head/sys: conf fs/ext2fs modules/ext2fs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 21:34:52 -0000 Author: pfg Date: Mon Aug 12 21:34:48 2013 New Revision: 254260 URL: http://svnweb.freebsd.org/changeset/base/254260 Log: Add read-only support for extents in ext2fs. Basic support for extents was implemented by Zheng Liu as part of his Google Summer of Code in 2010. This support is read-only at this time. In addition to extents we also support the huge_file extension for read-only purposes. This works nicely with the additional support for birthtime/nanosec timestamps and dir_index that have been added lately. The implementation may not work for all ext4 filesystems as it doesn't support some features that are being enabled by default on recent linux like flex_bg. Nevertheless, the feature should be very useful for migration or simple access in filesystems that have been converted from ext2/3 or don't use incompatible features. Special thanks to Zheng Liu for his dedication and continued work to support ext2 in FreeBSD. Submitted by: Zheng Liu (lz@) Reviewed by: Mike Ma, Christoph Mallon (previous version) Sponsored by: Google Inc. MFC after: 3 weeks Added: head/sys/fs/ext2fs/ext2_extents.c (contents, props changed) head/sys/fs/ext2fs/ext2_extents.h (contents, props changed) Modified: head/sys/conf/files head/sys/fs/ext2fs/ext2_bmap.c head/sys/fs/ext2fs/ext2_dinode.h head/sys/fs/ext2fs/ext2_extern.h head/sys/fs/ext2fs/ext2_inode_cnv.c head/sys/fs/ext2fs/ext2_subr.c head/sys/fs/ext2fs/ext2_vfsops.c head/sys/fs/ext2fs/ext2_vnops.c head/sys/fs/ext2fs/ext2fs.h head/sys/fs/ext2fs/inode.h head/sys/modules/ext2fs/Makefile Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/conf/files Mon Aug 12 21:34:48 2013 (r254260) @@ -2714,6 +2714,7 @@ geom/zero/g_zero.c optional geom_zero fs/ext2fs/ext2_alloc.c optional ext2fs fs/ext2fs/ext2_balloc.c optional ext2fs fs/ext2fs/ext2_bmap.c optional ext2fs +fs/ext2fs/ext2_extents.c optional ext2fs fs/ext2fs/ext2_inode.c optional ext2fs fs/ext2fs/ext2_inode_cnv.c optional ext2fs fs/ext2fs/ext2_hash.c optional ext2fs Modified: head/sys/fs/ext2fs/ext2_bmap.c ============================================================================== --- head/sys/fs/ext2fs/ext2_bmap.c Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_bmap.c Mon Aug 12 21:34:48 2013 (r254260) @@ -46,10 +46,14 @@ #include #include +#include #include +#include #include #include +static int ext4_bmapext(struct vnode *, int32_t, int64_t *, int *, int *); + /* * Bmap converts the logical block number of a file to its physical block * number on the disk. The conversion is done by using the logical block @@ -58,7 +62,7 @@ int ext2_bmap(struct vop_bmap_args *ap) { - int32_t blkno; + int64_t blkno; int error; /* @@ -70,13 +74,57 @@ ext2_bmap(struct vop_bmap_args *ap) if (ap->a_bnp == NULL) return (0); - error = ext2_bmaparray(ap->a_vp, ap->a_bn, &blkno, - ap->a_runp, ap->a_runb); + if (VTOI(ap->a_vp)->i_flags & EXT4_EXTENTS) + error = ext4_bmapext(ap->a_vp, ap->a_bn, &blkno, + ap->a_runp, ap->a_runb); + else + error = ext2_bmaparray(ap->a_vp, ap->a_bn, &blkno, + ap->a_runp, ap->a_runb); *ap->a_bnp = blkno; return (error); } /* + * This function converts the logical block number of a file to + * its physical block number on the disk within ext4 extents. + */ +static int +ext4_bmapext(struct vnode *vp, int32_t bn, int64_t *bnp, int *runp, int *runb) +{ + struct inode *ip; + struct m_ext2fs *fs; + struct ext4_extent *ep; + struct ext4_extent_path path; + daddr_t lbn; + + ip = VTOI(vp); + fs = ip->i_e2fs; + lbn = bn; + + /* + * TODO: need to implement read ahead to improve the performance. + */ + if (runp != NULL) + *runp = 0; + + if (runb != NULL) + *runb = 0; + + ext4_ext_find_extent(fs, ip, lbn, &path); + ep = path.ep_ext; + if (ep == NULL) + return (EIO); + + *bnp = fsbtodb(fs, lbn - ep->e_blk + + (ep->e_start_lo | (daddr_t)ep->e_start_hi << 32)); + + if (*bnp == 0) + *bnp = -1; + + return (0); +} + +/* * Indirect blocks are now on the vnode for the file. They are given negative * logical block numbers. Indirect blocks are addressed by the negative * address of the first data block to which they point. Double indirect blocks @@ -91,7 +139,7 @@ ext2_bmap(struct vop_bmap_args *ap) */ int -ext2_bmaparray(struct vnode *vp, int32_t bn, int32_t *bnp, int *runp, int *runb) +ext2_bmaparray(struct vnode *vp, int32_t bn, int64_t *bnp, int *runp, int *runb) { struct inode *ip; struct buf *bp; Modified: head/sys/fs/ext2fs/ext2_dinode.h ============================================================================== --- head/sys/fs/ext2fs/ext2_dinode.h Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_dinode.h Mon Aug 12 21:34:48 2013 (r254260) @@ -79,6 +79,8 @@ #define E2DI_HAS_XTIME(ip) (EXT2_HAS_RO_COMPAT_FEATURE(ip->i_e2fs, \ EXT2F_ROCOMPAT_EXTRA_ISIZE)) +#define E2DI_HAS_HUGE_FILE(ip) (EXT2_HAS_RO_COMPAT_FEATURE(ip->i_e2fs, \ + EXT2F_ROCOMPAT_HUGE_FILE)) /* * Constants relative to the data blocks Added: head/sys/fs/ext2fs/ext2_extents.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/fs/ext2fs/ext2_extents.c Mon Aug 12 21:34:48 2013 (r254260) @@ -0,0 +1,177 @@ +/*- + * Copyright (c) 2010 Zheng Liu + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +static void ext4_ext_binsearch_index(struct inode *ip, struct ext4_extent_path + *path, daddr_t lbn) +{ + struct ext4_extent_header *ehp = path->ep_header; + struct ext4_extent_index *l, *r, *m; + + l = (struct ext4_extent_index *)(char *)(ehp + 1); + r = (struct ext4_extent_index *)(char *)(ehp + 1) + ehp->eh_ecount - 1; + while (l <= r) { + m = l + (r - l) / 2; + if (lbn < m->ei_blk) + r = m - 1; + else + l = m + 1; + } + + path->ep_index = l - 1; +} + +static void +ext4_ext_binsearch(struct inode *ip, struct ext4_extent_path *path, daddr_t lbn) +{ + struct ext4_extent_header *ehp = path->ep_header; + struct ext4_extent *l, *r, *m; + + if (ehp->eh_ecount == 0) + return; + + l = (struct ext4_extent *)(char *)(ehp + 1); + r = (struct ext4_extent *)(char *)(ehp + 1) + ehp->eh_ecount - 1; + while (l <= r) { + m = l + (r - l) / 2; + if (lbn < m->e_blk) + r = m - 1; + else + l = m + 1; + } + + path->ep_ext = l - 1; +} + +/* + * Find a block in ext4 extent cache. + */ +int +ext4_ext_in_cache(struct inode *ip, daddr_t lbn, struct ext4_extent *ep) +{ + struct ext4_extent_cache *ecp; + int ret = EXT4_EXT_CACHE_NO; + + ecp = &ip->i_ext_cache; + + /* cache is invalid */ + if (ecp->ec_type == EXT4_EXT_CACHE_NO) + return (ret); + + if (lbn >= ecp->ec_blk && lbn < ecp->ec_blk + ecp->ec_len) { + ep->e_blk = ecp->ec_blk; + ep->e_start_lo = ecp->ec_start & 0xffffffff; + ep->e_start_hi = ecp->ec_start >> 32 & 0xffff; + ep->e_len = ecp->ec_len; + ret = ecp->ec_type; + } + return (ret); +} + +/* + * Put an ext4_extent structure in ext4 cache. + */ +void +ext4_ext_put_cache(struct inode *ip, struct ext4_extent *ep, int type) +{ + struct ext4_extent_cache *ecp; + + ecp = &ip->i_ext_cache; + ecp->ec_type = type; + ecp->ec_blk = ep->e_blk; + ecp->ec_len = ep->e_len; + ecp->ec_start = (daddr_t)ep->e_start_hi << 32 | ep->e_start_lo; +} + +/* + * Find an extent. + */ +struct ext4_extent_path * +ext4_ext_find_extent(struct m_ext2fs *fs, struct inode *ip, + daddr_t lbn, struct ext4_extent_path *path) +{ + struct vnode *vp; + struct ext4_extent_header *ehp; + uint16_t i; + int error, size; + daddr_t nblk; + + vp = ITOV(ip); + ehp = (struct ext4_extent_header *)(char *)ip->i_db; + + if (ehp->eh_magic != EXT4_EXT_MAGIC) + return (NULL); + + path->ep_header = ehp; + + for (i = ehp->eh_depth; i != 0; --i) { + ext4_ext_binsearch_index(ip, path, lbn); + path->ep_depth = 0; + path->ep_ext = NULL; + + nblk = (daddr_t)path->ep_index->ei_leaf_hi << 32 | + path->ep_index->ei_leaf_lo; + size = blksize(fs, ip, nblk); + if (path->ep_bp != NULL) { + brelse(path->ep_bp); + path->ep_bp = NULL; + } + error = bread(ip->i_devvp, fsbtodb(fs, nblk), size, NOCRED, + &path->ep_bp); + if (error) { + brelse(path->ep_bp); + path->ep_bp = NULL; + return (NULL); + } + ehp = (struct ext4_extent_header *)path->ep_bp->b_data; + path->ep_header = ehp; + } + + path->ep_depth = i; + path->ep_ext = NULL; + path->ep_index = NULL; + + ext4_ext_binsearch(ip, path, lbn); + return (path); +} Added: head/sys/fs/ext2fs/ext2_extents.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/fs/ext2fs/ext2_extents.h Mon Aug 12 21:34:48 2013 (r254260) @@ -0,0 +1,99 @@ +/*- + * Copyright (c) 2012, 2010 Zheng Liu + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ +#ifndef _FS_EXT2FS_EXT2_EXTENTS_H_ +#define _FS_EXT2FS_EXT2_EXTENTS_H_ + +#include + +#define EXT4_EXT_MAGIC 0xf30a + +#define EXT4_EXT_CACHE_NO 0 +#define EXT4_EXT_CACHE_GAP 1 +#define EXT4_EXT_CACHE_IN 2 + +/* + * Ext4 file system extent on disk. + */ +struct ext4_extent { + uint32_t e_blk; /* first logical block */ + uint16_t e_len; /* number of blocks */ + uint16_t e_start_hi; /* high 16 bits of physical block */ + uint32_t e_start_lo; /* low 32 bits of physical block */ +}; + +/* + * Extent index on disk. + */ +struct ext4_extent_index { + uint32_t ei_blk; /* indexes logical blocks */ + uint32_t ei_leaf_lo; /* points to physical block of the + * next level */ + uint16_t ei_leaf_hi; /* high 16 bits of physical block */ + uint16_t ei_unused; +}; + +/* + * Extent tree header. + */ +struct ext4_extent_header { + uint16_t eh_magic; /* magic number: 0xf30a */ + uint16_t eh_ecount; /* number of valid entries */ + uint16_t eh_max; /* capacity of store in entries */ + uint16_t eh_depth; /* the depth of extent tree */ + uint32_t eh_gen; /* generation of extent tree */ +}; + +/* + * Save cached extent. + */ +struct ext4_extent_cache { + daddr_t ec_start; /* extent start */ + uint32_t ec_blk; /* logical block */ + uint32_t ec_len; + uint32_t ec_type; +}; + +/* + * Save path to some extent. + */ +struct ext4_extent_path { + uint16_t ep_depth; + struct buf *ep_bp; + struct ext4_extent *ep_ext; + struct ext4_extent_index *ep_index; + struct ext4_extent_header *ep_header; +}; + +struct inode; +struct m_ext2fs; +int ext4_ext_in_cache(struct inode *, daddr_t, struct ext4_extent *); +void ext4_ext_put_cache(struct inode *, struct ext4_extent *, int); +struct ext4_extent_path *ext4_ext_find_extent(struct m_ext2fs *fs, + struct inode *, daddr_t, struct ext4_extent_path *); + +#endif /* !_FS_EXT2FS_EXT2_EXTENTS_H_ */ Modified: head/sys/fs/ext2fs/ext2_extern.h ============================================================================== --- head/sys/fs/ext2fs/ext2_extern.h Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_extern.h Mon Aug 12 21:34:48 2013 (r254260) @@ -57,7 +57,7 @@ int ext2_blkatoff(struct vnode *, off_t, void ext2_blkfree(struct inode *, int32_t, long); int32_t ext2_blkpref(struct inode *, e2fs_lbn_t, int, int32_t *, int32_t); int ext2_bmap(struct vop_bmap_args *); -int ext2_bmaparray(struct vnode *, int32_t, int32_t *, int *, int *); +int ext2_bmaparray(struct vnode *, int32_t, int64_t *, int *, int *); void ext2_clusteracct(struct m_ext2fs *, char *, int, daddr_t, int); void ext2_dirbad(struct inode *ip, doff_t offset, char *how); void ext2_ei2i(struct ext2fs_dinode *, struct inode *); Modified: head/sys/fs/ext2fs/ext2_inode_cnv.c ============================================================================== --- head/sys/fs/ext2fs/ext2_inode_cnv.c Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_inode_cnv.c Mon Aug 12 21:34:48 2013 (r254260) @@ -32,6 +32,7 @@ #include #include +#include #include #include #include @@ -44,22 +45,34 @@ void ext2_print_inode(struct inode *in) { int i; + struct ext4_extent_header *ehp; + struct ext4_extent *ep; printf( "Inode: %5ju", (uintmax_t)in->i_number); printf( /* "Inode: %5d" */ " Type: %10s Mode: 0x%o Flags: 0x%x Version: %d\n", "n/a", in->i_mode, in->i_flags, in->i_gen); - printf( "User: %5lu Group: %5lu Size: %lu\n", - (unsigned long)in->i_uid, (unsigned long)in->i_gid, - (unsigned long)in->i_size); - printf( "Links: %3d Blockcount: %d\n", - in->i_nlink, in->i_blocks); + printf("User: %5u Group: %5u Size: %ju\n", + in->i_uid, in->i_gid, (uintmax_t)in->i_size); + printf("Links: %3d Blockcount: %ju\n", + in->i_nlink, (uintmax_t)in->i_blocks); printf( "ctime: 0x%x", in->i_ctime); printf( "atime: 0x%x", in->i_atime); printf( "mtime: 0x%x", in->i_mtime); - printf( "BLOCKS: "); - for(i=0; i < (in->i_blocks <= 24 ? ((in->i_blocks+1)/2): 12); i++) - printf("%d ", in->i_db[i]); + if (E2DI_HAS_XTIME(in)) + printf("crtime %#x ", in->i_birthtime); + printf("BLOCKS:"); + for (i = 0; i < (in->i_blocks <= 24 ? (in->i_blocks + 1) / 2 : 12); i++) + printf(" %d", in->i_db[i]); + printf("\n"); + printf("Extents:\n"); + ehp = (struct ext4_extent_header *)in->i_db; + printf("Header (magic 0x%x entries %d max %d depth %d gen %d)\n", + ehp->eh_magic, ehp->eh_ecount, ehp->eh_max, ehp->eh_depth, + ehp->eh_gen); + ep = (struct ext4_extent *)(char *)(ehp + 1); + printf("Index (blk %d len %d start_lo %d start_hi %d)\n", ep->e_blk, + ep->e_len, ep->e_start_lo, ep->e_start_hi); printf("\n"); } @@ -96,6 +109,11 @@ ext2_ei2i(struct ext2fs_dinode *ei, stru ip->i_flags |= (ei->e2di_flags & EXT2_IMMUTABLE) ? SF_IMMUTABLE : 0; ip->i_flags |= (ei->e2di_flags & EXT2_NODUMP) ? UF_NODUMP : 0; ip->i_blocks = ei->e2di_nblock; + if (E2DI_HAS_HUGE_FILE(ip)) { + ip->i_blocks |= (uint64_t)ei->e2di_nblock_high << 32; + if (ei->e2di_flags & EXT4_HUGE_FILE) + ip->i_blocks = fsbtodb(ip->i_e2fs, ip->i_blocks); + } ip->i_gen = ei->e2di_gen; ip->i_uid = ei->e2di_uid; ip->i_gid = ei->e2di_gid; @@ -138,7 +156,8 @@ ext2_i2ei(struct inode *ip, struct ext2f ei->e2di_flags |= (ip->i_flags & SF_APPEND) ? EXT2_APPEND: 0; ei->e2di_flags |= (ip->i_flags & SF_IMMUTABLE) ? EXT2_IMMUTABLE: 0; ei->e2di_flags |= (ip->i_flags & UF_NODUMP) ? EXT2_NODUMP: 0; - ei->e2di_nblock = ip->i_blocks; + ei->e2di_nblock = ip->i_blocks & 0xffffffff; + ei->e2di_nblock_high = ip->i_blocks >> 32 & 0xffff; ei->e2di_gen = ip->i_gen; ei->e2di_uid = ip->i_uid; ei->e2di_gid = ip->i_gid; Modified: head/sys/fs/ext2fs/ext2_subr.c ============================================================================== --- head/sys/fs/ext2fs/ext2_subr.c Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_subr.c Mon Aug 12 21:34:48 2013 (r254260) @@ -50,10 +50,11 @@ #include #include #include - -#ifdef KDB +#include #include +#include +#ifdef KDB void ext2_checkoverlap(struct buf *, struct inode *); #endif @@ -70,21 +71,63 @@ ext2_blkatoff(struct vnode *vp, off_t of struct buf *bp; e2fs_lbn_t lbn; int bsize, error; + daddr_t newblk; + struct ext4_extent *ep; + struct ext4_extent_path path; ip = VTOI(vp); fs = ip->i_e2fs; lbn = lblkno(fs, offset); bsize = blksize(fs, ip, lbn); - *bpp = NULL; - if ((error = bread(vp, lbn, bsize, NOCRED, &bp)) != 0) { + + /* + * The EXT4_EXTENTS requires special treatment, otherwise we can + * fall back to the normal path. + */ + if (!(ip->i_flags & EXT4_EXTENTS)) + goto normal; + + memset(&path, 0, sizeof(path)); + if (ext4_ext_find_extent(fs, ip, lbn, &path) == NULL) + goto normal; + ep = path.ep_ext; + if (ep == NULL) + goto normal; + + newblk = lbn - ep->e_blk + + (ep->e_start_lo | (daddr_t)ep->e_start_hi << 32); + + if (path.ep_bp != NULL) { + brelse(path.ep_bp); + path.ep_bp = NULL; + } + error = bread(ip->i_devvp, fsbtodb(fs, newblk), bsize, NOCRED, &bp); + if (error != 0) { brelse(bp); return (error); } if (res) *res = (char *)bp->b_data + blkoff(fs, offset); + /* + * If EXT4_EXTENTS is enabled we would get a wrong offset so + * reset b_offset here. + */ + bp->b_offset = lbn * bsize; *bpp = bp; return (0); + +normal: + if (*bpp == NULL) { + if ((error = bread(vp, lbn, bsize, NOCRED, &bp)) != 0) { + brelse(bp); + return (error); + } + if (res) + *res = (char *)bp->b_data + blkoff(fs, offset); + *bpp = bp; + } + return (0); } #ifdef KDB Modified: head/sys/fs/ext2fs/ext2_vfsops.c ============================================================================== --- head/sys/fs/ext2fs/ext2_vfsops.c Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_vfsops.c Mon Aug 12 21:34:48 2013 (r254260) @@ -397,9 +397,11 @@ compute_sb_data(struct vnode *devvp, str if (es->e2fs_rev == E2FS_REV0 || !EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_LARGEFILE)) fs->e2fs_maxfilesize = 0x7fffffff; - else - fs->e2fs_maxfilesize = 0x7fffffffffffffff; - + else { + fs->e2fs_maxfilesize = 0xffffffffffff; + if (EXT2_HAS_RO_COMPAT_FEATURE(fs, EXT2F_ROCOMPAT_HUGE_FILE)) + fs->e2fs_maxfilesize = 0x7fffffffffffffff; + } if (es->e4fs_flags & E2FS_UNSIGNED_HASH) { fs->e2fs_uhash = 3; } else if ((es->e4fs_flags & E2FS_SIGNED_HASH) == 0) { @@ -961,8 +963,12 @@ ext2_vget(struct mount *mp, ino_t ino, i * Now we want to make sure that block pointers for unused * blocks are zeroed out - ext2_balloc depends on this * although for regular files and directories only + * + * If EXT4_EXTENTS flag is enabled, unused blocks aren't + * zeroed out because we could corrupt the extent tree. */ - if(S_ISDIR(ip->i_mode) || S_ISREG(ip->i_mode)) { + if (!(ip->i_flags & EXT4_EXTENTS) && + (S_ISDIR(ip->i_mode) || S_ISREG(ip->i_mode))) { used_blocks = (ip->i_size+fs->e2fs_bsize-1) / fs->e2fs_bsize; for (i = used_blocks; i < EXT2_NDIR_BLOCKS; i++) ip->i_db[i] = 0; Modified: head/sys/fs/ext2fs/ext2_vnops.c ============================================================================== --- head/sys/fs/ext2fs/ext2_vnops.c Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2_vnops.c Mon Aug 12 21:34:48 2013 (r254260) @@ -84,6 +84,8 @@ static int ext2_makeinode(int mode, struct vnode *, struct vnode **, struct componentname *); static void ext2_itimes_locked(struct vnode *); +static int ext4_ext_read(struct vop_read_args *); +static int ext2_ind_read(struct vop_read_args *); static vop_access_t ext2_access; static int ext2_chmod(struct vnode *, int, struct ucred *, struct thread *); @@ -1327,7 +1329,7 @@ ext2_strategy(struct vop_strategy_args * struct vnode *vp = ap->a_vp; struct inode *ip; struct bufobj *bo; - int32_t blkno; + int64_t blkno; int error; ip = VTOI(vp); @@ -1607,6 +1609,29 @@ ext2_read(struct vop_read_args *ap) { struct vnode *vp; struct inode *ip; + int error; + + vp = ap->a_vp; + ip = VTOI(vp); + + /*EXT4_EXT_LOCK(ip);*/ + if (ip->i_flags & EXT4_EXTENTS) + error = ext4_ext_read(ap); + else + error = ext2_ind_read(ap); + /*EXT4_EXT_UNLOCK(ip);*/ + return (error); +} + + +/* + * Vnode op for reading. + */ +static int +ext2_ind_read(struct vop_read_args *ap) +{ + struct vnode *vp; + struct inode *ip; struct uio *uio; struct m_ext2fs *fs; struct buf *bp; @@ -1758,6 +1783,107 @@ ext2_ioctl(struct vop_ioctl_args *ap) } /* + * this function handles ext4 extents block mapping + */ +static int +ext4_ext_read(struct vop_read_args *ap) +{ + struct vnode *vp; + struct inode *ip; + struct uio *uio; + struct m_ext2fs *fs; + struct buf *bp; + struct ext4_extent nex, *ep; + struct ext4_extent_path path; + daddr_t lbn, newblk; + off_t bytesinfile; + int cache_type; + ssize_t orig_resid; + int error; + long size, xfersize, blkoffset; + + vp = ap->a_vp; + ip = VTOI(vp); + uio = ap->a_uio; + memset(&path, 0, sizeof(path)); + + orig_resid = uio->uio_resid; + KASSERT(orig_resid >= 0, ("%s: uio->uio_resid < 0", __func__)); + if (orig_resid == 0) + return (0); + KASSERT(uio->uio_offset >= 0, ("%s: uio->uio_offset < 0", __func__)); + fs = ip->i_e2fs; + if (uio->uio_offset < ip->i_size && uio->uio_offset >= fs->e2fs_maxfilesize) + return (EOVERFLOW); + + while (uio->uio_resid > 0) { + if ((bytesinfile = ip->i_size - uio->uio_offset) <= 0) + break; + lbn = lblkno(fs, uio->uio_offset); + size = blksize(fs, ip, lbn); + blkoffset = blkoff(fs, uio->uio_offset); + + xfersize = fs->e2fs_fsize - blkoffset; + xfersize = MIN(xfersize, uio->uio_resid); + xfersize = MIN(xfersize, bytesinfile); + + /* get block from ext4 extent cache */ + cache_type = ext4_ext_in_cache(ip, lbn, &nex); + switch (cache_type) { + case EXT4_EXT_CACHE_NO: + ext4_ext_find_extent(fs, ip, lbn, &path); + ep = path.ep_ext; + if (ep == NULL) + return (EIO); + + ext4_ext_put_cache(ip, ep, EXT4_EXT_CACHE_IN); + + newblk = lbn - ep->e_blk + (ep->e_start_lo | + (daddr_t)ep->e_start_hi << 32); + + if (path.ep_bp != NULL) { + brelse(path.ep_bp); + path.ep_bp = NULL; + } + break; + + case EXT4_EXT_CACHE_GAP: + /* block has not been allocated yet */ + return (0); + + case EXT4_EXT_CACHE_IN: + newblk = lbn - nex.e_blk + (nex.e_start_lo | + (daddr_t)nex.e_start_hi << 32); + break; + + default: + panic("%s: invalid cache type", __func__); + } + + error = bread(ip->i_devvp, fsbtodb(fs, newblk), size, NOCRED, &bp); + if (error) { + brelse(bp); + return (error); + } + + size -= bp->b_resid; + if (size < xfersize) { + if (size == 0) { + bqrelse(bp); + break; + } + xfersize = size; + } + error = uiomove(bp->b_data + blkoffset, (int)xfersize, uio); + bqrelse(bp); + if (error) + return (error); + } + + return (0); +} + +/* * Vnode op for writing. */ static int Modified: head/sys/fs/ext2fs/ext2fs.h ============================================================================== --- head/sys/fs/ext2fs/ext2fs.h Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/ext2fs.h Mon Aug 12 21:34:48 2013 (r254260) @@ -201,12 +201,18 @@ struct csum { * - EXT2F_ROCOMPAT_SPARSESUPER * - EXT2F_ROCOMPAT_LARGEFILE * - EXT2F_INCOMPAT_FTYPE + * + * We partially (read-only) support the following EXT4 features: + * - EXT2F_ROCOMPAT_HUGE_FILE + * - EXT2F_ROCOMPAT_EXTRA_ISIZE + * - EXT2F_INCOMPAT_EXTENTS */ #define EXT2F_COMPAT_SUPP 0x0000 #define EXT2F_ROCOMPAT_SUPP (EXT2F_ROCOMPAT_SPARSESUPER | \ EXT2F_ROCOMPAT_LARGEFILE | \ EXT2F_ROCOMPAT_EXTRA_ISIZE) -#define EXT2F_INCOMPAT_SUPP EXT2F_INCOMPAT_FTYPE +#define EXT2F_INCOMPAT_SUPP (EXT2F_INCOMPAT_FTYPE | \ + EXT2F_INCOMPAT_EXTENTS) /* Assume that user mode programs are passing in an ext2fs superblock, not * a kernel struct super_block. This will allow us to call the feature-test Modified: head/sys/fs/ext2fs/inode.h ============================================================================== --- head/sys/fs/ext2fs/inode.h Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/fs/ext2fs/inode.h Mon Aug 12 21:34:48 2013 (r254260) @@ -38,9 +38,13 @@ #ifndef _FS_EXT2FS_INODE_H_ #define _FS_EXT2FS_INODE_H_ +#include #include +#include #include +#include + /* * This must agree with the definition in . */ @@ -86,7 +90,10 @@ struct inode { /* Fields from struct dinode in UFS. */ uint16_t i_mode; /* IFMT, permissions; see below. */ int16_t i_nlink; /* File link count. */ + uint32_t i_uid; /* File owner. */ + uint32_t i_gid; /* File group. */ uint64_t i_size; /* File byte count. */ + uint64_t i_blocks; /* Blocks actually held. */ int32_t i_atime; /* Last access time. */ int32_t i_mtime; /* Last modified time. */ int32_t i_ctime; /* Last inode change time. */ @@ -95,13 +102,12 @@ struct inode { int32_t i_atimensec; /* Last access time. */ int32_t i_ctimensec; /* Last inode change time. */ int32_t i_birthnsec; /* Inode creation time. */ + uint32_t i_gen; /* Generation number. */ + uint32_t i_flags; /* Status flags (chflags). */ uint32_t i_db[NDADDR]; /* Direct disk blocks. */ uint32_t i_ib[NIADDR]; /* Indirect disk blocks. */ - uint32_t i_flags; /* Status flags (chflags). */ - uint32_t i_blocks; /* Blocks actually held. */ - uint32_t i_gen; /* Generation number. */ - uint32_t i_uid; /* File owner. */ - uint32_t i_gid; /* File group. */ + + struct ext4_extent_cache i_ext_cache; /* cache for ext4 extent */ }; /* Modified: head/sys/modules/ext2fs/Makefile ============================================================================== --- head/sys/modules/ext2fs/Makefile Mon Aug 12 21:01:01 2013 (r254259) +++ head/sys/modules/ext2fs/Makefile Mon Aug 12 21:34:48 2013 (r254260) @@ -3,8 +3,8 @@ .PATH: ${.CURDIR}/../../fs/ext2fs KMOD= ext2fs SRCS= opt_ddb.h opt_directio.h opt_quota.h opt_suiddir.h vnode_if.h \ - ext2_alloc.c ext2_balloc.c ext2_bmap.c ext2_hash.c ext2_htree.c \ - ext2_inode.c ext2_inode_cnv.c ext2_lookup.c ext2_subr.c ext2_vfsops.c \ - ext2_vnops.c + ext2_alloc.c ext2_balloc.c ext2_bmap.c ext2_extents.c ext2_hash.c \ + ext2_htree.c ext2_inode.c ext2_inode_cnv.c ext2_lookup.c ext2_subr.c \ + ext2_vfsops.c ext2_vnops.c .include From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 22:27:53 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 98588F82; Mon, 12 Aug 2013 22:27:53 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8619F205B; Mon, 12 Aug 2013 22:27:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CMRrSh011175; Mon, 12 Aug 2013 22:27:53 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CMRrmd011174; Mon, 12 Aug 2013 22:27:53 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308122227.r7CMRrmd011174@svn.freebsd.org> From: Adrian Chadd Date: Mon, 12 Aug 2013 22:27:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254261 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 22:27:53 -0000 Author: adrian Date: Mon Aug 12 22:27:53 2013 New Revision: 254261 URL: http://svnweb.freebsd.org/changeset/base/254261 Log: Blank m_nextpkt before passing it up. Modified: head/sys/net80211/ieee80211_power.c Modified: head/sys/net80211/ieee80211_power.c ============================================================================== --- head/sys/net80211/ieee80211_power.c Mon Aug 12 21:34:48 2013 (r254260) +++ head/sys/net80211/ieee80211_power.c Mon Aug 12 22:27:53 2013 (r254261) @@ -475,6 +475,7 @@ pwrsave_flushq(struct ieee80211_node *ni while (ifp_q != NULL) { m = ifp_q; ifp_q = m->m_nextpkt; + m->m_nextpkt = NULL; KASSERT((!(m->m_flags & M_ENCAP)), ("%s: vapq with M_ENCAP frame!\n", __func__)); (void) ieee80211_vap_xmitpkt(vap, m); From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 22:54:39 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B6D48387; Mon, 12 Aug 2013 22:54:39 +0000 (UTC) (envelope-from jfv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9558A21AD; Mon, 12 Aug 2013 22:54:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CMsdmR021712; Mon, 12 Aug 2013 22:54:39 GMT (envelope-from jfv@svn.freebsd.org) Received: (from jfv@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CMscG3021708; Mon, 12 Aug 2013 22:54:38 GMT (envelope-from jfv@svn.freebsd.org) Message-Id: <201308122254.r7CMscG3021708@svn.freebsd.org> From: Jack F Vogel Date: Mon, 12 Aug 2013 22:54:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254262 - in head/sys/dev: e1000 ixgbe X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 22:54:39 -0000 Author: jfv Date: Mon Aug 12 22:54:38 2013 New Revision: 254262 URL: http://svnweb.freebsd.org/changeset/base/254262 Log: Improve the MSIX setup code in the drivers, thanks to Marius for the changes. Make sure that pci_alloc_msix() does give us the vectors we need and fall back to MSI when it doesn't, also release any that were allocated when insufficient. MFC after: 3 days Modified: head/sys/dev/e1000/if_em.c head/sys/dev/e1000/if_igb.c head/sys/dev/ixgbe/ixgbe.c head/sys/dev/ixgbe/ixv.c Modified: head/sys/dev/e1000/if_em.c ============================================================================== --- head/sys/dev/e1000/if_em.c Mon Aug 12 22:27:53 2013 (r254261) +++ head/sys/dev/e1000/if_em.c Mon Aug 12 22:54:38 2013 (r254262) @@ -2277,7 +2277,7 @@ em_local_timer(void *arg) /* Mask to use in the irq trigger */ if (adapter->msix_mem) - trigger = rxr->ims; /* RX for 82574 */ + trigger = rxr->ims; else trigger = E1000_ICS_RXDMT0; @@ -2775,23 +2775,30 @@ em_setup_msix(struct adapter *adapter) if (val >= 3) val = 3; else { - bus_release_resource(dev, SYS_RES_MEMORY, - PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem); - adapter->msix_mem = NULL; device_printf(adapter->dev, - "MSIX: incorrect vectors, using MSI\n"); + "MSIX: insufficient vectors, using MSI\n"); goto msi; } - if (pci_alloc_msix(dev, &val) == 0) { + if ((pci_alloc_msix(dev, &val) == 0) && (val == 3)) { device_printf(adapter->dev, "Using MSIX interrupts " "with %d vectors\n", val); return (val); } - /* Fall through to MSI */ + + /* + ** If MSIX alloc failed or provided us with + ** less than needed, free and fall through to MSI + */ + pci_release_msi(dev); } msi: + if (adapter->msix_mem != NULL) { + bus_release_resource(dev, SYS_RES_MEMORY, + PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem); + adapter->msix_mem = NULL; + } val = 1; if (pci_alloc_msi(dev, &val) == 0) { device_printf(adapter->dev,"Using an MSI interrupt\n"); Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Mon Aug 12 22:27:53 2013 (r254261) +++ head/sys/dev/e1000/if_igb.c Mon Aug 12 22:54:38 2013 (r254262) @@ -2899,13 +2899,18 @@ igb_setup_msix(struct adapter *adapter) msgs, want); goto msi; } - if (pci_alloc_msix(dev, &msgs) == 0) { + if ((pci_alloc_msix(dev, &msgs) == 0) && (msgs == want)) { device_printf(adapter->dev, "Using MSIX interrupts with %d vectors\n", msgs); adapter->num_queues = queues; return (msgs); } - /* Fallback to MSI configuration */ + /* + ** If MSIX alloc failed or provided us with + ** less than needed, free and fall through to MSI + */ + pci_release_msi(dev); + msi: if (adapter->msix_mem != NULL) { bus_release_resource(dev, SYS_RES_MEMORY, @@ -2914,10 +2919,10 @@ msi: } msgs = 1; if (pci_alloc_msi(dev, &msgs) == 0) { - device_printf(adapter->dev," Using MSI interrupt\n"); + device_printf(adapter->dev," Using an MSI interrupt\n"); return (msgs); } - /* Default to a legacy interrupt */ + device_printf(adapter->dev," Using a Legacy interrupt\n"); return (0); } Modified: head/sys/dev/ixgbe/ixgbe.c ============================================================================== --- head/sys/dev/ixgbe/ixgbe.c Mon Aug 12 22:27:53 2013 (r254261) +++ head/sys/dev/ixgbe/ixgbe.c Mon Aug 12 22:54:38 2013 (r254262) @@ -2456,12 +2456,18 @@ ixgbe_setup_msix(struct adapter *adapter msgs, want); goto msi; } - if (pci_alloc_msix(dev, &msgs) == 0) { + if ((pci_alloc_msix(dev, &msgs) == 0) && (msgs == want)) { device_printf(adapter->dev, "Using MSIX interrupts with %d vectors\n", msgs); adapter->num_queues = queues; return (msgs); } + /* + ** If MSIX alloc failed or provided us with + ** less than needed, free and fall through to MSI + */ + pci_release_msi(dev); + msi: if (adapter->msix_mem != NULL) { bus_release_resource(dev, SYS_RES_MEMORY, Modified: head/sys/dev/ixgbe/ixv.c ============================================================================== --- head/sys/dev/ixgbe/ixv.c Mon Aug 12 22:27:53 2013 (r254261) +++ head/sys/dev/ixgbe/ixv.c Mon Aug 12 22:54:38 2013 (r254262) @@ -1704,11 +1704,13 @@ ixv_setup_msix(struct adapter *adapter) ** plus an additional for mailbox. */ want = 2; - if (pci_alloc_msix(dev, &want) == 0) { + if ((pci_alloc_msix(dev, &want) == 0) && (want == 2)) { device_printf(adapter->dev, "Using MSIX interrupts with %d vectors\n", want); return (want); } + /* Release in case alloc was insufficient */ + pci_release_msi(dev); out: if (adapter->msix_mem != NULL) { bus_release_resource(dev, SYS_RES_MEMORY, From owner-svn-src-head@FreeBSD.ORG Mon Aug 12 23:30:10 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 79AA8A6A; Mon, 12 Aug 2013 23:30:10 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 641FD239C; Mon, 12 Aug 2013 23:30:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7CNUA3J034423; Mon, 12 Aug 2013 23:30:10 GMT (envelope-from scottl@svn.freebsd.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7CNU25k034351; Mon, 12 Aug 2013 23:30:02 GMT (envelope-from scottl@svn.freebsd.org) Message-Id: <201308122330.r7CNU25k034351@svn.freebsd.org> From: Scott Long Date: Mon, 12 Aug 2013 23:30:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254263 - in head/sys: dev/aacraid dev/advansys dev/aic7xxx dev/amr dev/an dev/arcmsr dev/asr dev/ata dev/bktr dev/buslogic dev/dpt dev/e1000 dev/fatm dev/firewire dev/fxp dev/hatm dev/... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Aug 2013 23:30:10 -0000 Author: scottl Date: Mon Aug 12 23:30:01 2013 New Revision: 254263 URL: http://svnweb.freebsd.org/changeset/base/254263 Log: Update PCI drivers to no longer look at the MEMIO-enabled bit in the PCI command register. The lazy BAR allocation code in FreeBSD sometimes disables this bit when it detects a range conflict, and will re-enable it on demand when a driver allocates the BAR. Thus, the bit is no longer a reliable indication of capability, and should not be checked. This results in the elimination of a lot of code from drivers, and also gives the opportunity to simplify a lot of drivers to use a helper API to set the busmaster enable bit. This changes fixes some recent reports of disk controllers and their associated drives/enclosures disappearing during boot. Submitted by: jhb Reviewed by: jfv, marius, achadd, achim MFC after: 1 day Modified: head/sys/dev/aacraid/aacraid_pci.c head/sys/dev/advansys/adw_pci.c head/sys/dev/aic7xxx/ahc_pci.c head/sys/dev/aic7xxx/ahd_pci.c head/sys/dev/amr/amr_pci.c head/sys/dev/an/if_an_pci.c head/sys/dev/arcmsr/arcmsr.c head/sys/dev/asr/asr.c head/sys/dev/ata/ata-pci.c head/sys/dev/bktr/bktr_os.c head/sys/dev/buslogic/bt_pci.c head/sys/dev/dpt/dpt_pci.c head/sys/dev/e1000/if_em.c head/sys/dev/e1000/if_igb.c head/sys/dev/e1000/if_lem.c head/sys/dev/fatm/if_fatm.c head/sys/dev/firewire/fwohci_pci.c head/sys/dev/fxp/if_fxp.c head/sys/dev/hatm/if_hatm.c head/sys/dev/ips/ips_pci.c head/sys/dev/isp/isp_pci.c head/sys/dev/iwn/if_iwn.c head/sys/dev/ixgb/if_ixgb.c head/sys/dev/ixgbe/ixv.c head/sys/dev/mfi/mfi_pci.c head/sys/dev/mly/mly.c head/sys/dev/mn/if_mn.c head/sys/dev/mps/mps_pci.c head/sys/dev/mpt/mpt_pci.c head/sys/dev/mwl/if_mwl_pci.c head/sys/dev/mxge/if_mxge.c head/sys/dev/pccbb/pccbb_pci.c head/sys/dev/pst/pst-pci.c head/sys/dev/rp/rp_pci.c head/sys/dev/safe/safe.c head/sys/dev/sound/pci/als4000.c head/sys/dev/sound/pci/aureal.c head/sys/dev/sound/pci/cmi.c head/sys/dev/sound/pci/cs4281.c head/sys/dev/sound/pci/csa.c head/sys/dev/sound/pci/ds1.c head/sys/dev/sound/pci/emu10k1.c head/sys/dev/sound/pci/emu10kx.c head/sys/dev/sound/pci/envy24.c head/sys/dev/sound/pci/envy24ht.c head/sys/dev/sound/pci/es137x.c head/sys/dev/sound/pci/fm801.c head/sys/dev/sound/pci/hdspe.c head/sys/dev/sound/pci/maestro.c head/sys/dev/sound/pci/maestro3.c head/sys/dev/sound/pci/neomagic.c head/sys/dev/sound/pci/solo.c head/sys/dev/sound/pci/t4dwave.c head/sys/dev/sound/pci/via82c686.c head/sys/dev/sound/pci/vibes.c head/sys/dev/stge/if_stge.c head/sys/dev/sym/sym_hipd.c head/sys/dev/tdfx/tdfx_pci.c head/sys/dev/twa/tw_osl_freebsd.c head/sys/dev/tws/tws.c head/sys/dev/ubsec/ubsec.c head/sys/dev/wi/if_wi_pci.c head/sys/pci/ncr.c Modified: head/sys/dev/aacraid/aacraid_pci.c ============================================================================== --- head/sys/dev/aacraid/aacraid_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/aacraid/aacraid_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -169,18 +169,12 @@ aacraid_pci_attach(device_t dev) /* * Verify that the adapter is correctly set up in PCI space. */ - command = pci_read_config(sc->aac_dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); + pci_enable_busmaster(dev); command = pci_read_config(sc->aac_dev, PCIR_COMMAND, 2); if (!(command & PCIM_CMD_BUSMASTEREN)) { device_printf(sc->aac_dev, "can't enable bus-master feature\n"); goto out; } - if ((command & PCIM_CMD_MEMEN) == 0) { - device_printf(sc->aac_dev, "memory window not available\n"); - goto out; - } /* * Detect the hardware interface version, set up the bus interface Modified: head/sys/dev/advansys/adw_pci.c ============================================================================== --- head/sys/dev/advansys/adw_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/advansys/adw_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -199,14 +199,13 @@ adw_pci_attach(device_t dev) { struct adw_softc *adw; struct adw_pci_identity *entry; - u_int32_t command; + u_int16_t command; struct resource *regs; int regs_type; int regs_id; int error; int zero; - command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/1); entry = adw_find_pci_device(dev); if (entry == NULL) return (ENXIO); @@ -214,14 +213,11 @@ adw_pci_attach(device_t dev) regs_type = 0; regs_id = 0; #ifdef ADW_ALLOW_MEMIO - if ((command & PCIM_CMD_MEMEN) != 0) { - regs_type = SYS_RES_MEMORY; - regs_id = ADW_PCI_MEMBASE; - regs = bus_alloc_resource_any(dev, regs_type, - ®s_id, RF_ACTIVE); - } + regs_type = SYS_RES_MEMORY; + regs_id = ADW_PCI_MEMBASE; + regs = bus_alloc_resource_any(dev, regs_type, ®s_id, RF_ACTIVE); #endif - if (regs == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (regs == NULL) { regs_type = SYS_RES_IOPORT; regs_id = ADW_PCI_IOBASE; regs = bus_alloc_resource_any(dev, regs_type, @@ -296,6 +292,7 @@ adw_pci_attach(device_t dev) * 'control_flag' CONTROL_FLAG_IGNORE_PERR flag to tell the microcode * to ignore DMA parity errors. */ + command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/2); if ((command & PCIM_CMD_PERRESPEN) == 0) adw_lram_write_16(adw, ADW_MC_CONTROL_FLAG, adw_lram_read_16(adw, ADW_MC_CONTROL_FLAG) Modified: head/sys/dev/aic7xxx/ahc_pci.c ============================================================================== --- head/sys/dev/aic7xxx/ahc_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/aic7xxx/ahc_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -139,12 +139,10 @@ int ahc_pci_map_registers(struct ahc_softc *ahc) { struct resource *regs; - u_int command; int regs_type; int regs_id; int allow_memio; - command = aic_pci_read_config(ahc->dev_softc, PCIR_COMMAND, /*bytes*/1); regs = NULL; regs_type = 0; regs_id = 0; @@ -166,7 +164,7 @@ ahc_pci_map_registers(struct ahc_softc * #endif } - if ((allow_memio != 0) && (command & PCIM_CMD_MEMEN) != 0) { + if (allow_memio != 0) { regs_type = SYS_RES_MEMORY; regs_id = AHC_PCI_MEMADDR; @@ -190,16 +188,11 @@ ahc_pci_map_registers(struct ahc_softc * bus_release_resource(ahc->dev_softc, regs_type, regs_id, regs); regs = NULL; - } else { - command &= ~PCIM_CMD_PORTEN; - aic_pci_write_config(ahc->dev_softc, - PCIR_COMMAND, - command, /*bytes*/1); } } } - if (regs == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (regs == NULL) { regs_type = SYS_RES_IOPORT; regs_id = AHC_PCI_IOADDR; regs = bus_alloc_resource_any(ahc->dev_softc, regs_type, @@ -217,11 +210,6 @@ ahc_pci_map_registers(struct ahc_softc * bus_release_resource(ahc->dev_softc, regs_type, regs_id, regs); regs = NULL; - } else { - command &= ~PCIM_CMD_MEMEN; - aic_pci_write_config(ahc->dev_softc, - PCIR_COMMAND, - command, /*bytes*/1); } } } Modified: head/sys/dev/aic7xxx/ahd_pci.c ============================================================================== --- head/sys/dev/aic7xxx/ahd_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/aic7xxx/ahd_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -143,13 +143,11 @@ ahd_pci_map_registers(struct ahd_softc * { struct resource *regs; struct resource *regs2; - u_int command; int regs_type; int regs_id; int regs_id2; int allow_memio; - command = aic_pci_read_config(ahd->dev_softc, PCIR_COMMAND, /*bytes*/1); regs = NULL; regs2 = NULL; regs_type = 0; @@ -165,8 +163,7 @@ ahd_pci_map_registers(struct ahd_softc * allow_memio = 1; } - if ((command & PCIM_CMD_MEMEN) != 0 - && (ahd->bugs & AHD_PCIX_MMAPIO_BUG) == 0 + if ((ahd->bugs & AHD_PCIX_MMAPIO_BUG) == 0 && allow_memio != 0) { regs_type = SYS_RES_MEMORY; @@ -199,15 +196,10 @@ ahd_pci_map_registers(struct ahd_softc * regs_id, regs); regs = NULL; AHD_CORRECTABLE_ERROR(ahd); - } else { - command &= ~PCIM_CMD_PORTEN; - aic_pci_write_config(ahd->dev_softc, - PCIR_COMMAND, - command, /*bytes*/1); } } } - if (regs == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (regs == NULL) { regs_type = SYS_RES_IOPORT; regs_id = AHD_PCI_IOADDR0; regs = bus_alloc_resource_any(ahd->dev_softc, regs_type, @@ -233,9 +225,6 @@ ahd_pci_map_registers(struct ahd_softc * } ahd->tags[1] = rman_get_bustag(regs2); ahd->bshs[1] = rman_get_bushandle(regs2); - command &= ~PCIM_CMD_MEMEN; - aic_pci_write_config(ahd->dev_softc, PCIR_COMMAND, - command, /*bytes*/1); ahd->platform_data->regs_res_type[1] = regs_type; ahd->platform_data->regs_res_id[1] = regs_id2; ahd->platform_data->regs[1] = regs2; Modified: head/sys/dev/amr/amr_pci.c ============================================================================== --- head/sys/dev/amr/amr_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/amr/amr_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -184,7 +184,6 @@ amr_pci_attach(device_t dev) struct amr_softc *sc; struct amr_ident *id; int rid, rtype, error; - u_int32_t command; debug_called(1); @@ -204,24 +203,8 @@ amr_pci_attach(device_t dev) if ((id = amr_find_ident(dev)) == NULL) return (ENXIO); - command = pci_read_config(dev, PCIR_COMMAND, 1); if (id->flags & AMR_ID_QUARTZ) { - /* - * Make sure we are going to be able to talk to this board. - */ - if ((command & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "memory window not available\n"); - return (ENXIO); - } sc->amr_type |= AMR_TYPE_QUARTZ; - } else { - /* - * Make sure we are going to be able to talk to this board. - */ - if ((command & PCIM_CMD_PORTEN) == 0) { - device_printf(dev, "I/O window not available\n"); - return (ENXIO); - } } if ((amr_force_sg32 == 0) && (id->flags & AMR_ID_DO_SG64) && @@ -231,11 +214,7 @@ amr_pci_attach(device_t dev) } /* force the busmaster enable bit on */ - if (!(command & PCIM_CMD_BUSMASTEREN)) { - device_printf(dev, "busmaster bit not set, enabling\n"); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - } + pci_enable_busmaster(dev); /* * Allocate the PCI register window. Modified: head/sys/dev/an/if_an_pci.c ============================================================================== --- head/sys/dev/an/if_an_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/an/if_an_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -141,7 +141,6 @@ static int an_attach_pci(dev) device_t dev; { - u_int32_t command; struct an_softc *sc; int flags, error = 0; @@ -153,19 +152,6 @@ an_attach_pci(dev) sc->mpi350 = 1; sc->port_rid = PCIR_BAR(0); } else { - /* - * Map control/status registers. - */ - command = pci_read_config(dev, PCIR_COMMAND, 4); - command |= PCIM_CMD_PORTEN; - pci_write_config(dev, PCIR_COMMAND, command, 4); - command = pci_read_config(dev, PCIR_COMMAND, 4); - - if (!(command & PCIM_CMD_PORTEN)) { - device_printf(dev, "failed to enable I/O ports!\n"); - error = ENXIO; - goto fail; - } sc->port_rid = AN_PCI_LOIO; } error = an_alloc_port(dev, sc->port_rid, 1); Modified: head/sys/dev/arcmsr/arcmsr.c ============================================================================== --- head/sys/dev/arcmsr/arcmsr.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/arcmsr/arcmsr.c Mon Aug 12 23:30:01 2013 (r254263) @@ -4101,8 +4101,7 @@ static u_int32_t arcmsr_initialize(devic pci_command |= PCIM_CMD_BUSMASTEREN; pci_command |= PCIM_CMD_PERRESPEN; pci_command |= PCIM_CMD_MWRICEN; - /* Enable Busmaster/Mem */ - pci_command |= PCIM_CMD_MEMEN; + /* Enable Busmaster */ pci_write_config(dev, PCIR_COMMAND, pci_command, 2); switch(acb->adapter_type) { case ACB_ADAPTER_TYPE_A: { Modified: head/sys/dev/asr/asr.c ============================================================================== --- head/sys/dev/asr/asr.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/asr/asr.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2428,9 +2428,7 @@ asr_attach(device_t dev) return(ENXIO); } /* Enable if not formerly enabled */ - pci_write_config(dev, PCIR_COMMAND, - pci_read_config(dev, PCIR_COMMAND, sizeof(char)) | - PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN, sizeof(char)); + pci_enable_busmaster(dev); sc->ha_pciBusNum = pci_get_bus(dev); sc->ha_pciDeviceNum = (pci_get_slot(dev) << 3) | pci_get_function(dev); Modified: head/sys/dev/ata/ata-pci.c ============================================================================== --- head/sys/dev/ata/ata-pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ata/ata-pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -98,11 +98,8 @@ ata_pci_attach(device_t dev) ctlr->dev = dev; /* if needed try to enable busmastering */ + pci_enable_busmaster(dev); cmd = pci_read_config(dev, PCIR_COMMAND, 2); - if (!(cmd & PCIM_CMD_BUSMASTEREN)) { - pci_write_config(dev, PCIR_COMMAND, cmd | PCIM_CMD_BUSMASTEREN, 2); - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - } /* if busmastering mode "stuck" use it */ if ((cmd & PCIM_CMD_BUSMASTEREN) == PCIM_CMD_BUSMASTEREN) { Modified: head/sys/dev/bktr/bktr_os.c ============================================================================== --- head/sys/dev/bktr/bktr_os.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/bktr/bktr_os.c Mon Aug 12 23:30:01 2013 (r254263) @@ -318,7 +318,6 @@ bktr_attach( device_t dev ) { u_long latency; u_long fun; - u_long val; unsigned int rev; unsigned int unit; int error = 0; @@ -336,9 +335,7 @@ bktr_attach( device_t dev ) /* * Enable bus mastering and Memory Mapped device */ - val = pci_read_config(dev, PCIR_COMMAND, 4); - val |= (PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, val, 4); + pci_enable_busmaster(dev); /* * Map control/status registers. Modified: head/sys/dev/buslogic/bt_pci.c ============================================================================== --- head/sys/dev/buslogic/bt_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/buslogic/bt_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -57,24 +57,19 @@ __FBSDID("$FreeBSD$"); static int bt_pci_alloc_resources(device_t dev) { - int command, type = 0, rid, zero; + int type = 0, rid, zero; struct resource *regs = 0; struct resource *irq = 0; - command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/1); #if 0 /* XXX Memory Mapped I/O seems to cause problems */ - if (command & PCIM_CMD_MEMEN) { - type = SYS_RES_MEMORY; - rid = BT_PCI_MEMADDR; - regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE); - } + type = SYS_RES_MEMORY; + rid = BT_PCI_MEMADDR; + regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE); #else - if (!regs && (command & PCIM_CMD_PORTEN)) { - type = SYS_RES_IOPORT; - rid = BT_PCI_IOADDR; - regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE); - } + type = SYS_RES_IOPORT; + rid = BT_PCI_IOADDR; + regs = bus_alloc_resource_any(dev, type, &rid, RF_ACTIVE); #endif if (!regs) return (ENOMEM); Modified: head/sys/dev/dpt/dpt_pci.c ============================================================================== --- head/sys/dev/dpt/dpt_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/dpt/dpt_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -77,23 +77,17 @@ dpt_pci_attach (device_t dev) dpt_softc_t * dpt; int error = 0; - u_int32_t command; - dpt = device_get_softc(dev); dpt->dev = dev; dpt_alloc(dev); - command = pci_read_config(dev, PCIR_COMMAND, /*bytes*/1); - #ifdef DPT_ALLOW_MMIO - if ((command & PCIM_CMD_MEMEN) != 0) { - dpt->io_rid = DPT_PCI_MEMADDR; - dpt->io_type = SYS_RES_MEMORY; - dpt->io_res = bus_alloc_resource_any(dev, dpt->io_type, - &dpt->io_rid, RF_ACTIVE); - } + dpt->io_rid = DPT_PCI_MEMADDR; + dpt->io_type = SYS_RES_MEMORY; + dpt->io_res = bus_alloc_resource_any(dev, dpt->io_type, + &dpt->io_rid, RF_ACTIVE); #endif - if (dpt->io_res == NULL && (command & PCIM_CMD_PORTEN) != 0) { + if (dpt->io_res == NULL) { dpt->io_rid = DPT_PCI_IOADDR; dpt->io_type = SYS_RES_IOPORT; dpt->io_res = bus_alloc_resource_any(dev, dpt->io_type, Modified: head/sys/dev/e1000/if_em.c ============================================================================== --- head/sys/dev/e1000/if_em.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/e1000/if_em.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2442,16 +2442,8 @@ em_identify_hardware(struct adapter *ada device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.bus.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.bus.pci_cmd_word & PCIM_CMD_MEMEN))) { - device_printf(dev, "Memory Access and/or Bus Master bits " - "were not set!\n"); - adapter->hw.bus.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, - adapter->hw.bus.pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/e1000/if_igb.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2410,16 +2410,8 @@ igb_identify_hardware(struct adapter *ad device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.bus.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.bus.pci_cmd_word & PCIM_CMD_MEMEN))) { - INIT_DEBUGOUT("Memory Access and/or Bus Master " - "bits were not set!\n"); - adapter->hw.bus.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, - adapter->hw.bus.pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/e1000/if_lem.c ============================================================================== --- head/sys/dev/e1000/if_lem.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/e1000/if_lem.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2119,16 +2119,8 @@ lem_identify_hardware(struct adapter *ad device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.bus.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.bus.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.bus.pci_cmd_word & PCIM_CMD_MEMEN))) { - device_printf(dev, "Memory Access and/or Bus Master bits " - "were not set!\n"); - adapter->hw.bus.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, - adapter->hw.bus.pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/fatm/if_fatm.c ============================================================================== --- head/sys/dev/fatm/if_fatm.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/fatm/if_fatm.c Mon Aug 12 23:30:01 2013 (r254263) @@ -2829,21 +2829,13 @@ fatm_attach(device_t dev) ifp->if_linkmiblen = sizeof(IFP2IFATM(sc->ifp)->mib); /* - * Enable memory and bustmaster + * Enable busmaster */ - cfg = pci_read_config(dev, PCIR_COMMAND, 2); - cfg |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, cfg, 2); + pci_enable_busmaster(dev); /* * Map memory */ - cfg = pci_read_config(dev, PCIR_COMMAND, 2); - if (!(cfg & PCIM_CMD_MEMEN)) { - if_printf(ifp, "failed to enable memory mapping\n"); - error = ENXIO; - goto fail; - } sc->memid = 0x10; sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->memid, RF_ACTIVE); Modified: head/sys/dev/firewire/fwohci_pci.c ============================================================================== --- head/sys/dev/firewire/fwohci_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/firewire/fwohci_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -242,7 +242,7 @@ fwohci_pci_init(device_t self) uint16_t cmd; cmd = pci_read_config(self, PCIR_COMMAND, 2); - cmd |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; + cmd |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; #if 1 /* for broken hardware */ cmd &= ~PCIM_CMD_MWRICEN; #endif Modified: head/sys/dev/fxp/if_fxp.c ============================================================================== --- head/sys/dev/fxp/if_fxp.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/fxp/if_fxp.c Mon Aug 12 23:30:01 2013 (r254263) @@ -452,7 +452,6 @@ fxp_attach(device_t dev) * Enable bus mastering. */ pci_enable_busmaster(dev); - val = pci_read_config(dev, PCIR_COMMAND, 2); /* * Figure out which we should try first - memory mapping or i/o mapping? @@ -610,6 +609,7 @@ fxp_attach(device_t dev) * is a valid cacheline size (8 or 16 dwords), then tell * the board to turn on MWI. */ + val = pci_read_config(dev, PCIR_COMMAND, 2); if (val & PCIM_CMD_MWRICEN && pci_read_config(dev, PCIR_CACHELNSZ, 1) != 0) sc->flags |= FXP_FLAG_MWI_ENABLE; Modified: head/sys/dev/hatm/if_hatm.c ============================================================================== --- head/sys/dev/hatm/if_hatm.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/hatm/if_hatm.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1686,7 +1686,7 @@ hatm_attach(device_t dev) * 4.2 BIOS Configuration */ v = pci_read_config(dev, PCIR_COMMAND, 2); - v |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; + v |= PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; pci_write_config(dev, PCIR_COMMAND, v, 2); /* @@ -1702,12 +1702,6 @@ hatm_attach(device_t dev) /* * Map memory */ - v = pci_read_config(dev, PCIR_COMMAND, 2); - if (!(v & PCIM_CMD_MEMEN)) { - device_printf(dev, "failed to enable memory\n"); - error = ENXIO; - goto failed; - } sc->memid = PCIR_BAR(0); sc->memres = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->memid, RF_ACTIVE); Modified: head/sys/dev/ips/ips_pci.c ============================================================================== --- head/sys/dev/ips/ips_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ips/ips_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -59,7 +59,6 @@ static int ips_pci_probe(device_t dev) static int ips_pci_attach(device_t dev) { - u_int32_t command; ips_softc_t *sc; @@ -95,22 +94,18 @@ static int ips_pci_attach(device_t dev) } else goto error; /* make sure busmastering is on */ - command = pci_read_config(dev, PCIR_COMMAND, 1); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 1); + pci_enable_busmaster(dev); /* seting up io space */ sc->iores = NULL; - if(command & PCIM_CMD_MEMEN){ - PRINTF(10, "trying MEMIO\n"); - if(pci_get_device(dev) == IPS_COPPERHEAD_DEVICE_ID) - sc->rid = PCIR_BAR(1); - else - sc->rid = PCIR_BAR(0); - sc->iotype = SYS_RES_MEMORY; - sc->iores = bus_alloc_resource_any(dev, sc->iotype, - &sc->rid, RF_ACTIVE); - } - if(!sc->iores && command & PCIM_CMD_PORTEN){ + PRINTF(10, "trying MEMIO\n"); + if(pci_get_device(dev) == IPS_COPPERHEAD_DEVICE_ID) + sc->rid = PCIR_BAR(1); + else + sc->rid = PCIR_BAR(0); + sc->iotype = SYS_RES_MEMORY; + sc->iores = bus_alloc_resource_any(dev, sc->iotype, &sc->rid, + RF_ACTIVE); + if(!sc->iores){ PRINTF(10, "trying PORTIO\n"); sc->rid = PCIR_BAR(0); sc->iotype = SYS_RES_IOPORT; Modified: head/sys/dev/isp/isp_pci.c ============================================================================== --- head/sys/dev/isp/isp_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/isp/isp_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -706,13 +706,10 @@ isp_pci_attach(device_t dev) pcs->irq = pcs->regs = NULL; pcs->rgd = pcs->rtp = pcs->iqd = 0; - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - if (cmd & m1) { - pcs->rtp = (m1 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; - pcs->rgd = (m1 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; - pcs->regs = bus_alloc_resource_any(dev, pcs->rtp, &pcs->rgd, RF_ACTIVE); - } - if (pcs->regs == NULL && (cmd & m2)) { + pcs->rtp = (m1 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; + pcs->rgd = (m1 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; + pcs->regs = bus_alloc_resource_any(dev, pcs->rtp, &pcs->rgd, RF_ACTIVE); + if (pcs->regs == NULL) { pcs->rtp = (m2 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; pcs->rgd = (m2 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; pcs->regs = bus_alloc_resource_any(dev, pcs->rtp, &pcs->rgd, RF_ACTIVE); @@ -891,6 +888,7 @@ isp_pci_attach(device_t dev) /* * Make sure that SERR, PERR, WRITE INVALIDATE and BUSMASTER are set. */ + cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_SEREN | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_INVEN; if (IS_2300(isp)) { /* per QLogic errata */ cmd &= ~PCIM_CMD_INVEN; Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/iwn/if_iwn.c Mon Aug 12 23:30:01 2013 (r254263) @@ -483,12 +483,12 @@ iwn_attach(device_t dev) pci_write_config(dev, 0x41, 0, 1); /* Hardware bug workaround. */ - reg = pci_read_config(dev, PCIR_COMMAND, 1); + reg = pci_read_config(dev, PCIR_COMMAND, 2); if (reg & PCIM_CMD_INTxDIS) { DPRINTF(sc, IWN_DEBUG_RESET, "%s: PCIe INTx Disable set\n", __func__); reg &= ~PCIM_CMD_INTxDIS; - pci_write_config(dev, PCIR_COMMAND, reg, 1); + pci_write_config(dev, PCIR_COMMAND, reg, 2); } /* Enable bus-mastering. */ Modified: head/sys/dev/ixgb/if_ixgb.c ============================================================================== --- head/sys/dev/ixgb/if_ixgb.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ixgb/if_ixgb.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1210,15 +1210,9 @@ ixgb_identify_hardware(struct adapter * device_t dev = adapter->dev; /* Make sure our PCI config space has the necessary stuff set */ + pci_enable_busmaster(dev); adapter->hw.pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((adapter->hw.pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (adapter->hw.pci_cmd_word & PCIM_CMD_MEMEN))) { - device_printf(dev, - "Memory Access and/or Bus Master bits were not set!\n"); - adapter->hw.pci_cmd_word |= - (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, adapter->hw.pci_cmd_word, 2); - } + /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); adapter->hw.device_id = pci_get_device(dev); Modified: head/sys/dev/ixgbe/ixv.c ============================================================================== --- head/sys/dev/ixgbe/ixv.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/ixgbe/ixv.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1561,14 +1561,8 @@ ixv_identify_hardware(struct adapter *ad ** Make sure BUSMASTER is set, on a VM under ** KVM it may not be and will break things. */ + pci_enable_busmaster(dev); pci_cmd_word = pci_read_config(dev, PCIR_COMMAND, 2); - if (!((pci_cmd_word & PCIM_CMD_BUSMASTEREN) && - (pci_cmd_word & PCIM_CMD_MEMEN))) { - INIT_DEBUGOUT("Memory Access and/or Bus Master " - "bits were not set!\n"); - pci_cmd_word |= (PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN); - pci_write_config(dev, PCIR_COMMAND, pci_cmd_word, 2); - } /* Save off the information about this board */ adapter->hw.vendor_id = pci_get_vendor(dev); Modified: head/sys/dev/mfi/mfi_pci.c ============================================================================== --- head/sys/dev/mfi/mfi_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mfi/mfi_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -187,7 +187,6 @@ mfi_pci_attach(device_t dev) { struct mfi_softc *sc; struct mfi_ident *m; - uint32_t command; int count, error; sc = device_get_softc(dev); @@ -196,19 +195,8 @@ mfi_pci_attach(device_t dev) m = mfi_find_ident(dev); sc->mfi_flags = m->flags; - /* Verify that the adapter can be set up in PCI space */ - command = pci_read_config(dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - command = pci_read_config(dev, PCIR_COMMAND, 2); - if ((command & PCIM_CMD_BUSMASTEREN) == 0) { - device_printf(dev, "Can't enable PCI busmaster\n"); - return (ENXIO); - } - if ((command & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "PCI memory window not available\n"); - return (ENXIO); - } + /* Ensure busmastering is enabled */ + pci_enable_busmaster(dev); /* Allocate PCI registers */ if ((sc->mfi_flags & MFI_FLAGS_1064R) || Modified: head/sys/dev/mly/mly.c ============================================================================== --- head/sys/dev/mly/mly.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mly/mly.c Mon Aug 12 23:30:01 2013 (r254263) @@ -333,7 +333,6 @@ static int mly_pci_attach(struct mly_softc *sc) { int i, error; - u_int32_t command; debug_called(1); @@ -342,21 +341,8 @@ mly_pci_attach(struct mly_softc *sc) /* * Verify that the adapter is correctly set up in PCI space. - * - * XXX we shouldn't do this; the PCI code should. */ - command = pci_read_config(sc->mly_dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(sc->mly_dev, PCIR_COMMAND, command, 2); - command = pci_read_config(sc->mly_dev, PCIR_COMMAND, 2); - if (!(command & PCIM_CMD_BUSMASTEREN)) { - mly_printf(sc, "can't enable busmaster feature\n"); - goto fail; - } - if ((command & PCIM_CMD_MEMEN) == 0) { - mly_printf(sc, "memory window not available\n"); - goto fail; - } + pci_enable_busmaster(sc->mly_dev); /* * Allocate the PCI register window. Modified: head/sys/dev/mn/if_mn.c ============================================================================== --- head/sys/dev/mn/if_mn.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mn/if_mn.c Mon Aug 12 23:30:01 2013 (r254263) @@ -1346,9 +1346,9 @@ mn_attach (device_t self) return(ENXIO); } - u = pci_read_config(self, PCIR_COMMAND, 1); + u = pci_read_config(self, PCIR_COMMAND, 2); printf("%x\n", u); - pci_write_config(self, PCIR_COMMAND, u | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MEMEN, 1); + pci_write_config(self, PCIR_COMMAND, u | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN, 2); #if 0 pci_write_config(self, PCIR_COMMAND, 0x02800046, 4); #endif Modified: head/sys/dev/mps/mps_pci.c ============================================================================== --- head/sys/dev/mps/mps_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mps/mps_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -183,7 +183,6 @@ mps_pci_attach(device_t dev) { struct mps_softc *sc; struct mps_ident *m; - uint16_t command; int error; sc = device_get_softc(dev); @@ -193,18 +192,7 @@ mps_pci_attach(device_t dev) sc->mps_flags = m->flags; /* Twiddle basic PCI config bits for a sanity check */ - command = pci_read_config(dev, PCIR_COMMAND, 2); - command |= PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, command, 2); - command = pci_read_config(dev, PCIR_COMMAND, 2); - if ((command & PCIM_CMD_BUSMASTEREN) == 0) { - mps_printf(sc, "Cannot enable PCI busmaster\n"); - return (ENXIO); - } - if ((command & PCIM_CMD_MEMEN) == 0) { - mps_printf(sc, "PCI memory window not available\n"); - return (ENXIO); - } + pci_enable_busmaster(dev); /* Allocate the System Interface Register Set */ sc->mps_regs_rid = PCIR_BAR(1); Modified: head/sys/dev/mpt/mpt_pci.c ============================================================================== --- head/sys/dev/mpt/mpt_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mpt/mpt_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -389,16 +389,11 @@ mpt_pci_attach(device_t dev) /* Print INFO level (if any) if bootverbose is set */ mpt->verbose += (bootverbose != 0)? 1 : 0; } - /* Make sure memory access decoders are enabled */ - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - if ((cmd & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "Memory accesses disabled"); - return (ENXIO); - } /* * Make sure that SERR, PERR, WRITE INVALIDATE and BUSMASTER are set. */ + cmd = pci_read_config(dev, PCIR_COMMAND, 2); cmd |= PCIM_CMD_SERRESPEN | PCIM_CMD_PERRESPEN | PCIM_CMD_BUSMASTEREN | PCIM_CMD_MWRICEN; Modified: head/sys/dev/mwl/if_mwl_pci.c ============================================================================== --- head/sys/dev/mwl/if_mwl_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mwl/if_mwl_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -120,29 +120,6 @@ mwl_pci_probe(device_t dev) return ENXIO; } -static u_int32_t -mwl_pci_setup(device_t dev) -{ - u_int32_t cmd; - - /* - * Enable memory mapping and bus mastering. - */ - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - cmd |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, cmd, 4); - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - if ((cmd & PCIM_CMD_MEMEN) == 0) { - device_printf(dev, "failed to enable memory mapping\n"); - return 0; - } - if ((cmd & PCIM_CMD_BUSMASTEREN) == 0) { - device_printf(dev, "failed to enable bus mastering\n"); - return 0; - } - return 1; -} - static int mwl_pci_attach(device_t dev) { @@ -152,11 +129,8 @@ mwl_pci_attach(device_t dev) sc->sc_dev = dev; - /* - * Enable memory mapping and bus mastering. - */ - if (!mwl_pci_setup(dev)) - return 0; + pci_enable_busmaster(dev); + /* * Setup memory-mapping of PCI registers. */ @@ -285,8 +259,7 @@ mwl_pci_resume(device_t dev) { struct mwl_pci_softc *psc = device_get_softc(dev); - if (!mwl_pci_setup(dev)) - return ENXIO; + pci_enable_busmaster(dev); mwl_resume(&psc->sc_sc); Modified: head/sys/dev/mxge/if_mxge.c ============================================================================== --- head/sys/dev/mxge/if_mxge.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/mxge/if_mxge.c Mon Aug 12 23:30:01 2013 (r254263) @@ -3827,7 +3827,7 @@ mxge_setup_cfg_space(mxge_softc_t *sc) { device_t dev = sc->dev; int reg; - uint16_t cmd, lnk, pectl; + uint16_t lnk, pectl; /* find the PCIe link width and set max read request to 4KB*/ if (pci_find_cap(dev, PCIY_EXPRESS, ®) == 0) { @@ -3847,9 +3847,6 @@ mxge_setup_cfg_space(mxge_softc_t *sc) /* Enable DMA and Memory space access */ pci_enable_busmaster(dev); - cmd = pci_read_config(dev, PCIR_COMMAND, 2); - cmd |= PCIM_CMD_MEMEN; - pci_write_config(dev, PCIR_COMMAND, cmd, 2); } static uint32_t Modified: head/sys/dev/pccbb/pccbb_pci.c ============================================================================== --- head/sys/dev/pccbb/pccbb_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/pccbb/pccbb_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -471,10 +471,7 @@ cbb_chipinit(struct cbb_softc *sc) pci_write_config(sc->dev, PCIR_SUBBUS_2, sc->subbus, 1); /* Enable memory access */ - PCI_MASK_CONFIG(sc->dev, PCIR_COMMAND, - | PCIM_CMD_MEMEN - | PCIM_CMD_PORTEN - | PCIM_CMD_BUSMASTEREN, 2); + pci_enable_busmaster(sc->dev); /* disable Legacy IO */ switch (sc->chipset) { Modified: head/sys/dev/pst/pst-pci.c ============================================================================== --- head/sys/dev/pst/pst-pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/pst/pst-pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -88,9 +88,7 @@ iop_pci_attach(device_t dev) RF_SHAREABLE | RF_ACTIVE); /* now setup the infrastructure to talk to the device */ - pci_write_config(dev, PCIR_COMMAND, - pci_read_config(dev, PCIR_COMMAND, 1) | - PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN, 1); + pci_enable_busmaster(dev); sc->ibase = rman_get_virtual(sc->r_mem); sc->reg = (struct i2o_registers *)sc->ibase; Modified: head/sys/dev/rp/rp_pci.c ============================================================================== --- head/sys/dev/rp/rp_pci.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/rp/rp_pci.c Mon Aug 12 23:30:01 2013 (r254263) @@ -151,7 +151,6 @@ rp_pciattach(device_t dev) CONTROLLER_t *ctlp; int unit; int retval; - u_int32_t stcmd; ctlp = device_get_softc(dev); bzero(ctlp, sizeof(*ctlp)); @@ -161,13 +160,6 @@ rp_pciattach(device_t dev) ctlp->aiop2off = rp_pci_aiop2off; ctlp->ctlmask = rp_pci_ctlmask; - /* Wake up the device. */ - stcmd = pci_read_config(dev, PCIR_COMMAND, 4); - if ((stcmd & PCIM_CMD_PORTEN) == 0) { - stcmd |= (PCIM_CMD_PORTEN); - pci_write_config(dev, PCIR_COMMAND, 4, stcmd); - } - /* The IO ports of AIOPs for a PCI controller are continuous. */ ctlp->io_num = 1; ctlp->io_rid = malloc(sizeof(*(ctlp->io_rid)) * ctlp->io_num, M_DEVBUF, M_NOWAIT | M_ZERO); Modified: head/sys/dev/safe/safe.c ============================================================================== --- head/sys/dev/safe/safe.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/safe/safe.c Mon Aug 12 23:30:01 2013 (r254263) @@ -220,28 +220,15 @@ safe_attach(device_t dev) { struct safe_softc *sc = device_get_softc(dev); u_int32_t raddr; - u_int32_t cmd, i, devinfo; + u_int32_t i, devinfo; int rid; bzero(sc, sizeof (*sc)); sc->sc_dev = dev; /* XXX handle power management */ - - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - cmd |= PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN; - pci_write_config(dev, PCIR_COMMAND, cmd, 4); - cmd = pci_read_config(dev, PCIR_COMMAND, 4); - if (!(cmd & PCIM_CMD_MEMEN)) { - device_printf(dev, "failed to enable memory mapping\n"); - goto bad; - } - - if (!(cmd & PCIM_CMD_BUSMASTEREN)) { - device_printf(dev, "failed to enable bus mastering\n"); - goto bad; - } + pci_enable_busmaster(dev); /* * Setup memory-mapping of PCI registers. Modified: head/sys/dev/sound/pci/als4000.c ============================================================================== --- head/sys/dev/sound/pci/als4000.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/als4000.c Mon Aug 12 23:30:01 2013 (r254263) @@ -806,16 +806,13 @@ static int als_pci_attach(device_t dev) { struct sc_info *sc; - u_int32_t data; char status[SND_STATUSLEN]; sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO); sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_als4000 softc"); sc->dev = dev; - data = pci_read_config(dev, PCIR_COMMAND, 2); - data |= (PCIM_CMD_PORTEN | PCIM_CMD_MEMEN | PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, data, 2); + pci_enable_busmaster(dev); /* * By default the power to the various components on the * ALS4000 is entirely controlled by the pci powerstate. We Modified: head/sys/dev/sound/pci/aureal.c ============================================================================== --- head/sys/dev/sound/pci/aureal.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/aureal.c Mon Aug 12 23:30:01 2013 (r254263) @@ -550,7 +550,6 @@ au_pci_probe(device_t dev) static int au_pci_attach(device_t dev) { - u_int32_t data; struct au_info *au; int type[10]; int regid[10]; @@ -565,10 +564,7 @@ au_pci_attach(device_t dev) au = malloc(sizeof(*au), M_DEVBUF, M_WAITOK | M_ZERO); au->unit = device_get_unit(dev); - data = pci_read_config(dev, PCIR_COMMAND, 2); - data |= (PCIM_CMD_PORTEN|PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, data, 2); - data = pci_read_config(dev, PCIR_COMMAND, 2); + pci_enable_busmaster(dev); j=0; /* XXX dfr: is this strictly necessary? */ Modified: head/sys/dev/sound/pci/cmi.c ============================================================================== --- head/sys/dev/sound/pci/cmi.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/cmi.c Mon Aug 12 23:30:01 2013 (r254263) @@ -935,15 +935,11 @@ static int cmi_attach(device_t dev) { struct sc_info *sc; - u_int32_t data; char status[SND_STATUSLEN]; sc = malloc(sizeof(*sc), M_DEVBUF, M_WAITOK | M_ZERO); sc->lock = snd_mtxcreate(device_get_nameunit(dev), "snd_cmi softc"); - data = pci_read_config(dev, PCIR_COMMAND, 2); - data |= (PCIM_CMD_PORTEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, data, 2); - data = pci_read_config(dev, PCIR_COMMAND, 2); + pci_enable_busmaster(dev); sc->dev = dev; sc->regid = PCIR_BAR(0); Modified: head/sys/dev/sound/pci/cs4281.c ============================================================================== --- head/sys/dev/sound/pci/cs4281.c Mon Aug 12 22:54:38 2013 (r254262) +++ head/sys/dev/sound/pci/cs4281.c Mon Aug 12 23:30:01 2013 (r254263) @@ -760,16 +760,13 @@ cs4281_pci_attach(device_t dev) { struct sc_info *sc; struct ac97_info *codec = NULL; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 00:25:40 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 57764884; Tue, 13 Aug 2013 00:25:40 +0000 (UTC) (envelope-from jfv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 45B5E2750; Tue, 13 Aug 2013 00:25:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D0PeL7056271; Tue, 13 Aug 2013 00:25:40 GMT (envelope-from jfv@svn.freebsd.org) Received: (from jfv@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D0Pe4Q056270; Tue, 13 Aug 2013 00:25:40 GMT (envelope-from jfv@svn.freebsd.org) Message-Id: <201308130025.r7D0Pe4Q056270@svn.freebsd.org> From: Jack F Vogel Date: Tue, 13 Aug 2013 00:25:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254264 - head/sys/dev/e1000 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 00:25:40 -0000 Author: jfv Date: Tue Aug 13 00:25:39 2013 New Revision: 254264 URL: http://svnweb.freebsd.org/changeset/base/254264 Log: Alter the mq_start routine to do a TRYLOCK and call to the locked routine rather than just queueing. The former code was an attempt at getting UDP performance up, but there have been customer reports of problems with it, so the ixgbe approach seems the best solution for now. Modified: head/sys/dev/e1000/if_igb.c Modified: head/sys/dev/e1000/if_igb.c ============================================================================== --- head/sys/dev/e1000/if_igb.c Mon Aug 12 23:30:01 2013 (r254263) +++ head/sys/dev/e1000/if_igb.c Tue Aug 13 00:25:39 2013 (r254264) @@ -972,7 +972,13 @@ igb_mq_start(struct ifnet *ifp, struct m que = &adapter->queues[i]; err = drbr_enqueue(ifp, txr->br, m); - taskqueue_enqueue(que->tq, &txr->txq_task); + if (err) + return (err); + if (IGB_TX_TRYLOCK(txr)) { + err = igb_mq_start_locked(ifp, txr); + IGB_TX_UNLOCK(txr); + } else + taskqueue_enqueue(que->tq, &txr->txq_task); return (err); } From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 02:31:46 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 99932F49; Tue, 13 Aug 2013 02:31:46 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 873ED2E5C; Tue, 13 Aug 2013 02:31:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D2Vkav003908; Tue, 13 Aug 2013 02:31:46 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D2VkBn003907; Tue, 13 Aug 2013 02:31:46 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308130231.r7D2VkBn003907@svn.freebsd.org> From: Glen Barber Date: Tue, 13 Aug 2013 02:31:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254265 - head/usr.sbin/bsdinstall/scripts X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 02:31:46 -0000 Author: gjb Date: Tue Aug 13 02:31:46 2013 New Revision: 254265 URL: http://svnweb.freebsd.org/changeset/base/254265 Log: Make sure bootonly.iso for -BETAs and -RCs use the releases/ directory on the FTP mirrors to fetch distributions, since these are always pushed to releases/ during the release cycle. MFC after: 3 days X-MFC-To: stable/9, releng/9.2 Modified: head/usr.sbin/bsdinstall/scripts/mirrorselect Modified: head/usr.sbin/bsdinstall/scripts/mirrorselect ============================================================================== --- head/usr.sbin/bsdinstall/scripts/mirrorselect Tue Aug 13 00:25:39 2013 (r254264) +++ head/usr.sbin/bsdinstall/scripts/mirrorselect Tue Aug 13 02:31:46 2013 (r254265) @@ -162,7 +162,7 @@ exec 3>&- _UNAME_R=`uname -r` case ${_UNAME_R} in - *-CURRENT|*-STABLE|*-BETA*|*-PRERELEASE|*-RC*) + *-CURRENT|*-STABLE|*-PRERELEASE) RELDIR="snapshots" ;; *) From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 03:07:50 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 96D11747; Tue, 13 Aug 2013 03:07:50 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 838562109; Tue, 13 Aug 2013 03:07:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D37oPI017341; Tue, 13 Aug 2013 03:07:50 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D37nZl017329; Tue, 13 Aug 2013 03:07:49 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308130307.r7D37nZl017329@svn.freebsd.org> From: Mark Johnston Date: Tue, 13 Aug 2013 03:07:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254266 - in head: share/man/man9 sys/kern sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 03:07:50 -0000 Author: markj Date: Tue Aug 13 03:07:49 2013 New Revision: 254266 URL: http://svnweb.freebsd.org/changeset/base/254266 Log: Add event handlers for module load and unload events. The load handlers are called after the module has been loaded, and the unload handlers are called before the module is unloaded. Moreover, the module unload handlers may return an error to prevent the unload from proceeding. Reviewed by: avg MFC after: 2 weeks Modified: head/share/man/man9/EVENTHANDLER.9 head/sys/kern/kern_linker.c head/sys/sys/eventhandler.h Modified: head/share/man/man9/EVENTHANDLER.9 ============================================================================== --- head/share/man/man9/EVENTHANDLER.9 Tue Aug 13 02:31:46 2013 (r254265) +++ head/share/man/man9/EVENTHANDLER.9 Tue Aug 13 03:07:49 2013 (r254266) @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" $FreeBSD$ .\" -.Dd May 11, 2012 +.Dd August 1, 2013 .Dt EVENTHANDLER 9 .Os .Sh NAME @@ -199,6 +199,12 @@ Callbacks invoked when a new network int Callbacks invoked when a network interface is taken down. .It Vt bpf_track Callbacks invoked when a BPF listener attaches to/detaches from network interface. +.It Vt mod_load +Callbacks invoked after a module has been loaded. +.It Vt mod_unload +Callbacks invoked before a module is about to be unloaded. +These callbacks may be used to return an error and prevent the unload from +proceeding. .It Vt power_profile_change Callbacks invoked when the power profile of the system changes. .It Vt process_exec Modified: head/sys/kern/kern_linker.c ============================================================================== --- head/sys/kern/kern_linker.c Tue Aug 13 02:31:46 2013 (r254265) +++ head/sys/kern/kern_linker.c Tue Aug 13 03:07:49 2013 (r254266) @@ -45,6 +45,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1046,6 +1047,9 @@ kern_kldload(struct thread *td, const ch lf->userrefs++; if (fileid != NULL) *fileid = lf->id; + + EVENTHANDLER_INVOKE(mod_load, lf); + #ifdef HWPMC_HOOKS KLD_DOWNGRADE(); pkm.pm_file = lf->filename; @@ -1101,8 +1105,10 @@ kern_kldunload(struct thread *td, int fi if (lf) { KLD_DPF(FILE, ("kldunload: lf->userrefs=%d\n", lf->userrefs)); - /* Check if there are DTrace probes enabled on this file. */ - if (lf->nenabled > 0) { + EVENTHANDLER_INVOKE(mod_unload, lf, &error); + if (error != 0) + error = EBUSY; + else if (lf->nenabled > 0) { printf("kldunload: attempt to unload file that has" " DTrace probes enabled\n"); error = EBUSY; Modified: head/sys/sys/eventhandler.h ============================================================================== --- head/sys/sys/eventhandler.h Tue Aug 13 02:31:46 2013 (r254265) +++ head/sys/sys/eventhandler.h Tue Aug 13 03:07:49 2013 (r254266) @@ -266,4 +266,11 @@ EVENTHANDLER_DECLARE(nmbclusters_change, EVENTHANDLER_DECLARE(nmbufs_change, uma_zone_chfn); EVENTHANDLER_DECLARE(maxsockets_change, uma_zone_chfn); +/* Module load and unload events */ +struct linker_file; +typedef void (*mod_load_fn)(void *, struct linker_file *); +typedef void (*mod_unload_fn)(void *, struct linker_file *, int *); +EVENTHANDLER_DECLARE(mod_load, mod_load_fn); +EVENTHANDLER_DECLARE(mod_unload, mod_unload_fn); + #endif /* SYS_EVENTHANDLER_H */ From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 03:09:00 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D6489891; Tue, 13 Aug 2013 03:09:00 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C3DF82117; Tue, 13 Aug 2013 03:09:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D390wL017570; Tue, 13 Aug 2013 03:09:00 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D390LF017567; Tue, 13 Aug 2013 03:09:00 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308130309.r7D390LF017567@svn.freebsd.org> From: Mark Johnston Date: Tue, 13 Aug 2013 03:09:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254267 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 03:09:00 -0000 Author: markj Date: Tue Aug 13 03:09:00 2013 New Revision: 254267 URL: http://svnweb.freebsd.org/changeset/base/254267 Log: Remove some unused fields from struct linker_file. They were added in r172862 for use by the DTrace SDT framework but don't seem to have ever been used. MFC after: 2 weeks Modified: head/sys/kern/kern_linker.c head/sys/sys/linker.h Modified: head/sys/kern/kern_linker.c ============================================================================== --- head/sys/kern/kern_linker.c Tue Aug 13 03:07:49 2013 (r254266) +++ head/sys/kern/kern_linker.c Tue Aug 13 03:09:00 2013 (r254267) @@ -583,8 +583,6 @@ linker_make_file(const char *pathname, l lf->ndeps = 0; lf->deps = NULL; lf->loadcnt = ++loadcnt; - lf->sdt_probes = NULL; - lf->sdt_nprobes = 0; STAILQ_INIT(&lf->common); TAILQ_INIT(&lf->modules); TAILQ_INSERT_TAIL(&linker_files, lf, link); Modified: head/sys/sys/linker.h ============================================================================== --- head/sys/sys/linker.h Tue Aug 13 03:07:49 2013 (r254266) +++ head/sys/sys/linker.h Tue Aug 13 03:09:00 2013 (r254267) @@ -92,10 +92,6 @@ struct linker_file { */ int nenabled; /* number of enabled probes. */ int fbt_nentries; /* number of fbt entries created. */ - void *sdt_probes; - int sdt_nentries; - size_t sdt_nprobes; - size_t sdt_size; }; /* From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 03:10:41 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id AE332AB7; Tue, 13 Aug 2013 03:10:41 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 99F99215B; Tue, 13 Aug 2013 03:10:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D3Af8E019777; Tue, 13 Aug 2013 03:10:41 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D3Adc4019765; Tue, 13 Aug 2013 03:10:39 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308130310.r7D3Adc4019765@svn.freebsd.org> From: Mark Johnston Date: Tue, 13 Aug 2013 03:10:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254268 - in head/sys: cddl/contrib/opensolaris/uts/common/dtrace cddl/contrib/opensolaris/uts/common/sys cddl/dev/dtrace cddl/dev/fbt cddl/dev/sdt kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 03:10:41 -0000 Author: markj Date: Tue Aug 13 03:10:39 2013 New Revision: 254268 URL: http://svnweb.freebsd.org/changeset/base/254268 Log: FreeBSD's DTrace implementation has a few problems with respect to handling probes declared in a kernel module when that module is unloaded. In particular, * Unloading a module with active SDT probes will cause a panic. [1] * A module's (FBT/SDT) probes aren't destroyed when the module is unloaded; trying to use them after the fact will generally cause a panic. This change fixes both problems by porting the DTrace module load/unload handlers from illumos and registering them with the corresponding EVENTHANDLER(9) handlers. This allows the DTrace framework to destroy all probes defined in a module when that module is unloaded, and to prevent a module unload from proceeding if some of its probes are active. The latter problem has already been fixed for FBT probes by checking lf->nenabled in kern_kldunload(), but moving the check into the DTrace framework generalizes it to all kernel providers and also fixes a race in the current implementation (since a probe may be activated between the check and the call to linker_file_unload()). Additionally, the SDT implementation has been reworked to define SDT providers/probes/argtypes in linker sets rather than using SYSINIT/SYSUNINIT to create and destroy SDT probes when a module is loaded or unloaded. This simplifies things quite a bit since it means that pretty much all of the SDT code can live in sdt.ko, and since it becomes easier to integrate SDT with the DTrace framework. Furthermore, this allows FreeBSD to be quite flexible in that SDT providers spanning multiple modules can be created on the fly when a module is loaded; at the moment it looks like illumos' SDT implementation requires all SDT probes to be statically defined in a single kernel table. PR: 166927, 166926, 166928 Reported by: davide [1] Reviewed by: avg, trociny (earlier version) MFC after: 1 month Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h head/sys/cddl/dev/dtrace/dtrace_load.c head/sys/cddl/dev/dtrace/dtrace_unload.c head/sys/cddl/dev/fbt/fbt.c head/sys/cddl/dev/sdt/sdt.c head/sys/kern/kern_linker.c head/sys/kern/kern_sdt.c head/sys/sys/sdt.h Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Tue Aug 13 03:10:39 2013 (r254268) @@ -116,6 +116,7 @@ #if !defined(sun) #include #include +#include #include #include #include @@ -240,6 +241,8 @@ int dtrace_in_probe; /* non-zero if exe #if defined(__i386__) || defined(__amd64__) || defined(__mips__) || defined(__powerpc__) uintptr_t dtrace_in_probe_addr; /* Address of invop when already in probe */ #endif +static eventhandler_tag dtrace_modload_tag; +static eventhandler_tag dtrace_modunload_tag; #endif /* @@ -8098,19 +8101,6 @@ dtrace_probe_description(const dtrace_pr (void) strncpy(pdp->dtpd_name, prp->dtpr_name, DTRACE_NAMELEN - 1); } -#if !defined(sun) -static int -dtrace_probe_provide_cb(linker_file_t lf, void *arg) -{ - dtrace_provider_t *prv = (dtrace_provider_t *) arg; - - prv->dtpv_pops.dtps_provide_module(prv->dtpv_arg, lf); - - return(0); -} -#endif - - /* * Called to indicate that a probe -- or probes -- should be provided by a * specfied provider. If the specified description is NULL, the provider will @@ -8166,8 +8156,6 @@ dtrace_probe_provide(dtrace_probedesc_t } while ((ctl = ctl->mod_next) != &modules); mutex_exit(&mod_lock); -#else - (void) linker_file_foreach(dtrace_probe_provide_cb, prv); #endif } while (all && (prv = prv->dtpv_next) != NULL); } @@ -15152,7 +15140,6 @@ dtrace_helpers_duplicate(proc_t *from, p dtrace_helper_provider_register(to, newhelp, NULL); } -#if defined(sun) /* * DTrace Hook Functions */ @@ -15166,7 +15153,9 @@ dtrace_module_loaded(modctl_t *ctl) mutex_enter(&mod_lock); #endif +#if defined(sun) ASSERT(ctl->mod_busy); +#endif /* * We're going to call each providers per-module provide operation @@ -15214,12 +15203,29 @@ dtrace_module_loaded(modctl_t *ctl) } static void +#if defined(sun) dtrace_module_unloaded(modctl_t *ctl) +#else +dtrace_module_unloaded(modctl_t *ctl, int *error) +#endif { dtrace_probe_t template, *probe, *first, *next; dtrace_provider_t *prov; +#if !defined(sun) + char modname[DTRACE_MODNAMELEN]; + size_t len; +#endif +#if defined(sun) template.dtpr_mod = ctl->mod_modname; +#else + /* Handle the fact that ctl->filename may end in ".ko". */ + strlcpy(modname, ctl->filename, sizeof(modname)); + len = strlen(ctl->filename); + if (len > 3 && strcmp(modname + len - 3, ".ko") == 0) + modname[len - 3] = '\0'; + template.dtpr_mod = modname; +#endif mutex_enter(&dtrace_provider_lock); #if defined(sun) @@ -15227,6 +15233,18 @@ dtrace_module_unloaded(modctl_t *ctl) #endif mutex_enter(&dtrace_lock); +#if !defined(sun) + if (ctl->nenabled > 0) { + /* Don't allow unloads if a probe is enabled. */ + mutex_exit(&dtrace_provider_lock); + mutex_exit(&dtrace_lock); + *error = -1; + printf( + "kldunload: attempt to unload module that has DTrace probes enabled\n"); + return; + } +#endif + if (dtrace_bymod == NULL) { /* * The DTrace module is loaded (obviously) but not attached; @@ -15260,8 +15278,13 @@ dtrace_module_unloaded(modctl_t *ctl) * probe, either. */ if (dtrace_err_verbose) { +#if defined(sun) cmn_err(CE_WARN, "unloaded module '%s' had " "enabled probes", ctl->mod_modname); +#else + cmn_err(CE_WARN, "unloaded module '%s' had " + "enabled probes", modname); +#endif } return; @@ -15304,7 +15327,11 @@ dtrace_module_unloaded(modctl_t *ctl) kmem_free(probe->dtpr_mod, strlen(probe->dtpr_mod) + 1); kmem_free(probe->dtpr_func, strlen(probe->dtpr_func) + 1); kmem_free(probe->dtpr_name, strlen(probe->dtpr_name) + 1); +#if defined(sun) vmem_free(dtrace_arena, (void *)(uintptr_t)probe->dtpr_id, 1); +#else + free_unr(dtrace_arena, probe->dtpr_id); +#endif kmem_free(probe, sizeof (dtrace_probe_t)); } @@ -15315,6 +15342,26 @@ dtrace_module_unloaded(modctl_t *ctl) mutex_exit(&dtrace_provider_lock); } +#if !defined(sun) +static void +dtrace_mod_load(void *arg __unused, linker_file_t lf) +{ + + dtrace_module_loaded(lf); +} + +static void +dtrace_mod_unload(void *arg __unused, linker_file_t lf, int *error) +{ + + if (*error != 0) + /* We already have an error, so don't do anything. */ + return; + dtrace_module_unloaded(lf, error); +} +#endif + +#if defined(sun) static void dtrace_suspend(void) { Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Tue Aug 13 03:10:39 2013 (r254268) @@ -2312,8 +2312,10 @@ extern void dtrace_membar_producer(void) extern void dtrace_membar_consumer(void); extern void (*dtrace_cpu_init)(processorid_t); +#if defined(sun) extern void (*dtrace_modload)(modctl_t *); extern void (*dtrace_modunload)(modctl_t *); +#endif extern void (*dtrace_helpers_cleanup)(void); extern void (*dtrace_helpers_fork)(proc_t *parent, proc_t *child); extern void (*dtrace_cpustart_init)(void); Modified: head/sys/cddl/dev/dtrace/dtrace_load.c ============================================================================== --- head/sys/cddl/dev/dtrace/dtrace_load.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/cddl/dev/dtrace/dtrace_load.c Tue Aug 13 03:10:39 2013 (r254268) @@ -56,6 +56,12 @@ dtrace_load(void *dummy) /* Hang our hook for exceptions. */ dtrace_invop_init(); + /* Register callbacks for module load and unload events. */ + dtrace_modload_tag = EVENTHANDLER_REGISTER(mod_load, + dtrace_mod_load, NULL, EVENTHANDLER_PRI_ANY); + dtrace_modunload_tag = EVENTHANDLER_REGISTER(mod_unload, + dtrace_mod_unload, NULL, EVENTHANDLER_PRI_ANY); + /* * Initialise the mutexes without 'witness' because the dtrace * code is mostly written to wait for memory. To have the Modified: head/sys/cddl/dev/dtrace/dtrace_unload.c ============================================================================== --- head/sys/cddl/dev/dtrace/dtrace_unload.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/cddl/dev/dtrace/dtrace_unload.c Tue Aug 13 03:10:39 2013 (r254268) @@ -67,6 +67,8 @@ dtrace_unload() } dtrace_provider = NULL; + EVENTHANDLER_DEREGISTER(mod_load, dtrace_modload_tag); + EVENTHANDLER_DEREGISTER(mod_unload, dtrace_modunload_tag); if ((state = dtrace_anon_grab()) != NULL) { /* Modified: head/sys/cddl/dev/fbt/fbt.c ============================================================================== --- head/sys/cddl/dev/fbt/fbt.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/cddl/dev/fbt/fbt.c Tue Aug 13 03:10:39 2013 (r254268) @@ -1335,6 +1335,15 @@ fbt_getargdesc(void *arg __unused, dtrac return; } +static int +fbt_linker_file_cb(linker_file_t lf, void *arg) +{ + + fbt_provide_module(arg, lf); + + return (0); +} + static void fbt_load(void *dummy) { @@ -1359,8 +1368,10 @@ fbt_load(void *dummy) if (dtrace_register("fbt", &fbt_attr, DTRACE_PRIV_USER, NULL, &fbt_pops, NULL, &fbt_id) != 0) return; -} + /* Create probes for the kernel and already-loaded modules. */ + linker_file_foreach(fbt_linker_file_cb, NULL); +} static int fbt_unload() Modified: head/sys/cddl/dev/sdt/sdt.c ============================================================================== --- head/sys/cddl/dev/sdt/sdt.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/cddl/dev/sdt/sdt.c Tue Aug 13 03:10:39 2013 (r254268) @@ -24,36 +24,44 @@ * */ -#ifndef KDTRACE_HOOKS -#define KDTRACE_HOOKS -#endif +#include "opt_kdtrace.h" #include #include #include + #include +#include #include #include -#include #include +#include +#include +#include #include #include - -#include +#include #include -#define SDT_ADDR2NDX(addr) (((uintptr_t)(addr)) >> 4) +#include +#include -static d_open_t sdt_open; -static int sdt_unload(void); +/* DTrace methods. */ static void sdt_getargdesc(void *, dtrace_id_t, void *, dtrace_argdesc_t *); static void sdt_provide_probes(void *, dtrace_probedesc_t *); static void sdt_destroy(void *, dtrace_id_t, void *); static void sdt_enable(void *, dtrace_id_t, void *); static void sdt_disable(void *, dtrace_id_t, void *); + +static d_open_t sdt_open; static void sdt_load(void *); -static int sdt_provider_unreg_callback(struct sdt_provider *prov, - void *arg); +static int sdt_unload(void *); +static void sdt_create_provider(struct sdt_provider *); +static void sdt_create_probe(struct sdt_probe *); +static void sdt_modload(void *, struct linker_file *); +static void sdt_modunload(void *, struct linker_file *, int *); + +static MALLOC_DEFINE(M_SDT, "SDT", "DTrace SDT providers"); static struct cdevsw sdt_cdevsw = { .d_version = D_VERSION, @@ -79,141 +87,261 @@ static dtrace_pops_t sdt_pops = { sdt_getargdesc, NULL, NULL, - sdt_destroy + sdt_destroy, }; -static struct cdev *sdt_cdev; +static struct cdev *sdt_cdev; -static int -sdt_argtype_callback(struct sdt_argtype *argtype, void *arg) -{ - dtrace_argdesc_t *desc = arg; +static TAILQ_HEAD(, sdt_provider) sdt_prov_list; - if (desc->dtargd_ndx == argtype->ndx) { - desc->dtargd_mapping = desc->dtargd_ndx; /* XXX */ - strlcpy(desc->dtargd_native, argtype->type, - sizeof(desc->dtargd_native)); - desc->dtargd_xlate[0] = '\0'; /* XXX */ - } - - return (0); -} +eventhandler_tag modload_tag; +eventhandler_tag modunload_tag; static void -sdt_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc) +sdt_create_provider(struct sdt_provider *prov) { - struct sdt_probe *probe = parg; + struct sdt_provider *curr, *newprov; - if (desc->dtargd_ndx < probe->n_args) - (void) (sdt_argtype_listall(probe, sdt_argtype_callback, desc)); - else - desc->dtargd_ndx = DTRACE_ARGNONE; + TAILQ_FOREACH(curr, &sdt_prov_list, prov_entry) + if (strcmp(prov->name, curr->name) == 0) { + /* The provider has already been defined. */ + curr->sdt_refs++; + return; + } - return; + /* + * Make a copy of prov so that we don't lose fields if its module is + * unloaded but the provider isn't destroyed. This could happen with + * a provider that spans multiple modules. + */ + newprov = malloc(sizeof(*newprov), M_SDT, M_WAITOK | M_ZERO); + newprov->name = strdup(prov->name, M_SDT); + prov->sdt_refs = newprov->sdt_refs = 1; + TAILQ_INIT(&newprov->probe_list); + + TAILQ_INSERT_TAIL(&sdt_prov_list, newprov, prov_entry); + + (void)dtrace_register(newprov->name, &sdt_attr, DTRACE_PRIV_USER, NULL, + &sdt_pops, NULL, (dtrace_provider_id_t *)&newprov->id); + prov->id = newprov->id; } -static int -sdt_probe_callback(struct sdt_probe *probe, void *arg __unused) +static void +sdt_create_probe(struct sdt_probe *probe) { - struct sdt_provider *prov = probe->prov; - char mod[64]; - char func[64]; - char name[64]; + struct sdt_provider *prov; + char mod[DTRACE_MODNAMELEN]; + char func[DTRACE_FUNCNAMELEN]; + char name[DTRACE_NAMELEN]; + size_t len; + + TAILQ_FOREACH(prov, &sdt_prov_list, prov_entry) + if (strcmp(prov->name, probe->prov->name) == 0) + break; + + KASSERT(prov != NULL, ("probe defined without a provider")); + + /* If no module name was specified, use the module filename. */ + if (*probe->mod == 0) { + len = strlcpy(mod, probe->sdtp_lf->filename, sizeof(mod)); + if (len > 3 && strcmp(mod + len - 3, ".ko") == 0) + mod[len - 3] = '\0'; + } else + strlcpy(mod, probe->mod, sizeof(mod)); /* * Unfortunately this is necessary because the Solaris DTrace * code mixes consts and non-consts with casts to override * the incompatibilies. On FreeBSD, we use strict warnings - * in gcc, so we have to respect const vs non-const. + * in the C compiler, so we have to respect const vs non-const. */ - strlcpy(mod, probe->mod, sizeof(mod)); strlcpy(func, probe->func, sizeof(func)); strlcpy(name, probe->name, sizeof(name)); - if (dtrace_probe_lookup(prov->id, mod, func, name) != 0) - return (0); + if (dtrace_probe_lookup(prov->id, mod, func, name) != DTRACE_IDNONE) + return; - (void) dtrace_probe_create(prov->id, probe->mod, probe->func, - probe->name, 1, probe); + TAILQ_INSERT_TAIL(&prov->probe_list, probe, probe_entry); - return (0); + (void)dtrace_probe_create(prov->id, mod, func, name, 1, probe); } -static int -sdt_provider_entry(struct sdt_provider *prov, void *arg) +/* Probes are created through the SDT module load/unload hook. */ +static void +sdt_provide_probes(void *arg, dtrace_probedesc_t *desc) { - return (sdt_probe_listall(prov, sdt_probe_callback, NULL)); } static void -sdt_provide_probes(void *arg, dtrace_probedesc_t *desc) +sdt_enable(void *arg __unused, dtrace_id_t id, void *parg) { - if (desc != NULL) - return; + struct sdt_probe *probe = parg; - (void) sdt_provider_listall(sdt_provider_entry, NULL); + probe->id = id; + probe->sdtp_lf->nenabled++; } static void -sdt_destroy(void *arg, dtrace_id_t id, void *parg) +sdt_disable(void *arg __unused, dtrace_id_t id, void *parg) { - /* Nothing to do here. */ + struct sdt_probe *probe = parg; + + KASSERT(probe->sdtp_lf->nenabled > 0, ("no probes enabled")); + + probe->id = 0; + probe->sdtp_lf->nenabled--; } static void -sdt_enable(void *arg, dtrace_id_t id, void *parg) +sdt_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc) { + struct sdt_argtype *argtype; struct sdt_probe *probe = parg; - probe->id = id; + if (desc->dtargd_ndx < probe->n_args) { + TAILQ_FOREACH(argtype, &probe->argtype_list, argtype_entry) { + if (desc->dtargd_ndx == argtype->ndx) { + /* XXX */ + desc->dtargd_mapping = desc->dtargd_ndx; + strlcpy(desc->dtargd_native, argtype->type, + sizeof(desc->dtargd_native)); + desc->dtargd_xlate[0] = '\0'; /* XXX */ + } + } + } else + desc->dtargd_ndx = DTRACE_ARGNONE; } static void -sdt_disable(void *arg, dtrace_id_t id, void *parg) +sdt_destroy(void *arg, dtrace_id_t id, void *parg) { - struct sdt_probe *probe = parg; + struct sdt_probe *probe; - probe->id = 0; + probe = parg; + TAILQ_REMOVE(&probe->prov->probe_list, probe, probe_entry); +} + +/* + * Called from the kernel linker when a module is loaded, before + * dtrace_module_loaded() is called. This is done so that it's possible to + * register new providers when modules are loaded. We cannot do this in the + * provide_module method since it's called with the provider lock held + * and dtrace_register() will try to acquire it again. + */ +static void +sdt_modload(void *arg __unused, struct linker_file *lf) +{ + struct sdt_provider **prov, **begin, **end; + struct sdt_probe **probe, **p_begin, **p_end; + struct sdt_argtype **argtype, **a_begin, **a_end; + + if (linker_file_lookup_set(lf, "sdt_providers_set", &begin, &end, NULL)) + return; + for (prov = begin; prov < end; prov++) + sdt_create_provider(*prov); + + if (linker_file_lookup_set(lf, "sdt_probes_set", &p_begin, &p_end, + NULL)) + return; + for (probe = p_begin; probe < p_end; probe++) { + (*probe)->sdtp_lf = lf; + sdt_create_probe(*probe); + TAILQ_INIT(&(*probe)->argtype_list); + } + + if (linker_file_lookup_set(lf, "sdt_argtypes_set", &a_begin, &a_end, + NULL)) + return; + for (argtype = a_begin; argtype < a_end; argtype++) { + (*argtype)->probe->n_args++; + TAILQ_INSERT_TAIL(&(*argtype)->probe->argtype_list, *argtype, + argtype_entry); + } +} + +static void +sdt_modunload(void *arg __unused, struct linker_file *lf, int *error __unused) +{ + struct sdt_provider *prov, **curr, **begin, **end, *tmp; + + if (*error != 0) + /* We already have an error, so don't do anything. */ + return; + else if (linker_file_lookup_set(lf, "sdt_providers_set", &begin, &end, NULL)) + /* No DTrace providers are declared in this module. */ + return; + + /* + * Go through all the providers declared in this module and unregister + * any that aren't declared in another loaded module. + */ + for (curr = begin; curr < end; curr++) { + TAILQ_FOREACH_SAFE(prov, &sdt_prov_list, prov_entry, tmp) { + if (strcmp(prov->name, (*curr)->name) == 0) { + if (prov->sdt_refs == 1) { + TAILQ_REMOVE(&sdt_prov_list, prov, + prov_entry); + dtrace_unregister(prov->id); + free(prov->name, M_SDT); + free(prov, M_SDT); + } else + prov->sdt_refs--; + break; + } + } + } } static int -sdt_provider_reg_callback(struct sdt_provider *prov, void *arg __unused) +sdt_linker_file_cb(linker_file_t lf, void *arg __unused) { - return (dtrace_register(prov->name, &sdt_attr, DTRACE_PRIV_USER, - NULL, &sdt_pops, NULL, (dtrace_provider_id_t *) &prov->id)); + + sdt_modload(NULL, lf); + + return (0); } static void -sdt_load(void *dummy) +sdt_load(void *arg __unused) { + + TAILQ_INIT(&sdt_prov_list); + /* Create the /dev/dtrace/sdt entry. */ sdt_cdev = make_dev(&sdt_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "dtrace/sdt"); sdt_probe_func = dtrace_probe; - sdt_register_callbacks(sdt_provider_reg_callback, NULL, - sdt_provider_unreg_callback, NULL, sdt_probe_callback, NULL); -} + modload_tag = EVENTHANDLER_REGISTER(mod_load, sdt_modload, NULL, + EVENTHANDLER_PRI_ANY); + modunload_tag = EVENTHANDLER_REGISTER(mod_unload, sdt_modunload, NULL, + EVENTHANDLER_PRI_ANY); -static int -sdt_provider_unreg_callback(struct sdt_provider *prov, void *arg __unused) -{ - return (dtrace_unregister(prov->id)); + /* Pick up probes from the kernel and already-loaded modules. */ + linker_file_foreach(sdt_linker_file_cb, NULL); } static int -sdt_unload() +sdt_unload(void *arg __unused) { - int error = 0; + struct sdt_provider *prov, *tmp; + + EVENTHANDLER_DEREGISTER(mod_load, modload_tag); + EVENTHANDLER_DEREGISTER(mod_unload, modunload_tag); sdt_probe_func = sdt_probe_stub; - sdt_deregister_callbacks(); - + TAILQ_FOREACH_SAFE(prov, &sdt_prov_list, prov_entry, tmp) { + TAILQ_REMOVE(&sdt_prov_list, prov, prov_entry); + dtrace_unregister(prov->id); + free(prov->name, M_SDT); + free(prov, M_SDT); + } + destroy_dev(sdt_cdev); - return (error); + return (0); } /* ARGSUSED */ @@ -235,7 +363,6 @@ sdt_modevent(module_t mod __unused, int default: error = EOPNOTSUPP; break; - } return (error); @@ -243,8 +370,10 @@ sdt_modevent(module_t mod __unused, int /* ARGSUSED */ static int -sdt_open(struct cdev *dev __unused, int oflags __unused, int devtype __unused, struct thread *td __unused) +sdt_open(struct cdev *dev __unused, int oflags __unused, int devtype __unused, + struct thread *td __unused) { + return (0); } Modified: head/sys/kern/kern_linker.c ============================================================================== --- head/sys/kern/kern_linker.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/kern/kern_linker.c Tue Aug 13 03:10:39 2013 (r254268) @@ -1106,11 +1106,7 @@ kern_kldunload(struct thread *td, int fi EVENTHANDLER_INVOKE(mod_unload, lf, &error); if (error != 0) error = EBUSY; - else if (lf->nenabled > 0) { - printf("kldunload: attempt to unload file that has" - " DTrace probes enabled\n"); - error = EBUSY; - } else if (lf->userrefs == 0) { + else if (lf->userrefs == 0) { /* * XXX: maybe LINKER_UNLOAD_FORCE should override ? */ Modified: head/sys/kern/kern_sdt.c ============================================================================== --- head/sys/kern/kern_sdt.c Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/kern/kern_sdt.c Tue Aug 13 03:10:39 2013 (r254268) @@ -23,317 +23,29 @@ * SUCH DAMAGE. * * $FreeBSD$ - * - * Backend for the Statically Defined Tracing (SDT) kernel support. This is - * required to allow a module to load even though DTrace kernel support may - * not be present. A module may be built with SDT probes in it which are - * registered and deregistered via SYSINIT/SYSUNINIT. - * */ #include "opt_kdtrace.h" -#include #include #include -#include -#include -#include -#include -#include #include /* - * This is the list of statically defined tracing providers. - */ -static TAILQ_HEAD(sdt_provider_list_head, sdt_provider) sdt_provider_list; - -/* - * Mutex to serialise access to the SDT provider list. - */ -static struct sx sdt_sx; - -/* - * Hook for the DTrace probe function. The 'sdt' provider will set this - * to dtrace_probe when it loads. + * Hook for the DTrace probe function. The SDT provider will set this to + * dtrace_probe() when it loads. */ 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 - * support to enable it. + * enabled. It should never get called because there is no DTrace support + * to enable it. */ void sdt_probe_stub(uint32_t id, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4) { - printf("sdt_probe_stub: Why did this get called?\n"); -} - -/* - * Called from SYSINIT to register a provider. - */ -void -sdt_provider_register(void *arg) -{ - struct sdt_provider *prov = arg; - - sx_xlock(&sdt_sx); - - TAILQ_INSERT_TAIL(&sdt_provider_list, prov, prov_entry); - - TAILQ_INIT(&prov->probe_list); - - if (sdt_provider_register_func != NULL) - sdt_provider_register_func(prov, sdt_provider_register_arg); - - sx_xunlock(&sdt_sx); -} - -/* - * Called from SYSUNINIT to de-register a provider. - */ -void -sdt_provider_deregister(void *arg) -{ - struct sdt_provider *prov = arg; - - sx_xlock(&sdt_sx); - - 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); -} - -/* - * Called from SYSINIT to register a statically defined trace probe. - */ -void -sdt_probe_register(void *arg) -{ - struct sdt_probe *probe = arg; - - /* - * Check the reference structure version. Only version 1 is - * supported at the moment. - */ - if (probe->version != sizeof(struct sdt_probe)) { - printf("%s:%s:%s has version %d when %d required\n", probe->mod, probe->func, probe->name, probe->version, (int) sizeof(struct sdt_probe)); - return; - } - - sx_xlock(&sdt_sx); - - TAILQ_INSERT_TAIL(&probe->prov->probe_list, probe, probe_entry); - - TAILQ_INIT(&probe->argtype_list); - - probe->state = SDT_INIT; - - if (sdt_probe_register_func != NULL) - sdt_probe_register_func(probe, sdt_provider_register_arg); - - sx_xunlock(&sdt_sx); -} - -/* - * Called from SYSUNINIT to de-register a statically defined trace probe. - */ -void -sdt_probe_deregister(void *arg) -{ - struct sdt_probe *probe = arg; - - sx_xlock(&sdt_sx); - - if (probe->state == SDT_INIT) { - TAILQ_REMOVE(&probe->prov->probe_list, probe, probe_entry); - probe->state = SDT_UNINIT; - } - - sx_xunlock(&sdt_sx); -} - -/* - * Called from SYSINIT to register a statically defined trace probe argument. - */ -void -sdt_argtype_register(void *arg) -{ - struct sdt_argtype *argtype = arg; - - sx_xlock(&sdt_sx); - - TAILQ_INSERT_TAIL(&argtype->probe->argtype_list, argtype, argtype_entry); - - argtype->probe->n_args++; - - sx_xunlock(&sdt_sx); -} - -/* - * Called from SYSUNINIT to de-register a statically defined trace probe argument. - */ -void -sdt_argtype_deregister(void *arg) -{ - struct sdt_argtype *argtype = arg; - - sx_xlock(&sdt_sx); - - TAILQ_REMOVE(&argtype->probe->argtype_list, argtype, argtype_entry); - - sx_xunlock(&sdt_sx); -} - -static void -sdt_init(void *arg) -{ - sx_init_flags(&sdt_sx, "Statically Defined Tracing", SX_NOWITNESS); - - TAILQ_INIT(&sdt_provider_list); -} - -SYSINIT(sdt, SI_SUB_KDTRACE, SI_ORDER_FIRST, sdt_init, NULL); - -static void -sdt_uninit(void *arg) -{ - sx_destroy(&sdt_sx); -} - -SYSUNINIT(sdt, SI_SUB_KDTRACE, SI_ORDER_FIRST, sdt_uninit, NULL); - -/* - * List statically defined tracing providers. - */ -int -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_assert(&sdt_sx, SX_XLOCKED); - - TAILQ_FOREACH(prov, &sdt_provider_list, prov_entry) { - if ((error = callback_func(prov, arg)) != 0) - break; - } - - return (error); -} - -/* - * List statically defined tracing probes. - */ -int -sdt_probe_listall(struct sdt_provider *prov, - sdt_probe_listall_func_t callback_func,void *arg) -{ - int error = 0; - int locked; - struct sdt_probe *probe; - - locked = sx_xlocked(&sdt_sx); - if (!locked) - sx_xlock(&sdt_sx); - - TAILQ_FOREACH(probe, &prov->probe_list, probe_entry) { - if ((error = callback_func(probe, arg)) != 0) - break; - } - - if (!locked) - sx_xunlock(&sdt_sx); - - return (error); -} - -/* - * List statically defined tracing probe arguments. - */ -int -sdt_argtype_listall(struct sdt_probe *probe, - sdt_argtype_listall_func_t callback_func,void *arg) -{ - int error = 0; - int locked; - struct sdt_argtype *argtype; - - locked = sx_xlocked(&sdt_sx); - if (!locked) - sx_xlock(&sdt_sx); - TAILQ_FOREACH(argtype, &probe->argtype_list, argtype_entry) { - if ((error = callback_func(argtype, arg)) != 0) - break; - } - - if (!locked) - sx_xunlock(&sdt_sx); - - 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); + printf("sdt_probe_stub: Why did this get called?\n"); } Modified: head/sys/sys/sdt.h ============================================================================== --- head/sys/sys/sdt.h Tue Aug 13 03:09:00 2013 (r254267) +++ head/sys/sys/sdt.h Tue Aug 13 03:10:39 2013 (r254268) @@ -77,6 +77,9 @@ #else /* _KERNEL */ +#include +#include + #ifndef KDTRACE_HOOKS #define SDT_PROVIDER_DEFINE(prov) @@ -109,85 +112,26 @@ #else -/* - * This type definition must match that of dtrace_probe. It is defined this *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 06:21:37 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 80381682; Tue, 13 Aug 2013 06:21:37 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6D5D82BFC; Tue, 13 Aug 2013 06:21:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D6Lb4q056694; Tue, 13 Aug 2013 06:21:37 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D6LbuP056693; Tue, 13 Aug 2013 06:21:37 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308130621.r7D6LbuP056693@svn.freebsd.org> From: Alexander Motin Date: Tue, 13 Aug 2013 06:21:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254269 - head/sys/geom/raid X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 06:21:37 -0000 Author: mav Date: Tue Aug 13 06:21:36 2013 New Revision: 254269 URL: http://svnweb.freebsd.org/changeset/base/254269 Log: Fix reasonable but safe Clang warnings. Modified: head/sys/geom/raid/tr_raid5.c Modified: head/sys/geom/raid/tr_raid5.c ============================================================================== --- head/sys/geom/raid/tr_raid5.c Tue Aug 13 03:10:39 2013 (r254268) +++ head/sys/geom/raid/tr_raid5.c Tue Aug 13 06:21:36 2013 (r254269) @@ -106,7 +106,8 @@ g_raid_tr_taste_raid5(struct g_raid_tr_o trs = (struct g_raid_tr_raid5_object *)tr; qual = tr->tro_volume->v_raid_level_qualifier; if (tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID4 && - qual >= 0 && qual <= 1) { + (qual == G_RAID_VOLUME_RLQ_R4P0 || + qual == G_RAID_VOLUME_RLQ_R4P0)) { /* RAID4 */ } else if ((tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID5 || tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID5E || @@ -114,7 +115,10 @@ g_raid_tr_taste_raid5(struct g_raid_tr_o tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID5R || tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID6 || tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAIDMDF) && - qual >= 0 && qual <= 3) { + (qual == G_RAID_VOLUME_RLQ_R5RA || + qual == G_RAID_VOLUME_RLQ_R5RS || + qual == G_RAID_VOLUME_RLQ_R5LA || + qual == G_RAID_VOLUME_RLQ_R5LS)) { /* RAID5/5E/5EE/5R/6/MDF */ } else return (G_RAID_TR_TASTE_FAIL); From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 06:25:35 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 85DAE92A; Tue, 13 Aug 2013 06:25:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 738912C24; Tue, 13 Aug 2013 06:25:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D6PZk6057507; Tue, 13 Aug 2013 06:25:35 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D6PZ1S057506; Tue, 13 Aug 2013 06:25:35 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308130625.r7D6PZ1S057506@svn.freebsd.org> From: Alexander Motin Date: Tue, 13 Aug 2013 06:25:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254271 - head/sys/geom/raid X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 06:25:35 -0000 Author: mav Date: Tue Aug 13 06:25:34 2013 New Revision: 254271 URL: http://svnweb.freebsd.org/changeset/base/254271 Log: Oops, wrong constant at r254269. Modified: head/sys/geom/raid/tr_raid5.c Modified: head/sys/geom/raid/tr_raid5.c ============================================================================== --- head/sys/geom/raid/tr_raid5.c Tue Aug 13 06:25:17 2013 (r254270) +++ head/sys/geom/raid/tr_raid5.c Tue Aug 13 06:25:34 2013 (r254271) @@ -107,7 +107,7 @@ g_raid_tr_taste_raid5(struct g_raid_tr_o qual = tr->tro_volume->v_raid_level_qualifier; if (tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID4 && (qual == G_RAID_VOLUME_RLQ_R4P0 || - qual == G_RAID_VOLUME_RLQ_R4P0)) { + qual == G_RAID_VOLUME_RLQ_R4PN)) { /* RAID4 */ } else if ((tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID5 || tr->tro_volume->v_raid_level == G_RAID_VOLUME_RL_RAID5E || From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 07:15:04 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 85B27355; Tue, 13 Aug 2013 07:15:04 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 70E7D2EF6; Tue, 13 Aug 2013 07:15:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D7F4DK076353; Tue, 13 Aug 2013 07:15:04 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D7F1nu076335; Tue, 13 Aug 2013 07:15:01 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308130715.r7D7F1nu076335@svn.freebsd.org> From: Peter Wemm Date: Tue, 13 Aug 2013 07:15:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254273 - in head: . include lib lib/libc/iconv lib/libiconv_compat lib/libkiconv share/mk sys/sys tools/build/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 07:15:04 -0000 Author: peter Date: Tue Aug 13 07:15:01 2013 New Revision: 254273 URL: http://svnweb.freebsd.org/changeset/base/254273 Log: The iconv in libc did two things - implement the standard APIs, the GNU extensions and also tried to be link time compatible with ports libiconv. This splits that functionality and enables the parts that shouldn't interfere with the port by default. WITH_ICONV (now on by default) - adds iconv.h, iconv_open(3) etc. WITH_LIBICONV_COMPAT (off by default) adds the libiconv_open etc API, linker symbols and even a stub libiconv.so.3 that are good enough to be able to 'pkg delete -f libiconv' on a running system and reasonably expect it to work. I have tortured many machines over the last few days to try and reduce the possibilities of foot-shooting as much as I can. I've successfully recompiled to enable and disable the libiconv_compat modes, ports that use libiconv alongside system iconv etc. If you don't enable the WITH_LIBICONV_COMPAT switch, they don't share symbol space. This is an extension of behavior on other system. iconv(3) is a standard libc interface and libiconv port expects to be able to run alongside it on systems that have it. Bumped osreldate. Added: head/lib/libiconv_compat/ head/lib/libiconv_compat/Makefile (contents, props changed) head/lib/libiconv_compat/stub.c (contents, props changed) Modified: head/UPDATING head/include/Makefile head/include/iconv.h head/lib/Makefile head/lib/libc/iconv/Symbol.map head/lib/libc/iconv/iconv.c head/lib/libkiconv/xlat16_iconv.c head/share/mk/bsd.own.mk head/sys/sys/param.h head/tools/build/mk/OptionalObsoleteFiles.inc Modified: head/UPDATING ============================================================================== --- head/UPDATING Tue Aug 13 07:04:29 2013 (r254272) +++ head/UPDATING Tue Aug 13 07:15:01 2013 (r254273) @@ -31,6 +31,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130813: + WITH_ICONV has been split into two feature sets. WITH_ICONV now + enables just the iconv* functionality and is now on by default. + WITH_LIBICONV_COMPAT enables the libiconv api and link time + compatability. Set WITHOUT_ICONV to build the old way. + 20130806: INVARIANTS option now enables DEBUG for code with OpenSolaris and Illumos origin, including ZFS. If you have INVARIANTS in your Modified: head/include/Makefile ============================================================================== --- head/include/Makefile Tue Aug 13 07:04:29 2013 (r254272) +++ head/include/Makefile Tue Aug 13 07:15:01 2013 (r254273) @@ -72,10 +72,6 @@ _dev_ieee488= dev/ieee488 INCS+= hesiod.h .endif -.if ${MK_ICONV} != "no" -INCS+= iconv.h -.endif - .if ${MK_BLUETOOTH} != "no" LSUBSUBDIRS+= netgraph/bluetooth/include .endif @@ -85,6 +81,20 @@ LSUBSUBDIRS+= netgraph/bluetooth/include _netipx= netipx #.endif +# Handle the #define aliases for libiconv +.if ${MK_ICONV} == "yes" +CLEANFILES+= _libiconv_compat.h +INCS+= _libiconv_compat.h iconv.h +_libiconv_compat.h: ${.CURDIR}/Makefile + echo "/* Indicate whether libiconv symbols are present */" > _libiconv_compat.h +.if ${MK_LIBICONV_COMPAT} == "yes" + echo "#define __LIBICONV_COMPAT" >> _libiconv_compat.h +.else + echo "#undef __LIBICONV_COMPAT" >> _libiconv_compat.h +.endif +.endif + + # Define SHARED to indicate whether you want symbolic links to the system # source (``symlinks''), or a separate copy (``copies''). ``symlinks'' is # probably only useful for developers and should be avoided if you do not Modified: head/include/iconv.h ============================================================================== --- head/include/iconv.h Tue Aug 13 07:04:29 2013 (r254272) +++ head/include/iconv.h Tue Aug 13 07:15:01 2013 (r254273) @@ -41,20 +41,23 @@ #include #include -#define iconv_open libiconv_open -#define iconv_close libiconv_close -#define iconv libiconv -#define iconv_t libiconv_t +#include <_libiconv_compat.h> +#ifdef __LIBICONV_COMPAT +#define libiconv_open iconv_open +#define libiconv_close iconv_close +#define libiconv iconv +#define libiconv_t iconv_t +#endif struct __tag_iconv_t; typedef struct __tag_iconv_t *iconv_t; __BEGIN_DECLS -iconv_t libiconv_open(const char *, const char *); -size_t libiconv(iconv_t, const char ** __restrict, - size_t * __restrict, char ** __restrict, - size_t * __restrict); -int libiconv_close(iconv_t); +iconv_t iconv_open(const char *, const char *); +size_t iconv(iconv_t, const char ** __restrict, + size_t * __restrict, char ** __restrict, + size_t * __restrict); +int iconv_close(iconv_t); /* * non-portable interfaces for iconv */ @@ -67,20 +70,28 @@ size_t __iconv(iconv_t, const char **, s /* * GNU interfaces for iconv */ -#define iconv_open_into libiconv_open_into -#define iconvctl libiconvctl -#define iconvlist libiconvlist +#ifdef __LIBICONV_COMPAT +#define libiconv_open_into iconv_open_into +#define libiconvctl iconvctl +#define libiconvlist iconvlist +#define libiconv_set_relocation_prefix iconv_set_relocation_prefix +#endif /* We have iconvctl() */ -#define _LIBICONV_VERSION 0x0108 -extern int _libiconv_version; +#define _ICONV_VERSION 0x0108 +extern int _iconv_version; + +#ifdef __LIBICONV_COMPAT +#define _libiconv_version _iconv_version +#define _LIBICONV_VERSION _ICONV_VERSION +#endif typedef struct { void *spaceholder[64]; } iconv_allocation_t; int iconv_open_into(const char *, const char *, iconv_allocation_t *); -void libiconv_set_relocation_prefix (const char *orig_prefix, +void iconv_set_relocation_prefix(const char *orig_prefix, const char *curr_prefix); /* Modified: head/lib/Makefile ============================================================================== --- head/lib/Makefile Tue Aug 13 07:04:29 2013 (r254272) +++ head/lib/Makefile Tue Aug 13 07:15:01 2013 (r254273) @@ -78,6 +78,7 @@ SUBDIR= ${SUBDIR_ORDERED} \ ${_libgpib} \ ${_libgssapi} \ ${_librpcsec_gss} \ + ${_libiconv_compat} \ libipsec \ ${_libipx} \ libjail \ @@ -189,6 +190,10 @@ _libcxxrt= libcxxrt _libcplusplus= libc++ .endif +.if ${MK_LIBICONV_COMPAT} != "no" +_libiconv_compat= libiconv_compat +.endif + .if ${MK_LIBTHR} != "no" _libthr= libthr .endif Modified: head/lib/libc/iconv/Symbol.map ============================================================================== --- head/lib/libc/iconv/Symbol.map Tue Aug 13 07:04:29 2013 (r254272) +++ head/lib/libc/iconv/Symbol.map Tue Aug 13 07:15:01 2013 (r254273) @@ -18,6 +18,7 @@ FBSD_1.2 { }; FBSD_1.3 { + _iconv_version; iconv; iconv_open; iconv_close; Modified: head/lib/libc/iconv/iconv.c ============================================================================== --- head/lib/libc/iconv/iconv.c Tue Aug 13 07:04:29 2013 (r254272) +++ head/lib/libc/iconv/iconv.c Tue Aug 13 07:15:01 2013 (r254273) @@ -47,17 +47,21 @@ #include "citrus_hash.h" #include "citrus_iconv.h" -__weak_reference(libiconv, iconv); -__weak_reference(libiconv_open, iconv_open); -__weak_reference(libiconv_open_into, iconv_open_into); -__weak_reference(libiconv_close, iconv_close); -__weak_reference(libiconvlist, iconvlist); -__weak_reference(libiconvctl, iconvctl); -__weak_reference(libiconv_set_relocation_prefix, iconv_set_relocation_prefix); +#include <_libiconv_compat.h> +#ifdef __LIBICONV_COMPAT +__weak_reference(iconv, libiconv); +__weak_reference(iconv_open, libiconv_open); +__weak_reference(iconv_open_into, libiconv_open_into); +__weak_reference(iconv_close, libiconv_close); +__weak_reference(iconvlist, libiconvlist); +__weak_reference(iconvctl, libiconvctl); +__weak_reference(iconv_set_relocation_prefix, libiconv_set_relocation_prefix); +__weak_reference(_iconv_version, _libiconv_version); +#endif #define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1) -int _libiconv_version = _LIBICONV_VERSION; +int _iconv_version = _ICONV_VERSION; iconv_t _iconv_open(const char *out, const char *in, struct _citrus_iconv *prealloc); @@ -100,14 +104,14 @@ _iconv_open(const char *out, const char } iconv_t -libiconv_open(const char *out, const char *in) +iconv_open(const char *out, const char *in) { return (_iconv_open(out, in, NULL)); } int -libiconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr) +iconv_open_into(const char *out, const char *in, iconv_allocation_t *ptr) { struct _citrus_iconv *handle; @@ -116,7 +120,7 @@ libiconv_open_into(const char *out, cons } int -libiconv_close(iconv_t handle) +iconv_close(iconv_t handle) { if (ISBADF(handle)) { @@ -130,7 +134,7 @@ libiconv_close(iconv_t handle) } size_t -libiconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout) +iconv(iconv_t handle, const char **in, size_t *szin, char **out, size_t *szout) { size_t ret; int err; @@ -210,7 +214,7 @@ qsort_helper(const void *first, const vo } void -libiconvlist(int (*do_one) (unsigned int, const char * const *, +iconvlist(int (*do_one) (unsigned int, const char * const *, void *), void *data) { char **list, **names; @@ -264,7 +268,7 @@ __inline const char } int -libiconvctl(iconv_t cd, int request, void *argument) +iconvctl(iconv_t cd, int request, void *argument) { struct _citrus_iconv *cv; struct iconv_hooks *hooks; @@ -316,7 +320,7 @@ libiconvctl(iconv_t cd, int request, voi } void -libiconv_set_relocation_prefix(const char *orig_prefix __unused, +iconv_set_relocation_prefix(const char *orig_prefix __unused, const char *curr_prefix __unused) { Added: head/lib/libiconv_compat/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libiconv_compat/Makefile Tue Aug 13 07:15:01 2013 (r254273) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +LIB= iconv +SHLIB_MAJOR= 3 +SRCS= stub.c + +.include Added: head/lib/libiconv_compat/stub.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libiconv_compat/stub.c Tue Aug 13 07:15:01 2013 (r254273) @@ -0,0 +1,8 @@ +/* + * Hacks to support things like the dlopen() in libkiconv.so or + * ports that want to hard-code -liconv. + * + * $FreeBSD$ + */ + +int __libiconv_stub__; Modified: head/lib/libkiconv/xlat16_iconv.c ============================================================================== --- head/lib/libkiconv/xlat16_iconv.c Tue Aug 13 07:04:29 2013 (r254272) +++ head/lib/libkiconv/xlat16_iconv.c Tue Aug 13 07:15:01 2013 (r254273) @@ -49,8 +49,6 @@ #include "quirks.h" -typedef void *iconv_t; - struct xlat16_table { uint32_t * idx[0x200]; void * data; @@ -61,6 +59,7 @@ static struct xlat16_table kiconv_xlat16 static int chklocale(int, const char *); #ifdef ICONV_DLOPEN +typedef void *iconv_t; static int my_iconv_init(void); static iconv_t (*my_iconv_open)(const char *, const char *); static size_t (*my_iconv)(iconv_t, const char **, size_t *, char **, size_t *); Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Tue Aug 13 07:04:29 2013 (r254272) +++ head/share/mk/bsd.own.mk Tue Aug 13 07:15:01 2013 (r254273) @@ -292,6 +292,7 @@ __DEFAULT_YES_OPTIONS = \ GPIO \ GROFF \ HTML \ + ICONV \ INET \ INET6 \ INFO \ @@ -377,7 +378,7 @@ __DEFAULT_NO_OPTIONS = \ GNU_PATCH \ GPL_DTC \ HESIOD \ - ICONV \ + LIBICONV_COMPAT \ INSTALL_AS_USER \ LDNS_UTILS \ NMTREE \ @@ -484,6 +485,10 @@ MK_BIND_NAMED:= no MK_BIND_UTILS:= no .endif +.if ${MK_ICONV} == "no" +MK_LIBICONV_COMPAT:= no +.endif + .if ${MK_LDNS} == "no" MK_LDNS_UTILS:= no .endif Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Tue Aug 13 07:04:29 2013 (r254272) +++ head/sys/sys/param.h Tue Aug 13 07:15:01 2013 (r254273) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1000042 /* Master, propagated to newvers */ +#define __FreeBSD_version 1000043 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, Modified: head/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- head/tools/build/mk/OptionalObsoleteFiles.inc Tue Aug 13 07:04:29 2013 (r254272) +++ head/tools/build/mk/OptionalObsoleteFiles.inc Tue Aug 13 07:15:01 2013 (r254273) @@ -2198,6 +2198,27 @@ OLD_FILES+=usr/share/man/man5/hesiod.con # to be filled in #.endif +.if ${MK_ICONV} == no +OLD_FILES+=usr/bin/iconv +OLD_FILES+=usr/bin/mkcsmapper +OLD_FILES+=usr/bin/mkesdb +OLD_FILES+=usr/include/_libiconv_compat.h +OLD_FILES+=usr/include/iconv.h +OLD_FILES+=usr/share/man/man1/iconv.1.gz +OLD_FILES+=usr/share/man/man1/mkcsmapper.1.gz +OLD_FILES+=usr/share/man/man1/mkesdb.1.gz +OLD_FILES+=usr/share/man/man3/__iconv.3.gz +OLD_FILES+=usr/share/man/man3/__iconv_free_list.3.gz +OLD_FILES+=usr/share/man/man3/__iconv_get_list.3.gz +OLD_FILES+=usr/share/man/man3/iconv.3.gz +OLD_FILES+=usr/share/man/man3/iconv_canonicalize.3.gz +OLD_FILES+=usr/share/man/man3/iconv_close.3.gz +OLD_FILES+=usr/share/man/man3/iconv_open.3.gz +OLD_FILES+=usr/share/man/man3/iconv_open_into.3.gz +OLD_FILES+=usr/share/man/man3/iconvctl.3.gz +OLD_FILES+=usr/share/man/man3/iconvlist.3.gz +.endif + .if ${MK_INET6} == no OLD_FILES+=sbin/ping6 OLD_FILES+=sbin/rtsol @@ -3338,6 +3359,13 @@ OLD_FILES+=usr/share/man/man8/verify_krb # to be filled in #.endif +.if ${MK_LIBICONV_COMPAT} == no +OLD_FILES+=usr/lib/libiconv.a +OLD_FILES+=usr/lib/libiconv.so +OLD_FILES+=usr/lib/libiconv.so.3 +OLD_FILES+=usr/lib/libiconv_p.a +.endif + .if ${MK_LIBCPLUSPLUS} == no OLD_LIBS+=lib/libcxxrt.so.1 OLD_FILES+=usr/lib/libc++.a @@ -4347,7 +4375,3 @@ OLD_FILES+=usr/bin/svnserve OLD_FILES+=usr/bin/svnsync OLD_FILES+=usr/bin/svnversion .endif - -.if ${MK_ICONV} == no -OLD_FILES+=usr/bin/iconv -.endif From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 07:31:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B8AA975D; Tue, 13 Aug 2013 07:31:27 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A62042FDA; Tue, 13 Aug 2013 07:31:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D7VRBt083054; Tue, 13 Aug 2013 07:31:27 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D7VRiM083053; Tue, 13 Aug 2013 07:31:27 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308130731.r7D7VRiM083053@svn.freebsd.org> From: Peter Wemm Date: Tue, 13 Aug 2013 07:31:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254274 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 07:31:27 -0000 Author: peter Date: Tue Aug 13 07:31:27 2013 New Revision: 254274 URL: http://svnweb.freebsd.org/changeset/base/254274 Log: Add a note that if you were WITH_ICONV before, you should turn on WITH_LIBICONV_COMPAT. Modified: head/UPDATING Modified: head/UPDATING ============================================================================== --- head/UPDATING Tue Aug 13 07:15:01 2013 (r254273) +++ head/UPDATING Tue Aug 13 07:31:27 2013 (r254274) @@ -36,6 +36,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 enables just the iconv* functionality and is now on by default. WITH_LIBICONV_COMPAT enables the libiconv api and link time compatability. Set WITHOUT_ICONV to build the old way. + If you have been using WITH_ICONV before, you will very likely + need to turn on WITH_LIBICONV_COMPAT. 20130806: INVARIANTS option now enables DEBUG for code with OpenSolaris and From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 07:42:43 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3F41BA39; Tue, 13 Aug 2013 07:42:43 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from server.mypc.hu (server.mypc.hu [87.229.73.95]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EAC862094; Tue, 13 Aug 2013 07:42:42 +0000 (UTC) Received: from server.mypc.hu (localhost [127.0.0.1]) by server.mypc.hu (Postfix) with ESMTP id E112D14D2517; Tue, 13 Aug 2013 09:35:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at !change-mydomain-variable!.example.com Received: from server.mypc.hu ([127.0.0.1]) by server.mypc.hu (server.mypc.hu [127.0.0.1]) (amavisd-new, port 10024) with LMTP id qBDkOnDkdoXz; Tue, 13 Aug 2013 09:35:57 +0200 (CEST) Received: from [192.168.0.10] (54034B4D.catv.pool.telekom.hu [84.3.75.77]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by server.mypc.hu (Postfix) with ESMTPSA id 3689514D2436; Tue, 13 Aug 2013 09:35:57 +0200 (CEST) Message-ID: <5209E1DC.1040309@FreeBSD.org> Date: Tue, 13 Aug 2013 09:35:56 +0200 From: Gabor Kovesdan User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Thunderbird/23.0 MIME-Version: 1.0 To: Peter Wemm , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r254273 - in head: . include lib lib/libc/iconv lib/libiconv_compat lib/libkiconv share/mk sys/sys tools/build/mk References: <201308130715.r7D7F1nu076335@svn.freebsd.org> In-Reply-To: <201308130715.r7D7F1nu076335@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 07:42:43 -0000 Em 13-08-2013 09:15, Peter Wemm escreveu: > Author: peter > Date: Tue Aug 13 07:15:01 2013 > New Revision: 254273 > URL:http://svnweb.freebsd.org/changeset/base/254273 > > Log: > The iconv in libc did two things - implement the standard APIs, the GNU > extensions and also tried to be link time compatible with ports libiconv. > This splits that functionality and enables the parts that shouldn't > interfere with the port by default. > > WITH_ICONV (now on by default) - adds iconv.h, iconv_open(3) etc. > WITH_LIBICONV_COMPAT (off by default) adds the libiconv_open etc API, linker > symbols and even a stub libiconv.so.3 that are good enough to be able > to 'pkg delete -f libiconv' on a running system and reasonably expect it > to work. Thank you! Gabor From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 07:56:41 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CF62BD10; Tue, 13 Aug 2013 07:56:41 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A27432145; Tue, 13 Aug 2013 07:56:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D7ufwX086177; Tue, 13 Aug 2013 07:56:41 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D7uf9o086164; Tue, 13 Aug 2013 07:56:41 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201308130756.r7D7uf9o086164@svn.freebsd.org> From: Alexander Motin Date: Tue, 13 Aug 2013 07:56:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254275 - head/sys/geom/raid X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 07:56:41 -0000 Author: mav Date: Tue Aug 13 07:56:40 2013 New Revision: 254275 URL: http://svnweb.freebsd.org/changeset/base/254275 Log: Return error when opening read-only volumes (like RAID4/5/...) for writing. Previously opens succeeded, but actual write operations returned errors. Requested by: peter MFC after: 2 weeks Modified: head/sys/geom/raid/g_raid.c head/sys/geom/raid/g_raid.h head/sys/geom/raid/tr_raid5.c Modified: head/sys/geom/raid/g_raid.c ============================================================================== --- head/sys/geom/raid/g_raid.c Tue Aug 13 07:31:27 2013 (r254274) +++ head/sys/geom/raid/g_raid.c Tue Aug 13 07:56:40 2013 (r254275) @@ -1863,6 +1863,11 @@ g_raid_access(struct g_provider *pp, int error = ENXIO; goto out; } + /* Deny write opens for read-only volumes. */ + if (vol->v_read_only && acw > 0) { + error = EROFS; + goto out; + } if (dcw == 0) g_raid_clean(vol, dcw); vol->v_provider_open += acr + acw + ace; Modified: head/sys/geom/raid/g_raid.h ============================================================================== --- head/sys/geom/raid/g_raid.h Tue Aug 13 07:31:27 2013 (r254274) +++ head/sys/geom/raid/g_raid.h Tue Aug 13 07:56:40 2013 (r254275) @@ -306,6 +306,7 @@ struct g_raid_volume { int v_stopping; /* Volume is stopping */ int v_provider_open; /* Number of opens. */ int v_global_id; /* Global volume ID (rX). */ + int v_read_only; /* Volume is read-only. */ TAILQ_ENTRY(g_raid_volume) v_next; /* List of volumes entry. */ LIST_ENTRY(g_raid_volume) v_global_next; /* Global list entry. */ }; Modified: head/sys/geom/raid/tr_raid5.c ============================================================================== --- head/sys/geom/raid/tr_raid5.c Tue Aug 13 07:31:27 2013 (r254274) +++ head/sys/geom/raid/tr_raid5.c Tue Aug 13 07:56:40 2013 (r254275) @@ -185,8 +185,9 @@ g_raid_tr_start_raid5(struct g_raid_tr_o struct g_raid_volume *vol; trs = (struct g_raid_tr_raid5_object *)tr; - vol = tr->tro_volume; trs->trso_starting = 0; + vol = tr->tro_volume; + vol->v_read_only = 1; g_raid_tr_update_state_raid5(vol, NULL); return (0); } From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 08:12:58 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 073CE13D; Tue, 13 Aug 2013 08:12:58 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CF2BA226D; Tue, 13 Aug 2013 08:12:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D8CvrW072888; Tue, 13 Aug 2013 08:12:57 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D8Cv1F072883; Tue, 13 Aug 2013 08:12:57 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308130812.r7D8Cv1F072883@svn.freebsd.org> From: Peter Wemm Date: Tue, 13 Aug 2013 08:12:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254276 - head/lib/libiconv_compat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 08:12:58 -0000 Author: peter Date: Tue Aug 13 08:12:57 2013 New Revision: 254276 URL: http://svnweb.freebsd.org/changeset/base/254276 Log: Turn off warns for this do-nothing file. clang noticed. Modified: head/lib/libiconv_compat/Makefile Modified: head/lib/libiconv_compat/Makefile ============================================================================== --- head/lib/libiconv_compat/Makefile Tue Aug 13 07:56:40 2013 (r254275) +++ head/lib/libiconv_compat/Makefile Tue Aug 13 08:12:57 2013 (r254276) @@ -4,4 +4,6 @@ LIB= iconv SHLIB_MAJOR= 3 SRCS= stub.c +WARNS?= 0 + .include From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 08:40:40 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7C0106EE for ; Tue, 13 Aug 2013 08:40:40 +0000 (UTC) (envelope-from peter@wemm.org) Received: from mail-vc0-x22e.google.com (mail-vc0-x22e.google.com [IPv6:2607:f8b0:400c:c03::22e]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 38B5F241F for ; Tue, 13 Aug 2013 08:40:40 +0000 (UTC) Received: by mail-vc0-f174.google.com with SMTP id gd11so3614819vcb.19 for ; Tue, 13 Aug 2013 01:40:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wemm.org; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ecu04IHluLihvk/yR+gioyBzc+1s1aKsRvfVfT+8RBo=; b=FQoIjtzXAtmQFUAD0oZ6qI8jtaYjL5zPvf+c03IwLT8y63+LzHCYFwpPOS3AVyuucy DoYrCnlfq2UN1l7hQxr53vVnEU6hOR+dEP0GNp7YrLCBee6QDeJryay6V3frigqo/mk8 uK128FDDrP7oxHO7eHiSWkNEZxovnTThf3gf0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=ecu04IHluLihvk/yR+gioyBzc+1s1aKsRvfVfT+8RBo=; b=o5xrscsY5OfEVKgpeV/8JnvHZVqBYBg85teSxIYUmDY98mhYvQywNNkxBOaJsdyrZh xXMLc5zG4v5wQ6N1NH492pkHLLxRwZPUkNAabeAzzumDFb1iIKK6TbTzm59Az7y6PoBn i73UlSJ/Uz4eg3OltApzx7VGP7EOCGdzZ64KPEZNJySrDuIeFgwdcm8cHWQaJVrbgSVh vr4v9SmMrMf44ZmUPQSKedq3IPnm6wE/1ATQu56QqSHFFSdKeO02b98E6uk2Ll7eJqiF OtF7HqtWecQN/QQgJwnHqWgWV6j9khiZEq6/V3YcCYdUy/9i6fMRiETYmUVr2Z7JihC7 b5tw== X-Gm-Message-State: ALoCoQn7a3M6zsh9swwzYT+ZrxZIyT+alCd2+6wtyhXC7ae1ZTawidBzDU6DMktT1Rfz7e5fsoMV MIME-Version: 1.0 X-Received: by 10.220.11.7 with SMTP id r7mr3390838vcr.12.1376383239219; Tue, 13 Aug 2013 01:40:39 -0700 (PDT) Received: by 10.220.167.74 with HTTP; Tue, 13 Aug 2013 01:40:39 -0700 (PDT) In-Reply-To: <201308130756.r7D7uf9o086164@svn.freebsd.org> References: <201308130756.r7D7uf9o086164@svn.freebsd.org> Date: Tue, 13 Aug 2013 01:40:39 -0700 Message-ID: Subject: Re: svn commit: r254275 - head/sys/geom/raid From: Peter Wemm To: Alexander Motin Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 08:40:40 -0000 On Tue, Aug 13, 2013 at 12:56 AM, Alexander Motin wrote: > Log: > Return error when opening read-only volumes (like RAID4/5/...) for writing. > Previously opens succeeded, but actual write operations returned errors. > > Requested by: peter > MFC after: 2 weeks Thanks! The read-only limitation was easy to miss in the man page. -- Peter Wemm - peter@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com; KI6FJV UTF-8: for when a ' just won\342\200\231t do. ZFS must be the bacon of file systems. "everything's better with ZFS" From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 08:49:32 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 02B7BBF8; Tue, 13 Aug 2013 08:49:32 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 939A124B2; Tue, 13 Aug 2013 08:49:30 +0000 (UTC) Received: from porto.starpoint.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id LAA23389; Tue, 13 Aug 2013 11:49:29 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1V9AIC-0001sU-So; Tue, 13 Aug 2013 11:49:28 +0300 Message-ID: <5209F2E0.9000901@FreeBSD.org> Date: Tue, 13 Aug 2013 11:48:32 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130810 Thunderbird/17.0.8 MIME-Version: 1.0 To: Alexander Motin Subject: Re: svn commit: r254275 - head/sys/geom/raid References: <201308130756.r7D7uf9o086164@svn.freebsd.org> In-Reply-To: <201308130756.r7D7uf9o086164@svn.freebsd.org> X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 08:49:32 -0000 on 13/08/2013 10:56 Alexander Motin said the following: > + /* Deny write opens for read-only volumes. */ > + if (vol->v_read_only && acw > 0) { > + error = EROFS; > + goto out; > + } I'd like to stir a small (hopefully) discussion (again, hopefully): is EROFS appropriate here or would ENODEV be better? EROFS Read-only filesystem ENODEV Operation not supported by device -- Andriy Gapon From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 09:06:19 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 178D081A; Tue, 13 Aug 2013 09:06:19 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 04FC62610; Tue, 13 Aug 2013 09:06:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D96Ixo021480; Tue, 13 Aug 2013 09:06:18 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D96IWT021479; Tue, 13 Aug 2013 09:06:18 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201308130906.r7D96IWT021479@svn.freebsd.org> From: Dag-Erling Smørgrav Date: Tue, 13 Aug 2013 09:06:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254278 - head/crypto/openssh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 09:06:19 -0000 Author: des Date: Tue Aug 13 09:06:18 2013 New Revision: 254278 URL: http://svnweb.freebsd.org/changeset/base/254278 Log: Apply upstream revision 1.151 (fix relative symlinks) MFC after: 3 days Modified: head/crypto/openssh/sftp.c Directory Properties: head/crypto/openssh/ (props changed) Modified: head/crypto/openssh/sftp.c ============================================================================== --- head/crypto/openssh/sftp.c Tue Aug 13 09:04:20 2013 (r254277) +++ head/crypto/openssh/sftp.c Tue Aug 13 09:06:18 2013 (r254278) @@ -1328,7 +1328,8 @@ parse_dispatch_command(struct sftp_conn case I_SYMLINK: sflag = 1; case I_LINK: - path1 = make_absolute(path1, *pwd); + if (!sflag) + path1 = make_absolute(path1, *pwd); path2 = make_absolute(path2, *pwd); err = (sflag ? do_symlink : do_hardlink)(conn, path1, path2); break; From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 09:16:31 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 849CCBFB; Tue, 13 Aug 2013 09:16:31 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-bk0-x233.google.com (mail-bk0-x233.google.com [IPv6:2a00:1450:4008:c01::233]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8A0632701; Tue, 13 Aug 2013 09:16:30 +0000 (UTC) Received: by mail-bk0-f51.google.com with SMTP id mx10so2235658bkb.10 for ; Tue, 13 Aug 2013 02:16:28 -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=luKxMN3GE/mvKDnt7QNh3ofai3VPlUdcnsif9F4Rybg=; b=typSL1hSWbBPJ4Gx0bqnoBw0OEkiA2ZDVWE7QpgOac4gC4bltwBXIgrYpwrUVjajZT yIXwyzMh4WdlprOt/aUHaEy7Pmzvh+OwE55JvXVfTj7e8fSkXYlgx8pP2BL7BE2LVM8p l79rJvCuqWnCePIbb+FRIAnpJ9WxAhpw0ojXdFMlzfWrxYg6rtg6FDZ6Meqi1F0ynFL/ eZ9RFf2qQI6K16lqEHA1MMvFCdjjhzW5VmwcsvTSMXL++a3Tjiq1ThtFYsjtEp2+3QYp kk78ESgBWrzBaw08QXcy4nt0ZoEzn2eYVTQbAh69Vz7KjAes/loZw9lCMihq+9bvab5H DXKg== X-Received: by 10.204.70.141 with SMTP id d13mr1982422bkj.10.1376385387870; Tue, 13 Aug 2013 02:16:27 -0700 (PDT) Received: from mavbook.mavhome.dp.ua ([37.229.21.195]) by mx.google.com with ESMTPSA id et15sm6257332bkc.0.2013.08.13.02.16.25 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 13 Aug 2013 02:16:26 -0700 (PDT) Sender: Alexander Motin Message-ID: <5209F968.4090301@FreeBSD.org> Date: Tue, 13 Aug 2013 12:16:24 +0300 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130616 Thunderbird/17.0.6 MIME-Version: 1.0 To: Andriy Gapon Subject: Re: svn commit: r254275 - head/sys/geom/raid References: <201308130756.r7D7uf9o086164@svn.freebsd.org> <5209F2E0.9000901@FreeBSD.org> In-Reply-To: <5209F2E0.9000901@FreeBSD.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 09:16:31 -0000 On 13.08.2013 11:48, Andriy Gapon wrote: > on 13/08/2013 10:56 Alexander Motin said the following: >> + /* Deny write opens for read-only volumes. */ >> + if (vol->v_read_only && acw > 0) { >> + error = EROFS; >> + goto out; >> + } > > I'd like to stir a small (hopefully) discussion (again, hopefully): is EROFS > appropriate here or would ENODEV be better? > > EROFS Read-only filesystem > ENODEV Operation not supported by device I've seen both options and have no strong opinion here. Quick search via sources shown that some thing such as md(4) use EROFS. If that is wrong, lets fix it globally and forget. -- Alexander Motin From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 09:58:28 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 422DD51A; Tue, 13 Aug 2013 09:58:28 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2FA212965; Tue, 13 Aug 2013 09:58:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7D9wSVr040673; Tue, 13 Aug 2013 09:58:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7D9wSEn040672; Tue, 13 Aug 2013 09:58:28 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308130958.r7D9wSEn040672@svn.freebsd.org> From: Adrian Chadd Date: Tue, 13 Aug 2013 09:58:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254279 - head/sys/dev/bwi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 09:58:28 -0000 Author: adrian Date: Tue Aug 13 09:58:27 2013 New Revision: 254279 URL: http://svnweb.freebsd.org/changeset/base/254279 Log: ieee80211_rate2plcp() and ieee80211_rate2phytype() are both pre-11n routines and thus assert if one passes in a rate code with the high bit set. Since the high bit can indicate either IEEE80211_RATE_BASIC or IEEE80211_RATE_MCS, it's up to the caller to determine whether the rate is 11n or not, and either mask out the BASIC bit, or call a different function. (Yes, this does mean that net80211 should grow 11n-aware rate2phytype() and rate2plcp() functions..) This may need to happen for the other drivers - it's currently only done (now) for iwn(4) and bwi(4). PR: kern/181100 Modified: head/sys/dev/bwi/bwimac.c Modified: head/sys/dev/bwi/bwimac.c ============================================================================== --- head/sys/dev/bwi/bwimac.c Tue Aug 13 09:06:18 2013 (r254278) +++ head/sys/dev/bwi/bwimac.c Tue Aug 13 09:58:27 2013 (r254279) @@ -1427,7 +1427,8 @@ bwi_mac_set_ackrates(struct bwi_mac *mac enum ieee80211_phytype modtype; uint16_t ofs; - modtype = ieee80211_rate2phytype(rt, rs->rs_rates[i]); + modtype = ieee80211_rate2phytype(rt, + rs->rs_rates[i] & IEEE80211_RATE_VAL); switch (modtype) { case IEEE80211_T_DS: ofs = 0x4c0; @@ -1438,7 +1439,9 @@ bwi_mac_set_ackrates(struct bwi_mac *mac default: panic("unsupported modtype %u\n", modtype); } - ofs += 2*(ieee80211_rate2plcp(rs->rs_rates[i], modtype) & 0xf); + ofs += 2*(ieee80211_rate2plcp( + rs->rs_rates[i] & IEEE80211_RATE_VAL, + modtype) & 0xf); MOBJ_WRITE_2(mac, BWI_COMM_MOBJ, ofs + 0x20, MOBJ_READ_2(mac, BWI_COMM_MOBJ, ofs)); From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 13:14:14 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 24CDBA1B; Tue, 13 Aug 2013 13:14:14 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 01D0925C1; Tue, 13 Aug 2013 13:14:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DDEDY5015651; Tue, 13 Aug 2013 13:14:13 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DDEDS7015649; Tue, 13 Aug 2013 13:14:13 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308131314.r7DDEDS7015649@svn.freebsd.org> From: Ian Lepore Date: Tue, 13 Aug 2013 13:14:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254281 - head/sys/arm/freescale/imx X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 13:14:14 -0000 Author: ian Date: Tue Aug 13 13:14:13 2013 New Revision: 254281 URL: http://svnweb.freebsd.org/changeset/base/254281 Log: Add imx6 compatibility and make the driver work for any clock frequency. There are still a couple references to imx51 ccm driver functions that will need to be changed after an imx6 ccm driver is written. Reviewed by: ray Modified: head/sys/arm/freescale/imx/imx_gpt.c head/sys/arm/freescale/imx/imx_gptreg.h Modified: head/sys/arm/freescale/imx/imx_gpt.c ============================================================================== --- head/sys/arm/freescale/imx/imx_gpt.c Tue Aug 13 10:24:42 2013 (r254280) +++ head/sys/arm/freescale/imx/imx_gpt.c Tue Aug 13 13:14:13 2013 (r254281) @@ -57,8 +57,6 @@ __FBSDID("$FreeBSD$"); #include #include -#define MIN_PERIOD 100LLU - #define WRITE4(_sc, _r, _v) \ bus_space_write_4((_sc)->sc_iot, (_sc)->sc_ioh, (_r), (_v)) #define READ4(_sc, _r) \ @@ -82,11 +80,27 @@ static struct timecounter imx_gpt_timeco .tc_get_timecount = imx_gpt_get_timecount, .tc_counter_mask = ~0u, .tc_frequency = 0, - .tc_quality = 500, + .tc_quality = 1000, }; +/* Global softc pointer for use in DELAY(). */ struct imx_gpt_softc *imx_gpt_sc = NULL; -static volatile int imx_gpt_delay_count = 300; + +/* + * Hand-calibrated delay-loop counter. This was calibrated on an i.MX6 running + * at 792mhz. It will delay a bit too long on slower processors -- that's + * better than not delaying long enough. In practice this is unlikely to get + * used much since the clock driver is one of the first to start up, and once + * we're attached the delay loop switches to using the timer hardware. + */ +static const int imx_gpt_delay_count = 78; + +/* Try to divide down an available fast clock to this frequency. */ +#define TARGET_FREQUENCY 1000000 + +/* Don't try to set an event timer period smaller than this. */ +#define MIN_ET_PERIOD 10LLU + static struct resource_spec imx_gpt_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, @@ -101,7 +115,7 @@ imx_gpt_probe(device_t dev) if (!ofw_bus_is_compatible(dev, "fsl,imx51-gpt")) return (ENXIO); - device_set_desc(dev, "Freescale i.MXxxx GPT timer"); + device_set_desc(dev, "Freescale i.MX GPT timer"); return (BUS_PROBE_DEFAULT); } @@ -109,7 +123,8 @@ static int imx_gpt_attach(device_t dev) { struct imx_gpt_softc *sc; - int err; + int ctlreg, err; + uint32_t basefreq, prescale; sc = device_get_softc(dev); @@ -119,49 +134,96 @@ imx_gpt_attach(device_t dev) } sc->sc_dev = dev; - sc->sc_clksrc = GPT_CR_CLKSRC_IPG; sc->sc_iot = rman_get_bustag(sc->res[0]); sc->sc_ioh = rman_get_bushandle(sc->res[0]); + /* + * For now, just automatically choose a good clock for the hardware + * we're running on. Eventually we could allow selection from the fdt; + * the code in this driver will cope with any clock frequency. + */ + if (ofw_bus_is_compatible(dev, "fsl,imx6-gpt")) + sc->sc_clksrc = GPT_CR_CLKSRC_24M; + else + sc->sc_clksrc = GPT_CR_CLKSRC_IPG; + + ctlreg = 0; + switch (sc->sc_clksrc) { - case GPT_CR_CLKSRC_NONE: - device_printf(dev, "can't run timer without clock source\n"); - return (EINVAL); - case GPT_CR_CLKSRC_EXT: - device_printf(dev, "Not implemented. Geve me the way to get " - "external clock source frequency\n"); - return (EINVAL); case GPT_CR_CLKSRC_32K: - sc->clkfreq = 32768; + basefreq = 32768; + break; + case GPT_CR_CLKSRC_IPG: + basefreq = imx51_get_clock(IMX51CLK_IPG_CLK_ROOT); break; case GPT_CR_CLKSRC_IPG_HIGH: - sc->clkfreq = imx51_get_clock(IMX51CLK_IPG_CLK_ROOT) * 2; + basefreq = imx51_get_clock(IMX51CLK_IPG_CLK_ROOT) * 2; + break; + case GPT_CR_CLKSRC_24M: + ctlreg |= GPT_CR_24MEN; + basefreq = 24000000; break; + case GPT_CR_CLKSRC_NONE:/* Can't run without a clock. */ + case GPT_CR_CLKSRC_EXT: /* No way to get the freq of an ext clock. */ default: - sc->clkfreq = imx51_get_clock(IMX51CLK_IPG_CLK_ROOT); + device_printf(dev, "Unsupported clock source '%d'\n", + sc->sc_clksrc); + return (EINVAL); } - device_printf(dev, "Run on %dKHz clock.\n", sc->clkfreq / 1000); - /* Reset */ - WRITE4(sc, IMX_GPT_CR, GPT_CR_SWR); - /* Enable and setup counters */ - WRITE4(sc, IMX_GPT_CR, - GPT_CR_CLKSRC_IPG | /* Use IPG clock */ + /* + * The following setup sequence is from the I.MX6 reference manual, + * "Selecting the clock source". First, disable the clock and + * interrupts. This also clears input and output mode bits and in + * general completes several of the early steps in the procedure. + */ + WRITE4(sc, IMX_GPT_CR, 0); + WRITE4(sc, IMX_GPT_IR, 0); + + /* Choose the clock and the power-saving behaviors. */ + ctlreg |= + sc->sc_clksrc | /* Use selected clock */ GPT_CR_FRR | /* Just count (FreeRunner mode) */ GPT_CR_STOPEN | /* Run in STOP mode */ + GPT_CR_DOZEEN | /* Run in DOZE mode */ GPT_CR_WAITEN | /* Run in WAIT mode */ - GPT_CR_DBGEN); /* Run in DEBUG mode */ + GPT_CR_DBGEN; /* Run in DEBUG mode */ + WRITE4(sc, IMX_GPT_CR, ctlreg); - /* Disable interrupts */ - WRITE4(sc, IMX_GPT_IR, 0); + /* + * The datasheet says to do the software reset after choosing the clock + * source. It says nothing about needing to wait for the reset to + * complete, but the register description does document the fact that + * the reset isn't complete until the SWR bit reads 0, so let's be safe. + * The reset also clears all registers except for a few of the bits in + * CR, but we'll rewrite all the CR bits when we start the counter. + */ + WRITE4(sc, IMX_GPT_CR, ctlreg | GPT_CR_SWR); + while (READ4(sc, IMX_GPT_CR) & GPT_CR_SWR) + continue; + + /* Set a prescaler value that gets us near the target frequency. */ + if (basefreq < TARGET_FREQUENCY) { + prescale = 0; + sc->clkfreq = basefreq; + } else { + prescale = basefreq / TARGET_FREQUENCY; + sc->clkfreq = basefreq / prescale; + prescale -= 1; /* 1..n range is 0..n-1 in hardware. */ + } + WRITE4(sc, IMX_GPT_PR, prescale); + + /* Clear the status register. */ + WRITE4(sc, IMX_GPT_SR, GPT_IR_ALL); - /* Tick every 10us */ - /* XXX: must be calculated from clock source frequency */ - WRITE4(sc, IMX_GPT_PR, 665); - /* Use 100 KHz */ - sc->clkfreq = 100000; + /* Start the counter. */ + WRITE4(sc, IMX_GPT_CR, ctlreg | GPT_CR_EN); - /* Setup and enable the timer interrupt */ + if (bootverbose) + device_printf(dev, "Running on %dKHz clock, base freq %uHz CR=0x%08x, PR=0x%08x\n", + sc->clkfreq / 1000, basefreq, READ4(sc, IMX_GPT_CR), READ4(sc, IMX_GPT_PR)); + + /* Setup the timer interrupt. */ err = bus_setup_intr(dev, sc->res[1], INTR_TYPE_CLK, imx_gpt_intr, NULL, sc, &sc->sc_ih); if (err != 0) { @@ -171,35 +233,25 @@ imx_gpt_attach(device_t dev) return (ENXIO); } + /* Register as an eventtimer. */ sc->et.et_name = "i.MXxxx GPT Eventtimer"; sc->et.et_flags = ET_FLAGS_ONESHOT | ET_FLAGS_PERIODIC; sc->et.et_quality = 1000; sc->et.et_frequency = sc->clkfreq; - sc->et.et_min_period = (MIN_PERIOD << 32) / sc->et.et_frequency; + sc->et.et_min_period = (MIN_ET_PERIOD << 32) / sc->et.et_frequency; sc->et.et_max_period = (0xfffffffeLLU << 32) / sc->et.et_frequency; sc->et.et_start = imx_gpt_timer_start; sc->et.et_stop = imx_gpt_timer_stop; sc->et.et_priv = sc; et_register(&sc->et); - /* Disable interrupts */ - WRITE4(sc, IMX_GPT_IR, 0); - /* ACK any panding interrupts */ - WRITE4(sc, IMX_GPT_SR, (GPT_IR_ROV << 1) - 1); - - if (device_get_unit(dev) == 0) - imx_gpt_sc = sc; - + /* Register as a timecounter. */ imx_gpt_timecounter.tc_frequency = sc->clkfreq; tc_init(&imx_gpt_timecounter); - printf("clock: hz=%d stathz = %d\n", hz, stathz); - - device_printf(sc->sc_dev, "timer clock frequency %d\n", sc->clkfreq); - - imx_gpt_delay_count = imx51_get_clock(IMX51CLK_ARM_ROOT) / 4000000; - - SET4(sc, IMX_GPT_CR, GPT_CR_EN); + /* If this is the first unit, store the softc for use in DELAY. */ + if (device_get_unit(dev) == 0) + imx_gpt_sc = sc; return (0); } @@ -267,16 +319,11 @@ void cpu_initclocks(void) { - if (!imx_gpt_sc) { - panic("%s: driver has not been initialized!", __func__); + if (imx_gpt_sc == NULL) { + panic("%s: i.MX GPT driver has not been initialized!", __func__); } cpu_initclocks_bsp(); - - /* Switch to DELAY using counter */ - imx_gpt_delay_count = 0; - device_printf(imx_gpt_sc->sc_dev, - "switch DELAY to use H/W counter\n"); } static int @@ -342,29 +389,30 @@ EARLY_DRIVER_MODULE(imx_gpt, simplebus, void DELAY(int usec) { - int32_t counts; - uint32_t last; + uint64_t curcnt, endcnt, startcnt, ticks; - /* - * Check the timers are setup, if not just use a for loop for the - * meantime. - */ - if (imx_gpt_delay_count) { - for (; usec > 0; usec--) - for (counts = imx_gpt_delay_count; counts > 0; - counts--) - /* Prevent optimizing out the loop */ + /* If the timer hardware is not accessible, just use a loop. */ + if (imx_gpt_sc == NULL) { + while (usec-- > 0) + for (ticks = 0; ticks < imx_gpt_delay_count; ++ticks) cpufunc_nullop(); return; } - /* At least 1 count */ - usec = MAX(1, usec / 100); - - last = READ4(imx_gpt_sc, IMX_GPT_CNT) + usec; - while (READ4(imx_gpt_sc, IMX_GPT_CNT) < last) { - /* Prevent optimizing out the loop */ - cpufunc_nullop(); + /* + * Calculate the tick count with 64-bit values so that it works for any + * clock frequency. Loop until the hardware count reaches start+ticks. + * If the 32-bit hardware count rolls over while we're looping, just + * manually do a carry into the high bits after each read; don't worry + * that doing this on each loop iteration is inefficient -- we're trying + * to waste time here. + */ + ticks = 1 + ((uint64_t)usec * imx_gpt_sc->clkfreq) / 1000000; + curcnt = startcnt = READ4(imx_gpt_sc, IMX_GPT_CNT); + endcnt = startcnt + ticks; + while (curcnt < endcnt) { + curcnt = READ4(imx_gpt_sc, IMX_GPT_CNT); + if (curcnt < startcnt) + curcnt += 1ULL << 32; } - /* TODO: use interrupt on OCR2 */ } Modified: head/sys/arm/freescale/imx/imx_gptreg.h ============================================================================== --- head/sys/arm/freescale/imx/imx_gptreg.h Tue Aug 13 10:24:42 2013 (r254280) +++ head/sys/arm/freescale/imx/imx_gptreg.h Tue Aug 13 13:14:13 2013 (r254281) @@ -55,13 +55,16 @@ #define GPT_CR_IMX_FEDGE 2 #define GPT_CR_IMX_BOTH 3 #define GPT_CR_SWR (1 << 15) +#define GPT_CR_24MEN (1 << 10) #define GPT_CR_FRR (1 << 9) -#define GPT_CR_CLKSRC_NONE 0x00000000 -#define GPT_CR_CLKSRC_IPG 0x00000040 -#define GPT_CR_CLKSRC_IPG_HIGH 0x00000080 -#define GPT_CR_CLKSRC_EXT 0x000000c0 -#define GPT_CR_CLKSRC_32K 0x00000100 +#define GPT_CR_CLKSRC_NONE (0 << 6) +#define GPT_CR_CLKSRC_IPG (1 << 6) +#define GPT_CR_CLKSRC_IPG_HIGH (2 << 6) +#define GPT_CR_CLKSRC_EXT (3 << 6) +#define GPT_CR_CLKSRC_32K (4 << 6) +#define GPT_CR_CLKSRC_24M (5 << 6) #define GPT_CR_STOPEN (1 << 5) +#define GPT_CR_DOZEEN (1 << 4) #define GPT_CR_WAITEN (1 << 3) #define GPT_CR_DBGEN (1 << 2) #define GPT_CR_ENMOD (1 << 1) @@ -70,6 +73,8 @@ #define IMX_GPT_PR 0x0004 /* Prescaler Register R/W */ #define GPT_PR_VALUE_SHIFT 0 #define GPT_PR_VALUE_MASK 0x00000fff +#define GPT_PR_VALUE_SHIFT_24M 12 +#define GPT_PR_VALUE_MASK_24M 0x0000f000 /* Same map for SR and IR */ #define IMX_GPT_SR 0x0008 /* Status Register R/W */ From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 13:40:32 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 89067487; Tue, 13 Aug 2013 13:40:32 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 770BC27ED; Tue, 13 Aug 2013 13:40:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DDeWrN024324; Tue, 13 Aug 2013 13:40:32 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DDeWmv024323; Tue, 13 Aug 2013 13:40:32 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201308131340.r7DDeWmv024323@svn.freebsd.org> From: Gleb Smirnoff Date: Tue, 13 Aug 2013 13:40:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254282 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 13:40:32 -0000 Author: glebius Date: Tue Aug 13 13:40:31 2013 New Revision: 254282 URL: http://svnweb.freebsd.org/changeset/base/254282 Log: - Minor style(9) fix. - Bring a comment up to date. Modified: head/sys/kern/uipc_syscalls.c Modified: head/sys/kern/uipc_syscalls.c ============================================================================== --- head/sys/kern/uipc_syscalls.c Tue Aug 13 13:14:13 2013 (r254281) +++ head/sys/kern/uipc_syscalls.c Tue Aug 13 13:40:31 2013 (r254282) @@ -109,15 +109,17 @@ static int recvit(struct thread *td, int static int accept1(struct thread *td, int s, struct sockaddr *uname, socklen_t *anamelen, int flags); -static int do_sendfile(struct thread *td, struct sendfile_args *uap, int compat); +static int do_sendfile(struct thread *td, struct sendfile_args *uap, + int compat); static int getsockname1(struct thread *td, struct getsockname_args *uap, int compat); static int getpeername1(struct thread *td, struct getpeername_args *uap, int compat); counter_u64_t sfstat[sizeof(struct sfstat) / sizeof(uint64_t)]; + /* - * NSFBUFS-related variables and associated sysctls + * sendfile(2)-related variables and associated sysctls */ int nsfbufs; int nsfbufspeak; From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 14:22:34 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CF7CCEA9; Tue, 13 Aug 2013 14:22:34 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from acme.spoerlein.net (acme.spoerlein.net [IPv6:2a01:4f8:131:23c2::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4E0592A69; Tue, 13 Aug 2013 14:22:34 +0000 (UTC) Received: from localhost (acme.spoerlein.net [IPv6:2a01:4f8:131:23c2::1]) by acme.spoerlein.net (8.14.7/8.14.7) with ESMTP id r7DEMVdL042341 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Aug 2013 16:22:31 +0200 (CEST) (envelope-from uqs@FreeBSD.org) Date: Tue, 13 Aug 2013 16:22:31 +0200 From: Ulrich =?utf-8?B?U3DDtnJsZWlu?= To: Attilio Rao Subject: Re: svn commit: r254138 - in head: share/man/man9 sys/amd64/amd64 sys/arm/arm sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/agp sys/dev/drm2/i915 sys/dev/drm2/ttm sys/dev/md sys/fs/fuse sys/fs... Message-ID: <20130813142230.GE54133@acme.spoerlein.net> Mail-Followup-To: Ulrich =?utf-8?B?U3DDtnJsZWlu?= , Attilio Rao , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201308091111.r79BBCbY095386@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201308091111.r79BBCbY095386@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 14:22:34 -0000 On Fri, 2013-08-09 at 11:11:12 +0000, Attilio Rao wrote: > Author: attilio > Date: Fri Aug 9 11:11:11 2013 > New Revision: 254138 > URL: http://svnweb.freebsd.org/changeset/base/254138 > > Log: > The soft and hard busy mechanism rely on the vm object lock to work. > Unify the 2 concept into a real, minimal, sxlock where the shared > acquisition represent the soft busy and the exclusive acquisition > represent the hard busy. > The old VPO_WANTED mechanism becames the hard-path for this new lock > and it becomes per-page rather than per-object. > The vm_object lock becames an interlock for this functionality: > it can be held in both read or write mode. > However, if the vm_object lock is held in read mode while acquiring > or releasing the busy state, the thread owner cannot make any > assumption on the busy state unless it is also busying it. > > Also: > - Add a new flag to directly shared busy pages while vm_page_alloc > and vm_page_grab are being executed. This will be very helpful > once these functions happen under a read object lock. > - Move the swapping sleep into its own per-object flag > > The KPI is heavilly changed this is why the version is bumped. > It is very likely that some VM ports users will need to change > their own code. > > Sponsored by: EMC / Isilon storage division > Discussed with: alc > Reviewed by: jeff, kib > Tested by: gavin, bapt (older version) > Tested by: pho, scottl The changes to sys/vm/vm_fault.c introduce a call to vm_page_sleep_if_busy() where the return code is not checked. The other 5 places in the tree check the return code, please fix this here too. It's CID 1062398, and I would encourage folks to get an account with scan.coverity.com and have an eye on newly found defects. Thanks! Uli From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 14:25:32 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9C77E74; Tue, 13 Aug 2013 14:25:32 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from acme.spoerlein.net (acme.spoerlein.net [IPv6:2a01:4f8:131:23c2::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 34B9D2A7F; Tue, 13 Aug 2013 14:25:32 +0000 (UTC) Received: from localhost (acme.spoerlein.net [IPv6:2a01:4f8:131:23c2::1]) by acme.spoerlein.net (8.14.7/8.14.7) with ESMTP id r7DEPU5H042444 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 13 Aug 2013 16:25:30 +0200 (CEST) (envelope-from uqs@FreeBSD.org) Date: Tue, 13 Aug 2013 16:25:30 +0200 From: Ulrich =?utf-8?B?U3DDtnJsZWlu?= To: Peter Wemm Subject: Re: svn commit: r254225 - in head: . contrib/nvi contrib/nvi/build contrib/nvi/catalog contrib/nvi/cl contrib/nvi/clib contrib/nvi/common contrib/nvi/docs/USD.doc/vi.man contrib/nvi/ex contrib/nvi/incl... Message-ID: <20130813142530.GF54133@acme.spoerlein.net> Mail-Followup-To: Ulrich =?utf-8?B?U3DDtnJsZWlu?= , Peter Wemm , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201308112003.r7BK3Dqt006856@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201308112003.r7BK3Dqt006856@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 14:25:32 -0000 On Sun, 2013-08-11 at 20:03:13 +0000, Peter Wemm wrote: > Author: peter > Date: Sun Aug 11 20:03:12 2013 > New Revision: 254225 > URL: http://svnweb.freebsd.org/changeset/base/254225 > > Log: > Update nvi-1.79 to 2.1.1-4334a8297f Cool beans! Please get an account at scan.coverity.com and have a look at the fallout this causes. There are ton's of new issues within this code. Thanks Uli From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 14:59:26 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6E5BB78B; Tue, 13 Aug 2013 14:59:26 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-wg0-x232.google.com (mail-wg0-x232.google.com [IPv6:2a00:1450:400c:c00::232]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5AC2E2C81; Tue, 13 Aug 2013 14:59:25 +0000 (UTC) Received: by mail-wg0-f50.google.com with SMTP id m15so6752822wgh.29 for ; Tue, 13 Aug 2013 07:59:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:sender:in-reply-to:references:date:message-id :subject:from:to:content-type:content-transfer-encoding; bh=yuVUJgACz6oE6bRPG326uGUrLvVZmTiLEDRargwsumM=; b=k1fzU6X/+yjZWDZmVJSObYWnFvcqcBFpclFXbY/sy0Yd25e37whyaVy0xei1HyyTEU 4eJKtFPCMZ/wZt9zBBL1glRdaUZSxHh8J3yFrJhi83O+kIh/h2uHLFQXW/it48QvtQ7+ TZlcU9Bl6RnuBbs1ti21JAXVHPneEcrJgOG8ibkqJaShvnmlwBvNkEZu8dpSskL8TiYd dN9zByR3TfT0pNAwtYJ/enoBRC29qLMknqgrCdK0LYnqwWhfy2JwewBPQvqu0eci9o1S 9MTqOAMjBGlkNUMOplm2pm9M2iyJKWd0PRJYOrpKXWYUQJur0z/0KDZhbWlVd0Zk49ev LAuA== MIME-Version: 1.0 X-Received: by 10.194.48.116 with SMTP id k20mr3336245wjn.23.1376405963290; Tue, 13 Aug 2013 07:59:23 -0700 (PDT) Sender: asmrookie@gmail.com Received: by 10.217.142.76 with HTTP; Tue, 13 Aug 2013 07:59:23 -0700 (PDT) In-Reply-To: <20130813142230.GE54133@acme.spoerlein.net> References: <201308091111.r79BBCbY095386@svn.freebsd.org> <20130813142230.GE54133@acme.spoerlein.net> Date: Tue, 13 Aug 2013 16:59:23 +0200 X-Google-Sender-Auth: MvG3P6DbMeckjRlapB-VU6HbKzs Message-ID: Subject: Re: svn commit: r254138 - in head: share/man/man9 sys/amd64/amd64 sys/arm/arm sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/agp sys/dev/drm2/i915 sys/dev/drm2/ttm sys/dev/md sys/fs/fuse sys/fs... From: Attilio Rao To: =?UTF-8?Q?Ulrich_Sp=C3=B6rlein?= , Attilio Rao , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: attilio@FreeBSD.org List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 14:59:26 -0000 On Tue, Aug 13, 2013 at 4:22 PM, Ulrich Sp=C3=B6rlein wro= te: > On Fri, 2013-08-09 at 11:11:12 +0000, Attilio Rao wrote: >> Author: attilio >> Date: Fri Aug 9 11:11:11 2013 >> New Revision: 254138 >> URL: http://svnweb.freebsd.org/changeset/base/254138 >> >> Log: >> The soft and hard busy mechanism rely on the vm object lock to work. >> Unify the 2 concept into a real, minimal, sxlock where the shared >> acquisition represent the soft busy and the exclusive acquisition >> represent the hard busy. >> The old VPO_WANTED mechanism becames the hard-path for this new lock >> and it becomes per-page rather than per-object. >> The vm_object lock becames an interlock for this functionality: >> it can be held in both read or write mode. >> However, if the vm_object lock is held in read mode while acquiring >> or releasing the busy state, the thread owner cannot make any >> assumption on the busy state unless it is also busying it. >> >> Also: >> - Add a new flag to directly shared busy pages while vm_page_alloc >> and vm_page_grab are being executed. This will be very helpful >> once these functions happen under a read object lock. >> - Move the swapping sleep into its own per-object flag >> >> The KPI is heavilly changed this is why the version is bumped. >> It is very likely that some VM ports users will need to change >> their own code. >> >> Sponsored by: EMC / Isilon storage division >> Discussed with: alc >> Reviewed by: jeff, kib >> Tested by: gavin, bapt (older version) >> Tested by: pho, scottl > > The changes to sys/vm/vm_fault.c introduce a call to > vm_page_sleep_if_busy() where the return code is not checked. The other > 5 places in the tree check the return code, please fix this here too. > It's CID 1062398, and I would encourage folks to get an account with > scan.coverity.com and have an eye on newly found defects. Not true. The same call existed also before with exactly the same semantic. The trick there is that it is not important to check for the return value because we are going to retry the operation anyway. The code looks ok to me. Attilio --=20 Peace can only be achieved by understanding - A. Einstein From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 15:23:19 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0D552EE4; Tue, 13 Aug 2013 15:23:19 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mho-01-ewr.mailhop.org (mho-03-ewr.mailhop.org [204.13.248.66]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D6D1A2E55; Tue, 13 Aug 2013 15:23:18 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-01-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1V9GRE-000IRM-Df; Tue, 13 Aug 2013 15:23:12 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id r7DFN96M035935; Tue, 13 Aug 2013 09:23:09 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX1+W/QUsdM6Sw/hVGChEHodD Subject: Re: svn commit: r254217 - head/sys/conf From: Ian Lepore To: Glen Barber In-Reply-To: <201308111357.r7BDvF7H065442@svn.freebsd.org> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> Content-Type: text/plain; charset="us-ascii" Date: Tue, 13 Aug 2013 09:23:09 -0600 Message-ID: <1376407389.3320.209.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 15:23:19 -0000 On Sun, 2013-08-11 at 13:57 +0000, Glen Barber wrote: > Author: gjb > Date: Sun Aug 11 13:57:14 2013 > New Revision: 254217 > URL: http://svnweb.freebsd.org/changeset/base/254217 > > Log: > Use realpath(1) to determine the location of the newvers.sh script, > since the current working directory might not be what is expected, > causing svn{,lite}version to fail to find ${0} (itself). > > Submitted by: Dan Mack > > Modified: > head/sys/conf/newvers.sh > > Modified: head/sys/conf/newvers.sh > ============================================================================== > --- head/sys/conf/newvers.sh Sun Aug 11 11:33:48 2013 (r254216) > +++ head/sys/conf/newvers.sh Sun Aug 11 13:57:14 2013 (r254217) > @@ -96,7 +96,7 @@ for dir in /usr/bin /usr/local/bin; do > # Run svnversion from ${dir} on this script; if return code > # is not zero, the checkout might not be compatible with the > # svnversion being used. > - ${dir}/svnversion $(basename ${0}) >/dev/null 2>&1 > + ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1 > if [ $? -eq 0 ]; then > svnversion=${dir}/svnversion > break > @@ -105,7 +105,7 @@ for dir in /usr/bin /usr/local/bin; do > done > > if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then > - /usr/bin/svnliteversion $(basename ${0}) >/dev/null 2>&1 > + /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1 > if [ $? -eq 0 ]; then > svnversion=/usr/bin/svnliteversion > else This is still not working for me. I don't see how it could be working properly for anyone. The newvers.sh isn't run from the make rules, it's sourced into the rules. In that context, ${0} appears to resolve to simply "sh" or "/bin/sh" (depending on host OS version) not the name of the script that was sourced. Here's a minimal example: root@wand:/tmp # cat /tmp/foo #!/bin/sh - echo ${0} root@wand:/tmp # cat /tmp/Makefile all: @echo "Sourcing /tmp/foo..."; \ . /tmp/foo root@wand:/tmp # make Sourcing /tmp/foo... /bin/sh There are other references to $0 within newvers.sh, and if you add a 'set -x' to the beginning of the script you can see that they all resolve to /bin/sh, which seems to imply that there's some stuff that's working by accident in that script when it's sourced in. -- Ian From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 15:28:26 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2303619B; Tue, 13 Aug 2013 15:28:26 +0000 (UTC) (envelope-from slw@zxy.spb.ru) Received: from zxy.spb.ru (zxy.spb.ru [195.70.199.98]) by mx1.freebsd.org (Postfix) with ESMTP id D60322ED2; Tue, 13 Aug 2013 15:28:25 +0000 (UTC) Received: from slw by zxy.spb.ru with local (Exim 4.69 (FreeBSD)) (envelope-from ) id 1V9GYH-000CFS-2n; Tue, 13 Aug 2013 19:30:29 +0400 Date: Tue, 13 Aug 2013 19:30:29 +0400 From: Slawa Olhovchenkov To: "Kenneth D. Merry" Subject: Re: svn commit: r253550 - head/sys/dev/mps Message-ID: <20130813153029.GD3796@zxy.spb.ru> References: <201307221841.r6MIfsoQ075667@svn.freebsd.org> <20130810181454.GA47115@zxy.spb.ru> <20130812155647.GA11414@nargothrond.kdm.org> <20130812174545.GA3796@zxy.spb.ru> <20130812190229.GA24478@nargothrond.kdm.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130812190229.GA24478@nargothrond.kdm.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: slw@zxy.spb.ru X-SA-Exim-Scanned: No (on zxy.spb.ru); SAEximRunCond expanded to false Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 15:28:26 -0000 On Mon, Aug 12, 2013 at 01:02:29PM -0600, Kenneth D. Merry wrote: > If you really want one now, I've attached a patch from stable/9 on June > 27th. It may or may not apply now. Its apply witch litle edit. > > > Now that it's done, I hope to merge that change to stable/9 this week. > > > > Also, I see strange behaviour of LSI 9211-8i -- after some activity > > got timeout and HBA put in looped reset. > > That's not good. Try with the newer driver and see whether if affects the > behavior. Witch this driver I got same behavior: after intesive i/o got timeout, driver try re-init controller without success. On all HDD activity LED ON w/o blinking at this moment. From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 15:32:26 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 877653D0; Tue, 13 Aug 2013 15:32:26 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [208.86.227.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3F0FF2F54; Tue, 13 Aug 2013 15:32:25 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 2E2C8DE99; Tue, 13 Aug 2013 15:32:24 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 2E2C8DE99 Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 13 Aug 2013 11:32:22 -0400 From: Glen Barber To: Ian Lepore Subject: Re: svn commit: r254217 - head/sys/conf Message-ID: <20130813153222.GL2432@glenbarber.us> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> <1376407389.3320.209.camel@revolution.hippie.lan> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="eUGqGfkt69yEwRle" Content-Disposition: inline In-Reply-To: <1376407389.3320.209.camel@revolution.hippie.lan> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 15:32:26 -0000 --eUGqGfkt69yEwRle Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Aug 13, 2013 at 09:23:09AM -0600, Ian Lepore wrote: > On Sun, 2013-08-11 at 13:57 +0000, Glen Barber wrote: > > Author: gjb > > Date: Sun Aug 11 13:57:14 2013 > > New Revision: 254217 > > URL: http://svnweb.freebsd.org/changeset/base/254217 > >=20 > > Log: > > Use realpath(1) to determine the location of the newvers.sh script, > > since the current working directory might not be what is expected, > > causing svn{,lite}version to fail to find ${0} (itself). > > =20 > > Submitted by: Dan Mack > >=20 > > Modified: > > head/sys/conf/newvers.sh > >=20 > > Modified: head/sys/conf/newvers.sh > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > > --- head/sys/conf/newvers.sh Sun Aug 11 11:33:48 2013 (r254216) > > +++ head/sys/conf/newvers.sh Sun Aug 11 13:57:14 2013 (r254217) > > @@ -96,7 +96,7 @@ for dir in /usr/bin /usr/local/bin; do > > # Run svnversion from ${dir} on this script; if return code > > # is not zero, the checkout might not be compatible with the > > # svnversion being used. > > - ${dir}/svnversion $(basename ${0}) >/dev/null 2>&1 > > + ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1 > > if [ $? -eq 0 ]; then > > svnversion=3D${dir}/svnversion > > break > > @@ -105,7 +105,7 @@ for dir in /usr/bin /usr/local/bin; do > > done > > =20 > > if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then > > - /usr/bin/svnliteversion $(basename ${0}) >/dev/null 2>&1 > > + /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1 > > if [ $? -eq 0 ]; then > > svnversion=3D/usr/bin/svnliteversion > > else >=20 > This is still not working for me. I don't see how it could be working > properly for anyone. >=20 > The newvers.sh isn't run from the make rules, it's sourced into the > rules. In that context, ${0} appears to resolve to simply "sh" or > "/bin/sh" (depending on host OS version) not the name of the script that > was sourced. Here's a minimal example: >=20 > root@wand:/tmp # cat /tmp/foo > #!/bin/sh - > echo ${0} > =20 > root@wand:/tmp # cat /tmp/Makefile=20 > all: > @echo "Sourcing /tmp/foo..."; \ > . /tmp/foo > =20 > root@wand:/tmp # make > Sourcing /tmp/foo... > /bin/sh >=20 > There are other references to $0 within newvers.sh, and if you add a > 'set -x' to the beginning of the script you can see that they all > resolve to /bin/sh, which seems to imply that there's some stuff that's > working by accident in that script when it's sourced in. >=20 I tested this with a 'buildkernel', not running the script directly. In my tests, I did add 'set -x' so I could verify the right thing was being done, which in my case, it was. Can you 'set -x' in the script, and provide the output of 'make -s builkdkernel' ? Glen --eUGqGfkt69yEwRle Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSClGGAAoJEFJPDDeguUajgjcH/3+cjWxs/3n3VXeMC0Spe+kD 6/fj7AxND6dwZnEYdHcexlIx3CePyNRBtqitr2izrmmg+ya+q60uPUMKc7qbTkFJ GVJeBfZQ04WSe1r5u13mFeYaxST29fHXGp+RxGrCVngRWD6zvzTox29RzCfxx0kx N2c030GMwXg0sdmqfE5jIFlG6BLfRDqAm+/d3B5eU9SQMCacamKKJw/enhdeHzWm GjuhmkHfQ/OqklTpT6v7oJSjwpWZhxVqKD9QAkB5K8CIjHVDCbokt8hs3vP4sjoz aKfF+S+8EYsam1AfHMKN84SptmBsXXq3JHQeQS5ALd9aZLESVkDKEg04jM+7D1M= =B/gZ -----END PGP SIGNATURE----- --eUGqGfkt69yEwRle-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 15:40:45 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 43EA968C; Tue, 13 Aug 2013 15:40:45 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 30A462FF2; Tue, 13 Aug 2013 15:40:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DFejG2071131; Tue, 13 Aug 2013 15:40:45 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DFehRl071120; Tue, 13 Aug 2013 15:40:43 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201308131540.r7DFehRl071120@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Tue, 13 Aug 2013 15:40:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254283 - head/sys/fs/ext2fs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 15:40:45 -0000 Author: pfg Date: Tue Aug 13 15:40:43 2013 New Revision: 254283 URL: http://svnweb.freebsd.org/changeset/base/254283 Log: Define ext2fs local types and use them. Add definitions for e2fs_daddr_t, e4fs_daddr_t in addition to the already existing e2fs_lbn_t and adjust them for ext4. Other than making the code more readable these changes should fix problems related to big filesystems. Setting the proper types can be tricky so the process was helped by looking at UFS. In our implementation, logical block numbers can be negative and the code depends on it. In ext2, block numbers are unsigned so it is convenient to keep e2fs_daddr_t unsigned and use the complete 32 bits. In the case of e4fs_daddr_t, while the value should be unsigned, for ext4 we only need to support 48 bits so preserving an extra bit from the sign is not an issue. While here also drop the ext2_setblock() prototype that was never used. Discussed with: mckusick, bde MFC after: 3 weeks Modified: head/sys/fs/ext2fs/ext2_alloc.c head/sys/fs/ext2fs/ext2_balloc.c head/sys/fs/ext2fs/ext2_bmap.c head/sys/fs/ext2fs/ext2_extern.h head/sys/fs/ext2fs/ext2_inode.c head/sys/fs/ext2fs/ext2_subr.c head/sys/fs/ext2fs/ext2_vnops.c head/sys/fs/ext2fs/inode.h Modified: head/sys/fs/ext2fs/ext2_alloc.c ============================================================================== --- head/sys/fs/ext2fs/ext2_alloc.c Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_alloc.c Tue Aug 13 15:40:43 2013 (r254283) @@ -80,8 +80,8 @@ static daddr_t ext2_mapsearch(struct m_ * available block is located. */ int -ext2_alloc(struct inode *ip, int32_t lbn, int32_t bpref, int size, - struct ucred *cred, int32_t *bnp) +ext2_alloc(struct inode *ip, daddr_t lbn, e4fs_daddr_t bpref, int size, + struct ucred *cred, e4fs_daddr_t *bnp) { struct m_ext2fs *fs; struct ext2mount *ump; @@ -166,7 +166,8 @@ ext2_reallocblks(struct vop_reallocblks_ struct cluster_save *buflist; struct indir start_ap[NIADDR + 1], end_ap[NIADDR + 1], *idp; e2fs_lbn_t start_lbn, end_lbn; - int32_t soff, newblk, blkno; + int soff; + e2fs_daddr_t newblk, blkno; int i, len, start_lvl, end_lvl, pref, ssize; if (doreallocblks == 0) @@ -250,7 +251,7 @@ ext2_reallocblks(struct vop_reallocblks_ /* * Search the block map looking for an allocation of the desired size. */ - if ((newblk = (int32_t)ext2_hashalloc(ip, dtog(fs, pref), pref, + if ((newblk = (e2fs_daddr_t)ext2_hashalloc(ip, dtog(fs, pref), pref, len, ext2_clusteralloc)) == 0){ EXT2_UNLOCK(ump); goto fail; @@ -550,9 +551,9 @@ ext2_dirpref(struct inode *pip) * of the above. Then, blocknr tells us the number of the block * that will hold the pointer */ -int32_t -ext2_blkpref(struct inode *ip, e2fs_lbn_t lbn, int indx, int32_t *bap, - int32_t blocknr) +e4fs_daddr_t +ext2_blkpref(struct inode *ip, e2fs_lbn_t lbn, int indx, e2fs_daddr_t *bap, + e2fs_daddr_t blocknr) { int tmp; mtx_assert(EXT2_MTX(ip->i_ump), MA_OWNED); @@ -575,7 +576,7 @@ ext2_blkpref(struct inode *ip, e2fs_lbn_ follow the rule that a block should be allocated near its inode */ return blocknr ? blocknr : - (int32_t)(ip->i_block_group * + (e2fs_daddr_t)(ip->i_block_group * EXT2_BLOCKS_PER_GROUP(ip->i_e2fs)) + ip->i_e2fs->e2fs->e2fs_first_dblock; } @@ -955,7 +956,7 @@ gotit: * */ void -ext2_blkfree(struct inode *ip, int32_t bno, long size) +ext2_blkfree(struct inode *ip, e4fs_daddr_t bno, long size) { struct m_ext2fs *fs; struct buf *bp; Modified: head/sys/fs/ext2fs/ext2_balloc.c ============================================================================== --- head/sys/fs/ext2fs/ext2_balloc.c Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_balloc.c Tue Aug 13 15:40:43 2013 (r254283) @@ -65,8 +65,8 @@ ext2_balloc(struct inode *ip, e2fs_lbn_t struct buf *bp, *nbp; struct vnode *vp = ITOV(ip); struct indir indirs[NIADDR + 2]; - uint32_t nb, newb; - int32_t *bap, pref; + e4fs_daddr_t nb, newb; + e2fs_daddr_t *bap, pref; int osize, nsize, num, i, error; *bpp = NULL; @@ -195,7 +195,7 @@ ext2_balloc(struct inode *ip, e2fs_lbn_t brelse(bp); return (error); } - bap = (int32_t *)bp->b_data; + bap = (e2fs_daddr_t *)bp->b_data; nb = bap[indirs[i].in_off]; if (i == num) break; Modified: head/sys/fs/ext2fs/ext2_bmap.c ============================================================================== --- head/sys/fs/ext2fs/ext2_bmap.c Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_bmap.c Tue Aug 13 15:40:43 2013 (r254283) @@ -62,7 +62,7 @@ static int ext4_bmapext(struct vnode *, int ext2_bmap(struct vop_bmap_args *ap) { - int64_t blkno; + daddr_t blkno; int error; /* @@ -139,7 +139,7 @@ ext4_bmapext(struct vnode *vp, int32_t b */ int -ext2_bmaparray(struct vnode *vp, int32_t bn, int64_t *bnp, int *runp, int *runb) +ext2_bmaparray(struct vnode *vp, daddr_t bn, daddr_t *bnp, int *runp, int *runb) { struct inode *ip; struct buf *bp; @@ -182,7 +182,7 @@ ext2_bmaparray(struct vnode *vp, int32_t if (*bnp == 0) { *bnp = -1; } else if (runp) { - int32_t bnb = bn; + daddr_t bnb = bn; for (++bn; bn < NDADDR && *runp < maxrun && is_sequential(ump, ip->i_db[bn - 1], ip->i_db[bn]); ++bn, ++*runp); @@ -190,7 +190,7 @@ ext2_bmaparray(struct vnode *vp, int32_t if (runb && (bn > 0)) { for (--bn; (bn >= 0) && (*runb < maxrun) && is_sequential(ump, ip->i_db[bn], - ip->i_db[bn+1]); + ip->i_db[bn + 1]); --bn, ++*runb); } } @@ -239,19 +239,20 @@ ext2_bmaparray(struct vnode *vp, int32_t } } - daddr = ((int32_t *)bp->b_data)[ap->in_off]; + daddr = ((e2fs_daddr_t *)bp->b_data)[ap->in_off]; if (num == 1 && daddr && runp) { for (bn = ap->in_off + 1; bn < MNINDIR(ump) && *runp < maxrun && is_sequential(ump, - ((int32_t *)bp->b_data)[bn - 1], - ((int32_t *)bp->b_data)[bn]); + ((e2fs_daddr_t *)bp->b_data)[bn - 1], + ((e2fs_daddr_t *)bp->b_data)[bn]); ++bn, ++*runp); bn = ap->in_off; if (runb && bn) { for (--bn; bn >= 0 && *runb < maxrun && - is_sequential(ump, ((int32_t *)bp->b_data)[bn], - ((int32_t *)bp->b_data)[bn+1]); + is_sequential(ump, + ((e2fs_daddr_t *)bp->b_data)[bn], + ((e2fs_daddr_t *)bp->b_data)[bn + 1]); --bn, ++*runb); } } @@ -287,7 +288,7 @@ ext2_bmaparray(struct vnode *vp, int32_t * once with the offset into the page itself. */ int -ext2_getlbns(struct vnode *vp, int32_t bn, struct indir *ap, int *nump) +ext2_getlbns(struct vnode *vp, daddr_t bn, struct indir *ap, int *nump) { long blockcnt; e2fs_lbn_t metalbn, realbn; Modified: head/sys/fs/ext2fs/ext2_extern.h ============================================================================== --- head/sys/fs/ext2fs/ext2_extern.h Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_extern.h Tue Aug 13 15:40:43 2013 (r254283) @@ -49,24 +49,24 @@ struct vfsconf; struct vnode; int ext2_add_entry(struct vnode *, struct ext2fs_direct_2 *); -int ext2_alloc(struct inode *, - int32_t, int32_t, int, struct ucred *, int32_t *); +int ext2_alloc(struct inode *, daddr_t, e4fs_daddr_t, int, + struct ucred *, e4fs_daddr_t *); int ext2_balloc(struct inode *, e2fs_lbn_t, int, struct ucred *, struct buf **, int); int ext2_blkatoff(struct vnode *, off_t, char **, struct buf **); -void ext2_blkfree(struct inode *, int32_t, long); -int32_t ext2_blkpref(struct inode *, e2fs_lbn_t, int, int32_t *, int32_t); +void ext2_blkfree(struct inode *, e4fs_daddr_t, long); +e4fs_daddr_t ext2_blkpref(struct inode *, e2fs_lbn_t, int, e2fs_daddr_t *, + e2fs_daddr_t); int ext2_bmap(struct vop_bmap_args *); -int ext2_bmaparray(struct vnode *, int32_t, int64_t *, int *, int *); +int ext2_bmaparray(struct vnode *, daddr_t, daddr_t *, int *, int *); void ext2_clusteracct(struct m_ext2fs *, char *, int, daddr_t, int); void ext2_dirbad(struct inode *ip, doff_t offset, char *how); void ext2_ei2i(struct ext2fs_dinode *, struct inode *); -int ext2_getlbns(struct vnode *, int32_t, struct indir *, int *); +int ext2_getlbns(struct vnode *, daddr_t, struct indir *, int *); void ext2_i2ei(struct inode *, struct ext2fs_dinode *); void ext2_itimes(struct vnode *vp); int ext2_reallocblks(struct vop_reallocblks_args *); int ext2_reclaim(struct vop_reclaim_args *); -void ext2_setblock(struct m_ext2fs *, u_char *, int32_t); int ext2_truncate(struct vnode *, off_t, int, struct ucred *, struct thread *); int ext2_update(struct vnode *, int); int ext2_valloc(struct vnode *, int, struct ucred *, struct vnode **); Modified: head/sys/fs/ext2fs/ext2_inode.c ============================================================================== --- head/sys/fs/ext2fs/ext2_inode.c Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_inode.c Tue Aug 13 15:40:43 2013 (r254283) @@ -54,8 +54,8 @@ #include #include -static int ext2_indirtrunc(struct inode *, int32_t, int32_t, int32_t, int, - long *); +static int ext2_indirtrunc(struct inode *, daddr_t, daddr_t, + daddr_t, int, e4fs_daddr_t *); /* * Update the access, modified, and inode change times as specified by the @@ -119,7 +119,7 @@ ext2_truncate(struct vnode *vp, off_t le struct m_ext2fs *fs; struct buf *bp; int offset, size, level; - long count, nblocks, blocksreleased = 0; + e4fs_daddr_t count, nblocks, blocksreleased = 0; int error, i, allerror; off_t osize; @@ -356,16 +356,16 @@ done: */ static int -ext2_indirtrunc(struct inode *ip, int32_t lbn, int32_t dbn, int32_t lastbn, - int level, long *countp) +ext2_indirtrunc(struct inode *ip, daddr_t lbn, daddr_t dbn, + daddr_t lastbn, int level, e4fs_daddr_t *countp) { struct buf *bp; struct m_ext2fs *fs = ip->i_e2fs; struct vnode *vp; - int32_t *bap, *copy, nb, nlbn, last; - long blkcount, factor; - int i, nblocks, blocksreleased = 0; - int error = 0, allerror = 0; + e2fs_daddr_t *bap, *copy; + int i, nblocks, error = 0, allerror = 0; + e2fs_lbn_t nb, nlbn, last; + e4fs_daddr_t blkcount, factor, blocksreleased = 0; /* * Calculate index in current block of last @@ -405,11 +405,11 @@ ext2_indirtrunc(struct inode *ip, int32_ return (error); } - bap = (int32_t *)bp->b_data; + bap = (e2fs_daddr_t *)bp->b_data; copy = malloc(fs->e2fs_bsize, M_TEMP, M_WAITOK); bcopy((caddr_t)bap, (caddr_t)copy, (u_int)fs->e2fs_bsize); bzero((caddr_t)&bap[last + 1], - (u_int)(NINDIR(fs) - (last + 1)) * sizeof(int32_t)); + (NINDIR(fs) - (last + 1)) * sizeof(e2fs_daddr_t)); if (last == -1) bp->b_flags |= B_INVAL; if (DOINGASYNC(vp)) { Modified: head/sys/fs/ext2fs/ext2_subr.c ============================================================================== --- head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 15:40:43 2013 (r254283) @@ -135,7 +135,7 @@ void ext2_checkoverlap(struct buf *bp, struct inode *ip) { struct buf *ebp, *ep; - int32_t start, last; + e4fs_daddr_t start, last; struct vnode *vp; ebp = &buf[nbuf]; Modified: head/sys/fs/ext2fs/ext2_vnops.c ============================================================================== --- head/sys/fs/ext2fs/ext2_vnops.c Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/ext2_vnops.c Tue Aug 13 15:40:43 2013 (r254283) @@ -1329,7 +1329,7 @@ ext2_strategy(struct vop_strategy_args * struct vnode *vp = ap->a_vp; struct inode *ip; struct bufobj *bo; - int64_t blkno; + daddr_t blkno; int error; ip = VTOI(vp); Modified: head/sys/fs/ext2fs/inode.h ============================================================================== --- head/sys/fs/ext2fs/inode.h Tue Aug 13 13:40:31 2013 (r254282) +++ head/sys/fs/ext2fs/inode.h Tue Aug 13 15:40:43 2013 (r254283) @@ -54,9 +54,11 @@ #define NIADDR 3 /* Indirect addresses in inode. */ /* - * The size of physical and logical block numbers and time fields in UFS. + * The size of physical and logical block numbers in EXT2FS. */ -typedef int32_t e2fs_lbn_t; +typedef uint32_t e2fs_daddr_t; +typedef int64_t e2fs_lbn_t; +typedef int64_t e4fs_daddr_t; /* * The inode is used to describe each active (or recently active) file in the From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 16:29:55 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 69C20837; Tue, 13 Aug 2013 16:29:55 +0000 (UTC) (envelope-from uspoerlein@gmail.com) Received: from mail-ob0-x22a.google.com (mail-ob0-x22a.google.com [IPv6:2607:f8b0:4003:c01::22a]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0C56722F9; Tue, 13 Aug 2013 16:29:54 +0000 (UTC) Received: by mail-ob0-f170.google.com with SMTP id eh20so5643034obb.1 for ; Tue, 13 Aug 2013 09:29:54 -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:message-id:subject :from:to:cc:content-type:content-transfer-encoding; bh=iqQO9FTxzkUxjKOulMeStoukIXCzcDlUq7VU6t4kyPg=; b=o/3dN2oLLotmJM7hlknVkdk4OX9JTY1jeWpah/C+lkPi8EmvUsdiosqD8GgnwWPI6M G1w6gfOI69xVILas/CQAilyiCSxJLFEkp/eeAn2JYBv0KM+E2jkuB+2z1G+KZilyyjd1 5fgXJnYbxVSPofFEkjd99xmAvkJrGldtww5AczvFyeAPPgylbOql/hHkHjYuB4tlt3dH hNNfyeXpKkGlEhQqDXdpsHwfn9+OpfMjmTflKON39CK14RMqUMlAcKHK2OZv/AsFgB23 r4Gii2f7PlDpzYIxdbp1YG9q/PuY0jz1q4h4xMnQFXaV0gIPhwTdNgKmpeRw5z4qOexp FVLg== MIME-Version: 1.0 X-Received: by 10.182.27.74 with SMTP id r10mr1597871obg.63.1376411394323; Tue, 13 Aug 2013 09:29:54 -0700 (PDT) Sender: uspoerlein@gmail.com Received: by 10.76.27.135 with HTTP; Tue, 13 Aug 2013 09:29:54 -0700 (PDT) In-Reply-To: References: <201308091111.r79BBCbY095386@svn.freebsd.org> <20130813142230.GE54133@acme.spoerlein.net> Date: Tue, 13 Aug 2013 18:29:54 +0200 X-Google-Sender-Auth: n6TTzJ0H05PYKW4zzWXYuMzh8PM Message-ID: Subject: Re: svn commit: r254138 - in head: share/man/man9 sys/amd64/amd64 sys/arm/arm sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/agp sys/dev/drm2/i915 sys/dev/drm2/ttm sys/dev/md sys/fs/fuse sys/fs... From: =?UTF-8?Q?Ulrich_Sp=C3=B6rlein?= To: attilio@freebsd.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 16:29:55 -0000 2013/8/13 Attilio Rao : > On Tue, Aug 13, 2013 at 4:22 PM, Ulrich Sp=C3=B6rlein w= rote: >> On Fri, 2013-08-09 at 11:11:12 +0000, Attilio Rao wrote: >>> Author: attilio >>> Date: Fri Aug 9 11:11:11 2013 >>> New Revision: 254138 >>> URL: http://svnweb.freebsd.org/changeset/base/254138 >>> >>> Log: >>> The soft and hard busy mechanism rely on the vm object lock to work. >>> Unify the 2 concept into a real, minimal, sxlock where the shared >>> acquisition represent the soft busy and the exclusive acquisition >>> represent the hard busy. >>> The old VPO_WANTED mechanism becames the hard-path for this new lock >>> and it becomes per-page rather than per-object. >>> The vm_object lock becames an interlock for this functionality: >>> it can be held in both read or write mode. >>> However, if the vm_object lock is held in read mode while acquiring >>> or releasing the busy state, the thread owner cannot make any >>> assumption on the busy state unless it is also busying it. >>> >>> Also: >>> - Add a new flag to directly shared busy pages while vm_page_alloc >>> and vm_page_grab are being executed. This will be very helpful >>> once these functions happen under a read object lock. >>> - Move the swapping sleep into its own per-object flag >>> >>> The KPI is heavilly changed this is why the version is bumped. >>> It is very likely that some VM ports users will need to change >>> their own code. >>> >>> Sponsored by: EMC / Isilon storage division >>> Discussed with: alc >>> Reviewed by: jeff, kib >>> Tested by: gavin, bapt (older version) >>> Tested by: pho, scottl >> >> The changes to sys/vm/vm_fault.c introduce a call to >> vm_page_sleep_if_busy() where the return code is not checked. The other >> 5 places in the tree check the return code, please fix this here too. >> It's CID 1062398, and I would encourage folks to get an account with >> scan.coverity.com and have an eye on newly found defects. > > Not true. > The same call existed also before with exactly the same semantic. > The trick there is that it is not important to check for the return > value because we are going to retry the operation anyway. > The code looks ok to me. Thanks for the explanation. The code shuffling meant that Coverity saw it as new code, that's what prompted me to email you. Cheers, Uli From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 17:02:22 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 8818B479; Tue, 13 Aug 2013 17:02:22 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mho-01-ewr.mailhop.org (mho-03-ewr.mailhop.org [204.13.248.66]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 49B1F2520; Tue, 13 Aug 2013 17:02:21 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-01-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1V9HzA-000Aoj-Qe; Tue, 13 Aug 2013 17:02:21 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id r7DH2IhS035999; Tue, 13 Aug 2013 11:02:18 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX185kQTvWIYby9fkR0k4cMI1 Subject: Re: svn commit: r254217 - head/sys/conf From: Ian Lepore To: Glen Barber In-Reply-To: <20130813153222.GL2432@glenbarber.us> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> <1376407389.3320.209.camel@revolution.hippie.lan> <20130813153222.GL2432@glenbarber.us> Content-Type: text/plain; charset="us-ascii" Date: Tue, 13 Aug 2013 11:02:17 -0600 Message-ID: <1376413337.3320.224.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 17:02:22 -0000 On Tue, 2013-08-13 at 11:32 -0400, Glen Barber wrote: > On Tue, Aug 13, 2013 at 09:23:09AM -0600, Ian Lepore wrote: > > On Sun, 2013-08-11 at 13:57 +0000, Glen Barber wrote: > > > Author: gjb > > > Date: Sun Aug 11 13:57:14 2013 > > > New Revision: 254217 > > > URL: http://svnweb.freebsd.org/changeset/base/254217 > > > > > > Log: > > > Use realpath(1) to determine the location of the newvers.sh script, > > > since the current working directory might not be what is expected, > > > causing svn{,lite}version to fail to find ${0} (itself). > > > > > > Submitted by: Dan Mack > > > > > > Modified: > > > head/sys/conf/newvers.sh > > > > > > Modified: head/sys/conf/newvers.sh > > > ============================================================================== > > > --- head/sys/conf/newvers.sh Sun Aug 11 11:33:48 2013 (r254216) > > > +++ head/sys/conf/newvers.sh Sun Aug 11 13:57:14 2013 (r254217) > > > @@ -96,7 +96,7 @@ for dir in /usr/bin /usr/local/bin; do > > > # Run svnversion from ${dir} on this script; if return code > > > # is not zero, the checkout might not be compatible with the > > > # svnversion being used. > > > - ${dir}/svnversion $(basename ${0}) >/dev/null 2>&1 > > > + ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1 > > > if [ $? -eq 0 ]; then > > > svnversion=${dir}/svnversion > > > break > > > @@ -105,7 +105,7 @@ for dir in /usr/bin /usr/local/bin; do > > > done > > > > > > if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then > > > - /usr/bin/svnliteversion $(basename ${0}) >/dev/null 2>&1 > > > + /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1 > > > if [ $? -eq 0 ]; then > > > svnversion=/usr/bin/svnliteversion > > > else > > > > This is still not working for me. I don't see how it could be working > > properly for anyone. > > > > The newvers.sh isn't run from the make rules, it's sourced into the > > rules. In that context, ${0} appears to resolve to simply "sh" or > > "/bin/sh" (depending on host OS version) not the name of the script that > > was sourced. Here's a minimal example: > > > > root@wand:/tmp # cat /tmp/foo > > #!/bin/sh - > > echo ${0} > > > > root@wand:/tmp # cat /tmp/Makefile > > all: > > @echo "Sourcing /tmp/foo..."; \ > > . /tmp/foo > > > > root@wand:/tmp # make > > Sourcing /tmp/foo... > > /bin/sh > > > > There are other references to $0 within newvers.sh, and if you add a > > 'set -x' to the beginning of the script you can see that they all > > resolve to /bin/sh, which seems to imply that there's some stuff that's > > working by accident in that script when it's sourced in. > > > > I tested this with a 'buildkernel', not running the script directly. In > my tests, I did add 'set -x' so I could verify the right thing was being > done, which in my case, it was. > > Can you 'set -x' in the script, and provide the output of 'make -s > builkdkernel' ? > > Glen > It fails for me during buildworld (I haven't gotten to buildkernel yet). This is a cross-build of armv6 from i386, if that matters. When I use "make -s" the build fails immediately in "building an up to date make" because it somehow has $DESTDIR/usr/lib/libc.a as a dependency for bmake/unit-tests, and clearly that isn't going to exist before installworld has created it (when DESTDIR is other than / which is always is for me). For some reason I can't even begin to figure out, I don't get that error with the -s left off. Hrm, I just noticed I get the same bmake build error at the beginning with and without the -s, the difference is that without -s it ignores the error and keeps building. Seems like a different bug. So, leaving the make -s problems aside, a regular "make buildworld" results in http://people.freebsd.org/~ian/make.buildworld.log (the failure is around line 6178). I don't know what's different between make with and without -s but perhaps it somehow toggles this problem. BTW, I'm seeing this problem at r254281, and did not see it at r253965. -- Ian From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 17:12:24 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 24B78655; Tue, 13 Aug 2013 17:12:24 +0000 (UTC) (envelope-from sfourman@gmail.com) Received: from mail-vb0-x235.google.com (mail-vb0-x235.google.com [IPv6:2607:f8b0:400c:c02::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A0F2A2593; Tue, 13 Aug 2013 17:12:23 +0000 (UTC) Received: by mail-vb0-f53.google.com with SMTP id i3so6857013vbh.12 for ; Tue, 13 Aug 2013 10:12:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=EOQlYQLRcedVDkw3RUlB6m4G92gVDXVl3/w3sDtjhMY=; b=O/ExjfqUcYKNPktQWv1X+YiaL/OV42HDTblxnKAgyy4pSj3GgkHf2jpPeTz3Gub8Ma KVqsof1zxtjSJciIK+JfablCfw0WgCIZwCTPN1KGGZjedAAbknpROAcpREzI3i3goe/T GHVxRNHOqw9Xa7MV5Y3hp+qy60q3xW3IbZSPByzMEK8Ga1cSHklKpjwWqG3IxWHiQAYv uUtlHBRjTVHVUYOFKnYjIgAyfNJ5XXeEnBj6o9Cz8SRa1eFrhQzVL6MuirX9eA4bTQy7 jye8/o6V1K1eSN5CKvtNZxD32Wmmhe0cRwcUKFVxJbSSHv9+y+GvKNLVCMMnQOBqxFIK rJjw== MIME-Version: 1.0 X-Received: by 10.58.208.130 with SMTP id me2mr5319412vec.13.1376413941622; Tue, 13 Aug 2013 10:12:21 -0700 (PDT) Received: by 10.220.96.78 with HTTP; Tue, 13 Aug 2013 10:12:21 -0700 (PDT) In-Reply-To: <201308131540.r7DFehRl071120@svn.freebsd.org> References: <201308131540.r7DFehRl071120@svn.freebsd.org> Date: Tue, 13 Aug 2013 13:12:21 -0400 Message-ID: Subject: Re: svn commit: r254283 - head/sys/fs/ext2fs From: "Sam Fourman Jr." To: "Pedro F. Giffuni" Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 17:12:24 -0000 On Tue, Aug 13, 2013 at 11:40 AM, Pedro F. Giffuni wrote: > Author: pfg > Date: Tue Aug 13 15:40:43 2013 > New Revision: 254283 > URL: http://svnweb.freebsd.org/changeset/base/254283 > > Log: > Define ext2fs local types and use them. > > Add definitions for e2fs_daddr_t, e4fs_daddr_t in addition > to the already existing e2fs_lbn_t and adjust them for ext4. > Other than making the code more readable these changes should > fix problems related to big filesystems. > > Setting the proper types can be tricky so the process was > helped by looking at UFS. In our implementation, logical block > numbers can be negative and the code depends on it. In ext2, > block numbers are unsigned so it is convenient to keep > e2fs_daddr_t unsigned and use the complete 32 bits. In the > case of e4fs_daddr_t, while the value should be unsigned, for > ext4 we only need to support 48 bits so preserving an extra > bit from the sign is not an issue. > > While here also drop the ext2_setblock() prototype that was > never used. > > Discussed with: mckusick, bde > MFC after: 3 weeks > I think this change broke the build..... root@Border:/usr/src # svnlite info Path: . Working Copy Root Path: /usr/src URL: http://svn0.us-west.freebsd.org/base/head Relative URL: ^/head Repository Root: http://svn0.us-west.freebsd.org/base Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f Revision: 254284 Node Kind: directory Schedule: normal Last Changed Author: pfg Last Changed Rev: 254283 Last Changed Date: 2013-08-13 15:40:43 +0000 (Tue, 13 Aug 2013) ssing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs -fdiagnostics-show-option -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -c /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_inode_cnv.c --- ext2_extents.o --- ctfconvert -L VERSION -g ext2_extents.o --- ext2_lookup.o --- --- ext2_subr.o --- --- ext2_htree.o --- ctfconvert -L VERSION -g ext2_htree.o --- ext2_lookup.o --- cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/BORDER/opt_global.h -I. -I@ -I@/contrib/altq -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/obj/usr/src/sys/BORDER -mno-aes -mno-avx -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -Qunused-arguments -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs -fdiagnostics-show-option -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -c /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_lookup.c --- ext2_subr.o --- cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/BORDER/opt_global.h -I. -I@ -I@/contrib/altq -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/obj/usr/src/sys/BORDER -mno-aes -mno-avx -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -Qunused-arguments -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs -fdiagnostics-show-option -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -c /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_subr.c --- ext2_vfsops.o --- cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/usr/src/sys/BORDER/opt_global.h -I. -I@ -I@/contrib/altq -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -I/usr/obj/usr/src/sys/BORDER -mno-aes -mno-avx -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -Qunused-arguments -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs -fdiagnostics-show-option -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -c /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_vfsops.c --- ext2_subr.o --- /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_subr.c:154:4: error: format specifies type 'int' but the argument has type 'e4fs_daddr_t' (aka 'long') [-Werror,-Wformat] start, last, (long long)ep->b_blkno, ^~~~~ /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_subr.c:154:11: error: format specifies type 'int' but the argument has type 'e4fs_daddr_t' (aka 'long') [-Werror,-Wformat] start, last, (long long)ep->b_blkno, ^~~~ 2 errors generated. *** [ext2_subr.o] Error code 1 make[4]: stopped in /usr/src/sys/modules/ext2fs --- ext2_inode_cnv.o --- ctfconvert -L VERSION -g ext2_inode_cnv.o --- ext2_inode.o --- ctfconvert -L VERSION -g ext2_inode.o --- ext2_alloc.o --- ctfconvert -L VERSION -g ext2_alloc.o --- ext2_lookup.o --- ctfconvert -L VERSION -g ext2_lookup.o --- ext2_vfsops.o --- ctfconvert -L VERSION -g ext2_vfsops.o 1 error make[4]: stopped in /usr/src/sys/modules/ext2fs *** Error code 2 Stop. make[3]: stopped in /usr/src/sys/modules *** [modules-all] Error code 1 make[2]: stopped in /usr/obj/usr/src/sys/BORDER 1 error make[2]: stopped in /usr/obj/usr/src/sys/BORDER *** [buildkernel] Error code 2 make[1]: stopped in /usr/src 1 error make[1]: stopped in /usr/src *** [buildkernel] Error code 2 make: stopped in /usr/src 1 error make: stopped in /usr/src root@Border:/usr/src # -- Sam Fourman Jr. From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 17:13:12 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5FB78794; Tue, 13 Aug 2013 17:13:12 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [208.86.227.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3255F259B; Tue, 13 Aug 2013 17:13:11 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 7A48FD93F; Tue, 13 Aug 2013 17:13:04 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 7A48FD93F Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 13 Aug 2013 13:13:02 -0400 From: Glen Barber To: Ian Lepore Subject: Re: svn commit: r254217 - head/sys/conf Message-ID: <20130813171302.GQ2432@glenbarber.us> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> <1376407389.3320.209.camel@revolution.hippie.lan> <20130813153222.GL2432@glenbarber.us> <1376413337.3320.224.camel@revolution.hippie.lan> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="X1pyOwMoA9G3DWfK" Content-Disposition: inline In-Reply-To: <1376413337.3320.224.camel@revolution.hippie.lan> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 17:13:12 -0000 --X1pyOwMoA9G3DWfK Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Aug 13, 2013 at 11:02:17AM -0600, Ian Lepore wrote: > It fails for me during buildworld (I haven't gotten to buildkernel yet). > This is a cross-build of armv6 from i386, if that matters. =20 >=20 It looks like the build is failing in sys/boot/fdt. =3D=3D=3D> sys/boot/fdt (installincludes) 1 error *** Error code 2 1 error *** Error code 2 > When I use "make -s" the build fails immediately in "building an up to > date make" because it somehow has $DESTDIR/usr/lib/libc.a as a > dependency for bmake/unit-tests, and clearly that isn't going to exist > before installworld has created it (when DESTDIR is other than / which > is always is for me). For some reason I can't even begin to figure out, > I don't get that error with the -s left off. >=20 Odd. '-s' should suppress build output (similar to adding "@" to the beginning of the Makefile command lines). > Hrm, I just noticed I get the same bmake build error at the beginning > with and without the -s, the difference is that without -s it ignores > the error and keeps building. Seems like a different bug. >=20 Yes, that is strange. > So, leaving the make -s problems aside, a regular "make buildworld" > results in http://people.freebsd.org/~ian/make.buildworld.log (the > failure is around line 6178). >=20 > I don't know what's different between make with and without -s but > perhaps it somehow toggles this problem. >=20 > BTW, I'm seeing this problem at r254281, and did not see it at r253965. >=20 At this point, I am just ready to revert all of the changes that allow use of svnliteversion from base to determine the svn version. In my buildkernel, newvers.sh does correctly expand '$(realpath ${0})' to $SYSBASE/sys/conf/newvers.sh. I do not know why it is not the same for the cross build. Although, I could just call svn{,lite}version on $SYSBASE/Makefile. root@nucleus:/usr/src # make -j8 -s buildkernel -------------------------------------------------------------- >>> Kernel build for NUCLEUS started on Tue Aug 13 13:09:53 EDT 2013 -------------------------------------------------------------- =3D=3D=3D> NUCLEUS -------------------------------------------------------------- >>> stage 1: configuring the kernel -------------------------------------------------------------- Kernel build directory is /usr/obj/usr/src/sys/NUCLEUS Don't forget to do ``make cleandepend && make depend'' -------------------------------------------------------------- >>> stage 2.1: cleaning up the object tree -------------------------------------------------------------- -------------------------------------------------------------- >>> stage 2.2: rebuilding the object tree -------------------------------------------------------------- -------------------------------------------------------------- >>> stage 2.3: build tools -------------------------------------------------------------- -------------------------------------------------------------- >>> stage 3.1: making dependencies -------------------------------------------------------------- -------------------------------------------------------------- >>> stage 3.2: building everything -------------------------------------------------------------- + [ ! -z '' ] + [ -x /usr/bin/svnversion ] + [ ! -z '' ] + [ -x /usr/local/bin/svnversion ] + [ -z ] + realpath /usr/src/sys/conf/newvers.sh + /usr/local/bin/svnversion /usr/src/sys/conf/newvers.sh + [ 0 -eq 0 ] + svnversion=3D/usr/local/bin/svnversion + break + [ -z /usr/local/bin/svnversion ] + [ -x /usr/bin/p4 ] + [ -x /usr/local/bin/p4 ] + [ -d /usr/src/sys/conf/../../.git ] + [ -n /usr/local/bin/svnversion ] + cd /usr/src/sys/conf/.. + /usr/local/bin/svnversion + svn=3D253815:254284M + svn=3D' r253815:254284M' + [ -n '' ] + [ -n '' ] + cat + echo 159 linking kernel.debug text data bss dec hex filename 9082608 1113780 1035592 11231980 ab62ec kernel.debug -------------------------------------------------------------- >>> Kernel build for NUCLEUS completed on Tue Aug 13 13:11:49 EDT 2013 -------------------------------------------------------------- Glen --X1pyOwMoA9G3DWfK Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSCmkeAAoJEFJPDDeguUajJ+kH/0ipzS67zLkxXdSHZ8w6S6NO CyoFnOlrTFKhoEROqfad4PMC4Uq9fhNHZiIIpMKS+C4BgNsLwd7GWn7Fq2UUlSnc gtXVqMm+pqc6oSOrtXinKQETdLWXGsg6dbj+PNVAG37e69vjvg0g37BAO6LWdaHr Fde+sW2p+G0bRidy9WbVcCElaLN6I23QekxfcW8WU+juxVNmvdUpV9u4wZ1kG87d qC+6ovvUgKu82Kvutd/qrP54FalYk/DACGtXqCa6qBULhI3KO2eXnEu3u+Fitt8k q0yxBORoEPddJ3viSIBmFtse920vwYyFhghXe+E4wpDKcU0W9qX4eXCGXphpP10= =cL5V -----END PGP SIGNATURE----- --X1pyOwMoA9G3DWfK-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 17:31:57 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3E19117A; Tue, 13 Aug 2013 17:31:57 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mho-01-ewr.mailhop.org (mho-03-ewr.mailhop.org [204.13.248.66]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F330326D4; Tue, 13 Aug 2013 17:31:56 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-01-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1V9IRn-0004Vi-N3; Tue, 13 Aug 2013 17:31:55 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id r7DHVqCC036024; Tue, 13 Aug 2013 11:31:52 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX1/0LEOfLUzfUA3xlo5T5qwT Subject: Re: svn commit: r254217 - head/sys/conf From: Ian Lepore To: Glen Barber In-Reply-To: <20130813171302.GQ2432@glenbarber.us> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> <1376407389.3320.209.camel@revolution.hippie.lan> <20130813153222.GL2432@glenbarber.us> <1376413337.3320.224.camel@revolution.hippie.lan> <20130813171302.GQ2432@glenbarber.us> Content-Type: text/plain; charset="us-ascii" Date: Tue, 13 Aug 2013 11:31:52 -0600 Message-ID: <1376415112.3320.229.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 17:31:57 -0000 On Tue, 2013-08-13 at 13:13 -0400, Glen Barber wrote: > On Tue, Aug 13, 2013 at 11:02:17AM -0600, Ian Lepore wrote: > > It fails for me during buildworld (I haven't gotten to buildkernel yet). > > This is a cross-build of armv6 from i386, if that matters. > > > > It looks like the build is failing in sys/boot/fdt. > > ===> sys/boot/fdt (installincludes) > 1 error > *** Error code 2 > 1 error > *** Error code 2 > > > When I use "make -s" the build fails immediately in "building an up to > > date make" because it somehow has $DESTDIR/usr/lib/libc.a as a > > dependency for bmake/unit-tests, and clearly that isn't going to exist > > before installworld has created it (when DESTDIR is other than / which > > is always is for me). For some reason I can't even begin to figure out, > > I don't get that error with the -s left off. > > > > Odd. '-s' should suppress build output (similar to adding "@" to the > beginning of the Makefile command lines). > > > Hrm, I just noticed I get the same bmake build error at the beginning > > with and without the -s, the difference is that without -s it ignores > > the error and keeps building. Seems like a different bug. > > > > Yes, that is strange. > > > So, leaving the make -s problems aside, a regular "make buildworld" > > results in http://people.freebsd.org/~ian/make.buildworld.log (the > > failure is around line 6178). > > > > I don't know what's different between make with and without -s but > > perhaps it somehow toggles this problem. > > > > BTW, I'm seeing this problem at r254281, and did not see it at r253965. > > > > At this point, I am just ready to revert all of the changes that allow > use of svnliteversion from base to determine the svn version. In my > buildkernel, newvers.sh does correctly expand '$(realpath ${0})' to > $SYSBASE/sys/conf/newvers.sh. I do not know why it is not the same for > the cross build. Although, I could just call svn{,lite}version on > $SYSBASE/Makefile. > > root@nucleus:/usr/src # make -j8 -s buildkernel > -------------------------------------------------------------- > >>> Kernel build for NUCLEUS started on Tue Aug 13 13:09:53 EDT 2013 > -------------------------------------------------------------- > ===> NUCLEUS > -------------------------------------------------------------- > >>> stage 1: configuring the kernel > -------------------------------------------------------------- > Kernel build directory is /usr/obj/usr/src/sys/NUCLEUS > Don't forget to do ``make cleandepend && make depend'' > -------------------------------------------------------------- > >>> stage 2.1: cleaning up the object tree > -------------------------------------------------------------- > -------------------------------------------------------------- > >>> stage 2.2: rebuilding the object tree > -------------------------------------------------------------- > -------------------------------------------------------------- > >>> stage 2.3: build tools > -------------------------------------------------------------- > -------------------------------------------------------------- > >>> stage 3.1: making dependencies > -------------------------------------------------------------- > -------------------------------------------------------------- > >>> stage 3.2: building everything > -------------------------------------------------------------- > + [ ! -z '' ] > + [ -x /usr/bin/svnversion ] > + [ ! -z '' ] > + [ -x /usr/local/bin/svnversion ] > + [ -z ] > + realpath /usr/src/sys/conf/newvers.sh > + /usr/local/bin/svnversion /usr/src/sys/conf/newvers.sh > + [ 0 -eq 0 ] > + svnversion=/usr/local/bin/svnversion > + break > + [ -z /usr/local/bin/svnversion ] > + [ -x /usr/bin/p4 ] > + [ -x /usr/local/bin/p4 ] > + [ -d /usr/src/sys/conf/../../.git ] > + [ -n /usr/local/bin/svnversion ] > + cd /usr/src/sys/conf/.. > + /usr/local/bin/svnversion > + svn=253815:254284M > + svn=' r253815:254284M' > + [ -n '' ] > + [ -n '' ] > + cat > + echo 159 > linking kernel.debug > text data bss dec hex filename > 9082608 1113780 1035592 11231980 ab62ec kernel.debug > -------------------------------------------------------------- > >>> Kernel build for NUCLEUS completed on Tue Aug 13 13:11:49 EDT 2013 > -------------------------------------------------------------- > > Glen > I'm not even sure what $0 *should* expand to in a script that was sourced in. The manpage doesn't say anything meaningful to me about it. Maybe it's a kind of "indeterminate results" thing which is pretty much what we're seeing. I was thinking that $(realpath ${PARAMFILE}) might be a good way to tap dance around the problem, but PARAMFILE can be set by default from $SYSDIR and it's not clear to me that that'll always be right either. -- Ian From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 17:53:39 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 53C94BE8; Tue, 13 Aug 2013 17:53:39 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [208.86.227.67]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0C48A292C; Tue, 13 Aug 2013 17:53:38 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 7DC85DD66; Tue, 13 Aug 2013 17:53:37 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 7DC85DD66 Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 13 Aug 2013 13:53:35 -0400 From: Glen Barber To: Ian Lepore Subject: Re: svn commit: r254217 - head/sys/conf Message-ID: <20130813175335.GR2432@glenbarber.us> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> <1376407389.3320.209.camel@revolution.hippie.lan> <20130813153222.GL2432@glenbarber.us> <1376413337.3320.224.camel@revolution.hippie.lan> <20130813171302.GQ2432@glenbarber.us> <1376415112.3320.229.camel@revolution.hippie.lan> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="QgvTbcZPsSS/HkXe" Content-Disposition: inline In-Reply-To: <1376415112.3320.229.camel@revolution.hippie.lan> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 17:53:39 -0000 --QgvTbcZPsSS/HkXe Content-Type: multipart/mixed; boundary="HKLejDDV6gCqJAZ/" Content-Disposition: inline --HKLejDDV6gCqJAZ/ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Aug 13, 2013 at 11:31:52AM -0600, Ian Lepore wrote: > I'm not even sure what $0 *should* expand to in a script that was > sourced in. The manpage doesn't say anything meaningful to me about it. > Maybe it's a kind of "indeterminate results" thing which is pretty much > what we're seeing. >=20 When the file is sourced, it should expand to the name of the file sourcing the file.=20 gjb@nucleus:~ % cat foo1.sh foo2.sh #!/bin/sh echo ${0} =2E foo2.sh #!/bin/sh echo ${0} gjb@nucleus:~ % sh ./foo1.sh =2E/foo1.sh =2E/foo1.sh > I was thinking that $(realpath ${PARAMFILE}) might be a good way to tap > dance around the problem, but PARAMFILE can be set by default from > $SYSDIR and it's not clear to me that that'll always be right either. >=20 Can you please try the attached patch? As with my prior tests, this works for me... Glen --HKLejDDV6gCqJAZ/ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="newvers.sh.diff.txt" Content-Transfer-Encoding: quoted-printable Index: head/sys/conf/newvers.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- head/sys/conf/newvers.sh (revision 254284) +++ head/sys/conf/newvers.sh (working copy) @@ -96,7 +96,7 @@ # Run svnversion from ${dir} on this script; if return code # is not zero, the checkout might not be compatible with the # svnversion being used. - ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1 + ${dir}/svnversion ${SYSDIR}/Makefile >/dev/null 2>&1 if [ $? -eq 0 ]; then svnversion=3D${dir}/svnversion break @@ -105,7 +105,7 @@ done =20 if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then - /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1 + /usr/bin/svnliteversion ${SYSDIR}/Makefile >/dev/null 2>&1 if [ $? -eq 0 ]; then svnversion=3D/usr/bin/svnliteversion else --HKLejDDV6gCqJAZ/-- --QgvTbcZPsSS/HkXe Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSCnKfAAoJEFJPDDeguUajm/gIALmklKwCIQ0IYJEsAyYxp3x+ z1wnuYoOCX/dokqM/7eseDFFoxA0g5ovkD62juoJfb7NKoGtjt3ZFLA4E/3i8E6O xwHIgyO8JMjSyTFdklz7Zh3S9I79q8z+evfFvrHTil2vsnzbMmA1tu2ctSaP5E1T QUO4x7tQIBdh+1A4cBO7pz/6THE/nIAWnsGboPxZ54aDQAxRxtXZwP47GJNHXr5P RtfCfTALQLEkXd+KLFtwre4BQdrZ4pbldp0QMFaqXjqoCEEOes86Agh0zAfJJ/uZ VgZeM+gnuX9d3PeNr32ZuKtMVBr9YHcmeNNfprZG2QPdc1ZG6YRUb2m7UfXpzWM= =ppQR -----END PGP SIGNATURE----- --QgvTbcZPsSS/HkXe-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:14:54 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 402FE5C6; Tue, 13 Aug 2013 18:14:54 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2D5A72A86; Tue, 13 Aug 2013 18:14:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DIEsND029142; Tue, 13 Aug 2013 18:14:54 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DIEsqc029141; Tue, 13 Aug 2013 18:14:54 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308131814.r7DIEsqc029141@svn.freebsd.org> From: Peter Wemm Date: Tue, 13 Aug 2013 18:14:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254285 - head/lib/libc/iconv X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:14:54 -0000 Author: peter Date: Tue Aug 13 18:14:53 2013 New Revision: 254285 URL: http://svnweb.freebsd.org/changeset/base/254285 Log: Expose _citrus_bcs_trunc_rws_len for libintl's use. Submitted by: Jan Beich Modified: head/lib/libc/iconv/Symbol.map Modified: head/lib/libc/iconv/Symbol.map ============================================================================== --- head/lib/libc/iconv/Symbol.map Tue Aug 13 16:05:47 2013 (r254284) +++ head/lib/libc/iconv/Symbol.map Tue Aug 13 18:14:53 2013 (r254285) @@ -50,6 +50,7 @@ FBSDprivate_1.0 { _citrus_bcs_strtoul; _citrus_bcs_tolower; _citrus_bcs_toupper; + _citrus_bcs_trunc_rws_len; _citrus_bcs_trunc_ws_len; _citrus_csmapper_open; _citrus_csmapper_close; From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:27:47 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id EE5029C4; Tue, 13 Aug 2013 18:27:47 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BAFA52B23; Tue, 13 Aug 2013 18:27:47 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id F390EB91C; Tue, 13 Aug 2013 14:27:43 -0400 (EDT) From: John Baldwin To: Mark Johnston Subject: Re: svn commit: r254266 - in head: share/man/man9 sys/kern sys/sys Date: Tue, 13 Aug 2013 13:37:09 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <201308130307.r7D37nZl017329@svn.freebsd.org> In-Reply-To: <201308130307.r7D37nZl017329@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201308131337.09671.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Tue, 13 Aug 2013 14:27:44 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:27:48 -0000 On Monday, August 12, 2013 11:07:49 pm Mark Johnston wrote: > Author: markj > Date: Tue Aug 13 03:07:49 2013 > New Revision: 254266 > URL: http://svnweb.freebsd.org/changeset/base/254266 > > Log: > Add event handlers for module load and unload events. The load handlers are > called after the module has been loaded, and the unload handlers are called > before the module is unloaded. Moreover, the module unload handlers may > return an error to prevent the unload from proceeding. > > Reviewed by: avg > MFC after: 2 weeks Please call this something else like kld_load or linker_file_load, etc. Modules (and in particular mod_*) mean something else (subr_module.c, DECLARE_MODULE(), etc.), and a single linker_file main contain zero or more "modules". -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:27:52 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7407E9CC for ; Tue, 13 Aug 2013 18:27:52 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from nm16.bullet.mail.bf1.yahoo.com (nm16.bullet.mail.bf1.yahoo.com [98.139.212.175]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F259C2B28 for ; Tue, 13 Aug 2013 18:27:51 +0000 (UTC) Received: from [98.139.214.32] by nm16.bullet.mail.bf1.yahoo.com with NNFMP; 13 Aug 2013 18:27:43 -0000 Received: from [98.139.211.193] by tm15.bullet.mail.bf1.yahoo.com with NNFMP; 13 Aug 2013 18:27:43 -0000 Received: from [127.0.0.1] by smtp202.mail.bf1.yahoo.com with NNFMP; 13 Aug 2013 18:27:43 -0000 X-Yahoo-Newman-Id: 634037.61247.bm@smtp202.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: cqtUEBgVM1l9JO58cBLXdmrxPPLBPaAHQhk9SIhYxoN06vO dOlDjG2fuWBSCG9zhH_CL2RgEkPAQDeYVAoaVe8juzjvSoSuN0KvLrGhW9_9 D1Ta8drPqFZpYaYTPkTpDrSEQGQRXrTj7wRklmlx96rONUSmgcOQlU67MnhO Q.LPN4btzJfk32rvFbHooSP1rws1wXmRlNpK9HbfAJljW0YfsRf04uUutUl7 4McYKt8fKuv80LH3R4dlnQ0MZymBCh4jhOsWcR9Kz8Em4An.shgE6pX4EO0D wyYU7Ikipv.tI.xCAfpd3xqB97HDVdxvaBRJlsqkI3IAqAtTDobpEPEUPwXy OH4t2b8nHY7oKJaQOs9MGZJBSuzSsdOXdvxCONtrF7TPXURKyOZMfYDbsMqR tJuAwdKWjjkHR6pQi1y3XXuFeHQvA_IxTUmEdis3zOs7K12JF9fueVUfIO1i 9nXPdjmbMIhU2cs.i6PvtWxBUn.znnqOKa91qbk5Co_HpUX.1nAPcrtABOvH .2xgUHuWsgFqDFpYArhaJvVSxxt2Jhoy3wIX0ba0VSgn541gQJkilK7s1mS1 Va0pS9sNL1V7zfncqHgytrRouJgoB1jrBL3yHgzr4bskcnZhhUS4d6iZ3e8T SZ7LPznt72GyX X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf X-Rocket-Received: from [192.168.0.102] (pfg@190.157.126.109 with ) by smtp202.mail.bf1.yahoo.com with SMTP; 13 Aug 2013 11:27:43 -0700 PDT Message-ID: <520A7A9D.2010807@FreeBSD.org> Date: Tue, 13 Aug 2013 13:27:41 -0500 From: Pedro Giffuni User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130630 Thunderbird/17.0.7 MIME-Version: 1.0 To: "Sam Fourman Jr." Subject: Re: svn commit: r254283 - head/sys/fs/ext2fs References: <201308131540.r7DFehRl071120@svn.freebsd.org> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:27:52 -0000 On 13.08.2013 12:12, Sam Fourman Jr. wrote: > I think this change broke the build..... Thank you Sam! It's very strange it builds fine here. Can anyone confirm? Pedro. > root@Border:/usr/src # svnlite info > Path: . > Working Copy Root Path: /usr/src > URL: http://svn0.us-west.freebsd.org/base/head > Relative URL: ^/head > Repository Root: http://svn0.us-west.freebsd.org/base > Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f > Revision: 254284 > Node Kind: directory > Schedule: normal > Last Changed Author: pfg > Last Changed Rev: 254283 > Last Changed Date: 2013-08-13 15:40:43 +0000 (Tue, 13 Aug 2013) > > > > ssing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-error-tautological-compare > -Wno-error-empty-body -Wno-error-parentheses-equality -c > /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_inode_cnv.c > --- ext2_extents.o --- > ctfconvert -L VERSION -g ext2_extents.o > --- ext2_lookup.o --- > --- ext2_subr.o --- > --- ext2_htree.o --- > ctfconvert -L VERSION -g ext2_htree.o > --- ext2_lookup.o --- > cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE > -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/BORDER/opt_global.h -I. -I@ -I@/contrib/altq > -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer > -I/usr/obj/usr/src/sys/BORDER -mno-aes -mno-avx -mcmodel=kernel > -mno-red-zone -mno-mmx -mno-sse -msoft-float > -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector > -std=iso9899:1999 -Qunused-arguments -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-error-tautological-compare > -Wno-error-empty-body -Wno-error-parentheses-equality -c > /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_lookup.c > --- ext2_subr.o --- > cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE > -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/BORDER/opt_global.h -I. -I@ -I@/contrib/altq > -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer > -I/usr/obj/usr/src/sys/BORDER -mno-aes -mno-avx -mcmodel=kernel > -mno-red-zone -mno-mmx -mno-sse -msoft-float > -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector > -std=iso9899:1999 -Qunused-arguments -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-error-tautological-compare > -Wno-error-empty-body -Wno-error-parentheses-equality -c > /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_subr.c > --- ext2_vfsops.o --- > cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE > -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include > /usr/obj/usr/src/sys/BORDER/opt_global.h -I. -I@ -I@/contrib/altq > -fno-common -g -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer > -I/usr/obj/usr/src/sys/BORDER -mno-aes -mno-avx -mcmodel=kernel > -mno-red-zone -mno-mmx -mno-sse -msoft-float > -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector > -std=iso9899:1999 -Qunused-arguments -fstack-protector -Wall > -Wredundant-decls -Wnested-externs -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef > -Wno-pointer-sign -fformat-extensions -Wmissing-include-dirs > -fdiagnostics-show-option -Wno-error-tautological-compare > -Wno-error-empty-body -Wno-error-parentheses-equality -c > /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_vfsops.c > --- ext2_subr.o --- > /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_subr.c:154:4: error: > format specifies type 'int' but the argument has type 'e4fs_daddr_t' > (aka 'long') [-Werror,-Wformat] > start, last, (long long)ep->b_blkno, > ^~~~~ > /usr/src/sys/modules/ext2fs/../../fs/ext2fs/ext2_subr.c:154:11: error: > format specifies type 'int' but the argument has type 'e4fs_daddr_t' > (aka 'long') [-Werror,-Wformat] > start, last, (long long)ep->b_blkno, > ^~~~ > 2 errors generated. > *** [ext2_subr.o] Error code 1 > > make[4]: stopped in /usr/src/sys/modules/ext2fs > --- ext2_inode_cnv.o --- > ctfconvert -L VERSION -g ext2_inode_cnv.o > --- ext2_inode.o --- > ctfconvert -L VERSION -g ext2_inode.o > --- ext2_alloc.o --- > ctfconvert -L VERSION -g ext2_alloc.o > --- ext2_lookup.o --- > ctfconvert -L VERSION -g ext2_lookup.o > --- ext2_vfsops.o --- > ctfconvert -L VERSION -g ext2_vfsops.o > 1 error > > make[4]: stopped in /usr/src/sys/modules/ext2fs > *** Error code 2 > > Stop. > make[3]: stopped in /usr/src/sys/modules > *** [modules-all] Error code 1 > > make[2]: stopped in /usr/obj/usr/src/sys/BORDER > 1 error > > make[2]: stopped in /usr/obj/usr/src/sys/BORDER > *** [buildkernel] Error code 2 > > make[1]: stopped in /usr/src > 1 error > > make[1]: stopped in /usr/src > *** [buildkernel] Error code 2 > > make: stopped in /usr/src > 1 error > > make: stopped in /usr/src > root@Border:/usr/src # > From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:39:37 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 00949E93; Tue, 13 Aug 2013 18:39:36 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E15E92BC9; Tue, 13 Aug 2013 18:39:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DIdaMZ037278; Tue, 13 Aug 2013 18:39:36 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DIdaLD037277; Tue, 13 Aug 2013 18:39:36 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201308131839.r7DIdaLD037277@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Tue, 13 Aug 2013 18:39:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254286 - head/sys/fs/ext2fs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:39:37 -0000 Author: pfg Date: Tue Aug 13 18:39:36 2013 New Revision: 254286 URL: http://svnweb.freebsd.org/changeset/base/254286 Log: ext2fs: update format specifiers for ext4 type. Reported by: Sam Fourman Jr. MFC after: 3 weeks Modified: head/sys/fs/ext2fs/ext2_subr.c Modified: head/sys/fs/ext2fs/ext2_subr.c ============================================================================== --- head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 18:14:53 2013 (r254285) +++ head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 18:39:36 2013 (r254286) @@ -150,7 +150,7 @@ ext2_checkoverlap(struct buf *bp, struct ep->b_blkno + btodb(ep->b_bcount) <= start) continue; vprint("Disk overlap", vp); - (void)printf("\tstart %d, end %d overlap start %lld, end %ld\n", + (void)printf("\tstart %ld, end %ld overlap start %lld, end %ld\n", start, last, (long long)ep->b_blkno, (long)(ep->b_blkno + btodb(ep->b_bcount) - 1)); panic("Disk buffer overlap"); From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:40:43 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DC228FDC for ; Tue, 13 Aug 2013 18:40:43 +0000 (UTC) (envelope-from giffunip@yahoo.com) Received: from nm50-vm3.bullet.mail.bf1.yahoo.com (nm50-vm3.bullet.mail.bf1.yahoo.com [216.109.115.222]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 74B6D2BFB for ; Tue, 13 Aug 2013 18:40:43 +0000 (UTC) Received: from [98.139.212.150] by nm50.bullet.mail.bf1.yahoo.com with NNFMP; 13 Aug 2013 18:34:54 -0000 Received: from [68.142.230.75] by tm7.bullet.mail.bf1.yahoo.com with NNFMP; 13 Aug 2013 18:34:54 -0000 Received: from [127.0.0.1] by smtp232.mail.bf1.yahoo.com with NNFMP; 13 Aug 2013 18:34:53 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1376418893; bh=eEGTJWwFubQZE7jhgYaFhTLZ+yyl+6yIzlyeoKzQARg=; h=X-Yahoo-Newman-Id:X-Yahoo-Newman-Property:X-YMail-OSG:X-Yahoo-SMTP:X-Rocket-Received:Message-ID:Date:From:User-Agent:MIME-Version:To:CC:Subject:References:In-Reply-To:Content-Type:Content-Transfer-Encoding; b=Rz+vL2F9H+Vq8uznEp2CYlYMB05A8J22SbKrHQNY7a6P8LcOcAG3eXVhT5RnIff94OELPAtcctCuyWDkgJb5mYnRgKc8T4ZUlbbSSUL3xDBiLAGH7bO5OQNAYQmFyyenifNj9LPNPeNOAF6MzewXpSU+KbmJoifXtVYFFos4ag0= X-Yahoo-Newman-Id: 983947.11958.bm@smtp232.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: nmE6pXQVM1msiYcTZNNLOKZSvpTadt_5RD1giXNSY.AsZjf UJYVaYuOcINmHV1Aap8nWllq6wkm2TjrKacIEQWerQptnuLeI879TEsybJd5 wcvEOUtPgk6uXNUgWccOcPi6UKatH7oaK1o9y3Q_.9Ul9xDhd8mFhvN62_nG mrVFUtWaUaKcVQMSSW8_N3GYfmI8eI2SseFREDxq35agkkeZCppsQbbRrEQq hAzrpoxRdwfusVcg0PZ_uV_6gnDOJDFC6Wd1G7aw_P2yBtCInNtEhB5X9lvc M9bSiLKPfa.7mKxQ6rXOjkHYq14VyZTRkKZTkOR_7SfC3npa1wsHP0MJIrdd rvTYNbOtbU81DCuJBfvG6P29r82U5lplbce9vmIwuWtzxe9mqRe02Up1lu16 12LTqF0c1GgD0wOVLQpObU4zdYmRb_nCC89L28gcKNefoz5JOsv7vaWbMjoK eEkoto6qjjC5ZWLQWsoFuTxe780sKiftPgy2eZOfFuzcfoEkzMfrSCKKeExX S_2FLFQH7nU.T5Hok.3TiWl461opvN2dMDVsr8hUErguDmKuseg-- X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf X-Rocket-Received: from [192.168.0.102] (giffunip@190.157.126.109 with ) by smtp232.mail.bf1.yahoo.com with SMTP; 13 Aug 2013 18:34:53 +0000 UTC Message-ID: <520A7C3C.5030506@yahoo.com> Date: Tue, 13 Aug 2013 13:34:36 -0500 From: Pedro Giffuni User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130630 Thunderbird/17.0.7 MIME-Version: 1.0 To: "Sam Fourman Jr." Subject: Re: svn commit: r254283 - head/sys/fs/ext2fs References: <201308131540.r7DFehRl071120@svn.freebsd.org> <520A7A9D.2010807@FreeBSD.org> In-Reply-To: <520A7A9D.2010807@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:40:43 -0000 On 13.08.2013 13:27, Pedro Giffuni wrote: > On 13.08.2013 12:12, Sam Fourman Jr. wrote: > > >> I think this change broke the build..... > > Thank you Sam! > It's very strange it builds fine here. Can anyone confirm? > > Nevermind.. it's a format specifier issue I will fix. Thank you again! Pedro. From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:45:59 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3E3854B8; Tue, 13 Aug 2013 18:45:59 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2BF332C3B; Tue, 13 Aug 2013 18:45:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DIjxH1040446; Tue, 13 Aug 2013 18:45:59 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DIjxjS040445; Tue, 13 Aug 2013 18:45:59 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201308131845.r7DIjxjS040445@svn.freebsd.org> From: John Baldwin Date: Tue, 13 Aug 2013 18:45:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254287 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:45:59 -0000 Author: jhb Date: Tue Aug 13 18:45:58 2013 New Revision: 254287 URL: http://svnweb.freebsd.org/changeset/base/254287 Log: Some small cleanups to the fixes in r180340: - Set NOTE_TRACKERR before running filt_proc(). If the knote did not have NOTE_FORK set in fflags when registered, then the TRACKERR event could miss being posted. - Don't pass the pid in to filt_proc() for NOTE_FORK events. The special handling for pids is done knote_fork() directly and no longer in filt_proc(). MFC after: 2 weeks Modified: head/sys/kern/kern_event.c Modified: head/sys/kern/kern_event.c ============================================================================== --- head/sys/kern/kern_event.c Tue Aug 13 18:39:36 2013 (r254286) +++ head/sys/kern/kern_event.c Tue Aug 13 18:45:58 2013 (r254287) @@ -477,7 +477,7 @@ knote_fork(struct knlist *list, int pid) */ if ((kn->kn_sfflags & NOTE_TRACK) == 0) { kn->kn_status |= KN_HASKQLOCK; - if (kn->kn_fop->f_event(kn, NOTE_FORK | pid)) + if (kn->kn_fop->f_event(kn, NOTE_FORK)) KNOTE_ACTIVATE(kn, 1); kn->kn_status &= ~KN_HASKQLOCK; KQ_UNLOCK(kq); @@ -505,10 +505,10 @@ knote_fork(struct knlist *list, int pid) kev.data = kn->kn_id; /* parent */ kev.udata = kn->kn_kevent.udata;/* preserve udata */ error = kqueue_register(kq, &kev, NULL, 0); - if (kn->kn_fop->f_event(kn, NOTE_FORK | pid)) - KNOTE_ACTIVATE(kn, 0); if (error) kn->kn_fflags |= NOTE_TRACKERR; + if (kn->kn_fop->f_event(kn, NOTE_FORK)) + KNOTE_ACTIVATE(kn, 0); KQ_LOCK(kq); kn->kn_status &= ~KN_INFLUX; KQ_UNLOCK_FLUX(kq); From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 18:51:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 84F568C0; Tue, 13 Aug 2013 18:51:27 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 733D62CAF; Tue, 13 Aug 2013 18:51:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DIpR3J043292; Tue, 13 Aug 2013 18:51:27 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DIpRwO043291; Tue, 13 Aug 2013 18:51:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308131851.r7DIpRwO043291@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 13 Aug 2013 18:51:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254288 - head/sbin/init X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 18:51:27 -0000 Author: jilles Date: Tue Aug 13 18:51:26 2013 New Revision: 254288 URL: http://svnweb.freebsd.org/changeset/base/254288 Log: init: Set kernel login class and CPU mask on new processes. In particular, this makes the kernel login class on processes started from /etc/rc "daemon" instead of "default". Reviewed by: trasz Modified: head/sbin/init/init.c Modified: head/sbin/init/init.c ============================================================================== --- head/sbin/init/init.c Tue Aug 13 18:45:58 2013 (r254287) +++ head/sbin/init/init.c Tue Aug 13 18:51:26 2013 (r254288) @@ -1729,7 +1729,8 @@ setprocresources(const char *cname) login_cap_t *lc; if ((lc = login_getclassbyname(cname, NULL)) != NULL) { setusercontext(lc, (struct passwd*)NULL, 0, - LOGIN_SETPRIORITY | LOGIN_SETRESOURCES); + LOGIN_SETPRIORITY | LOGIN_SETRESOURCES | + LOGIN_SETLOGINCLASS | LOGIN_SETCPUMASK); login_close(lc); } } From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:20:51 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9EF7335D; Tue, 13 Aug 2013 19:20:51 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8C2BD2E82; Tue, 13 Aug 2013 19:20:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DJKpsT054757; Tue, 13 Aug 2013 19:20:51 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DJKpA7054755; Tue, 13 Aug 2013 19:20:51 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308131920.r7DJKpA7054755@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 13 Aug 2013 19:20:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254289 - in head/lib/libc/db: btree hash X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:20:51 -0000 Author: jilles Date: Tue Aug 13 19:20:50 2013 New Revision: 254289 URL: http://svnweb.freebsd.org/changeset/base/254289 Log: db: Use O_CLOEXEC instead of separate fcntl() call. Modified: head/lib/libc/db/btree/bt_open.c head/lib/libc/db/hash/hash_page.c Modified: head/lib/libc/db/btree/bt_open.c ============================================================================== --- head/lib/libc/db/btree/bt_open.c Tue Aug 13 18:51:26 2013 (r254288) +++ head/lib/libc/db/btree/bt_open.c Tue Aug 13 19:20:50 2013 (r254289) @@ -196,7 +196,7 @@ __bt_open(const char *fname, int flags, goto einval; } - if ((t->bt_fd = _open(fname, flags, mode)) < 0) + if ((t->bt_fd = _open(fname, flags | O_CLOEXEC, mode)) < 0) goto err; } else { @@ -207,9 +207,6 @@ __bt_open(const char *fname, int flags, F_SET(t, B_INMEM); } - if (_fcntl(t->bt_fd, F_SETFD, 1) == -1) - goto err; - if (_fstat(t->bt_fd, &sb)) goto err; if (sb.st_size) { @@ -405,7 +402,7 @@ tmp(void) (void)sigfillset(&set); (void)_sigprocmask(SIG_BLOCK, &set, &oset); - if ((fd = mkstemp(path)) != -1) + if ((fd = mkostemp(path, O_CLOEXEC)) != -1) (void)unlink(path); (void)_sigprocmask(SIG_SETMASK, &oset, NULL); return(fd); Modified: head/lib/libc/db/hash/hash_page.c ============================================================================== --- head/lib/libc/db/hash/hash_page.c Tue Aug 13 18:51:26 2013 (r254288) +++ head/lib/libc/db/hash/hash_page.c Tue Aug 13 19:20:50 2013 (r254289) @@ -862,10 +862,8 @@ open_temp(HTAB *hashp) /* Block signals; make sure file goes away at process exit. */ (void)sigfillset(&set); (void)_sigprocmask(SIG_BLOCK, &set, &oset); - if ((hashp->fp = mkstemp(path)) != -1) { + if ((hashp->fp = mkostemp(path, O_CLOEXEC)) != -1) (void)unlink(path); - (void)_fcntl(hashp->fp, F_SETFD, 1); - } (void)_sigprocmask(SIG_SETMASK, &oset, (sigset_t *)NULL); return (hashp->fp != -1 ? 0 : -1); } From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:37:53 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 25F356D7; Tue, 13 Aug 2013 19:37:53 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CA8132F77; Tue, 13 Aug 2013 19:37:51 +0000 (UTC) Received: from alph.d.allbsd.org (p2049-ipbf1102funabasi.chiba.ocn.ne.jp [122.26.101.49]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r7DJbT1K083053 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 14 Aug 2013 04:37:39 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [IPv6:::1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r7DJbSpF018203; Wed, 14 Aug 2013 04:37:29 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Wed, 14 Aug 2013 04:36:25 +0900 (JST) Message-Id: <20130814.043625.854344935412527199.hrs@allbsd.org> To: gjb@FreeBSD.org Subject: Re: svn commit: r254217 - head/sys/conf From: Hiroki Sato In-Reply-To: <20130813175335.GR2432@glenbarber.us> References: <20130813171302.GQ2432@glenbarber.us> <1376415112.3320.229.camel@revolution.hippie.lan> <20130813175335.GR2432@glenbarber.us> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Wed_Aug_14_04_36_25_2013_914)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Wed, 14 Aug 2013 04:37:39 +0900 (JST) X-Spam-Status: No, score=-90.6 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,RCVD_IN_PBL,SPF_SOFTFAIL,USER_IN_WHITELIST autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, ian@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:37:53 -0000 ----Security_Multipart(Wed_Aug_14_04_36_25_2013_914)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Glen Barber wrote in <20130813175335.GR2432@glenbarber.us>: gj> On Tue, Aug 13, 2013 at 11:31:52AM -0600, Ian Lepore wrote: gj> > I'm not even sure what $0 *should* expand to in a script that was gj> > sourced in. The manpage doesn't say anything meaningful to me about it. gj> > Maybe it's a kind of "indeterminate results" thing which is pretty much gj> > what we're seeing. gj> > gj> gj> When the file is sourced, it should expand to the name of the file gj> sourcing the file. It is sourced in the osreldate.h target in Makefile, so $0 will be /bin/sh. Why $0 is used here in the first place? The previous version used $SYSDIR and it looks more reasonable to me. -- Hiroki ----Security_Multipart(Wed_Aug_14_04_36_25_2013_914)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlIKirkACgkQTyzT2CeTzy2WAQCgjFEeNN3Gh2QLjYaRlyZU2/Qw jaIAnjqWuSDq0Ptq9HgolvBV6IlqmnF4 =quWS -----END PGP SIGNATURE----- ----Security_Multipart(Wed_Aug_14_04_36_25_2013_914)---- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:37:59 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 203D574E; Tue, 13 Aug 2013 19:37:59 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F2F922F78; Tue, 13 Aug 2013 19:37:55 +0000 (UTC) Received: from alph.d.allbsd.org (p2049-ipbf1102funabasi.chiba.ocn.ne.jp [122.26.101.49]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r7DJbTp4083052 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 14 Aug 2013 04:37:39 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [IPv6:::1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r7DJbSpE018203; Wed, 14 Aug 2013 04:37:29 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Wed, 14 Aug 2013 04:25:57 +0900 (JST) Message-Id: <20130814.042557.877689080765344354.hrs@allbsd.org> To: gjb@FreeBSD.org Subject: Re: svn commit: r254224 - head/share/man/man7 From: Hiroki Sato In-Reply-To: <201308111857.r7BIvRSq080970@svn.freebsd.org> References: <201308111857.r7BIvRSq080970@svn.freebsd.org> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Wed_Aug_14_04_25_58_2013_043)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Wed, 14 Aug 2013 04:37:39 +0900 (JST) X-Spam-Status: No, score=-90.6 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,RCVD_IN_PBL,SPF_SOFTFAIL,USER_IN_WHITELIST autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:37:59 -0000 ----Security_Multipart(Wed_Aug_14_04_25_58_2013_043)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Glen Barber wrote in <201308111857.r7BIvRSq080970@svn.freebsd.org>: gj> +.It Va SVNROOT gj> +The gj> +.Xr svn 1 gj> +host used to check out the various trees. gj> Defaults to gj> -.Pa svn://svn.freebsd.org . gj> -.It Ev SVNROOTSRC gj> -The URL of the FreeBSD SVN source repository. gj> +.Pa svn://svn.FreeeBSD.org . gj> +.It Va SRCBRANCH gj> +The gj> +.Li src/ gj> +branch to use. gj> Defaults to gj> -.Pa ${SVNROOTBASE}/base . gj> -.It Ev SVNROOTDOC gj> -The URL of the FreeBSD SVN doc repository. gj> +.Va head/ . gj> +.It Va DOCBRANCH gj> +The gj> +.Li doc/ gj> +branch to use. gj> Defaults to gj> -.Pa ${SVNROOTBASE}/doc . gj> -.It Ev SVNROOTPORTS gj> -The URL of the FreeBSD SVN ports repository. gj> +.Va head/ . gj> +.It Va PORTBRANCH gj> +The gj> +.Li ports/ gj> +branch to use. gj> Defaults to gj> -.Pa ${SVNROOTBASE}/ports . gj> -.It Ev BRANCHDOC gj> -The branch name of the FreeBSD SVN doc repository. gj> +.Va head/ . gj> +.It Va SRCREVISION gj> +The revision of the gj> +.Li src/ gj> +tree to use. gj> +Defaults to the current top of tree revision. gj> +.It Va DOCREVISION gj> +The revision of the gj> +.Li doc/ gj> +tree to use. gj> +Defaults to the current top of tree revision. gj> +.It Va PORTREVISION Why separation between revision and branch is needed? I intentionally dropped this part from your old patch to generate-release.sh because branch and revision number can be specified like releng/9.2@NNN in a single variable. An incorrect configuration of the two variables do not always cause a fatal error, so specification in fewer number of variables is more foolproof. gj> +.It Va TARGET gj> +The target machine type for the release. gj> +Defaults to the current machine type. gj> +.It Va TARGET_ARCH gj> +The target machine architecture for the release. gj> +Defaults to the value of gj> +.Va TARGET . gj> +.Pp Please remove default configuration of these variables from release.sh. The reasonable defaults are already set in src/Makefile and setting TARGET_ARCH=$TARGET by default is simply wrong. Also, get_rev_branch() is redundant. gj> +Defaults to setting the number of gj> +.Xr make 1 gj> +jobs gj> +.Pq Ar -j gj> +to half the number of CPUs available on the system. Did you try this on a uniprocessor machine? -- Hiroki ----Security_Multipart(Wed_Aug_14_04_25_58_2013_043)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlIKiEYACgkQTyzT2CeTzy1jZwCgoWVFE2/vrFBSTDCdcsnTDWgu 97sAn3ka5P4LaQsvp7706Z5k4yUIpLBh =4PJo -----END PGP SIGNATURE----- ----Security_Multipart(Wed_Aug_14_04_25_58_2013_043)---- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:53:01 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5FA39ABA; Tue, 13 Aug 2013 19:53:01 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [IPv6:2607:fc50:1:2300:1001:1001:1001:face]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 33002208B; Tue, 13 Aug 2013 19:53:01 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 5A3F4DA19; Tue, 13 Aug 2013 19:52:59 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 5A3F4DA19 Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 13 Aug 2013 15:52:57 -0400 From: Glen Barber To: Hiroki Sato Subject: Re: svn commit: r254224 - head/share/man/man7 Message-ID: <20130813195257.GA2241@glenbarber.us> References: <201308111857.r7BIvRSq080970@svn.freebsd.org> <20130814.042557.877689080765344354.hrs@allbsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="+HP7ph2BbKc20aGI" Content-Disposition: inline In-Reply-To: <20130814.042557.877689080765344354.hrs@allbsd.org> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:53:01 -0000 --+HP7ph2BbKc20aGI Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Aug 14, 2013 at 04:25:57AM +0900, Hiroki Sato wrote: > gj> +.It Va SRCREVISION > gj> +The revision of the > gj> +.Li src/ > gj> +tree to use. > gj> +Defaults to the current top of tree revision. > gj> +.It Va DOCREVISION > gj> +The revision of the > gj> +.Li doc/ > gj> +tree to use. > gj> +Defaults to the current top of tree revision. > gj> +.It Va PORTREVISION >=20 > Why separation between revision and branch is needed? I > intentionally dropped this part from your old patch to > generate-release.sh because branch and revision number can be > specified like releng/9.2@NNN in a single variable. An incorrect > configuration of the two variables do not always cause a fatal error, > so specification in fewer number of variables is more foolproof. >=20 I personally do not like using branch@rNNNNNN, but will update to remove the {SRC,DOC,PORT}REVISION variables. > gj> +.It Va TARGET > gj> +The target machine type for the release. > gj> +Defaults to the current machine type. > gj> +.It Va TARGET_ARCH > gj> +The target machine architecture for the release. > gj> +Defaults to the value of > gj> +.Va TARGET . > gj> +.Pp >=20 > Please remove default configuration of these variables from > release.sh. The reasonable defaults are already set in src/Makefile > and setting TARGET_ARCH=3D$TARGET by default is simply wrong. Also, > get_rev_branch() is redundant. >=20 Will be changed shortly. Why is get_rev_branch() redundant? > gj> +Defaults to setting the number of > gj> +.Xr make 1 > gj> +jobs > gj> +.Pq Ar -j > gj> +to half the number of CPUs available on the system. >=20 > Did you try this on a uniprocessor machine? Ugh. No, and now I see why it will not work. Glen --+HP7ph2BbKc20aGI Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSCo6ZAAoJEFJPDDeguUajw+gH+gNP9lSjyHpTB//5nLeCx50k KYp2vnYU6ZM56oqSpKIasj4vbFpsS5AULorisFcAKZ/qSBjigurgWg16QMnU6lnA FH4Z0OvOt+NEZpj7UlOSkkIWYBkrwLIIwo2kcM9NOuketI+AIYxDKZ6d0n3/Iiw7 dGssaCmrqVaUTozTQswcanNurvTWWltemikMD/TC+TJ4jZIvojCHGTbq+V/aoknm QqqGZ4ceUfiGFY9DK3JHqVWylE4GIVbqlvPvt05e+qKwk16kbhNQ1mF1XgnkbvHV BxkbnEpsFQkoO5vhjpbY/roOG1bJB6+TZ9Ua2qufW6loKfD77HomrFI3odJgKgE= =u7x3 -----END PGP SIGNATURE----- --+HP7ph2BbKc20aGI-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:54:59 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D7C6ECE9; Tue, 13 Aug 2013 19:54:59 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [IPv6:2607:fc50:1:2300:1001:1001:1001:face]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AA0EF20D7; Tue, 13 Aug 2013 19:54:59 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 91E4FDA4E; Tue, 13 Aug 2013 19:54:58 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 91E4FDA4E Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 13 Aug 2013 15:54:56 -0400 From: Glen Barber To: Hiroki Sato Subject: Re: svn commit: r254217 - head/sys/conf Message-ID: <20130813195456.GB2241@glenbarber.us> References: <20130813171302.GQ2432@glenbarber.us> <1376415112.3320.229.camel@revolution.hippie.lan> <20130813175335.GR2432@glenbarber.us> <20130814.043625.854344935412527199.hrs@allbsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="0ntfKIWw70PvrIHh" Content-Disposition: inline In-Reply-To: <20130814.043625.854344935412527199.hrs@allbsd.org> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, ian@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:54:59 -0000 --0ntfKIWw70PvrIHh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Aug 14, 2013 at 04:36:25AM +0900, Hiroki Sato wrote: > Glen Barber wrote > in <20130813175335.GR2432@glenbarber.us>: >=20 > gj> On Tue, Aug 13, 2013 at 11:31:52AM -0600, Ian Lepore wrote: > gj> > I'm not even sure what $0 *should* expand to in a script that was > gj> > sourced in. The manpage doesn't say anything meaningful to me abou= t it. > gj> > Maybe it's a kind of "indeterminate results" thing which is pretty = much > gj> > what we're seeing. > gj> > > gj> > gj> When the file is sourced, it should expand to the name of the file > gj> sourcing the file. >=20 > It is sourced in the osreldate.h target in Makefile, so $0 will be > /bin/sh. Why $0 is used here in the first place? The previous > version used $SYSDIR and it looks more reasonable to me. >=20 $0 is used to speed up execution of svnversion when evaluating if the ${svnversion} is compatible with the tree. Rather than running on the entire tree, $0 should only be run on a single file. But, I am at the point now of being ready to revert all these changes back to the original newvers.sh before I added svnliteversion... Glen --0ntfKIWw70PvrIHh Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSCo8QAAoJEFJPDDeguUaj4n8H/1sircn9bfJmYCCRuOXySSpV 9Riyz4Xo2gup38FM6tSFiHqmNhDQD8jJ//D/4bIVav6T1KXaZXdTy7lP1JznjnYJ WSl0uthuVaqL1oNdv7PgGIqTNDQikdN0F4jzhn0bOaU3hxZdTXSgkLpyH/dwj0kg VMJacAWtjFrvxPk4lB0CTDO1IVHBrEyFm5VZ2dUjaeUSiUPEeWDXoYGquAHthi35 d4+DOhJFMl36k+ofAVI9SGF3Y4xNGNPOUEG5Y+I/PEybjqRlQFZrz20PplDQ6MH6 rkqhTcI+BJ6u1amowwbbsA+IGtHNFzZZOfgE0zPk5m5fiPlP/XUv38ZDldK5U/I= =GsUn -----END PGP SIGNATURE----- --0ntfKIWw70PvrIHh-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:57:36 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B15F414E; Tue, 13 Aug 2013 19:57:36 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9065E20F5; Tue, 13 Aug 2013 19:57:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DJva8h066832; Tue, 13 Aug 2013 19:57:36 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DJvawn066830; Tue, 13 Aug 2013 19:57:36 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308131957.r7DJvawn066830@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 13 Aug 2013 19:57:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254291 - head/usr.bin/kdump X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:57:36 -0000 Author: jilles Date: Tue Aug 13 19:57:35 2013 New Revision: 254291 URL: http://svnweb.freebsd.org/changeset/base/254291 Log: kdump: Improve decoding of various *at calls: * Write AT_FDCWD where appropriate. * Decode the remaining arguments of openat() etc like open() etc. Modified: head/usr.bin/kdump/kdump.c head/usr.bin/kdump/mksubr Modified: head/usr.bin/kdump/kdump.c ============================================================================== --- head/usr.bin/kdump/kdump.c Tue Aug 13 19:55:12 2013 (r254290) +++ head/usr.bin/kdump/kdump.c Tue Aug 13 19:57:35 2013 (r254291) @@ -606,6 +606,27 @@ ktrsyscall(struct ktr_syscall *ktr, u_in if (fancy && (flags == 0 || (flags & SV_ABI_MASK) == SV_ABI_FREEBSD)) { switch (ktr->ktr_code) { + case SYS_faccessat: + case SYS_fchmodat: + case SYS_fchownat: + case SYS_fstatat: + case SYS_futimesat: + case SYS_linkat: + case SYS_mkdirat: + case SYS_mkfifoat: + case SYS_mknodat: + case SYS_openat: + case SYS_readlinkat: + case SYS_renameat: + case SYS_unlinkat: + putchar('('); + atfdname(*ip, decimal); + c = ','; + ip++; + narg--; + break; + } + switch (ktr->ktr_code) { case SYS_ioctl: { print_number(ip, narg, c); putchar(c); @@ -624,6 +645,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_in break; case SYS_access: case SYS_eaccess: + case SYS_faccessat: print_number(ip, narg, c); putchar(','); accessmodename(*ip); @@ -631,6 +653,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_in narg--; break; case SYS_open: + case SYS_openat: print_number(ip, narg, c); putchar(','); flagsandmodename(ip[0], ip[1], decimal); @@ -655,6 +678,7 @@ ktrsyscall(struct ktr_syscall *ktr, u_in narg--; break; case SYS_mknod: + case SYS_mknodat: print_number(ip, narg, c); putchar(','); modename(*ip); @@ -860,7 +884,9 @@ ktrsyscall(struct ktr_syscall *ktr, u_in narg--; break; case SYS_mkfifo: + case SYS_mkfifoat: case SYS_mkdir: + case SYS_mkdirat: print_number(ip, narg, c); putchar(','); modename(*ip); @@ -1083,6 +1109,15 @@ ktrsyscall(struct ktr_syscall *ktr, u_in ip++; narg--; break; + case SYS_linkat: + case SYS_renameat: + case SYS_symlinkat: + print_number(ip, narg, c); + putchar(','); + atfdname(*ip, decimal); + ip++; + narg--; + break; case SYS_cap_new: case SYS_cap_rights_limit: print_number(ip, narg, c); Modified: head/usr.bin/kdump/mksubr ============================================================================== --- head/usr.bin/kdump/mksubr Tue Aug 13 19:55:12 2013 (r254290) +++ head/usr.bin/kdump/mksubr Tue Aug 13 19:57:35 2013 (r254291) @@ -209,6 +209,18 @@ cat <<_EOF_ while (0) /* MANUAL */ +void +atfdname(int fd, int decimal) +{ + if (fd == AT_FDCWD) + printf("AT_FDCWD"); + else if (decimal) + printf("%d", fd); + else + printf("%#x", fd); +} + +/* MANUAL */ extern char *signames[]; /* from kdump.c */ void signame(int sig) From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 19:59:49 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B94992BA; Tue, 13 Aug 2013 19:59:49 +0000 (UTC) (envelope-from trociny@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A4E732115; Tue, 13 Aug 2013 19:59:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DJxnOj067212; Tue, 13 Aug 2013 19:59:49 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DJxn4X067211; Tue, 13 Aug 2013 19:59:49 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201308131959.r7DJxn4X067211@svn.freebsd.org> From: Mikolaj Golub Date: Tue, 13 Aug 2013 19:59:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254292 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 19:59:49 -0000 Author: trociny Date: Tue Aug 13 19:59:49 2013 New Revision: 254292 URL: http://svnweb.freebsd.org/changeset/base/254292 Log: Virtualize carp(4) variables to have per vnet control. Reviewed by: ae, glebius Modified: head/sys/netinet/ip_carp.c Modified: head/sys/netinet/ip_carp.c ============================================================================== --- head/sys/netinet/ip_carp.c Tue Aug 13 19:57:35 2013 (r254291) +++ head/sys/netinet/ip_carp.c Tue Aug 13 19:59:49 2013 (r254292) @@ -187,48 +187,59 @@ static int proto_reg[] = {-1, -1}; * dereferencing our function pointers. */ -static int carp_allow = 1; /* Accept incoming CARP packets. */ -static int carp_preempt = 0; /* Preempt slower nodes. */ -static int carp_log = 1; /* Log level. */ -static int carp_demotion = 0; /* Global advskew demotion. */ -static int carp_senderr_adj = CARP_MAXSKEW; /* Send error demotion factor */ -static int carp_ifdown_adj = CARP_MAXSKEW; /* Iface down demotion factor */ +/* Accept incoming CARP packets. */ +static VNET_DEFINE(int, carp_allow) = 1; +#define V_carp_allow VNET(carp_allow) + +/* Preempt slower nodes. */ +static VNET_DEFINE(int, carp_preempt) = 0; +#define V_carp_preempt VNET(carp_preempt) + +/* Log level. */ +static VNET_DEFINE(int, carp_log) = 1; +#define V_carp_log VNET(carp_log) + +/* Global advskew demotion. */ +static VNET_DEFINE(int, carp_demotion) = 0; +#define V_carp_demotion VNET(carp_demotion) + +/* Send error demotion factor. */ +static VNET_DEFINE(int, carp_senderr_adj) = CARP_MAXSKEW; +#define V_carp_senderr_adj VNET(carp_senderr_adj) + +/* Iface down demotion factor. */ +static VNET_DEFINE(int, carp_ifdown_adj) = CARP_MAXSKEW; +#define V_carp_ifdown_adj VNET(carp_ifdown_adj) + static int carp_demote_adj_sysctl(SYSCTL_HANDLER_ARGS); SYSCTL_NODE(_net_inet, IPPROTO_CARP, carp, CTLFLAG_RW, 0, "CARP"); -SYSCTL_INT(_net_inet_carp, OID_AUTO, allow, CTLFLAG_RW, &carp_allow, 0, - "Accept incoming CARP packets"); -SYSCTL_INT(_net_inet_carp, OID_AUTO, preempt, CTLFLAG_RW, &carp_preempt, 0, - "High-priority backup preemption mode"); -SYSCTL_INT(_net_inet_carp, OID_AUTO, log, CTLFLAG_RW, &carp_log, 0, - "CARP log level"); -SYSCTL_PROC(_net_inet_carp, OID_AUTO, demotion, CTLTYPE_INT|CTLFLAG_RW, +SYSCTL_VNET_INT(_net_inet_carp, OID_AUTO, allow, CTLFLAG_RW, + &VNET_NAME(carp_allow), 0, "Accept incoming CARP packets"); +SYSCTL_VNET_INT(_net_inet_carp, OID_AUTO, preempt, CTLFLAG_RW, + &VNET_NAME(carp_preempt), 0, "High-priority backup preemption mode"); +SYSCTL_VNET_INT(_net_inet_carp, OID_AUTO, log, CTLFLAG_RW, + &VNET_NAME(carp_log), 0, "CARP log level"); +SYSCTL_VNET_PROC(_net_inet_carp, OID_AUTO, demotion, CTLTYPE_INT|CTLFLAG_RW, 0, 0, carp_demote_adj_sysctl, "I", "Adjust demotion factor (skew of advskew)"); -SYSCTL_INT(_net_inet_carp, OID_AUTO, senderr_demotion_factor, CTLFLAG_RW, - &carp_senderr_adj, 0, "Send error demotion factor adjustment"); -SYSCTL_INT(_net_inet_carp, OID_AUTO, ifdown_demotion_factor, CTLFLAG_RW, - &carp_ifdown_adj, 0, "Interface down demotion factor adjustment"); +SYSCTL_VNET_INT(_net_inet_carp, OID_AUTO, senderr_demotion_factor, CTLFLAG_RW, + &VNET_NAME(carp_senderr_adj), 0, "Send error demotion factor adjustment"); +SYSCTL_VNET_INT(_net_inet_carp, OID_AUTO, ifdown_demotion_factor, CTLFLAG_RW, + &VNET_NAME(carp_ifdown_adj), 0, + "Interface down demotion factor adjustment"); + +VNET_PCPUSTAT_DEFINE(struct carpstats, carpstats); +VNET_PCPUSTAT_SYSINIT(carpstats); +VNET_PCPUSTAT_SYSUNINIT(carpstats); -static counter_u64_t carpstats[sizeof(struct carpstats) / sizeof(uint64_t)]; #define CARPSTATS_ADD(name, val) \ - counter_u64_add(carpstats[offsetof(struct carpstats, name) / \ + counter_u64_add(VNET(carpstats)[offsetof(struct carpstats, name) / \ sizeof(uint64_t)], (val)) #define CARPSTATS_INC(name) CARPSTATS_ADD(name, 1) -static int -carpstats_sysctl(SYSCTL_HANDLER_ARGS) -{ - struct carpstats s; - - COUNTER_ARRAY_COPY(carpstats, &s, sizeof(s) / sizeof(uint64_t)); - if (req->newptr) - COUNTER_ARRAY_ZERO(carpstats, sizeof(s) / sizeof(uint64_t)); - return (SYSCTL_OUT(req, &s, sizeof(s))); -} -SYSCTL_PROC(_net_inet_carp, OID_AUTO, stats, CTLTYPE_OPAQUE | CTLFLAG_RW, - NULL, 0, carpstats_sysctl, "I", - "CARP statistics (struct carpstats, netinet/ip_carp.h)"); +SYSCTL_VNET_PCPUSTAT(_net_inet_carp, OID_AUTO, stats, struct carpstats, + carpstats, "CARP statistics (struct carpstats, netinet/ip_carp.h)"); #define CARP_LOCK_INIT(sc) mtx_init(&(sc)->sc_mtx, "carp_softc", \ NULL, MTX_DEF) @@ -251,12 +262,12 @@ SYSCTL_PROC(_net_inet_carp, OID_AUTO, st } while (0) #define CARP_LOG(...) do { \ - if (carp_log > 0) \ + if (V_carp_log > 0) \ log(LOG_INFO, "carp: " __VA_ARGS__); \ } while (0) #define CARP_DEBUG(...) do { \ - if (carp_log > 1) \ + if (V_carp_log > 1) \ log(LOG_DEBUG, __VA_ARGS__); \ } while (0) @@ -277,8 +288,8 @@ SYSCTL_PROC(_net_inet_carp, OID_AUTO, st TAILQ_FOREACH((sc), &(ifp)->if_carp->cif_vrs, sc_list) #define DEMOTE_ADVSKEW(sc) \ - (((sc)->sc_advskew + carp_demotion > CARP_MAXSKEW) ? \ - CARP_MAXSKEW : ((sc)->sc_advskew + carp_demotion)) + (((sc)->sc_advskew + V_carp_demotion > CARP_MAXSKEW) ? \ + CARP_MAXSKEW : ((sc)->sc_advskew + V_carp_demotion)) static void carp_input_c(struct mbuf *, struct carp_header *, sa_family_t); static struct carp_softc @@ -430,7 +441,7 @@ carp_input(struct mbuf *m, int hlen) CARPSTATS_INC(carps_ipackets); - if (!carp_allow) { + if (!V_carp_allow) { m_freem(m); return; } @@ -513,7 +524,7 @@ carp6_input(struct mbuf **mp, int *offp, CARPSTATS_INC(carps_ipackets6); - if (!carp_allow) { + if (!V_carp_allow) { m_freem(m); return (IPPROTO_DONE); } @@ -647,7 +658,7 @@ carp_input_c(struct mbuf *m, struct carp * If we're pre-empting masters who advertise slower than us, * and this one claims to be slower, treat him as down. */ - if (carp_preempt && timevalcmp(&sc_tv, &ch_tv, <)) { + if (V_carp_preempt && timevalcmp(&sc_tv, &ch_tv, <)) { CARP_LOG("VHID %u@%s: BACKUP -> MASTER " "(preempting a slower master)\n", sc->sc_vhid, @@ -830,13 +841,14 @@ carp_send_ad_locked(struct carp_softc *s if (sc->sc_sendad_errors < INT_MAX) sc->sc_sendad_errors++; if (sc->sc_sendad_errors == CARP_SENDAD_MAX_ERRORS) - carp_demote_adj(carp_senderr_adj, "send error"); + carp_demote_adj(V_carp_senderr_adj, + "send error"); sc->sc_sendad_success = 0; } else { if (sc->sc_sendad_errors >= CARP_SENDAD_MAX_ERRORS) { if (++sc->sc_sendad_success >= CARP_SENDAD_MIN_SUCCESS) { - carp_demote_adj(-carp_senderr_adj, + carp_demote_adj(-V_carp_senderr_adj, "send ok"); sc->sc_sendad_errors = 0; } @@ -903,14 +915,14 @@ carp_send_ad_locked(struct carp_softc *s if (sc->sc_sendad_errors < INT_MAX) sc->sc_sendad_errors++; if (sc->sc_sendad_errors == CARP_SENDAD_MAX_ERRORS) - carp_demote_adj(carp_senderr_adj, + carp_demote_adj(V_carp_senderr_adj, "send6 error"); sc->sc_sendad_success = 0; } else { if (sc->sc_sendad_errors >= CARP_SENDAD_MAX_ERRORS) { if (++sc->sc_sendad_success >= CARP_SENDAD_MIN_SUCCESS) { - carp_demote_adj(-carp_senderr_adj, + carp_demote_adj(-V_carp_senderr_adj, "send6 ok"); sc->sc_sendad_errors = 0; } @@ -1541,7 +1553,7 @@ carp_destroy(struct carp_softc *sc) CARP_LOCK(sc); if (sc->sc_suppress) - carp_demote_adj(-carp_ifdown_adj, "vhid removed"); + carp_demote_adj(-V_carp_ifdown_adj, "vhid removed"); callout_drain(&sc->sc_ad_tmo); #ifdef INET callout_drain(&sc->sc_md_tmo); @@ -2006,13 +2018,13 @@ carp_sc_state(struct carp_softc *sc) carp_set_state(sc, INIT); carp_setrun(sc, 0); if (!sc->sc_suppress) - carp_demote_adj(carp_ifdown_adj, "interface down"); + carp_demote_adj(V_carp_ifdown_adj, "interface down"); sc->sc_suppress = 1; } else { carp_set_state(sc, INIT); carp_setrun(sc, 0); if (sc->sc_suppress) - carp_demote_adj(-carp_ifdown_adj, "interface up"); + carp_demote_adj(-V_carp_ifdown_adj, "interface up"); sc->sc_suppress = 0; } } @@ -2020,8 +2032,8 @@ carp_sc_state(struct carp_softc *sc) static void carp_demote_adj(int adj, char *reason) { - atomic_add_int(&carp_demotion, adj); - CARP_LOG("demoted by %d to %d (%s)\n", adj, carp_demotion, reason); + atomic_add_int(&V_carp_demotion, adj); + CARP_LOG("demoted by %d to %d (%s)\n", adj, V_carp_demotion, reason); taskqueue_enqueue(taskqueue_swi, &carp_sendall_task); } @@ -2030,7 +2042,7 @@ carp_demote_adj_sysctl(SYSCTL_HANDLER_AR { int new, error; - new = carp_demotion; + new = V_carp_demotion; error = sysctl_handle_int(oidp, &new, 0, req); if (error || !req->newptr) return (error); @@ -2101,8 +2113,6 @@ carp_mod_cleanup(void) mtx_unlock(&carp_mtx); taskqueue_drain(taskqueue_swi, &carp_sendall_task); mtx_destroy(&carp_mtx); - COUNTER_ARRAY_FREE(carpstats, - sizeof(struct carpstats) / sizeof(uint64_t)); } static int @@ -2112,8 +2122,6 @@ carp_mod_load(void) mtx_init(&carp_mtx, "carp_mtx", NULL, MTX_DEF); LIST_INIT(&carp_list); - COUNTER_ARRAY_ALLOC(carpstats, - sizeof(struct carpstats) / sizeof(uint64_t), M_WAITOK); carp_get_vhid_p = carp_get_vhid; carp_forus_p = carp_forus; carp_output_p = carp_output; From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:10:00 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6696C6CA; Tue, 13 Aug 2013 20:10:00 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from mho-02-ewr.mailhop.org (mho-02-ewr.mailhop.org [204.13.248.72]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3715421C1; Tue, 13 Aug 2013 20:09:59 +0000 (UTC) Received: from c-24-8-230-52.hsd1.co.comcast.net ([24.8.230.52] helo=damnhippie.dyndns.org) by mho-02-ewr.mailhop.org with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1V9Kuk-000Pqu-To; Tue, 13 Aug 2013 20:09:59 +0000 Received: from [172.22.42.240] (revolution.hippie.lan [172.22.42.240]) by damnhippie.dyndns.org (8.14.3/8.14.3) with ESMTP id r7DK9uUt036166; Tue, 13 Aug 2013 14:09:56 -0600 (MDT) (envelope-from ian@FreeBSD.org) X-Mail-Handler: Dyn Standard SMTP by Dyn X-Originating-IP: 24.8.230.52 X-Report-Abuse-To: abuse@dyndns.com (see http://www.dyndns.com/services/sendlabs/outbound_abuse.html for abuse reporting information) X-MHO-User: U2FsdGVkX1+5vrxczughjg8GeSjABh7O Subject: Re: svn commit: r254217 - head/sys/conf From: Ian Lepore To: Glen Barber In-Reply-To: <20130813175335.GR2432@glenbarber.us> References: <201308111357.r7BDvF7H065442@svn.freebsd.org> <1376407389.3320.209.camel@revolution.hippie.lan> <20130813153222.GL2432@glenbarber.us> <1376413337.3320.224.camel@revolution.hippie.lan> <20130813171302.GQ2432@glenbarber.us> <1376415112.3320.229.camel@revolution.hippie.lan> <20130813175335.GR2432@glenbarber.us> Content-Type: multipart/mixed; boundary="=-dS1c8vzyNz4qYYQw5eOu" Date: Tue, 13 Aug 2013 14:09:56 -0600 Message-ID: <1376424596.3320.242.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:10:00 -0000 --=-dS1c8vzyNz4qYYQw5eOu Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit On Tue, 2013-08-13 at 13:53 -0400, Glen Barber wrote: > On Tue, Aug 13, 2013 at 11:31:52AM -0600, Ian Lepore wrote: > > I'm not even sure what $0 *should* expand to in a script that was > > sourced in. The manpage doesn't say anything meaningful to me about it. > > Maybe it's a kind of "indeterminate results" thing which is pretty much > > what we're seeing. > > > > When the file is sourced, it should expand to the name of the file > sourcing the file. > > gjb@nucleus:~ % cat foo1.sh foo2.sh > #!/bin/sh > echo ${0} > . foo2.sh > #!/bin/sh > echo ${0} > gjb@nucleus:~ % sh ./foo1.sh > ./foo1.sh > ./foo1.sh > > > I was thinking that $(realpath ${PARAMFILE}) might be a good way to tap > > dance around the problem, but PARAMFILE can be set by default from > > $SYSDIR and it's not clear to me that that'll always be right either. > > > > Can you please try the attached patch? As with my prior tests, this > works for me... > > Glen > That didn't work, because $SYSDIR is derived from $0 which is the root of the problem. The attached works, and seems reasonable to me (it's your changes + passing in SYSDIR from the one place where newvers.sh is sourced rather than running it by name). -- Ian --=-dS1c8vzyNz4qYYQw5eOu Content-Disposition: inline; filename="newvers.sh.diff2.txt" Content-Type: text/plain; name="newvers.sh.diff2.txt"; charset="us-ascii" Content-Transfer-Encoding: 7bit Index: include/Makefile =================================================================== --- include/Makefile (revision 254281) +++ include/Makefile (working copy) @@ -108,6 +108,7 @@ osreldate.h: ${.CURDIR}/../sys/conf/newvers.sh ${. ${.CURDIR}/Makefile @${ECHO} creating osreldate.h from newvers.sh @MAKE=${MAKE}; \ + SYSDIR=${.CURDIR}/../sys; \ PARAMFILE=${.CURDIR}/../sys/sys/param.h; \ . ${.CURDIR}/../sys/conf/newvers.sh; \ echo "$$COPYRIGHT" > osreldate.h; \ Index: sys/conf/newvers.sh =================================================================== --- sys/conf/newvers.sh (revision 254281) +++ sys/conf/newvers.sh (working copy) @@ -38,8 +38,11 @@ if [ "X${BRANCH_OVERRIDE}" != "X" ]; then fi RELEASE="${REVISION}-${BRANCH}" VERSION="${TYPE} ${RELEASE}" -SYSDIR=$(dirname $0)/.. +if [ "X${SYSDIR}" = "X" ] ;then + SYSDIR=$(dirname $0)/.. +fi + if [ "X${PARAMFILE}" != "X" ]; then RELDATE=$(awk '/__FreeBSD_version.*propagated to newvers/ {print $3}' \ ${PARAMFILE}) @@ -96,7 +99,7 @@ for dir in /usr/bin /usr/local/bin; do # Run svnversion from ${dir} on this script; if return code # is not zero, the checkout might not be compatible with the # svnversion being used. - ${dir}/svnversion $(realpath ${0}) >/dev/null 2>&1 + ${dir}/svnversion ${SYSDIR}/Makefile >/dev/null 2>&1 if [ $? -eq 0 ]; then svnversion=${dir}/svnversion break @@ -105,7 +108,7 @@ for dir in /usr/bin /usr/local/bin; do done if [ -z "${svnversion}" ] && [ -x /usr/bin/svnliteversion ] ; then - /usr/bin/svnliteversion $(realpath ${0}) >/dev/null 2>&1 + /usr/bin/svnliteversion ${SYSDIR}/Makefile >/dev/null 2>&1 if [ $? -eq 0 ]; then svnversion=/usr/bin/svnliteversion else --=-dS1c8vzyNz4qYYQw5eOu-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:16:15 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 068A889E; Tue, 13 Aug 2013 20:16:15 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E84292231; Tue, 13 Aug 2013 20:16:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DKGE5V074588; Tue, 13 Aug 2013 20:16:14 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DKGEoR074586; Tue, 13 Aug 2013 20:16:14 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308132016.r7DKGEoR074586@svn.freebsd.org> From: Glen Barber Date: Tue, 13 Aug 2013 20:16:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254293 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:16:15 -0000 Author: gjb Date: Tue Aug 13 20:16:14 2013 New Revision: 254293 URL: http://svnweb.freebsd.org/changeset/base/254293 Log: - Only set ARCH_FLAGS (TARGET/TARGET_ARCH) if specified, otherwise allow the toolchain to detect the correct values. - Remove {SRC,DOC,PORT}REVISION variables, and use 'branch@rNNNNNN' as the {SRC,DOC,PORT}BRANCH variables. - Only set default KERNEL_FLAGS and WORLD_FLAGS make(1) jobs if the number of CPUs is greater than 1. Submitted by: hrs Modified: head/release/release.conf.sample head/release/release.sh Modified: head/release/release.conf.sample ============================================================================== --- head/release/release.conf.sample Tue Aug 13 19:59:49 2013 (r254292) +++ head/release/release.conf.sample Tue Aug 13 20:16:14 2013 (r254293) @@ -10,18 +10,13 @@ CHROOTDIR="/scratch" SVNROOT="svn://svn.FreeBSD.org" ## Set the src/, ports/, and doc/ branches or tags. -SRCBRANCH="base/head" -DOCBRANCH="doc/head" -PORTBRANCH="ports/head" +SRCBRANCH="base/head@rHEAD" +DOCBRANCH="doc/head@rHEAD" +PORTBRANCH="ports/head@rHEAD" ## Run svn co --force for src checkout. #SRC_FORCE_CHECKOUT=yes -## Set the src/, ports/, and doc/ revisions. -SRCREVISION="-rHEAD" -DOCREVISION="-rHEAD" -PORTREVISION="-rHEAD" - ## Set to override the default target architecture. #TARGET="amd64" #TARGET_ARCH="amd64" Modified: head/release/release.sh ============================================================================== --- head/release/release.sh Tue Aug 13 19:59:49 2013 (r254292) +++ head/release/release.sh Tue Aug 13 20:16:14 2013 (r254293) @@ -41,19 +41,14 @@ CHROOTDIR="/scratch" # The default svn checkout server, and svn branches for src/, doc/, # and ports/. SVNROOT="svn://svn.freebsd.org" -SRCBRANCH="base/head" -DOCBRANCH="doc/head" -PORTBRANCH="ports/head" +SRCBRANCH="base/head@rHEAD" +DOCBRANCH="doc/head@rHEAD" +PORTBRANCH="ports/head@rHEAD" # Sometimes one needs to checkout src with --force svn option. # If custom kernel configs copied to src tree before checkout, e.g. SRC_FORCE_CHECKOUT= -# The default src/, doc/, and ports/ revisions. -SRCREVISION="-rHEAD" -DOCREVISION="-rHEAD" -PORTREVISION="-rHEAD" - # The default make.conf and src.conf to use. Set to /dev/null # by default to avoid polluting the chroot(8) environment with # non-default settings. @@ -62,17 +57,16 @@ SRC_CONF="/dev/null" # The number of make(1) jobs, defaults to the number of CPUs available for # buildworld, and half of number of CPUs available for buildkernel. -WORLD_FLAGS="-j$(sysctl -n hw.ncpu)" -KERNEL_FLAGS="-j$(expr $(sysctl -n hw.ncpu) / 2)" +NCPU=$(sysctl -n hw.ncpu) +if [ ${NCPU} -gt 1 ]; then + WORLD_FLAGS="-j${NCPU}" + KERNEL_FLAGS="-j$(expr ${NCPU} / 2)" +fi MAKE_FLAGS="-s" # The name of the kernel to build, defaults to GENERIC. KERNEL="GENERIC" -# The TARGET and TARGET_ARCH to build, defaults to the running system. -TARGET="$(uname -p)" -TARGET_ARCH="${TARGET}" - # Set to non-empty value to disable checkout of doc/ and/or ports/. Disabling # ports/ checkout also forces NODOC to be set. NODOC= @@ -136,7 +130,11 @@ fi # this file, unless overridden by release.conf. In most cases, these # will not need to be changed. CONF_FILES="__MAKE_CONF=${MAKE_CONF} SRCCONF=${SRC_CONF}" -ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}" +if [ "x${TARGET}" != "x" ] && [ "x${TARGET_ARCH}" != "x" ]; then + ARCH_FLAGS="TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH}" +else + ARCH_FLAGS= +fi CHROOT_WMAKEFLAGS="${MAKE_FLAGS} ${WORLD_FLAGS} ${CONF_FILES}" CHROOT_IMAKEFLAGS="${CONF_FILES}" CHROOT_DMAKEFLAGS="${CONF_FILES}" @@ -165,12 +163,12 @@ set -e # Everything must succeed mkdir -p ${CHROOTDIR}/usr -svn co ${FORCE_SRC_KEY} ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src $SRCREVISION +svn co ${FORCE_SRC_KEY} ${SVNROOT}/${SRCBRANCH} ${CHROOTDIR}/usr/src if [ "x${NODOC}" = "x" ]; then - svn co ${SVNROOT}/${DOCBRANCH} ${CHROOTDIR}/usr/doc $DOCREVISION + svn co ${SVNROOT}/${DOCBRANCH} ${CHROOTDIR}/usr/doc fi if [ "x${NOPORTS}" = "x" ]; then - svn co ${SVNROOT}/${PORTBRANCH} ${CHROOTDIR}/usr/ports $PORTREVISION + svn co ${SVNROOT}/${PORTBRANCH} ${CHROOTDIR}/usr/ports fi get_rev_branch From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:22:58 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 81437A91; Tue, 13 Aug 2013 20:22:58 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6F40E22C3; Tue, 13 Aug 2013 20:22:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DKMwSe077765; Tue, 13 Aug 2013 20:22:58 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DKMwEI077764; Tue, 13 Aug 2013 20:22:58 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308132022.r7DKMwEI077764@svn.freebsd.org> From: Glen Barber Date: Tue, 13 Aug 2013 20:22:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254294 - head/share/man/man7 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:22:58 -0000 Author: gjb Date: Tue Aug 13 20:22:57 2013 New Revision: 254294 URL: http://svnweb.freebsd.org/changeset/base/254294 Log: - Remove the defaults for TARGET/TARGET_ARCH. - Note that WORLD_FLAGS and KERNEL_FLAGS set the number of make(1) jobs only on SMP-capable systems. MFC after: 3 days X-MFC-With: r254224 X-MFC-To: stable/9, releng/9.2 Modified: head/share/man/man7/release.7 Modified: head/share/man/man7/release.7 ============================================================================== --- head/share/man/man7/release.7 Tue Aug 13 20:16:14 2013 (r254293) +++ head/share/man/man7/release.7 Tue Aug 13 20:22:57 2013 (r254294) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 11, 2013 +.Dd August 13, 2013 .Dt RELEASE 7 .Os .Sh NAME @@ -178,12 +178,9 @@ The revision of the tree to use. Defaults to the current top of tree revision. .It Va TARGET -The target machine type for the release. -Defaults to the current machine type. +The target machine type for cross-building a release. .It Va TARGET_ARCH -The target machine architecture for the release. -Defaults to the value of -.Va TARGET . +The target machine architecture for cross-building a release. .Pp For the supported list of .Va TARGET @@ -227,7 +224,7 @@ Defaults to setting the number of .Xr make 1 jobs .Pq Ar -j -to the number of CPUs available on the system. +to the number of CPUs available on a SMP-capable system. .It Va KERNEL_FLAGS Additional flags to pass to .Xr make 1 @@ -238,7 +235,7 @@ Defaults to setting the number of .Xr make 1 jobs .Pq Ar -j -to half the number of CPUs available on the system. +to half the number of CPUs available on a SMP-capable system. .It Va NODOC Set to a non-empty value to skip the .Li doc/ From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:28:22 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F2BC1DDE; Tue, 13 Aug 2013 20:28:21 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E055F2303; Tue, 13 Aug 2013 20:28:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DKSLgV078768; Tue, 13 Aug 2013 20:28:21 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DKSLBJ078767; Tue, 13 Aug 2013 20:28:21 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201308132028.r7DKSLBJ078767@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Tue, 13 Aug 2013 20:28:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254295 - head/gnu/lib/libstdc++ X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:28:22 -0000 Author: pfg Date: Tue Aug 13 20:28:21 2013 New Revision: 254295 URL: http://svnweb.freebsd.org/changeset/base/254295 Log: Teach libstdc++ about logl(3). The logl(3) family of functions were implemented in r251292. Define them in libstdc++'s configuration so they can be used. Reviewed by: dim Modified: head/gnu/lib/libstdc++/config.h Modified: head/gnu/lib/libstdc++/config.h ============================================================================== --- head/gnu/lib/libstdc++/config.h Tue Aug 13 20:22:57 2013 (r254294) +++ head/gnu/lib/libstdc++/config.h Tue Aug 13 20:28:21 2013 (r254295) @@ -212,13 +212,13 @@ #define HAVE_LOG10F 1 /* Define to 1 if you have the `log10l' function. */ -/* #undef HAVE_LOG10L */ +#define HAVE_LOG10L 1 /* Define to 1 if you have the `logf' function. */ #define HAVE_LOGF 1 /* Define to 1 if you have the `logl' function. */ -/* #undef HAVE_LOGL */ +#define HAVE_LOGL 1 /* Define to 1 if you have the header file. */ #define HAVE_MACHINE_ENDIAN_H 1 From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:33:51 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7C568346; Tue, 13 Aug 2013 20:33:51 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 69C53237A; Tue, 13 Aug 2013 20:33:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DKXp4M081716; Tue, 13 Aug 2013 20:33:51 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DKXpS4081715; Tue, 13 Aug 2013 20:33:51 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308132033.r7DKXpS4081715@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 13 Aug 2013 20:33:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254296 - head/usr.bin/kdump X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:33:51 -0000 Author: jilles Date: Tue Aug 13 20:33:50 2013 New Revision: 254296 URL: http://svnweb.freebsd.org/changeset/base/254296 Log: kdump: Decode AT_FDCWD in first argument of bindat() and connectat(). Modified: head/usr.bin/kdump/kdump.c Modified: head/usr.bin/kdump/kdump.c ============================================================================== --- head/usr.bin/kdump/kdump.c Tue Aug 13 20:28:21 2013 (r254295) +++ head/usr.bin/kdump/kdump.c Tue Aug 13 20:33:50 2013 (r254296) @@ -606,6 +606,8 @@ ktrsyscall(struct ktr_syscall *ktr, u_in if (fancy && (flags == 0 || (flags & SV_ABI_MASK) == SV_ABI_FREEBSD)) { switch (ktr->ktr_code) { + case SYS_bindat: + case SYS_connectat: case SYS_faccessat: case SYS_fchmodat: case SYS_fchownat: From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:38:56 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9E4BF70A; Tue, 13 Aug 2013 20:38:56 +0000 (UTC) (envelope-from peter@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7285A23B4; Tue, 13 Aug 2013 20:38:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DKcutt082571; Tue, 13 Aug 2013 20:38:56 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DKcuH7082570; Tue, 13 Aug 2013 20:38:56 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201308132038.r7DKcuH7082570@svn.freebsd.org> From: Peter Wemm Date: Tue, 13 Aug 2013 20:38:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254297 - head/lib/libc/stdlib X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:38:56 -0000 Author: peter Date: Tue Aug 13 20:38:55 2013 New Revision: 254297 URL: http://svnweb.freebsd.org/changeset/base/254297 Log: vfork(2) was listed as deprecated in 1994 (r1573) and was the false reports of its impending demise were removed in 2009 (r199257). However, in 1996 (r16117) system(3) was switched from vfork(2) to fork(2) based partly on this. Switch back to vfork(2). This has a dramatic effect in cases of extreme mmap use - such as excessive abuse (500+) of shared libraries. popen(3) has used vfork(2) for a while. vfork(2) isn't going anywhere. Modified: head/lib/libc/stdlib/system.c Modified: head/lib/libc/stdlib/system.c ============================================================================== --- head/lib/libc/stdlib/system.c Tue Aug 13 20:33:50 2013 (r254296) +++ head/lib/libc/stdlib/system.c Tue Aug 13 20:38:55 2013 (r254297) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -56,37 +57,36 @@ __system(const char *command) if (!command) /* just checking... */ return(1); - /* - * Ignore SIGINT and SIGQUIT, block SIGCHLD. Remember to save - * existing signal dispositions. - */ - ign.sa_handler = SIG_IGN; - (void)sigemptyset(&ign.sa_mask); - ign.sa_flags = 0; - (void)_sigaction(SIGINT, &ign, &intact); - (void)_sigaction(SIGQUIT, &ign, &quitact); (void)sigemptyset(&newsigblock); (void)sigaddset(&newsigblock, SIGCHLD); (void)_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock); - switch(pid = fork()) { + switch(pid = vfork()) { case -1: /* error */ - break; + (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); + return (-1); case 0: /* child */ /* * Restore original signal dispositions and exec the command. */ - (void)_sigaction(SIGINT, &intact, NULL); - (void)_sigaction(SIGQUIT, &quitact, NULL); (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL); _exit(127); - default: /* parent */ - savedpid = pid; - do { - pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); - } while (pid == -1 && errno == EINTR); - break; } + /* + * If we are running means that the child has either completed + * its execve, or has failed. + * Block SIGINT/QUIT because sh -c handles it and wait for + * it to clean up. + */ + memset(&ign, 0, sizeof(ign)); + ign.sa_handler = SIG_IGN; + (void)sigemptyset(&ign.sa_mask); + (void)_sigaction(SIGINT, &ign, &intact); + (void)_sigaction(SIGQUIT, &ign, &quitact); + savedpid = pid; + do { + pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); + } while (pid == -1 && errno == EINTR); (void)_sigaction(SIGINT, &intact, NULL); (void)_sigaction(SIGQUIT, &quitact, NULL); (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:40:13 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 68091854; Tue, 13 Aug 2013 20:40:13 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from mail.allbsd.org (gatekeeper.allbsd.org [IPv6:2001:2f0:104:e001::32]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 229D923C1; Tue, 13 Aug 2013 20:40:11 +0000 (UTC) Received: from alph.d.allbsd.org (p2049-ipbf1102funabasi.chiba.ocn.ne.jp [122.26.101.49]) (authenticated bits=128) by mail.allbsd.org (8.14.5/8.14.5) with ESMTP id r7DKdsbC089882 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 14 Aug 2013 05:40:04 +0900 (JST) (envelope-from hrs@FreeBSD.org) Received: from localhost (localhost [IPv6:::1]) (authenticated bits=0) by alph.d.allbsd.org (8.14.5/8.14.5) with ESMTP id r7DKdqQ7018805; Wed, 14 Aug 2013 05:39:54 +0900 (JST) (envelope-from hrs@FreeBSD.org) Date: Wed, 14 Aug 2013 05:35:54 +0900 (JST) Message-Id: <20130814.053554.1333869805065914360.hrs@allbsd.org> To: gjb@FreeBSD.org Subject: Re: svn commit: r254224 - head/share/man/man7 From: Hiroki Sato In-Reply-To: <20130813195257.GA2241@glenbarber.us> References: <201308111857.r7BIvRSq080970@svn.freebsd.org> <20130814.042557.877689080765344354.hrs@allbsd.org> <20130813195257.GA2241@glenbarber.us> X-PGPkey-fingerprint: BDB3 443F A5DD B3D0 A530 FFD7 4F2C D3D8 2793 CF2D X-Mailer: Mew version 6.5 on Emacs 24.3 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="--Security_Multipart(Wed_Aug_14_05_35_54_2013_192)--" Content-Transfer-Encoding: 7bit X-Virus-Scanned: clamav-milter 0.97.4 at gatekeeper.allbsd.org X-Virus-Status: Clean X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (mail.allbsd.org [133.31.130.32]); Wed, 14 Aug 2013 05:40:04 +0900 (JST) X-Spam-Status: No, score=-90.6 required=13.0 tests=CONTENT_TYPE_PRESENT, DIRECTOCNDYN,DYN_PBL,RCVD_IN_PBL,SPF_SOFTFAIL,USER_IN_WHITELIST autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on gatekeeper.allbsd.org Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:40:13 -0000 ----Security_Multipart(Wed_Aug_14_05_35_54_2013_192)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Glen Barber wrote in <20130813195257.GA2241@glenbarber.us>: gj> On Wed, Aug 14, 2013 at 04:25:57AM +0900, Hiroki Sato wrote: gj> > gj> +.It Va SRCREVISION gj> > gj> +The revision of the gj> > gj> +.Li src/ gj> > gj> +tree to use. gj> > gj> +Defaults to the current top of tree revision. gj> > gj> +.It Va DOCREVISION gj> > gj> +The revision of the gj> > gj> +.Li doc/ gj> > gj> +tree to use. gj> > gj> +Defaults to the current top of tree revision. gj> > gj> +.It Va PORTREVISION gj> > gj> > Why separation between revision and branch is needed? I gj> > intentionally dropped this part from your old patch to gj> > generate-release.sh because branch and revision number can be gj> > specified like releng/9.2@NNN in a single variable. An incorrect gj> > configuration of the two variables do not always cause a fatal error, gj> > so specification in fewer number of variables is more foolproof. gj> > gj> gj> I personally do not like using branch@rNNNNNN, but will update to remove gj> the {SRC,DOC,PORT}REVISION variables. Thank you. I don't like it either, honestly... gj> > gj> +.It Va TARGET gj> > gj> +The target machine type for the release. gj> > gj> +Defaults to the current machine type. gj> > gj> +.It Va TARGET_ARCH gj> > gj> +The target machine architecture for the release. gj> > gj> +Defaults to the value of gj> > gj> +.Va TARGET . gj> > gj> +.Pp gj> > gj> > Please remove default configuration of these variables from gj> > release.sh. The reasonable defaults are already set in src/Makefile gj> > and setting TARGET_ARCH=$TARGET by default is simply wrong. Also, gj> > get_rev_branch() is redundant. gj> > gj> gj> Will be changed shortly. gj> gj> Why is get_rev_branch() redundant? Because variables in get_rev_branch() are already defined in src/release/Makefile, too. If one wants to use them in release.sh for some reason, "make -VBRANCH" is preferable instead of duplicating the same logic in Makefile to extract them from newvers.sh. This script should not do the same job which Makefile does. IMO, the default value of OSRELEASE is not needed here. It seems used in RELSTRING, but it does not work (and even if it works, it just generates the same default value). If we always need to override the default value, Makefile should be fixed instead. -- Hiroki ----Security_Multipart(Wed_Aug_14_05_35_54_2013_192)-- Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (FreeBSD) iEYEABECAAYFAlIKmKoACgkQTyzT2CeTzy3K3ACg0ggV0UJjWdkMB8//wZMOLnMo i18AnA+E0Au/N175GwCp+WMHWn7KAAD9 =gWnC -----END PGP SIGNATURE----- ----Security_Multipart(Wed_Aug_14_05_35_54_2013_192)---- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:42:28 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4C574A35; Tue, 13 Aug 2013 20:42:28 +0000 (UTC) (envelope-from phk@phk.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id 0FD8D240C; Tue, 13 Aug 2013 20:42:28 +0000 (UTC) Received: from critter.freebsd.dk (critter.freebsd.dk [192.168.61.3]) by phk.freebsd.dk (Postfix) with ESMTP id 880813EBB6; Tue, 13 Aug 2013 20:32:21 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.7/8.14.7) with ESMTP id r7DAxTUl011786; Tue, 13 Aug 2013 10:59:29 GMT (envelope-from phk@phk.freebsd.dk) To: Alexander Motin Subject: Re: svn commit: r254275 - head/sys/geom/raid In-reply-to: <5209F968.4090301@FreeBSD.org> From: "Poul-Henning Kamp" References: <201308130756.r7D7uf9o086164@svn.freebsd.org> <5209F2E0.9000901@FreeBSD.org> <5209F968.4090301@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1 Date: Tue, 13 Aug 2013 10:59:29 +0000 Message-ID: <11785.1376391569@critter.freebsd.dk> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Andriy Gapon X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:42:28 -0000 In message <5209F968.4090301@FreeBSD.org>, Alexander Motin writes: >On 13.08.2013 11:48, Andriy Gapon wrote: >> I'd like to stir a small (hopefully) discussion (again, hopefully): is EROFS >> appropriate here or would ENODEV be better? >> >> EROFS Read-only filesystem >> ENODEV Operation not supported by device EPERM ? -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:54:52 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4548820D; Tue, 13 Aug 2013 20:54:52 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [IPv6:2607:fc50:1:2300:1001:1001:1001:face]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 197D824B3; Tue, 13 Aug 2013 20:54:52 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 2BE00D09A; Tue, 13 Aug 2013 20:54:50 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 2BE00D09A Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Tue, 13 Aug 2013 16:54:48 -0400 From: Glen Barber To: Hiroki Sato Subject: Re: svn commit: r254224 - head/share/man/man7 Message-ID: <20130813205448.GC2241@glenbarber.us> References: <201308111857.r7BIvRSq080970@svn.freebsd.org> <20130814.042557.877689080765344354.hrs@allbsd.org> <20130813195257.GA2241@glenbarber.us> <20130814.053554.1333869805065914360.hrs@allbsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="MnLPg7ZWsaic7Fhd" Content-Disposition: inline In-Reply-To: <20130814.053554.1333869805065914360.hrs@allbsd.org> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:54:52 -0000 --MnLPg7ZWsaic7Fhd Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Aug 14, 2013 at 05:35:54AM +0900, Hiroki Sato wrote: > gj> Why is get_rev_branch() redundant? >=20 > Because variables in get_rev_branch() are already defined in > src/release/Makefile, too. If one wants to use them in release.sh > for some reason, "make -VBRANCH" is preferable instead of duplicating > the same logic in Makefile to extract them from newvers.sh. This > script should not do the same job which Makefile does. >=20 > IMO, the default value of OSRELEASE is not needed here. It seems > used in RELSTRING, but it does not work (and even if it works, it > just generates the same default value). If we always need to > override the default value, Makefile should be fixed instead. >=20 Got it. I think (based on my local revision history) that this was added before the changes to Makefile to set the RELSTRING, when it was done in generate-release.sh. I'll remove it. Glen --MnLPg7ZWsaic7Fhd Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSCp0YAAoJEFJPDDeguUajpEoH/3jRw6GTgnRXKviG/GkTzMPc bNEHPymTdGVQyvRKCCVJM3Bx7p4R9Ky0nrpEju9RuewtZ+7sjn6jzayJO02QQyp2 zEx5bRpYNbkrA47Qyltp4KsWZg2V8wvBmVoDH17zP3yYpvnYS6K39coCkfjEOF3N evZFs7dvVRBHHDNfDdM+VjtIyPAG/twXhAKGOn+kUjY/PjcppJ3tL9BZtGA6oBlg DJLq9Uk+YFP9ckEHv1gam+amrPTyL8O1SqeMsfbBFbi6VbeL3CPcieF+4i7+cVt2 8m43X+l0f50bZiVwoCCe84H43vv+z7Z9ra27mBfNK8N4biu45wSIurTIfWB5lIM= =6fme -----END PGP SIGNATURE----- --MnLPg7ZWsaic7Fhd-- From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 20:57:39 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E01633B1; Tue, 13 Aug 2013 20:57:39 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9E6D624D3; Tue, 13 Aug 2013 20:57:39 +0000 (UTC) Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id B4472358C67; Tue, 13 Aug 2013 22:57:36 +0200 (CEST) Received: by snail.stack.nl (Postfix, from userid 1677) id 90B3828494; Tue, 13 Aug 2013 22:57:36 +0200 (CEST) Date: Tue, 13 Aug 2013 22:57:36 +0200 From: Jilles Tjoelker To: David Chisnall Subject: Re: svn commit: r253802 - head/contrib/llvm/tools/clang/lib/Headers Message-ID: <20130813205736.GA68244@stack.nl> References: <201307301233.r6UCXLT8012177@svn.freebsd.org> <2DE35C45-B110-4D93-BFA7-542A3D1EE902@freebsd.org> <20130807205653.GB4918@stack.nl> <46BC9A7E-4AF1-4BE9-9902-3578BDE0CD56@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <46BC9A7E-4AF1-4BE9-9902-3578BDE0CD56@FreeBSD.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: "svn-src-head@FreeBSD.org" , Matthew Fleming , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" , Dimitry Andric X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 20:57:40 -0000 On Thu, Aug 08, 2013 at 09:37:02AM +0100, David Chisnall wrote: > On 7 Aug 2013, at 21:56, Jilles Tjoelker wrote: > > The code_model stuff is not for x32 support but for PIC/PIE code where > > code+data exceed 2GB so relative addressing cannot always be used. The > > ABI then prescribes that %r15 be loaded with the GOT pointer when > > invoking a large model (code>2GB) PLT entry; otherwise (medium model or > > no PLT entry used), much like i386, any register can be used for the GOT > > pointer. > Does our rtld provide support for this? We recently encountered a > problem with the new LLVM JIT because FreeBSD's mmap() does not > provide a way of requesting memory that is below the 2GB line and so > we can't use the small code model. Our rtld does not seem to support the large PLT layout, but the regular layout may (should) be used if the PLT can reach the GOT via relative (<=2GB) addressing. This should be the case unless very many symbols are used. I think it is more likely to encounter problems with ld. Support for the larger models may have been added later. Given that JIT is for performance and larger addresses increase code size and register pressure, the mmap() flag is probably useful. Alternatively, all the JITted code could be placed in one block and use relative addressing. -- Jilles Tjoelker From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:00:48 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 182F76DA; Tue, 13 Aug 2013 21:00:48 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9A051252A; Tue, 13 Aug 2013 21:00:47 +0000 (UTC) Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id 332DE358C67; Tue, 13 Aug 2013 23:00:46 +0200 (CEST) Received: by snail.stack.nl (Postfix, from userid 1677) id F1AC028494; Tue, 13 Aug 2013 23:00:45 +0200 (CEST) Date: Tue, 13 Aug 2013 23:00:45 +0200 From: Jilles Tjoelker To: Peter Wemm Subject: Re: svn commit: r254297 - head/lib/libc/stdlib Message-ID: <20130813210045.GB68244@stack.nl> References: <201308132038.r7DKcuH7082570@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201308132038.r7DKcuH7082570@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:00:48 -0000 On Tue, Aug 13, 2013 at 08:38:56PM +0000, Peter Wemm wrote: > Author: peter > Date: Tue Aug 13 20:38:55 2013 > New Revision: 254297 > URL: http://svnweb.freebsd.org/changeset/base/254297 > Log: > vfork(2) was listed as deprecated in 1994 (r1573) and was the false > reports of its impending demise were removed in 2009 (r199257). > However, in 1996 (r16117) system(3) was switched from vfork(2) to > fork(2) based partly on this. Switch back to vfork(2). This has a > dramatic effect in cases of extreme mmap use - such as excessive > abuse (500+) of shared libraries. > popen(3) has used vfork(2) for a while. vfork(2) isn't going anywhere. > Modified: > head/lib/libc/stdlib/system.c > Modified: head/lib/libc/stdlib/system.c > ============================================================================== > --- head/lib/libc/stdlib/system.c Tue Aug 13 20:33:50 2013 (r254296) > +++ head/lib/libc/stdlib/system.c Tue Aug 13 20:38:55 2013 (r254297) > @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > #include > #include > #include > @@ -56,37 +57,36 @@ __system(const char *command) > if (!command) /* just checking... */ > return(1); > > - /* > - * Ignore SIGINT and SIGQUIT, block SIGCHLD. Remember to save > - * existing signal dispositions. > - */ > - ign.sa_handler = SIG_IGN; > - (void)sigemptyset(&ign.sa_mask); > - ign.sa_flags = 0; > - (void)_sigaction(SIGINT, &ign, &intact); > - (void)_sigaction(SIGQUIT, &ign, &quitact); > (void)sigemptyset(&newsigblock); > (void)sigaddset(&newsigblock, SIGCHLD); > (void)_sigprocmask(SIG_BLOCK, &newsigblock, &oldsigblock); > - switch(pid = fork()) { > + switch(pid = vfork()) { > case -1: /* error */ > - break; > + (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); > + return (-1); > case 0: /* child */ > /* > * Restore original signal dispositions and exec the command. > */ > - (void)_sigaction(SIGINT, &intact, NULL); > - (void)_sigaction(SIGQUIT, &quitact, NULL); > (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); > execl(_PATH_BSHELL, "sh", "-c", command, (char *)NULL); > _exit(127); > - default: /* parent */ > - savedpid = pid; > - do { > - pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); > - } while (pid == -1 && errno == EINTR); > - break; > } > + /* > + * If we are running means that the child has either completed > + * its execve, or has failed. > + * Block SIGINT/QUIT because sh -c handles it and wait for > + * it to clean up. > + */ > + memset(&ign, 0, sizeof(ign)); > + ign.sa_handler = SIG_IGN; > + (void)sigemptyset(&ign.sa_mask); > + (void)_sigaction(SIGINT, &ign, &intact); > + (void)_sigaction(SIGQUIT, &ign, &quitact); > + savedpid = pid; > + do { > + pid = _wait4(savedpid, &pstat, 0, (struct rusage *)0); > + } while (pid == -1 && errno == EINTR); > (void)_sigaction(SIGINT, &intact, NULL); > (void)_sigaction(SIGQUIT, &quitact, NULL); > (void)_sigprocmask(SIG_SETMASK, &oldsigblock, NULL); This is definitely good, but I think ignoring SIGINT/SIGQUIT only after the vfork() puts back an old bug. The ignore was deliberately moved to before fork(). You can avoid it more simply by adding SIGINT and SIGQUIT to the signal mask above. The kernel then keeps any SIGINT/SIGQUIT pending until the signal is ignored after vfork(). -- Jilles Tjoelker From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:01:24 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3C598817; Tue, 13 Aug 2013 21:01:24 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2A50B2531; Tue, 13 Aug 2013 21:01:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DL1O14092467; Tue, 13 Aug 2013 21:01:24 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DL1OnR092466; Tue, 13 Aug 2013 21:01:24 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308132101.r7DL1OnR092466@svn.freebsd.org> From: Glen Barber Date: Tue, 13 Aug 2013 21:01:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254298 - head/release X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:01:24 -0000 Author: gjb Date: Tue Aug 13 21:01:23 2013 New Revision: 254298 URL: http://svnweb.freebsd.org/changeset/base/254298 Log: Remove get_rev_branch(), functionality exists in the release/Makefile. Submitted by: hrs Modified: head/release/release.sh Modified: head/release/release.sh ============================================================================== --- head/release/release.sh Tue Aug 13 20:38:55 2013 (r254297) +++ head/release/release.sh Tue Aug 13 21:01:23 2013 (r254298) @@ -73,17 +73,6 @@ NODOC= NOPORTS= MAKE_FLAGS="${MAKE_FLAGS}" -get_rev_branch () { - # Set up the OSVERSION, BRANCH, and REVISION based on the src/ tree - # checked out. - OSVERSION=$(grep '#define __FreeBSD_version' ${CHROOTDIR}/usr/src/sys/sys/param.h | awk '{print $3}') - BRANCH=$(grep '^BRANCH=' ${CHROOTDIR}/usr/src/sys/conf/newvers.sh \ - | awk -F\= '{print $2}' | sed -e 's,",,g') - REVISION=$(grep '^REVISION=' ${CHROOTDIR}/usr/src/sys/conf/newvers.sh \ - | awk -F\= '{print $2}' | sed -e 's,",,g') - OSRELEASE="${REVISION}-${BRANCH}" -} - usage() { echo "Usage: $0 [-c release.conf]" exit 1 @@ -171,8 +160,6 @@ if [ "x${NOPORTS}" = "x" ]; then svn co ${SVNROOT}/${PORTBRANCH} ${CHROOTDIR}/usr/ports fi -get_rev_branch - cd ${CHROOTDIR}/usr/src make ${CHROOT_WMAKEFLAGS} buildworld make ${CHROOT_IMAKEFLAGS} installworld DESTDIR=${CHROOTDIR} From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:12:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 10777C12; Tue, 13 Aug 2013 21:12:29 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E23EA25E5; Tue, 13 Aug 2013 21:12:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DLCSxg096649; Tue, 13 Aug 2013 21:12:28 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DLCSJt096646; Tue, 13 Aug 2013 21:12:28 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308132112.r7DLCSJt096646@svn.freebsd.org> From: Ian Lepore Date: Tue, 13 Aug 2013 21:12:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254299 - head/sys/arm/freescale/imx X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:12:29 -0000 Author: ian Date: Tue Aug 13 21:12:28 2013 New Revision: 254299 URL: http://svnweb.freebsd.org/changeset/base/254299 Log: Rename imx_machdep.c to imx51_machdep.c, because it contains hardware addresses which are specific to the imx51 chips. Added: head/sys/arm/freescale/imx/imx51_machdep.c - copied unchanged from r254281, head/sys/arm/freescale/imx/imx_machdep.c Deleted: head/sys/arm/freescale/imx/imx_machdep.c Modified: head/sys/arm/freescale/imx/files.imx51 Modified: head/sys/arm/freescale/imx/files.imx51 ============================================================================== --- head/sys/arm/freescale/imx/files.imx51 Tue Aug 13 21:01:23 2013 (r254298) +++ head/sys/arm/freescale/imx/files.imx51 Tue Aug 13 21:12:28 2013 (r254299) @@ -8,7 +8,7 @@ arm/arm/irq_dispatch.S standard kern/kern_clocksource.c standard # Init -arm/freescale/imx/imx_machdep.c standard +arm/freescale/imx/imx51_machdep.c standard arm/freescale/imx/common.c standard arm/freescale/imx/bus_space.c standard Copied: head/sys/arm/freescale/imx/imx51_machdep.c (from r254281, head/sys/arm/freescale/imx/imx_machdep.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/arm/freescale/imx/imx51_machdep.c Tue Aug 13 21:12:28 2013 (r254299, copy of r254281, head/sys/arm/freescale/imx/imx_machdep.c) @@ -0,0 +1,142 @@ +/*- + * Copyright (c) 1994-1998 Mark Brinicombe. + * Copyright (c) 1994 Brini. + * Copyright (c) 2012, 2013 The FreeBSD Foundation + * All rights reserved. + * + * + * This code is derived from software written for Brini by Mark Brinicombe + * Portions of this software were developed by Oleksandr Rybalko + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Brini. + * 4. The name of the company nor the name of the author may be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY BRINI ``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 BRINI 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. + * + * from: FreeBSD: //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c, rev 45 + */ + +#include "opt_platform.h" + +#include +__FBSDID("$FreeBSD$"); + +#define _ARM32_BUS_DMA_PRIVATE +#include +#include +#include +#include + +#include +#include + +#include +#include /* For trapframe_t, used in */ +#include +#include + +#include + +#define IMX51_DEV_VIRT_BASE 0xe0000000 +vm_offset_t +initarm_lastaddr(void) +{ + + boothowto |= RB_VERBOSE|RB_MULTIPLE; + bootverbose = 1; + + if (fdt_immr_addr(IMX51_DEV_VIRT_BASE) != 0) + while (1); + + /* Platform-specific initialisation */ + return (fdt_immr_va - ARM_NOCACHE_KVA_SIZE); +} + +/* + * Set initial values of GPIO output ports + */ +void +initarm_gpio_init(void) +{ + +} + +void +initarm_late_init(void) +{ + +} + +#define FDT_DEVMAP_MAX 2 +static struct pmap_devmap fdt_devmap[FDT_DEVMAP_MAX] = { + { 0, 0, 0, 0, 0, }, + { 0, 0, 0, 0, 0, } +}; + +/* + * Construct pmap_devmap[] with DT-derived config data. + */ +int +platform_devmap_init(void) +{ + + /* + * Map segment where UART1 and UART2 located. + */ + fdt_devmap[0].pd_va = IMX51_DEV_VIRT_BASE + 0x03f00000; + fdt_devmap[0].pd_pa = 0x73f00000; + fdt_devmap[0].pd_size = 0x00100000; + fdt_devmap[0].pd_prot = VM_PROT_READ | VM_PROT_WRITE; + fdt_devmap[0].pd_cache = PTE_NOCACHE; + + pmap_devmap_bootstrap_table = &fdt_devmap[0]; + return (0); +} + +struct arm32_dma_range * +bus_dma_get_range(void) +{ + + return (NULL); +} + +int +bus_dma_get_range_nb(void) +{ + + return (0); +} + +void +cpu_reset(void) +{ + + printf("Reset ...\n"); + /* Clear n_reset flag */ + *((volatile u_int16_t *)(IMX51_DEV_VIRT_BASE + 0x03f98000)) = + (u_int16_t)0; + while (1); +} From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:34:06 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1B9CE35E; Tue, 13 Aug 2013 21:34:06 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 072592751; Tue, 13 Aug 2013 21:34:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DLY5e2073127; Tue, 13 Aug 2013 21:34:05 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DLY4Iw072825; Tue, 13 Aug 2013 21:34:04 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308132134.r7DLY4Iw072825@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 13 Aug 2013 21:34:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254300 - in head/sys: amd64/include dev/acpica/Osd i386/include ia64/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:34:06 -0000 Author: jkim Date: Tue Aug 13 21:34:03 2013 New Revision: 254300 URL: http://svnweb.freebsd.org/changeset/base/254300 Log: Tidy up global locks for ACPICA. There is no functional change. Modified: head/sys/amd64/include/acpica_machdep.h head/sys/dev/acpica/Osd/OsdSynch.c head/sys/i386/include/acpica_machdep.h head/sys/ia64/include/acpica_machdep.h Modified: head/sys/amd64/include/acpica_machdep.h ============================================================================== --- head/sys/amd64/include/acpica_machdep.h Tue Aug 13 21:12:28 2013 (r254299) +++ head/sys/amd64/include/acpica_machdep.h Tue Aug 13 21:34:03 2013 (r254300) @@ -59,9 +59,9 @@ #define ACPI_FLUSH_CPU_CACHE() wbinvd() -/* Section 5.2.9.1: global lock acquire/release functions */ -extern int acpi_acquire_global_lock(uint32_t *lock); -extern int acpi_release_global_lock(uint32_t *lock); +/* Section 5.2.10.1: global lock acquire/release functions */ +int acpi_acquire_global_lock(volatile uint32_t *); +int acpi_release_global_lock(volatile uint32_t *); #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ } while (0) Modified: head/sys/dev/acpica/Osd/OsdSynch.c ============================================================================== --- head/sys/dev/acpica/Osd/OsdSynch.c Tue Aug 13 21:12:28 2013 (r254299) +++ head/sys/dev/acpica/Osd/OsdSynch.c Tue Aug 13 21:34:03 2013 (r254300) @@ -566,8 +566,6 @@ AcpiOsReleaseLock(ACPI_SPINLOCK Handle, } /* Section 5.2.10.1: global lock acquire/release functions */ -#define GL_BIT_PENDING 0x01 -#define GL_BIT_OWNED 0x02 /* * Acquire the global lock. If busy, set the pending bit. The caller @@ -575,18 +573,18 @@ AcpiOsReleaseLock(ACPI_SPINLOCK Handle, * and then attempt to acquire it again. */ int -acpi_acquire_global_lock(uint32_t *lock) +acpi_acquire_global_lock(volatile uint32_t *lock) { uint32_t new, old; do { old = *lock; - new = (old & ~GL_BIT_PENDING) | GL_BIT_OWNED; - if ((old & GL_BIT_OWNED) != 0) - new |= GL_BIT_PENDING; - } while (atomic_cmpset_acq_int(lock, old, new) == 0); + new = (old & ~ACPI_GLOCK_PENDING) | ACPI_GLOCK_OWNED; + if ((old & ACPI_GLOCK_OWNED) != 0) + new |= ACPI_GLOCK_PENDING; + } while (atomic_cmpset_32(lock, old, new) == 0); - return ((new & GL_BIT_PENDING) == 0); + return ((new & ACPI_GLOCK_PENDING) == 0); } /* @@ -595,14 +593,14 @@ acpi_acquire_global_lock(uint32_t *lock) * releases the lock. */ int -acpi_release_global_lock(uint32_t *lock) +acpi_release_global_lock(volatile uint32_t *lock) { uint32_t new, old; do { old = *lock; - new = old & ~(GL_BIT_PENDING | GL_BIT_OWNED); - } while (atomic_cmpset_rel_int(lock, old, new) == 0); + new = old & ~(ACPI_GLOCK_PENDING | ACPI_GLOCK_OWNED); + } while (atomic_cmpset_32(lock, old, new) == 0); - return ((old & GL_BIT_PENDING) != 0); + return ((old & ACPI_GLOCK_PENDING) != 0); } Modified: head/sys/i386/include/acpica_machdep.h ============================================================================== --- head/sys/i386/include/acpica_machdep.h Tue Aug 13 21:12:28 2013 (r254299) +++ head/sys/i386/include/acpica_machdep.h Tue Aug 13 21:34:03 2013 (r254300) @@ -59,9 +59,9 @@ #define ACPI_FLUSH_CPU_CACHE() wbinvd() -/* Section 5.2.9.1: global lock acquire/release functions */ -extern int acpi_acquire_global_lock(uint32_t *lock); -extern int acpi_release_global_lock(uint32_t *lock); +/* Section 5.2.10.1: global lock acquire/release functions */ +int acpi_acquire_global_lock(volatile uint32_t *); +int acpi_release_global_lock(volatile uint32_t *); #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ } while (0) Modified: head/sys/ia64/include/acpica_machdep.h ============================================================================== --- head/sys/ia64/include/acpica_machdep.h Tue Aug 13 21:12:28 2013 (r254299) +++ head/sys/ia64/include/acpica_machdep.h Tue Aug 13 21:34:03 2013 (r254300) @@ -60,9 +60,9 @@ #define ACPI_FLUSH_CPU_CACHE() /* XXX ia64_fc()? */ -/* Section 5.2.9.1: global lock acquire/release functions */ -extern int acpi_acquire_global_lock(uint32_t *lock); -extern int acpi_release_global_lock(uint32_t *lock); +/* Section 5.2.10.1: global lock acquire/release functions */ +int acpi_acquire_global_lock(volatile uint32_t *); +int acpi_release_global_lock(volatile uint32_t *); #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ } while (0) From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:45:49 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1B5A3744; Tue, 13 Aug 2013 21:45:49 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 08B6C2825; Tue, 13 Aug 2013 21:45:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DLjmCX006847; Tue, 13 Aug 2013 21:45:48 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DLjmB7006846; Tue, 13 Aug 2013 21:45:48 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308132145.r7DLjmB7006846@svn.freebsd.org> From: Jilles Tjoelker Date: Tue, 13 Aug 2013 21:45:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254301 - head/lib/libc/gmon X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:45:49 -0000 Author: jilles Date: Tue Aug 13 21:45:48 2013 New Revision: 254301 URL: http://svnweb.freebsd.org/changeset/base/254301 Log: libc: Use O_CLOEXEC when writing gmon files (cc -pg). Modified: head/lib/libc/gmon/gmon.c Modified: head/lib/libc/gmon/gmon.c ============================================================================== --- head/lib/libc/gmon/gmon.c Tue Aug 13 21:34:03 2013 (r254300) +++ head/lib/libc/gmon/gmon.c Tue Aug 13 21:45:48 2013 (r254301) @@ -163,13 +163,13 @@ _mcleanup(void) else snprintf(outname, sizeof(outname), "%s.gmon", _getprogname()); - fd = _open(outname, O_CREAT|O_TRUNC|O_WRONLY, 0666); + fd = _open(outname, O_CREAT|O_TRUNC|O_WRONLY|O_CLOEXEC, 0666); if (fd < 0) { _warn("_mcleanup: %s", outname); return; } #ifdef DEBUG - log = _open("gmon.log", O_CREAT|O_TRUNC|O_WRONLY, 0664); + log = _open("gmon.log", O_CREAT|O_TRUNC|O_WRONLY|O_CLOEXEC, 0664); if (log < 0) { _warn("_mcleanup: gmon.log"); return; From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:47:10 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F32B989E; Tue, 13 Aug 2013 21:47:09 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D18362837; Tue, 13 Aug 2013 21:47:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DLl9f8009343; Tue, 13 Aug 2013 21:47:09 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DLl8E3008759; Tue, 13 Aug 2013 21:47:08 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201308132147.r7DLl8E3008759@svn.freebsd.org> From: Jim Harris Date: Tue, 13 Aug 2013 21:47:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254302 - head/sys/dev/nvme X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:47:10 -0000 Author: jimharris Date: Tue Aug 13 21:47:08 2013 New Revision: 254302 URL: http://svnweb.freebsd.org/changeset/base/254302 Log: Send a shutdown notification in the driver unload path, to ensure notification gets sent in cases where system shuts down with driver unloaded. Sponsored by: Intel Reviewed by: carl MFC after: 3 days Modified: head/sys/dev/nvme/nvme.c head/sys/dev/nvme/nvme.h head/sys/dev/nvme/nvme_ctrlr.c head/sys/dev/nvme/nvme_private.h Modified: head/sys/dev/nvme/nvme.c ============================================================================== --- head/sys/dev/nvme/nvme.c Tue Aug 13 21:45:48 2013 (r254301) +++ head/sys/dev/nvme/nvme.c Tue Aug 13 21:47:08 2013 (r254302) @@ -157,30 +157,14 @@ nvme_shutdown(void) { device_t *devlist; struct nvme_controller *ctrlr; - union cc_register cc; - union csts_register csts; int dev, devcount; if (devclass_get_devices(nvme_devclass, &devlist, &devcount)) return; for (dev = 0; dev < devcount; dev++) { - /* - * Only notify controller of shutdown when a real shutdown is - * in process, not when a module unload occurs. It seems at - * least some controllers (Chatham at least) don't let you - * re-enable the controller after shutdown notification has - * been received. - */ ctrlr = DEVICE2SOFTC(devlist[dev]); - cc.raw = nvme_mmio_read_4(ctrlr, cc); - cc.bits.shn = NVME_SHN_NORMAL; - nvme_mmio_write_4(ctrlr, cc, cc.raw); - csts.raw = nvme_mmio_read_4(ctrlr, csts); - while (csts.bits.shst != NVME_SHST_COMPLETE) { - DELAY(5); - csts.raw = nvme_mmio_read_4(ctrlr, csts); - } + nvme_ctrlr_shutdown(ctrlr); } free(devlist, M_TEMP); Modified: head/sys/dev/nvme/nvme.h ============================================================================== --- head/sys/dev/nvme/nvme.h Tue Aug 13 21:45:48 2013 (r254301) +++ head/sys/dev/nvme/nvme.h Tue Aug 13 21:47:08 2013 (r254302) @@ -170,27 +170,30 @@ struct nvme_registers union cap_lo_register cap_lo; union cap_hi_register cap_hi; - uint32_t vs; /* version */ - uint32_t intms; /* interrupt mask set */ - uint32_t intmc; /* interrupt mask clear */ + uint32_t vs; /* version */ + uint32_t intms; /* interrupt mask set */ + uint32_t intmc; /* interrupt mask clear */ /** controller configuration */ union cc_register cc; - uint32_t reserved1; - uint32_t csts; /* controller status */ - uint32_t reserved2; + uint32_t reserved1; + + /** controller status */ + union csts_register csts; + + uint32_t reserved2; /** admin queue attributes */ union aqa_register aqa; - uint64_t asq; /* admin submission queue base addr */ - uint64_t acq; /* admin completion queue base addr */ - uint32_t reserved3[0x3f2]; + uint64_t asq; /* admin submission queue base addr */ + uint64_t acq; /* admin completion queue base addr */ + uint32_t reserved3[0x3f2]; struct { - uint32_t sq_tdbl; /* submission queue tail doorbell */ - uint32_t cq_hdbl; /* completion queue head doorbell */ + uint32_t sq_tdbl; /* submission queue tail doorbell */ + uint32_t cq_hdbl; /* completion queue head doorbell */ } doorbell[1] __packed; } __packed; Modified: head/sys/dev/nvme/nvme_ctrlr.c ============================================================================== --- head/sys/dev/nvme/nvme_ctrlr.c Tue Aug 13 21:45:48 2013 (r254301) +++ head/sys/dev/nvme/nvme_ctrlr.c Tue Aug 13 21:47:08 2013 (r254302) @@ -1117,6 +1117,21 @@ nvme_ctrlr_destruct(struct nvme_controll { int i; + /* + * Notify the controller of a shutdown, even though this is due to + * a driver unload, not a system shutdown (this path is not invoked + * during shutdown). This ensures the controller receives a + * shutdown notification in case the system is shutdown before + * reloading the driver. + * + * Chatham does not let you re-enable the controller after shutdown + * notification has been received, so do not send it in this case. + * This is OK because Chatham does not depend on the shutdown + * notification anyways. + */ + if (pci_get_devid(ctrlr->dev) != CHATHAM_PCI_ID) + nvme_ctrlr_shutdown(ctrlr); + nvme_ctrlr_disable(ctrlr); taskqueue_free(ctrlr->taskqueue); @@ -1163,6 +1178,26 @@ nvme_ctrlr_destruct(struct nvme_controll } void +nvme_ctrlr_shutdown(struct nvme_controller *ctrlr) +{ + union cc_register cc; + union csts_register csts; + int ticks = 0; + + cc.raw = nvme_mmio_read_4(ctrlr, cc); + cc.bits.shn = NVME_SHN_NORMAL; + nvme_mmio_write_4(ctrlr, cc, cc.raw); + csts.raw = nvme_mmio_read_4(ctrlr, csts); + while ((csts.bits.shst != NVME_SHST_COMPLETE) && (ticks++ < 5*hz)) { + pause("nvme shn", 1); + csts.raw = nvme_mmio_read_4(ctrlr, csts); + } + if (csts.bits.shst != NVME_SHST_COMPLETE) + nvme_printf(ctrlr, "did not complete shutdown within 5 seconds " + "of notification\n"); +} + +void nvme_ctrlr_submit_admin_request(struct nvme_controller *ctrlr, struct nvme_request *req) { Modified: head/sys/dev/nvme/nvme_private.h ============================================================================== --- head/sys/dev/nvme/nvme_private.h Tue Aug 13 21:45:48 2013 (r254301) +++ head/sys/dev/nvme/nvme_private.h Tue Aug 13 21:47:08 2013 (r254302) @@ -433,6 +433,7 @@ void nvme_completion_poll_cb(void *arg, int nvme_ctrlr_construct(struct nvme_controller *ctrlr, device_t dev); void nvme_ctrlr_destruct(struct nvme_controller *ctrlr, device_t dev); +void nvme_ctrlr_shutdown(struct nvme_controller *ctrlr); int nvme_ctrlr_hw_reset(struct nvme_controller *ctrlr); void nvme_ctrlr_reset(struct nvme_controller *ctrlr); /* ctrlr defined as void * to allow use with config_intrhook. */ From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:49:33 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2EDD9A89; Tue, 13 Aug 2013 21:49:33 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1C07D2852; Tue, 13 Aug 2013 21:49:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DLnWu5059088; Tue, 13 Aug 2013 21:49:32 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DLnWDB059058; Tue, 13 Aug 2013 21:49:32 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201308132149.r7DLnWDB059058@svn.freebsd.org> From: Jim Harris Date: Tue, 13 Aug 2013 21:49:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254303 - head/sys/dev/nvme X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:49:33 -0000 Author: jimharris Date: Tue Aug 13 21:49:32 2013 New Revision: 254303 URL: http://svnweb.freebsd.org/changeset/base/254303 Log: If a controller fails to initialize, do not notify consumers (nvd) of its namespaces. Sponsoredy by: Intel Reviewed by: carl MFC after: 3 days Modified: head/sys/dev/nvme/nvme.c Modified: head/sys/dev/nvme/nvme.c ============================================================================== --- head/sys/dev/nvme/nvme.c Tue Aug 13 21:47:08 2013 (r254302) +++ head/sys/dev/nvme/nvme.c Tue Aug 13 21:49:32 2013 (r254303) @@ -278,6 +278,15 @@ nvme_notify_consumer(struct nvme_consume else ctrlr_cookie = NULL; ctrlr->cons_cookie[cons->id] = ctrlr_cookie; + if (ctrlr->is_failed) { + if (cons->fail_fn != NULL) + (*cons->fail_fn)(ctrlr_cookie); + /* + * Do not notify consumers about the namespaces of a + * failed controller. + */ + continue; + } for (ns_idx = 0; ns_idx < ctrlr->cdata.nn; ns_idx++) { ns = &ctrlr->ns[ns_idx]; if (cons->ns_fn != NULL) From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 21:56:17 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 72715C99; Tue, 13 Aug 2013 21:56:17 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5F1E428C7; Tue, 13 Aug 2013 21:56:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DLuHNE088847; Tue, 13 Aug 2013 21:56:17 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DLuGSL088842; Tue, 13 Aug 2013 21:56:16 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201308132156.r7DLuGSL088842@svn.freebsd.org> From: Jeff Roberson Date: Tue, 13 Aug 2013 21:56:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254304 - in head/sys: sys vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 21:56:17 -0000 Author: jeff Date: Tue Aug 13 21:56:16 2013 New Revision: 254304 URL: http://svnweb.freebsd.org/changeset/base/254304 Log: Improve pageout flow control to wakeup more frequently and do less work while maintaining better LRU of active pages. - Change v_free_target to include the quantity previously represented by v_cache_min so we don't need to add them together everywhere we use them. - Add a pageout_wakeup_thresh that sets the free page count trigger for waking the page daemon. Set this 10% above v_free_min so we wakeup before any phase transitions in vm users. - Adjust down v_free_target now that we're willing to accept more pagedaemon wakeups. This means we process fewer pages in one iteration as well, leading to shorter lock hold times and less overall disruption. - Eliminate vm_pageout_page_stats(). This was a minor variation on the PQ_ACTIVE segment of the normal pageout daemon. Instead we now process 1 / vm_pageout_update_period pages every second. This causes us to visit the whole active list every 60 seconds. Previously we would only maintain the active LRU when we were short on pages which would mean it could be woefully out of date. Reviewed by: alc (slight variant of this) Discussed with: alc, kib, jhb Sponsored by: EMC / Isilon Storage Division Modified: head/sys/sys/vmmeter.h head/sys/vm/vm_page.c head/sys/vm/vm_page.h head/sys/vm/vm_pageout.c Modified: head/sys/sys/vmmeter.h ============================================================================== --- head/sys/sys/vmmeter.h Tue Aug 13 21:49:32 2013 (r254303) +++ head/sys/sys/vmmeter.h Tue Aug 13 21:56:16 2013 (r254304) @@ -98,7 +98,7 @@ struct vmmeter { u_int v_inactive_count; /* (q) pages inactive */ u_int v_cache_count; /* (f) pages on cache queue */ u_int v_cache_min; /* (c) min pages desired on cache queue */ - u_int v_cache_max; /* (c) max pages in cached obj */ + u_int v_cache_max; /* (c) max pages in cached obj (unused) */ u_int v_pageout_free_min; /* (c) min pages reserved for kernel */ u_int v_interrupt_free_min; /* (c) reserved pages for int code */ u_int v_free_severe; /* (c) severe page depletion point */ @@ -118,6 +118,8 @@ struct vmmeter { extern struct vmmeter cnt; +extern int vm_pageout_wakeup_thresh; + /* * Return TRUE if we are under our severe low-free-pages threshold * @@ -170,10 +172,7 @@ static __inline int vm_paging_target(void) { - return ( - (cnt.v_free_target + cnt.v_cache_min) - - (cnt.v_free_count + cnt.v_cache_count) - ); + return (cnt.v_free_target - (cnt.v_free_count + cnt.v_cache_count)); } /* @@ -184,10 +183,7 @@ static __inline int vm_paging_needed(void) { - return ( - (cnt.v_free_reserved + cnt.v_cache_min) > - (cnt.v_free_count + cnt.v_cache_count) - ); + return (cnt.v_free_count + cnt.v_cache_count < vm_pageout_wakeup_thresh); } #endif Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Tue Aug 13 21:49:32 2013 (r254303) +++ head/sys/vm/vm_page.c Tue Aug 13 21:56:16 2013 (r254304) @@ -259,7 +259,6 @@ vm_page_domain_init(struct vm_domain *vm "vm active pagequeue"; *__DECONST(int **, &vmd->vmd_pagequeues[PQ_ACTIVE].pq_vcnt) = &cnt.v_active_count; - vmd->vmd_fullintervalcount = 0; vmd->vmd_page_count = 0; vmd->vmd_free_count = 0; vmd->vmd_segs = 0; Modified: head/sys/vm/vm_page.h ============================================================================== --- head/sys/vm/vm_page.h Tue Aug 13 21:49:32 2013 (r254303) +++ head/sys/vm/vm_page.h Tue Aug 13 21:56:16 2013 (r254304) @@ -223,7 +223,6 @@ struct vm_pagequeue { struct vm_domain { struct vm_pagequeue vmd_pagequeues[PQ_COUNT]; - int vmd_fullintervalcount; u_int vmd_page_count; u_int vmd_free_count; long vmd_segs; /* bitmask of the segments */ Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Tue Aug 13 21:49:32 2013 (r254303) +++ head/sys/vm/vm_pageout.c Tue Aug 13 21:56:16 2013 (r254304) @@ -146,6 +146,7 @@ SYSINIT(vmdaemon, SI_SUB_KTHREAD_VM, SI_ int vm_pages_needed; /* Event on which pageout daemon sleeps */ int vm_pageout_deficit; /* Estimated number of pages deficit */ int vm_pageout_pages_needed; /* flag saying that the pageout daemon needs pages */ +int vm_pageout_wakeup_thresh; #if !defined(NO_SWAPPING) static int vm_pageout_req_swapout; /* XXX */ @@ -155,11 +156,7 @@ static struct mtx vm_daemon_mtx; MTX_SYSINIT(vm_daemon, &vm_daemon_mtx, "vm daemon", MTX_DEF); #endif static int vm_max_launder = 32; -static int vm_pageout_stats_max; -static int vm_pageout_stats; -static int vm_pageout_stats_interval; -static int vm_pageout_full_stats; -static int vm_pageout_full_stats_interval; +static int vm_pageout_update_period; static int defer_swap_pageouts; static int disable_swap_pageouts; @@ -171,24 +168,17 @@ static int vm_swap_enabled = 1; static int vm_swap_idle_enabled = 0; #endif +SYSCTL_INT(_vm, OID_AUTO, pageout_wakeup_thresh, + CTLFLAG_RW, &vm_pageout_wakeup_thresh, 0, + "free page threshold for waking up the pageout daemon"); + SYSCTL_INT(_vm, OID_AUTO, max_launder, CTLFLAG_RW, &vm_max_launder, 0, "Limit dirty flushes in pageout"); -SYSCTL_INT(_vm, OID_AUTO, pageout_stats_max, - CTLFLAG_RW, &vm_pageout_stats_max, 0, "Max pageout stats scan length"); - -SYSCTL_INT(_vm, OID_AUTO, pageout_stats, - CTLFLAG_RD, &vm_pageout_stats, 0, "Number of partial stats scans"); - -SYSCTL_INT(_vm, OID_AUTO, pageout_stats_interval, - CTLFLAG_RW, &vm_pageout_stats_interval, 0, "Interval for partial stats scan"); - -SYSCTL_INT(_vm, OID_AUTO, pageout_full_stats, - CTLFLAG_RD, &vm_pageout_full_stats, 0, "Number of full stats scans"); - -SYSCTL_INT(_vm, OID_AUTO, pageout_full_stats_interval, - CTLFLAG_RW, &vm_pageout_full_stats_interval, 0, "Interval for full stats scan"); - +SYSCTL_INT(_vm, OID_AUTO, pageout_update_period, + CTLFLAG_RW, &vm_pageout_update_period, 0, + "Maximum active LRU update period"); + #if defined(NO_SWAPPING) SYSCTL_INT(_vm, VM_SWAPPING_ENABLED, swap_enabled, CTLFLAG_RD, &vm_swap_enabled, 0, "Enable entire process swapout"); @@ -227,7 +217,6 @@ static void vm_pageout_object_deactivate static void vm_req_vmdaemon(int req); #endif static boolean_t vm_pageout_page_lock(vm_page_t, vm_page_t *); -static void vm_pageout_page_stats(struct vm_domain *vmd); /* * Initialize a dummy page for marking the caller's place in the specified @@ -892,6 +881,10 @@ vm_pageout_map_deactivate_pages(map, des /* * vm_pageout_scan does the dirty work for the pageout daemon. + * + * pass 0 - Update active LRU/deactivate pages + * pass 1 - Move inactive to cache or free + * pass 2 - Launder dirty pages */ static void vm_pageout_scan(struct vm_domain *vmd, int pass) @@ -907,13 +900,20 @@ vm_pageout_scan(struct vm_domain *vmd, i boolean_t queues_locked; /* - * Decrease registered cache sizes. + * If we need to reclaim memory ask kernel caches to return + * some. */ - EVENTHANDLER_INVOKE(vm_lowmem, 0); - /* - * We do this explicitly after the caches have been drained above. - */ - uma_reclaim(); + if (pass > 0) { + /* + * Decrease registered cache sizes. + */ + EVENTHANDLER_INVOKE(vm_lowmem, 0); + /* + * We do this explicitly after the caches have been + * drained above. + */ + uma_reclaim(); + } /* * The addl_page_shortage is the number of temporarily @@ -941,7 +941,7 @@ vm_pageout_scan(struct vm_domain *vmd, i */ if ((maxlaunder = vm_max_launder) <= 1) maxlaunder = 1; - if (pass) + if (pass > 1) maxlaunder = 10000; /* @@ -1097,7 +1097,7 @@ vm_pageout_scan(struct vm_domain *vmd, i */ vm_page_cache(m); --page_shortage; - } else if ((m->flags & PG_WINATCFLS) == 0 && pass == 0) { + } else if ((m->flags & PG_WINATCFLS) == 0 && pass < 2) { /* * Dirty pages need to be paged out, but flushing * a page is extremely expensive verses freeing @@ -1286,9 +1286,18 @@ relock_queues: * Compute the number of pages we want to try to move from the * active queue to the inactive queue. */ + pcount = pq->pq_cnt; page_shortage = vm_paging_target() + cnt.v_inactive_target - cnt.v_inactive_count; page_shortage += addl_page_shortage; + /* + * If we're just idle polling attempt to visit every + * active page within 'update_period' seconds. + */ + if (pass == 0 && vm_pageout_update_period != 0) { + pcount /= vm_pageout_update_period; + page_shortage = pcount; + } /* * Scan the active queue for things we can deactivate. We nominally @@ -1296,7 +1305,6 @@ relock_queues: * deactivation candidates. */ pq = &vmd->vmd_pagequeues[PQ_ACTIVE]; - pcount = pq->pq_cnt; vm_pagequeue_lock(pq); m = TAILQ_FIRST(&pq->pq_pl); while ((m != NULL) && (pcount-- > 0) && (page_shortage > 0)) { @@ -1435,7 +1443,7 @@ vm_pageout_mightbe_oom(struct vm_domain { int old_vote; - if (pass == 0 || !((swap_pager_avail < 64 && vm_page_count_min()) || + if (pass <= 1 || !((swap_pager_avail < 64 && vm_page_count_min()) || (swap_pager_full && vm_paging_target() > 0))) { if (vmd->vmd_oom) { vmd->vmd_oom = FALSE; @@ -1563,131 +1571,12 @@ vm_pageout_oom(int shortage) } } -/* - * This routine tries to maintain the pseudo LRU active queue, - * so that during long periods of time where there is no paging, - * that some statistic accumulation still occurs. This code - * helps the situation where paging just starts to occur. - */ -static void -vm_pageout_page_stats(struct vm_domain *vmd) -{ - struct vm_pagequeue *pq; - vm_object_t object; - vm_page_t m, next; - int pcount, tpcount; /* Number of pages to check */ - int actcount, page_shortage; - - page_shortage = - (cnt.v_inactive_target + cnt.v_cache_max + cnt.v_free_min) - - (cnt.v_free_count + cnt.v_inactive_count + cnt.v_cache_count); - - if (page_shortage <= 0) - return; - - pq = &vmd->vmd_pagequeues[PQ_ACTIVE]; - - /* - * pcount limits the depth of the queue scan. In particular, - * for the full scan, it prevents the iteration from looking - * into the requeued pages. The limit is not exact since the - * page queue lock is dropped during the iteration. - */ - pcount = pq->pq_cnt; - vmd->vmd_fullintervalcount += vm_pageout_stats_interval; - if (vmd->vmd_fullintervalcount < vm_pageout_full_stats_interval) { - atomic_add_int(&vm_pageout_stats, 1); - tpcount = (int64_t)vm_pageout_stats_max * pcount / - vmd->vmd_page_count; - if (pcount > tpcount) - pcount = tpcount; - } else { - atomic_add_int(&vm_pageout_full_stats, 1); - vmd->vmd_fullintervalcount = 0; - } - - vm_pagequeue_lock(pq); - m = TAILQ_FIRST(&pq->pq_pl); - while (m != NULL && pcount-- > 0) { - KASSERT(m->queue == PQ_ACTIVE, - ("vm_pageout_page_stats: page %p isn't active", m)); - - next = TAILQ_NEXT(m, plinks.q); - if ((m->flags & PG_MARKER) != 0) { - m = next; - continue; - } - vm_page_lock_assert(m, MA_NOTOWNED); - if (!vm_pageout_page_lock(m, &next)) { - vm_page_unlock(m); - m = next; - continue; - } - object = m->object; - if (!VM_OBJECT_TRYWLOCK(object) && - !vm_pageout_fallback_object_lock(m, &next)) { - VM_OBJECT_WUNLOCK(object); - vm_page_unlock(m); - m = next; - continue; - } - - /* - * Don't deactivate pages that are busy or held. - */ - if (vm_page_busied(m) || m->hold_count != 0) { - vm_page_unlock(m); - VM_OBJECT_WUNLOCK(object); - vm_page_requeue_locked(m); - m = next; - continue; - } - - actcount = 0; - if (m->aflags & PGA_REFERENCED) { - vm_page_aflag_clear(m, PGA_REFERENCED); - actcount += 1; - } - - actcount += pmap_ts_referenced(m); - if (actcount != 0) { - m->act_count += ACT_ADVANCE + actcount; - if (m->act_count > ACT_MAX) - m->act_count = ACT_MAX; - vm_page_requeue_locked(m); - } else { - if (m->act_count == 0) { - /* - * We turn off page access, so that we have - * more accurate RSS stats. We don't do this - * in the normal page deactivation when the - * system is loaded VM wise, because the - * cost of the large number of page protect - * operations would be higher than the value - * of doing the operation. - */ - pmap_remove_all(m); - /* Dequeue to avoid later lock recursion. */ - vm_page_dequeue_locked(m); - vm_page_deactivate(m); - } else { - m->act_count -= min(m->act_count, ACT_DECLINE); - vm_page_requeue_locked(m); - } - } - vm_page_unlock(m); - VM_OBJECT_WUNLOCK(object); - m = next; - } - vm_pagequeue_unlock(pq); -} - static void vm_pageout_worker(void *arg) { struct vm_domain *domain; struct pcpu *pc; - int cpu, error, domidx; + int cpu, domidx; domidx = (uintptr_t)arg; domain = &vm_dom[domidx]; @@ -1741,32 +1630,24 @@ vm_pageout_worker(void *arg) * (unlimited dirty cleaning), otherwise sleep a bit * and try again. */ - ++(domain->vmd_pass); if (domain->vmd_pass > 1) msleep(&vm_pages_needed, &vm_page_queue_free_mtx, PVM, "psleep", hz / 2); } else { /* - * Good enough, sleep & handle stats. Prime the pass - * for the next run. + * Good enough, sleep until required to refresh + * stats. */ - if (domain->vmd_pass > 1) - domain->vmd_pass = 1; - else - domain->vmd_pass = 0; - error = msleep(&vm_pages_needed, - &vm_page_queue_free_mtx, PVM, "psleep", - vm_pageout_stats_interval * hz); - if (error && !vm_pages_needed) { - mtx_unlock(&vm_page_queue_free_mtx); - domain->vmd_pass = 0; - vm_pageout_page_stats(domain); - continue; - } + domain->vmd_pass = 0; + msleep(&vm_pages_needed, &vm_page_queue_free_mtx, + PVM, "psleep", hz); + } - if (vm_pages_needed) + if (vm_pages_needed) { cnt.v_pdwakeups++; + domain->vmd_pass++; + } mtx_unlock(&vm_page_queue_free_mtx); vm_pageout_scan(domain, domain->vmd_pass); } @@ -1803,52 +1684,30 @@ vm_pageout(void) cnt.v_free_reserved = vm_pageout_page_count + cnt.v_pageout_free_min + (cnt.v_page_count / 768); cnt.v_free_severe = cnt.v_free_min / 2; + cnt.v_free_target = 4 * cnt.v_free_min + cnt.v_free_reserved; cnt.v_free_min += cnt.v_free_reserved; cnt.v_free_severe += cnt.v_free_reserved; + cnt.v_inactive_target = (3 * cnt.v_free_target) / 2; + if (cnt.v_inactive_target > cnt.v_free_count / 3) + cnt.v_inactive_target = cnt.v_free_count / 3; /* - * v_free_target and v_cache_min control pageout hysteresis. Note - * that these are more a measure of the VM cache queue hysteresis - * then the VM free queue. Specifically, v_free_target is the - * high water mark (free+cache pages). - * - * v_free_reserved + v_cache_min (mostly means v_cache_min) is the - * low water mark, while v_free_min is the stop. v_cache_min must - * be big enough to handle memory needs while the pageout daemon - * is signalled and run to free more pages. + * Set the default wakeup threshold to be 10% above the minimum + * page limit. This keeps the steady state out of shortfall. */ - if (cnt.v_free_count > 6144) - cnt.v_free_target = 4 * cnt.v_free_min + cnt.v_free_reserved; - else - cnt.v_free_target = 2 * cnt.v_free_min + cnt.v_free_reserved; + vm_pageout_wakeup_thresh = (cnt.v_free_min / 10) * 11; - if (cnt.v_free_count > 2048) { - cnt.v_cache_min = cnt.v_free_target; - cnt.v_cache_max = 2 * cnt.v_cache_min; - cnt.v_inactive_target = (3 * cnt.v_free_target) / 2; - } else { - cnt.v_cache_min = 0; - cnt.v_cache_max = 0; - cnt.v_inactive_target = cnt.v_free_count / 4; - } - if (cnt.v_inactive_target > cnt.v_free_count / 3) - cnt.v_inactive_target = cnt.v_free_count / 3; + /* + * Set interval in seconds for active scan. We want to visit each + * page at least once a minute. + */ + if (vm_pageout_update_period == 0) + vm_pageout_update_period = 60; /* XXX does not really belong here */ if (vm_page_max_wired == 0) vm_page_max_wired = cnt.v_free_count / 3; - if (vm_pageout_stats_max == 0) - vm_pageout_stats_max = cnt.v_free_target; - - /* - * Set interval in seconds for stats scan. - */ - if (vm_pageout_stats_interval == 0) - vm_pageout_stats_interval = 5; - if (vm_pageout_full_stats_interval == 0) - vm_pageout_full_stats_interval = vm_pageout_stats_interval * 4; - swap_pager_swap_init(); #if MAXMEMDOM > 1 for (i = 1; i < vm_ndomains; i++) { From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 22:05:11 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 58E3CF98; Tue, 13 Aug 2013 22:05:11 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 37231294A; Tue, 13 Aug 2013 22:05:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DM5BKL092714; Tue, 13 Aug 2013 22:05:11 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DM5AjE092710; Tue, 13 Aug 2013 22:05:10 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308132205.r7DM5AjE092710@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 13 Aug 2013 22:05:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254305 - in head/sys: amd64/include i386/include x86/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 22:05:11 -0000 Author: jkim Date: Tue Aug 13 22:05:10 2013 New Revision: 254305 URL: http://svnweb.freebsd.org/changeset/base/254305 Log: Merge acpica_machdep.h for amd64 and i386 and move to x86. In fact, these two files were functionally identical. Added: - copied unchanged from r254304, head/sys/amd64/include/acpica_machdep.h Directory Properties: head/sys/x86/include/acpica_machdep.h (props changed) Modified: head/sys/amd64/include/acpica_machdep.h head/sys/i386/include/acpica_machdep.h Modified: head/sys/amd64/include/acpica_machdep.h ============================================================================== --- head/sys/amd64/include/acpica_machdep.h Tue Aug 13 21:56:16 2013 (r254304) +++ head/sys/amd64/include/acpica_machdep.h Tue Aug 13 22:05:10 2013 (r254305) @@ -1,80 +1,6 @@ /*- - * Copyright (c) 2002 Mitsuru IWASAKI - * 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$ + * This file is in the public domain. */ +/* $FreeBSD$ */ -/****************************************************************************** - * - * Name: acpica_machdep.h - arch-specific defines, etc. - * $Revision$ - * - *****************************************************************************/ - -#ifndef __ACPICA_MACHDEP_H__ -#define __ACPICA_MACHDEP_H__ - -#ifdef _KERNEL -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -/* Asm macros */ - -#define ACPI_ASM_MACROS -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() disable_intr() -#define ACPI_ENABLE_IRQS() enable_intr() - -#define ACPI_FLUSH_CPU_CACHE() wbinvd() - -/* Section 5.2.10.1: global lock acquire/release functions */ -int acpi_acquire_global_lock(volatile uint32_t *); -int acpi_release_global_lock(volatile uint32_t *); -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ - (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ -} while (0) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) do { \ - (Acq) = acpi_release_global_lock(&((GLptr)->GlobalLock)); \ -} while (0) - -void acpi_SetDefaultIntrModel(int model); -void acpi_cpu_c1(void); -void *acpi_map_table(vm_paddr_t pa, const char *sig); -void acpi_unmap_table(void *table); -vm_paddr_t acpi_find_table(const char *sig); - -#endif /* _KERNEL */ - -#endif /* __ACPICA_MACHDEP_H__ */ +#include Modified: head/sys/i386/include/acpica_machdep.h ============================================================================== --- head/sys/i386/include/acpica_machdep.h Tue Aug 13 21:56:16 2013 (r254304) +++ head/sys/i386/include/acpica_machdep.h Tue Aug 13 22:05:10 2013 (r254305) @@ -1,100 +1,6 @@ /*- - * Copyright (c) 2002 Mitsuru IWASAKI - * 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$ + * This file is in the public domain. */ +/* $FreeBSD$ */ -/****************************************************************************** - * - * Name: acpica_machdep.h - arch-specific defines, etc. - * $Revision$ - * - *****************************************************************************/ - -#ifndef __ACPICA_MACHDEP_H__ -#define __ACPICA_MACHDEP_H__ - -#ifdef _KERNEL -/* - * Calling conventions: - * - * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces - * ACPI_INTERNAL_XFACE - Internal ACPI interfaces - * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces - */ -#define ACPI_SYSTEM_XFACE -#define ACPI_EXTERNAL_XFACE -#define ACPI_INTERNAL_XFACE -#define ACPI_INTERNAL_VAR_XFACE - -/* Asm macros */ - -#define ACPI_ASM_MACROS -#define BREAKPOINT3 -#define ACPI_DISABLE_IRQS() disable_intr() -#define ACPI_ENABLE_IRQS() enable_intr() - -#define ACPI_FLUSH_CPU_CACHE() wbinvd() - -/* Section 5.2.10.1: global lock acquire/release functions */ -int acpi_acquire_global_lock(volatile uint32_t *); -int acpi_release_global_lock(volatile uint32_t *); -#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ - (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ -} while (0) -#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) do { \ - (Acq) = acpi_release_global_lock(&((GLptr)->GlobalLock)); \ -} while (0) - -/*! [Begin] no source code translation - * - * Math helper asm macros - */ -#define asm __asm -#define ACPI_DIV_64_BY_32(n_hi, n_lo, d32, q32, r32) \ - asm("divl %2;" \ - :"=a"(q32), "=d"(r32) \ - :"r"(d32), \ - "0"(n_lo), "1"(n_hi)) - - -#define ACPI_SHIFT_RIGHT_64(n_hi, n_lo) \ - asm("shrl $1,%2;" \ - "rcrl $1,%3;" \ - :"=r"(n_hi), "=r"(n_lo) \ - :"0"(n_hi), "1"(n_lo)) - -/*! [End] no source code translation !*/ - -void acpi_SetDefaultIntrModel(int model); -void acpi_cpu_c1(void); -void *acpi_map_table(vm_paddr_t pa, const char *sig); -void acpi_unmap_table(void *table); -vm_paddr_t acpi_find_table(const char *sig); - -#endif /* _KERNEL */ - -#endif /* __ACPICA_MACHDEP_H__ */ +#include Copied: head/sys/x86/include/acpica_machdep.h (from r254304, head/sys/amd64/include/acpica_machdep.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/x86/include/acpica_machdep.h Tue Aug 13 22:05:10 2013 (r254305, copy of r254304, head/sys/amd64/include/acpica_machdep.h) @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2002 Mitsuru IWASAKI + * 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$ + */ + +/****************************************************************************** + * + * Name: acpica_machdep.h - arch-specific defines, etc. + * $Revision$ + * + *****************************************************************************/ + +#ifndef __ACPICA_MACHDEP_H__ +#define __ACPICA_MACHDEP_H__ + +#ifdef _KERNEL +/* + * Calling conventions: + * + * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) + * ACPI_EXTERNAL_XFACE - External ACPI interfaces + * ACPI_INTERNAL_XFACE - Internal ACPI interfaces + * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces + */ +#define ACPI_SYSTEM_XFACE +#define ACPI_EXTERNAL_XFACE +#define ACPI_INTERNAL_XFACE +#define ACPI_INTERNAL_VAR_XFACE + +/* Asm macros */ + +#define ACPI_ASM_MACROS +#define BREAKPOINT3 +#define ACPI_DISABLE_IRQS() disable_intr() +#define ACPI_ENABLE_IRQS() enable_intr() + +#define ACPI_FLUSH_CPU_CACHE() wbinvd() + +/* Section 5.2.10.1: global lock acquire/release functions */ +int acpi_acquire_global_lock(volatile uint32_t *); +int acpi_release_global_lock(volatile uint32_t *); +#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) do { \ + (Acq) = acpi_acquire_global_lock(&((GLptr)->GlobalLock)); \ +} while (0) +#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) do { \ + (Acq) = acpi_release_global_lock(&((GLptr)->GlobalLock)); \ +} while (0) + +void acpi_SetDefaultIntrModel(int model); +void acpi_cpu_c1(void); +void *acpi_map_table(vm_paddr_t pa, const char *sig); +void acpi_unmap_table(void *table); +vm_paddr_t acpi_find_table(const char *sig); + +#endif /* _KERNEL */ + +#endif /* __ACPICA_MACHDEP_H__ */ From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 22:40:44 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 711BECA4; Tue, 13 Aug 2013 22:40:44 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5E08B2B64; Tue, 13 Aug 2013 22:40:44 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DMeiRS006382; Tue, 13 Aug 2013 22:40:44 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DMehSc006378; Tue, 13 Aug 2013 22:40:43 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201308132240.r7DMehSc006378@svn.freebsd.org> From: Jeff Roberson Date: Tue, 13 Aug 2013 22:40:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254307 - in head/sys: kern vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 22:40:44 -0000 Author: jeff Date: Tue Aug 13 22:40:43 2013 New Revision: 254307 URL: http://svnweb.freebsd.org/changeset/base/254307 Log: - Add a statically allocated memguard arena since it is needed very early on. - Pass the appropriate flags to vmem_xalloc() when allocating space for the arena from kmem_arena. Sponsored by: EMC / Isilon Storage Division Modified: head/sys/kern/subr_vmem.c head/sys/vm/memguard.c head/sys/vm/vm_kern.h Modified: head/sys/kern/subr_vmem.c ============================================================================== --- head/sys/kern/subr_vmem.c Tue Aug 13 22:05:50 2013 (r254306) +++ head/sys/kern/subr_vmem.c Tue Aug 13 22:40:43 2013 (r254307) @@ -57,6 +57,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include "opt_vm.h" + #include #include #include @@ -223,6 +225,11 @@ vmem_t *kmem_arena = &kmem_arena_storage vmem_t *buffer_arena = &buffer_arena_storage; vmem_t *transient_arena = &transient_arena_storage; +#ifdef DEBUG_MEMGUARD +static struct vmem memguard_arena_storage; +vmem_t *memguard_arena = &memguard_arena_storage; +#endif + /* * Fill the vmem's boundary tag cache. We guarantee that boundary tag * allocation will not fail once bt_fill() passes. To do so we cache Modified: head/sys/vm/memguard.c ============================================================================== --- head/sys/vm/memguard.c Tue Aug 13 22:05:50 2013 (r254306) +++ head/sys/vm/memguard.c Tue Aug 13 22:40:43 2013 (r254307) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -100,7 +101,6 @@ SYSCTL_PROC(_vm_memguard, OID_AUTO, desc CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, memguard_sysctl_desc, "A", "Short description of memory type to monitor"); -static vmem_t *memguard_map = NULL; static vm_offset_t memguard_cursor; static vm_offset_t memguard_base; static vm_size_t memguard_mapsize; @@ -206,8 +206,8 @@ memguard_init(vmem_t *parent) { vm_offset_t base; - vmem_alloc(parent, memguard_mapsize, M_WAITOK, &base); - memguard_map = vmem_create("memguard arena", base, memguard_mapsize, + vmem_alloc(parent, memguard_mapsize, M_BESTFIT | M_WAITOK, &base); + vmem_init(memguard_arena, "memguard arena", base, memguard_mapsize, PAGE_SIZE, 0, M_WAITOK); memguard_cursor = base; memguard_base = base; @@ -311,7 +311,7 @@ memguard_alloc(unsigned long req_size, i * of physical memory whether we allocate or hand off to * uma_large_alloc(), so keep those. */ - if (vmem_size(memguard_map, VMEM_ALLOC) >= memguard_physlimit && + if (vmem_size(memguard_arena, VMEM_ALLOC) >= memguard_physlimit && req_size < PAGE_SIZE) { addr = (vm_offset_t)NULL; memguard_fail_pgs++; @@ -328,8 +328,9 @@ memguard_alloc(unsigned long req_size, i * map, unless vm_map_findspace() is tweaked. */ for (;;) { - if (vmem_xalloc(memguard_map, size_v, 0, 0, 0, memguard_cursor, - VMEM_ADDR_MAX, M_BESTFIT | M_NOWAIT, &addr) == 0) + if (vmem_xalloc(memguard_arena, size_v, 0, 0, 0, + memguard_cursor, VMEM_ADDR_MAX, + M_BESTFIT | M_NOWAIT, &addr) == 0) break; /* * The map has no space. This may be due to @@ -348,7 +349,7 @@ memguard_alloc(unsigned long req_size, i addr += PAGE_SIZE; rv = kmem_back(kmem_object, addr, size_p, flags); if (rv != KERN_SUCCESS) { - vmem_xfree(memguard_map, addr, size_v); + vmem_xfree(memguard_arena, addr, size_v); memguard_fail_pgs++; addr = (vm_offset_t)NULL; goto out; @@ -419,7 +420,7 @@ memguard_free(void *ptr) kmem_unback(kmem_object, addr, size); if (sizev > size) addr -= PAGE_SIZE; - vmem_xfree(memguard_map, addr, sizev); + vmem_xfree(memguard_arena, addr, sizev); if (req_size < PAGE_SIZE) memguard_wasted -= (PAGE_SIZE - req_size); } Modified: head/sys/vm/vm_kern.h ============================================================================== --- head/sys/vm/vm_kern.h Tue Aug 13 22:05:50 2013 (r254306) +++ head/sys/vm/vm_kern.h Tue Aug 13 22:40:43 2013 (r254307) @@ -71,6 +71,7 @@ extern struct vmem *kernel_arena; extern struct vmem *kmem_arena; extern struct vmem *buffer_arena; extern struct vmem *transient_arena; +extern struct vmem *memguard_arena; extern vm_offset_t swapbkva; extern u_long vm_kmem_size; From owner-svn-src-head@FreeBSD.ORG Tue Aug 13 22:41:25 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7063FE75; Tue, 13 Aug 2013 22:41:25 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5E2912B7D; Tue, 13 Aug 2013 22:41:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7DMfPu5007028; Tue, 13 Aug 2013 22:41:25 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7DMfPec007027; Tue, 13 Aug 2013 22:41:25 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201308132241.r7DMfPec007027@svn.freebsd.org> From: Jeff Roberson Date: Tue, 13 Aug 2013 22:41:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254308 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Aug 2013 22:41:25 -0000 Author: jeff Date: Tue Aug 13 22:41:24 2013 New Revision: 254308 URL: http://svnweb.freebsd.org/changeset/base/254308 Log: - Disable quantum caches on the kmem_arena. This can make fragmentation worse on small KVA systems. I had intended to only enable it for debugging. Sponsored by: EMC / Isilon Storage Division Modified: head/sys/kern/kern_malloc.c Modified: head/sys/kern/kern_malloc.c ============================================================================== --- head/sys/kern/kern_malloc.c Tue Aug 13 22:40:43 2013 (r254307) +++ head/sys/kern/kern_malloc.c Tue Aug 13 22:41:24 2013 (r254308) @@ -747,7 +747,7 @@ kmeminit(void) tmp = vm_kmem_size; #endif vmem_init(kmem_arena, "kmem arena", kva_alloc(tmp), tmp, PAGE_SIZE, - PAGE_SIZE * 16, 0); + 0, 0); vmem_set_reclaim(kmem_arena, kmem_reclaim); #ifdef DEBUG_MEMGUARD From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 00:42:23 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9D7CBB42; Wed, 14 Aug 2013 00:42:23 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8919821AC; Wed, 14 Aug 2013 00:42:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7E0gNu0054557; Wed, 14 Aug 2013 00:42:23 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7E0gMtf054550; Wed, 14 Aug 2013 00:42:22 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308140042.r7E0gMtf054550@svn.freebsd.org> From: Mark Johnston Date: Wed, 14 Aug 2013 00:42:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 00:42:23 -0000 Author: markj Date: Wed Aug 14 00:42:21 2013 New Revision: 254309 URL: http://svnweb.freebsd.org/changeset/base/254309 Log: Use kld_{load,unload} instead of mod_{load,unload} for the linker file load and unload event handlers added in r254266. Reported by: jhb X-MFC with: r254266 Modified: head/share/man/man9/EVENTHANDLER.9 head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c head/sys/cddl/dev/dtrace/dtrace_load.c head/sys/cddl/dev/dtrace/dtrace_unload.c head/sys/cddl/dev/sdt/sdt.c head/sys/kern/kern_linker.c head/sys/sys/eventhandler.h Modified: head/share/man/man9/EVENTHANDLER.9 ============================================================================== --- head/share/man/man9/EVENTHANDLER.9 Tue Aug 13 22:41:24 2013 (r254308) +++ head/share/man/man9/EVENTHANDLER.9 Wed Aug 14 00:42:21 2013 (r254309) @@ -199,10 +199,10 @@ Callbacks invoked when a new network int Callbacks invoked when a network interface is taken down. .It Vt bpf_track Callbacks invoked when a BPF listener attaches to/detaches from network interface. -.It Vt mod_load -Callbacks invoked after a module has been loaded. -.It Vt mod_unload -Callbacks invoked before a module is about to be unloaded. +.It Vt kld_load +Callbacks invoked after a linker file has been loaded. +.It Vt kld_unload +Callbacks invoked before a linker file is about to be unloaded. These callbacks may be used to return an error and prevent the unload from proceeding. .It Vt power_profile_change Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Tue Aug 13 22:41:24 2013 (r254308) +++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Wed Aug 14 00:42:21 2013 (r254309) @@ -241,8 +241,8 @@ int dtrace_in_probe; /* non-zero if exe #if defined(__i386__) || defined(__amd64__) || defined(__mips__) || defined(__powerpc__) uintptr_t dtrace_in_probe_addr; /* Address of invop when already in probe */ #endif -static eventhandler_tag dtrace_modload_tag; -static eventhandler_tag dtrace_modunload_tag; +static eventhandler_tag dtrace_kld_load_tag; +static eventhandler_tag dtrace_kld_unload_tag; #endif /* @@ -15344,14 +15344,14 @@ dtrace_module_unloaded(modctl_t *ctl, in #if !defined(sun) static void -dtrace_mod_load(void *arg __unused, linker_file_t lf) +dtrace_kld_load(void *arg __unused, linker_file_t lf) { dtrace_module_loaded(lf); } static void -dtrace_mod_unload(void *arg __unused, linker_file_t lf, int *error) +dtrace_kld_unload(void *arg __unused, linker_file_t lf, int *error) { if (*error != 0) Modified: head/sys/cddl/dev/dtrace/dtrace_load.c ============================================================================== --- head/sys/cddl/dev/dtrace/dtrace_load.c Tue Aug 13 22:41:24 2013 (r254308) +++ head/sys/cddl/dev/dtrace/dtrace_load.c Wed Aug 14 00:42:21 2013 (r254309) @@ -56,11 +56,11 @@ dtrace_load(void *dummy) /* Hang our hook for exceptions. */ dtrace_invop_init(); - /* Register callbacks for module load and unload events. */ - dtrace_modload_tag = EVENTHANDLER_REGISTER(mod_load, - dtrace_mod_load, NULL, EVENTHANDLER_PRI_ANY); - dtrace_modunload_tag = EVENTHANDLER_REGISTER(mod_unload, - dtrace_mod_unload, NULL, EVENTHANDLER_PRI_ANY); + /* Register callbacks for linker file load and unload events. */ + dtrace_kld_load_tag = EVENTHANDLER_REGISTER(kld_load, + dtrace_kld_load, NULL, EVENTHANDLER_PRI_ANY); + dtrace_kld_unload_tag = EVENTHANDLER_REGISTER(kld_unload, + dtrace_kld_unload, NULL, EVENTHANDLER_PRI_ANY); /* * Initialise the mutexes without 'witness' because the dtrace Modified: head/sys/cddl/dev/dtrace/dtrace_unload.c ============================================================================== --- head/sys/cddl/dev/dtrace/dtrace_unload.c Tue Aug 13 22:41:24 2013 (r254308) +++ head/sys/cddl/dev/dtrace/dtrace_unload.c Wed Aug 14 00:42:21 2013 (r254309) @@ -67,8 +67,8 @@ dtrace_unload() } dtrace_provider = NULL; - EVENTHANDLER_DEREGISTER(mod_load, dtrace_modload_tag); - EVENTHANDLER_DEREGISTER(mod_unload, dtrace_modunload_tag); + EVENTHANDLER_DEREGISTER(kld_load, dtrace_kld_load_tag); + EVENTHANDLER_DEREGISTER(kld_unload, dtrace_kld_unload_tag); if ((state = dtrace_anon_grab()) != NULL) { /* Modified: head/sys/cddl/dev/sdt/sdt.c ============================================================================== --- head/sys/cddl/dev/sdt/sdt.c Tue Aug 13 22:41:24 2013 (r254308) +++ head/sys/cddl/dev/sdt/sdt.c Wed Aug 14 00:42:21 2013 (r254309) @@ -58,8 +58,8 @@ static void sdt_load(void *); static int sdt_unload(void *); static void sdt_create_provider(struct sdt_provider *); static void sdt_create_probe(struct sdt_probe *); -static void sdt_modload(void *, struct linker_file *); -static void sdt_modunload(void *, struct linker_file *, int *); +static void sdt_kld_load(void *, struct linker_file *); +static void sdt_kld_unload(void *, struct linker_file *, int *); static MALLOC_DEFINE(M_SDT, "SDT", "DTrace SDT providers"); @@ -94,8 +94,8 @@ static struct cdev *sdt_cdev; static TAILQ_HEAD(, sdt_provider) sdt_prov_list; -eventhandler_tag modload_tag; -eventhandler_tag modunload_tag; +eventhandler_tag sdt_kld_load_tag; +eventhandler_tag sdt_kld_unload_tag; static void sdt_create_provider(struct sdt_provider *prov) @@ -229,7 +229,7 @@ sdt_destroy(void *arg, dtrace_id_t id, v * and dtrace_register() will try to acquire it again. */ static void -sdt_modload(void *arg __unused, struct linker_file *lf) +sdt_kld_load(void *arg __unused, struct linker_file *lf) { struct sdt_provider **prov, **begin, **end; struct sdt_probe **probe, **p_begin, **p_end; @@ -260,7 +260,7 @@ sdt_modload(void *arg __unused, struct l } static void -sdt_modunload(void *arg __unused, struct linker_file *lf, int *error __unused) +sdt_kld_unload(void *arg __unused, struct linker_file *lf, int *error __unused) { struct sdt_provider *prov, **curr, **begin, **end, *tmp; @@ -268,12 +268,12 @@ sdt_modunload(void *arg __unused, struct /* We already have an error, so don't do anything. */ return; else if (linker_file_lookup_set(lf, "sdt_providers_set", &begin, &end, NULL)) - /* No DTrace providers are declared in this module. */ + /* No DTrace providers are declared in this file. */ return; /* - * Go through all the providers declared in this module and unregister - * any that aren't declared in another loaded module. + * Go through all the providers declared in this linker file and + * unregister any that aren't declared in another loaded file. */ for (curr = begin; curr < end; curr++) { TAILQ_FOREACH_SAFE(prov, &sdt_prov_list, prov_entry, tmp) { @@ -296,7 +296,7 @@ static int sdt_linker_file_cb(linker_file_t lf, void *arg __unused) { - sdt_modload(NULL, lf); + sdt_kld_load(NULL, lf); return (0); } @@ -313,12 +313,12 @@ sdt_load(void *arg __unused) sdt_probe_func = dtrace_probe; - modload_tag = EVENTHANDLER_REGISTER(mod_load, sdt_modload, NULL, - EVENTHANDLER_PRI_ANY); - modunload_tag = EVENTHANDLER_REGISTER(mod_unload, sdt_modunload, NULL, + sdt_kld_load_tag = EVENTHANDLER_REGISTER(kld_load, sdt_kld_load, NULL, EVENTHANDLER_PRI_ANY); + sdt_kld_unload_tag = EVENTHANDLER_REGISTER(kld_unload, sdt_kld_unload, + NULL, EVENTHANDLER_PRI_ANY); - /* Pick up probes from the kernel and already-loaded modules. */ + /* Pick up probes from the kernel and already-loaded linker files. */ linker_file_foreach(sdt_linker_file_cb, NULL); } @@ -327,8 +327,8 @@ sdt_unload(void *arg __unused) { struct sdt_provider *prov, *tmp; - EVENTHANDLER_DEREGISTER(mod_load, modload_tag); - EVENTHANDLER_DEREGISTER(mod_unload, modunload_tag); + EVENTHANDLER_DEREGISTER(kld_load, sdt_kld_load_tag); + EVENTHANDLER_DEREGISTER(kld_unload, sdt_kld_unload_tag); sdt_probe_func = sdt_probe_stub; Modified: head/sys/kern/kern_linker.c ============================================================================== --- head/sys/kern/kern_linker.c Tue Aug 13 22:41:24 2013 (r254308) +++ head/sys/kern/kern_linker.c Wed Aug 14 00:42:21 2013 (r254309) @@ -1046,7 +1046,7 @@ kern_kldload(struct thread *td, const ch if (fileid != NULL) *fileid = lf->id; - EVENTHANDLER_INVOKE(mod_load, lf); + EVENTHANDLER_INVOKE(kld_load, lf); #ifdef HWPMC_HOOKS KLD_DOWNGRADE(); @@ -1103,7 +1103,7 @@ kern_kldunload(struct thread *td, int fi if (lf) { KLD_DPF(FILE, ("kldunload: lf->userrefs=%d\n", lf->userrefs)); - EVENTHANDLER_INVOKE(mod_unload, lf, &error); + EVENTHANDLER_INVOKE(kld_unload, lf, &error); if (error != 0) error = EBUSY; else if (lf->userrefs == 0) { Modified: head/sys/sys/eventhandler.h ============================================================================== --- head/sys/sys/eventhandler.h Tue Aug 13 22:41:24 2013 (r254308) +++ head/sys/sys/eventhandler.h Wed Aug 14 00:42:21 2013 (r254309) @@ -266,11 +266,11 @@ EVENTHANDLER_DECLARE(nmbclusters_change, EVENTHANDLER_DECLARE(nmbufs_change, uma_zone_chfn); EVENTHANDLER_DECLARE(maxsockets_change, uma_zone_chfn); -/* Module load and unload events */ +/* Kernel linker file load and unload events */ struct linker_file; -typedef void (*mod_load_fn)(void *, struct linker_file *); -typedef void (*mod_unload_fn)(void *, struct linker_file *, int *); -EVENTHANDLER_DECLARE(mod_load, mod_load_fn); -EVENTHANDLER_DECLARE(mod_unload, mod_unload_fn); +typedef void (*kld_load_fn)(void *, struct linker_file *); +typedef void (*kld_unload_fn)(void *, struct linker_file *, int *); +EVENTHANDLER_DECLARE(kld_load, kld_load_fn); +EVENTHANDLER_DECLARE(kld_unload, kld_unload_fn); #endif /* SYS_EVENTHANDLER_H */ From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 04:24:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 884FEB98; Wed, 14 Aug 2013 04:24:27 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 745A12CA5; Wed, 14 Aug 2013 04:24:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7E4ORbi083065; Wed, 14 Aug 2013 04:24:27 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7E4OQ1c083056; Wed, 14 Aug 2013 04:24:26 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201308140424.r7E4OQ1c083056@svn.freebsd.org> From: Rui Paulo Date: Wed, 14 Aug 2013 04:24:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254315 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 04:24:27 -0000 Author: rpaulo Date: Wed Aug 14 04:24:25 2013 New Revision: 254315 URL: http://svnweb.freebsd.org/changeset/base/254315 Log: Replace the homegrown implementation of nitems() with calls to nitems() (param.h). Operating systems that don't have nitems() can easily define it on their own net80211 OS-specific header file. Discussed with: adrian Modified: head/sys/net80211/ieee80211.c head/sys/net80211/ieee80211_action.c head/sys/net80211/ieee80211_node.c head/sys/net80211/ieee80211_phy.c head/sys/net80211/ieee80211_proto.c head/sys/net80211/ieee80211_scan_sta.c Modified: head/sys/net80211/ieee80211.c ============================================================================== --- head/sys/net80211/ieee80211.c Wed Aug 14 02:37:07 2013 (r254314) +++ head/sys/net80211/ieee80211.c Wed Aug 14 04:24:25 2013 (r254315) @@ -1518,7 +1518,6 @@ findmedia(const struct ratemedia rates[] int ieee80211_rate2media(struct ieee80211com *ic, int rate, enum ieee80211_phymode mode) { -#define N(a) (sizeof(a) / sizeof(a[0])) static const struct ratemedia rates[] = { { 2 | IFM_IEEE80211_FH, IFM_IEEE80211_FH1 }, { 4 | IFM_IEEE80211_FH, IFM_IEEE80211_FH2 }, @@ -1639,7 +1638,7 @@ ieee80211_rate2media(struct ieee80211com if (mode == IEEE80211_MODE_11NA) { if (rate & IEEE80211_RATE_MCS) { rate &= ~IEEE80211_RATE_MCS; - m = findmedia(htrates, N(htrates), rate); + m = findmedia(htrates, nitems(htrates), rate); if (m != IFM_AUTO) return m | IFM_IEEE80211_11NA; } @@ -1647,7 +1646,7 @@ ieee80211_rate2media(struct ieee80211com /* NB: 12 is ambiguous, it will be treated as an MCS */ if (rate & IEEE80211_RATE_MCS) { rate &= ~IEEE80211_RATE_MCS; - m = findmedia(htrates, N(htrates), rate); + m = findmedia(htrates, nitems(htrates), rate); if (m != IFM_AUTO) return m | IFM_IEEE80211_11NG; } @@ -1660,31 +1659,32 @@ ieee80211_rate2media(struct ieee80211com case IEEE80211_MODE_11NA: case IEEE80211_MODE_TURBO_A: case IEEE80211_MODE_STURBO_A: - return findmedia(rates, N(rates), rate | IFM_IEEE80211_11A); + return findmedia(rates, nitems(rates), + rate | IFM_IEEE80211_11A); case IEEE80211_MODE_11B: - return findmedia(rates, N(rates), rate | IFM_IEEE80211_11B); + return findmedia(rates, nitems(rates), + rate | IFM_IEEE80211_11B); case IEEE80211_MODE_FH: - return findmedia(rates, N(rates), rate | IFM_IEEE80211_FH); + return findmedia(rates, nitems(rates), + rate | IFM_IEEE80211_FH); case IEEE80211_MODE_AUTO: /* NB: ic may be NULL for some drivers */ if (ic != NULL && ic->ic_phytype == IEEE80211_T_FH) - return findmedia(rates, N(rates), + return findmedia(rates, nitems(rates), rate | IFM_IEEE80211_FH); /* NB: hack, 11g matches both 11b+11a rates */ /* fall thru... */ case IEEE80211_MODE_11G: case IEEE80211_MODE_11NG: case IEEE80211_MODE_TURBO_G: - return findmedia(rates, N(rates), rate | IFM_IEEE80211_11G); + return findmedia(rates, nitems(rates), rate | IFM_IEEE80211_11G); } return IFM_AUTO; -#undef N } int ieee80211_media2rate(int mword) { -#define N(a) (sizeof(a) / sizeof(a[0])) static const int ieeerates[] = { -1, /* IFM_AUTO */ 0, /* IFM_MANUAL */ @@ -1712,9 +1712,8 @@ ieee80211_media2rate(int mword) 54, /* IFM_IEEE80211_OFDM27 */ -1, /* IFM_IEEE80211_MCS */ }; - return IFM_SUBTYPE(mword) < N(ieeerates) ? + return IFM_SUBTYPE(mword) < nitems(ieeerates) ? ieeerates[IFM_SUBTYPE(mword)] : 0; -#undef N } /* Modified: head/sys/net80211/ieee80211_action.c ============================================================================== --- head/sys/net80211/ieee80211_action.c Wed Aug 14 02:37:07 2013 (r254314) +++ head/sys/net80211/ieee80211_action.c Wed Aug 14 04:24:25 2013 (r254315) @@ -80,37 +80,35 @@ static ieee80211_send_action_func *vendo int ieee80211_send_action_register(int cat, int act, ieee80211_send_action_func *f) { -#define N(a) (sizeof(a) / sizeof(a[0])) switch (cat) { case IEEE80211_ACTION_CAT_BA: - if (act >= N(ba_send_action)) + if (act >= nitems(ba_send_action)) break; ba_send_action[act] = f; return 0; case IEEE80211_ACTION_CAT_HT: - if (act >= N(ht_send_action)) + if (act >= nitems(ht_send_action)) break; ht_send_action[act] = f; return 0; case IEEE80211_ACTION_CAT_SELF_PROT: - if (act >= N(meshpl_send_action)) + if (act >= nitems(meshpl_send_action)) break; meshpl_send_action[act] = f; return 0; case IEEE80211_ACTION_CAT_MESH: - if (act >= N(meshaction_send_action)) + if (act >= nitems(meshaction_send_action)) break; meshaction_send_action[act] = f; return 0; break; case IEEE80211_ACTION_CAT_VENDOR: - if (act >= N(vendor_send_action)) + if (act >= nitems(vendor_send_action)) break; vendor_send_action[act] = f; return 0; } return EINVAL; -#undef N } void @@ -122,33 +120,31 @@ ieee80211_send_action_unregister(int cat int ieee80211_send_action(struct ieee80211_node *ni, int cat, int act, void *sa) { -#define N(a) (sizeof(a) / sizeof(a[0])) ieee80211_send_action_func *f = send_inval; switch (cat) { case IEEE80211_ACTION_CAT_BA: - if (act < N(ba_send_action)) + if (act < nitems(ba_send_action)) f = ba_send_action[act]; break; case IEEE80211_ACTION_CAT_HT: - if (act < N(ht_send_action)) + if (act < nitems(ht_send_action)) f = ht_send_action[act]; break; case IEEE80211_ACTION_CAT_SELF_PROT: - if (act < N(meshpl_send_action)) + if (act < nitems(meshpl_send_action)) f = meshpl_send_action[act]; break; case IEEE80211_ACTION_CAT_MESH: - if (act < N(meshaction_send_action)) + if (act < nitems(meshaction_send_action)) f = meshaction_send_action[act]; break; case IEEE80211_ACTION_CAT_VENDOR: - if (act < N(vendor_send_action)) + if (act < nitems(vendor_send_action)) f = vendor_send_action[act]; break; } return f(ni, cat, act, sa); -#undef N } static int @@ -183,36 +179,34 @@ static ieee80211_recv_action_func *vendo int ieee80211_recv_action_register(int cat, int act, ieee80211_recv_action_func *f) { -#define N(a) (sizeof(a) / sizeof(a[0])) switch (cat) { case IEEE80211_ACTION_CAT_BA: - if (act >= N(ba_recv_action)) + if (act >= nitems(ba_recv_action)) break; ba_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_HT: - if (act >= N(ht_recv_action)) + if (act >= nitems(ht_recv_action)) break; ht_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_SELF_PROT: - if (act >= N(meshpl_recv_action)) + if (act >= nitems(meshpl_recv_action)) break; meshpl_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_MESH: - if (act >= N(meshaction_recv_action)) + if (act >= nitems(meshaction_recv_action)) break; meshaction_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_VENDOR: - if (act >= N(vendor_recv_action)) + if (act >= nitems(vendor_recv_action)) break; vendor_recv_action[act] = f; return 0; } return EINVAL; -#undef N } void @@ -226,7 +220,6 @@ ieee80211_recv_action(struct ieee80211_n const struct ieee80211_frame *wh, const uint8_t *frm, const uint8_t *efrm) { -#define N(a) (sizeof(a) / sizeof(a[0])) ieee80211_recv_action_func *f = recv_inval; struct ieee80211vap *vap = ni->ni_vap; const struct ieee80211_action *ia = @@ -234,15 +227,15 @@ ieee80211_recv_action(struct ieee80211_n switch (ia->ia_category) { case IEEE80211_ACTION_CAT_BA: - if (ia->ia_action < N(ba_recv_action)) + if (ia->ia_action < nitems(ba_recv_action)) f = ba_recv_action[ia->ia_action]; break; case IEEE80211_ACTION_CAT_HT: - if (ia->ia_action < N(ht_recv_action)) + if (ia->ia_action < nitems(ht_recv_action)) f = ht_recv_action[ia->ia_action]; break; case IEEE80211_ACTION_CAT_SELF_PROT: - if (ia->ia_action < N(meshpl_recv_action)) + if (ia->ia_action < nitems(meshpl_recv_action)) f = meshpl_recv_action[ia->ia_action]; break; case IEEE80211_ACTION_CAT_MESH: @@ -255,14 +248,13 @@ ieee80211_recv_action(struct ieee80211_n vap->iv_stats.is_mesh_nolink++; break; } - if (ia->ia_action < N(meshaction_recv_action)) + if (ia->ia_action < nitems(meshaction_recv_action)) f = meshaction_recv_action[ia->ia_action]; break; case IEEE80211_ACTION_CAT_VENDOR: - if (ia->ia_action < N(vendor_recv_action)) + if (ia->ia_action < nitems(vendor_recv_action)) f = vendor_recv_action[ia->ia_action]; break; } return f(ni, wh, frm, efrm); -#undef N } Modified: head/sys/net80211/ieee80211_node.c ============================================================================== --- head/sys/net80211/ieee80211_node.c Wed Aug 14 02:37:07 2013 (r254314) +++ head/sys/net80211/ieee80211_node.c Wed Aug 14 04:24:25 2013 (r254315) @@ -985,7 +985,6 @@ ieee80211_ies_expand(struct ieee80211_ie static void node_cleanup(struct ieee80211_node *ni) { -#define N(a) (sizeof(a)/sizeof(a[0])) struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; int i; @@ -1052,7 +1051,7 @@ node_cleanup(struct ieee80211_node *ni) * * XXX does this leave us open to inheriting old state? */ - for (i = 0; i < N(ni->ni_rxfrag); i++) + for (i = 0; i < nitems(ni->ni_rxfrag); i++) if (ni->ni_rxfrag[i] != NULL) { m_freem(ni->ni_rxfrag[i]); ni->ni_rxfrag[i] = NULL; @@ -1061,7 +1060,6 @@ node_cleanup(struct ieee80211_node *ni) * Must be careful here to remove any key map entry w/o a LOR. */ ieee80211_node_delucastkey(ni); -#undef N } static void Modified: head/sys/net80211/ieee80211_phy.c ============================================================================== --- head/sys/net80211/ieee80211_phy.c Wed Aug 14 02:37:07 2013 (r254314) +++ head/sys/net80211/ieee80211_phy.c Wed Aug 14 04:24:25 2013 (r254315) @@ -294,13 +294,12 @@ static struct ieee80211_rate_table ieee8 static void ieee80211_setup_ratetable(struct ieee80211_rate_table *rt) { -#define N(a) (sizeof(a)/sizeof(a[0])) #define WLAN_CTRL_FRAME_SIZE \ (sizeof(struct ieee80211_frame_ack) + IEEE80211_CRC_LEN) int i; - for (i = 0; i < N(rt->rateCodeToIndex); i++) + for (i = 0; i < nitems(rt->rateCodeToIndex); i++) rt->rateCodeToIndex[i] = (uint8_t) -1; for (i = 0; i < rt->rateCount; i++) { uint8_t code = rt->info[i].dot11Rate; @@ -341,14 +340,12 @@ ieee80211_setup_ratetable(struct ieee802 } #undef WLAN_CTRL_FRAME_SIZE -#undef N } /* Setup all rate tables */ static void ieee80211_phy_init(void) { -#define N(arr) (int)(sizeof(arr) / sizeof(arr[0])) static struct ieee80211_rate_table * const ratetables[] = { &ieee80211_half_table, &ieee80211_quarter_table, @@ -362,10 +359,9 @@ ieee80211_phy_init(void) }; int i; - for (i = 0; i < N(ratetables); ++i) + for (i = 0; i < nitems(ratetables); ++i) ieee80211_setup_ratetable(ratetables[i]); -#undef N } SYSINIT(wlan_phy, SI_SUB_DRIVERS, SI_ORDER_FIRST, ieee80211_phy_init, NULL); Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Wed Aug 14 02:37:07 2013 (r254314) +++ head/sys/net80211/ieee80211_proto.c Wed Aug 14 04:24:25 2013 (r254315) @@ -662,13 +662,12 @@ ieee80211_set_shortslottime(struct ieee8 int ieee80211_iserp_rateset(const struct ieee80211_rateset *rs) { -#define N(a) (sizeof(a) / sizeof(a[0])) static const int rates[] = { 2, 4, 11, 22, 12, 24, 48 }; int i, j; - if (rs->rs_nrates < N(rates)) + if (rs->rs_nrates < nitems(rates)) return 0; - for (i = 0; i < N(rates); i++) { + for (i = 0; i < nitems(rates); i++) { for (j = 0; j < rs->rs_nrates; j++) { int r = rs->rs_rates[j] & IEEE80211_RATE_VAL; if (rates[i] == r) @@ -681,7 +680,6 @@ ieee80211_iserp_rateset(const struct iee ; } return 1; -#undef N } /* Modified: head/sys/net80211/ieee80211_scan_sta.c ============================================================================== --- head/sys/net80211/ieee80211_scan_sta.c Wed Aug 14 02:37:07 2013 (r254314) +++ head/sys/net80211/ieee80211_scan_sta.c Wed Aug 14 04:24:25 2013 (r254315) @@ -450,13 +450,12 @@ add_channels(struct ieee80211vap *vap, struct ieee80211_scan_state *ss, enum ieee80211_phymode mode, const uint16_t freq[], int nfreq) { -#define N(a) (sizeof(a) / sizeof(a[0])) struct ieee80211com *ic = vap->iv_ic; struct ieee80211_channel *c, *cg; u_int modeflags; int i; - KASSERT(mode < N(chanflags), ("Unexpected mode %u", mode)); + KASSERT(mode < nitems(chanflags), ("Unexpected mode %u", mode)); modeflags = chanflags[mode]; for (i = 0; i < nfreq; i++) { if (ss->ss_last >= IEEE80211_SCAN_MAX) @@ -476,7 +475,6 @@ add_channels(struct ieee80211vap *vap, } ss->ss_chans[ss->ss_last++] = c; } -#undef N } struct scanlist { From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 07:12:01 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 99DACF5E; Wed, 14 Aug 2013 07:12:01 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (unknown [IPv6:2001:7b8:3a7:1:2d0:b7ff:fea0:8c26]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5F85123AB; Wed, 14 Aug 2013 07:12:01 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::64a4:45e2:b359:2420] (unknown [IPv6:2001:7b8:3a7:0:64a4:45e2:b359:2420]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id D0C2D5C43; Wed, 14 Aug 2013 09:11:51 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r254286 - head/sys/fs/ext2fs From: Dimitry Andric In-Reply-To: <201308131839.r7DIdaLD037277@svn.freebsd.org> Date: Wed, 14 Aug 2013 09:11:50 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <9B5BBD34-F953-40BF-8C10-0EF466ED3350@FreeBSD.org> References: <201308131839.r7DIdaLD037277@svn.freebsd.org> To: Pedro F. Giffuni X-Mailer: Apple Mail (2.1508) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 07:12:01 -0000 On Aug 13, 2013, at 20:39, Pedro F. Giffuni wrote: > Author: pfg > Date: Tue Aug 13 18:39:36 2013 > New Revision: 254286 > URL: http://svnweb.freebsd.org/changeset/base/254286 >=20 > Log: > ext2fs: update format specifiers for ext4 type. >=20 > Reported by: Sam Fourman Jr. > MFC after: 3 weeks >=20 > Modified: > head/sys/fs/ext2fs/ext2_subr.c >=20 > Modified: head/sys/fs/ext2fs/ext2_subr.c > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 18:14:53 2013 = (r254285) > +++ head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 18:39:36 2013 = (r254286) > @@ -150,7 +150,7 @@ ext2_checkoverlap(struct buf *bp, struct > ep->b_blkno + btodb(ep->b_bcount) <=3D start) > continue; > vprint("Disk overlap", vp); > - (void)printf("\tstart %d, end %d overlap start %lld, end = %ld\n", > + (void)printf("\tstart %ld, end %ld overlap start %lld, = end %ld\n", > start, last, (long long)ep->b_blkno, > (long)(ep->b_blkno + btodb(ep->b_bcount) - 1)); > panic("Disk buffer overlap"); This still fails on arches where int64_t is aliased to long long (basically, the 32-bit arches). Since using PRId64 is apparently frowned upon, the easiest solution is to cast the 'start' and 'last' variables to long long, and print them using %lld. -Dimitry From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 07:14:37 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3A617147 for ; Wed, 14 Aug 2013 07:14:37 +0000 (UTC) (envelope-from juli@clockworksquid.com) Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B363923C1 for ; Wed, 14 Aug 2013 07:14:36 +0000 (UTC) Received: by mail-lb0-f175.google.com with SMTP id 13so6426763lba.6 for ; Wed, 14 Aug 2013 00:14:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-type; bh=RlapbIItV7lklYkIM5hY3b2KIDxFw2+PZsfISGUSAYI=; b=Z8p0zmeqH1VOUZrP9FR5Co5NdPvlrYslUX5qIE/DkoWVkmu7UzHNFEJVXlzqwJQLPG PRgp+m9e1jRqUELcVrh9evJjOzIb3SCWTG8bDm2V/yl1emPwdgrvzlnnRkOMvuDi0sQw +3++lN3B6dugtFFaiCO+7trXCegX9uaVs9UdK0Wk1wgA8De1N/HXt+y+frQqL9dVnnCw V+hmWifEJtvsh4Qr0Z2s7jxpsVtgmn2ij9rN1z/Gz/OMGYze4L1Kn4z1gBZ/bgXuPy5y nC9BlYVkjgIen7UYVcpmFuczAAFVewc9HqFjHi2gJE0B63OW7SBiWNfXIDMKuUqgacFE Gz9A== X-Gm-Message-State: ALoCoQnOgZXykJVbnWPwULhFXFv6Z0v6OocyTbuJL5+cmF5WloTBqSOUUUJHNDO4PVUc0ryXle6E X-Received: by 10.112.172.137 with SMTP id bc9mr1452173lbc.21.1376464469116; Wed, 14 Aug 2013 00:14:29 -0700 (PDT) MIME-Version: 1.0 Sender: juli@clockworksquid.com Received: by 10.152.23.101 with HTTP; Wed, 14 Aug 2013 00:14:09 -0700 (PDT) In-Reply-To: <9B5BBD34-F953-40BF-8C10-0EF466ED3350@FreeBSD.org> References: <201308131839.r7DIdaLD037277@svn.freebsd.org> <9B5BBD34-F953-40BF-8C10-0EF466ED3350@FreeBSD.org> From: Juli Mallett Date: Wed, 14 Aug 2013 00:14:09 -0700 X-Google-Sender-Auth: kQpMfV5V-TA1TLBMDhi2B9pjuHU Message-ID: Subject: Re: svn commit: r254286 - head/sys/fs/ext2fs To: Dimitry Andric Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, "Pedro F. Giffuni" , src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 07:14:37 -0000 On Wed, Aug 14, 2013 at 12:11 AM, Dimitry Andric wrote: > This still fails on arches where int64_t is aliased to long long > (basically, the 32-bit arches). Since using PRId64 is apparently > frowned upon, the easiest solution is to cast the 'start' and 'last' > variables to long long, and print them using %lld. > That can't be the easiest solution, it's not even that easy :) It seems like intmax_t or uintmax_t as appropriate and cast to %jd or %ju respectively would be better. Juli. From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 07:25:18 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E2D08428; Wed, 14 Aug 2013 07:25:18 +0000 (UTC) (envelope-from dim@freebsd.org) Received: from tensor.andric.com (unknown [IPv6:2001:7b8:3a7:1:2d0:b7ff:fea0:8c26]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A5CA92452; Wed, 14 Aug 2013 07:25:18 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::64a4:45e2:b359:2420] (unknown [IPv6:2001:7b8:3a7:0:64a4:45e2:b359:2420]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id AC38F5C43; Wed, 14 Aug 2013 09:25:15 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r254286 - head/sys/fs/ext2fs From: Dimitry Andric In-Reply-To: Date: Wed, 14 Aug 2013 09:25:15 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201308131839.r7DIdaLD037277@svn.freebsd.org> <9B5BBD34-F953-40BF-8C10-0EF466ED3350@FreeBSD.org> To: Juli Mallett X-Mailer: Apple Mail (2.1508) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, "Pedro F. Giffuni" , src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 07:25:19 -0000 On Aug 14, 2013, at 09:14, Juli Mallett wrote: > On Wed, Aug 14, 2013 at 12:11 AM, Dimitry Andric = wrote: > This still fails on arches where int64_t is aliased to long long > (basically, the 32-bit arches). Since using PRId64 is apparently > frowned upon, the easiest solution is to cast the 'start' and 'last' > variables to long long, and print them using %lld. >=20 > That can't be the easiest solution, it's not even that easy :) It = seems like intmax_t or uintmax_t as appropriate and cast to %jd or %ju = respectively would be better. I was simply looking at the surrounding code, and that already casts several items to long long. So I wanted to keep the style there. :-) -Dimitry From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 08:03:58 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 17E6EA2D; Wed, 14 Aug 2013 08:03:58 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 061F225C9; Wed, 14 Aug 2013 08:03:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7E83v8t040511; Wed, 14 Aug 2013 08:03:57 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7E83vJs040510; Wed, 14 Aug 2013 08:03:57 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201308140803.r7E83vJs040510@svn.freebsd.org> From: Ulrich Spoerlein Date: Wed, 14 Aug 2013 08:03:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254319 - head/sys/modules/dtrace/sdt X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 08:03:58 -0000 Author: uqs Date: Wed Aug 14 08:03:57 2013 New Revision: 254319 URL: http://svnweb.freebsd.org/changeset/base/254319 Log: Fix make depend Modified: head/sys/modules/dtrace/sdt/Makefile Modified: head/sys/modules/dtrace/sdt/Makefile ============================================================================== --- head/sys/modules/dtrace/sdt/Makefile Wed Aug 14 06:36:32 2013 (r254318) +++ head/sys/modules/dtrace/sdt/Makefile Wed Aug 14 08:03:57 2013 (r254319) @@ -4,7 +4,7 @@ KMOD= sdt SRCS= sdt.c -SRCS+= vnode_if.h +SRCS+= vnode_if.h opt_kdtrace.h CFLAGS+= -I${.CURDIR}/../../../cddl/compat/opensolaris \ -I${.CURDIR}/../../../cddl/contrib/opensolaris/uts/common \ From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 08:10:54 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 96BD7CA9; Wed, 14 Aug 2013 08:10:54 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 847BC261E; Wed, 14 Aug 2013 08:10:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7E8As0u043966; Wed, 14 Aug 2013 08:10:54 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7E8Aswo043965; Wed, 14 Aug 2013 08:10:54 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201308140810.r7E8Aswo043965@svn.freebsd.org> From: Ulrich Spoerlein Date: Wed, 14 Aug 2013 08:10:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254320 - head/usr.bin/calendar/calendars X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 08:10:54 -0000 Author: uqs Date: Wed Aug 14 08:10:54 2013 New Revision: 254320 URL: http://svnweb.freebsd.org/changeset/base/254320 Log: Belatedly add my birthday and fix a typo. Modified: head/usr.bin/calendar/calendars/calendar.freebsd Modified: head/usr.bin/calendar/calendars/calendar.freebsd ============================================================================== --- head/usr.bin/calendar/calendars/calendar.freebsd Wed Aug 14 08:03:57 2013 (r254319) +++ head/usr.bin/calendar/calendars/calendar.freebsd Wed Aug 14 08:10:54 2013 (r254320) @@ -152,6 +152,7 @@ 05/10 Markus Brueffer born in Gronau, Nordrhein-Westfalen, Germany, 1977 05/11 Jesus Rodriguez born in Barcelona, Spain, 1972 05/11 Roman Kurakin born in Moscow, USSR, 1979 +05/11 Ulrich Spoerlein born in Schesslitz, Bayern, Germany, 1981 05/13 Pete Fritchman born in Lansdale, Pennsylvania, United States, 1983 05/14 Tatsumi Hosokawa born in Tokyo, Japan, 1968 05/14 Shigeyuku Fukushima born in Osaka, Japan, 1974 @@ -194,7 +195,7 @@ 06/07 Jimmy Olgeni born in Milano, Italy, 1976 06/07 Benjamin Close born in Adelaide, Australia, 1978 06/14 Josh Paetzel born in Minneapolis, Minnesota, United States, 1973 -06/17 Tilman Linneweh born in Weinheim, Baden-Wuertemberg, Germany, 1978 +06/17 Tilman Linneweh born in Weinheim, Baden-Wuerttemberg, Germany, 1978 06/18 Li-Wen Hsu born in Taipei, Taiwan, Republic of China, 1984 06/18 Roman Bogorodskiy born in Saratov, Russian Federation, 1986 06/19 Charlie Root born in Portland, Oregon, United States, 1993 From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 08:23:16 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 421DE240; Wed, 14 Aug 2013 08:23:16 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from theravensnest.org (theraven.freebsd.your.org [216.14.102.27]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0B3AE26BA; Wed, 14 Aug 2013 08:23:15 +0000 (UTC) Received: from dhcp-172-17-154-34.eduroam.lapwing.private.cam.ac.uk (global-1-26.nat.csx.cam.ac.uk [131.111.184.26]) (authenticated bits=0) by theravensnest.org (8.14.5/8.14.5) with ESMTP id r7E8NCWR016716 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 14 Aug 2013 08:23:14 GMT (envelope-from theraven@FreeBSD.org) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r253802 - head/contrib/llvm/tools/clang/lib/Headers From: David Chisnall In-Reply-To: <20130813205736.GA68244@stack.nl> Date: Wed, 14 Aug 2013 09:23:11 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <2A4F32C7-939D-4C4D-A136-D99FC06C486E@FreeBSD.org> References: <201307301233.r6UCXLT8012177@svn.freebsd.org> <2DE35C45-B110-4D93-BFA7-542A3D1EE902@freebsd.org> <20130807205653.GB4918@stack.nl> <46BC9A7E-4AF1-4BE9-9902-3578BDE0CD56@FreeBSD.org> <20130813205736.GA68244@stack.nl> To: Jilles Tjoelker X-Mailer: Apple Mail (2.1508) Cc: "svn-src-head@FreeBSD.org" , Matthew Fleming , "svn-src-all@FreeBSD.org" , "src-committers@FreeBSD.org" , Dimitry Andric X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 08:23:16 -0000 On 13 Aug 2013, at 21:57, Jilles Tjoelker wrote: > Given that JIT is for performance and larger addresses increase code > size and register pressure, the mmap() flag is probably useful. > Alternatively, all the JITted code could be placed in one block and = use > relative addressing. This would be a good thing to have in for 10.0, as the LLVM 3.4 JIT will = require it unless someone wants to contribute support for the large code = model... David From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 09:31:45 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 80DB7C8D; Wed, 14 Aug 2013 09:31:45 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail110.syd.optusnet.com.au (mail110.syd.optusnet.com.au [211.29.132.97]) by mx1.freebsd.org (Postfix) with ESMTP id 111CE2B0C; Wed, 14 Aug 2013 09:31:44 +0000 (UTC) Received: from c122-106-156-23.carlnfd1.nsw.optusnet.com.au (c122-106-156-23.carlnfd1.nsw.optusnet.com.au [122.106.156.23]) by mail110.syd.optusnet.com.au (Postfix) with ESMTPS id E42737812C4; Wed, 14 Aug 2013 19:10:53 +1000 (EST) Date: Wed, 14 Aug 2013 19:10:51 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Dimitry Andric Subject: Re: svn commit: r254286 - head/sys/fs/ext2fs In-Reply-To: <9B5BBD34-F953-40BF-8C10-0EF466ED3350@FreeBSD.org> Message-ID: <20130814182851.A1065@besplex.bde.org> References: <201308131839.r7DIdaLD037277@svn.freebsd.org> <9B5BBD34-F953-40BF-8C10-0EF466ED3350@FreeBSD.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Optus-CM-Score: 0 X-Optus-CM-Analysis: v=2.1 cv=YYGEuWhf c=1 sm=1 tr=0 a=ebeQFi2P/qHVC0Yw9JDJ4g==:117 a=PO7r1zJSAAAA:8 a=Eygb-0caP3YA:10 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=AD96D3NyImQA:10 a=6I5d2MoRAAAA:8 a=JCPPM7_Sc5d9gZvzo44A:9 a=AD96TLpiGArUWDxL:21 a=9KybAjeJlIn2ttJd:21 a=CjuIK1q_8ugA:10 a=SV7veod9ZcQA:10 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, "Pedro F. Giffuni" , src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 09:31:45 -0000 On Wed, 14 Aug 2013, Dimitry Andric wrote: > On Aug 13, 2013, at 20:39, Pedro F. Giffuni wrote: >> Log: >> ext2fs: update format specifiers for ext4 type. This is still quite broken. >> Modified: head/sys/fs/ext2fs/ext2_subr.c >> ============================================================================== >> --- head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 18:14:53 2013 (r254285) >> +++ head/sys/fs/ext2fs/ext2_subr.c Tue Aug 13 18:39:36 2013 (r254286) >> @@ -150,7 +150,7 @@ ext2_checkoverlap(struct buf *bp, struct >> ep->b_blkno + btodb(ep->b_bcount) <= start) >> continue; >> vprint("Disk overlap", vp); >> - (void)printf("\tstart %d, end %d overlap start %lld, end %ld\n", >> + (void)printf("\tstart %ld, end %ld overlap start %lld, end %ld\n", >> start, last, (long long)ep->b_blkno, >> (long)(ep->b_blkno + btodb(ep->b_bcount) - 1)); >> panic("Disk buffer overlap"); > > > This still fails on arches where int64_t is aliased to long long > (basically, the 32-bit arches). Since using PRId64 is apparently > frowned upon, the easiest solution is to cast the 'start' and 'last' > variables to long long, and print them using %lld. Gak. Later you said that this is to match the surrounding style. But the surrounding style is bad, and has lots of type errors that become bugs after changes like the recent ones: - (void)'ing printf() is a style bug - the above change breaks the lexical style by blindly expanding the line beyond 80 columns. (void)ing printf() helps give such style bugs by wastin6 6 columns - the continuation indent for the printf() is 8 columns, unlike the KNF continuation indent of 5 columns which is used a few lines earlier - it is nonsense to cast the overlap-starting block numer to a wider type than the overlap-ending block number, since the latter is at least as large. At least after recent changes, the cast to long became a type error on arches with 32-bit longs, since the block number type is now wider. I think it is now 64 bits. I disapprove of any changes to make block number types unsigned. If the block number type was actually changed to uint32_t for ext2, then printing it it using long is still a type error on arches with 32-bit longs. The cast to long is bogus and mainly breaks compile-time detection of the error. - the long long abomination is used. The cast to long long is bogus, but doesn't hide any error provided the block number type remains at most 64 bits signed. - since (apparently) no printf error is detected for the non-overlap start and end, these variables must have type long to match their printf format. But they actually have type e4fs_daddr_r, which is int64_t, at least now. int64_t happens to be the same as long on 64-bit arches. On 32-bit arches, it is very far from matches. So the non-detection of printf format errors from this just shows null testing on 32-bit arches. This function is a sanity check under KDB. Hopefully it is more insane than what it checks. Until recently it used int32_t for start and end. The hard-coded printf format of %d for them only assumed 32-bit ints. The bogus cast to long was defense against an old printf format error in one of the args (the overlap-ending block number) in 2000. Versions before that were broken on 64-bit arches. The bogus cast to long long was defense in 2002 against the expansion of the system-wide block number type daddr_t a little earlier. A previous buggy change changed the out of data format %d to %lld. %d matched daddr_t == int32_t accidentally on all arches. %lld matched daddr_t == int64_t accidentally only on 32-bit arches. It shouldn't take 4 commits per arg to get printf formats right. Bruce From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 13:57:25 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1D717D19; Wed, 14 Aug 2013 13:57:25 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E72A52CA2; Wed, 14 Aug 2013 13:57:24 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 0AC3DB91C; Wed, 14 Aug 2013 09:57:23 -0400 (EDT) From: John Baldwin To: Mark Johnston Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys Date: Wed, 14 Aug 2013 08:19:13 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <201308140042.r7E0gMtf054550@svn.freebsd.org> In-Reply-To: <201308140042.r7E0gMtf054550@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201308140819.13854.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Wed, 14 Aug 2013 09:57:23 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 13:57:25 -0000 On Tuesday, August 13, 2013 8:42:22 pm Mark Johnston wrote: > Author: markj > Date: Wed Aug 14 00:42:21 2013 > New Revision: 254309 > URL: http://svnweb.freebsd.org/changeset/base/254309 > > Log: > Use kld_{load,unload} instead of mod_{load,unload} for the linker file load > and unload event handlers added in r254266. > > Reported by: jhb > X-MFC with: r254266 Thanks! BTW, it would be really nice to replace HWPMC_HOOKS in kern_linker.c with EVENTHANDLER calls. I think kld_load would just work (though you might need to downgrade the lock before you run it). For kld_unload it seems you want two events, a kld_unload_try for your newly added event (since it can reject a kld_unload), and perhaps kld_unload at the end where the current HWPMC_HOOK is. Just an idea if someone is looking for something to do. I know there are other modules that need to hook into linker events like this, and making HWPMC_HOOKS more generic would be a big help. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 13:57:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6334BD1B; Wed, 14 Aug 2013 13:57:27 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 356172CA3; Wed, 14 Aug 2013 13:57:27 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 16CDDB95B; Wed, 14 Aug 2013 09:57:26 -0400 (EDT) From: John Baldwin To: David Chisnall Subject: Re: svn commit: r253802 - head/contrib/llvm/tools/clang/lib/Headers Date: Wed, 14 Aug 2013 08:21:50 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <201307301233.r6UCXLT8012177@svn.freebsd.org> <20130813205736.GA68244@stack.nl> <2A4F32C7-939D-4C4D-A136-D99FC06C486E@FreeBSD.org> In-Reply-To: <2A4F32C7-939D-4C4D-A136-D99FC06C486E@FreeBSD.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201308140821.50565.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Wed, 14 Aug 2013 09:57:26 -0400 (EDT) Cc: Matthew Fleming , "src-committers@FreeBSD.org" , Jilles Tjoelker , "svn-src-all@FreeBSD.org" , Dimitry Andric , "svn-src-head@FreeBSD.org" X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 13:57:27 -0000 On Wednesday, August 14, 2013 4:23:11 am David Chisnall wrote: > On 13 Aug 2013, at 21:57, Jilles Tjoelker wrote: > > > Given that JIT is for performance and larger addresses increase code > > size and register pressure, the mmap() flag is probably useful. > > Alternatively, all the JITted code could be placed in one block and use > > relative addressing. > > This would be a good thing to have in for 10.0, as the LLVM 3.4 JIT will > require it unless someone wants to contribute support for the large code > model... So you just need a flag to cap the virtual address at 2GB? Do you think we need an arbitrary address flag for this, or is a hardcoded 2GB flag ok? Linux has a MAP_32BIT that does what you want I think. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 13:59:18 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3E5DC164; Wed, 14 Aug 2013 13:59:18 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from theravensnest.org (theraven.freebsd.your.org [216.14.102.27]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 09AD12CB9; Wed, 14 Aug 2013 13:59:17 +0000 (UTC) Received: from dhcp-172-17-154-34.eduroam.lapwing.private.cam.ac.uk (global-1-26.nat.csx.cam.ac.uk [131.111.184.26]) (authenticated bits=0) by theravensnest.org (8.14.5/8.14.5) with ESMTP id r7EDxEZe021168 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 14 Aug 2013 13:59:15 GMT (envelope-from theraven@FreeBSD.org) Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r253802 - head/contrib/llvm/tools/clang/lib/Headers From: David Chisnall In-Reply-To: <201308140821.50565.jhb@freebsd.org> Date: Wed, 14 Aug 2013 14:59:09 +0100 Content-Transfer-Encoding: 7bit Message-Id: <32EA01FA-4E66-4764-9928-E1435ADEAE1C@FreeBSD.org> References: <201307301233.r6UCXLT8012177@svn.freebsd.org> <20130813205736.GA68244@stack.nl> <2A4F32C7-939D-4C4D-A136-D99FC06C486E@FreeBSD.org> <201308140821.50565.jhb@freebsd.org> To: John Baldwin X-Mailer: Apple Mail (2.1508) Cc: Matthew Fleming , "src-committers@FreeBSD.org" , Jilles Tjoelker , "svn-src-all@FreeBSD.org" , Dimitry Andric , "svn-src-head@FreeBSD.org" X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 13:59:18 -0000 On 14 Aug 2013, at 13:21, John Baldwin wrote: > On Wednesday, August 14, 2013 4:23:11 am David Chisnall wrote: >> On 13 Aug 2013, at 21:57, Jilles Tjoelker wrote: >> >>> Given that JIT is for performance and larger addresses increase code >>> size and register pressure, the mmap() flag is probably useful. >>> Alternatively, all the JITted code could be placed in one block and use >>> relative addressing. >> >> This would be a good thing to have in for 10.0, as the LLVM 3.4 JIT will >> require it unless someone wants to contribute support for the large code >> model... > > So you just need a flag to cap the virtual address at 2GB? Do you think we > need an arbitrary address flag for this, or is a hardcoded 2GB flag ok? > > Linux has a MAP_32BIT that does what you want I think. Yes, MAP_32BIT is used on Linux to solve this. David From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 14:22:47 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 34273D05; Wed, 14 Aug 2013 14:22:47 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 20F4F2E5C; Wed, 14 Aug 2013 14:22:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EEMkc5084265; Wed, 14 Aug 2013 14:22:47 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EEMk30084264; Wed, 14 Aug 2013 14:22:46 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201308141422.r7EEMk30084264@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Wed, 14 Aug 2013 14:22:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254326 - head/sys/fs/ext2fs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 14:22:47 -0000 Author: pfg Date: Wed Aug 14 14:22:46 2013 New Revision: 254326 URL: http://svnweb.freebsd.org/changeset/base/254326 Log: ext2fs: update format specifiers for ext4 type. Previous bandaid was not appropriate and didn't really work for all platforms. While here, cleanup the surrounding code to match ffs_checkoverlap() Reported by: dim, jmallet and bde MFC after: 3 weeks Modified: head/sys/fs/ext2fs/ext2_subr.c Modified: head/sys/fs/ext2fs/ext2_subr.c ============================================================================== --- head/sys/fs/ext2fs/ext2_subr.c Wed Aug 14 12:43:01 2013 (r254325) +++ head/sys/fs/ext2fs/ext2_subr.c Wed Aug 14 14:22:46 2013 (r254326) @@ -150,10 +150,10 @@ ext2_checkoverlap(struct buf *bp, struct ep->b_blkno + btodb(ep->b_bcount) <= start) continue; vprint("Disk overlap", vp); - (void)printf("\tstart %ld, end %ld overlap start %lld, end %ld\n", - start, last, (long long)ep->b_blkno, - (long)(ep->b_blkno + btodb(ep->b_bcount) - 1)); - panic("Disk buffer overlap"); + printf("\tstart %jd, end %jd overlap start %jd, end %jd\n", + (intmax_t)start, (intmax_t)last, (intmax_t)ep->b_blkno, + (intmax_t)(ep->b_blkno + btodb(ep->b_bcount) - 1)); + panic("ext2_checkoverlap: Disk buffer overlap"); } } #endif /* KDB */ From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 14:34:03 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2469F113; Wed, 14 Aug 2013 14:34:03 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 124552EF5; Wed, 14 Aug 2013 14:34:03 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EEY2CK088064; Wed, 14 Aug 2013 14:34:02 GMT (envelope-from theraven@svn.freebsd.org) Received: (from theraven@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EEY2PH088063; Wed, 14 Aug 2013 14:34:02 GMT (envelope-from theraven@svn.freebsd.org) Message-Id: <201308141434.r7EEY2PH088063@svn.freebsd.org> From: David Chisnall Date: Wed, 14 Aug 2013 14:34:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254327 - head/usr.bin/dtc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 14:34:03 -0000 Author: theraven Date: Wed Aug 14 14:34:02 2013 New Revision: 254327 URL: http://svnweb.freebsd.org/changeset/base/254327 Log: Make carets line up in dtc diagnostics if the line starts with a tab. Modified: head/usr.bin/dtc/input_buffer.cc Modified: head/usr.bin/dtc/input_buffer.cc ============================================================================== --- head/usr.bin/dtc/input_buffer.cc Wed Aug 14 14:22:46 2013 (r254326) +++ head/usr.bin/dtc/input_buffer.cc Wed Aug 14 14:34:02 2013 (r254327) @@ -216,7 +216,8 @@ input_buffer::parse_error(const char *ms putc('\n', stderr); for (int i=0 ; i<(cursor-line_start) ; ++i) { - putc(' ', stderr); + char c = (buffer[i+line_start] == '\t') ? '\t' : ' '; + putc(c, stderr); } putc('^', stderr); putc('\n', stderr); From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 14:38:11 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 88B1C29F; Wed, 14 Aug 2013 14:38:11 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from smtpauth2.wiscmail.wisc.edu (wmauth2.doit.wisc.edu [144.92.197.222]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5DF422F1E; Wed, 14 Aug 2013 14:38:10 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth2.wiscmail.wisc.edu by smtpauth2.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MRI00I00ZBCXR00@smtpauth2.wiscmail.wisc.edu>; Wed, 14 Aug 2013 09:38:04 -0500 (CDT) X-Spam-PmxInfo: Server=avs-2, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2013.8.14.134024, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (college9-20-110.resnet.ucsc.edu [169.233.20.110]) by smtpauth2.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MRI00I7SZBE5400@smtpauth2.wiscmail.wisc.edu>; Wed, 14 Aug 2013 09:38:03 -0500 (CDT) Message-id: <520B964A.1080200@freebsd.org> Date: Wed, 14 Aug 2013 07:38:02 -0700 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130811 Thunderbird/17.0.8 To: Glen Barber Subject: Re: svn commit: r254293 - head/release References: <201308132016.r7DKGEoR074586@svn.freebsd.org> In-reply-to: <201308132016.r7DKGEoR074586@svn.freebsd.org> X-Enigmail-Version: 1.5.1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 14:38:11 -0000 On 08/13/13 13:16, Glen Barber wrote: > Author: gjb > Date: Tue Aug 13 20:16:14 2013 > New Revision: 254293 > URL: http://svnweb.freebsd.org/changeset/base/254293 > > Log: > - Only set ARCH_FLAGS (TARGET/TARGET_ARCH) if specified, otherwise > allow the toolchain to detect the correct values. > > - Remove {SRC,DOC,PORT}REVISION variables, and use 'branch@rNNNNNN' > as the {SRC,DOC,PORT}BRANCH variables. > > - Only set default KERNEL_FLAGS and WORLD_FLAGS make(1) jobs if the > number of CPUs is greater than 1. > Could you update the "Clean Release Generation" section of release(7) as you make changes like this? -Nathan From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 14:42:18 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A432F962; Wed, 14 Aug 2013 14:42:18 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from mail0.glenbarber.us (mail0.glenbarber.us [IPv6:2607:fc50:1:2300:1001:1001:1001:face]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 778972F95; Wed, 14 Aug 2013 14:42:18 +0000 (UTC) Received: from glenbarber.us (nucleus.glenbarber.us [IPv6:2001:470:8:1205:2:2:ff:29]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: gjb) by mail0.glenbarber.us (Postfix) with ESMTPSA id 046A0E7B0; Wed, 14 Aug 2013 14:42:14 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.8.3 mail0.glenbarber.us 046A0E7B0 Authentication-Results: mail0.glenbarber.us; dkim=none reason="no signature"; dkim-adsp=none Date: Wed, 14 Aug 2013 10:42:13 -0400 From: Glen Barber To: Nathan Whitehorn Subject: Re: svn commit: r254293 - head/release Message-ID: <20130814144213.GH2241@glenbarber.us> References: <201308132016.r7DKGEoR074586@svn.freebsd.org> <520B964A.1080200@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="KrHCbChajFcK0yQE" Content-Disposition: inline In-Reply-To: <520B964A.1080200@freebsd.org> X-Operating-System: FreeBSD 10.0-CURRENT amd64 User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 14:42:18 -0000 --KrHCbChajFcK0yQE Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Aug 14, 2013 at 07:38:02AM -0700, Nathan Whitehorn wrote: > On 08/13/13 13:16, Glen Barber wrote: > > Author: gjb > > Date: Tue Aug 13 20:16:14 2013 > > New Revision: 254293 > > URL: http://svnweb.freebsd.org/changeset/base/254293 > > > > Log: > > - Only set ARCH_FLAGS (TARGET/TARGET_ARCH) if specified, otherwise > > allow the toolchain to detect the correct values. > > =20 > > - Remove {SRC,DOC,PORT}REVISION variables, and use 'branch@rNNNNNN' > > as the {SRC,DOC,PORT}BRANCH variables. > > =20 > > - Only set default KERNEL_FLAGS and WORLD_FLAGS make(1) jobs if the > > number of CPUs is greater than 1. > > =20 >=20 > Could you update the "Clean Release Generation" section of release(7) as > you make changes like this? Oops, I forgot to remove the *REVISION entries. Thanks. Glen --KrHCbChajFcK0yQE Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) iQEcBAEBCAAGBQJSC5dFAAoJEFJPDDeguUajZ0cH/AmUBzcccOU6L41Anw8wWU2/ CpC7iq4SKa3VP3/lpVOTLrO9LzE0rXgQP0yONqv75nbuP5j11vJpJMPHRDTfDriZ l76LMj1iUBXlAw00BflkdsF69BSoz7//n1bIsajcwpPjuqAIe1JYDa6oyB7Ugm/N uASKTsh4DTNRZZ898Wt66plDl1XAupGw+pCsOEvixJ4gt38URByMTdyGOh8LxUwD TUyyHVrSHWN4K888qbGFBxyE2YosI3N4IvTHPrhJnm9T43W8aUI2jreQljQJ+eQJ KBjL3JRaGvmaJGMM8bkYpNurU6UW/pp83AYsS+xUo9odU7RMbbseayfbiqhepXk= =Mf5G -----END PGP SIGNATURE----- --KrHCbChajFcK0yQE-- From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 14:45:48 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2BFC5AF5; Wed, 14 Aug 2013 14:45:48 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 198E12FBF; Wed, 14 Aug 2013 14:45:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EEjlUr092349; Wed, 14 Aug 2013 14:45:47 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EEjlgq092348; Wed, 14 Aug 2013 14:45:47 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308141445.r7EEjlgq092348@svn.freebsd.org> From: Glen Barber Date: Wed, 14 Aug 2013 14:45:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254328 - head/share/man/man7 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 14:45:48 -0000 Author: gjb Date: Wed Aug 14 14:45:47 2013 New Revision: 254328 URL: http://svnweb.freebsd.org/changeset/base/254328 Log: Remove the {SRC,DOC,PORT}REVISION variables from release(7), and update the default {SRC,DOC,PORT}BRANCH defaults. Submitted by: nwhitehorn X-MFC-With: r254224, r254294 X-MFC-To: stable/9, releng/9.2 Modified: head/share/man/man7/release.7 Modified: head/share/man/man7/release.7 ============================================================================== --- head/share/man/man7/release.7 Wed Aug 14 14:34:02 2013 (r254327) +++ head/share/man/man7/release.7 Wed Aug 14 14:45:47 2013 (r254328) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 13, 2013 +.Dd August 14, 2013 .Dt RELEASE 7 .Os .Sh NAME @@ -149,34 +149,19 @@ The .Li src/ branch to use. Defaults to -.Va head/ . +.Va head/@rHEAD . .It Va DOCBRANCH The .Li doc/ branch to use. Defaults to -.Va head/ . +.Va head/@rHEAD . .It Va PORTBRANCH The .Li ports/ branch to use. Defaults to -.Va head/ . -.It Va SRCREVISION -The revision of the -.Li src/ -tree to use. -Defaults to the current top of tree revision. -.It Va DOCREVISION -The revision of the -.Li doc/ -tree to use. -Defaults to the current top of tree revision. -.It Va PORTREVISION -The revision of the -.Li ports/ -tree to use. -Defaults to the current top of tree revision. +.Va head/@rHEAD . .It Va TARGET The target machine type for cross-building a release. .It Va TARGET_ARCH From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 14:50:36 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 86162D19; Wed, 14 Aug 2013 14:50:36 +0000 (UTC) (envelope-from nwhitehorn@freebsd.org) Received: from smtpauth2.wiscmail.wisc.edu (wmauth2.doit.wisc.edu [144.92.197.222]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5BAD72FE2; Wed, 14 Aug 2013 14:50:35 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth2.wiscmail.wisc.edu by smtpauth2.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MRI00L00ZNS8100@smtpauth2.wiscmail.wisc.edu>; Wed, 14 Aug 2013 09:50:35 -0500 (CDT) X-Spam-PmxInfo: Server=avs-2, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2013.8.14.134024, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (college9-20-110.resnet.ucsc.edu [169.233.20.110]) by smtpauth2.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MRI00M0IZW9MV00@smtpauth2.wiscmail.wisc.edu>; Wed, 14 Aug 2013 09:50:34 -0500 (CDT) Message-id: <520B9939.5060101@freebsd.org> Date: Wed, 14 Aug 2013 07:50:33 -0700 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130811 Thunderbird/17.0.8 To: Glen Barber Subject: Re: svn commit: r254293 - head/release References: <201308132016.r7DKGEoR074586@svn.freebsd.org> <520B964A.1080200@freebsd.org> <20130814144213.GH2241@glenbarber.us> In-reply-to: <20130814144213.GH2241@glenbarber.us> X-Enigmail-Version: 1.5.1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 14:50:36 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 08/14/13 07:42, Glen Barber wrote: > On Wed, Aug 14, 2013 at 07:38:02AM -0700, Nathan Whitehorn wrote: >> On 08/13/13 13:16, Glen Barber wrote: >>> Author: gjb >>> Date: Tue Aug 13 20:16:14 2013 >>> New Revision: 254293 >>> URL: http://svnweb.freebsd.org/changeset/base/254293 >>> >>> Log: >>> - Only set ARCH_FLAGS (TARGET/TARGET_ARCH) if specified, otherwise >>> allow the toolchain to detect the correct values. >>> >>> - Remove {SRC,DOC,PORT}REVISION variables, and use 'branch@rNNNNNN' >>> as the {SRC,DOC,PORT}BRANCH variables. >>> >>> - Only set default KERNEL_FLAGS and WORLD_FLAGS make(1) jobs if the >>> number of CPUs is greater than 1. >>> >> >> Could you update the "Clean Release Generation" section of release(7) as >> you make changes like this? > > Oops, I forgot to remove the *REVISION entries. Thanks. > > Glen > Thanks! - -Nathan -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.20 (FreeBSD) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlILmTkACgkQhRNblvwRglj2uACeNC1hui65qC1siJUnqNItNrLi SR8AnijIk10l+stMqJhGMN9MyZmbxFVA =RUpk -----END PGP SIGNATURE----- From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 15:18:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DD0B47DE; Wed, 14 Aug 2013 15:18:29 +0000 (UTC) (envelope-from smh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AFE19219E; Wed, 14 Aug 2013 15:18:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EFITI7004658; Wed, 14 Aug 2013 15:18:29 GMT (envelope-from smh@svn.freebsd.org) Received: (from smh@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EFITt1004656; Wed, 14 Aug 2013 15:18:29 GMT (envelope-from smh@svn.freebsd.org) Message-Id: <201308141518.r7EFITt1004656@svn.freebsd.org> From: Steven Hartland Date: Wed, 14 Aug 2013 15:18:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254329 - in head/sys/cam: ata scsi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 15:18:29 -0000 Author: smh Date: Wed Aug 14 15:18:28 2013 New Revision: 254329 URL: http://svnweb.freebsd.org/changeset/base/254329 Log: Added 4K quirks for:- * OCZ Agility 2 SSDs * Marvell SSDs * Intel X25-M Series SSDs Modified: head/sys/cam/ata/ata_da.c head/sys/cam/scsi/scsi_da.c Modified: head/sys/cam/ata/ata_da.c ============================================================================== --- head/sys/cam/ata/ata_da.c Wed Aug 14 14:45:47 2013 (r254328) +++ head/sys/cam/ata/ata_da.c Wed Aug 14 15:18:28 2013 (r254329) @@ -349,6 +349,14 @@ static struct ada_quirk_entry ada_quirk_ }, { /* + * Intel X25-M Series SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "INTEL SSDSA2M*", "*" }, + /*quirks*/ADA_Q_4K + }, + { + /* * Kingston E100 Series SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ @@ -365,6 +373,22 @@ static struct ada_quirk_entry ada_quirk_ }, { /* + * Marvell SSDs (entry taken from OpenSolaris) + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "MARVELL SD88SA02*", "*" }, + /*quirks*/ADA_Q_4K + }, + { + /* + * OCZ Agility 2 SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "OCZ-AGILITY2*", "*" }, + /*quirks*/ADA_Q_4K + }, + { + /* * OCZ Agility 3 SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ Modified: head/sys/cam/scsi/scsi_da.c ============================================================================== --- head/sys/cam/scsi/scsi_da.c Wed Aug 14 14:45:47 2013 (r254328) +++ head/sys/cam/scsi/scsi_da.c Wed Aug 14 15:18:28 2013 (r254329) @@ -1008,6 +1008,14 @@ static struct da_quirk_entry da_quirk_ta }, { /* + * Intel X25-M Series SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "ATA", "INTEL SSDSA2M*", "*" }, + /*quirks*/DA_Q_4K + }, + { + /* * Kingston E100 Series SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ @@ -1024,6 +1032,22 @@ static struct da_quirk_entry da_quirk_ta }, { /* + * Marvell SSDs (entry taken from OpenSolaris) + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "ATA", "MARVELL SD88SA02*", "*" }, + /*quirks*/DA_Q_4K + }, + { + /* + * OCZ Agility 2 SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "OCZ-AGILITY2*", "*" }, + /*quirks*/DA_Q_4K + }, + { + /* * OCZ Agility 3 SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 15:50:35 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 03EB063A; Wed, 14 Aug 2013 15:50:35 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E4F5923C0; Wed, 14 Aug 2013 15:50:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EFoYTi018214; Wed, 14 Aug 2013 15:50:34 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EFoYhk018213; Wed, 14 Aug 2013 15:50:34 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201308141550.r7EFoYhk018213@svn.freebsd.org> From: Sean Bruno Date: Wed, 14 Aug 2013 15:50:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254330 - head/sys/dev/mfi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 15:50:35 -0000 Author: sbruno Date: Wed Aug 14 15:50:34 2013 New Revision: 254330 URL: http://svnweb.freebsd.org/changeset/base/254330 Log: If sys/param.h MAXPHYS has been tuned to exceed MFI_MAXPHYS, the mfi(4) real JBOD mode (SYS PD) would fail fairly reliably during I/O. Steal the mfi_disk.c check for this condition (indirectly) when establishing d_maxsize. Reviewed by: ambrisko@ MFC after: 4 weeks Sponsored by: Yahoo! Inc. Modified: head/sys/dev/mfi/mfi_syspd.c Modified: head/sys/dev/mfi/mfi_syspd.c ============================================================================== --- head/sys/dev/mfi/mfi_syspd.c Wed Aug 14 15:18:28 2013 (r254329) +++ head/sys/dev/mfi/mfi_syspd.c Wed Aug 14 15:50:34 2013 (r254330) @@ -126,7 +126,8 @@ mfi_syspd_attach(device_t dev) sectors / (1024 * 1024 / secsize), sectors, sc->pd_id); sc->pd_disk = disk_alloc(); sc->pd_disk->d_drv1 = sc; - sc->pd_disk->d_maxsize = sc->pd_controller->mfi_max_io * secsize; + sc->pd_disk->d_maxsize = min(sc->pd_controller->mfi_max_io * secsize, + (sc->pd_controller->mfi_max_sge - 1) * PAGE_SIZE); sc->pd_disk->d_name = "mfisyspd"; sc->pd_disk->d_open = mfi_syspd_open; sc->pd_disk->d_close = mfi_syspd_close; From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 18:14:55 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 69D7AC69; Wed, 14 Aug 2013 18:14:55 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-vc0-x22d.google.com (mail-vc0-x22d.google.com [IPv6:2607:f8b0:400c:c03::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E41B62BFC; Wed, 14 Aug 2013 18:14:54 +0000 (UTC) Received: by mail-vc0-f173.google.com with SMTP id id13so5368688vcb.4 for ; Wed, 14 Aug 2013 11:14:54 -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:message-id:subject :from:to:cc:content-type; bh=/MN+s0ON/M7nubbRoO1nmZTDLFnPJRGTTjqzv4zKVXI=; b=hHXT6jwEZKuHY6a2Ul7W//DFVbkmePcbVNYJ44bfANoc2RNihh84uvC43lqqRI2S2O kZnaXoKiI7IeV7MgZiH8ikuFCJrXdCqb6b5zdgM/mIDlE68GXiiDOSSKtQu3FE167yfE eJ3tMW0zyQUtZ236PYp2kIySW02pKybv+piwrXwaq5ocsut3Wz2uhCysK75oVKPDXBLN gmDAE6hGc9UAkvqeBcqDs7iaK84a1IH/8dHvICewZ3Xeco+A2zEsgwSY6lj9UAEXOkcI n05GnAid2i7wVGHULr6Ys2H4hkzijJqJkm9MFvwgMa6i8pEeupR2zTftID9YM/dm9q0Z /jLA== MIME-Version: 1.0 X-Received: by 10.52.34.209 with SMTP id b17mr9837vdj.111.1376504094037; Wed, 14 Aug 2013 11:14:54 -0700 (PDT) Sender: markjdb@gmail.com Received: by 10.220.65.4 with HTTP; Wed, 14 Aug 2013 11:14:53 -0700 (PDT) In-Reply-To: <201308140819.13854.jhb@freebsd.org> References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308140819.13854.jhb@freebsd.org> Date: Wed, 14 Aug 2013 14:14:53 -0400 X-Google-Sender-Auth: v7L2t5m7b3MQeKZAMLEG-wvP-Fg Message-ID: Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys From: Mark Johnston To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 18:14:55 -0000 On Wed, Aug 14, 2013 at 8:19 AM, John Baldwin wrote: > On Tuesday, August 13, 2013 8:42:22 pm Mark Johnston wrote: > > Author: markj > > Date: Wed Aug 14 00:42:21 2013 > > New Revision: 254309 > > URL: http://svnweb.freebsd.org/changeset/base/254309 > > > > Log: > > Use kld_{load,unload} instead of mod_{load,unload} for the linker file > load > > and unload event handlers added in r254266. > > > > Reported by: jhb > > X-MFC with: r254266 > > Thanks! BTW, it would be really nice to replace HWPMC_HOOKS in > kern_linker.c with > EVENTHANDLER calls. I think kld_load would just work (though you might > need to > downgrade the lock before you run it). For kld_unload it seems you want > two events, > a kld_unload_try for your newly added event (since it can reject a > kld_unload), and > perhaps kld_unload at the end where the current HWPMC_HOOK is. Just an > idea if > someone is looking for something to do. I know there are other modules > that need > to hook into linker events like this, and making HWPMC_HOOKS more generic > would be > a big help. > I will look into doing this. The DTrace SDT kld_load handler will not work properly if the linker lock is downgraded first because of the following code in linker_file_lookup_set(): locked = KLD_LOCK(); if (!locked) KLD_LOCK(); In particular, it checks to see if the kld lock is exclusively held and locks it if not, which obviously causes problems if the thread holds the shared lock. The answer might be to just run the hwpmc handler with the exclusive lock held. Or perhaps we just need a linker_file_lookup_set_locked(), assuming that it's ok to look up a linker set with the shared lock held. -Mark From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 19:34:14 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id EE165AED; Wed, 14 Aug 2013 19:34:14 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C286D2140; Wed, 14 Aug 2013 19:34:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EJYEvi002511; Wed, 14 Aug 2013 19:34:14 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EJYDvl002507; Wed, 14 Aug 2013 19:34:13 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308141934.r7EJYDvl002507@svn.freebsd.org> From: Jilles Tjoelker Date: Wed, 14 Aug 2013 19:34:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254335 - in head: bin/sh tools/regression/bin/sh/parser X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 19:34:15 -0000 Author: jilles Date: Wed Aug 14 19:34:13 2013 New Revision: 254335 URL: http://svnweb.freebsd.org/changeset/base/254335 Log: sh: Allow a lone redirection before '|', ';;' or ';&'. Example: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F38ECFAC; Wed, 14 Aug 2013 19:49:15 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BF172223C; Wed, 14 Aug 2013 19:49:15 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 6482BB922; Wed, 14 Aug 2013 15:49:14 -0400 (EDT) From: John Baldwin To: Mark Johnston Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys Date: Wed, 14 Aug 2013 15:48:11 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308140819.13854.jhb@freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201308141548.11407.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Wed, 14 Aug 2013 15:49:14 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 19:49:16 -0000 On Wednesday, August 14, 2013 2:14:53 pm Mark Johnston wrote: > On Wed, Aug 14, 2013 at 8:19 AM, John Baldwin wrote: > > > On Tuesday, August 13, 2013 8:42:22 pm Mark Johnston wrote: > > > Author: markj > > > Date: Wed Aug 14 00:42:21 2013 > > > New Revision: 254309 > > > URL: http://svnweb.freebsd.org/changeset/base/254309 > > > > > > Log: > > > Use kld_{load,unload} instead of mod_{load,unload} for the linker file > > load > > > and unload event handlers added in r254266. > > > > > > Reported by: jhb > > > X-MFC with: r254266 > > > > Thanks! BTW, it would be really nice to replace HWPMC_HOOKS in > > kern_linker.c with > > EVENTHANDLER calls. I think kld_load would just work (though you might > > need to > > downgrade the lock before you run it). For kld_unload it seems you want > > two events, > > a kld_unload_try for your newly added event (since it can reject a > > kld_unload), and > > perhaps kld_unload at the end where the current HWPMC_HOOK is. Just an > > idea if > > someone is looking for something to do. I know there are other modules > > that need > > to hook into linker events like this, and making HWPMC_HOOKS more generic > > would be > > a big help. > > > > I will look into doing this. The DTrace SDT kld_load handler will not work > properly if the > linker lock is downgraded first because of the following code in > linker_file_lookup_set(): > > locked = KLD_LOCK(); > if (!locked) > KLD_LOCK(); > > In particular, it checks to see if the kld lock is exclusively held and > locks it if not, which > obviously causes problems if the thread holds the shared lock. > > The answer might be to just run the hwpmc handler with the exclusive lock > held. Or perhaps > we just need a linker_file_lookup_set_locked(), assuming that it's ok to > look up a linker set > with the shared lock held. It is probably fine to do a lookup with a shared lock. We could also fix the linker code to only lock if there is not an existing shared or exclusive lock. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 21:06:07 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 87ACBF9B; Wed, 14 Aug 2013 21:06:07 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-vb0-x235.google.com (mail-vb0-x235.google.com [IPv6:2607:f8b0:400c:c02::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EF44A2726; Wed, 14 Aug 2013 21:06:06 +0000 (UTC) Received: by mail-vb0-f53.google.com with SMTP id i3so8119002vbh.12 for ; Wed, 14 Aug 2013 14:06:06 -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:message-id:subject :from:to:cc:content-type; bh=4ZBJjWItfFa81V8V486u6jQAFJn3Bl/osg4jh1eNPDI=; b=Xf6grCLnXSZQobqPEDFlG+hhoBA+SyhgfWOn7UojT/c+7WAZ3xkiCaOr18Sq+1/sXR lgsKN9yLt7Gxm+ewRLGJQcAExAwCxBHJMGFSzEN9nOLMiIh48fVelcLIi9FBENQBndHa lftifzdkrzVeDVBFgsF6ltZfV9iJdoGrohJ8lN1plFvIQAr7cYVEc2psAO7c3bFghO0a waaOWjnJiJaRMzlzaNEtINsoq7fDl2b9HanouO7tpNE+m3CDJkDgqiKxA8Drd1Pc0h1g uE3wn6NbGyntcXV7RkKRUeIRV82NafLpcVxicuRMYer8h4jdrcjgN56mWkWloJlJDIeW F9rg== MIME-Version: 1.0 X-Received: by 10.220.48.194 with SMTP id s2mr1796305vcf.43.1376514366101; Wed, 14 Aug 2013 14:06:06 -0700 (PDT) Sender: markjdb@gmail.com Received: by 10.220.65.4 with HTTP; Wed, 14 Aug 2013 14:06:06 -0700 (PDT) In-Reply-To: <201308141548.11407.jhb@freebsd.org> References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308140819.13854.jhb@freebsd.org> <201308141548.11407.jhb@freebsd.org> Date: Wed, 14 Aug 2013 17:06:06 -0400 X-Google-Sender-Auth: yGRqgJ6RSSIHfUfKAQs5x8REa0Y Message-ID: Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys From: Mark Johnston To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Mark Johnston , src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 21:06:07 -0000 On Wed, Aug 14, 2013 at 3:48 PM, John Baldwin wrote: > On Wednesday, August 14, 2013 2:14:53 pm Mark Johnston wrote: > > On Wed, Aug 14, 2013 at 8:19 AM, John Baldwin wrote: > > > > > On Tuesday, August 13, 2013 8:42:22 pm Mark Johnston wrote: > > > > Author: markj > > > > Date: Wed Aug 14 00:42:21 2013 > > > > New Revision: 254309 > > > > URL: http://svnweb.freebsd.org/changeset/base/254309 > > > > > > > > Log: > > > > Use kld_{load,unload} instead of mod_{load,unload} for the linker > file > > > load > > > > and unload event handlers added in r254266. > > > > > > > > Reported by: jhb > > > > X-MFC with: r254266 > > > > > > Thanks! BTW, it would be really nice to replace HWPMC_HOOKS in > > > kern_linker.c with > > > EVENTHANDLER calls. I think kld_load would just work (though you might > > > need to > > > downgrade the lock before you run it). For kld_unload it seems you > want > > > two events, > > > a kld_unload_try for your newly added event (since it can reject a > > > kld_unload), and > > > perhaps kld_unload at the end where the current HWPMC_HOOK is. Just an > > > idea if > > > someone is looking for something to do. I know there are other modules > > > that need > > > to hook into linker events like this, and making HWPMC_HOOKS more > generic > > > would be > > > a big help. > > > > > > > I will look into doing this. The DTrace SDT kld_load handler will not > work > > properly if the > > linker lock is downgraded first because of the following code in > > linker_file_lookup_set(): > > > > locked = KLD_LOCK(); > > if (!locked) > > KLD_LOCK(); > > > > In particular, it checks to see if the kld lock is exclusively held and > > locks it if not, which > > obviously causes problems if the thread holds the shared lock. > > > > The answer might be to just run the hwpmc handler with the exclusive lock > > held. Or perhaps > > we just need a linker_file_lookup_set_locked(), assuming that it's ok to > > look up a linker set > > with the shared lock held. > > It is probably fine to do a lookup with a shared lock. We could also fix > the > linker code to only lock if there is not an existing shared or exclusive > lock. > Sorry if I'm being dense, but I thought it wasn't generally possible to determine whether curthread holds a given shared lock. From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 21:11:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 987471CF; Wed, 14 Aug 2013 21:11:27 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 771742781; Wed, 14 Aug 2013 21:11:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7ELBRZ5044558; Wed, 14 Aug 2013 21:11:27 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7ELBQfC044549; Wed, 14 Aug 2013 21:11:26 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201308142111.r7ELBQfC044549@svn.freebsd.org> From: Rick Macklem Date: Wed, 14 Aug 2013 21:11:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254337 - in head/sys/fs: nfs nfsserver X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 21:11:27 -0000 Author: rmacklem Date: Wed Aug 14 21:11:26 2013 New Revision: 254337 URL: http://svnweb.freebsd.org/changeset/base/254337 Log: Fix several performance related issues in the new NFS server's DRC for NFS over TCP. - Increase the size of the hash tables. - Create a separate mutex for each hash list of the TCP hash table. - Single thread the code that deletes stale cache entries. - Add a tunable called vfs.nfsd.tcphighwater, which can be increased to allow the cache to grow larger, avoiding the overhead of frequent scans to delete stale cache entries. (The default value will result in frequent scans to delete stale cache entries, analagous to what the pre-patched code does.) - Add a tunable called vfs.nfsd.cachetcp that can be used to disable DRC caching for NFS over TCP, since the old NFS server didn't DRC cache TCP. It also adjusts the size of nfsrc_floodlevel dynamically, so that it is always greater than vfs.nfsd.tcphighwater. For UDP the algorithm remains the same as the pre-patched code, but the tunable vfs.nfsd.udphighwater can be used to allow the cache to grow larger and reduce the overhead caused by frequent scans for stale entries. UDP also uses a larger hash table size than the pre-patched code. Reported by: wollman Tested by: wollman (earlier version of patch) Submitted by: ivoras (earlier patch) Reviewed by: jhb (earlier version of patch) MFC after: 1 month Modified: head/sys/fs/nfs/nfsport.h head/sys/fs/nfs/nfsrvcache.h head/sys/fs/nfsserver/nfs_nfsdcache.c head/sys/fs/nfsserver/nfs_nfsdport.c Modified: head/sys/fs/nfs/nfsport.h ============================================================================== --- head/sys/fs/nfs/nfsport.h Wed Aug 14 20:20:42 2013 (r254336) +++ head/sys/fs/nfs/nfsport.h Wed Aug 14 21:11:26 2013 (r254337) @@ -603,11 +603,6 @@ void nfsrvd_rcv(struct socket *, void *, #define NFSREQSPINLOCK extern struct mtx nfs_req_mutex #define NFSLOCKREQ() mtx_lock(&nfs_req_mutex) #define NFSUNLOCKREQ() mtx_unlock(&nfs_req_mutex) -#define NFSCACHEMUTEX extern struct mtx nfs_cache_mutex -#define NFSCACHEMUTEXPTR (&nfs_cache_mutex) -#define NFSLOCKCACHE() mtx_lock(&nfs_cache_mutex) -#define NFSUNLOCKCACHE() mtx_unlock(&nfs_cache_mutex) -#define NFSCACHELOCKREQUIRED() mtx_assert(&nfs_cache_mutex, MA_OWNED) #define NFSSOCKMUTEX extern struct mtx nfs_slock_mutex #define NFSSOCKMUTEXPTR (&nfs_slock_mutex) #define NFSLOCKSOCK() mtx_lock(&nfs_slock_mutex) Modified: head/sys/fs/nfs/nfsrvcache.h ============================================================================== --- head/sys/fs/nfs/nfsrvcache.h Wed Aug 14 20:20:42 2013 (r254336) +++ head/sys/fs/nfs/nfsrvcache.h Wed Aug 14 21:11:26 2013 (r254337) @@ -41,8 +41,9 @@ #define NFSRVCACHE_MAX_SIZE 2048 #define NFSRVCACHE_MIN_SIZE 64 -#define NFSRVCACHE_HASHSIZE 20 +#define NFSRVCACHE_HASHSIZE 500 +/* Cache table entry. */ struct nfsrvcache { LIST_ENTRY(nfsrvcache) rc_hash; /* Hash chain */ TAILQ_ENTRY(nfsrvcache) rc_lru; /* UDP lru chain */ @@ -104,4 +105,11 @@ struct nfsrvcache { LIST_HEAD(nfsrvhashhead, nfsrvcache); +/* The fine-grained locked cache hash table for TCP. */ +struct nfsrchash_bucket { + struct mtx mtx; + char lock_name[16]; + struct nfsrvhashhead tbl; +}; + #endif /* _NFS_NFSRVCACHE_H_ */ Modified: head/sys/fs/nfsserver/nfs_nfsdcache.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdcache.c Wed Aug 14 20:20:42 2013 (r254336) +++ head/sys/fs/nfsserver/nfs_nfsdcache.c Wed Aug 14 21:11:26 2013 (r254337) @@ -160,15 +160,51 @@ __FBSDID("$FreeBSD$"); #include extern struct nfsstats newnfsstats; -NFSCACHEMUTEX; +extern struct mtx nfsrc_udpmtx; +extern struct nfsrchash_bucket nfsrchash_table[NFSRVCACHE_HASHSIZE]; int nfsrc_floodlevel = NFSRVCACHE_FLOODLEVEL, nfsrc_tcpsavedreplies = 0; #endif /* !APPLEKEXT */ -static int nfsrc_tcpnonidempotent = 1; -static int nfsrc_udphighwater = NFSRVCACHE_UDPHIGHWATER, nfsrc_udpcachesize = 0; +SYSCTL_DECL(_vfs_nfsd); + +static u_int nfsrc_tcphighwater = 0; +static int +sysctl_tcphighwater(SYSCTL_HANDLER_ARGS) +{ + int error, newhighwater; + + newhighwater = nfsrc_tcphighwater; + error = sysctl_handle_int(oidp, &newhighwater, 0, req); + if (error != 0 || req->newptr == NULL) + return (error); + if (newhighwater < 0) + return (EINVAL); + if (newhighwater >= nfsrc_floodlevel) + nfsrc_floodlevel = newhighwater + newhighwater / 5; + nfsrc_tcphighwater = newhighwater; + return (0); +} +SYSCTL_PROC(_vfs_nfsd, OID_AUTO, tcphighwater, CTLTYPE_UINT | CTLFLAG_RW, 0, + sizeof(nfsrc_tcphighwater), sysctl_tcphighwater, "IU", + "High water mark for TCP cache entries"); + +static u_int nfsrc_udphighwater = NFSRVCACHE_UDPHIGHWATER; +SYSCTL_UINT(_vfs_nfsd, OID_AUTO, udphighwater, CTLFLAG_RW, + &nfsrc_udphighwater, 0, + "High water mark for UDP cache entries"); +static u_int nfsrc_tcptimeout = NFSRVCACHE_TCPTIMEOUT; +SYSCTL_UINT(_vfs_nfsd, OID_AUTO, tcpcachetimeo, CTLFLAG_RW, + &nfsrc_tcptimeout, 0, + "Timeout for TCP entries in the DRC"); +static u_int nfsrc_tcpnonidempotent = 1; +SYSCTL_UINT(_vfs_nfsd, OID_AUTO, cachetcp, CTLFLAG_RW, + &nfsrc_tcpnonidempotent, 0, + "Enable the DRC for NFS over TCP"); + +static int nfsrc_udpcachesize = 0; static TAILQ_HEAD(, nfsrvcache) nfsrvudplru; -static struct nfsrvhashhead nfsrvhashtbl[NFSRVCACHE_HASHSIZE], - nfsrvudphashtbl[NFSRVCACHE_HASHSIZE]; +static struct nfsrvhashhead nfsrvudphashtbl[NFSRVCACHE_HASHSIZE]; + /* * and the reverse mapping from generic to Version 2 procedure numbers */ @@ -197,10 +233,11 @@ static int newnfsv2_procid[NFS_V3NPROCS] NFSV2PROC_NOOP, }; +#define nfsrc_hash(xid) (((xid) + ((xid) >> 24)) % NFSRVCACHE_HASHSIZE) #define NFSRCUDPHASH(xid) \ - (&nfsrvudphashtbl[((xid) + ((xid) >> 24)) % NFSRVCACHE_HASHSIZE]) + (&nfsrvudphashtbl[nfsrc_hash(xid)]) #define NFSRCHASH(xid) \ - (&nfsrvhashtbl[((xid) + ((xid) >> 24)) % NFSRVCACHE_HASHSIZE]) + (&nfsrchash_table[nfsrc_hash(xid)].tbl) #define TRUE 1 #define FALSE 0 #define NFSRVCACHE_CHECKLEN 100 @@ -251,6 +288,18 @@ static int nfsrc_getlenandcksum(mbuf_t m static void nfsrc_marksametcpconn(u_int64_t); /* + * Return the correct mutex for this cache entry. + */ +static __inline struct mtx * +nfsrc_cachemutex(struct nfsrvcache *rp) +{ + + if ((rp->rc_flag & RC_UDP) != 0) + return (&nfsrc_udpmtx); + return (&nfsrchash_table[nfsrc_hash(rp->rc_xid)].mtx); +} + +/* * Initialize the server request cache list */ APPLESTATIC void @@ -264,7 +313,7 @@ nfsrvd_initcache(void) inited = 1; for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { LIST_INIT(&nfsrvudphashtbl[i]); - LIST_INIT(&nfsrvhashtbl[i]); + LIST_INIT(&nfsrchash_table[i].tbl); } TAILQ_INIT(&nfsrvudplru); nfsrc_tcpsavedreplies = 0; @@ -325,10 +374,12 @@ nfsrc_getudp(struct nfsrv_descript *nd, struct sockaddr_in6 *saddr6; struct nfsrvhashhead *hp; int ret = 0; + struct mtx *mutex; + mutex = nfsrc_cachemutex(newrp); hp = NFSRCUDPHASH(newrp->rc_xid); loop: - NFSLOCKCACHE(); + mtx_lock(mutex); LIST_FOREACH(rp, hp, rc_hash) { if (newrp->rc_xid == rp->rc_xid && newrp->rc_proc == rp->rc_proc && @@ -336,8 +387,8 @@ loop: nfsaddr_match(NETFAMILY(rp), &rp->rc_haddr, nd->nd_nam)) { if ((rp->rc_flag & RC_LOCKED) != 0) { rp->rc_flag |= RC_WANTED; - (void)mtx_sleep(rp, NFSCACHEMUTEXPTR, - (PZERO - 1) | PDROP, "nfsrc", 10 * hz); + (void)mtx_sleep(rp, mutex, (PZERO - 1) | PDROP, + "nfsrc", 10 * hz); goto loop; } if (rp->rc_flag == 0) @@ -347,14 +398,14 @@ loop: TAILQ_INSERT_TAIL(&nfsrvudplru, rp, rc_lru); if (rp->rc_flag & RC_INPROG) { newnfsstats.srvcache_inproghits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); ret = RC_DROPIT; } else if (rp->rc_flag & RC_REPSTATUS) { /* * V2 only. */ newnfsstats.srvcache_nonidemdonehits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); nfsrvd_rephead(nd); *(nd->nd_errp) = rp->rc_status; ret = RC_REPLY; @@ -362,7 +413,7 @@ loop: NFSRVCACHE_UDPTIMEOUT; } else if (rp->rc_flag & RC_REPMBUF) { newnfsstats.srvcache_nonidemdonehits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); nd->nd_mreq = m_copym(rp->rc_reply, 0, M_COPYALL, M_WAITOK); ret = RC_REPLY; @@ -377,7 +428,7 @@ loop: } } newnfsstats.srvcache_misses++; - newnfsstats.srvcache_size++; + atomic_add_int(&newnfsstats.srvcache_size, 1); nfsrc_udpcachesize++; newrp->rc_flag |= RC_INPROG; @@ -392,7 +443,7 @@ loop: } LIST_INSERT_HEAD(hp, newrp, rc_hash); TAILQ_INSERT_TAIL(&nfsrvudplru, newrp, rc_lru); - NFSUNLOCKCACHE(); + mtx_unlock(mutex); nd->nd_rp = newrp; ret = RC_DOIT; @@ -410,12 +461,14 @@ nfsrvd_updatecache(struct nfsrv_descript struct nfsrvcache *rp; struct nfsrvcache *retrp = NULL; mbuf_t m; + struct mtx *mutex; rp = nd->nd_rp; if (!rp) panic("nfsrvd_updatecache null rp"); nd->nd_rp = NULL; - NFSLOCKCACHE(); + mutex = nfsrc_cachemutex(rp); + mtx_lock(mutex); nfsrc_lock(rp); if (!(rp->rc_flag & RC_INPROG)) panic("nfsrvd_updatecache not inprog"); @@ -430,7 +483,7 @@ nfsrvd_updatecache(struct nfsrv_descript */ if (nd->nd_repstat == NFSERR_REPLYFROMCACHE) { newnfsstats.srvcache_nonidemdonehits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); nd->nd_repstat = 0; if (nd->nd_mreq) mbuf_freem(nd->nd_mreq); @@ -438,7 +491,7 @@ nfsrvd_updatecache(struct nfsrv_descript panic("reply from cache"); nd->nd_mreq = m_copym(rp->rc_reply, 0, M_COPYALL, M_WAITOK); - rp->rc_timestamp = NFSD_MONOSEC + NFSRVCACHE_TCPTIMEOUT; + rp->rc_timestamp = NFSD_MONOSEC + nfsrc_tcptimeout; nfsrc_unlock(rp); goto out; } @@ -463,29 +516,28 @@ nfsrvd_updatecache(struct nfsrv_descript nfsv2_repstat[newnfsv2_procid[nd->nd_procnum]]) { rp->rc_status = nd->nd_repstat; rp->rc_flag |= RC_REPSTATUS; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } else { if (!(rp->rc_flag & RC_UDP)) { - nfsrc_tcpsavedreplies++; + atomic_add_int(&nfsrc_tcpsavedreplies, 1); if (nfsrc_tcpsavedreplies > newnfsstats.srvcache_tcppeak) newnfsstats.srvcache_tcppeak = nfsrc_tcpsavedreplies; } - NFSUNLOCKCACHE(); + mtx_unlock(mutex); m = m_copym(nd->nd_mreq, 0, M_COPYALL, M_WAITOK); - NFSLOCKCACHE(); + mtx_lock(mutex); rp->rc_reply = m; rp->rc_flag |= RC_REPMBUF; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } if (rp->rc_flag & RC_UDP) { rp->rc_timestamp = NFSD_MONOSEC + NFSRVCACHE_UDPTIMEOUT; nfsrc_unlock(rp); } else { - rp->rc_timestamp = NFSD_MONOSEC + - NFSRVCACHE_TCPTIMEOUT; + rp->rc_timestamp = NFSD_MONOSEC + nfsrc_tcptimeout; if (rp->rc_refcnt > 0) nfsrc_unlock(rp); else @@ -493,7 +545,7 @@ nfsrvd_updatecache(struct nfsrv_descript } } else { nfsrc_freecache(rp); - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } out: @@ -509,14 +561,16 @@ out: APPLESTATIC void nfsrvd_delcache(struct nfsrvcache *rp) { + struct mtx *mutex; + mutex = nfsrc_cachemutex(rp); if (!(rp->rc_flag & RC_INPROG)) panic("nfsrvd_delcache not in prog"); - NFSLOCKCACHE(); + mtx_lock(mutex); rp->rc_flag &= ~RC_INPROG; if (rp->rc_refcnt == 0 && !(rp->rc_flag & RC_LOCKED)) nfsrc_freecache(rp); - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } /* @@ -528,7 +582,9 @@ APPLESTATIC void nfsrvd_sentcache(struct nfsrvcache *rp, struct socket *so, int err) { tcp_seq tmp_seq; + struct mtx *mutex; + mutex = nfsrc_cachemutex(rp); if (!(rp->rc_flag & RC_LOCKED)) panic("nfsrvd_sentcache not locked"); if (!err) { @@ -537,10 +593,10 @@ nfsrvd_sentcache(struct nfsrvcache *rp, so->so_proto->pr_protocol != IPPROTO_TCP) panic("nfs sent cache"); if (nfsrv_getsockseqnum(so, &tmp_seq)) { - NFSLOCKCACHE(); + mtx_lock(mutex); rp->rc_tcpseq = tmp_seq; rp->rc_flag |= RC_TCPSEQ; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } } nfsrc_unlock(rp); @@ -559,11 +615,13 @@ nfsrc_gettcp(struct nfsrv_descript *nd, struct nfsrvcache *hitrp; struct nfsrvhashhead *hp, nfsrc_templist; int hit, ret = 0; + struct mtx *mutex; + mutex = nfsrc_cachemutex(newrp); hp = NFSRCHASH(newrp->rc_xid); newrp->rc_reqlen = nfsrc_getlenandcksum(nd->nd_mrep, &newrp->rc_cksum); tryagain: - NFSLOCKCACHE(); + mtx_lock(mutex); hit = 1; LIST_INIT(&nfsrc_templist); /* @@ -621,8 +679,8 @@ tryagain: rp = hitrp; if ((rp->rc_flag & RC_LOCKED) != 0) { rp->rc_flag |= RC_WANTED; - (void)mtx_sleep(rp, NFSCACHEMUTEXPTR, - (PZERO - 1) | PDROP, "nfsrc", 10 * hz); + (void)mtx_sleep(rp, mutex, (PZERO - 1) | PDROP, + "nfsrc", 10 * hz); goto tryagain; } if (rp->rc_flag == 0) @@ -630,7 +688,7 @@ tryagain: rp->rc_flag |= RC_LOCKED; if (rp->rc_flag & RC_INPROG) { newnfsstats.srvcache_inproghits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); if (newrp->rc_sockref == rp->rc_sockref) nfsrc_marksametcpconn(rp->rc_sockref); ret = RC_DROPIT; @@ -639,24 +697,22 @@ tryagain: * V2 only. */ newnfsstats.srvcache_nonidemdonehits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); if (newrp->rc_sockref == rp->rc_sockref) nfsrc_marksametcpconn(rp->rc_sockref); ret = RC_REPLY; nfsrvd_rephead(nd); *(nd->nd_errp) = rp->rc_status; - rp->rc_timestamp = NFSD_MONOSEC + - NFSRVCACHE_TCPTIMEOUT; + rp->rc_timestamp = NFSD_MONOSEC + nfsrc_tcptimeout; } else if (rp->rc_flag & RC_REPMBUF) { newnfsstats.srvcache_nonidemdonehits++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); if (newrp->rc_sockref == rp->rc_sockref) nfsrc_marksametcpconn(rp->rc_sockref); ret = RC_REPLY; nd->nd_mreq = m_copym(rp->rc_reply, 0, M_COPYALL, M_WAITOK); - rp->rc_timestamp = NFSD_MONOSEC + - NFSRVCACHE_TCPTIMEOUT; + rp->rc_timestamp = NFSD_MONOSEC + nfsrc_tcptimeout; } else { panic("nfs tcp cache1"); } @@ -665,7 +721,7 @@ tryagain: goto out; } newnfsstats.srvcache_misses++; - newnfsstats.srvcache_size++; + atomic_add_int(&newnfsstats.srvcache_size, 1); /* * For TCP, multiple entries for a key are allowed, so don't @@ -674,7 +730,7 @@ tryagain: newrp->rc_cachetime = NFSD_MONOSEC; newrp->rc_flag |= RC_INPROG; LIST_INSERT_HEAD(hp, newrp, rc_hash); - NFSUNLOCKCACHE(); + mtx_unlock(mutex); nd->nd_rp = newrp; ret = RC_DOIT; @@ -685,16 +741,17 @@ out: /* * Lock a cache entry. - * Also puts a mutex lock on the cache list. */ static void nfsrc_lock(struct nfsrvcache *rp) { - NFSCACHELOCKREQUIRED(); + struct mtx *mutex; + + mutex = nfsrc_cachemutex(rp); + mtx_assert(mutex, MA_OWNED); while ((rp->rc_flag & RC_LOCKED) != 0) { rp->rc_flag |= RC_WANTED; - (void)mtx_sleep(rp, NFSCACHEMUTEXPTR, PZERO - 1, - "nfsrc", 0); + (void)mtx_sleep(rp, mutex, PZERO - 1, "nfsrc", 0); } rp->rc_flag |= RC_LOCKED; } @@ -705,11 +762,13 @@ nfsrc_lock(struct nfsrvcache *rp) static void nfsrc_unlock(struct nfsrvcache *rp) { + struct mtx *mutex; - NFSLOCKCACHE(); + mutex = nfsrc_cachemutex(rp); + mtx_lock(mutex); rp->rc_flag &= ~RC_LOCKED; nfsrc_wanted(rp); - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } /* @@ -732,7 +791,6 @@ static void nfsrc_freecache(struct nfsrvcache *rp) { - NFSCACHELOCKREQUIRED(); LIST_REMOVE(rp, rc_hash); if (rp->rc_flag & RC_UDP) { TAILQ_REMOVE(&nfsrvudplru, rp, rc_lru); @@ -742,10 +800,10 @@ nfsrc_freecache(struct nfsrvcache *rp) if (rp->rc_flag & RC_REPMBUF) { mbuf_freem(rp->rc_reply); if (!(rp->rc_flag & RC_UDP)) - nfsrc_tcpsavedreplies--; + atomic_add_int(&nfsrc_tcpsavedreplies, -1); } FREE((caddr_t)rp, M_NFSRVCACHE); - newnfsstats.srvcache_size--; + atomic_add_int(&newnfsstats.srvcache_size, -1); } /* @@ -757,20 +815,21 @@ nfsrvd_cleancache(void) struct nfsrvcache *rp, *nextrp; int i; - NFSLOCKCACHE(); for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { - LIST_FOREACH_SAFE(rp, &nfsrvhashtbl[i], rc_hash, nextrp) { + mtx_lock(&nfsrchash_table[i].mtx); + LIST_FOREACH_SAFE(rp, &nfsrchash_table[i].tbl, rc_hash, nextrp) nfsrc_freecache(rp); - } + mtx_unlock(&nfsrchash_table[i].mtx); } + mtx_lock(&nfsrc_udpmtx); for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { LIST_FOREACH_SAFE(rp, &nfsrvudphashtbl[i], rc_hash, nextrp) { nfsrc_freecache(rp); } } newnfsstats.srvcache_size = 0; + mtx_unlock(&nfsrc_udpmtx); nfsrc_tcpsavedreplies = 0; - NFSUNLOCKCACHE(); } /* @@ -780,28 +839,97 @@ static void nfsrc_trimcache(u_int64_t sockref, struct socket *so) { struct nfsrvcache *rp, *nextrp; - int i; + int i, j, k, time_histo[10]; + time_t thisstamp; + static time_t udp_lasttrim = 0, tcp_lasttrim = 0; + static int onethread = 0; - NFSLOCKCACHE(); - TAILQ_FOREACH_SAFE(rp, &nfsrvudplru, rc_lru, nextrp) { - if (!(rp->rc_flag & (RC_INPROG|RC_LOCKED|RC_WANTED)) - && rp->rc_refcnt == 0 - && ((rp->rc_flag & RC_REFCNT) || - NFSD_MONOSEC > rp->rc_timestamp || - nfsrc_udpcachesize > nfsrc_udphighwater)) - nfsrc_freecache(rp); - } - for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { - LIST_FOREACH_SAFE(rp, &nfsrvhashtbl[i], rc_hash, nextrp) { + if (atomic_cmpset_acq_int(&onethread, 0, 1) == 0) + return; + if (NFSD_MONOSEC != udp_lasttrim || + nfsrc_udpcachesize >= (nfsrc_udphighwater + + nfsrc_udphighwater / 2)) { + mtx_lock(&nfsrc_udpmtx); + udp_lasttrim = NFSD_MONOSEC; + TAILQ_FOREACH_SAFE(rp, &nfsrvudplru, rc_lru, nextrp) { if (!(rp->rc_flag & (RC_INPROG|RC_LOCKED|RC_WANTED)) && rp->rc_refcnt == 0 && ((rp->rc_flag & RC_REFCNT) || - NFSD_MONOSEC > rp->rc_timestamp || - nfsrc_activesocket(rp, sockref, so))) + udp_lasttrim > rp->rc_timestamp || + nfsrc_udpcachesize > nfsrc_udphighwater)) nfsrc_freecache(rp); } + mtx_unlock(&nfsrc_udpmtx); + } + if (NFSD_MONOSEC != tcp_lasttrim || + nfsrc_tcpsavedreplies >= nfsrc_tcphighwater) { + for (i = 0; i < 10; i++) + time_histo[i] = 0; + for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { + mtx_lock(&nfsrchash_table[i].mtx); + if (i == 0) + tcp_lasttrim = NFSD_MONOSEC; + LIST_FOREACH_SAFE(rp, &nfsrchash_table[i].tbl, rc_hash, + nextrp) { + if (!(rp->rc_flag & + (RC_INPROG|RC_LOCKED|RC_WANTED)) + && rp->rc_refcnt == 0) { + /* + * The timestamps range from roughly the + * present (tcp_lasttrim) to the present + * + nfsrc_tcptimeout. Generate a simple + * histogram of where the timeouts fall. + */ + j = rp->rc_timestamp - tcp_lasttrim; + if (j >= nfsrc_tcptimeout) + j = nfsrc_tcptimeout - 1; + if (j < 0) + j = 0; + j = (j * 10 / nfsrc_tcptimeout) % 10; + time_histo[j]++; + if ((rp->rc_flag & RC_REFCNT) || + tcp_lasttrim > rp->rc_timestamp || + nfsrc_activesocket(rp, sockref, so)) + nfsrc_freecache(rp); + } + } + mtx_unlock(&nfsrchash_table[i].mtx); + } + j = nfsrc_tcphighwater / 5; /* 20% of it */ + if (j > 0 && (nfsrc_tcpsavedreplies + j) > nfsrc_tcphighwater) { + /* + * Trim some more with a smaller timeout of as little + * as 20% of nfsrc_tcptimeout to try and get below + * 80% of the nfsrc_tcphighwater. + */ + k = 0; + for (i = 0; i < 8; i++) { + k += time_histo[i]; + if (k > j) + break; + } + k = nfsrc_tcptimeout * (i + 1) / 10; + if (k < 1) + k = 1; + thisstamp = tcp_lasttrim + k; + for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { + mtx_lock(&nfsrchash_table[i].mtx); + LIST_FOREACH_SAFE(rp, &nfsrchash_table[i].tbl, + rc_hash, nextrp) { + if (!(rp->rc_flag & + (RC_INPROG|RC_LOCKED|RC_WANTED)) + && rp->rc_refcnt == 0 + && ((rp->rc_flag & RC_REFCNT) || + thisstamp > rp->rc_timestamp || + nfsrc_activesocket(rp, sockref, + so))) + nfsrc_freecache(rp); + } + mtx_unlock(&nfsrchash_table[i].mtx); + } + } } - NFSUNLOCKCACHE(); + atomic_store_rel_int(&onethread, 0); } /* @@ -810,12 +938,14 @@ nfsrc_trimcache(u_int64_t sockref, struc APPLESTATIC void nfsrvd_refcache(struct nfsrvcache *rp) { + struct mtx *mutex; - NFSLOCKCACHE(); + mutex = nfsrc_cachemutex(rp); + mtx_lock(mutex); if (rp->rc_refcnt < 0) panic("nfs cache refcnt"); rp->rc_refcnt++; - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } /* @@ -824,14 +954,16 @@ nfsrvd_refcache(struct nfsrvcache *rp) APPLESTATIC void nfsrvd_derefcache(struct nfsrvcache *rp) { + struct mtx *mutex; - NFSLOCKCACHE(); + mutex = nfsrc_cachemutex(rp); + mtx_lock(mutex); if (rp->rc_refcnt <= 0) panic("nfs cache derefcnt"); rp->rc_refcnt--; if (rp->rc_refcnt == 0 && !(rp->rc_flag & (RC_LOCKED | RC_INPROG))) nfsrc_freecache(rp); - NFSUNLOCKCACHE(); + mtx_unlock(mutex); } /* Modified: head/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 14 20:20:42 2013 (r254336) +++ head/sys/fs/nfsserver/nfs_nfsdport.c Wed Aug 14 21:11:26 2013 (r254337) @@ -60,7 +60,8 @@ extern SVCPOOL *nfsrvd_pool; extern struct nfsv4lock nfsd_suspend_lock; struct vfsoptlist nfsv4root_opt, nfsv4root_newopt; NFSDLOCKMUTEX; -struct mtx nfs_cache_mutex; +struct nfsrchash_bucket nfsrchash_table[NFSRVCACHE_HASHSIZE]; +struct mtx nfsrc_udpmtx; struct mtx nfs_v4root_mutex; struct nfsrvfh nfs_rootfh, nfs_pubfh; int nfs_pubfhset = 0, nfs_rootfhset = 0; @@ -3278,7 +3279,7 @@ extern int (*nfsd_call_nfsd)(struct thre static int nfsd_modevent(module_t mod, int type, void *data) { - int error = 0; + int error = 0, i; static int loaded = 0; switch (type) { @@ -3286,7 +3287,14 @@ nfsd_modevent(module_t mod, int type, vo if (loaded) goto out; newnfs_portinit(); - mtx_init(&nfs_cache_mutex, "nfs_cache_mutex", NULL, MTX_DEF); + for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) { + snprintf(nfsrchash_table[i].lock_name, + sizeof(nfsrchash_table[i].lock_name), "nfsrc_tcp%d", + i); + mtx_init(&nfsrchash_table[i].mtx, + nfsrchash_table[i].lock_name, NULL, MTX_DEF); + } + mtx_init(&nfsrc_udpmtx, "nfs_udpcache_mutex", NULL, MTX_DEF); mtx_init(&nfs_v4root_mutex, "nfs_v4root_mutex", NULL, MTX_DEF); mtx_init(&nfsv4root_mnt.mnt_mtx, "struct mount mtx", NULL, MTX_DEF); @@ -3330,7 +3338,9 @@ nfsd_modevent(module_t mod, int type, vo svcpool_destroy(nfsrvd_pool); /* and get rid of the locks */ - mtx_destroy(&nfs_cache_mutex); + for (i = 0; i < NFSRVCACHE_HASHSIZE; i++) + mtx_destroy(&nfsrchash_table[i].mtx); + mtx_destroy(&nfsrc_udpmtx); mtx_destroy(&nfs_v4root_mutex); mtx_destroy(&nfsv4root_mnt.mnt_mtx); lockdestroy(&nfsv4root_mnt.mnt_explock); From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 21:11:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 061C41D0; Wed, 14 Aug 2013 21:11:29 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C0FEE2782; Wed, 14 Aug 2013 21:11:28 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 46530B924; Wed, 14 Aug 2013 17:11:27 -0400 (EDT) From: John Baldwin To: Mark Johnston Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys Date: Wed, 14 Aug 2013 17:11:17 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308141548.11407.jhb@freebsd.org> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201308141711.17660.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Wed, 14 Aug 2013 17:11:27 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 21:11:29 -0000 On Wednesday, August 14, 2013 5:06:06 pm Mark Johnston wrote: > On Wed, Aug 14, 2013 at 3:48 PM, John Baldwin wrote: > > > On Wednesday, August 14, 2013 2:14:53 pm Mark Johnston wrote: > > > On Wed, Aug 14, 2013 at 8:19 AM, John Baldwin wrote: > > > > > > > On Tuesday, August 13, 2013 8:42:22 pm Mark Johnston wrote: > > > > > Author: markj > > > > > Date: Wed Aug 14 00:42:21 2013 > > > > > New Revision: 254309 > > > > > URL: http://svnweb.freebsd.org/changeset/base/254309 > > > > > > > > > > Log: > > > > > Use kld_{load,unload} instead of mod_{load,unload} for the linker > > file > > > > load > > > > > and unload event handlers added in r254266. > > > > > > > > > > Reported by: jhb > > > > > X-MFC with: r254266 > > > > > > > > Thanks! BTW, it would be really nice to replace HWPMC_HOOKS in > > > > kern_linker.c with > > > > EVENTHANDLER calls. I think kld_load would just work (though you might > > > > need to > > > > downgrade the lock before you run it). For kld_unload it seems you > > want > > > > two events, > > > > a kld_unload_try for your newly added event (since it can reject a > > > > kld_unload), and > > > > perhaps kld_unload at the end where the current HWPMC_HOOK is. Just an > > > > idea if > > > > someone is looking for something to do. I know there are other modules > > > > that need > > > > to hook into linker events like this, and making HWPMC_HOOKS more > > generic > > > > would be > > > > a big help. > > > > > > > > > > I will look into doing this. The DTrace SDT kld_load handler will not > > work > > > properly if the > > > linker lock is downgraded first because of the following code in > > > linker_file_lookup_set(): > > > > > > locked = KLD_LOCK(); > > > if (!locked) > > > KLD_LOCK(); > > > > > > In particular, it checks to see if the kld lock is exclusively held and > > > locks it if not, which > > > obviously causes problems if the thread holds the shared lock. > > > > > > The answer might be to just run the hwpmc handler with the exclusive lock > > > held. Or perhaps > > > we just need a linker_file_lookup_set_locked(), assuming that it's ok to > > > look up a linker set > > > with the shared lock held. > > > > It is probably fine to do a lookup with a shared lock. We could also fix > > the > > linker code to only lock if there is not an existing shared or exclusive > > lock. > > > > Sorry if I'm being dense, but I thought it wasn't generally possible to > determine > whether curthread holds a given shared lock. Fair enough. We could probably either add _locked variant that asserts either one (you can do an assert for a shared lock), or just require all callers to get the lock and make the non _locked variant basically be the _locked variant. I would prefer the latter if it is not too invasive. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 21:51:33 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 01DAEABE; Wed, 14 Aug 2013 21:51:33 +0000 (UTC) (envelope-from tuexen@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E339E2A06; Wed, 14 Aug 2013 21:51:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7ELpWRY061673; Wed, 14 Aug 2013 21:51:32 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7ELpWVX061672; Wed, 14 Aug 2013 21:51:32 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201308142151.r7ELpWVX061672@svn.freebsd.org> From: Michael Tuexen Date: Wed, 14 Aug 2013 21:51:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254338 - head/sys/netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 21:51:33 -0000 Author: tuexen Date: Wed Aug 14 21:51:32 2013 New Revision: 254338 URL: http://svnweb.freebsd.org/changeset/base/254338 Log: Don't send uninitialized memory (two instances of 4 bytes) in every cookie on the wire. This bug was reported in https://bugzilla.mozilla.org/show_bug.cgi?id=905080 MFC after: 3 days Modified: head/sys/netinet/sctp_output.c Modified: head/sys/netinet/sctp_output.c ============================================================================== --- head/sys/netinet/sctp_output.c Wed Aug 14 21:11:26 2013 (r254337) +++ head/sys/netinet/sctp_output.c Wed Aug 14 21:51:32 2013 (r254338) @@ -5406,6 +5406,14 @@ do_a_abort: } SCTP_BUF_LEN(m) = sizeof(struct sctp_init_chunk); + /* + * We might not overwrite the identification[] completely and on + * some platforms time_entered will contain some padding. Therefore + * zero out the cookie to avoid putting uninitialized memory on the + * wire. + */ + memset(&stc, 0, sizeof(struct sctp_state_cookie)); + /* the time I built cookie */ (void)SCTP_GETTIME_TIMEVAL(&stc.time_entered); From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 21:59:48 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D3118DC1; Wed, 14 Aug 2013 21:59:48 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BFBCD2A68; Wed, 14 Aug 2013 21:59:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7ELxmYl063418; Wed, 14 Aug 2013 21:59:48 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7ELxmhi063416; Wed, 14 Aug 2013 21:59:48 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308142159.r7ELxmhi063416@svn.freebsd.org> From: Jilles Tjoelker Date: Wed, 14 Aug 2013 21:59:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254339 - in head: bin/sh tools/regression/bin/sh/builtins X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 21:59:48 -0000 Author: jilles Date: Wed Aug 14 21:59:48 2013 New Revision: 254339 URL: http://svnweb.freebsd.org/changeset/base/254339 Log: sh: Recognize "--" as end of options in local builtin. Added: head/tools/regression/bin/sh/builtins/local4.0 (contents, props changed) Modified: head/bin/sh/var.c Modified: head/bin/sh/var.c ============================================================================== --- head/bin/sh/var.c Wed Aug 14 21:51:32 2013 (r254338) +++ head/bin/sh/var.c Wed Aug 14 21:59:48 2013 (r254339) @@ -710,6 +710,7 @@ localcmd(int argc __unused, char **argv { char *name; + nextopt(""); if (! in_function()) error("Not in a function"); while ((name = *argptr++) != NULL) { Added: head/tools/regression/bin/sh/builtins/local4.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/local4.0 Wed Aug 14 21:59:48 2013 (r254339) @@ -0,0 +1,12 @@ +# $FreeBSD$ + +f() { + local -- x + x=2 + [ "$x" = 2 ] +} +x=1 +f || exit 3 +[ "$x" = 1 ] || exit 3 +f || exit 3 +[ "$x" = 1 ] || exit 3 From owner-svn-src-head@FreeBSD.ORG Wed Aug 14 22:19:30 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 2A6E3135; Wed, 14 Aug 2013 22:19:30 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 180C12B5E; Wed, 14 Aug 2013 22:19:30 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7EMJTcG071953; Wed, 14 Aug 2013 22:19:29 GMT (envelope-from sjg@svn.freebsd.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7EMJTWT071952; Wed, 14 Aug 2013 22:19:29 GMT (envelope-from sjg@svn.freebsd.org) Message-Id: <201308142219.r7EMJTWT071952@svn.freebsd.org> From: "Simon J. Gerraty" Date: Wed, 14 Aug 2013 22:19:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254340 - head/sys/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Aug 2013 22:19:30 -0000 Author: sjg Date: Wed Aug 14 22:19:29 2013 New Revision: 254340 URL: http://svnweb.freebsd.org/changeset/base/254340 Log: Some objects - such as *_genassym.o are not hooked into SRCS OBJS or anything else, yet have a dependency on symlinks such as machine/ Reviewed by: obrien Modified: head/sys/conf/kern.post.mk Modified: head/sys/conf/kern.post.mk ============================================================================== --- head/sys/conf/kern.post.mk Wed Aug 14 21:59:48 2013 (r254339) +++ head/sys/conf/kern.post.mk Wed Aug 14 22:19:29 2013 (r254340) @@ -219,7 +219,7 @@ _ILINKS+= x86 # Ensure that the link exists without depending on it when it exists. .for _link in ${_ILINKS} .if !exists(${.OBJDIR}/${_link}) -${SRCS}: ${_link} +${SRCS} ${CLEAN:M*.o}: ${_link} .endif .endfor From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 04:08:57 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 85A841A4; Thu, 15 Aug 2013 04:08:57 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 640FC204D; Thu, 15 Aug 2013 04:08:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7F48vkG026718; Thu, 15 Aug 2013 04:08:57 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7F48tZH026709; Thu, 15 Aug 2013 04:08:55 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308150408.r7F48tZH026709@svn.freebsd.org> From: Mark Johnston Date: Thu, 15 Aug 2013 04:08:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254350 - in head/sys: kern netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 04:08:57 -0000 Author: markj Date: Thu Aug 15 04:08:55 2013 New Revision: 254350 URL: http://svnweb.freebsd.org/changeset/base/254350 Log: Specify SDT probe argument types in the probe definition itself rather than using SDT_PROBE_ARGTYPE(). This will make it easy to extend the SDT(9) API to allow probes with dynamically-translated types. There is no functional change. MFC after: 2 weeks Modified: head/sys/kern/kern_exec.c head/sys/kern/kern_exit.c head/sys/kern/kern_fork.c head/sys/kern/kern_proc.c head/sys/kern/kern_sig.c head/sys/kern/kern_timeout.c head/sys/kern/vfs_syscalls.c head/sys/netinet/sctp_dtrace_define.h Modified: head/sys/kern/kern_exec.c ============================================================================== --- head/sys/kern/kern_exec.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/kern_exec.c Thu Aug 15 04:08:55 2013 (r254350) @@ -96,12 +96,9 @@ dtrace_execexit_func_t dtrace_fasttrap_e #endif SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE(proc, kernel, , exec, exec); -SDT_PROBE_ARGTYPE(proc, kernel, , exec, 0, "char *"); -SDT_PROBE_DEFINE(proc, kernel, , exec_failure, exec-failure); -SDT_PROBE_ARGTYPE(proc, kernel, , exec_failure, 0, "int"); -SDT_PROBE_DEFINE(proc, kernel, , exec_success, exec-success); -SDT_PROBE_ARGTYPE(proc, kernel, , exec_success, 0, "char *"); +SDT_PROBE_DEFINE1(proc, kernel, , exec, exec, "char *"); +SDT_PROBE_DEFINE1(proc, kernel, , exec_failure, exec-failure, "int"); +SDT_PROBE_DEFINE1(proc, kernel, , exec_success, exec-success, "char *"); MALLOC_DEFINE(M_PARGS, "proc-args", "Process arguments"); Modified: head/sys/kern/kern_exit.c ============================================================================== --- head/sys/kern/kern_exit.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/kern_exit.c Thu Aug 15 04:08:55 2013 (r254350) @@ -94,8 +94,7 @@ dtrace_execexit_func_t dtrace_fasttrap_e #endif SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE(proc, kernel, , exit, exit); -SDT_PROBE_ARGTYPE(proc, kernel, , exit, 0, "int"); +SDT_PROBE_DEFINE1(proc, kernel, , exit, exit, "int"); /* Hook for NFS teardown procedure. */ void (*nlminfo_release_p)(struct proc *p); Modified: head/sys/kern/kern_fork.c ============================================================================== --- head/sys/kern/kern_fork.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/kern_fork.c Thu Aug 15 04:08:55 2013 (r254350) @@ -89,10 +89,8 @@ dtrace_fork_func_t dtrace_fasttrap_fork; #endif SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE(proc, kernel, , create, create); -SDT_PROBE_ARGTYPE(proc, kernel, , create, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, , create, 1, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, , create, 2, "int"); +SDT_PROBE_DEFINE3(proc, kernel, , create, create, "struct proc *", + "struct proc *", "int"); #ifndef _SYS_SYSPROTO_H_ struct fork_args { Modified: head/sys/kern/kern_proc.c ============================================================================== --- head/sys/kern/kern_proc.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/kern_proc.c Thu Aug 15 04:08:55 2013 (r254350) @@ -92,33 +92,18 @@ __FBSDID("$FreeBSD$"); #endif SDT_PROVIDER_DEFINE(proc); -SDT_PROBE_DEFINE(proc, kernel, ctor, entry, entry); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, entry, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, entry, 1, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, entry, 2, "void *"); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, entry, 3, "int"); -SDT_PROBE_DEFINE(proc, kernel, ctor, return, return); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, return, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, return, 1, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, return, 2, "void *"); -SDT_PROBE_ARGTYPE(proc, kernel, ctor, return, 3, "int"); -SDT_PROBE_DEFINE(proc, kernel, dtor, entry, entry); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, entry, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, entry, 1, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, entry, 2, "void *"); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, entry, 3, "struct thread *"); -SDT_PROBE_DEFINE(proc, kernel, dtor, return, return); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, return, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, return, 1, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, dtor, return, 2, "void *"); -SDT_PROBE_DEFINE(proc, kernel, init, entry, entry); -SDT_PROBE_ARGTYPE(proc, kernel, init, entry, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, init, entry, 1, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, init, entry, 2, "int"); -SDT_PROBE_DEFINE(proc, kernel, init, return, return); -SDT_PROBE_ARGTYPE(proc, kernel, init, return, 0, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, init, return, 1, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, init, return, 2, "int"); +SDT_PROBE_DEFINE4(proc, kernel, ctor, entry, entry, "struct proc *", "int", + "void *", "int"); +SDT_PROBE_DEFINE4(proc, kernel, ctor, return, return, "struct proc *", "int", + "void *", "int"); +SDT_PROBE_DEFINE4(proc, kernel, dtor, entry, entry, "struct proc *", "int", + "void *", "struct thread *"); +SDT_PROBE_DEFINE3(proc, kernel, dtor, return, return, "struct proc *", "int", + "void *"); +SDT_PROBE_DEFINE3(proc, kernel, init, entry, entry, "struct proc *", "int", + "int"); +SDT_PROBE_DEFINE3(proc, kernel, init, return, return, "struct proc *", "int", + "int"); MALLOC_DEFINE(M_PGRP, "pgrp", "process group header"); MALLOC_DEFINE(M_SESSION, "session", "session header"); Modified: head/sys/kern/kern_sig.c ============================================================================== --- head/sys/kern/kern_sig.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/kern_sig.c Thu Aug 15 04:08:55 2013 (r254350) @@ -93,17 +93,12 @@ __FBSDID("$FreeBSD$"); #define ONSIG 32 /* NSIG for osig* syscalls. XXX. */ SDT_PROVIDER_DECLARE(proc); -SDT_PROBE_DEFINE(proc, kernel, , signal_send, signal-send); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_send, 0, "struct thread *"); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_send, 1, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_send, 2, "int"); -SDT_PROBE_DEFINE(proc, kernel, , signal_clear, signal-clear); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_clear, 0, "int"); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_clear, 1, "ksiginfo_t *"); -SDT_PROBE_DEFINE(proc, kernel, , signal_discard, signal-discard); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_discard, 0, "struct thread *"); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_discard, 1, "struct proc *"); -SDT_PROBE_ARGTYPE(proc, kernel, , signal_discard, 2, "int"); +SDT_PROBE_DEFINE3(proc, kernel, , signal_send, signal-send, "struct thread *", + "struct proc *", "int"); +SDT_PROBE_DEFINE2(proc, kernel, , signal_clear, signal-clear, "int", + "ksiginfo_t *"); +SDT_PROBE_DEFINE3(proc, kernel, , signal_discard, signal-discard, + "struct thread *", "struct proc *", "int"); static int coredump(struct thread *); static int killpg1(struct thread *td, int sig, int pgid, int all, Modified: head/sys/kern/kern_timeout.c ============================================================================== --- head/sys/kern/kern_timeout.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/kern_timeout.c Thu Aug 15 04:08:55 2013 (r254350) @@ -69,11 +69,9 @@ DPCPU_DECLARE(sbintime_t, hardclocktime) #endif SDT_PROVIDER_DEFINE(callout_execute); -SDT_PROBE_DEFINE(callout_execute, kernel, , callout_start, callout-start); -SDT_PROBE_ARGTYPE(callout_execute, kernel, , callout_start, 0, +SDT_PROBE_DEFINE1(callout_execute, kernel, , callout_start, callout-start, "struct callout *"); -SDT_PROBE_DEFINE(callout_execute, kernel, , callout_end, callout-end); -SDT_PROBE_ARGTYPE(callout_execute, kernel, , callout_end, 0, +SDT_PROBE_DEFINE1(callout_execute, kernel, , callout_end, callout-end, "struct callout *"); #ifdef CALLOUT_PROFILING Modified: head/sys/kern/vfs_syscalls.c ============================================================================== --- head/sys/kern/vfs_syscalls.c Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/kern/vfs_syscalls.c Thu Aug 15 04:08:55 2013 (r254350) @@ -92,12 +92,8 @@ __FBSDID("$FreeBSD$"); MALLOC_DEFINE(M_FADVISE, "fadvise", "posix_fadvise(2) information"); SDT_PROVIDER_DEFINE(vfs); -SDT_PROBE_DEFINE(vfs, , stat, mode, mode); -SDT_PROBE_ARGTYPE(vfs, , stat, mode, 0, "char *"); -SDT_PROBE_ARGTYPE(vfs, , stat, mode, 1, "int"); -SDT_PROBE_DEFINE(vfs, , stat, reg, reg); -SDT_PROBE_ARGTYPE(vfs, , stat, reg, 0, "char *"); -SDT_PROBE_ARGTYPE(vfs, , stat, reg, 1, "int"); +SDT_PROBE_DEFINE2(vfs, , stat, mode, mode, "char *", "int"); +SDT_PROBE_DEFINE2(vfs, , stat, reg, reg, "char *", "int"); static int chroot_refuse_vdir_fds(struct filedesc *fdp); static int getutimes(const struct timeval *, enum uio_seg, struct timespec *); Modified: head/sys/netinet/sctp_dtrace_define.h ============================================================================== --- head/sys/netinet/sctp_dtrace_define.h Thu Aug 15 01:42:46 2013 (r254349) +++ head/sys/netinet/sctp_dtrace_define.h Thu Aug 15 04:08:55 2013 (r254350) @@ -45,189 +45,132 @@ SDT_PROVIDER_DEFINE(sctp); /* Cwnd probe - tracks changes in the congestion window on a netp */ /********************************************************/ /* Initial */ -SDT_PROBE_DEFINE(sctp, cwnd, net, init, init); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, init, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, init, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, init, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, init, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, init, 4, "int"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, init, init, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, ack, ack); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ack, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ack, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ack, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ack, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ack, 4, "int"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, ack, ack, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ACK-INCREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, rttvar, rttvar); -/* The Vtag << 32 | localport << 16 | remoteport */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttvar, 0, "uint64_t"); -/* obw | nbw */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttvar, 1, "uint64_t"); -/* bwrtt | newrtt */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttvar, 2, "uint64_t"); -/* flight */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttvar, 3, "uint64_t"); -/* (cwnd << 32) | point << 16 | retval(0/1) */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttvar, 4, "uint64_t"); - - -SDT_PROBE_DEFINE(sctp, cwnd, net, rttstep, rttstep); -/* The Vtag << 32 | localport << 16 | remoteport */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttstep, 0, "uint64_t"); -/* obw | nbw */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttstep, 1, "uint64_t"); -/* bwrtt | nrtt */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttstep, 2, "uint64_t"); -/* cwnd_saved | stepcnt << 16 | oldstep */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttstep, 3, "uint64_t"); -/* (cwnd << 32) | point << 16 | retval(0/1) */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, rttstep, 4, "uint64_t"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, rttvar, rttvar, + "uint64_t", /* The Vtag << 32 | localport << 16 | remoteport */ + "uint64_t", /* obw | nbw */ + "uint64_t", /* bwrtt | newrtt */ + "uint64_t", /* flight */ + "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ + +SDT_PROBE_DEFINE5(sctp, cwnd, net, rttstep, rttstep, + "uint64_t", /* The Vtag << 32 | localport << 16 | remoteport */ + "uint64_t", /* obw | nbw */ + "uint64_t", /* bwrtt | newrtt */ + "uint64_t", /* flight */ + "uint64_t"); /* (cwnd << 32) | point << 16 | retval(0/1) */ /* FastRetransmit-DECREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, fr, fr); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, fr, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, fr, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, fr, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, fr, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, fr, 4, "int"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, fr, fr, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* TimeOut-DECREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, to, to); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, to, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, to, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, to, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, to, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, to, 4, "int"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, to, to, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* BurstLimit-DECREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, bl, bl); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, bl, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, bl, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, bl, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, bl, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, bl, 4, "int"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, bl, bl, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* ECN-DECREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, ecn, ecn); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ecn, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ecn, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ecn, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ecn, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, ecn, 4, "int"); - +SDT_PROBE_DEFINE5(sctp, cwnd, net, ecn, ecn, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /* PacketDrop-DECREASE */ -SDT_PROBE_DEFINE(sctp, cwnd, net, pd, pd); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, pd, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, pd, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, pd, 2, "uintptr_t"); -/* The old value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, pd, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, cwnd, net, pd, 4, "int"); - - +SDT_PROBE_DEFINE5(sctp, cwnd, net, pd, pd, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The old value of the cwnd */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* Rwnd probe - tracks changes in the receiver window for an assoc */ /********************************************************/ -SDT_PROBE_DEFINE(sctp, rwnd, assoc, val, val); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, rwnd, assoc, val, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, rwnd, assoc, val, 1, "uint32_t"); -/* The up/down amount */ -SDT_PROBE_ARGTYPE(sctp, rwnd, assoc, val, 2, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, rwnd, assoc, val, 3, "int"); +SDT_PROBE_DEFINE4(sctp, rwnd, assoc, val, val, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ /********************************************************/ /* flight probe - tracks changes in the flight size on a net or assoc */ /********************************************************/ -SDT_PROBE_DEFINE(sctp, flightsize, net, val, val); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, flightsize, net, val, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, flightsize, net, val, 1, "uint32_t"); -/* The pointer to the struct sctp_nets * changing */ -SDT_PROBE_ARGTYPE(sctp, flightsize, net, val, 2, "uintptr_t"); -/* The up/down amount */ -SDT_PROBE_ARGTYPE(sctp, flightsize, net, val, 3, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, flightsize, net, val, 4, "int"); +SDT_PROBE_DEFINE5(sctp, flightsize, net, val, val, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "uintptr_t", /* The pointer to the struct sctp_nets * changing */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ + /********************************************************/ /* The total flight version */ /********************************************************/ -SDT_PROBE_DEFINE(sctp, flightsize, assoc, val, val); -/* The Vtag for this end */ -SDT_PROBE_ARGTYPE(sctp, flightsize, assoc, val, 0, "uint32_t"); -/* The port number of the local side << 16 | port number of remote - * in network byte order. - */ -SDT_PROBE_ARGTYPE(sctp, flightsize, assoc, val, 1, "uint32_t"); -/* The up/down amount */ -SDT_PROBE_ARGTYPE(sctp, flightsize, assoc, val, 2, "int"); -/* The new value of the cwnd */ -SDT_PROBE_ARGTYPE(sctp, flightsize, assoc, val, 3, "int"); +SDT_PROBE_DEFINE4(sctp, flightsize, assoc, val, val, + "uint32_t", /* The Vtag for this end */ + "uint32_t", /* + * The port number of the local side << 16 | port number + * of remote in network byte order. + */ + "int", /* The up/down amount */ + "int"); /* The new value of the cwnd */ #endif From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 04:10:15 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A4410281; Thu, 15 Aug 2013 04:10:15 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 909C5204F; Thu, 15 Aug 2013 04:10:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7F4AFI9027207; Thu, 15 Aug 2013 04:10:15 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7F4AFQf027206; Thu, 15 Aug 2013 04:10:15 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308150410.r7F4AFQf027206@svn.freebsd.org> From: Mark Johnston Date: Thu, 15 Aug 2013 04:10:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254351 - head/share/man/man9 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 04:10:15 -0000 Author: markj Date: Thu Aug 15 04:10:15 2013 New Revision: 254351 URL: http://svnweb.freebsd.org/changeset/base/254351 Log: Fix a typo. MFC after: 3 days Modified: head/share/man/man9/netisr.9 Modified: head/share/man/man9/netisr.9 ============================================================================== --- head/share/man/man9/netisr.9 Thu Aug 15 04:08:55 2013 (r254350) +++ head/share/man/man9/netisr.9 Thu Aug 15 04:10:15 2013 (r254351) @@ -83,7 +83,7 @@ and .Nm supports multi-processor execution of handlers, and relies on a combination of source ordering and protocol-specific ordering and work-placement -policies to decide how do distribute work across one or more worker +policies to decide how to distribute work across one or more worker threads. Registering protocols will declare one of three policies: .Bl -tag -width NETISR_POLICY_SOURCE From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 07:54:34 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 983C5344; Thu, 15 Aug 2013 07:54:34 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 759692D7E; Thu, 15 Aug 2013 07:54:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7F7sYV0012972; Thu, 15 Aug 2013 07:54:34 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7F7sVbF012950; Thu, 15 Aug 2013 07:54:31 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201308150754.r7F7sVbF012950@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 15 Aug 2013 07:54:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254356 - in head/sys: compat/freebsd32 kern ofed/include/linux opencrypto sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 07:54:34 -0000 Author: glebius Date: Thu Aug 15 07:54:31 2013 New Revision: 254356 URL: http://svnweb.freebsd.org/changeset/base/254356 Log: Make sendfile() a method in the struct fileops. Currently only vnode backed file descriptors have this method implemented. Reviewed by: kib Sponsored by: Nginx, Inc. Sponsored by: Netflix Modified: head/sys/compat/freebsd32/freebsd32_misc.c head/sys/kern/kern_descrip.c head/sys/kern/kern_event.c head/sys/kern/sys_pipe.c head/sys/kern/sys_socket.c head/sys/kern/tty_pts.c head/sys/kern/uipc_mqueue.c head/sys/kern/uipc_sem.c head/sys/kern/uipc_shm.c head/sys/kern/uipc_syscalls.c head/sys/kern/vfs_vnops.c head/sys/ofed/include/linux/linux_compat.c head/sys/opencrypto/cryptodev.c head/sys/sys/file.h head/sys/sys/socket.h Modified: head/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_misc.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/compat/freebsd32/freebsd32_misc.c Thu Aug 15 07:54:31 2013 (r254356) @@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -1653,22 +1654,19 @@ static int freebsd32_do_sendfile(struct thread *td, struct freebsd32_sendfile_args *uap, int compat) { - struct sendfile_args ap; struct sf_hdtr32 hdtr32; struct sf_hdtr hdtr; struct uio *hdr_uio, *trl_uio; struct iovec32 *iov32; + struct file *fp; + off_t offset; int error; - hdr_uio = trl_uio = NULL; + offset = PAIR32TO64(off_t, uap->offset); + if (offset < 0) + return (EINVAL); - ap.fd = uap->fd; - ap.s = uap->s; - ap.offset = PAIR32TO64(off_t,uap->offset); - ap.nbytes = uap->nbytes; - ap.hdtr = (struct sf_hdtr *)uap->hdtr; /* XXX not used */ - ap.sbytes = uap->sbytes; - ap.flags = uap->flags; + hdr_uio = trl_uio = NULL; if (uap->hdtr != NULL) { error = copyin(uap->hdtr, &hdtr32, sizeof(hdtr32)); @@ -1695,7 +1693,15 @@ freebsd32_do_sendfile(struct thread *td, } } - error = kern_sendfile(td, &ap, hdr_uio, trl_uio, compat); + AUDIT_ARG_FD(uap->fd); + + if ((error = fget_read(td, uap->fd, CAP_PREAD, &fp)) != 0) + goto out; + + error = fo_sendfile(fp, uap->s, hdr_uio, trl_uio, offset, + uap->nbytes, uap->sbytes, uap->flags, compat ? SFK_COMPAT : 0, td); + fdrop(fp, td); + out: if (hdr_uio) free(hdr_uio, M_IOV); Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/kern_descrip.c Thu Aug 15 07:54:31 2013 (r254356) @@ -3887,6 +3887,15 @@ badfo_chown(struct file *fp, uid_t uid, return (EBADF); } +static int +badfo_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, + struct uio *trl_uio, off_t offset, size_t nbytes, off_t *sent, int flags, + int kflags, struct thread *td) +{ + + return (EBADF); +} + struct fileops badfileops = { .fo_read = badfo_readwrite, .fo_write = badfo_readwrite, @@ -3898,6 +3907,7 @@ struct fileops badfileops = { .fo_close = badfo_close, .fo_chmod = badfo_chmod, .fo_chown = badfo_chown, + .fo_sendfile = badfo_sendfile, }; int @@ -3916,6 +3926,15 @@ invfo_chown(struct file *fp, uid_t uid, return (EINVAL); } +int +invfo_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, + struct uio *trl_uio, off_t offset, size_t nbytes, off_t *sent, int flags, + int kflags, struct thread *td) +{ + + return (EINVAL); +} + /*-------------------------------------------------------------------*/ /* Modified: head/sys/kern/kern_event.c ============================================================================== --- head/sys/kern/kern_event.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/kern_event.c Thu Aug 15 07:54:31 2013 (r254356) @@ -127,6 +127,7 @@ static struct fileops kqueueops = { .fo_close = kqueue_close, .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, }; static int knote_attach(struct knote *kn, struct kqueue *kq); Modified: head/sys/kern/sys_pipe.c ============================================================================== --- head/sys/kern/sys_pipe.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/sys_pipe.c Thu Aug 15 07:54:31 2013 (r254356) @@ -164,6 +164,7 @@ struct fileops pipeops = { .fo_close = pipe_close, .fo_chmod = pipe_chmod, .fo_chown = pipe_chown, + .fo_sendfile = invfo_sendfile, .fo_flags = DFLAG_PASSABLE }; Modified: head/sys/kern/sys_socket.c ============================================================================== --- head/sys/kern/sys_socket.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/sys_socket.c Thu Aug 15 07:54:31 2013 (r254356) @@ -66,6 +66,7 @@ struct fileops socketops = { .fo_close = soo_close, .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, .fo_flags = DFLAG_PASSABLE }; Modified: head/sys/kern/tty_pts.c ============================================================================== --- head/sys/kern/tty_pts.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/tty_pts.c Thu Aug 15 07:54:31 2013 (r254356) @@ -599,6 +599,7 @@ static struct fileops ptsdev_ops = { .fo_close = ptsdev_close, .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, .fo_flags = DFLAG_PASSABLE, }; Modified: head/sys/kern/uipc_mqueue.c ============================================================================== --- head/sys/kern/uipc_mqueue.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/uipc_mqueue.c Thu Aug 15 07:54:31 2013 (r254356) @@ -2597,7 +2597,8 @@ static struct fileops mqueueops = { .fo_stat = mqf_stat, .fo_chmod = mqf_chmod, .fo_chown = mqf_chown, - .fo_close = mqf_close + .fo_close = mqf_close, + .fo_sendfile = invfo_sendfile, }; static struct vop_vector mqfs_vnodeops = { Modified: head/sys/kern/uipc_sem.c ============================================================================== --- head/sys/kern/uipc_sem.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/uipc_sem.c Thu Aug 15 07:54:31 2013 (r254356) @@ -149,6 +149,7 @@ static struct fileops ksem_ops = { .fo_close = ksem_closef, .fo_chmod = ksem_chmod, .fo_chown = ksem_chown, + .fo_sendfile = invfo_sendfile, .fo_flags = DFLAG_PASSABLE }; Modified: head/sys/kern/uipc_shm.c ============================================================================== --- head/sys/kern/uipc_shm.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/uipc_shm.c Thu Aug 15 07:54:31 2013 (r254356) @@ -132,6 +132,7 @@ static struct fileops shm_ops = { .fo_close = shm_close, .fo_chmod = shm_chmod, .fo_chown = shm_chown, + .fo_sendfile = invfo_sendfile, .fo_flags = DFLAG_PASSABLE }; Modified: head/sys/kern/uipc_syscalls.c ============================================================================== --- head/sys/kern/uipc_syscalls.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/uipc_syscalls.c Thu Aug 15 07:54:31 2013 (r254356) @@ -157,6 +157,9 @@ sfstat_sysctl(SYSCTL_HANDLER_ARGS) } SYSCTL_PROC(_kern_ipc, OID_AUTO, sfstat, CTLTYPE_OPAQUE | CTLFLAG_RW, NULL, 0, sfstat_sysctl, "I", "sendfile statistics"); + +fo_sendfile_t vn_sendfile; + /* * Convert a user file descriptor to a kernel file entry and check if required * capability rights are present. @@ -1904,8 +1907,12 @@ do_sendfile(struct thread *td, struct se { struct sf_hdtr hdtr; struct uio *hdr_uio, *trl_uio; + struct file *fp; int error; + if (uap->offset < 0) + return (EINVAL); + hdr_uio = trl_uio = NULL; if (uap->hdtr != NULL) { @@ -1925,7 +1932,19 @@ do_sendfile(struct thread *td, struct se } } - error = kern_sendfile(td, uap, hdr_uio, trl_uio, compat); + AUDIT_ARG_FD(uap->fd); + + /* + * sendfile(2) can start at any offset within a file so we require + * CAP_READ+CAP_SEEK = CAP_PREAD. + */ + if ((error = fget_read(td, uap->fd, CAP_PREAD, &fp)) != 0) + goto out; + + error = fo_sendfile(fp, uap->s, hdr_uio, trl_uio, uap->offset, + uap->nbytes, uap->sbytes, uap->flags, compat ? SFK_COMPAT : 0, td); + fdrop(fp, td); + out: if (hdr_uio) free(hdr_uio, M_IOV); @@ -1953,11 +1972,12 @@ freebsd4_sendfile(struct thread *td, str #endif /* COMPAT_FREEBSD4 */ int -kern_sendfile(struct thread *td, struct sendfile_args *uap, - struct uio *hdr_uio, struct uio *trl_uio, int compat) +vn_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, + struct uio *trl_uio, off_t offset, size_t nbytes, off_t *sent, int flags, + int kflags, struct thread *td) { + struct vnode *vp = fp->f_vnode; struct file *sock_fp; - struct vnode *vp; struct vm_object *obj = NULL; struct socket *so = NULL; struct mbuf *m = NULL; @@ -1969,23 +1989,10 @@ kern_sendfile(struct thread *td, struct int bsize; struct sendfile_sync *sfs = NULL; - /* - * The file descriptor must be a regular file and have a - * backing VM object. - * File offset must be positive. If it goes beyond EOF - * we send only the header/trailer and no payload data. - */ - AUDIT_ARG_FD(uap->fd); - /* - * sendfile(2) can start at any offset within a file so we require - * CAP_READ+CAP_SEEK = CAP_PREAD. - */ - if ((error = fgetvp_read(td, uap->fd, CAP_PREAD, &vp)) != 0) - goto out; vn_lock(vp, LK_SHARED | LK_RETRY); if (vp->v_type == VREG) { bsize = vp->v_mount->mnt_stat.f_iosize; - if (uap->nbytes == 0) { + if (nbytes == 0) { error = VOP_GETATTR(vp, &va, td->td_ucred); if (error != 0) { VOP_UNLOCK(vp, 0); @@ -1994,7 +2001,7 @@ kern_sendfile(struct thread *td, struct } rem = va.va_size; } else - rem = uap->nbytes; + rem = nbytes; obj = vp->v_object; if (obj != NULL) { /* @@ -2019,16 +2026,12 @@ kern_sendfile(struct thread *td, struct error = EINVAL; goto out; } - if (uap->offset < 0) { - error = EINVAL; - goto out; - } /* * The socket must be a stream socket and connected. * Remember if it a blocking or non-blocking socket. */ - if ((error = getsock_cap(td->td_proc->p_fd, uap->s, CAP_SEND, + if ((error = getsock_cap(td->td_proc->p_fd, sockfd, CAP_SEND, &sock_fp, NULL)) != 0) goto out; so = sock_fp->f_data; @@ -2045,10 +2048,10 @@ kern_sendfile(struct thread *td, struct * caller to retry later. * XXX: Experimental. */ - if (uap->flags & SF_MNOWAIT) + if (flags & SF_MNOWAIT) mnw = 1; - if (uap->flags & SF_SYNC) { + if (flags & SF_SYNC) { sfs = malloc(sizeof *sfs, M_TEMP, M_WAITOK | M_ZERO); mtx_init(&sfs->mtx, "sendfile", NULL, MTX_DEF); cv_init(&sfs->cv, "sendfile"); @@ -2070,11 +2073,11 @@ kern_sendfile(struct thread *td, struct * the header. If compat is specified subtract the * header size from nbytes. */ - if (compat) { - if (uap->nbytes > hdr_uio->uio_resid) - uap->nbytes -= hdr_uio->uio_resid; + if (kflags & SFK_COMPAT) { + if (nbytes > hdr_uio->uio_resid) + nbytes -= hdr_uio->uio_resid; else - uap->nbytes = 0; + nbytes = 0; } m = m_uiotombuf(hdr_uio, (mnw ? M_NOWAIT : M_WAITOK), 0, 0, 0); @@ -2105,14 +2108,14 @@ kern_sendfile(struct thread *td, struct * The outer loop checks the state and available space of the socket * and takes care of the overall progress. */ - for (off = uap->offset; ; ) { + for (off = offset; ; ) { struct mbuf *mtail; int loopbytes; int space; int done; - if ((uap->nbytes != 0 && uap->nbytes == fsbytes) || - (uap->nbytes == 0 && va.va_size == fsbytes)) + if ((nbytes != 0 && nbytes == fsbytes) || + (nbytes == 0 && va.va_size == fsbytes)) break; mtail = NULL; @@ -2210,11 +2213,11 @@ retry_space: * or the passed in nbytes. */ pgoff = (vm_offset_t)(off & PAGE_MASK); - if (uap->nbytes) - rem = (uap->nbytes - fsbytes - loopbytes); + if (nbytes) + rem = (nbytes - fsbytes - loopbytes); else rem = va.va_size - - uap->offset - fsbytes - loopbytes; + offset - fsbytes - loopbytes; xfsize = omin(PAGE_SIZE - pgoff, rem); xfsize = omin(space - loopbytes, xfsize); if (xfsize <= 0) { @@ -2242,7 +2245,7 @@ retry_space: VM_OBJECT_WUNLOCK(obj); else if (m != NULL) error = EAGAIN; /* send what we already got */ - else if (uap->flags & SF_NODISKIO) + else if (flags & SF_NODISKIO) error = EBUSY; else { ssize_t resid; @@ -2299,7 +2302,7 @@ retry_space: vm_page_lock(pg); vm_page_unwire(pg, 0); KASSERT(pg->object != NULL, - ("kern_sendfile: object disappeared")); + ("%s: object disappeared", __func__)); vm_page_unlock(pg); if (m == NULL) error = (mnw ? EAGAIN : EINTR); @@ -2399,7 +2402,7 @@ retry_space: */ if (trl_uio != NULL) { sbunlock(&so->so_snd); - error = kern_writev(td, uap->s, trl_uio); + error = kern_writev(td, sockfd, trl_uio); if (error == 0) sbytes += td->td_retval[0]; goto out; @@ -2415,13 +2418,11 @@ out: if (error == 0) { td->td_retval[0] = 0; } - if (uap->sbytes != NULL) { - copyout(&sbytes, uap->sbytes, sizeof(off_t)); + if (sent != NULL) { + copyout(&sbytes, sent, sizeof(off_t)); } if (obj != NULL) vm_object_deallocate(obj); - if (vp != NULL) - vrele(vp); if (so) fdrop(sock_fp, td); if (m) Modified: head/sys/kern/vfs_vnops.c ============================================================================== --- head/sys/kern/vfs_vnops.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/kern/vfs_vnops.c Thu Aug 15 07:54:31 2013 (r254356) @@ -88,6 +88,7 @@ static fo_poll_t vn_poll; static fo_kqfilter_t vn_kqfilter; static fo_stat_t vn_statfile; static fo_close_t vn_closefile; +extern fo_sendfile_t vn_sendfile; struct fileops vnops = { .fo_read = vn_io_fault, @@ -100,6 +101,7 @@ struct fileops vnops = { .fo_close = vn_closefile, .fo_chmod = vn_chmod, .fo_chown = vn_chown, + .fo_sendfile = vn_sendfile, .fo_flags = DFLAG_PASSABLE | DFLAG_SEEKABLE }; Modified: head/sys/ofed/include/linux/linux_compat.c ============================================================================== --- head/sys/ofed/include/linux/linux_compat.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/ofed/include/linux/linux_compat.c Thu Aug 15 07:54:31 2013 (r254356) @@ -565,6 +565,7 @@ struct fileops linuxfileops = { .fo_ioctl = linux_file_ioctl, .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, }; /* Modified: head/sys/opencrypto/cryptodev.c ============================================================================== --- head/sys/opencrypto/cryptodev.c Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/opencrypto/cryptodev.c Thu Aug 15 07:54:31 2013 (r254356) @@ -304,6 +304,7 @@ static struct fileops cryptofops = { .fo_close = cryptof_close, .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, }; static struct csession *csefind(struct fcrypt *, u_int); Modified: head/sys/sys/file.h ============================================================================== --- head/sys/sys/file.h Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/sys/file.h Thu Aug 15 07:54:31 2013 (r254356) @@ -105,6 +105,9 @@ typedef int fo_chmod_t(struct file *fp, struct ucred *active_cred, struct thread *td); typedef int fo_chown_t(struct file *fp, uid_t uid, gid_t gid, struct ucred *active_cred, struct thread *td); +typedef int fo_sendfile_t(struct file *fp, int sockfd, struct uio *hdr_uio, + struct uio *trl_uio, off_t offset, size_t nbytes, + off_t *sent, int flags, int kflags, struct thread *td); typedef int fo_flags_t; struct fileops { @@ -118,6 +121,7 @@ struct fileops { fo_close_t *fo_close; fo_chmod_t *fo_chmod; fo_chown_t *fo_chown; + fo_sendfile_t *fo_sendfile; fo_flags_t fo_flags; /* DFLAG_* below */ }; @@ -235,6 +239,7 @@ fo_close_t soo_close; fo_chmod_t invfo_chmod; fo_chown_t invfo_chown; +fo_sendfile_t invfo_sendfile; void finit(struct file *, u_int, short, void *, struct fileops *); int fgetvp(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp); @@ -273,6 +278,7 @@ static __inline fo_stat_t fo_stat; static __inline fo_close_t fo_close; static __inline fo_chmod_t fo_chmod; static __inline fo_chown_t fo_chown; +static __inline fo_sendfile_t fo_sendfile; static __inline int fo_read(struct file *fp, struct uio *uio, struct ucred *active_cred, @@ -352,6 +358,16 @@ fo_chown(struct file *fp, uid_t uid, gid return ((*fp->f_ops->fo_chown)(fp, uid, gid, active_cred, td)); } +static __inline int +fo_sendfile(struct file *fp, int sockfd, struct uio *hdr_uio, + struct uio *trl_uio, off_t offset, size_t nbytes, off_t *sent, int flags, + int kflags, struct thread *td) +{ + + return ((*fp->f_ops->fo_sendfile)(fp, sockfd, hdr_uio, trl_uio, offset, + nbytes, sent, flags, kflags, td)); +} + #endif /* _KERNEL */ #endif /* !SYS_FILE_H */ Modified: head/sys/sys/socket.h ============================================================================== --- head/sys/sys/socket.h Thu Aug 15 05:14:20 2013 (r254355) +++ head/sys/sys/socket.h Thu Aug 15 07:54:31 2013 (r254356) @@ -628,7 +628,11 @@ struct sf_hdtr { #define SF_NODISKIO 0x00000001 #define SF_MNOWAIT 0x00000002 #define SF_SYNC 0x00000004 -#endif + +#ifdef _KERNEL +#define SFK_COMPAT 0x00000001 +#endif /* _KERNEL */ +#endif /* __BSD_VISIBLE */ #ifndef _KERNEL From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 08:21:01 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 07C7D7B6; Thu, 15 Aug 2013 08:21:01 +0000 (UTC) (envelope-from jlh@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E93502ECF; Thu, 15 Aug 2013 08:21:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7F8L0rN023940; Thu, 15 Aug 2013 08:21:00 GMT (envelope-from jlh@svn.freebsd.org) Received: (from jlh@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7F8L03R023939; Thu, 15 Aug 2013 08:21:00 GMT (envelope-from jlh@svn.freebsd.org) Message-Id: <201308150821.r7F8L03R023939@svn.freebsd.org> From: Jeremie Le Hen Date: Thu, 15 Aug 2013 08:21:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254358 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 08:21:01 -0000 Author: jlh Date: Thu Aug 15 08:21:00 2013 New Revision: 254358 URL: http://svnweb.freebsd.org/changeset/base/254358 Log: Belatedly bump __FreeBSD_version for libc being an ld script. This should have been done in r251668, on June 12, 2013. This will have no practical consequences, besides having -lssp_nonshared appearing twice on the command-line for systems built in this time frame. Modified: head/sys/sys/param.h Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Thu Aug 15 08:12:16 2013 (r254357) +++ head/sys/sys/param.h Thu Aug 15 08:21:00 2013 (r254358) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1000043 /* Master, propagated to newvers */ +#define __FreeBSD_version 1000044 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 08:25:08 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 50135A79; Thu, 15 Aug 2013 08:25:08 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CB5C52F24; Thu, 15 Aug 2013 08:25:07 +0000 (UTC) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.7/8.14.7) with ESMTP id r7F8P5Qm004973; Thu, 15 Aug 2013 12:25:05 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id r7F8P5vN004972; Thu, 15 Aug 2013 12:25:05 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Thu, 15 Aug 2013 12:25:05 +0400 From: Gleb Smirnoff To: Jeremie Le Hen Subject: Re: svn commit: r254358 - head/sys/sys Message-ID: <20130815082505.GD4574@FreeBSD.org> References: <201308150821.r7F8L03R023939@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201308150821.r7F8L03R023939@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 08:25:08 -0000 On Thu, Aug 15, 2013 at 08:21:00AM +0000, Jeremie Le Hen wrote: J> Author: jlh J> Date: Thu Aug 15 08:21:00 2013 J> New Revision: 254358 J> URL: http://svnweb.freebsd.org/changeset/base/254358 J> J> Log: J> Belatedly bump __FreeBSD_version for libc being an ld script. J> This should have been done in r251668, on June 12, 2013. J> This will have no practical consequences, besides having -lssp_nonshared J> appearing twice on the command-line for systems built in this time frame. It has been bumped several times since June 12. You could use __FreeBSD_version 1000036 from r253049, which happened on July 7. -- Totus tuus, Glebius. From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 08:54:06 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C0BD8433; Thu, 15 Aug 2013 08:54:06 +0000 (UTC) (envelope-from jlh@FreeBSD.org) Received: from caravan.chchile.org (caravan.chchile.org [178.32.125.136]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 870B6209D; Thu, 15 Aug 2013 08:54:06 +0000 (UTC) Received: by caravan.chchile.org (Postfix, from userid 1000) id A2C41B7D21; Thu, 15 Aug 2013 08:54:04 +0000 (UTC) Date: Thu, 15 Aug 2013 10:54:04 +0200 From: Jeremie Le Hen To: Gleb Smirnoff Subject: Re: svn commit: r254358 - head/sys/sys Message-ID: <20130815085404.GD76693@caravan.chchile.org> Mail-Followup-To: Gleb Smirnoff , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org References: <201308150821.r7F8L03R023939@svn.freebsd.org> <20130815082505.GD4574@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130815082505.GD4574@FreeBSD.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: Jeremie Le Hen , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 08:54:06 -0000 On Thu, Aug 15, 2013 at 12:25:05PM +0400, Gleb Smirnoff wrote: > On Thu, Aug 15, 2013 at 08:21:00AM +0000, Jeremie Le Hen wrote: > J> Author: jlh > J> Date: Thu Aug 15 08:21:00 2013 > J> New Revision: 254358 > J> URL: http://svnweb.freebsd.org/changeset/base/254358 > J> > J> Log: > J> Belatedly bump __FreeBSD_version for libc being an ld script. > J> This should have been done in r251668, on June 12, 2013. > J> This will have no practical consequences, besides having -lssp_nonshared > J> appearing twice on the command-line for systems built in this time frame. > > It has been bumped several times since June 12. > > You could use __FreeBSD_version 1000036 from r253049, which > happened on July 7. That's right, but I didn't know if it was accepted to overload a version. Should I back this out? -- Jeremie Le Hen Scientists say the world is made up of Protons, Neutrons and Electrons. They forgot to mention Morons. From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 10:18:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7BEE2186; Thu, 15 Aug 2013 10:18:27 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from cell.glebius.int.ru (glebius.int.ru [81.19.69.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DE5EC24E4; Thu, 15 Aug 2013 10:18:25 +0000 (UTC) Received: from cell.glebius.int.ru (localhost [127.0.0.1]) by cell.glebius.int.ru (8.14.7/8.14.7) with ESMTP id r7FAINte005749; Thu, 15 Aug 2013 14:18:23 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id r7FAINdR005748; Thu, 15 Aug 2013 14:18:23 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Thu, 15 Aug 2013 14:18:23 +0400 From: Gleb Smirnoff To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r254358 - head/sys/sys Message-ID: <20130815101823.GH4574@FreeBSD.org> References: <201308150821.r7F8L03R023939@svn.freebsd.org> <20130815082505.GD4574@FreeBSD.org> <20130815085404.GD76693@caravan.chchile.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130815085404.GD76693@caravan.chchile.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 10:18:27 -0000 On Thu, Aug 15, 2013 at 10:54:04AM +0200, Jeremie Le Hen wrote: J> On Thu, Aug 15, 2013 at 12:25:05PM +0400, Gleb Smirnoff wrote: J> > On Thu, Aug 15, 2013 at 08:21:00AM +0000, Jeremie Le Hen wrote: J> > J> Author: jlh J> > J> Date: Thu Aug 15 08:21:00 2013 J> > J> New Revision: 254358 J> > J> URL: http://svnweb.freebsd.org/changeset/base/254358 J> > J> J> > J> Log: J> > J> Belatedly bump __FreeBSD_version for libc being an ld script. J> > J> This should have been done in r251668, on June 12, 2013. J> > J> This will have no practical consequences, besides having -lssp_nonshared J> > J> appearing twice on the command-line for systems built in this time frame. J> > J> > It has been bumped several times since June 12. J> > J> > You could use __FreeBSD_version 1000036 from r253049, which J> > happened on July 7. J> J> That's right, but I didn't know if it was accepted to overload a J> version. Should I back this out? IMO, version should never go backwards. So please do not back out. But the code that depends on libc being an ld script should better use 1000036 as __FreeBSD_version, making time frame of non-bumped version much smaller. -- Totus tuus, Glebius. From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 11:01:26 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 764089E5; Thu, 15 Aug 2013 11:01:26 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6302426F4; Thu, 15 Aug 2013 11:01:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FB1QIV083790; Thu, 15 Aug 2013 11:01:26 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FB1QjP083789; Thu, 15 Aug 2013 11:01:26 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201308151101.r7FB1QjP083789@svn.freebsd.org> From: Attilio Rao Date: Thu, 15 Aug 2013 11:01:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254362 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 11:01:26 -0000 Author: attilio Date: Thu Aug 15 11:01:25 2013 New Revision: 254362 URL: http://svnweb.freebsd.org/changeset/base/254362 Log: On the recovery path for vm_page_alloc(), if a page had been requested wired, unwind back the wiring bits otherwise we can end up freeing a page that is considered wired. Sponsored by: EMC / Isilon storage division Reported by: alc Modified: head/sys/vm/vm_page.c Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Thu Aug 15 10:38:10 2013 (r254361) +++ head/sys/vm/vm_page.c Thu Aug 15 11:01:25 2013 (r254362) @@ -1611,6 +1611,10 @@ vm_page_alloc(vm_object_t object, vm_pin if (vp != NULL) vdrop(vp); pagedaemon_wakeup(); + if (req & VM_ALLOC_WIRED) { + atomic_subtract_int(&cnt.v_wire_count, 1); + m->wire_count = 0; + } m->object = NULL; vm_page_free(m); return (NULL); @@ -1806,8 +1810,13 @@ retry: &deferred_vdrop_list); if (vm_paging_needed()) pagedaemon_wakeup(); + if ((req & VM_ALLOC_WIRED) != 0) + atomic_subtract_int(&cnt.v_wire_count, + npages); for (m_tmp = m, m = m_ret; m < &m_ret[npages]; m++) { + if ((req & VM_ALLOC_WIRED) != 0) + m->wire_count = 0; if (m >= m_tmp) m->object = NULL; vm_page_free(m); From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 16:03:09 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B983FE5B; Thu, 15 Aug 2013 16:03:09 +0000 (UTC) (envelope-from nemysis@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A5B91295F; Thu, 15 Aug 2013 16:03:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FG399E097885; Thu, 15 Aug 2013 16:03:09 GMT (envelope-from nemysis@svn.freebsd.org) Received: (from nemysis@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FG392h097884; Thu, 15 Aug 2013 16:03:09 GMT (envelope-from nemysis@svn.freebsd.org) Message-Id: <201308151603.r7FG392h097884@svn.freebsd.org> From: Rusmir Dusko Date: Thu, 15 Aug 2013 16:03:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254371 - head/share/misc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 16:03:09 -0000 Author: nemysis (ports committer) Date: Thu Aug 15 16:03:09 2013 New Revision: 254371 URL: http://svnweb.freebsd.org/changeset/base/254371 Log: - Add myself in committers-ports.dot Approved by: miwi/wxs/wg (mentors) Modified: head/share/misc/committers-ports.dot Modified: head/share/misc/committers-ports.dot ============================================================================== --- head/share/misc/committers-ports.dot Thu Aug 15 15:34:26 2013 (r254370) +++ head/share/misc/committers-ports.dot Thu Aug 15 16:03:09 2013 (r254371) @@ -155,6 +155,7 @@ miwi [label="Martin Wilke\nmiwi@FreeBSD. mm [label="Martin Matuska\nmm@FreeBSD.org\n2007/04/04"] mnag [label="Marcus Alves Grando\nmnag@FreeBSD.org\n2005/09/15"] mva [label="Marcus von Appen\nmva@FreeBSD.org\n2009/02/16"] +nemysis [label="Rusmir Dusko\nnemysis@FreeBSD.org\n2013/07/31"] nemoliu [label="Tong Liu\nnemoliu@FreeBSD.org\n2007/04/25"] netchild [label="Alexander Leidinger\nnetchild@FreeBSD.org\n2002/03/19"] nobutaka [label="Nobutaka Mantani\nnobutaka@FreeBSD.org\n2001/11/02"] @@ -421,6 +422,7 @@ miwi -> lme miwi -> makc miwi -> mandree miwi -> mva +miwi -> nemysis miwi -> nox miwi -> olivierd miwi -> pawel @@ -456,6 +458,8 @@ pav -> josef pav -> kwm pav -> mnag +pawel -> nemysis + pgj -> ashish pgj -> jacula @@ -525,9 +529,12 @@ wen -> cs wen -> culot wen -> pawel +wg -> nemysis + will -> lioux wxs -> jsa +wxs -> nemysis wxs -> sahil wxs -> skreuzer wxs -> swills From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 16:41:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C6FBA87B; Thu, 15 Aug 2013 16:41:27 +0000 (UTC) (envelope-from ken@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B01802BD2; Thu, 15 Aug 2013 16:41:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FGfRAI012817; Thu, 15 Aug 2013 16:41:27 GMT (envelope-from ken@svn.freebsd.org) Received: (from ken@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FGfRSc012816; Thu, 15 Aug 2013 16:41:27 GMT (envelope-from ken@svn.freebsd.org) Message-Id: <201308151641.r7FGfRSc012816@svn.freebsd.org> From: "Kenneth D. Merry" Date: Thu, 15 Aug 2013 16:41:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254372 - head/sys/dev/isp X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 16:41:27 -0000 Author: ken Date: Thu Aug 15 16:41:27 2013 New Revision: 254372 URL: http://svnweb.freebsd.org/changeset/base/254372 Log: Export the maxio field in the CAM XPT_PATH_INQ CCB in the isp(4) driver. This tells consumers up the stack the maximum I/O size that the controller can handle. The I/O size is bounded by the number of scatter/gather segments the controller can handle and the page size. For an amd64 system, it works out to around 5MB. Reviewed by: mjacob MFC after: 3 days Sponsored by: Spectra Logic Modified: head/sys/dev/isp/isp_freebsd.c Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Thu Aug 15 16:03:09 2013 (r254371) +++ head/sys/dev/isp/isp_freebsd.c Thu Aug 15 16:41:27 2013 (r254372) @@ -5445,6 +5445,11 @@ isp_action(struct cam_sim *sim, union cc cpi->max_target = ISP_MAX_TARGETS(isp) - 1; cpi->max_lun = ISP_MAX_LUNS(isp) - 1; cpi->bus_id = cam_sim_bus(sim); + if (isp->isp_osinfo.sixtyfourbit) + cpi->maxio = (ISP_NSEG64_MAX - 1) * PAGE_SIZE; + else + cpi->maxio = (ISP_NSEG_MAX - 1) * PAGE_SIZE; + bus = cam_sim_bus(xpt_path_sim(cpi->ccb_h.path)); if (IS_FC(isp)) { fcparam *fcp = FCPARAM(isp, bus); From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 17:21:07 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B54ACDE6; Thu, 15 Aug 2013 17:21:07 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A21622DA5; Thu, 15 Aug 2013 17:21:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FHL7Fe028019; Thu, 15 Aug 2013 17:21:07 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FHL7S5028018; Thu, 15 Aug 2013 17:21:07 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201308151721.r7FHL7S5028018@svn.freebsd.org> From: Brooks Davis Date: Thu, 15 Aug 2013 17:21:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254373 - head/sys/x86/isa X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 17:21:07 -0000 Author: brooks Date: Thu Aug 15 17:21:06 2013 New Revision: 254373 URL: http://svnweb.freebsd.org/changeset/base/254373 Log: Call set_i8254_freq with MODE_STOP (0) rather than a magic number of 0. Modified: head/sys/x86/isa/clock.c Modified: head/sys/x86/isa/clock.c ============================================================================== --- head/sys/x86/isa/clock.c Thu Aug 15 16:41:27 2013 (r254372) +++ head/sys/x86/isa/clock.c Thu Aug 15 17:21:06 2013 (r254373) @@ -469,7 +469,7 @@ i8254_restore(void) if (attimer_sc != NULL) set_i8254_freq(attimer_sc->mode, attimer_sc->period); else - set_i8254_freq(0, 0); + set_i8254_freq(MODE_STOP, 0); } #ifndef __amd64__ @@ -504,7 +504,7 @@ i8254_init(void) if (pc98_machine_type & M_8M) i8254_freq = 1996800L; /* 1.9968 MHz */ #endif - set_i8254_freq(0, 0); + set_i8254_freq(MODE_STOP, 0); } void @@ -539,7 +539,7 @@ sysctl_machdep_i8254_freq(SYSCTL_HANDLER set_i8254_freq(attimer_sc->mode, attimer_sc->period); attimer_sc->tc.tc_frequency = freq; } else { - set_i8254_freq(0, 0); + set_i8254_freq(MODE_STOP, 0); } } return (error); @@ -715,7 +715,7 @@ attimer_attach(device_t dev) i8254_pending = i8254_intsrc->is_pic->pic_source_pending; resource_int_value(device_get_name(dev), device_get_unit(dev), "timecounter", &i8254_timecounter); - set_i8254_freq(0, 0); + set_i8254_freq(MODE_STOP, 0); if (i8254_timecounter) { sc->tc.tc_get_timecount = i8254_get_timecount; sc->tc.tc_counter_mask = 0xffff; From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 17:44:45 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 83CA360E; Thu, 15 Aug 2013 17:44:45 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 711822ED8; Thu, 15 Aug 2013 17:44:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FHiini036285; Thu, 15 Aug 2013 17:44:44 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FHiirt036284; Thu, 15 Aug 2013 17:44:44 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201308151744.r7FHiirt036284@svn.freebsd.org> From: Brooks Davis Date: Thu, 15 Aug 2013 17:44:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254374 - head/sys/amd64/amd64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 17:44:45 -0000 Author: brooks Date: Thu Aug 15 17:44:44 2013 New Revision: 254374 URL: http://svnweb.freebsd.org/changeset/base/254374 Log: Use an ANSI C definition of initializecpucache() to match the declaration and the rest of the file. Modified: head/sys/amd64/amd64/initcpu.c Modified: head/sys/amd64/amd64/initcpu.c ============================================================================== --- head/sys/amd64/amd64/initcpu.c Thu Aug 15 17:21:06 2013 (r254373) +++ head/sys/amd64/amd64/initcpu.c Thu Aug 15 17:44:44 2013 (r254374) @@ -192,7 +192,7 @@ initializecpu(void) } void -initializecpucache() +initializecpucache(void) { /* From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 20:00:33 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 364EB759; Thu, 15 Aug 2013 20:00:33 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 148A8265B; Thu, 15 Aug 2013 20:00:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FK0W1D088017; Thu, 15 Aug 2013 20:00:32 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FK0WQ6088016; Thu, 15 Aug 2013 20:00:32 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201308152000.r7FK0WQ6088016@svn.freebsd.org> From: Edward Tomasz Napierala Date: Thu, 15 Aug 2013 20:00:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254378 - head/sys/cam/ctl X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 20:00:33 -0000 Author: trasz Date: Thu Aug 15 20:00:32 2013 New Revision: 254378 URL: http://svnweb.freebsd.org/changeset/base/254378 Log: Turn comments about locking into actual lock assertions. Reviewed by: ken Tested by: ken MFC after: 1 month Modified: head/sys/cam/ctl/ctl.c Modified: head/sys/cam/ctl/ctl.c ============================================================================== --- head/sys/cam/ctl/ctl.c Thu Aug 15 19:46:31 2013 (r254377) +++ head/sys/cam/ctl/ctl.c Thu Aug 15 20:00:32 2013 (r254378) @@ -1070,9 +1070,11 @@ ctl_init(void) softc->emergency_pool = emergency_pool; softc->othersc_pool = other_pool; + mtx_lock(&softc->ctl_lock); ctl_pool_acquire(internal_pool); ctl_pool_acquire(emergency_pool); ctl_pool_acquire(other_pool); + mtx_unlock(&softc->ctl_lock); /* * We used to allocate a processor LUN here. The new scheme is to @@ -1088,10 +1090,12 @@ ctl_init(void) "ctl_thrd"); if (error != 0) { printf("error creating CTL work thread!\n"); + mtx_lock(&softc->ctl_lock); ctl_free_lun(lun); ctl_pool_free(softc, internal_pool); ctl_pool_free(softc, emergency_pool); ctl_pool_free(softc, other_pool); + mtx_unlock(&softc->ctl_lock); return (error); } printf("ctl: CAM Target Layer loaded\n"); @@ -1372,7 +1376,6 @@ ctl_ioctl_offline(void *arg) /* * Remove an initiator by port number and initiator ID. * Returns 0 for success, 1 for failure. - * Assumes the caller does NOT hold the CTL lock. */ int ctl_remove_initiator(int32_t targ_port, uint32_t iid) @@ -1381,6 +1384,8 @@ ctl_remove_initiator(int32_t targ_port, softc = control_softc; + mtx_assert(&softc->ctl_lock, MA_NOTOWNED); + if ((targ_port < 0) || (targ_port > CTL_MAX_PORTS)) { printf("%s: invalid port number %d\n", __func__, targ_port); @@ -1404,7 +1409,6 @@ ctl_remove_initiator(int32_t targ_port, /* * Add an initiator to the initiator map. * Returns 0 for success, 1 for failure. - * Assumes the caller does NOT hold the CTL lock. */ int ctl_add_initiator(uint64_t wwpn, int32_t targ_port, uint32_t iid) @@ -1414,6 +1418,8 @@ ctl_add_initiator(uint64_t wwpn, int32_t softc = control_softc; + mtx_assert(&softc->ctl_lock, MA_NOTOWNED); + retval = 0; if ((targ_port < 0) @@ -1970,7 +1976,6 @@ ctl_ioctl_bbrread_callback(void *arg, st } /* - * Must be called with the ctl_lock held. * Returns 0 for success, errno for failure. */ static int @@ -1982,6 +1987,8 @@ ctl_ioctl_fill_ooa(struct ctl_lun *lun, retval = 0; + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + for (io = (union ctl_io *)TAILQ_FIRST(&lun->ooa_queue); (io != NULL); (*cur_fill_num)++, io = (union ctl_io *)TAILQ_NEXT(&io->io_hdr, ooa_links)) { @@ -3395,12 +3402,12 @@ bailout: return (retval); } -/* - * Caller must hold ctl_softc->ctl_lock. - */ int ctl_pool_acquire(struct ctl_io_pool *pool) { + + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + if (pool == NULL) return (-EINVAL); @@ -3412,12 +3419,12 @@ ctl_pool_acquire(struct ctl_io_pool *poo return (0); } -/* - * Caller must hold ctl_softc->ctl_lock. - */ int ctl_pool_invalidate(struct ctl_io_pool *pool) { + + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + if (pool == NULL) return (-EINVAL); @@ -3426,12 +3433,12 @@ ctl_pool_invalidate(struct ctl_io_pool * return (0); } -/* - * Caller must hold ctl_softc->ctl_lock. - */ int ctl_pool_release(struct ctl_io_pool *pool) { + + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + if (pool == NULL) return (-EINVAL); @@ -3443,14 +3450,13 @@ ctl_pool_release(struct ctl_io_pool *poo return (0); } -/* - * Must be called with ctl_softc->ctl_lock held. - */ void ctl_pool_free(struct ctl_softc *ctl_softc, struct ctl_io_pool *pool) { union ctl_io *cur_io, *next_io; + mtx_assert(&ctl_softc->ctl_lock, MA_OWNED); + for (cur_io = (union ctl_io *)STAILQ_FIRST(&pool->free_queue); cur_io != NULL; cur_io = next_io) { next_io = (union ctl_io *)STAILQ_NEXT(&cur_io->io_hdr, @@ -4392,7 +4398,6 @@ ctl_alloc_lun(struct ctl_softc *ctl_soft /* * Delete a LUN. * Assumptions: - * - caller holds ctl_softc->ctl_lock. * - LUN has already been marked invalid and any pending I/O has been taken * care of. */ @@ -4409,6 +4414,8 @@ ctl_free_lun(struct ctl_lun *lun) softc = lun->ctl_softc; + mtx_assert(&softc->ctl_lock, MA_OWNED); + STAILQ_REMOVE(&softc->lun_list, lun, ctl_lun, links); ctl_clear_mask(softc->ctl_lun_mask, lun->lun); @@ -9772,7 +9779,6 @@ ctl_check_for_blockage(union ctl_io *pen /* * Check for blockage or overlaps against the OOA (Order Of Arrival) queue. * Assumptions: - * - caller holds ctl_lock * - pending_io is generally either incoming, or on the blocked queue * - starting I/O is the I/O we want to start the check with. */ @@ -9783,6 +9789,8 @@ ctl_check_ooa(struct ctl_lun *lun, union union ctl_io *ooa_io; ctl_action action; + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + /* * Run back along the OOA queue, starting with the current * blocked I/O and going through every I/O before it on the @@ -9823,13 +9831,14 @@ ctl_check_ooa(struct ctl_lun *lun, union * Assumptions: * - An I/O has just completed, and has been removed from the per-LUN OOA * queue, so some items on the blocked queue may now be unblocked. - * - The caller holds ctl_softc->ctl_lock */ static int ctl_check_blocked(struct ctl_lun *lun) { union ctl_io *cur_blocked, *next_blocked; + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + /* * Run forward from the head of the blocked queue, checking each * entry against the I/Os prior to it on the OOA queue to see if @@ -10893,8 +10902,6 @@ bailout: } /* - * Assumptions: caller holds ctl_softc->ctl_lock - * * This routine cannot block! It must be callable from an interrupt * handler as well as from the work thread. */ @@ -10903,6 +10910,8 @@ ctl_run_task_queue(struct ctl_softc *ctl { union ctl_io *io, *next_io; + mtx_assert(&ctl_softc->ctl_lock, MA_OWNED); + CTL_DEBUG_PRINT(("ctl_run_task_queue\n")); for (io = (union ctl_io *)STAILQ_FIRST(&ctl_softc->task_queue); @@ -11204,14 +11213,13 @@ ctl_cmd_pattern_match(struct ctl_scsiio return (filtered_pattern); } -/* - * Called with the CTL lock held. - */ static void ctl_inject_error(struct ctl_lun *lun, union ctl_io *io) { struct ctl_error_desc *desc, *desc2; + mtx_assert(&control_softc->ctl_lock, MA_OWNED); + STAILQ_FOREACH_SAFE(desc, &lun->error_list, links, desc2) { ctl_lun_error_pattern pattern; /* @@ -11281,14 +11289,13 @@ ctl_datamove_timer_wakeup(void *arg) } #endif /* CTL_IO_DELAY */ -/* - * Assumption: caller does NOT hold ctl_lock - */ void ctl_datamove(union ctl_io *io) { void (*fe_datamove)(union ctl_io *io); + mtx_assert(&control_softc->ctl_lock, MA_NOTOWNED); + CTL_DEBUG_PRINT(("ctl_datamove\n")); #ifdef CTL_TIME_IO @@ -12134,8 +12141,6 @@ ctl_datamove_remote_read(union ctl_io *i * first. Once that is complete, the data gets DMAed into the remote * controller's memory. For reads, we DMA from the remote controller's * memory into our memory first, and then move it out to the FETD. - * - * Should be called without the ctl_lock held. */ static void ctl_datamove_remote(union ctl_io *io) @@ -12144,6 +12149,8 @@ ctl_datamove_remote(union ctl_io *io) softc = control_softc; + mtx_assert(&softc->ctl_lock, MA_NOTOWNED); + /* * Note that we look for an aborted I/O here, but don't do some of * the other checks that ctl_datamove() normally does. We don't From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 20:03:23 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C76B6948; Thu, 15 Aug 2013 20:03:23 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 945EC26A1; Thu, 15 Aug 2013 20:03:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FK3NCH090411; Thu, 15 Aug 2013 20:03:23 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FK3M9e090406; Thu, 15 Aug 2013 20:03:22 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308152003.r7FK3M9e090406@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 15 Aug 2013 20:03:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254379 - head/sys/dev/iir X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 20:03:24 -0000 Author: jkim Date: Thu Aug 15 20:03:22 2013 New Revision: 254379 URL: http://svnweb.freebsd.org/changeset/base/254379 Log: Avoid potential redefinition of the macro. Modified: head/sys/dev/iir/iir.c head/sys/dev/iir/iir.h head/sys/dev/iir/iir_ctrl.c head/sys/dev/iir/iir_pci.c Modified: head/sys/dev/iir/iir.c ============================================================================== --- head/sys/dev/iir/iir.c Thu Aug 15 20:00:32 2013 (r254378) +++ head/sys/dev/iir/iir.c Thu Aug 15 20:03:22 2013 (r254379) @@ -399,7 +399,7 @@ iir_init(struct gdt_softc *gdt) gdt->oem_name[7]='\0'; } else { /* Old method, based on PCI ID */ - if (gdt->sc_vendor == INTEL_VENDOR_ID) + if (gdt->sc_vendor == INTEL_VENDOR_ID_IIR) strcpy(gdt->oem_name,"Intel "); else strcpy(gdt->oem_name,"ICP "); @@ -1374,7 +1374,7 @@ iir_action( struct cam_sim *sim, union c (bus == gdt->sc_virt_bus ? 127 : gdt->sc_bus_id[bus]); cpi->base_transfer_speed = 3300; strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN); - if (gdt->sc_vendor == INTEL_VENDOR_ID) + if (gdt->sc_vendor == INTEL_VENDOR_ID_IIR) strncpy(cpi->hba_vid, "Intel Corp.", HBA_IDLEN); else strncpy(cpi->hba_vid, "ICP vortex ", HBA_IDLEN); Modified: head/sys/dev/iir/iir.h ============================================================================== --- head/sys/dev/iir/iir.h Thu Aug 15 20:00:32 2013 (r254378) +++ head/sys/dev/iir/iir.h Thu Aug 15 20:03:22 2013 (r254379) @@ -63,7 +63,7 @@ #define GDT_DEVICE_ID_MAX 0x2ff #define GDT_DEVICE_ID_NEWRX 0x300 -#define INTEL_VENDOR_ID 0x8086 +#define INTEL_VENDOR_ID_IIR 0x8086 #define INTEL_DEVICE_ID_IIR 0x600 #define GDT_MAXBUS 6 /* XXX Why not 5? */ Modified: head/sys/dev/iir/iir_ctrl.c ============================================================================== --- head/sys/dev/iir/iir_ctrl.c Thu Aug 15 20:00:32 2013 (r254378) +++ head/sys/dev/iir/iir_ctrl.c Thu Aug 15 20:03:22 2013 (r254379) @@ -273,7 +273,7 @@ iir_ioctl(struct cdev *dev, u_long cmd, return (ENXIO); /* only RP controllers */ p->ext_type = 0x6000 | gdt->sc_device; - if (gdt->sc_vendor == INTEL_VENDOR_ID) { + if (gdt->sc_vendor == INTEL_VENDOR_ID_IIR) { p->oem_id = OEM_ID_INTEL; p->type = 0xfd; /* new -> subdevice into ext_type */ Modified: head/sys/dev/iir/iir_pci.c ============================================================================== --- head/sys/dev/iir/iir_pci.c Thu Aug 15 20:00:32 2013 (r254378) +++ head/sys/dev/iir/iir_pci.c Thu Aug 15 20:03:22 2013 (r254379) @@ -163,7 +163,7 @@ MODULE_DEPEND(iir, cam, 1, 1, 1); static int iir_pci_probe(device_t dev) { - if (pci_get_vendor(dev) == INTEL_VENDOR_ID && + if (pci_get_vendor(dev) == INTEL_VENDOR_ID_IIR && pci_get_device(dev) == INTEL_DEVICE_ID_IIR) { device_set_desc(dev, "Intel Integrated RAID Controller"); return (BUS_PROBE_DEFAULT); From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 20:19:18 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B3338C12; Thu, 15 Aug 2013 20:19:18 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 914882747; Thu, 15 Aug 2013 20:19:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FKJIFE095442; Thu, 15 Aug 2013 20:19:18 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FKJI0H095440; Thu, 15 Aug 2013 20:19:18 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201308152019.r7FKJI0H095440@svn.freebsd.org> From: Colin Percival Date: Thu, 15 Aug 2013 20:19:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254380 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 20:19:18 -0000 Author: cperciva Date: Thu Aug 15 20:19:17 2013 New Revision: 254380 URL: http://svnweb.freebsd.org/changeset/base/254380 Log: Change the queue of locks in kern_rangelock.c from holding lock requests in the order that they arrive, to holding (a) granted write lock requests, followed by (b) granted read lock requests, followed by (c) ungranted requests, in order of arrival. This changes the stopping condition for iterating through granted locks to see if a new request can be granted: When considering a read lock request, we can stop iterating as soon as we see a read lock request, since anything after that point is either a granted read lock request or a request which has not yet been granted. (For write lock requests, we must still compare against all granted lock requests.) For workloads with R parallel reads and W parallel writes, this improves the time spent from O((R+W)^2) to O(W*(R+W)); i.e., heavy parallel-read workloads become significantly more scalable. No statistically significant change in buildworld time has been measured, but synthetic tests of parallel 'dd > /dev/null' and 'openssl enc >/dev/null' with the input file cached yield dramatic (up to 10x) improvement with high (up to 128 processes) levels of parallelism. Reviewed by: kib Modified: head/sys/kern/kern_rangelock.c head/sys/sys/rangelock.h Modified: head/sys/kern/kern_rangelock.c ============================================================================== --- head/sys/kern/kern_rangelock.c Thu Aug 15 20:03:22 2013 (r254379) +++ head/sys/kern/kern_rangelock.c Thu Aug 15 20:19:17 2013 (r254380) @@ -84,20 +84,14 @@ rangelock_destroy(struct rangelock *lock } /* - * Verifies the supplied rl_q_entries for compatibility. Returns true - * if the rangelock queue entries are not compatible, false if they are. - * * Two entries are compatible if their ranges do not overlap, or both * entries are for read. */ static int -rangelock_incompatible(const struct rl_q_entry *e1, +ranges_overlap(const struct rl_q_entry *e1, const struct rl_q_entry *e2) { - if ((e1->rl_q_flags & RL_LOCK_TYPE_MASK) == RL_LOCK_READ && - (e2->rl_q_flags & RL_LOCK_TYPE_MASK) == RL_LOCK_READ) - return (0); if (e1->rl_q_start < e2->rl_q_end && e1->rl_q_end > e2->rl_q_start) return (1); return (0); @@ -109,30 +103,38 @@ rangelock_incompatible(const struct rl_q static void rangelock_calc_block(struct rangelock *lock) { - struct rl_q_entry *entry, *entry1, *whead; + struct rl_q_entry *entry, *nextentry, *entry1; - if (lock->rl_currdep == TAILQ_FIRST(&lock->rl_waiters) && - lock->rl_currdep != NULL) - lock->rl_currdep = TAILQ_NEXT(lock->rl_currdep, rl_q_link); - for (entry = lock->rl_currdep; entry != NULL; - entry = TAILQ_NEXT(entry, rl_q_link)) { - TAILQ_FOREACH(entry1, &lock->rl_waiters, rl_q_link) { - if (rangelock_incompatible(entry, entry1)) - goto out; - if (entry1 == entry) - break; + for (entry = lock->rl_currdep; entry != NULL; entry = nextentry) { + nextentry = TAILQ_NEXT(entry, rl_q_link); + if (entry->rl_q_flags & RL_LOCK_READ) { + /* Reads must not overlap with granted writes. */ + for (entry1 = TAILQ_FIRST(&lock->rl_waiters); + !(entry1->rl_q_flags & RL_LOCK_READ); + entry1 = TAILQ_NEXT(entry1, rl_q_link)) { + if (ranges_overlap(entry, entry1)) + goto out; + } + } else { + /* Write must not overlap with any granted locks. */ + for (entry1 = TAILQ_FIRST(&lock->rl_waiters); + entry1 != entry; + entry1 = TAILQ_NEXT(entry1, rl_q_link)) { + if (ranges_overlap(entry, entry1)) + goto out; + } + + /* Move grantable write locks to the front. */ + TAILQ_REMOVE(&lock->rl_waiters, entry, rl_q_link); + TAILQ_INSERT_HEAD(&lock->rl_waiters, entry, rl_q_link); } + + /* Grant this lock. */ + entry->rl_q_flags |= RL_LOCK_GRANTED; + wakeup(entry); } out: lock->rl_currdep = entry; - TAILQ_FOREACH(whead, &lock->rl_waiters, rl_q_link) { - if (whead == lock->rl_currdep) - break; - if (!(whead->rl_q_flags & RL_LOCK_GRANTED)) { - whead->rl_q_flags |= RL_LOCK_GRANTED; - wakeup(whead); - } - } } static void Modified: head/sys/sys/rangelock.h ============================================================================== --- head/sys/sys/rangelock.h Thu Aug 15 20:03:22 2013 (r254379) +++ head/sys/sys/rangelock.h Thu Aug 15 20:19:17 2013 (r254380) @@ -48,9 +48,13 @@ struct rl_q_entry; * Access to the structure itself is synchronized with the externally * supplied mutex. * - * rl_waiters is the queue of lock requests in the order of arrival. + * rl_waiters is the queue containing in order (a) granted write lock + * requests, (b) granted read lock requests, and (c) in order of arrival, + * lock requests which cannot be granted yet. + * * rl_currdep is the first lock request that cannot be granted now due - * to the preceding requests conflicting with it. + * to the preceding requests conflicting with it (i.e., it points to + * position (c) in the list above). */ struct rangelock { TAILQ_HEAD(, rl_q_entry) rl_waiters; From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 20:30:06 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 84652FD6; Thu, 15 Aug 2013 20:30:06 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: from mail-vc0-x22b.google.com (mail-vc0-x22b.google.com [IPv6:2607:f8b0:400c:c03::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0955827D4; Thu, 15 Aug 2013 20:30:05 +0000 (UTC) Received: by mail-vc0-f171.google.com with SMTP id ij15so863265vcb.30 for ; Thu, 15 Aug 2013 13:30:04 -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:from:date:message-id :subject:to:cc:content-type; bh=cH02tUUHi1JGh6eTDeNx9QQq6c/evyhwRuWkxk+PMyA=; b=f4AlFFQu4xRJpPcgC+EIgmhbQmZJPESSygNoANp7mUJ1v3Rz5NouASya9yQYs1Tg62 p+MSxRsaZm97PHBNhmLLu4fnSHls4oSyjkc3cBmULJ5nXcxczJD+LAhNby8jkz/uDxiN L2LYtojQMVb5D0qFwmxLktp3F53VC5J+Xw5VfadY4RUhcP3gFE/zieJhdHg9VQWaDjMI JNF5JUV6qTj0LOINJcT80r2jKeH5rfwOVVyvyHUKM/8WXGDImQIp9g1oqmyOj9jqgkat j342m6uDRxKF5GIcpo/Jyqt8s09NxBasQ8m504ql3g2Bzivn9U3yrrn4uB0p0NWJYdlh GdeQ== X-Received: by 10.220.206.195 with SMTP id fv3mr15985977vcb.15.1376598604659; Thu, 15 Aug 2013 13:30:04 -0700 (PDT) MIME-Version: 1.0 Sender: ivoras@gmail.com Received: by 10.58.229.167 with HTTP; Thu, 15 Aug 2013 13:29:24 -0700 (PDT) In-Reply-To: <201308152019.r7FKJI0H095440@svn.freebsd.org> References: <201308152019.r7FKJI0H095440@svn.freebsd.org> From: Ivan Voras Date: Thu, 15 Aug 2013 22:29:24 +0200 X-Google-Sender-Auth: xLOPVDoKZZwiwfP6uzEL0AN4t7Y Message-ID: Subject: Re: svn commit: r254380 - in head/sys: kern sys To: Colin Percival Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 20:30:06 -0000 On 15 August 2013 22:19, Colin Percival wrote: > For workloads with R parallel reads and W parallel writes, this improves > the time spent from O((R+W)^2) to O(W*(R+W)); i.e., heavy parallel-read > workloads become significantly more scalable. > > No statistically significant change in buildworld time has been measured, > but synthetic tests of parallel 'dd > /dev/null' and 'openssl enc >/dev/null' > with the input file cached yield dramatic (up to 10x) improvement with high > (up to 128 processes) levels of parallelism. That's interesting. Have you tried running the "blogbench" benchmark before & after? From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 20:35:30 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 876064C8 for ; Thu, 15 Aug 2013 20:35:30 +0000 (UTC) (envelope-from bounces+73574-9504-svn-src-head=freebsd.org@sendgrid.me) Received: from o3.shared.sendgrid.net (o3.shared.sendgrid.net [208.117.48.85]) by mx1.freebsd.org (Postfix) with SMTP id 0E1732825 for ; Thu, 15 Aug 2013 20:35:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.info; h=from :mime-version:to:cc:subject:references:in-reply-to:content-type :content-transfer-encoding; s=smtpapi; bh=KQuckAyVSUmDD8TDoqIKjO AE1/E=; b=NGyEA81IuzS1Tp+4VDcLnNX01DldnwgZ4GEV+0BxAruJvAHd5O5c+7 T/WzDuCSZ/gbuOPJJMMFNXwsgES/blwoSK1Rq7hwKn3ipg/sRXSNFiXhRvHm8k34 wojS8rDEJ1+5YomOJa/tUyEFB+0SM50v28fxddW7RbXhB4MLIsJBs= Received: by 10.42.83.72 with SMTP id filter-158.6147.520D3B905 Thu, 15 Aug 2013 20:35:28 +0000 (GMT) Received: from mail.tarsnap.com (unknown [10.60.208.17]) by mi16 (SG) with ESMTP id 14083b0ab65.1cf0.6913cf for ; Thu, 15 Aug 2013 20:35:28 +0000 (UTC) Received: (qmail 32113 invoked from network); 15 Aug 2013 20:35:27 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by ec2-107-20-205-189.compute-1.amazonaws.com with ESMTP; 15 Aug 2013 20:35:27 -0000 Received: (qmail 52355 invoked from network); 15 Aug 2013 20:32:24 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by clamshell.daemonology.net with SMTP; 15 Aug 2013 20:32:24 -0000 Message-ID: <520D3AD8.4090207@freebsd.org> Date: Thu, 15 Aug 2013 13:32:24 -0700 From: Colin Percival User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130722 Thunderbird/17.0.7 MIME-Version: 1.0 To: Ivan Voras Subject: Re: svn commit: r254380 - in head/sys: kern sys References: <201308152019.r7FKJI0H095440@svn.freebsd.org> In-Reply-To: X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SG-EID: EvYvoie/qnEezyq2t4eRKjDm9X7ZKbCMt75WvXA+XNFLOhoeet4uwWdrLLA4PF2C1NZ67+qMQfIhq34sLjJ4G7f2EHX+d+b0fILTYZbSNuraGxPvOw7x7mgFnr61uUtUrjE4QlaiB5HKtd342WwbZA== Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 20:35:30 -0000 On 08/15/13 13:29, Ivan Voras wrote: > On 15 August 2013 22:19, Colin Percival wrote: >> For workloads with R parallel reads and W parallel writes, this improves >> the time spent from O((R+W)^2) to O(W*(R+W)); i.e., heavy parallel-read >> workloads become significantly more scalable. >> >> No statistically significant change in buildworld time has been measured, >> but synthetic tests of parallel 'dd > /dev/null' and 'openssl enc >/dev/null' >> with the input file cached yield dramatic (up to 10x) improvement with high >> (up to 128 processes) levels of parallelism. > > That's interesting. Have you tried running the "blogbench" benchmark > before & after? No, I wasn't aware that it existed. Given that this change applies only to parallel operations *on the same vnode* and blogbench seems to have traffic randomly spread between many files, I doubt there would be any difference. -- Colin Percival Security Officer Emeritus, FreeBSD | The power to serve Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 21:09:06 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 60793E4E; Thu, 15 Aug 2013 21:09:06 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4D60929E6; Thu, 15 Aug 2013 21:09:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FL96bC014846; Thu, 15 Aug 2013 21:09:06 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FL95Ik014843; Thu, 15 Aug 2013 21:09:05 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201308152109.r7FL95Ik014843@svn.freebsd.org> From: Jung-uk Kim Date: Thu, 15 Aug 2013 21:09:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254384 - head/sys/i386/i386 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 21:09:06 -0000 Author: jkim Date: Thu Aug 15 21:09:05 2013 New Revision: 254384 URL: http://svnweb.freebsd.org/changeset/base/254384 Log: Simplify check for CMPXCHG8B instruction. Note CMPXCHG8B instruction is always available for Rise mP6 processors although it is not set by CPUID. Modified: head/sys/i386/i386/initcpu.c head/sys/i386/i386/machdep.c Modified: head/sys/i386/i386/initcpu.c ============================================================================== --- head/sys/i386/i386/initcpu.c Thu Aug 15 21:06:38 2013 (r254383) +++ head/sys/i386/i386/initcpu.c Thu Aug 15 21:09:05 2013 (r254384) @@ -424,6 +424,19 @@ init_6x86(void) #ifdef I586_CPU /* + * Rise mP6 + */ +static void +init_rise(void) +{ + + /* + * The CMPXCHG8B instruction is always available but hidden. + */ + cpu_feature |= CPUID_CX8; +} + +/* * IDT WinChip C6/2/2A/2B/3 * * http://www.centtech.com/winchip_bios_writers_guide_v4_0.pdf @@ -690,6 +703,9 @@ initializecpu(void) case CPU_VENDOR_TRANSMETA: init_transmeta(); break; + case CPU_VENDOR_RISE: + init_rise(); + break; } break; #endif Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Thu Aug 15 21:06:38 2013 (r254383) +++ head/sys/i386/i386/machdep.c Thu Aug 15 21:09:05 2013 (r254384) @@ -1557,8 +1557,7 @@ static void cpu_probe_cmpxchg8b(void) { - if ((cpu_feature & CPUID_CX8) != 0 || - cpu_vendor_id == CPU_VENDOR_RISE) { + if ((cpu_feature & CPUID_CX8) != 0) { atomic_load_acq_64 = atomic_load_acq_64_i586; atomic_store_rel_64 = atomic_store_rel_64_i586; } From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 21:35:31 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1C9F26E3; Thu, 15 Aug 2013 21:35:31 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: from mail-vb0-x232.google.com (mail-vb0-x232.google.com [IPv6:2607:f8b0:400c:c02::232]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 92AA32B32; Thu, 15 Aug 2013 21:35:30 +0000 (UTC) Received: by mail-vb0-f50.google.com with SMTP id x14so1093683vbb.9 for ; Thu, 15 Aug 2013 14:35:29 -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:from:date:message-id :subject:to:cc:content-type; bh=85ng4UucbrYoflogl3fXgkSCcUqDmXMYqr5uOKssY5I=; b=rTSfA2IPHfIVkXEUc/OsxrVo6eoi9F+3itIlVZBBgNu+3yoj5NyVrIydne6k6nNWfO A6iD2mw9zs5OBfmOHz5lIjfipCcXUp93Ju/0LlGhm7Jy9IShjIDA8m1ZslhcBiKGuFs+ gWynpsfRF0RkhkAZkIrd8YbJlFaxg62iMpuivnvXeeKrwgLCOcOpu+/rrlv1cx9EKDxP oBM26qKSgxWh9le1tGb2O11Gc/Wyyu0hUNnB6b0y5t7CLHGlrX+aGDEvItvsHuTRUoxV cwSzllyaQDflKAZT24p1hVfqhwn6eeLMAtf7PEYJu2lCLV833TMJkST9hgDOZRymAfZT OssQ== X-Received: by 10.58.106.82 with SMTP id gs18mr14829541veb.18.1376602529213; Thu, 15 Aug 2013 14:35:29 -0700 (PDT) MIME-Version: 1.0 Sender: ivoras@gmail.com Received: by 10.58.229.167 with HTTP; Thu, 15 Aug 2013 14:34:49 -0700 (PDT) In-Reply-To: <520D3AD8.4090207@freebsd.org> References: <201308152019.r7FKJI0H095440@svn.freebsd.org> <520D3AD8.4090207@freebsd.org> From: Ivan Voras Date: Thu, 15 Aug 2013 23:34:49 +0200 X-Google-Sender-Auth: EsQcFbJbQNab15Ezxf0OfazzodU Message-ID: Subject: Re: svn commit: r254380 - in head/sys: kern sys To: Colin Percival Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 21:35:31 -0000 On 15 August 2013 22:32, Colin Percival wrote: > No, I wasn't aware that it existed. Given that this change applies only to > parallel operations *on the same vnode* and blogbench seems to have traffic > randomly spread between many files, I doubt there would be any difference. Maybe it could help a bit on the directories? Whatever the problem may be (does FreeBSD still have single-writer + multiple readers lock for processes accessing the same vnode?), there is a huge difference in performance with blogbench between FreeBSD and Linux. From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 21:40:00 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 64305B7E for ; Thu, 15 Aug 2013 21:40:00 +0000 (UTC) (envelope-from bounces+73574-9504-svn-src-head=freebsd.org@sendgrid.me) Received: from o3.shared.sendgrid.net (o3.shared.sendgrid.net [208.117.48.85]) by mx1.freebsd.org (Postfix) with SMTP id C55F22B70 for ; Thu, 15 Aug 2013 21:39:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.info; h=from :mime-version:to:cc:subject:references:in-reply-to:content-type :content-transfer-encoding; s=smtpapi; bh=keEAWpDO7Ukl9Hx32n0GoR l0IQs=; b=kCs+vD64pOVQThSemgw/iEyvVlx6tTMBVZbDGtWsGYDUaRfEaT29Oj ARZ8tgpbppI6dAMO8orCNtLrB/yhggBfglU3azHQXzKBnVpSa9EMXiN+IIOp5QCu EFLciMfUbf2f2g/u7LWsu8Le4hP4bBpieUnboU1ltOEhY7f+2UDYM= Received: by with SMTP id filter-174.24601.520D4AA26 Thu, 15 Aug 2013 21:39:46 +0000 (GMT) Received: from mail.tarsnap.com (unknown [10.60.208.17]) by mi23 (SG) with ESMTP id 14083eb8b88.6931.6e5bf7 for ; Thu, 15 Aug 2013 21:39:46 +0000 (UTC) Received: (qmail 34087 invoked from network); 15 Aug 2013 21:39:45 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by ec2-107-20-205-189.compute-1.amazonaws.com with ESMTP; 15 Aug 2013 21:39:45 -0000 Received: (qmail 52803 invoked from network); 15 Aug 2013 21:36:43 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by clamshell.daemonology.net with SMTP; 15 Aug 2013 21:36:43 -0000 Message-ID: <520D49EB.9060308@freebsd.org> Date: Thu, 15 Aug 2013 14:36:43 -0700 From: Colin Percival User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130722 Thunderbird/17.0.7 MIME-Version: 1.0 To: Ivan Voras Subject: Re: svn commit: r254380 - in head/sys: kern sys References: <201308152019.r7FKJI0H095440@svn.freebsd.org> <520D3AD8.4090207@freebsd.org> In-Reply-To: X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SG-EID: EvYvoie/qnEezyq2t4eRKjDm9X7ZKbCMt75WvXA+XNFLOhoeet4uwWdrLLA4PF2CG2gJ9jguEOn7Gk0bgBfPv/FffnLSphQuSYT1VVOCYQOqUz1Q3dBGZqGGOMoraWU2GxIIjAWe+rWJFFBxQlcqqw== Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 21:40:00 -0000 On 08/15/13 14:34, Ivan Voras wrote: > On 15 August 2013 22:32, Colin Percival wrote: >> No, I wasn't aware that it existed. Given that this change applies only to >> parallel operations *on the same vnode* and blogbench seems to have traffic >> randomly spread between many files, I doubt there would be any difference. > > Maybe it could help a bit on the directories? > > Whatever the problem may be (does FreeBSD still have single-writer + > multiple readers lock for processes accessing the same vnode?), there > is a huge difference in performance with blogbench between FreeBSD and > Linux. We have a single-writer / multiple-readers lock on *any particular byte* of a vnode. The rangelock code is what keeps track of this, and the locking contention I was reducing was in the rangelock bookkeeping. -- Colin Percival Security Officer Emeritus, FreeBSD | The power to serve Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 22:29:50 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 37A062A3; Thu, 15 Aug 2013 22:29:50 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 231AA2D83; Thu, 15 Aug 2013 22:29:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FMToPl044889; Thu, 15 Aug 2013 22:29:50 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FMTnNL044888; Thu, 15 Aug 2013 22:29:49 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201308152229.r7FMTnNL044888@svn.freebsd.org> From: Jeff Roberson Date: Thu, 15 Aug 2013 22:29:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254387 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 22:29:50 -0000 Author: jeff Date: Thu Aug 15 22:29:49 2013 New Revision: 254387 URL: http://svnweb.freebsd.org/changeset/base/254387 Log: - Fix bug in r254304. Use the ACTIVE pq count for the active list processing, not inactive. This was the result of a bad merge. Reported by: pho Sponsored by: EMC / Isilon Storage Division Modified: head/sys/vm/vm_pageout.c Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Thu Aug 15 21:48:29 2013 (r254386) +++ head/sys/vm/vm_pageout.c Thu Aug 15 22:29:49 2013 (r254387) @@ -1286,6 +1286,8 @@ relock_queues: * Compute the number of pages we want to try to move from the * active queue to the inactive queue. */ + pq = &vmd->vmd_pagequeues[PQ_ACTIVE]; + vm_pagequeue_lock(pq); pcount = pq->pq_cnt; page_shortage = vm_paging_target() + cnt.v_inactive_target - cnt.v_inactive_count; @@ -1304,8 +1306,6 @@ relock_queues: * track the per-page activity counter and use it to locate * deactivation candidates. */ - pq = &vmd->vmd_pagequeues[PQ_ACTIVE]; - vm_pagequeue_lock(pq); m = TAILQ_FIRST(&pq->pq_pl); while ((m != NULL) && (pcount-- > 0) && (page_shortage > 0)) { From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 22:33:28 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 32C6740F; Thu, 15 Aug 2013 22:33:28 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1F5772DC9; Thu, 15 Aug 2013 22:33:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FMXRM5047571; Thu, 15 Aug 2013 22:33:27 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FMXRYD047569; Thu, 15 Aug 2013 22:33:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308152233.r7FMXRYD047569@svn.freebsd.org> From: Jilles Tjoelker Date: Thu, 15 Aug 2013 22:33:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254388 - head/lib/libc/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 22:33:28 -0000 Author: jilles Date: Thu Aug 15 22:33:27 2013 New Revision: 254388 URL: http://svnweb.freebsd.org/changeset/base/254388 Log: sigsuspend(2): Add xrefs to pselect(2) and sigwait-alikes. Modified: head/lib/libc/sys/sigsuspend.2 Modified: head/lib/libc/sys/sigsuspend.2 ============================================================================== --- head/lib/libc/sys/sigsuspend.2 Thu Aug 15 22:29:49 2013 (r254387) +++ head/lib/libc/sys/sigsuspend.2 Thu Aug 15 22:33:27 2013 (r254388) @@ -28,7 +28,7 @@ .\" @(#)sigsuspend.2 8.2 (Berkeley) 5/16/95 .\" $FreeBSD$ .\" -.Dd May 16, 1995 +.Dd August 16, 2013 .Dt SIGSUSPEND 2 .Os .Sh NAME @@ -70,9 +70,13 @@ always terminates by being interrupted, set to .Er EINTR . .Sh SEE ALSO +.Xr pselect 2 , .Xr sigaction 2 , .Xr sigpending 2 , .Xr sigprocmask 2 , +.Xr sigtimedwait 2 , +.Xr sigwait 2 , +.Xr sigwaitinfo 2 , .Xr sigsetops 3 .Sh STANDARDS The From owner-svn-src-head@FreeBSD.ORG Thu Aug 15 22:52:41 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5F3917D9; Thu, 15 Aug 2013 22:52:41 +0000 (UTC) (envelope-from ken@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3B1242E98; Thu, 15 Aug 2013 22:52:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7FMqfNj054715; Thu, 15 Aug 2013 22:52:41 GMT (envelope-from ken@svn.freebsd.org) Received: (from ken@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7FMqeTf054707; Thu, 15 Aug 2013 22:52:40 GMT (envelope-from ken@svn.freebsd.org) Message-Id: <201308152252.r7FMqeTf054707@svn.freebsd.org> From: "Kenneth D. Merry" Date: Thu, 15 Aug 2013 22:52:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254389 - in head/sys: dev/nvme geom kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Aug 2013 22:52:41 -0000 Author: ken Date: Thu Aug 15 22:52:39 2013 New Revision: 254389 URL: http://svnweb.freebsd.org/changeset/base/254389 Log: Change the way that unmapped I/O capability is advertised. The previous method was to set the D_UNMAPPED_IO flag in the cdevsw for the driver. The problem with this is that in many cases (e.g. sa(4)) there may be some instances of the driver that can handle unmapped I/O and some that can't. The isp(4) driver can handle unmapped I/O, but the esp(4) driver currently cannot. The cdevsw is shared among all driver instances. So instead of setting a flag on the cdevsw, set a flag on the cdev. This allows drivers to indicate support for unmapped I/O on a per-instance basis. sys/conf.h: Remove the D_UNMAPPED_IO cdevsw flag and replace it with an SI_UNMAPPED cdev flag. kern_physio.c: Look at the cdev SI_UNMAPPED flag to determine whether or not a particular driver can handle unmapped I/O. geom_dev.c: Set the SI_UNMAPPED flag for all GEOM cdevs. Since GEOM will create a temporary mapping when needed, setting SI_UNMAPPED unconditionally will work. Remove the D_UNMAPPED_IO flag. nvme_ns.c: Set the SI_UNMAPPED flag on cdevs created here if NVME_UNMAPPED_BIO_SUPPORT is enabled. vfs_aio.c: In aio_qphysio(), check the SI_UNMAPPED flag on a cdev instead of the D_UNMAPPED_IO flag on the cdevsw. sys/param.h: Bump __FreeBSD_version to 1000045 for the switch from setting the D_UNMAPPED_IO flag in the cdevsw to setting SI_UNMAPPED in the cdev. Reviewed by: kib, jimharris MFC after: 1 week Sponsored by: Spectra Logic Modified: head/sys/dev/nvme/nvme_ns.c head/sys/geom/geom_dev.c head/sys/kern/kern_physio.c head/sys/kern/vfs_aio.c head/sys/sys/conf.h head/sys/sys/param.h Modified: head/sys/dev/nvme/nvme_ns.c ============================================================================== --- head/sys/dev/nvme/nvme_ns.c Thu Aug 15 22:33:27 2013 (r254388) +++ head/sys/dev/nvme/nvme_ns.c Thu Aug 15 22:52:39 2013 (r254389) @@ -133,11 +133,7 @@ nvme_ns_strategy(struct bio *bp) static struct cdevsw nvme_ns_cdevsw = { .d_version = D_VERSION, -#ifdef NVME_UNMAPPED_BIO_SUPPORT - .d_flags = D_DISK | D_UNMAPPED_IO, -#else .d_flags = D_DISK, -#endif .d_read = physread, .d_write = physwrite, .d_open = nvme_ns_open, @@ -348,6 +344,9 @@ nvme_ns_construct(struct nvme_namespace NULL, UID_ROOT, GID_WHEEL, 0600, "nvme%dns%d", device_get_unit(ctrlr->dev), ns->id); #endif +#ifdef NVME_UNMAPPED_BIO_SUPPORT + ns->cdev->si_flags |= SI_UNMAPPED; +#endif if (ns->cdev != NULL) ns->cdev->si_drv1 = ns; Modified: head/sys/geom/geom_dev.c ============================================================================== --- head/sys/geom/geom_dev.c Thu Aug 15 22:33:27 2013 (r254388) +++ head/sys/geom/geom_dev.c Thu Aug 15 22:52:39 2013 (r254389) @@ -79,7 +79,7 @@ static struct cdevsw g_dev_cdevsw = { .d_ioctl = g_dev_ioctl, .d_strategy = g_dev_strategy, .d_name = "g_dev", - .d_flags = D_DISK | D_TRACKCLOSE | D_UNMAPPED_IO, + .d_flags = D_DISK | D_TRACKCLOSE, }; static g_taste_t g_dev_taste; @@ -237,6 +237,7 @@ g_dev_taste(struct g_class *mp, struct g g_free(sc); return (NULL); } + dev->si_flags |= SI_UNMAPPED; sc->sc_dev = dev; /* Search for device alias name and create it if found. */ @@ -251,6 +252,7 @@ g_dev_taste(struct g_class *mp, struct g freeenv(val); make_dev_alias_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK, &adev, dev, "%s", buf); + adev->si_flags |= SI_UNMAPPED; break; } } Modified: head/sys/kern/kern_physio.c ============================================================================== --- head/sys/kern/kern_physio.c Thu Aug 15 22:33:27 2013 (r254388) +++ head/sys/kern/kern_physio.c Thu Aug 15 22:52:39 2013 (r254389) @@ -93,8 +93,7 @@ physio(struct cdev *dev, struct uio *uio csw = dev->si_devsw; if (uio->uio_segflg == UIO_USERSPACE) { - if (csw != NULL && - (csw->d_flags & D_UNMAPPED_IO) != 0) + if (dev->si_flags & SI_UNMAPPED) mapped = 0; else mapped = 1; Modified: head/sys/kern/vfs_aio.c ============================================================================== --- head/sys/kern/vfs_aio.c Thu Aug 15 22:33:27 2013 (r254388) +++ head/sys/kern/vfs_aio.c Thu Aug 15 22:52:39 2013 (r254389) @@ -1375,7 +1375,7 @@ aio_qphysio(struct proc *p, struct aiocb /* * Bring buffer into kernel space. */ - if (vmapbuf(bp, (csw->d_flags & D_UNMAPPED_IO) == 0) < 0) { + if (vmapbuf(bp, (dev->si_flags & SI_UNMAPPED) == 0) < 0) { error = EFAULT; goto doerror; } Modified: head/sys/sys/conf.h ============================================================================== --- head/sys/sys/conf.h Thu Aug 15 22:33:27 2013 (r254388) +++ head/sys/sys/conf.h Thu Aug 15 22:52:39 2013 (r254389) @@ -61,6 +61,7 @@ struct cdev { #define SI_CHILD 0x0010 /* child of another struct cdev **/ #define SI_DUMPDEV 0x0080 /* is kernel dumpdev */ #define SI_CLONELIST 0x0200 /* on a clone list */ +#define SI_UNMAPPED 0x0400 /* can handle unmapped I/O */ struct timespec si_atime; struct timespec si_ctime; struct timespec si_mtime; @@ -167,7 +168,6 @@ typedef int dumper_t( #define D_MMAP_ANON 0x00100000 /* special treatment in vm_mmap.c */ #define D_NEEDGIANT 0x00400000 /* driver want Giant */ #define D_NEEDMINOR 0x00800000 /* driver uses clone_create() */ -#define D_UNMAPPED_IO 0x01000000 /* d_strategy can accept unmapped IO */ /* * Version numbers. Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Thu Aug 15 22:33:27 2013 (r254388) +++ head/sys/sys/param.h Thu Aug 15 22:52:39 2013 (r254389) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1000044 /* Master, propagated to newvers */ +#define __FreeBSD_version 1000045 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 00:35:21 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6EAFB881; Fri, 16 Aug 2013 00:35:21 +0000 (UTC) (envelope-from grehan@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5C56A22EA; Fri, 16 Aug 2013 00:35:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G0ZLX3093031; Fri, 16 Aug 2013 00:35:21 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G0ZL63093030; Fri, 16 Aug 2013 00:35:21 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201308160035.r7G0ZL63093030@svn.freebsd.org> From: Peter Grehan Date: Fri, 16 Aug 2013 00:35:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254395 - head/usr.sbin/bhyve X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 00:35:21 -0000 Author: grehan Date: Fri Aug 16 00:35:20 2013 New Revision: 254395 URL: http://svnweb.freebsd.org/changeset/base/254395 Log: Fix ordering of legacy IRQ reservations. Submitted by: Jeremiah Lott jlott at averesystems dot com Modified: head/usr.sbin/bhyve/pci_emul.c Modified: head/usr.sbin/bhyve/pci_emul.c ============================================================================== --- head/usr.sbin/bhyve/pci_emul.c Fri Aug 16 00:24:34 2013 (r254394) +++ head/usr.sbin/bhyve/pci_emul.c Fri Aug 16 00:35:20 2013 (r254395) @@ -1008,6 +1008,16 @@ init_pci(struct vmctx *ctx) pci_emul_membase32 = vm_get_lowmem_limit(ctx); pci_emul_membase64 = PCI_EMUL_MEMBASE64; + /* + * Allow ISA IRQs 5,10,11,12, and 15 to be available for + * generic use + */ + lirq[5].li_generic = 1; + lirq[10].li_generic = 1; + lirq[11].li_generic = 1; + lirq[12].li_generic = 1; + lirq[15].li_generic = 1; + for (slot = 0; slot < MAXSLOTS; slot++) { for (func = 0; func < MAXFUNCS; func++) { si = &pci_slotinfo[slot][func]; @@ -1023,16 +1033,6 @@ init_pci(struct vmctx *ctx) } /* - * Allow ISA IRQs 5,10,11,12, and 15 to be available for - * generic use - */ - lirq[5].li_generic = 1; - lirq[10].li_generic = 1; - lirq[11].li_generic = 1; - lirq[12].li_generic = 1; - lirq[15].li_generic = 1; - - /* * The guest physical memory map looks like the following: * [0, lowmem) guest system memory * [lowmem, lowmem_limit) memory hole (may be absent) From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 03:41:42 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 530A0832; Fri, 16 Aug 2013 03:41:42 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 40E6B2C17; Fri, 16 Aug 2013 03:41:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G3fgnq065234; Fri, 16 Aug 2013 03:41:42 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G3fgH3065233; Fri, 16 Aug 2013 03:41:42 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308160341.r7G3fgH3065233@svn.freebsd.org> From: Mark Johnston Date: Fri, 16 Aug 2013 03:41:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254396 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 03:41:42 -0000 Author: markj Date: Fri Aug 16 03:41:41 2013 New Revision: 254396 URL: http://svnweb.freebsd.org/changeset/base/254396 Log: Use strdup(9) instead of reimplementing it. Modified: head/sys/kern/kern_linker.c Modified: head/sys/kern/kern_linker.c ============================================================================== --- head/sys/kern/kern_linker.c Fri Aug 16 00:35:20 2013 (r254395) +++ head/sys/kern/kern_linker.c Fri Aug 16 03:41:41 2013 (r254396) @@ -153,16 +153,6 @@ static int linker_load_module(const char struct mod_depend *verinfo, struct linker_file **lfpp); static modlist_t modlist_lookup2(const char *name, struct mod_depend *verinfo); -static char * -linker_strdup(const char *str) -{ - char *result; - - if ((result = malloc((strlen(str) + 1), M_LINKER, M_WAITOK)) != NULL) - strcpy(result, str); - return (result); -} - static void linker_init(void *arg) { @@ -577,8 +567,8 @@ linker_make_file(const char *pathname, l lf->refs = 1; lf->userrefs = 0; lf->flags = 0; - lf->filename = linker_strdup(filename); - lf->pathname = linker_strdup(pathname); + lf->filename = strdup(filename, M_LINKER); + lf->pathname = strdup(pathname, M_LINKER); LINKER_GET_NEXT_FILE_ID(lf->id); lf->ndeps = 0; lf->deps = NULL; @@ -1918,7 +1908,7 @@ linker_search_kld(const char *name) /* qualified at all? */ if (strchr(name, '/')) - return (linker_strdup(name)); + return (strdup(name, M_LINKER)); /* traverse the linker path */ len = strlen(name); @@ -2011,7 +2001,7 @@ linker_load_module(const char *kldname, if (modlist_lookup2(modname, verinfo) != NULL) return (EEXIST); if (kldname != NULL) - pathname = linker_strdup(kldname); + pathname = strdup(kldname, M_LINKER); else if (rootvnode == NULL) pathname = NULL; else From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 05:30:14 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9229B94; Fri, 16 Aug 2013 05:30:14 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 667292FBE; Fri, 16 Aug 2013 05:30:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G5UE9d004660; Fri, 16 Aug 2013 05:30:14 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G5UEcB004658; Fri, 16 Aug 2013 05:30:14 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201308160530.r7G5UEcB004658@svn.freebsd.org> From: Glen Barber Date: Fri, 16 Aug 2013 05:30:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254397 - head/usr.sbin/makefs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 05:30:14 -0000 Author: gjb Date: Fri Aug 16 05:30:13 2013 New Revision: 254397 URL: http://svnweb.freebsd.org/changeset/base/254397 Log: Mark the makefs(8) '-p' flag as deprecated in preference for the '-Z' flag for compatibility with NetBSD. Submitted by: Eric van Gyzen (via stable@) MFC after: 3 days Modified: head/usr.sbin/makefs/makefs.8 head/usr.sbin/makefs/makefs.c Modified: head/usr.sbin/makefs/makefs.8 ============================================================================== --- head/usr.sbin/makefs/makefs.8 Fri Aug 16 03:41:41 2013 (r254396) +++ head/usr.sbin/makefs/makefs.8 Fri Aug 16 05:30:13 2013 (r254397) @@ -35,7 +35,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 22, 2012 +.Dd August 16, 2013 .Dt MAKEFS 8 .Os .Sh NAME @@ -43,7 +43,7 @@ .Nd create a file system image from a directory tree or a mtree manifest .Sh SYNOPSIS .Nm -.Op Fl Dpx +.Op Fl DxZ .Op Fl B Ar byte-order .Op Fl b Ar free-blocks .Op Fl d Ar debug-mask @@ -191,7 +191,10 @@ Set file system specific options. is a comma separated list of options. Valid file system specific options are detailed below. .It Fl p -Create the image as a sparse file. +Deprecated. +See the +.Fl Z +flag. .It Fl S Ar sector-size Set the file system sector size to .Ar sector-size . @@ -213,6 +216,8 @@ ISO 9660 file system. .El .It Fl x Exclude file system nodes not explicitly listed in the specfile. +.It Fl Z +Create the image as a sparse file. .El .Pp Where sizes are specified, a decimal number of bytes is expected. Modified: head/usr.sbin/makefs/makefs.c ============================================================================== --- head/usr.sbin/makefs/makefs.c Fri Aug 16 03:41:41 2013 (r254396) +++ head/usr.sbin/makefs/makefs.c Fri Aug 16 05:30:13 2013 (r254397) @@ -113,7 +113,7 @@ main(int argc, char *argv[]) start_time.tv_sec = start.tv_sec; start_time.tv_nsec = start.tv_usec * 1000; - while ((ch = getopt(argc, argv, "B:b:Dd:f:F:M:m:N:o:ps:S:t:x")) != -1) { + while ((ch = getopt(argc, argv, "B:b:Dd:f:F:M:m:N:o:ps:S:t:xZ")) != -1) { switch (ch) { case 'B': @@ -205,6 +205,7 @@ main(int argc, char *argv[]) break; } case 'p': + /* Deprecated in favor of 'Z' */ fsoptions.sparse = 1; break; @@ -233,6 +234,11 @@ main(int argc, char *argv[]) fsoptions.onlyspec = 1; break; + case 'Z': + /* Superscedes 'p' for compatibility with NetBSD makefs(8) */ + fsoptions.sparse = 1; + break; + case '?': default: usage(); @@ -354,7 +360,7 @@ usage(void) fprintf(stderr, "usage: %s [-t fs-type] [-o fs-options] [-d debug-mask] [-B endian]\n" "\t[-S sector-size] [-M minimum-size] [-m maximum-size] [-s image-size]\n" -"\t[-b free-blocks] [-f free-files] [-F mtree-specfile] [-px]\n" +"\t[-b free-blocks] [-f free-files] [-F mtree-specfile] [-xZ]\n" "\t[-N userdb-dir] image-file directory | manifest [extra-directory ...]\n", prog); exit(1); From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 07:02:18 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id CFAB52D5; Fri, 16 Aug 2013 07:02:18 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BCDC22455; Fri, 16 Aug 2013 07:02:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G72IrF040410; Fri, 16 Aug 2013 07:02:18 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G72HEK040403; Fri, 16 Aug 2013 07:02:17 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201308160702.r7G72HEK040403@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 16 Aug 2013 07:02:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254400 - in head/usr.bin/calendar: . calendars/ru_RU.UTF-8 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 07:02:18 -0000 Author: glebius Date: Fri Aug 16 07:02:17 2013 New Revision: 254400 URL: http://svnweb.freebsd.org/changeset/base/254400 Log: Provide UTF-8 version of russian calendars. Added: head/usr.bin/calendar/calendars/ru_RU.UTF-8/ - copied from r254399, head/usr.bin/calendar/calendars/ru_RU.KOI8-R/ Modified: head/usr.bin/calendar/Makefile head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all (contents, props changed) head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday (contents, props changed) head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan Modified: head/usr.bin/calendar/Makefile ============================================================================== --- head/usr.bin/calendar/Makefile Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/Makefile Fri Aug 16 07:02:17 2013 (r254400) @@ -8,7 +8,7 @@ DPADD= ${LIBM} LDADD= -lm INTER= de_AT.ISO_8859-15 de_DE.ISO8859-1 fr_FR.ISO8859-1 \ hr_HR.ISO8859-2 hu_HU.ISO8859-2 pt_BR.ISO8859-1 \ - pt_BR.UTF-8 ru_RU.KOI8-R uk_UA.KOI8-U + pt_BR.UTF-8 ru_RU.KOI8-R ru_RU.UTF-8 uk_UA.KOI8-U DE_LINKS= de_DE.ISO8859-15 FR_LINKS= fr_FR.ISO8859-15 TEXTMODE?= 444 Modified: head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.all Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.all Fri Aug 16 07:02:17 2013 (r254400) @@ -1,16 +1,16 @@ /* - * òÕÓÓËÉÊ ËÁÌÅÎÄÁÒØ + * РуÑÑкий календарь * * $FreeBSD$ */ -#ifndef _ru_RU_KOI8_R_all_ -#define _ru_RU_KOI8_R_all_ +#ifndef _ru_RU_UTF_8_all_ +#define _ru_RU_UTF_8_all_ -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#endif /* !_ru_RU_KOI8_R_all_ */ +#endif /* !_ru_RU_UTF_8_all_ */ Modified: head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.common Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.common Fri Aug 16 07:02:17 2013 (r254400) @@ -1,105 +1,105 @@ /* - * òÏÓÓÉÊÓËÉÅ ÐÒÁÚÄÎÉËÉ + * РоÑÑийÑкие праздники * * $FreeBSD$ */ -#ifndef _ru_RU_KOI8_R_common_ -#define _ru_RU_KOI8_R_common_ +#ifndef _ru_RU_UTF_8_common_ +#define _ru_RU_UTF_8_common_ -LANG=ru_RU.KOI8-R +LANG=ru_RU.UTF-8 -12 ÑÎ× äÅÎØ ÒÁÂÏÔÎÉËÁ ÐÒÏËÕÒÁÔÕÒÙ -13 ÑÎ× äÅÎØ ÒÏÓÓÉÊÓËÏÊ ÐÅÞÁÔÉ -14 ÑÎ× óÔÁÒÙÊ îÏ×ÙÊ ÇÏÄ -21 ÑÎ× äÅÎØ ÉÎÖÅÎÅÒÎÙÈ ×ÏÊÓË -25 ÑÎ× ôÁÔØÑÎÉÎ ÄÅÎØ. óÔÕÄÅÎÞÅÓËÉÊ ÐÒÁÚÄÎÉË - 8 ÆÅ× äÅÎØ ÒÏÓÓÉÊÓËÏÊ ÎÁÕËÉ -10 ÆÅ× äÅÎØ ÄÉÐÌÏÍÁÔÉÞÅÓËÏÇÏ ÒÁÂÏÔÎÉËÁ - 1 ÍÁÒ ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ÇÒÁÖÄÁÎÓËÏÊ ÏÂÏÒÏÎÙ -03/SunSecond äÅÎØ ÒÁÂÏÔÎÉËÏ× ÇÅÏÄÅÚÉÉ É ËÁÒÔÏÇÒÁÆÉÉ -11 ÍÁÒ äÅÎØ ÒÁÂÏÔÎÉËÁ ÏÒÇÁÎÏ× ÎÁÒËÏËÏÎÔÒÏÌÑ -18 ÍÁÒ äÅÎØ ÎÁÌÏÇÏ×ÏÊ ÐÏÌÉÃÉÉ -03/SunThird äÅÎØ ÒÁÂÏÔÎÉËÏ× ÔÏÒÇÏ×ÌÉ, ÂÙÔÏ×ÏÇÏ ÏÂÓÌÕÖÉ×ÁÎÉÑ ÎÁÓÅÌÅÎÉÑ É ÖÉÌÉÝÎÏ-ËÏÍÍÕÎÁÌØÎÏÇÏ ÈÏÚÑÊÓÔ×Á -27 ÍÁÒ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÔÅÁÔÒÁ -27 ÍÁÒ äÅÎØ ×ÎÕÔÒÅÎÎÉÈ ×ÏÊÓË - 1 ÁÐÒ äÅÎØ ÓÍÅÈÁ - 2 ÁÐÒ äÅÎØ ÅÄÉÎÅÎÉÑ ÎÁÒÏÄÏ× -04/SunFirst äÅÎØ ÇÅÏÌÏÇÁ -12 ÁÐÒ äÅÎØ ËÏÓÍÏÎÁ×ÔÉËÉ -04/SunSecond äÅÎØ ×ÏÊÓË ÐÒÏÔÉ×Ï×ÏÚÄÕÛÎÏÊ ÏÂÏÒÏÎÙ -26 ÁÐÒ äÅÎØ ÐÁÍÑÔÉ ÐÏÇÉÂÛÉÈ × ÒÁÄÉÁÃÉÏÎÎÙÈ Á×ÁÒÉÑÈ É ËÁÔÁÓÔÒÏÆÁÈ -30 ÁÐÒ äÅÎØ ÐÏÖÁÒÎÏÊ ÏÈÒÁÎÙ - 7 ÍÁÊ äÅÎØ ÒÁÄÉÏ -17 ÍÁÊ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÔÅÌÅËÏÍÍÕÎÉËÁÃÉÊ -18 ÍÁÊ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÍÕÚÅÅ× -24 ÍÁÊ äÅÎØ ÓÌÁ×ÑÎÓËÏÊ ÐÉÓØÍÅÎÎÏÓÔÉ É ËÕÌØÔÕÒÙ -26 ÍÁÊ äÅÎØ ÒÏÓÓÉÊÓËÏÇÏ ÐÒÅÄÐÒÉÎÉÍÁÔÅÌØÓÔ×Á -27 ÍÁÊ ïÂÝÅÒÏÓÓÉÊÓËÉÊ ÄÅÎØ ÂÉÂÌÉÏÔÅË -28 ÍÁÊ äÅÎØ ÐÏÇÒÁÎÉÞÎÉËÁ -30 ÍÁÊ äÅÎØ ÐÏÖÁÒÎÏÊ ÏÈÒÁÎÙ -31 ÍÁÊ äÅÎØ òÏÓÓÉÊÓËÏÊ áÄ×ÏËÁÔÕÒÙ -05/SunLast äÅÎØ ÈÉÍÉËÁ - 1 ÉÀÎ äÅÎØ ÚÁÝÉÔÙ ÄÅÔÅÊ - 5 ÉÀÎ äÅÎØ ÜËÏÌÏÇÁ - 6 ÉÀÎ ðÕÛËÉÎÓËÉÊ ÄÅÎØ - 8 ÉÀÎ äÅÎØ ÓÏÃÉÁÌØÎÏÇÏ ÒÁÂÏÔÎÉËÁ -06/SunSecond äÅÎØ ÒÁÂÏÔÎÉËÏ× ÌÅÇËÏÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ -06/SunThird äÅÎØ ÍÅÄÉÃÉÎÓËÏÇÏ ÒÁÂÏÔÎÉËÁ -22 ÉÀÎ äÅÎØ ÐÁÍÑÔÉ É ÓËÏÒÂÉ (îÁÞÁÌÏ ÷ÅÌÉËÏÊ ïÔÅÞÅÓÔ×ÅÎÎÏÊ ÷ÏÊÎÙ, 1941 ÇÏÄ) -27 ÉÀÎ äÅÎØ ÍÏÌÏÄÅÖÉ -29 ÉÀÎ äÅÎØ ÐÁÒÔÉÚÁÎ É ÐÏÄÐÏÌØÝÉËÏ× -06/SatLast äÅÎØ ÉÚÏÂÒÅÔÁÔÅÌÑ É ÒÁÃÉÏÎÁÌÉÚÁÔÏÒÁ -07/SunFirst äÅÎØ ÒÁÂÏÔÎÉËÏ× ÍÏÒÓËÏÇÏ É ÒÅÞÎÏÇÏ ÆÌÏÔÁ -07/SunSecond äÅÎØ ÒÙÂÁËÁ -07/SunSecond äÅÎØ ÒÏÓÓÉÊÓËÏÊ ÐÏÞÔÙ -07/SunThird äÅÎØ ÍÅÔÁÌÌÕÒÇÁ -07/SunLast äÅÎØ ÷ÏÅÎÎÏ-íÏÒÓËÏÇÏ æÌÏÔÁ -28 ÉÀÌ äÅÎØ ËÒÅÝÅÎÉÑ òÕÓÉ - 6 Á×Ç äÅÎØ ÖÅÌÅÚÎÏÄÏÒÏÖÎÙÈ ×ÏÊÓË -08/SunFirst äÅÎØ ÖÅÌÅÚÎÏÄÏÒÏÖÎÉËÁ -12 Á×Ç äÅÎØ ×ÏÅÎÎÏ-×ÏÚÄÕÛÎÙÈ ÓÉÌ -08/SunSecond äÅÎØ ÓÔÒÏÉÔÅÌÑ -08/SunThird äÅÎØ ÷ÏÚÄÕÛÎÏÇÏ æÌÏÔÁ -22 Á×Ç äÅÎØ ÇÏÓÕÄÁÒÓÔ×ÅÎÎÏÇÏ ÆÌÁÇÁ -27 Á×Ç äÅÎØ ËÉÎÏ -08/SunLast äÅÎØ ÛÁÈÔÅÒÁ - 1 ÓÅÎ äÅÎØ ÚÎÁÎÉÊ - 2 ÓÅÎ äÅÎØ ÒÏÓÓÉÊÓËÏÊ Ç×ÁÒÄÉÉ - 3 ÓÅÎ äÅÎØ ÓÏÌÉÄÁÒÎÏÓÔÉ × ÂÏÒØÂÅ Ó ÔÅÒÒÏÒÉÚÍÏÍ - 4 ÓÅÎ äÅÎØ ÓÐÅÃÉÁÌÉÓÔÁ ÐÏ ÑÄÅÒÎÏÍÕ ÏÂÅÓÐÅÞÅÎÉÀ -09/SunFirst äÅÎØ ÒÁÂÏÔÎÉËÏ× ÎÅÆÔÑÎÏÊ É ÇÁÚÏ×ÏÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ -09/SunSecond äÅÎØ ÔÁÎËÉÓÔÁ -09/SunThird äÅÎØ ÒÁÂÏÔÎÉËÏ× ÌÅÓÁ -28 ÓÅÎ äÅÎØ ÒÁÂÏÔÎÉËÁ ÁÔÏÍÎÏÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ -09/SunLast äÅÎØ ÍÁÛÉÎÏÓÔÒÏÉÔÅÌÑ - 1 ÏËÔ äÅÎØ ÐÏÖÉÌÙÈ ÌÀÄÅÊ - 1 ÏËÔ äÅÎØ ÓÕÈÏÐÕÔÎÙÈ ×ÏÊÓË - 4 ÏËÔ äÅÎØ ËÏÓÍÉÞÅÓËÉÈ ×ÏÊÓË - 5 ÏËÔ äÅÎØ ÕÞÉÔÅÌÑ -14 ÏËÔ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÓÔÁÎÄÁÒÔÉÚÁÃÉÉ -10/SunSecond äÅÎØ ÒÁÂÏÔÎÉËÏ× ÓÅÌØÓËÏÇÏ ÈÏÚÑÊÓÔ×Á É ÐÅÒÅÒÁÂÁÔÙ×ÁÀÝÅÊ ÐÒÏÍÙÛÌÅÎÎÏÓÔÉ -10/SunThird äÅÎØ ÒÁÂÏÔÎÉËÏ× ÄÏÒÏÖÎÏÇÏ ÈÏÚÑÊÓÔ×Á -24 ÏËÔ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ïïî -25 ÏËÔ äÅÎØ ÔÁÍÏÖÅÎÎÉËÁ -30 ÏËÔ äÅÎØ ÐÁÍÑÔÉ ÖÅÒÔ× ÐÏÌÉÔÉÞÅÓËÉÈ ÒÅÐÒÅÓÓÉÊ -10/SunLast äÅÎØ ÒÁÂÏÔÎÉËÏ× Á×ÔÏÍÏÂÉÌØÎÏÇÏ ÔÒÁÎÓÐÏÒÔÁ - 7 ÎÏÑ äÅÎØ ÏËÔÑÂÒØÓËÏÊ ÒÅ×ÏÌÀÃÉÉ 1917 ÇÏÄÁ - 9 ÎÏÑ ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ËÁÞÅÓÔ×Á -10 ÎÏÑ äÅÎØ ÍÉÌÉÃÉÉ -16 ÎÏÑ äÅÎØ ÍÏÒÓËÏÊ ÐÅÈÏÔÙ -17 ÎÏÑ íÅÖÄÕÎÁÒÏÄÎÙÊ ÄÅÎØ ÓÔÕÄÅÎÔÏ× -19 ÎÏÑ äÅÎØ ÒÁËÅÔÎÙÈ ×ÏÊÓË É ÁÒÔÉÌÌÅÒÉÉ -21 ÎÏÑ äÅÎØ ÒÁÂÏÔÎÉËÏ× ÎÁÌÏÇÏ×ÙÈ ÏÒÇÁÎÏ× -26 ÎÏÑ ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ÉÎÆÏÒÍÁÃÉÉ -11/SunLast äÅÎØ ÍÁÔÅÒÉ - 1 ÄÅË ÷ÓÅÍÉÒÎÙÊ ÄÅÎØ ÂÏÒØÂÙ ÓÏ óðéäÏÍ - 3 ÄÅË äÅÎØ ÀÒÉÓÔÁ - 9 ÄÅË äÅÎØ çÅÒÏÅ× ïÔÅÞÅÓÔ×Á -12 ÄÅË äÅÎØ ëÏÎÓÔÉÔÕÃÉÉ -17 ÄÅË äÅÎØ ÒÁËÅÔÎÙÈ ×ÏÊÓË ÓÔÒÁÔÅÇÉÞÅÓËÏÇÏ ÎÁÚÎÁÞÅÎÉÑ -20 ÄÅË äÅÎØ ÒÁÂÏÔÎÉËÁ ÏÒÇÁÎÏ× ÂÅÚÏÐÁÓÎÏÓÔÉ -22 ÄÅË äÅÎØ ÜÎÅÒÇÅÔÉËÁ -27 ÄÅË äÅÎØ ÓÐÁÓÁÔÅÌÑ +12 Ñнв День работника прокуратуры +13 Ñнв День роÑÑийÑкой печати +14 Ñнв Старый Ðовый год +21 Ñнв День инженерных войÑк +25 Ñнв ТатьÑнин день. СтуденчеÑкий праздник + 8 фев День роÑÑийÑкой науки +10 фев День дипломатичеÑкого работника + 1 мар Ð’Ñемирный день гражданÑкой обороны +03/SunSecond День работников геодезии и картографии +11 мар День работника органов Ð½Ð°Ñ€ÐºÐ¾ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ +18 мар День налоговой полиции +03/SunThird День работников торговли, бытового обÑÐ»ÑƒÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð½Ð°ÑÐµÐ»ÐµÐ½Ð¸Ñ Ð¸ жилищно-коммунального хозÑйÑтва +27 мар Международный день театра +27 мар День внутренних войÑк + 1 апр День Ñмеха + 2 апр День ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð°Ñ€Ð¾Ð´Ð¾Ð² +04/SunFirst День геолога +12 апр День коÑмонавтики +04/SunSecond День войÑк противовоздушной обороны +26 апр День памÑти погибших в радиационных авариÑÑ… и катаÑтрофах +30 апр День пожарной охраны + 7 май День радио +17 май Международный день телекоммуникаций +18 май Международный день музеев +24 май День ÑлавÑнÑкой пиÑьменноÑти и культуры +26 май День роÑÑийÑкого предпринимательÑтва +27 май ОбщероÑÑийÑкий день библиотек +28 май День пограничника +30 май День пожарной охраны +31 май День РоÑÑийÑкой Ðдвокатуры +05/SunLast День химика + 1 июн День защиты детей + 5 июн День Ñколога + 6 июн ПушкинÑкий день + 8 июн День Ñоциального работника +06/SunSecond День работников легкой промышленноÑти +06/SunThird День медицинÑкого работника +22 июн День памÑти и Ñкорби (Ðачало Великой ОтечеÑтвенной Войны, 1941 год) +27 июн День молодежи +29 июн День партизан и подпольщиков +06/SatLast День Ð¸Ð·Ð¾Ð±Ñ€ÐµÑ‚Ð°Ñ‚ÐµÐ»Ñ Ð¸ рационализатора +07/SunFirst День работников морÑкого и речного флота +07/SunSecond День рыбака +07/SunSecond День роÑÑийÑкой почты +07/SunThird День металлурга +07/SunLast День Военно-МорÑкого Флота +28 июл День ÐºÑ€ÐµÑ‰ÐµÐ½Ð¸Ñ Ð ÑƒÑи + 6 авг День железнодорожных войÑк +08/SunFirst День железнодорожника +12 авг День военно-воздушных Ñил +08/SunSecond День ÑÑ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»Ñ +08/SunThird День Воздушного Флота +22 авг День гоÑударÑтвенного флага +27 авг День кино +08/SunLast День шахтера + 1 Ñен День знаний + 2 Ñен День роÑÑийÑкой гвардии + 3 Ñен День ÑолидарноÑти в борьбе Ñ Ñ‚ÐµÑ€Ñ€Ð¾Ñ€Ð¸Ð·Ð¼Ð¾Ð¼ + 4 Ñен День ÑпециалиÑта по Ñдерному обеÑпечению +09/SunFirst День работников нефтÑной и газовой промышленноÑти +09/SunSecond День танкиÑта +09/SunThird День работников леÑа +28 Ñен День работника атомной промышленноÑти +09/SunLast День машиноÑÑ‚Ñ€Ð¾Ð¸Ñ‚ÐµÐ»Ñ + 1 окт День пожилых людей + 1 окт День Ñухопутных войÑк + 4 окт День коÑмичеÑких войÑк + 5 окт День ÑƒÑ‡Ð¸Ñ‚ÐµÐ»Ñ +14 окт Международный день Ñтандартизации +10/SunSecond День работников ÑельÑкого хозÑйÑтва и перерабатывающей промышленноÑти +10/SunThird День работников дорожного хозÑйÑтва +24 окт Международный день ООР+25 окт День таможенника +30 окт День памÑти жертв политичеÑких репреÑÑий +10/SunLast День работников автомобильного транÑпорта + 7 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ октÑбрьÑкой революции 1917 года + 9 Ð½Ð¾Ñ Ð’Ñемирный день качеÑтва +10 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ милиции +16 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ морÑкой пехоты +17 Ð½Ð¾Ñ ÐœÐµÐ¶Ð´ÑƒÐ½Ð°Ñ€Ð¾Ð´Ð½Ñ‹Ð¹ день Ñтудентов +19 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ ракетных войÑк и артиллерии +21 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ работников налоговых органов +26 Ð½Ð¾Ñ Ð’Ñемирный день информации +11/SunLast День матери + 1 дек Ð’Ñемирный день борьбы Ñо СПИДом + 3 дек День юриÑта + 9 дек День Героев ОтечеÑтва +12 дек День КонÑтитуции +17 дек День ракетных войÑк ÑтратегичеÑкого Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ +20 дек День работника органов безопаÑноÑти +22 дек День Ñнергетика +27 дек День ÑпаÑÐ°Ñ‚ÐµÐ»Ñ -#endif /* !_ru_RU_KOI8_R_common_ */ +#endif /* !_ru_RU_UTF_8_common_ */ Modified: head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.holiday Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.holiday Fri Aug 16 07:02:17 2013 (r254400) @@ -1,25 +1,25 @@ /* - * òÏÓÓÉÊÓËÉÅ ÐÒÁÚÄÎÉËÉ (ÎÅÒÁÂÏÞÉÅ "ËÒÁÓÎÙÅ" ÄÎÉ) + * РоÑÑийÑкие праздники (нерабочие "краÑные" дни) * * $FreeBSD$ */ -#ifndef _ru_RU_KOI8_R_holiday_ -#define _ru_RU_KOI8_R_holiday_ +#ifndef _ru_RU_UTF_8_holiday_ +#define _ru_RU_UTF_8_holiday_ -LANG=ru_RU.KOI8-R +LANG=ru_RU.UTF-8 - 1 ÑÎ× îÏ×ÙÊ ÇÏÄ - 2 ÑÎ× îÏ×ÏÇÏÄÎÉÅ ËÁÎÉËÕÌÙ - 3 ÑÎ× îÏ×ÏÇÏÄÎÉÅ ËÁÎÉËÕÌÙ - 4 ÑÎ× îÏ×ÏÇÏÄÎÉÅ ËÁÎÉËÕÌÙ - 5 ÑÎ× îÏ×ÏÇÏÄÎÉÅ ËÁÎÉËÕÌÙ - 7 ÑÎ× òÏÖÄÅÓÔ×Ï èÒÉÓÔÏ×Ï -23 ÆÅ× äÅÎØ ÚÁÝÉÔÎÉËÁ ïÔÅÞÅÓÔ×Á - 8 ÍÁÒ íÅÖÄÕÎÁÒÏÄÎÙÊ ÖÅÎÓËÉÊ ÄÅÎØ - 1 ÍÁÊ ðÒÁÚÄÎÉË ÷ÅÓÎÙ É ôÒÕÄÁ - 9 ÍÁÊ äÅÎØ ðÏÂÅÄÙ -12 ÉÀÎ äÅÎØ òÏÓÓÉÉ - 4 ÎÏÑ äÅÎØ ÎÁÒÏÄÎÏÇÏ ÅÄÉÎÓÔ×Á + 1 Ñнв Ðовый год + 2 Ñнв Ðовогодние каникулы + 3 Ñнв Ðовогодние каникулы + 4 Ñнв Ðовогодние каникулы + 5 Ñнв Ðовогодние каникулы + 7 Ñнв РождеÑтво ХриÑтово +23 фев День защитника ОтечеÑтва + 8 мар Международный женÑкий день + 1 май Праздник ВеÑны и Труда + 9 май День Победы +12 июн День РоÑÑии + 4 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ народного единÑтва -#endif /* !_ru_RU_KOI8_R_holiday_ */ +#endif /* !_ru_RU_UTF_8_holiday_ */ Modified: head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.military Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.military Fri Aug 16 07:02:17 2013 (r254400) @@ -1,28 +1,28 @@ /* - * äÎÉ ×ÏÉÎÓËÏÊ ÓÌÁ×Ù òÏÓÓÉÉ + * Дни воинÑкой Ñлавы РоÑÑии * * $FreeBSD$ */ -#ifndef _ru_RU_KOI8_R_military_ -#define _ru_RU_KOI8_R_military_ +#ifndef _ru_RU_UTF_8_military_ +#define _ru_RU_UTF_8_military_ -LANG=ru_RU.KOI8-R +LANG=ru_RU.UTF-8 -27 ÑÎ× äÅÎØ ÓÎÑÔÉÑ ÂÌÏËÁÄÙ ÇÏÒÏÄÁ ìÅÎÉÎÇÒÁÄÁ (1944 ÇÏÄ) - 2 ÆÅ× äÅÎØ ÒÁÚÇÒÏÍÁ ÓÏ×ÅÔÓËÉÍÉ ×ÏÊÓËÁÍÉ ÎÅÍÅÃËÏ-ÆÁÛÉÓÔÓËÉÈ ×ÏÊÓË × óÔÁÌÉÎÇÒÁÄÓËÏÊ ÂÉÔ×Å (1943 ÇÏÄ) -23 ÆÅ× äÅÎØ ÐÏÂÅÄÙ ëÒÁÓÎÏÊ áÒÍÉÉ ÎÁÄ ËÁÊÚÅÒÏ×ÓËÉÍÉ ×ÏÊÓËÁÍÉ çÅÒÍÁÎÉÉ (1918 ÇÏÄ) -18 ÁÐÒ äÅÎØ ÐÏÂÅÄÙ ÒÕÓÓËÉÈ ×ÏÉÎÏ× ËÎÑÚÑ áÌÅËÓÁÎÄÒÁ îÅ×ÓËÏÇÏ ÎÁÄ ÎÅÍÅÃËÉÍÉ ÒÙÃÁÒÑÍÉ ÎÁ þÕÄÓËÏÍ ÏÚÅÒÅ (ìÅÄÏ×ÏÅ ÐÏÂÏÉÝÅ, 1242 ÇÏÄ) -10 ÉÀÌ äÅÎØ ÐÏÂÅÄÙ ÒÕÓÓËÏÊ ÁÒÍÉÉ ÐÏÄ ËÏÍÁÎÄÏ×ÁÎÉÅÍ ðÅÔÒÁ ðÅÒ×ÏÇÏ ÎÁÄ Û×ÅÄÁÍÉ × ðÏÌÔÁ×ÓËÏÍ ÓÒÁÖÅÎÉÉ (1709 ÇÏÄ) - 9 Á×Ç äÅÎØ ÐÅÒ×ÏÊ × ÒÏÓÓÉÊÓËÏÊ ÉÓÔÏÒÉÉ ÍÏÒÓËÏÊ ÐÏÂÅÄÙ ÒÕÓÓËÏÇÏ ÆÌÏÔÁ ÐÏÄ ËÏÍÁÎÄÏ×ÁÎÉÅÍ ðÅÔÒÁ ðÅÒ×ÏÇÏ ÎÁÄ Û×ÅÄÁÍÉ Õ ÍÙÓÁ çÁÎÇÕÔ (1714 ÇÏÄ) -23 Á×Ç äÅÎØ ÒÁÚÇÒÏÍÁ ÓÏ×ÅÔÓËÉÍÉ ×ÏÊÓËÁÍÉ ÎÅÍÅÃËÏ-ÆÁÛÉÓÔÓËÉÈ ×ÏÊÓË × ëÕÒÓËÏÊ ÂÉÔ×Å (1943 ÇÏÄ) - 2 ÓÅÎ äÅÎØ ÏËÏÎÞÁÎÉÑ ÷ÔÏÒÏÊ ÍÉÒÏ×ÏÊ ×ÏÊÎÙ (1945 ÇÏÄ) - 8 ÓÅÎ äÅÎØ âÏÒÏÄÉÎÓËÏÇÏ ÓÒÁÖÅÎÉÑ ÒÕÓÓËÏÊ ÁÒÍÉÉ ÐÏÄ ËÏÍÁÎÄÏ×ÁÎÉÅÍ í.é. ëÕÔÕÚÏ×Á Ó ÆÒÁÎÃÕÚÓËÏÊ ÁÒÍÉÅÊ (1812 ÇÏÄ) -11 ÓÅÎ äÅÎØ ÐÏÂÅÄÙ ÒÕÓÓËÏÊ ÜÓËÁÄÒÙ ÐÏÄ ËÏÍÁÎÄÏ×ÁÎÉÅÍ æ.æ. õÛÁËÏ×Á ÎÁÄ ÔÕÒÅÃËÏÊ ÜÓËÁÄÒÏÊ Õ ÍÙÓÁ ôÅÎÄÒÁ (1790 ÇÏÄ) -21 ÓÅÎ äÅÎØ ÐÏÂÅÄÙ ÒÕÓÓËÉÈ ÐÏÌËÏ× ×Ï ÇÌÁ×Å Ó ×ÅÌÉËÉÍ ËÎÑÚÅÍ äÍÉÔÒÉÅÍ äÏÎÓËÉÍ ÎÁÄ ÍÏÎÇÏÌÏ-ÔÁÔÁÒÓËÉÍÉ ×ÏÊÓËÁÍÉ × ëÕÌÉËÏ×ÓËÏÊ ÂÉÔ×Å (1380 ÇÏÄ) - 7 ÎÏÑ äÅÎØ ÏÓ×ÏÂÏÖÄÅÎÉÑ íÏÓË×Ù ÓÉÌÁÍÉ ÎÁÒÏÄÎÏÇÏ ÏÐÏÌÞÅÎÉÑ ÐÏÄ ÒÕËÏ×ÏÄÓÔ×ÏÍ ëÕÚØÍÙ íÉÎÉÎÁ É äÍÉÔÒÉÑ ðÏÖÁÒÓËÏÇÏ ÏÔ ÐÏÌØÓËÉÈ ÉÎÔÅÒ×ÅÎÔÏ× (1612 ÇÏÄ) - 1 ÄÅË äÅÎØ ÐÏÂÅÄÙ ÒÕÓÓËÏÊ ÜÓËÁÄÒÙ ÐÏÄ ËÏÍÁÎÄÏ×ÁÎÉÅÍ ð.ó. îÁÈÉÍÏ×Á ÎÁÄ ÔÕÒÅÃËÏÊ ÜÓËÁÄÒÏÊ Õ ÍÙÓÁ óÉÎÏÐ (1853 ÇÏÄ) - 5 ÄÅË äÅÎØ ÎÁÞÁÌÁ ËÏÎÔÒÎÁÓÔÕÐÌÅÎÉÑ ÓÏ×ÅÔÓËÉÈ ×ÏÊÓË ÐÒÏÔÉ× ÎÅÍÅÃËÏ-ÆÁÛÉÓÔÓËÉÈ ×ÏÊÓË × ÂÉÔ×Å ÐÏÄ íÏÓË×ÏÊ (1941 ÇÏÄ) -24 ÄÅË äÅÎØ ×ÚÑÔÉÑ ÔÕÒÅÃËÏÊ ËÒÅÐÏÓÔÉ éÚÍÁÉÌ ÒÕÓÓËÉÍÉ ×ÏÊÓËÁÍÉ ÐÏÄ ËÏÍÁÎÄÏ×ÁÎÉÅÍ á.÷. óÕ×ÏÒÏ×Á (1790 ÇÏÄ) +27 Ñнв День ÑнÑÑ‚Ð¸Ñ Ð±Ð»Ð¾ÐºÐ°Ð´Ñ‹ города Ленинграда (1944 год) + 2 фев День разгрома ÑоветÑкими войÑками немецко-фашиÑÑ‚Ñких войÑк в СталинградÑкой битве (1943 год) +23 фев День победы КраÑной Ðрмии над кайзеровÑкими войÑками Германии (1918 год) +18 апр День победы руÑÑких воинов кнÑÐ·Ñ ÐлекÑандра ÐевÑкого над немецкими рыцарÑми на ЧудÑком озере (Ледовое побоище, 1242 год) +10 июл День победы руÑÑкой армии под командованием Петра Первого над шведами в ПолтавÑком Ñражении (1709 год) + 9 авг День первой в роÑÑийÑкой иÑтории морÑкой победы руÑÑкого флота под командованием Петра Первого над шведами у мыÑа Гангут (1714 год) +23 авг День разгрома ÑоветÑкими войÑками немецко-фашиÑÑ‚Ñких войÑк в КурÑкой битве (1943 год) + 2 Ñен День Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð’Ñ‚Ð¾Ñ€Ð¾Ð¹ мировой войны (1945 год) + 8 Ñен День БородинÑкого ÑÑ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ñ€ÑƒÑÑкой армии под командованием Ðœ.И. Кутузова Ñ Ñ„Ñ€Ð°Ð½Ñ†ÑƒÐ·Ñкой армией (1812 год) +11 Ñен День победы руÑÑкой ÑÑкадры под командованием Ф.Ф. Ушакова над турецкой ÑÑкадрой у мыÑа Тендра (1790 год) +21 Ñен День победы руÑÑких полков во главе Ñ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ кнÑзем Дмитрием ДонÑким над монголо-татарÑкими войÑками в КуликовÑкой битве (1380 год) + 7 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ оÑÐ²Ð¾Ð±Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ ÐœÐ¾Ñквы Ñилами народного Ð¾Ð¿Ð¾Ð»Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ руководÑтвом Кузьмы Минина и Ð”Ð¼Ð¸Ñ‚Ñ€Ð¸Ñ ÐŸÐ¾Ð¶Ð°Ñ€Ñкого от польÑких интервентов (1612 год) + 1 дек День победы руÑÑкой ÑÑкадры под командованием П.С. Ðахимова над турецкой ÑÑкадрой у мыÑа Синоп (1853 год) + 5 дек День начала контрнаÑÑ‚ÑƒÐ¿Ð»ÐµÐ½Ð¸Ñ ÑоветÑких войÑк против немецко-фашиÑÑ‚Ñких войÑк в битве под МоÑквой (1941 год) +24 дек День взÑÑ‚Ð¸Ñ Ñ‚ÑƒÑ€ÐµÑ†ÐºÐ¾Ð¹ крепоÑти Измаил руÑÑкими войÑками под командованием Ð.Ð’. Суворова (1790 год) -#endif /* !_ru_RU_KOI8_R_military_ */ +#endif /* !_ru_RU_UTF_8_military_ */ Modified: head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.orthodox Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.orthodox Fri Aug 16 07:02:17 2013 (r254400) @@ -1,36 +1,36 @@ /* - * ðÒÁ×ÏÓÌÁ×ÎÙÅ ÐÒÁÚÄÎÉËÉ + * ПравоÑлавные праздники * * $FreeBSD$ */ -#ifndef _ru_RU_KOI8_R_orthodox_ -#define _ru_RU_KOI8_R_orthodox_ +#ifndef _ru_RU_UTF_8_orthodox_ +#define _ru_RU_UTF_8_orthodox_ -LANG=ru_RU.KOI8-R -Paskha=ðÁÓÈÁ +LANG=ru_RU.UTF-8 +Paskha=ПаÑха -21 ÓÅÎ òÏÖÄÅÓÔ×Ï ðÒÅÓ×ÑÔÏÊ âÏÇÏÒÏÄÉÃÙ -27 ÓÅÎ ÷ÏÚÄ×ÉÖÅÎÉÅ ëÒÅÓÔÁ çÏÓÐÏÄÎÑ -14 ÏËÔ ðÏËÒÏ× ðÒÅÓ×ÑÔÏÊ âÏÇÏÒÏÄÉÃÙ - 4 ÄÅË ÷×ÅÄÅÎÉÅ ×Ï ÈÒÁÍ ðÒÅÓ×ÑÔÏÊ âÏÇÏÒÏÄÉÃÙ - 7 ÑÎ× òÏÖÄÅÓÔ×Ï èÒÉÓÔÏ×Ï -14 ÑÎ× ïÂÒÅÚÁÎÉÅ çÏÓÐÏÄÎÅ -19 ÑÎ× âÏÇÏÑ×ÌÅÎÉÅ ÉÌÉ ëÒÅÝÅÎÉÅ çÏÓÐÏÄÎÅ -15 ÆÅ× óÒÅÔÅÎÉÅ çÏÓÐÏÄÎÅ -ðÁÓÈÁ-48 ÷ÅÌÉËÉÊ ðÏÓÔ -ðÁÓÈÁ-7 ÷ÈÏÄ çÏÓÐÏÄÅÎØ × éÅÒÕÓÁÌÉÍ. ÷ÅÒÂÎÏÅ ÷ÏÓËÒÅÓÅÎØÅ -ðÁÓÈÁ-3 ÷ÅÌÉËÉÊ þÅÔ×ÅÒÇ -ðÁÓÈÁ-2 óÔÒÁÓÔÎÁÑ ðÑÔÎÉÃÁ -ðÁÓÈÁ ÷ÏÓËÒÅÓÅÎÉÅ èÒÉÓÔÏ×Ï -ðÁÓÈÁ+39 ÷ÏÚÎÅÓÅÎÉÅ -ðÁÓÈÁ+49 äÅÎØ ó×ÑÔÏÊ ôÒÏÉÃÙ. ðÑÔÉÄÅÓÑÔÎÉÃÁ - 7 ÁÐÒ âÌÁÇÏ×ÅÝÅÎÉÅ ðÒÅÓ×ÑÔÏÊ âÏÇÏÒÏÄÉÃÙ - 7 ÉÀÌ òÏÖÄÅÓÔ×Ï éÏÁÎÎÁ ðÒÅÄÔÅÞÉ -12 ÉÀÌ äÅÎØ Ó×ÑÔÙÈ ÐÅÒ×Ï×ÅÒÈÏ×ÎÙÈ ÁÐÏÓÔÏÌÏ× ðÅÔÒÁ É ðÁ×ÌÁ -19 Á×Ç ðÒÅÏÂÒÁÖÅÎÉÅ çÏÓÐÏÄÎÅ -28 Á×Ç õÓÐÅÎÉÅ ðÒÅÓ×ÑÔÏÊ âÏÇÏÒÏÄÉÃÙ -11 ÓÅÎ õÓÅËÎÏ×ÅÎÉÅ ÇÌÁ×Ù éÏÁÎÎÁ ðÒÅÄÔÅÞÉ +21 Ñен РождеÑтво ПреÑвÑтой Богородицы +27 Ñен Воздвижение КреÑта ГоÑÐ¿Ð¾Ð´Ð½Ñ +14 окт Покров ПреÑвÑтой Богородицы + 4 дек Введение во храм ПреÑвÑтой Богородицы + 7 Ñнв РождеÑтво ХриÑтово +14 Ñнв Обрезание ГоÑподне +19 Ñнв БогоÑвление или Крещение ГоÑподне +15 фев Сретение ГоÑподне +ПаÑха-48 Великий ПоÑÑ‚ +ПаÑха-7 Вход ГоÑподень в ИеруÑалим. Вербное ВоÑкреÑенье +ПаÑха-3 Великий Четверг +ПаÑха-2 СтраÑÑ‚Ð½Ð°Ñ ÐŸÑтница +ПаÑха ВоÑкреÑение ХриÑтово +ПаÑха+39 ВознеÑение +ПаÑха+49 День СвÑтой Троицы. ПÑтидеÑÑтница + 7 апр Благовещение ПреÑвÑтой Богородицы + 7 июл РождеÑтво Иоанна Предтечи +12 июл День ÑвÑÑ‚Ñ‹Ñ… первоверховных апоÑтолов Петра и Павла +19 авг Преображение ГоÑподне +28 авг УÑпение ПреÑвÑтой Богородицы +11 Ñен УÑекновение главы Иоанна Предтечи -#endif /* !_ru_RU_KOI8_R_orthodox_ */ +#endif /* !_ru_RU_UTF_8_orthodox_ */ Modified: head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan ============================================================================== --- head/usr.bin/calendar/calendars/ru_RU.KOI8-R/calendar.pagan Fri Aug 16 06:42:24 2013 (r254399) +++ head/usr.bin/calendar/calendars/ru_RU.UTF-8/calendar.pagan Fri Aug 16 07:02:17 2013 (r254400) @@ -1,42 +1,42 @@ /* - * ñÚÙÞÅÓËÉÅ ÐÒÁÚÄÎÉËÉ + * ЯзычеÑкие праздники * * $FreeBSD$ */ -#ifndef _ru_RU_KOI8_R_pagan_ -#define _ru_RU_KOI8_R_pagan_ +#ifndef _ru_RU_UTF_8_pagan_ +#define _ru_RU_UTF_8_pagan_ -LANG=ru_RU.KOI8-R -Paskha=ðÁÓÈÁ +LANG=ru_RU.UTF-8 +Paskha=ПаÑха -21 ÄÅË* úÉÍÎÅÅ ÓÏÌÎÃÅÓÔÏÑÎÉÅ -25 ÄÅË ëÏÌÑÄÁ (ÓÄ×ÉÎÕÔÏÅ ÚÉÍÎÅÅ ÓÏÌÎÃÅÓÔÏÑÎÉÅ) - 6 ÑÎ× äÅÎØ ëÁÝÅÑ É ÷ÅÌÅÓÁ -24 ÆÅ× äÅÎØ ÷ÅÌÅÓÁ -29 ÆÅ× äÅÎØ ëÁÝÅÑ - 1 ÍÁÒ äÅÎØ íÁÒÅÎÙ -14 ÍÁÒ îÏ×ÙÊ çÏÄ, ï×ÓÅÎØ ÍÁÌÙÊ -ðÁÓÈÁ-55 íÁÓÌÅÎÉÃÁ -ðÁÓÈÁ+7 ëÒÁÓÎÁÑ çÏÒËÁ -ðÁÓÈÁ+16 òÁÄÕÎÉÃÁ -20 ÍÁÒ* ÷ÅÓÅÎÎÉÅ ÒÁ×ÎÏÄÅÎÓÔ×ÉÅ - 7 ÁÐÒ äÅÎØ íÁÒÅÎÙ (ÓÄ×ÉÎÕÔÏÅ ×ÅÓÅÎÎÅÅ ÒÁ×ÎÏÄÅÎÓÔ×ÉÅ) - 6 ÍÁÊ äÅÎØ äÁÖØÂÏÇÁ, ï×ÓÅÎØ ÂÏÌØÛÏÊ -22 ÍÁÊ ñÒÉÌÉÎ äÅÎØ -15 ÉÀÎ äÅÎØ ôÒÉÇÌÁ×Á -21 ÉÀÎ* ìÅÔÎÅÅ ÓÏÌÎÃÅÓÔÏÑÎÉÅ - 1 ÉÀÌ òÕÓÁÌØÎÁÑ îÅÄÅÌÑ - 7 ÉÀÌ ëÕÐÁÌÁ (ÓÄ×ÉÎÕÔÏÅ ÌÅÔÎÅÅ ÓÏÌÎÃÅÓÔÏÑÎÉÅ) -27 ÉÀÌ ïÔÂÏÒ ÖÅÒÔ× ðÅÒÕÎÕ, ÒÕÓÁÌÉÉ - 2 Á×Ç ðÅÒÕÎÏ× äÅÎØ -21 Á×Ç äÅÎØ óÔÒÉÂÏÇÁ -28 Á×Ç õÓÐÅÎÉÅ úÌÁÔÏÇÏÒËÉ -14 ÓÅÎ äÅÎØ ÷ÏÌÈÁ úÍÅÅ×ÉÞÁ -22 ÓÅÎ* ðÏ×ÏÒÏÔ Ë ÚÉÍÅ (ÏÓÅÎÎÅÅ ÒÁ×ÎÏÄÅÎÓÔ×ÉÅ) -10 ÎÏÑ äÅÎØ íÁËÏÛÉ -21 ÎÏÑ äÅÎØ ó×ÁÒÏÇÁ É óÅÍÁÒÇÌÁ - 9 ÄÅË äÅÎØ äÁÖØÂÏÇÁ É íÁÒÅÎÙ +21 дек* Зимнее ÑолнцеÑтоÑние +25 дек КолÑда (Ñдвинутое зимнее ÑолнцеÑтоÑние) + 6 Ñнв День ÐšÐ°Ñ‰ÐµÑ Ð¸ ВелеÑа +24 фев День ВелеÑа +29 фев День ÐšÐ°Ñ‰ÐµÑ + 1 мар День Марены +14 мар Ðовый Год, ОвÑень малый +ПаÑха-55 МаÑленица +ПаÑха+7 КраÑÐ½Ð°Ñ Ð“Ð¾Ñ€ÐºÐ° +ПаÑха+16 Радуница +20 мар* ВеÑенние равноденÑтвие + 7 апр День Марены (Ñдвинутое веÑеннее равноденÑтвие) + 6 май День Дажьбога, ОвÑень большой +22 май Ярилин День +15 июн День Триглава +21 июн* Летнее ÑолнцеÑтоÑние + 1 июл РуÑÐ°Ð»ÑŒÐ½Ð°Ñ ÐÐµÐ´ÐµÐ»Ñ + 7 июл Купала (Ñдвинутое летнее ÑолнцеÑтоÑние) +27 июл Отбор жертв Перуну, руÑалии + 2 авг Перунов День +21 авг День Стрибога +28 авг УÑпение Златогорки +14 Ñен День Волха Змеевича +22 Ñен* Поворот к зиме (оÑеннее равноденÑтвие) +10 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ Макоши +21 Ð½Ð¾Ñ Ð”ÐµÐ½ÑŒ Сварога и Семаргла + 9 дек День Дажьбога и Марены -#endif /* !_ru_RU_KOI8_R_pagan_ */ +#endif /* !_ru_RU_UTF_8_pagan_ */ From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 07:42:07 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A78B79AF; Fri, 16 Aug 2013 07:42:07 +0000 (UTC) (envelope-from kevlo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9463825E0; Fri, 16 Aug 2013 07:42:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7G7g7a6055606; Fri, 16 Aug 2013 07:42:07 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7G7g7pI055604; Fri, 16 Aug 2013 07:42:07 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201308160742.r7G7g7pI055604@svn.freebsd.org> From: Kevin Lo Date: Fri, 16 Aug 2013 07:42:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254404 - in head: share/man/man4 sys/dev/usb/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 07:42:07 -0000 Author: kevlo Date: Fri Aug 16 07:42:06 2013 New Revision: 254404 URL: http://svnweb.freebsd.org/changeset/base/254404 Log: Bring datasheet URL up to date. Modified: head/share/man/man4/udav.4 head/sys/dev/usb/net/if_udav.c Modified: head/share/man/man4/udav.4 ============================================================================== --- head/share/man/man4/udav.4 Fri Aug 16 07:16:26 2013 (r254403) +++ head/share/man/man4/udav.4 Fri Aug 16 07:42:06 2013 (r254404) @@ -87,7 +87,7 @@ For more information on configuring this .Xr ifconfig 8 .Rs .%T "Davicom DM9601 data sheet" -.%U http://www.davicom.com.tw/big5/download/Data%20Sheet/DM9601-DS-P01-930914.pdf +.%U http://ptm2.cc.utu.fi/ftp/network/cards/DM9601/From_NET/DM9601-DS-P01-930914.pdf .Re .Sh HISTORY The Modified: head/sys/dev/usb/net/if_udav.c ============================================================================== --- head/sys/dev/usb/net/if_udav.c Fri Aug 16 07:16:26 2013 (r254403) +++ head/sys/dev/usb/net/if_udav.c Fri Aug 16 07:42:06 2013 (r254404) @@ -34,7 +34,7 @@ /* * DM9601(DAVICOM USB to Ethernet MAC Controller with Integrated 10/100 PHY) * The spec can be found at the following url. - * http://www.davicom.com.tw/big5/download/Data%20Sheet/DM9601-DS-P01-930914.pdf + * http://ptm2.cc.utu.fi/ftp/network/cards/DM9601/From_NET/DM9601-DS-P01-930914.pdf */ /* From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 09:39:26 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7DC4A1C2; Fri, 16 Aug 2013 09:39:26 +0000 (UTC) (envelope-from ivoras@gmail.com) Received: from mail-vc0-x22d.google.com (mail-vc0-x22d.google.com [IPv6:2607:f8b0:400c:c03::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 05C1F2AFD; Fri, 16 Aug 2013 09:39:25 +0000 (UTC) Received: by mail-vc0-f173.google.com with SMTP id id13so1301363vcb.32 for ; Fri, 16 Aug 2013 02:39:25 -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:from:date:message-id :subject:to:cc:content-type; bh=Zo5C8eCnQm+MK+CUhBRV0ymmhyFSjdhhBPwbCvGcK14=; b=oYuYw0mK8TRxmOz85z9KA07pa0vVGB1gupPqrvD+SZDrj049EvDNT84Mt3jL/d1Q8M UBy6PtGs2gWTYWzncOpB5nr72lNdjl+k/UIcfVeJx4VL+Ypp9tNVkJhXPC9385pMQSkj repPiE/5MsiHGcZTv3djbTGPI3EY8HpCDj2l0QE/RwwrO2hJmC4kHWPY9Hs0r7O9W+hK BdffNgXl+x2TG1hQPrTSjNfScbUhQzhEPTDTsN0wi1NsqzrucpxB54rh2fSO+niGg4ei LSVV6teojzdMA5d9Vv0rzCNf9wKvwTm+I1Mze1IVK5GyfZY2rblZ7ZHzcLnnogKtD+Ir nkzg== X-Received: by 10.58.217.167 with SMTP id oz7mr391754vec.15.1376645965069; Fri, 16 Aug 2013 02:39:25 -0700 (PDT) MIME-Version: 1.0 Sender: ivoras@gmail.com Received: by 10.58.229.167 with HTTP; Fri, 16 Aug 2013 02:38:44 -0700 (PDT) In-Reply-To: <520D49EB.9060308@freebsd.org> References: <201308152019.r7FKJI0H095440@svn.freebsd.org> <520D3AD8.4090207@freebsd.org> <520D49EB.9060308@freebsd.org> From: Ivan Voras Date: Fri, 16 Aug 2013 11:38:44 +0200 X-Google-Sender-Auth: xWmNEaDZaGJB3aJDULewxZMLlEM Message-ID: Subject: Re: svn commit: r254380 - in head/sys: kern sys To: Colin Percival Content-Type: text/plain; charset=UTF-8 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 09:39:26 -0000 > We have a single-writer / multiple-readers lock on *any particular byte* > of a vnode. The rangelock code is what keeps track of this, and the > locking contention I was reducing was in the rangelock bookkeeping. So, for example, if multiple processes or multiple threads read or write a file somewhat unintelligently (a small file, operations on the whole file, like in blogbench), they will effectively content for the byte 0, right? From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 10:53:37 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B3A092E1; Fri, 16 Aug 2013 10:53:37 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 872072E9F; Fri, 16 Aug 2013 10:53:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GArbTO026817; Fri, 16 Aug 2013 10:53:37 GMT (envelope-from des@svn.freebsd.org) Received: (from des@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GArbMo026816; Fri, 16 Aug 2013 10:53:37 GMT (envelope-from des@svn.freebsd.org) Message-Id: <201308161053.r7GArbMo026816@svn.freebsd.org> From: Dag-Erling Smørgrav Date: Fri, 16 Aug 2013 10:53:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254407 - head/lib/libpam/libpam X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 10:53:37 -0000 Author: des Date: Fri Aug 16 10:53:36 2013 New Revision: 254407 URL: http://svnweb.freebsd.org/changeset/base/254407 Log: GC unused source file. Deleted: head/lib/libpam/libpam/pam_std_option.c From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 13:10:31 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C7A01BA3; Fri, 16 Aug 2013 13:10:31 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B439025C6; Fri, 16 Aug 2013 13:10:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GDAVHX079620; Fri, 16 Aug 2013 13:10:31 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GDAUMd079614; Fri, 16 Aug 2013 13:10:30 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308161310.r7GDAUMd079614@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 13:10:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254409 - in head: include lib/libc/gen X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:10:32 -0000 Author: jilles Date: Fri Aug 16 13:10:30 2013 New Revision: 254409 URL: http://svnweb.freebsd.org/changeset/base/254409 Log: Add dup3(), based on F_DUP2FD and F_DUP2FD_CLOEXEC fcntls. I removed functionality not proposed for POSIX in Austin group issue #411. A man page (my own) and test cases will follow in later commits. PR: 176233 Submitted by: Jukka Ukkonen Added: head/lib/libc/gen/dup3.c (contents, props changed) Modified: head/include/unistd.h head/lib/libc/gen/Makefile.inc head/lib/libc/gen/Symbol.map Modified: head/include/unistd.h ============================================================================== --- head/include/unistd.h Fri Aug 16 12:25:02 2013 (r254408) +++ head/include/unistd.h Fri Aug 16 13:10:30 2013 (r254409) @@ -493,6 +493,7 @@ const char * int crypt_set_format(const char *); int des_cipher(const char *, char *, long, int); int des_setkey(const char *key); +int dup3(int, int, int); int eaccess(const char *, int); void endusershell(void); int exect(const char *, char * const *, char * const *); Modified: head/lib/libc/gen/Makefile.inc ============================================================================== --- head/lib/libc/gen/Makefile.inc Fri Aug 16 12:25:02 2013 (r254408) +++ head/lib/libc/gen/Makefile.inc Fri Aug 16 13:10:30 2013 (r254409) @@ -31,6 +31,7 @@ SRCS+= __getosreldate.c \ disklabel.c \ dlfcn.c \ drand48.c \ + dup3.c \ elf_utils.c \ erand48.c \ err.c \ Modified: head/lib/libc/gen/Symbol.map ============================================================================== --- head/lib/libc/gen/Symbol.map Fri Aug 16 12:25:02 2013 (r254408) +++ head/lib/libc/gen/Symbol.map Fri Aug 16 13:10:30 2013 (r254409) @@ -383,6 +383,7 @@ FBSD_1.2 { FBSD_1.3 { clock_getcpuclockid; dirfd; + dup3; fdlopen; __FreeBSD_libc_enter_restricted_mode; getcontextx; Added: head/lib/libc/gen/dup3.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libc/gen/dup3.c Fri Aug 16 13:10:30 2013 (r254409) @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 2012 Jukka A. Ukkonen + * All rights reserved. + * + * This software was developed by Jukka Ukkonen for FreeBSD. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include "namespace.h" +#include +#include +#include +#include "un-namespace.h" + +int +__dup3(int oldfd, int newfd, int flags) +{ + int how; + + if (oldfd == newfd) { + errno = EINVAL; + return (-1); + } + + if (flags & ~O_CLOEXEC) { + errno = EINVAL; + return (-1); + } + + how = (flags & O_CLOEXEC) ? F_DUP2FD_CLOEXEC : F_DUP2FD; + + return (_fcntl(oldfd, how, newfd)); +} + +__weak_reference(__dup3, dup3); +__weak_reference(__dup3, _dup3); From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 13:16:28 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 927D3E9A; Fri, 16 Aug 2013 13:16:28 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7E9A62626; Fri, 16 Aug 2013 13:16:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GDGSf4080934; Fri, 16 Aug 2013 13:16:28 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GDGReP080931; Fri, 16 Aug 2013 13:16:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308161316.r7GDGReP080931@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 13:16:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254410 - in head/lib/libc: gen sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:16:28 -0000 Author: jilles Date: Fri Aug 16 13:16:27 2013 New Revision: 254410 URL: http://svnweb.freebsd.org/changeset/base/254410 Log: Add man page dup3(3). Added: head/lib/libc/gen/dup3.3 (contents, props changed) Modified: head/lib/libc/gen/Makefile.inc head/lib/libc/sys/dup.2 Modified: head/lib/libc/gen/Makefile.inc ============================================================================== --- head/lib/libc/gen/Makefile.inc Fri Aug 16 13:10:30 2013 (r254409) +++ head/lib/libc/gen/Makefile.inc Fri Aug 16 13:16:27 2013 (r254410) @@ -185,6 +185,7 @@ MAN+= alarm.3 \ dlinfo.3 \ dllockinit.3 \ dlopen.3 \ + dup3.3 \ err.3 \ exec.3 \ feature_present.3 \ Added: head/lib/libc/gen/dup3.3 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/libc/gen/dup3.3 Fri Aug 16 13:16:27 2013 (r254410) @@ -0,0 +1,120 @@ +.\" Copyright (c) 1980, 1991, 1993 +.\" The Regents of the University of California. 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. +.\" 4. Neither the name of the University nor the names of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written permission. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. +.\" +.\" @(#)dup.2 8.1 (Berkeley) 6/4/93 +.\" $FreeBSD$ +.\" +.Dd August 16, 2013 +.Dt DUP3 3 +.Os +.Sh NAME +.Nm dup3 +.Nd duplicate an existing file descriptor +.Sh LIBRARY +.Lb libc +.Sh SYNOPSIS +.In fcntl.h +.In unistd.h +.Ft int +.Fn dup3 "int oldd" "int newd" "int flags" +.Sh DESCRIPTION +The +.Fn dup3 +function +duplicates an existing object descriptor +while allowing the value of the new descriptor to be specified. +.Pp +The close-on-exec flag on the new file descriptor is determined by the +.Dv O_CLOEXEC +bit in +.Fa flags . +.Pp +If +.Fa oldd +\*(Ne +.Fa newd +and +.Fa flags +== 0, +the behavior is identical to +.Li dup2(oldd, newd) . +.Pp +If +.Fa oldd +== +.Fa newd , +then +.Fn dup3 +fails, unlike +.Xr dup2 2 . +.Sh RETURN VALUES +The value -1 is returned if an error occurs. +The external variable +.Va errno +indicates the cause of the error. +.Sh ERRORS +The +.Fn dup3 +function fails if: +.Bl -tag -width Er +.It Bq Er EBADF +The +.Fa oldd +argument is not a valid active descriptor or the +.Fa newd +argument is negative or exceeds the maximum allowable descriptor number +.It Bq Er EINVAL +The +.Fa oldd +argument is equal to the +.Fa newd +argument. +.It Bq Er EINVAL +The +.Fa flags +argument has bits set other than +.Dv O_CLOEXEC . +.El +.Sh SEE ALSO +.Xr accept 2 , +.Xr close 2 , +.Xr dup2 2 , +.Xr fcntl 2 , +.Xr getdtablesize 2 , +.Xr open 2 , +.Xr pipe 2 , +.Xr socket 2 , +.Xr socketpair 2 +.Sh STANDARDS +The +.Fn dup3 +function does not conform to any standard. +.Sh HISTORY +The +.Fn dup3 +function appeared in +.Fx 10.0 . Modified: head/lib/libc/sys/dup.2 ============================================================================== --- head/lib/libc/sys/dup.2 Fri Aug 16 13:10:30 2013 (r254409) +++ head/lib/libc/sys/dup.2 Fri Aug 16 13:16:27 2013 (r254410) @@ -151,7 +151,8 @@ argument is negative or exceeds the maxi .Xr open 2 , .Xr pipe 2 , .Xr socket 2 , -.Xr socketpair 2 +.Xr socketpair 2 , +.Xr dup3 3 .Sh STANDARDS The .Fn dup From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 13:16:56 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 69276FD9; Fri, 16 Aug 2013 13:16:56 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 560B3262F; Fri, 16 Aug 2013 13:16:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GDGu2T081048; Fri, 16 Aug 2013 13:16:56 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GDGuBd081047; Fri, 16 Aug 2013 13:16:56 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308161316.r7GDGuBd081047@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 13:16:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254411 - head/tools/regression/file/dup X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:16:56 -0000 Author: jilles Date: Fri Aug 16 13:16:55 2013 New Revision: 254411 URL: http://svnweb.freebsd.org/changeset/base/254411 Log: Add tests for dup3(). Modified: head/tools/regression/file/dup/dup.c Modified: head/tools/regression/file/dup/dup.c ============================================================================== --- head/tools/regression/file/dup/dup.c Fri Aug 16 13:16:27 2013 (r254410) +++ head/tools/regression/file/dup/dup.c Fri Aug 16 13:16:55 2013 (r254411) @@ -38,6 +38,16 @@ * fd. * Test #23: check if fcntl(F_DUP2FD_CLOEXEC) to a fd > current maximum number * of open files limit work. + * Test #24: check if dup3(O_CLOEXEC) works. + * Test #25: check if dup3(O_CLOEXEC) returned a fd we asked for. + * Test #26: check if dup3(O_CLOEXEC) set close-on-exec flag for duped fd. + * Test #27: check if dup3(0) works. + * Test #28: check if dup3(0) returned a fd we asked for. + * Test #29: check if dup3(0) cleared close-on-exec flag for duped fd. + * Test #30: check if dup3(O_CLOEXEC) fails if oldfd == newfd. + * Test #31: check if dup3(0) fails if oldfd == newfd. + * Test #32: check if dup3(O_CLOEXEC) to a fd > current maximum number of + * open files limit work. */ #include @@ -74,7 +84,7 @@ main(int __unused argc, char __unused *a orgfd = getafile(); - printf("1..23\n"); + printf("1..32\n"); /* If dup(2) ever work? */ if ((fd1 = dup(orgfd)) < 0) @@ -297,5 +307,80 @@ main(int __unused argc, char __unused *a printf("ok %d - fcntl(F_DUP2FD_CLOEXEC) didn't bypass NOFILE limit\n", test); + /* Does dup3(O_CLOEXEC) ever work? */ + if ((fd2 = dup3(fd1, fd1 + 1, O_CLOEXEC)) < 0) + err(1, "dup3(O_CLOEXEC)"); + printf("ok %d - dup3(O_CLOEXEC) works\n", ++test); + + /* Do we get the right fd? */ + ++test; + if (fd2 != fd1 + 1) + printf( + "no ok %d - dup3(O_CLOEXEC) didn't give us the right fd\n", + test); + else + printf("ok %d - dup3(O_CLOEXEC) returned a correct fd\n", + test); + + /* Was close-on-exec set? */ + ++test; + if (fcntl(fd2, F_GETFD) != FD_CLOEXEC) + printf( + "not ok %d - dup3(O_CLOEXEC) didn't set close-on-exec\n", + test); + else + printf("ok %d - dup3(O_CLOEXEC) set close-on-exec\n", + test); + + /* Does dup3(0) ever work? */ + if ((fd2 = dup3(fd1, fd1 + 1, 0)) < 0) + err(1, "dup3(0)"); + printf("ok %d - dup3(0) works\n", ++test); + + /* Do we get the right fd? */ + ++test; + if (fd2 != fd1 + 1) + printf( + "no ok %d - dup3(0) didn't give us the right fd\n", + test); + else + printf("ok %d - dup3(0) returned a correct fd\n", + test); + + /* Was close-on-exec cleared? */ + ++test; + if (fcntl(fd2, F_GETFD) != 0) + printf( + "not ok %d - dup3(0) didn't clear close-on-exec\n", + test); + else + printf("ok %d - dup3(0) cleared close-on-exec\n", + test); + + /* dup3() does not allow duplicating to the same fd */ + ++test; + if (dup3(fd1, fd1, O_CLOEXEC) != -1) + printf( + "not ok %d - dup3(fd1, fd1, O_CLOEXEC) succeeded\n", test); + else + printf("ok %d - dup3(fd1, fd1, O_CLOEXEC) failed\n", test); + + ++test; + if (dup3(fd1, fd1, 0) != -1) + printf( + "not ok %d - dup3(fd1, fd1, 0) succeeded\n", test); + else + printf("ok %d - dup3(fd1, fd1, 0) failed\n", test); + + ++test; + if (getrlimit(RLIMIT_NOFILE, &rlp) < 0) + err(1, "getrlimit"); + if ((fd2 = dup3(fd1, rlp.rlim_cur + 1, O_CLOEXEC)) >= 0) + printf("not ok %d - dup3(O_CLOEXEC) bypassed NOFILE limit\n", + test); + else + printf("ok %d - dup3(O_CLOEXEC) didn't bypass NOFILE limit\n", + test); + return (0); } From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 13:48:12 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0B22C8FB; Fri, 16 Aug 2013 13:48:12 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EC8BD27FD; Fri, 16 Aug 2013 13:48:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GDmBRA092192; Fri, 16 Aug 2013 13:48:11 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GDmBGW092191; Fri, 16 Aug 2013 13:48:11 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308161348.r7GDmBGW092191@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 13:48:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254412 - head/tools/regression/bin/sh/builtins X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:48:12 -0000 Author: jilles Date: Fri Aug 16 13:48:11 2013 New Revision: 254412 URL: http://svnweb.freebsd.org/changeset/base/254412 Log: sh: Add test for the non-standard jobid builtin. Added: head/tools/regression/bin/sh/builtins/jobid1.0 (contents, props changed) Added: head/tools/regression/bin/sh/builtins/jobid1.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/jobid1.0 Fri Aug 16 13:48:11 2013 (r254412) @@ -0,0 +1,7 @@ +# $FreeBSD$ +# Non-standard builtin. + +: & +p1=$! +p2=$(jobid) +[ "${p1:?}" = "${p2:?}" ] From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 13:56:44 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1F81BC4F; Fri, 16 Aug 2013 13:56:44 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E67FF2891; Fri, 16 Aug 2013 13:56:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GDuhfr095698; Fri, 16 Aug 2013 13:56:43 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GDuhOs095696; Fri, 16 Aug 2013 13:56:43 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308161356.r7GDuhOs095696@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 13:56:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254413 - in head: bin/sh tools/regression/bin/sh/builtins X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 13:56:44 -0000 Author: jilles Date: Fri Aug 16 13:56:43 2013 New Revision: 254413 URL: http://svnweb.freebsd.org/changeset/base/254413 Log: sh: Recognize "--" as end of options in bg/fg/jobid builtins. Added: head/tools/regression/bin/sh/builtins/jobid2.0 (contents, props changed) Modified: head/bin/sh/jobs.c Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Fri Aug 16 13:48:11 2013 (r254412) +++ head/bin/sh/jobs.c Fri Aug 16 13:56:43 2013 (r254413) @@ -183,13 +183,14 @@ out: out2fmt_flush("sh: can't access #if JOBS int -fgcmd(int argc __unused, char **argv) +fgcmd(int argc __unused, char **argv __unused) { struct job *jp; pid_t pgrp; int status; - jp = getjob(argv[1]); + nextopt(""); + jp = getjob(*argptr); if (jp->jobctl == 0) error("job not created under job control"); printjobcmd(jp); @@ -210,8 +211,9 @@ bgcmd(int argc, char **argv) { struct job *jp; + nextopt(""); do { - jp = getjob(*++argv); + jp = getjob(*argptr); if (jp->jobctl == 0) error("job not created under job control"); if (jp->state == JOBDONE) @@ -220,7 +222,7 @@ bgcmd(int argc, char **argv) jp->foreground = 0; out1fmt("[%td] ", jp - jobtab + 1); printjobcmd(jp); - } while (--argc > 1); + } while (*argptr != NULL && *++argptr != NULL); return 0; } @@ -542,12 +544,13 @@ waitcmdloop(struct job *job) int -jobidcmd(int argc __unused, char **argv) +jobidcmd(int argc __unused, char **argv __unused) { struct job *jp; int i; - jp = getjob(argv[1]); + nextopt(""); + jp = getjob(*argptr); for (i = 0 ; i < jp->nprocs ; ) { out1fmt("%d", (int)jp->ps[i].pid); out1c(++i < jp->nprocs? ' ' : '\n'); Added: head/tools/regression/bin/sh/builtins/jobid2.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/jobid2.0 Fri Aug 16 13:56:43 2013 (r254413) @@ -0,0 +1,9 @@ +# $FreeBSD$ + +: & +p1=$(jobid) +p2=$(jobid --) +p3=$(jobid %+) +p4=$(jobid -- %+) +[ "${p1:?}" = "${p2:?}" ] && [ "${p2:?}" = "${p3:?}" ] && +[ "${p3:?}" = "${p4:?}" ] && [ "${p4:?}" = "${p1:?}" ] From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 14:06:29 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C4332F1; Fri, 16 Aug 2013 14:06:29 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B0D542942; Fri, 16 Aug 2013 14:06:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GE6TKi099699; Fri, 16 Aug 2013 14:06:29 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GE6TV7099698; Fri, 16 Aug 2013 14:06:29 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308161406.r7GE6TV7099698@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 14:06:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254414 - head/lib/libc/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 14:06:29 -0000 Author: jilles Date: Fri Aug 16 14:06:29 2013 New Revision: 254414 URL: http://svnweb.freebsd.org/changeset/base/254414 Log: pselect(2): Add xref to sigsuspend(2). Modified: head/lib/libc/sys/pselect.2 Modified: head/lib/libc/sys/pselect.2 ============================================================================== --- head/lib/libc/sys/pselect.2 Fri Aug 16 13:56:43 2013 (r254413) +++ head/lib/libc/sys/pselect.2 Fri Aug 16 14:06:29 2013 (r254414) @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 27, 2009 +.Dd August 16, 2013 .Dt PSELECT 2 .Os .Sh NAME @@ -104,7 +104,8 @@ and (if a signal mask is provided) .Xr kqueue 2 , .Xr poll 2 , .Xr select 2 , -.Xr sigprocmask 2 +.Xr sigprocmask 2 , +.Xr sigsuspend 2 .Sh STANDARDS The .Fn pselect From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 14:22:22 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6C18A76B; Fri, 16 Aug 2013 14:22:22 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4B0B32A35; Fri, 16 Aug 2013 14:22:22 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GEMMqR006758; Fri, 16 Aug 2013 14:22:22 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GEMLWE006753; Fri, 16 Aug 2013 14:22:21 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201308161422.r7GEMLWE006753@svn.freebsd.org> From: Konstantin Belousov Date: Fri, 16 Aug 2013 14:22:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254415 - in head/sys: dev/streams fs/devfs kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 14:22:22 -0000 Author: kib Date: Fri Aug 16 14:22:20 2013 New Revision: 254415 URL: http://svnweb.freebsd.org/changeset/base/254415 Log: Restore the previous sendfile(2) behaviour on the block devices. Provide valid .fo_sendfile method for several missed struct fileops. Reviewed by: glebius Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/streams/streams.c head/sys/fs/devfs/devfs_vnops.c head/sys/kern/sys_procdesc.c head/sys/kern/vfs_vnops.c head/sys/sys/file.h Modified: head/sys/dev/streams/streams.c ============================================================================== --- head/sys/dev/streams/streams.c Fri Aug 16 14:06:29 2013 (r254414) +++ head/sys/dev/streams/streams.c Fri Aug 16 14:22:20 2013 (r254415) @@ -98,6 +98,7 @@ static struct fileops svr4_netops = { .fo_close = svr4_soo_close, .fo_chmod = invfo_chmod, .fo_chown = invfo_chown, + .fo_sendfile = invfo_sendfile, }; static struct cdevsw streams_cdevsw = { Modified: head/sys/fs/devfs/devfs_vnops.c ============================================================================== --- head/sys/fs/devfs/devfs_vnops.c Fri Aug 16 14:06:29 2013 (r254414) +++ head/sys/fs/devfs/devfs_vnops.c Fri Aug 16 14:22:20 2013 (r254415) @@ -1696,6 +1696,7 @@ static struct fileops devfs_ops_f = { .fo_close = devfs_close_f, .fo_chmod = vn_chmod, .fo_chown = vn_chown, + .fo_sendfile = vn_sendfile, .fo_flags = DFLAG_PASSABLE | DFLAG_SEEKABLE }; Modified: head/sys/kern/sys_procdesc.c ============================================================================== --- head/sys/kern/sys_procdesc.c Fri Aug 16 14:06:29 2013 (r254414) +++ head/sys/kern/sys_procdesc.c Fri Aug 16 14:22:20 2013 (r254415) @@ -113,6 +113,7 @@ static struct fileops procdesc_ops = { .fo_close = procdesc_close, .fo_chmod = procdesc_chmod, .fo_chown = procdesc_chown, + .fo_sendfile = invfo_sendfile, .fo_flags = DFLAG_PASSABLE, }; Modified: head/sys/kern/vfs_vnops.c ============================================================================== --- head/sys/kern/vfs_vnops.c Fri Aug 16 14:06:29 2013 (r254414) +++ head/sys/kern/vfs_vnops.c Fri Aug 16 14:22:20 2013 (r254415) @@ -88,7 +88,6 @@ static fo_poll_t vn_poll; static fo_kqfilter_t vn_kqfilter; static fo_stat_t vn_statfile; static fo_close_t vn_closefile; -extern fo_sendfile_t vn_sendfile; struct fileops vnops = { .fo_read = vn_io_fault, Modified: head/sys/sys/file.h ============================================================================== --- head/sys/sys/file.h Fri Aug 16 14:06:29 2013 (r254414) +++ head/sys/sys/file.h Fri Aug 16 14:22:20 2013 (r254415) @@ -241,6 +241,8 @@ fo_chmod_t invfo_chmod; fo_chown_t invfo_chown; fo_sendfile_t invfo_sendfile; +fo_sendfile_t vn_sendfile; + void finit(struct file *, u_int, short, void *, struct fileops *); int fgetvp(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp); int fgetvp_exec(struct thread *td, int fd, cap_rights_t rights, From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 15:56:05 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F0AA0700; Fri, 16 Aug 2013 15:56:04 +0000 (UTC) (envelope-from bjkfbsd@gmail.com) Received: from mail-qa0-x22e.google.com (mail-qa0-x22e.google.com [IPv6:2607:f8b0:400d:c00::22e]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 70BF82067; Fri, 16 Aug 2013 15:56:04 +0000 (UTC) Received: by mail-qa0-f46.google.com with SMTP id bq6so566607qab.19 for ; Fri, 16 Aug 2013 08:56:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=3A2+BdwNYDMqhGfqdoebcD67NYcQqOI89xcQ/zDtY0g=; b=TRwq7tD7mx4Ebx2+bxUSN/8QDU79AtF4OLJRlgvcVAe/Mbv95AG+w6UDc/lINqbZI6 xd850WpagifnIK/uuZUAEQGlwTVln2Puqb7Am6TXCnvHe/hqEsIk/GfksTKZQ2OyMHoH F0n4Z8YBM4i2JJsTaK9BjwS5dfb5RMQbBiyzNm+8mzNDRBEM2QC+IFj6MrsCs2aYfESy ktHFXrBfG26GL2Fk8Xuf9N5pT609t47ejYp8zStvmu5MuT2kOldzWRWzYEFZsSk8c8ES aYTFxsHtb193Mz0Im9s4y9iuvRCKqwM7g9uTYdeahNPChbCvljsMsL6uc7joI5EO3XQN UEFQ== MIME-Version: 1.0 X-Received: by 10.224.7.5 with SMTP id b5mr462421qab.65.1376668563588; Fri, 16 Aug 2013 08:56:03 -0700 (PDT) Received: by 10.49.11.173 with HTTP; Fri, 16 Aug 2013 08:56:03 -0700 (PDT) In-Reply-To: <201308161316.r7GDGReP080931@svn.freebsd.org> References: <201308161316.r7GDGReP080931@svn.freebsd.org> Date: Fri, 16 Aug 2013 11:56:03 -0400 Message-ID: Subject: Re: svn commit: r254410 - in head/lib/libc: gen sys From: Benjamin Kaduk To: Jilles Tjoelker Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 15:56:05 -0000 On Fri, Aug 16, 2013 at 9:16 AM, Jilles Tjoelker wrote: > Author: jilles > Date: Fri Aug 16 13:16:27 2013 > New Revision: 254410 > URL: http://svnweb.freebsd.org/changeset/base/254410 > > Log: > Add man page dup3(3). > > Added: head/lib/libc/gen/dup3.3 > > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ head/lib/libc/gen/dup3.3 Fri Aug 16 13:16:27 2013 (r254410) > @@ -0,0 +1,120 @@ > +.\" Copyright (c) 1980, 1991, 1993 > +.\" The Regents of the University of California. All rights reserved. > You are donating the work to the Regents? And it was done twenty years ago? > +.\" > +.\" 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. > +.\" 4. Neither the name of the University nor the names of its > contributors > +.\" may be used to endorse or promote products derived from this > software > +.\" without specific prior written permission. > +.\" > +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. > +.\" > +.\" @(#)dup.2 8.1 (Berkeley) 6/4/93 > This file is not named dup.2... > +.\" $FreeBSD$ > +.\" > +.Dd August 16, 2013 > +.Dt DUP3 3 > +.Os > +.Sh NAME > +.Nm dup3 > +.Nd duplicate an existing file descriptor > +.Sh LIBRARY > +.Lb libc > +.Sh SYNOPSIS > +.In fcntl.h > +.In unistd.h > +.Ft int > +.Fn dup3 "int oldd" "int newd" "int flags" > +.Sh DESCRIPTION > +The > +.Fn dup3 > Hmm, I guess .Nm is not quite appropriate here, so this is okay. -Ben > +function > +duplicates an existing object descriptor > +while allowing the value of the new descriptor to be specified. From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 16:14:33 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 77336986; Fri, 16 Aug 2013 16:14:33 +0000 (UTC) (envelope-from ken@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6462C2163; Fri, 16 Aug 2013 16:14:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GGEXZu048777; Fri, 16 Aug 2013 16:14:33 GMT (envelope-from ken@svn.freebsd.org) Received: (from ken@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GGEXFj048776; Fri, 16 Aug 2013 16:14:33 GMT (envelope-from ken@svn.freebsd.org) Message-Id: <201308161614.r7GGEXFj048776@svn.freebsd.org> From: "Kenneth D. Merry" Date: Fri, 16 Aug 2013 16:14:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254416 - head/sys/cam/scsi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 16:14:33 -0000 Author: ken Date: Fri Aug 16 16:14:32 2013 New Revision: 254416 URL: http://svnweb.freebsd.org/changeset/base/254416 Log: Add unmapped I/O and larger I/O support to the sa(4) driver. We now pay attention to the maxio field in the XPT_PATH_INQ CCB, and if it is set, propagate it up to physio via the si_iosize_max field in the cdev structure. We also now pay attention to the PIM_UNMAPPED capability bit in the XPT_PATH_INQ CCB, and set the new SI_UNMAPPED cdev flag when the underlying SIM supports unmapped I/O. scsi_sa.c: Add unmapped I/O support and propagate the SIM's maximum I/O size up. Adjust scsi_tape_read_write() in the same way that scsi_read_write() was changed to support unmapped I/O. We overload the readop parameter with bits that tell us whether it's an unmapped I/O, and we need to set the CAM_DATA_BIO CCB flag. This change should be backwards compatible in source and binary forms. MFC after: 1 week Sponsored by: Spectra Logic Modified: head/sys/cam/scsi/scsi_sa.c Modified: head/sys/cam/scsi/scsi_sa.c ============================================================================== --- head/sys/cam/scsi/scsi_sa.c Fri Aug 16 14:22:20 2013 (r254415) +++ head/sys/cam/scsi/scsi_sa.c Fri Aug 16 16:14:32 2013 (r254416) @@ -212,6 +212,7 @@ struct sa_softc { sa_state state; sa_flags flags; sa_quirks quirks; + u_int si_flags; struct bio_queue_head bio_queue; int queue_count; struct devstat *device_stats; @@ -221,6 +222,7 @@ struct sa_softc { int blk_shift; u_int32_t max_blk; u_int32_t min_blk; + u_int32_t maxio; u_int32_t comp_algorithm; u_int32_t saved_comp_algorithm; u_int32_t media_blksize; @@ -447,7 +449,7 @@ static struct cdevsw sa_cdevsw = { .d_ioctl = saioctl, .d_strategy = sastrategy, .d_name = "sa", - .d_flags = D_TAPE | D_NEEDGIANT, + .d_flags = D_TAPE, }; static int @@ -1506,10 +1508,29 @@ saregister(struct cam_periph *periph, vo DEVSTAT_BS_UNAVAILABLE, SID_TYPE(&cgd->inq_data) | XPORT_DEVSTAT_TYPE(cpi.transport), DEVSTAT_PRIORITY_TAPE); + /* + * If maxio isn't set, we fall back to DFLTPHYS. If it is set, we + * take it whether or not it's larger than MAXPHYS. physio will + * break it down into pieces small enough to fit in a buffer. + */ + if (cpi.maxio == 0) + softc->maxio = DFLTPHYS; + else + softc->maxio = cpi.maxio; + + /* + * If the SIM supports unmapped I/O, let physio know that we can + * handle unmapped buffers. + */ + if (cpi.hba_misc & PIM_UNMAPPED) + softc->si_flags = SI_UNMAPPED; + softc->devs.ctl_dev = make_dev(&sa_cdevsw, SAMINOR(SA_CTLDEV, 0, SA_ATYPE_R), UID_ROOT, GID_OPERATOR, 0660, "%s%d.ctl", periph->periph_name, periph->unit_number); softc->devs.ctl_dev->si_drv1 = periph; + softc->devs.ctl_dev->si_iosize_max = softc->maxio; + softc->devs.ctl_dev->si_flags |= softc->si_flags; for (i = 0; i < SA_NUM_MODES; i++) { @@ -1518,18 +1539,24 @@ saregister(struct cam_periph *periph, vo UID_ROOT, GID_OPERATOR, 0660, "%s%d.%d", periph->periph_name, periph->unit_number, i); softc->devs.mode_devs[i].r_dev->si_drv1 = periph; + softc->devs.mode_devs[i].r_dev->si_iosize_max = softc->maxio; + softc->devs.mode_devs[i].r_dev->si_flags |= softc->si_flags; softc->devs.mode_devs[i].nr_dev = make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV, i, SA_ATYPE_NR), UID_ROOT, GID_OPERATOR, 0660, "n%s%d.%d", periph->periph_name, periph->unit_number, i); softc->devs.mode_devs[i].nr_dev->si_drv1 = periph; + softc->devs.mode_devs[i].nr_dev->si_iosize_max = softc->maxio; + softc->devs.mode_devs[i].nr_dev->si_flags |= softc->si_flags; softc->devs.mode_devs[i].er_dev = make_dev(&sa_cdevsw, SAMINOR(SA_NOT_CTLDEV, i, SA_ATYPE_ER), UID_ROOT, GID_OPERATOR, 0660, "e%s%d.%d", periph->periph_name, periph->unit_number, i); softc->devs.mode_devs[i].er_dev->si_drv1 = periph; + softc->devs.mode_devs[i].er_dev->si_iosize_max = softc->maxio; + softc->devs.mode_devs[i].er_dev->si_flags |= softc->si_flags; /* * Make the (well known) aliases for the first mode. @@ -1540,12 +1567,20 @@ saregister(struct cam_periph *periph, vo alias = make_dev_alias(softc->devs.mode_devs[i].r_dev, "%s%d", periph->periph_name, periph->unit_number); alias->si_drv1 = periph; + alias->si_iosize_max = softc->maxio; + alias->si_flags |= softc->si_flags; + alias = make_dev_alias(softc->devs.mode_devs[i].nr_dev, "n%s%d", periph->periph_name, periph->unit_number); alias->si_drv1 = periph; + alias->si_iosize_max = softc->maxio; + alias->si_flags |= softc->si_flags; + alias = make_dev_alias(softc->devs.mode_devs[i].er_dev, "e%s%d", periph->periph_name, periph->unit_number); alias->si_drv1 = periph; + alias->si_iosize_max = softc->maxio; + alias->si_flags |= softc->si_flags; } } cam_periph_lock(periph); @@ -1694,9 +1729,13 @@ again: softc->dsreg = (bp->bio_cmd == BIO_READ)? MTIO_DSREG_RD : MTIO_DSREG_WR; scsi_sa_read_write(&start_ccb->csio, 0, sadone, - MSG_SIMPLE_Q_TAG, (bp->bio_cmd == BIO_READ), - FALSE, (softc->flags & SA_FLAG_FIXED) != 0, - length, bp->bio_data, bp->bio_bcount, SSD_FULL_SIZE, + MSG_SIMPLE_Q_TAG, (bp->bio_cmd == BIO_READ ? + SCSI_RW_READ : SCSI_RW_WRITE) | + ((bp->bio_flags & BIO_UNMAPPED) != 0 ? + SCSI_RW_BIO : 0), FALSE, + (softc->flags & SA_FLAG_FIXED) != 0, length, + (bp->bio_flags & BIO_UNMAPPED) != 0 ? (void *)bp : + bp->bio_data, bp->bio_bcount, SSD_FULL_SIZE, IO_TIMEOUT); start_ccb->ccb_h.ccb_pflags &= ~SA_POSITION_UPDATED; Set_CCB_Type(start_ccb, SA_CCB_BUFFER_IO); @@ -3431,18 +3470,22 @@ scsi_sa_read_write(struct ccb_scsiio *cs u_int32_t dxfer_len, u_int8_t sense_len, u_int32_t timeout) { struct scsi_sa_rw *scsi_cmd; + int read; + + read = (readop & SCSI_RW_DIRMASK) == SCSI_RW_READ; scsi_cmd = (struct scsi_sa_rw *)&csio->cdb_io.cdb_bytes; - scsi_cmd->opcode = readop ? SA_READ : SA_WRITE; + scsi_cmd->opcode = read ? SA_READ : SA_WRITE; scsi_cmd->sli_fixed = 0; - if (sli && readop) + if (sli && read) scsi_cmd->sli_fixed |= SAR_SLI; if (fixed) scsi_cmd->sli_fixed |= SARW_FIXED; scsi_ulto3b(length, scsi_cmd->length); scsi_cmd->control = 0; - cam_fill_csio(csio, retries, cbfcnp, readop ? CAM_DIR_IN : CAM_DIR_OUT, + cam_fill_csio(csio, retries, cbfcnp, (read ? CAM_DIR_IN : CAM_DIR_OUT) | + ((readop & SCSI_RW_BIO) != 0 ? CAM_DATA_BIO : 0), tag_action, data_ptr, dxfer_len, sense_len, sizeof(*scsi_cmd), timeout); } From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 16:24:52 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 698BFC55; Fri, 16 Aug 2013 16:24:52 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (unknown [IPv6:2001:610:1108:5012::107]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EE35621F7; Fri, 16 Aug 2013 16:24:51 +0000 (UTC) Received: from snail.stack.nl (snail.stack.nl [IPv6:2001:610:1108:5010::131]) by mx1.stack.nl (Postfix) with ESMTP id A33B41200BA; Fri, 16 Aug 2013 18:24:35 +0200 (CEST) Received: by snail.stack.nl (Postfix, from userid 1677) id 86C8C28494; Fri, 16 Aug 2013 18:24:35 +0200 (CEST) Date: Fri, 16 Aug 2013 18:24:35 +0200 From: Jilles Tjoelker To: Benjamin Kaduk Subject: Re: svn commit: r254410 - in head/lib/libc: gen sys Message-ID: <20130816162435.GA25249@stack.nl> References: <201308161316.r7GDGReP080931@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Cc: "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 16:24:52 -0000 On Fri, Aug 16, 2013 at 11:56:03AM -0400, Benjamin Kaduk wrote: > On Fri, Aug 16, 2013 at 9:16 AM, Jilles Tjoelker wrote: > > Author: jilles > > Date: Fri Aug 16 13:16:27 2013 > > New Revision: 254410 > > URL: http://svnweb.freebsd.org/changeset/base/254410 > > Log: > > Add man page dup3(3). > > Added: head/lib/libc/gen/dup3.3 > > ============================================================================== > > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > > +++ head/lib/libc/gen/dup3.3 Fri Aug 16 13:16:27 2013 (r254410) > > @@ -0,0 +1,120 @@ > > +.\" Copyright (c) 1980, 1991, 1993 > > +.\" The Regents of the University of California. All rights reserved. > You are donating the work to the Regents? And it was done twenty > years ago? Hmm, I did not adjust that when copying dup.2. It looks like very few words remain from the original: only the first few words of the description, the [EBADF] error description and the xref list. So can I put in only my own name using share/examples/etc/bsd-style-copyright? I did not use Jukka Ukkonen's submitted man page. > > +.\" > > +.\" 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. > > +.\" 4. Neither the name of the University nor the names of its > > contributors > > +.\" may be used to endorse or promote products derived from this > > software > > +.\" without specific prior written permission. > > +.\" > > +.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. > > +.\" > > +.\" @(#)dup.2 8.1 (Berkeley) 6/4/93 > This file is not named dup.2... Also from the original. > > +.\" $FreeBSD$ > > +.\" > > +.Dd August 16, 2013 > > +.Dt DUP3 3 > > +.Os > > +.Sh NAME > > +.Nm dup3 > > +.Nd duplicate an existing file descriptor > > +.Sh LIBRARY > > +.Lb libc > > +.Sh SYNOPSIS > > +.In fcntl.h > > +.In unistd.h > > +.Ft int > > +.Fn dup3 "int oldd" "int newd" "int flags" > > +.Sh DESCRIPTION > > +The > > +.Fn dup3 > Hmm, I guess .Nm is not quite appropriate here, so this is okay. -- Jilles Tjoelker From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 16:26:23 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D15BDD8C; Fri, 16 Aug 2013 16:26:23 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A56E521FF; Fri, 16 Aug 2013 16:26:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GGQNkK052787; Fri, 16 Aug 2013 16:26:23 GMT (envelope-from sjg@svn.freebsd.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GGQNc7052786; Fri, 16 Aug 2013 16:26:23 GMT (envelope-from sjg@svn.freebsd.org) Message-Id: <201308161626.r7GGQNc7052786@svn.freebsd.org> From: "Simon J. Gerraty" Date: Fri, 16 Aug 2013 16:26:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254417 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 16:26:23 -0000 Author: sjg Date: Fri Aug 16 16:26:23 2013 New Revision: 254417 URL: http://svnweb.freebsd.org/changeset/base/254417 Log: When we need to build using the in-tree make, switch at the earliest opportunity. In the case of fmake vs bmake, this helps ensure correct load handling. Reviewed by: obrien Modified: head/Makefile Modified: head/Makefile ============================================================================== --- head/Makefile Fri Aug 16 16:14:32 2013 (r254416) +++ head/Makefile Fri Aug 16 16:26:23 2013 (r254417) @@ -242,6 +242,7 @@ cleanworld: # skip this for -n to avoid changing previous behavior of # 'make -n buildworld' etc. ${TGTS}: .MAKE +tinderbox toolchains kernel-toolchains: .MAKE .endif ${TGTS}: @@ -353,14 +354,16 @@ make bmake: .PHONY ${MMAKE} all && \ ${MMAKE} install DESTDIR=${MYMAKE:H} BINDIR= PROGNAME=${MYMAKE:T} +tinderbox toolchains kernel-toolchains: upgrade_checks + tinderbox: - @cd ${.CURDIR} && ${MAKE} DOING_TINDERBOX=YES universe + @cd ${.CURDIR} && ${SUB_MAKE} DOING_TINDERBOX=YES universe toolchains: - @cd ${.CURDIR} && ${MAKE} UNIVERSE_TARGET=toolchain universe + @cd ${.CURDIR} && ${SUB_MAKE} UNIVERSE_TARGET=toolchain universe kernel-toolchains: - @cd ${.CURDIR} && ${MAKE} UNIVERSE_TARGET=kernel-toolchain universe + @cd ${.CURDIR} && ${SUB_MAKE} UNIVERSE_TARGET=kernel-toolchain universe # # universe @@ -419,7 +422,7 @@ universe_${target}_prologue: universe_pr .if !defined(MAKE_JUST_KERNELS) .for target_arch in ${TARGET_ARCHES_${target}} universe_${target}: universe_${target}_${target_arch} -universe_${target}_${target_arch}: universe_${target}_prologue +universe_${target}_${target_arch}: universe_${target}_prologue .MAKE @echo ">> ${target}.${target_arch} ${UNIVERSE_TARGET} started on `LC_ALL=C date`" @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ ${SUB_MAKE} ${JFLAG} ${UNIVERSE_TARGET} \ @@ -440,7 +443,7 @@ universe_${target}_kernels: universe_${t .endfor .endif universe_${target}: universe_${target}_kernels -universe_${target}_kernels: universe_${target}_prologue +universe_${target}_kernels: universe_${target}_prologue .MAKE .if exists(${KERNSRCDIR}/${target}/conf/NOTES) @(cd ${KERNSRCDIR}/${target}/conf && env __MAKE_CONF=/dev/null \ ${SUB_MAKE} LINT > ${.CURDIR}/_.${target}.makeLINT 2>&1 || \ @@ -468,7 +471,7 @@ TARGET_ARCH_${kernel}!= cd ${KERNSRCDIR} .error "Target architecture for ${TARGET}/conf/${kernel} unknown. config(8) likely too old." .endif universe_kernconfs: universe_kernconf_${TARGET}_${kernel} -universe_kernconf_${TARGET}_${kernel}: +universe_kernconf_${TARGET}_${kernel}: .MAKE @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ ${SUB_MAKE} ${JFLAG} buildkernel \ TARGET=${TARGET} \ From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 16:59:56 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3AD6F5A0; Fri, 16 Aug 2013 16:59:56 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qc0-x22c.google.com (mail-qc0-x22c.google.com [IPv6:2607:f8b0:400d:c01::22c]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id B8AE22422; Fri, 16 Aug 2013 16:59:55 +0000 (UTC) Received: by mail-qc0-f172.google.com with SMTP id a1so1231351qcx.17 for ; Fri, 16 Aug 2013 09:59:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=N/zLedn8we8rVm1FHO7ypv0MkuOvRLci/C9YV5JeXWg=; b=AIAi8azZtlU1vnORAsVa8aXYyQUImStWFr1Lwt6Q/QYfCTgeAvdVeHBTdSU03Nj2Df 8Vp/yTyGCq/J9kGu2or2sibNOI/luoO6G4mBF7+Weu+Ve8yAHQCP4UNh/zdcinrynHh1 OyS4KssAkfuYk4wEQXGcwPMEdeRP8NerJ7XDJ1nj5QZ666USO0es3tks+fKA1xtBT5X+ OQGwyLo64rsMkjRsGU0IQLlc3Hk0mRbuhEF9/Oi92R7o8T8leBbn+tf4IxvnD/cxMc31 TPQldFhDy8Vo9O5CiBqfw2pxq6rb6RiZmqWDw7VtdlFO3JbNOL8Q9wAM6MMBYsLlx0+7 kacg== X-Received: by 10.224.45.69 with SMTP id d5mr2333709qaf.108.1376672394843; Fri, 16 Aug 2013 09:59:54 -0700 (PDT) Received: from charmander.sandvine.com ([64.7.137.182]) by mx.google.com with ESMTPSA id 5sm2458052qel.1.1969.12.31.16.00.00 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 16 Aug 2013 09:59:54 -0700 (PDT) Sender: Mark Johnston Date: Fri, 16 Aug 2013 13:00:27 -0400 From: Mark Johnston To: John Baldwin Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys Message-ID: <20130816170027.GA1888@charmander.sandvine.com> References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308140819.13854.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201308140819.13854.jhb@freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 16:59:56 -0000 On Wed, Aug 14, 2013 at 08:19:13AM -0400, John Baldwin wrote: > On Tuesday, August 13, 2013 8:42:22 pm Mark Johnston wrote: > > Author: markj > > Date: Wed Aug 14 00:42:21 2013 > > New Revision: 254309 > > URL: http://svnweb.freebsd.org/changeset/base/254309 > > > > Log: > > Use kld_{load,unload} instead of mod_{load,unload} for the linker file load > > and unload event handlers added in r254266. > > > > Reported by: jhb > > X-MFC with: r254266 > > Thanks! BTW, it would be really nice to replace HWPMC_HOOKS in kern_linker.c with > EVENTHANDLER calls. I think kld_load would just work (though you might need to > downgrade the lock before you run it). For kld_unload it seems you want two events, > a kld_unload_try for your newly added event (since it can reject a kld_unload), and > perhaps kld_unload at the end where the current HWPMC_HOOK is. Just an idea if > someone is looking for something to do. I know there are other modules that need > to hook into linker events like this, and making HWPMC_HOOKS more generic would be > a big help. Ok, I have a couple of patches which do this. The first diff fixes the locking issue in linker_file_lookup_set(). It ensures that this function is always called with the linker lock held; it's only called from kern_linker.c and sdt.c. The assertion in linker_file_lookup_set() checks for !cold to avoid adding some unnecessary locking in linker_preload(). The second diff below renames the kld_unload event to kld_unload_try, adds a kld_unload eventhandler, and converts hwpmc(4) to use kld_load and kld_unload. So now the kld_load and kld_unload handlers are invoked with the shared lock held, and the kld_unload_try handlers are invoked with the exclusive lock held. I've done a bunch of testing with module loads/unloads and made sure that the hwpmc and DTrace handlers are being called correctly. Would you be able to review the diff when you have a chance? The combined diff is also here: http://people.freebsd.org/~markj/patches/hwpmc-eh/hwpmc-eh-2.diff Thanks! -Mark diff 1: diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 3e500f3..528666c 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -81,6 +81,10 @@ TUNABLE_INT("debug.kld_debug", &kld_debug); if (!cold) \ sx_assert(&kld_sx, SX_XLOCKED); \ } while (0) +#define KLD_LOCK_READ_ASSERT() do { \ + if (!cold) \ + sx_assert(&kld_sx, SX_LOCKED); \ +} while (0) /* * static char *linker_search_path(const char *name, struct mod_depend @@ -208,6 +212,8 @@ linker_file_sysinit(linker_file_t lf) KLD_DPF(FILE, ("linker_file_sysinit: calling SYSINITs for %s\n", lf->filename)); + KLD_LOCK_ASSERT(); + if (linker_file_lookup_set(lf, "sysinit_set", &start, &stop, NULL) != 0) return; /* @@ -233,6 +239,7 @@ linker_file_sysinit(linker_file_t lf) * Traverse the (now) ordered list of system initialization tasks. * Perform each task, and continue on to the next task. */ + KLD_UNLOCK(); mtx_lock(&Giant); for (sipp = start; sipp < stop; sipp++) { if ((*sipp)->subsystem == SI_SUB_DUMMY) @@ -242,6 +249,7 @@ linker_file_sysinit(linker_file_t lf) (*((*sipp)->func)) ((*sipp)->udata); } mtx_unlock(&Giant); + KLD_LOCK(); } static void @@ -252,6 +260,8 @@ linker_file_sysuninit(linker_file_t lf) KLD_DPF(FILE, ("linker_file_sysuninit: calling SYSUNINITs for %s\n", lf->filename)); + KLD_LOCK_ASSERT(); + if (linker_file_lookup_set(lf, "sysuninit_set", &start, &stop, NULL) != 0) return; @@ -279,6 +289,7 @@ linker_file_sysuninit(linker_file_t lf) * Traverse the (now) ordered list of system initialization tasks. * Perform each task, and continue on to the next task. */ + KLD_UNLOCK(); mtx_lock(&Giant); for (sipp = start; sipp < stop; sipp++) { if ((*sipp)->subsystem == SI_SUB_DUMMY) @@ -288,6 +299,7 @@ linker_file_sysuninit(linker_file_t lf) (*((*sipp)->func)) ((*sipp)->udata); } mtx_unlock(&Giant); + KLD_LOCK(); } static void @@ -299,13 +311,17 @@ linker_file_register_sysctls(linker_file_t lf) ("linker_file_register_sysctls: registering SYSCTLs for %s\n", lf->filename)); + KLD_LOCK_ASSERT(); + if (linker_file_lookup_set(lf, "sysctl_set", &start, &stop, NULL) != 0) return; + KLD_UNLOCK(); sysctl_lock(); for (oidp = start; oidp < stop; oidp++) sysctl_register_oid(*oidp); sysctl_unlock(); + KLD_LOCK(); } static void @@ -316,13 +332,17 @@ linker_file_unregister_sysctls(linker_file_t lf) KLD_DPF(FILE, ("linker_file_unregister_sysctls: unregistering SYSCTLs" " for %s\n", lf->filename)); + KLD_LOCK_ASSERT(); + if (linker_file_lookup_set(lf, "sysctl_set", &start, &stop, NULL) != 0) return; + KLD_UNLOCK(); sysctl_lock(); for (oidp = start; oidp < stop; oidp++) sysctl_unregister_oid(*oidp); sysctl_unlock(); + KLD_LOCK(); } static int @@ -335,6 +355,8 @@ linker_file_register_modules(linker_file_t lf) KLD_DPF(FILE, ("linker_file_register_modules: registering modules" " in %s\n", lf->filename)); + KLD_LOCK_ASSERT(); + if (linker_file_lookup_set(lf, "modmetadata_set", &start, &stop, NULL) != 0) { /* @@ -421,10 +443,8 @@ linker_load_file(const char *filename, linker_file_t *result) return (error); } modules = !TAILQ_EMPTY(&lf->modules); - KLD_UNLOCK(); linker_file_register_sysctls(lf); linker_file_sysinit(lf); - KLD_LOCK(); lf->flags |= LINKER_FILE_LINKED; /* @@ -674,10 +694,8 @@ linker_file_unload(linker_file_t file, int flags) */ if (file->flags & LINKER_FILE_LINKED) { file->flags &= ~LINKER_FILE_LINKED; - KLD_UNLOCK(); linker_file_sysuninit(file); linker_file_unregister_sysctls(file); - KLD_LOCK(); } TAILQ_REMOVE(&linker_files, file, link); @@ -746,15 +764,9 @@ int linker_file_lookup_set(linker_file_t file, const char *name, void *firstp, void *lastp, int *countp) { - int error, locked; - locked = KLD_LOCKED(); - if (!locked) - KLD_LOCK(); - error = LINKER_LOOKUP_SET(file, name, firstp, lastp, countp); - if (!locked) - KLD_UNLOCK(); - return (error); + KLD_LOCK_READ_ASSERT(); + return (LINKER_LOOKUP_SET(file, name, firstp, lastp, countp)); } /* @@ -1648,11 +1660,13 @@ restart: lf->filename); goto fail; } + KLD_LOCK(); linker_file_register_modules(lf); if (linker_file_lookup_set(lf, "sysinit_set", &si_start, &si_stop, NULL) == 0) sysinit_add(si_start, si_stop); linker_file_register_sysctls(lf); + KLD_UNLOCK(); lf->flags |= LINKER_FILE_LINKED; continue; fail: --- diff 2: diff --git a/share/man/man9/EVENTHANDLER.9 b/share/man/man9/EVENTHANDLER.9 index c3b646d..d6e7556 100644 --- a/share/man/man9/EVENTHANDLER.9 +++ b/share/man/man9/EVENTHANDLER.9 @@ -202,6 +202,8 @@ Callbacks invoked when a BPF listener attaches to/detaches from network interfac .It Vt kld_load Callbacks invoked after a linker file has been loaded. .It Vt kld_unload +Callbacks invoked after a linker file has been successfully unloaded. +.It Vt kld_unload_try Callbacks invoked before a linker file is about to be unloaded. These callbacks may be used to return an error and prevent the unload from proceeding. diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c index 9c007e7..babc42c4 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c +++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c @@ -242,7 +242,7 @@ int dtrace_in_probe; /* non-zero if executing a probe */ uintptr_t dtrace_in_probe_addr; /* Address of invop when already in probe */ #endif static eventhandler_tag dtrace_kld_load_tag; -static eventhandler_tag dtrace_kld_unload_tag; +static eventhandler_tag dtrace_kld_unload_try_tag; #endif /* @@ -15351,7 +15351,7 @@ dtrace_kld_load(void *arg __unused, linker_file_t lf) } static void -dtrace_kld_unload(void *arg __unused, linker_file_t lf, int *error) +dtrace_kld_unload_try(void *arg __unused, linker_file_t lf, int *error) { if (*error != 0) diff --git a/sys/cddl/dev/dtrace/dtrace_load.c b/sys/cddl/dev/dtrace/dtrace_load.c index f37d593..05436fe 100644 --- a/sys/cddl/dev/dtrace/dtrace_load.c +++ b/sys/cddl/dev/dtrace/dtrace_load.c @@ -59,8 +59,8 @@ dtrace_load(void *dummy) /* Register callbacks for linker file load and unload events. */ dtrace_kld_load_tag = EVENTHANDLER_REGISTER(kld_load, dtrace_kld_load, NULL, EVENTHANDLER_PRI_ANY); - dtrace_kld_unload_tag = EVENTHANDLER_REGISTER(kld_unload, - dtrace_kld_unload, NULL, EVENTHANDLER_PRI_ANY); + dtrace_kld_unload_try_tag = EVENTHANDLER_REGISTER(kld_unload_try, + dtrace_kld_unload_try, NULL, EVENTHANDLER_PRI_ANY); /* * Initialise the mutexes without 'witness' because the dtrace diff --git a/sys/cddl/dev/dtrace/dtrace_unload.c b/sys/cddl/dev/dtrace/dtrace_unload.c index 9e37114..e9bd53c 100644 --- a/sys/cddl/dev/dtrace/dtrace_unload.c +++ b/sys/cddl/dev/dtrace/dtrace_unload.c @@ -68,7 +68,7 @@ dtrace_unload() dtrace_provider = NULL; EVENTHANDLER_DEREGISTER(kld_load, dtrace_kld_load_tag); - EVENTHANDLER_DEREGISTER(kld_unload, dtrace_kld_unload_tag); + EVENTHANDLER_DEREGISTER(kld_unload_try, dtrace_kld_unload_try_tag); if ((state = dtrace_anon_grab()) != NULL) { /* diff --git a/sys/cddl/dev/sdt/sdt.c b/sys/cddl/dev/sdt/sdt.c index a1cd1e2..80f676f 100644 --- a/sys/cddl/dev/sdt/sdt.c +++ b/sys/cddl/dev/sdt/sdt.c @@ -59,7 +59,7 @@ static int sdt_unload(void *); static void sdt_create_provider(struct sdt_provider *); static void sdt_create_probe(struct sdt_probe *); static void sdt_kld_load(void *, struct linker_file *); -static void sdt_kld_unload(void *, struct linker_file *, int *); +static void sdt_kld_unload_try(void *, struct linker_file *, int *); static MALLOC_DEFINE(M_SDT, "SDT", "DTrace SDT providers"); @@ -95,7 +95,7 @@ static struct cdev *sdt_cdev; static TAILQ_HEAD(, sdt_provider) sdt_prov_list; eventhandler_tag sdt_kld_load_tag; -eventhandler_tag sdt_kld_unload_tag; +eventhandler_tag sdt_kld_unload_try_tag; static void sdt_create_provider(struct sdt_provider *prov) @@ -260,7 +260,7 @@ sdt_kld_load(void *arg __unused, struct linker_file *lf) } static void -sdt_kld_unload(void *arg __unused, struct linker_file *lf, int *error __unused) +sdt_kld_unload_try(void *arg __unused, struct linker_file *lf, int *error __unused) { struct sdt_provider *prov, **curr, **begin, **end, *tmp; @@ -315,8 +315,8 @@ sdt_load(void *arg __unused) sdt_kld_load_tag = EVENTHANDLER_REGISTER(kld_load, sdt_kld_load, NULL, EVENTHANDLER_PRI_ANY); - sdt_kld_unload_tag = EVENTHANDLER_REGISTER(kld_unload, sdt_kld_unload, - NULL, EVENTHANDLER_PRI_ANY); + sdt_kld_unload_try_tag = EVENTHANDLER_REGISTER(kld_unload_try, + sdt_kld_unload_try, NULL, EVENTHANDLER_PRI_ANY); /* Pick up probes from the kernel and already-loaded linker files. */ linker_file_foreach(sdt_linker_file_cb, NULL); @@ -328,7 +328,7 @@ sdt_unload(void *arg __unused) struct sdt_provider *prov, *tmp; EVENTHANDLER_DEREGISTER(kld_load, sdt_kld_load_tag); - EVENTHANDLER_DEREGISTER(kld_unload, sdt_kld_unload_tag); + EVENTHANDLER_DEREGISTER(kld_unload_try, sdt_kld_unload_try_tag); sdt_probe_func = sdt_probe_stub; diff --git a/sys/dev/hwpmc/hwpmc_mod.c b/sys/dev/hwpmc/hwpmc_mod.c index 150c69a..858b319 100644 --- a/sys/dev/hwpmc/hwpmc_mod.c +++ b/sys/dev/hwpmc/hwpmc_mod.c @@ -132,7 +132,8 @@ static int *pmc_pmcdisp; /* PMC row dispositions */ /* various event handlers */ -static eventhandler_tag pmc_exit_tag, pmc_fork_tag; +static eventhandler_tag pmc_exit_tag, pmc_fork_tag, pmc_kld_load_tag, + pmc_kld_unload_tag; /* Module statistics */ struct pmc_op_getdriverstats pmc_stats; @@ -1476,50 +1477,6 @@ pmc_process_csw_out(struct thread *td) } /* - * Log a KLD operation. - */ - -static void -pmc_process_kld_load(struct pmckern_map_in *pkm) -{ - struct pmc_owner *po; - - sx_assert(&pmc_sx, SX_LOCKED); - - /* - * Notify owners of system sampling PMCs about KLD operations. - */ - - LIST_FOREACH(po, &pmc_ss_owners, po_ssnext) - if (po->po_flags & PMC_PO_OWNS_LOGFILE) - pmclog_process_map_in(po, (pid_t) -1, pkm->pm_address, - (char *) pkm->pm_file); - - /* - * TODO: Notify owners of (all) process-sampling PMCs too. - */ - - return; -} - -static void -pmc_process_kld_unload(struct pmckern_map_out *pkm) -{ - struct pmc_owner *po; - - sx_assert(&pmc_sx, SX_LOCKED); - - LIST_FOREACH(po, &pmc_ss_owners, po_ssnext) - if (po->po_flags & PMC_PO_OWNS_LOGFILE) - pmclog_process_map_out(po, (pid_t) -1, - pkm->pm_address, pkm->pm_address + pkm->pm_size); - - /* - * TODO: Notify owners of process-sampling PMCs. - */ -} - -/* * A mapping change for a process. */ @@ -1833,8 +1790,6 @@ const char *pmc_hooknames[] = { "CSW-IN", "CSW-OUT", "SAMPLE", - "KLDLOAD", - "KLDUNLOAD", "MMAP", "MUNMAP", "CALLCHAIN-NMI", @@ -2002,17 +1957,6 @@ pmc_hook_handler(struct thread *td, int function, void *arg) pmc_process_samples(PCPU_GET(cpuid), PMC_SR); break; - - case PMC_FN_KLD_LOAD: - sx_assert(&pmc_sx, SX_LOCKED); - pmc_process_kld_load((struct pmckern_map_in *) arg); - break; - - case PMC_FN_KLD_UNLOAD: - sx_assert(&pmc_sx, SX_LOCKED); - pmc_process_kld_unload((struct pmckern_map_out *) arg); - break; - case PMC_FN_MMAP: sx_assert(&pmc_sx, SX_LOCKED); pmc_process_mmap(td, (struct pmckern_map_in *) arg); @@ -4644,6 +4588,47 @@ pmc_process_fork(void *arg __unused, struct proc *p1, struct proc *newproc, sx_xunlock(&pmc_sx); } +static void +pmc_kld_load(void *arg __unused, linker_file_t lf) +{ + struct pmc_owner *po; + + sx_slock(&pmc_sx); + + /* + * Notify owners of system sampling PMCs about KLD operations. + */ + LIST_FOREACH(po, &pmc_ss_owners, po_ssnext) + if (po->po_flags & PMC_PO_OWNS_LOGFILE) + pmclog_process_map_in(po, (pid_t) -1, + (uintfptr_t) lf->address, lf->filename); + + /* + * TODO: Notify owners of (all) process-sampling PMCs too. + */ + + sx_sunlock(&pmc_sx); +} + +static void +pmc_kld_unload(void *arg __unused, const char *filename __unused, + caddr_t address, size_t size) +{ + struct pmc_owner *po; + + sx_slock(&pmc_sx); + + LIST_FOREACH(po, &pmc_ss_owners, po_ssnext) + if (po->po_flags & PMC_PO_OWNS_LOGFILE) + pmclog_process_map_out(po, (pid_t) -1, + (uintfptr_t) address, (uintfptr_t) address + size); + + /* + * TODO: Notify owners of process-sampling PMCs. + */ + + sx_sunlock(&pmc_sx); +} /* * initialization @@ -4913,6 +4898,12 @@ pmc_initialize(void) pmc_fork_tag = EVENTHANDLER_REGISTER(process_fork, pmc_process_fork, NULL, EVENTHANDLER_PRI_ANY); + /* register kld event handlers */ + pmc_kld_load_tag = EVENTHANDLER_REGISTER(kld_load, pmc_kld_load, + NULL, EVENTHANDLER_PRI_ANY); + pmc_kld_unload_tag = EVENTHANDLER_REGISTER(kld_unload, pmc_kld_unload, + NULL, EVENTHANDLER_PRI_ANY); + /* initialize logging */ pmclog_initialize(); @@ -4970,6 +4961,8 @@ pmc_cleanup(void) /* deregister event handlers */ EVENTHANDLER_DEREGISTER(process_fork, pmc_fork_tag); EVENTHANDLER_DEREGISTER(process_exit, pmc_exit_tag); + EVENTHANDLER_DEREGISTER(kld_load, pmc_kld_load_tag); + EVENTHANDLER_DEREGISTER(kld_unload, pmc_kld_unload_tag); /* send SIGBUS to all owner threads, free up allocations */ if (pmc_ownerhash) diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 528666c..0ddd21b 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -1016,9 +1016,6 @@ linker_search_symbol_name(caddr_t value, char *buf, u_int buflen, int kern_kldload(struct thread *td, const char *file, int *fileid) { -#ifdef HWPMC_HOOKS - struct pmckern_map_in pkm; -#endif const char *kldname, *modname; linker_file_t lf; int error; @@ -1058,17 +1055,9 @@ kern_kldload(struct thread *td, const char *file, int *fileid) if (fileid != NULL) *fileid = lf->id; - EVENTHANDLER_INVOKE(kld_load, lf); - -#ifdef HWPMC_HOOKS KLD_DOWNGRADE(); - pkm.pm_file = lf->filename; - pkm.pm_address = (uintptr_t) lf->address; - PMC_CALL_HOOK(td, PMC_FN_KLD_LOAD, (void *) &pkm); + EVENTHANDLER_INVOKE(kld_load, lf); KLD_UNLOCK_READ(); -#else - KLD_UNLOCK(); -#endif done: CURVNET_RESTORE(); @@ -1097,10 +1086,10 @@ sys_kldload(struct thread *td, struct kldload_args *uap) int kern_kldunload(struct thread *td, int fileid, int flags) { -#ifdef HWPMC_HOOKS - struct pmckern_map_out pkm; -#endif linker_file_t lf; + char *filename = NULL; + caddr_t address; + size_t size; int error = 0; if ((error = securelevel_gt(td->td_ucred, 0)) != 0) @@ -1115,7 +1104,7 @@ kern_kldunload(struct thread *td, int fileid, int flags) if (lf) { KLD_DPF(FILE, ("kldunload: lf->userrefs=%d\n", lf->userrefs)); - EVENTHANDLER_INVOKE(kld_unload, lf, &error); + EVENTHANDLER_INVOKE(kld_unload_try, lf, &error); if (error != 0) error = EBUSY; else if (lf->userrefs == 0) { @@ -1126,11 +1115,11 @@ kern_kldunload(struct thread *td, int fileid, int flags) " loaded by the kernel\n"); error = EBUSY; } else { -#ifdef HWPMC_HOOKS - /* Save data needed by hwpmc(4) before unloading. */ - pkm.pm_address = (uintptr_t) lf->address; - pkm.pm_size = lf->size; -#endif + /* Save data needed for the kld_unload callbacks. */ + filename = strdup(lf->filename, M_TEMP); + address = lf->address; + size = lf->size; + lf->userrefs--; error = linker_file_unload(lf, flags); if (error) @@ -1139,16 +1128,14 @@ kern_kldunload(struct thread *td, int fileid, int flags) } else error = ENOENT; -#ifdef HWPMC_HOOKS if (error == 0) { KLD_DOWNGRADE(); - PMC_CALL_HOOK(td, PMC_FN_KLD_UNLOAD, (void *) &pkm); + EVENTHANDLER_INVOKE(kld_unload, filename, address, size); KLD_UNLOCK_READ(); } else KLD_UNLOCK(); -#else - KLD_UNLOCK(); -#endif + free(filename, M_TEMP); + CURVNET_RESTORE(); return (error); } diff --git a/sys/sys/eventhandler.h b/sys/sys/eventhandler.h index a1f9c55..2656877 100644 --- a/sys/sys/eventhandler.h +++ b/sys/sys/eventhandler.h @@ -269,8 +269,11 @@ EVENTHANDLER_DECLARE(maxsockets_change, uma_zone_chfn); /* Kernel linker file load and unload events */ struct linker_file; typedef void (*kld_load_fn)(void *, struct linker_file *); -typedef void (*kld_unload_fn)(void *, struct linker_file *, int *); +typedef void (*kld_unload_fn)(void *, const char *filename, caddr_t addr, + size_t size); +typedef void (*kld_unload_try_fn)(void *, struct linker_file *, int *); EVENTHANDLER_DECLARE(kld_load, kld_load_fn); EVENTHANDLER_DECLARE(kld_unload, kld_unload_fn); +EVENTHANDLER_DECLARE(kld_unload_try, kld_unload_try_fn); #endif /* SYS_EVENTHANDLER_H */ diff --git a/sys/sys/pmckern.h b/sys/sys/pmckern.h index e3e18a6..90585de 100644 --- a/sys/sys/pmckern.h +++ b/sys/sys/pmckern.h @@ -51,13 +51,11 @@ #define PMC_FN_CSW_IN 2 #define PMC_FN_CSW_OUT 3 #define PMC_FN_DO_SAMPLES 4 -#define PMC_FN_KLD_LOAD 5 -#define PMC_FN_KLD_UNLOAD 6 -#define PMC_FN_MMAP 7 -#define PMC_FN_MUNMAP 8 -#define PMC_FN_USER_CALLCHAIN 9 -#define PMC_FN_USER_CALLCHAIN_SOFT 10 -#define PMC_FN_SOFT_SAMPLING 11 +#define PMC_FN_MMAP 5 +#define PMC_FN_MUNMAP 6 +#define PMC_FN_USER_CALLCHAIN 7 +#define PMC_FN_USER_CALLCHAIN_SOFT 8 +#define PMC_FN_SOFT_SAMPLING 9 #define PMC_HR 0 /* Hardware ring buffer */ #define PMC_SR 1 /* Software ring buffer */ From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 17:13:18 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B2B2D9E8; Fri, 16 Aug 2013 17:13:18 +0000 (UTC) (envelope-from davide.italiano@gmail.com) Received: from mail-vc0-x22e.google.com (mail-vc0-x22e.google.com [IPv6:2607:f8b0:400c:c03::22e]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2843C2514; Fri, 16 Aug 2013 17:13:18 +0000 (UTC) Received: by mail-vc0-f174.google.com with SMTP id gd11so1638880vcb.33 for ; Fri, 16 Aug 2013 10:13:17 -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:message-id:subject :from:to:cc:content-type; bh=HqO5Hs0Gk1PnpdgY1h/gf4TuSZBmyVg77VLWiVHw3h4=; b=zfnbC2Wst+BfbaeeTl2C/Z7JxU/FgQPZ+M2U7FCR/9B2gixtFS5OD3sJWu9OxIrhZF a5GJPvy0DVh5O+a6FwAe/h3C+cnQXnCZwf0xojH+WSeFRNR/LHGyDjf53BX/QF4wRC1i LSEVbC0a0or7Cnj9YI3ecPUQDjeBhoP3L8nO7gseplURcBJGSi+SlAggX/VI+d2wdAIW 9Q4oE9gR0m/y8vuiFyLu4/mcwJTXDu0UQ2WIuS7H8V1+YxXXE1lGB1W0cro5cqDGlhaD v4hmTLK3vf9zZSdiPSbSTS+MoY0j64q46exLFJ1lDj0Cqp7VpE9GYwDRTdDlC1sCy9i/ ipvg== MIME-Version: 1.0 X-Received: by 10.220.91.16 with SMTP id k16mr2190821vcm.21.1376673197152; Fri, 16 Aug 2013 10:13:17 -0700 (PDT) Sender: davide.italiano@gmail.com Received: by 10.220.21.140 with HTTP; Fri, 16 Aug 2013 10:13:16 -0700 (PDT) In-Reply-To: <20130816170027.GA1888@charmander.sandvine.com> References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308140819.13854.jhb@freebsd.org> <20130816170027.GA1888@charmander.sandvine.com> Date: Fri, 16 Aug 2013 19:13:16 +0200 X-Google-Sender-Auth: CvHfX_7SEvvfdbb7c-b7pcLNg6A Message-ID: Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys From: Davide Italiano To: Mark Johnston Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, John Baldwin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 17:13:18 -0000 [trim old mails] > diff --git a/sys/sys/pmckern.h b/sys/sys/pmckern.h > index e3e18a6..90585de 100644 > --- a/sys/sys/pmckern.h > +++ b/sys/sys/pmckern.h > @@ -51,13 +51,11 @@ > #define PMC_FN_CSW_IN 2 > #define PMC_FN_CSW_OUT 3 > #define PMC_FN_DO_SAMPLES 4 > -#define PMC_FN_KLD_LOAD 5 > -#define PMC_FN_KLD_UNLOAD 6 > -#define PMC_FN_MMAP 7 > -#define PMC_FN_MUNMAP 8 > -#define PMC_FN_USER_CALLCHAIN 9 > -#define PMC_FN_USER_CALLCHAIN_SOFT 10 > -#define PMC_FN_SOFT_SAMPLING 11 > +#define PMC_FN_MMAP 5 > +#define PMC_FN_MUNMAP 6 > +#define PMC_FN_USER_CALLCHAIN 7 > +#define PMC_FN_USER_CALLCHAIN_SOFT 8 > +#define PMC_FN_SOFT_SAMPLING 9 > I've skimmed over your patch quickly so I could miss something, but I worry about this change breaking the KBI. Does this make sense for you? > #define PMC_HR 0 /* Hardware ring buffer */ > #define PMC_SR 1 /* Software ring buffer */ > Thanks, -- Davide "There are no solved problems; there are only problems that are more or less solved" -- Henri Poincare From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 17:40:49 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3E8D86EC; Fri, 16 Aug 2013 17:40:49 +0000 (UTC) (envelope-from markjdb@gmail.com) Received: from mail-qe0-x234.google.com (mail-qe0-x234.google.com [IPv6:2607:f8b0:400d:c02::234]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AB4902690; Fri, 16 Aug 2013 17:40:48 +0000 (UTC) Received: by mail-qe0-f52.google.com with SMTP id a11so417291qen.25 for ; Fri, 16 Aug 2013 10:40:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=BQD4sNg/oJr5CseckK+XKzZWV5VlLoRQQg+8yIuvpNo=; b=v4qj4JuWPJst0E12J/9tgtgCSQeQa6hwVTU9LBkbBHXaHWpKcXU144bbnByw73OPvl 3DgKpFOVexBjSxnZrGmaQO9+lgaC8I+BOxK+OQSsql2lciuJMR7SFquYuexT+j52KBSC sRX5XQWpW4IRKjtlwhq/dPvs8PCb0SMMQcM83V/tZOR9w91josRbHToaR4lBmT4KDuH8 zSFXaH7X+OkrJKik4mrJbn9Xf3QRNXGMTVcYyBz4HiOtfKGQkPlMK7X+o5K4gX3mSdQr oURy8n2FqsIX7a9e0TE+cb5UXXC6pbeyfC8S7X7vY9JqnK4VR7vG6RBsxZPMgm32Yju/ Tn2Q== X-Received: by 10.224.114.11 with SMTP id c11mr4882651qaq.37.1376674847209; Fri, 16 Aug 2013 10:40:47 -0700 (PDT) Received: from charmander.sandvine.com ([64.7.137.182]) by mx.google.com with ESMTPSA id y1sm3266567qaj.2.1969.12.31.16.00.00 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 16 Aug 2013 10:40:46 -0700 (PDT) Sender: Mark Johnston Date: Fri, 16 Aug 2013 13:41:31 -0400 From: Mark Johnston To: Davide Italiano Subject: Re: svn commit: r254309 - in head: share/man/man9 sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/dev/dtrace sys/cddl/dev/sdt sys/kern sys/sys Message-ID: <20130816174131.GB1888@charmander.sandvine.com> References: <201308140042.r7E0gMtf054550@svn.freebsd.org> <201308140819.13854.jhb@freebsd.org> <20130816170027.GA1888@charmander.sandvine.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, John Baldwin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 17:40:49 -0000 On Fri, Aug 16, 2013 at 07:13:16PM +0200, Davide Italiano wrote: > [trim old mails] > > > diff --git a/sys/sys/pmckern.h b/sys/sys/pmckern.h > > index e3e18a6..90585de 100644 > > --- a/sys/sys/pmckern.h > > +++ b/sys/sys/pmckern.h > > @@ -51,13 +51,11 @@ > > #define PMC_FN_CSW_IN 2 > > #define PMC_FN_CSW_OUT 3 > > #define PMC_FN_DO_SAMPLES 4 > > -#define PMC_FN_KLD_LOAD 5 > > -#define PMC_FN_KLD_UNLOAD 6 > > -#define PMC_FN_MMAP 7 > > -#define PMC_FN_MUNMAP 8 > > -#define PMC_FN_USER_CALLCHAIN 9 > > -#define PMC_FN_USER_CALLCHAIN_SOFT 10 > > -#define PMC_FN_SOFT_SAMPLING 11 > > +#define PMC_FN_MMAP 5 > > +#define PMC_FN_MUNMAP 6 > > +#define PMC_FN_USER_CALLCHAIN 7 > > +#define PMC_FN_USER_CALLCHAIN_SOFT 8 > > +#define PMC_FN_SOFT_SAMPLING 9 > > > > I've skimmed over your patch quickly so I could miss something, but I > worry about this change breaking the KBI. > Does this make sense for you? I think you're right. I considered this last night, but it didn't occur to me that external modules might try to invoke these hooks. I'm not sure if such modules exist, but it's better to be safe. I updated the patch here: http://people.freebsd.org/~markj/patches/hwpmc-eh/hwpmc-eh-3.diff Thanks! -Mark From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 18:17:38 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9C2E1D57 for ; Fri, 16 Aug 2013 18:17:38 +0000 (UTC) (envelope-from bounces+73574-9504-svn-src-head=freebsd.org@sendgrid.me) Received: from o3.shared.sendgrid.net (o3.shared.sendgrid.net [208.117.48.85]) by mx1.freebsd.org (Postfix) with SMTP id 228C2288F for ; Fri, 16 Aug 2013 18:17:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.info; h=from :mime-version:to:cc:subject:references:in-reply-to:content-type :content-transfer-encoding; s=smtpapi; bh=BfiKIYsCFh5petURArkOE8 5dFjY=; b=TuljUlGAEaiIRKnG48c8S/pWbF5wqp83M5RxX2vnzUS10dRBsd5MCS hpk91PGP/0+zTsmRTt3+PhoSTZxcsusz/rMUTIBzwiocW7u5QH7N4cOCgY9kP3kh 1LgsNE9iqckdix7sGz8Efp9o41RGtTg9PWvHHTKos+/2tk0enLgQc= Received: by with SMTP id filter-138.12338.520E6CB5B Fri, 16 Aug 2013 18:17:25 +0000 (GMT) Received: from mail.tarsnap.com (unknown [10.60.208.15]) by mi17 (SG) with ESMTP id 1408858a505.49f6.777c03 for ; Fri, 16 Aug 2013 18:17:25 +0000 (UTC) Received: (qmail 73696 invoked from network); 16 Aug 2013 18:17:24 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by ec2-107-20-205-189.compute-1.amazonaws.com with ESMTP; 16 Aug 2013 18:17:24 -0000 Received: (qmail 62537 invoked from network); 16 Aug 2013 18:17:20 -0000 Received: from unknown (HELO clamshell.daemonology.net) (127.0.0.1) by clamshell.daemonology.net with SMTP; 16 Aug 2013 18:17:20 -0000 Message-ID: <520E6CB0.9000100@freebsd.org> Date: Fri, 16 Aug 2013 11:17:20 -0700 From: Colin Percival User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130722 Thunderbird/17.0.7 MIME-Version: 1.0 To: Ivan Voras Subject: Re: svn commit: r254380 - in head/sys: kern sys References: <201308152019.r7FKJI0H095440@svn.freebsd.org> <520D3AD8.4090207@freebsd.org> <520D49EB.9060308@freebsd.org> In-Reply-To: X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SG-EID: EvYvoie/qnEezyq2t4eRKjDm9X7ZKbCMt75WvXA+XNFLOhoeet4uwWdrLLA4PF2CpGKdduVPXqVM2fTTH/4mFakfMr3TTvoNyFRScH5C4dLz6HNehSZ3ic9Pzyqhl05owGoOhGA9VdOSIIje7IxCzg== Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 18:17:38 -0000 On 08/16/13 02:38, Ivan Voras wrote: >> We have a single-writer / multiple-readers lock on *any particular byte* >> of a vnode. The rangelock code is what keeps track of this, and the >> locking contention I was reducing was in the rangelock bookkeeping. > > So, for example, if multiple processes or multiple threads read or > write a file somewhat unintelligently (a small file, operations on the > whole file, like in blogbench), they will effectively content for the > byte 0, right? There can be multiple reads or one write, so yes there would be contention in that case. -- Colin Percival Security Officer Emeritus, FreeBSD | The power to serve Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 18:47:19 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0B271883; Fri, 16 Aug 2013 18:47:19 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D34392A53; Fri, 16 Aug 2013 18:47:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GIlIfE006141; Fri, 16 Aug 2013 18:47:18 GMT (envelope-from sjg@svn.freebsd.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GIlIGW006139; Fri, 16 Aug 2013 18:47:18 GMT (envelope-from sjg@svn.freebsd.org) Message-Id: <201308161847.r7GIlIGW006139@svn.freebsd.org> From: "Simon J. Gerraty" Date: Fri, 16 Aug 2013 18:47:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254419 - head/contrib/bmake X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 18:47:19 -0000 Author: sjg Date: Fri Aug 16 18:47:18 2013 New Revision: 254419 URL: http://svnweb.freebsd.org/changeset/base/254419 Log: Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes) for backwards compatability. Modified: head/contrib/bmake/job.c head/contrib/bmake/make.1 Modified: head/contrib/bmake/job.c ============================================================================== --- head/contrib/bmake/job.c Fri Aug 16 16:55:39 2013 (r254418) +++ head/contrib/bmake/job.c Fri Aug 16 18:47:18 2013 (r254419) @@ -172,6 +172,14 @@ __RCSID("$NetBSD: job.c,v 1.175 2013/07/ # define STATIC static /* + * FreeBSD: traditionally .MAKE is not required to + * pass jobs queue to sub-makes. + * Use .MAKE.ALWAYS_PASS_JOB_QUEUE=no to disable. + */ +#define MAKE_ALWAYS_PASS_JOB_QUEUE ".MAKE.ALWAYS_PASS_JOB_QUEUE" +static int Always_pass_job_queue = TRUE; + +/* * error handling variables */ static int errors = 0; /* number of errors reported */ @@ -1360,7 +1368,7 @@ JobExec(Job *job, char **argv) (void)fcntl(0, F_SETFD, 0); (void)lseek(0, (off_t)0, SEEK_SET); - if (job->node->type & OP_MAKE) { + if (Always_pass_job_queue || (job->node->type & OP_MAKE)) { /* * Pass job token pipe to submakes. */ @@ -2226,6 +2234,9 @@ Job_Init(void) lastNode = NULL; + Always_pass_job_queue = getBoolean(MAKE_ALWAYS_PASS_JOB_QUEUE, + Always_pass_job_queue); + /* * There is a non-zero chance that we already have children. * eg after 'make -f- < Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6B275DC7 for ; Fri, 16 Aug 2013 18:56:53 +0000 (UTC) (envelope-from juli@clockworksquid.com) Received: from mail-lb0-f177.google.com (mail-lb0-f177.google.com [209.85.217.177]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E56A12ADD for ; Fri, 16 Aug 2013 18:56:52 +0000 (UTC) Received: by mail-lb0-f177.google.com with SMTP id n6so1618328lbi.8 for ; Fri, 16 Aug 2013 11:56:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc:content-type; bh=hjBP9iwPb4Knka6K1Sh6YlOcZwC8g0oHI1D+4ocf4cc=; b=Jl9ek/bKRH/NIZ5bfpBkBQAwirRrpoGwzmruu9loscdm4mhZ9m4UmVRUvvyotcj80Z CZdcw3yBuaCDjCt8HybyNIEdJxrvKMugyBN48AWkQEDMTVuoYBz4n42mzShFurQMg6Kn +IKfUreZabN4bCLnYmqTSLeEmsgqNDtDCXqwHna8UawP36T53TiWndLleILNvT8nr4fp s4oeedM6feXxFgFPtwsoNmSNffS29kuuJ7DS5tIrjezG0UzodfdxEcaxYYH3yINymW+d mwk23j977eb/QOlXWn2Ut1m5ax4IUL8uxj7y/CSSYut4bB5YRYUTss/VxzLI7L0eHQvo mbvA== X-Gm-Message-State: ALoCoQkQcUIR/prC1DPcBi2H7M7UJCwfNLsi35FKhJ+NF7rdawvHvbJFAZ5pvqYfWpFsUA/ciPh7 X-Received: by 10.112.14.102 with SMTP id o6mr3394494lbc.28.1376679404830; Fri, 16 Aug 2013 11:56:44 -0700 (PDT) MIME-Version: 1.0 Sender: juli@clockworksquid.com Received: by 10.152.23.101 with HTTP; Fri, 16 Aug 2013 11:56:24 -0700 (PDT) In-Reply-To: <201308161847.r7GIlIGW006139@svn.freebsd.org> References: <201308161847.r7GIlIGW006139@svn.freebsd.org> From: Juli Mallett Date: Fri, 16 Aug 2013 11:56:24 -0700 X-Google-Sender-Auth: WvzToEoJj-GxhKO39Ll1OuOt_Uo Message-ID: Subject: Re: svn commit: r254419 - head/contrib/bmake To: "Simon J. Gerraty" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 18:56:53 -0000 On Fri, Aug 16, 2013 at 11:47 AM, Simon J. Gerraty wrote: > Author: sjg > Date: Fri Aug 16 18:47:18 2013 > New Revision: 254419 > URL: http://svnweb.freebsd.org/changeset/base/254419 > > Log: > Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes) > for backwards compatability. > Thanks very much. Do you have some sense of when/if this might switch to a default of "no"? If so, it seems like it might be good to note that dependence on that behaviour is deprecated and will be removed in 11.0-RELEASE or whenever you think appropriate. Thanks again, Juli. From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 19:40:01 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A92B6E43; Fri, 16 Aug 2013 19:40:01 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7CF502CF6; Fri, 16 Aug 2013 19:40:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GJe1Y5025946; Fri, 16 Aug 2013 19:40:01 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GJe17H025945; Fri, 16 Aug 2013 19:40:01 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308161940.r7GJe17H025945@svn.freebsd.org> From: Ian Lepore Date: Fri, 16 Aug 2013 19:40:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254423 - head/sys/dev/sdhci X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 19:40:01 -0000 Author: ian Date: Fri Aug 16 19:40:00 2013 New Revision: 254423 URL: http://svnweb.freebsd.org/changeset/base/254423 Log: When the timeout clock is based on the SD clock, the timeout counter has to be recalculated every time the SD clock frequency changes. Also, tidy up the counter calculation... it makes no sense to calculate a value one larger than the limit, then whine that it's too large and truncate it to the limit. If the BROKEN_TIMEOUT quirk is set, don't calculate the counter at all, just set it to the limit value. Modified: head/sys/dev/sdhci/sdhci.c Modified: head/sys/dev/sdhci/sdhci.c ============================================================================== --- head/sys/dev/sdhci/sdhci.c Fri Aug 16 19:33:36 2013 (r254422) +++ head/sys/dev/sdhci/sdhci.c Fri Aug 16 19:40:00 2013 (r254423) @@ -238,6 +238,11 @@ sdhci_set_clock(struct sdhci_slot *slot, /* If no clock requested - left it so. */ if (clock == 0) return; + + /* Recalculate timeout clock frequency based on the new sd clock. */ + if (slot->quirks & SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK) + slot->timeout_clk = slot->clock / 1000; + if (slot->version < SDHCI_SPEC_300) { /* Looking for highest freq <= clock. */ res = slot->max_clk; @@ -545,7 +550,8 @@ sdhci_init_slot(device_t dev, struct sdh if (slot->timeout_clk == 0) { device_printf(dev, "Hardware doesn't specify timeout clock " - "frequency.\n"); + "frequency, setting BROKEN_TIMEOUT quirk.\n"); + slot->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL; } slot->host.f_min = SDHCI_MIN_FREQ(slot->bus, slot); @@ -855,24 +861,22 @@ sdhci_start_data(struct sdhci_slot *slot /* Calculate and set data timeout.*/ /* XXX: We should have this from mmc layer, now assume 1 sec. */ - target_timeout = 1000000; - div = 0; - current_timeout = (1 << 13) * 1000 / slot->timeout_clk; - while (current_timeout < target_timeout) { - div++; - current_timeout <<= 1; - if (div >= 0xF) - break; - } - /* Compensate for an off-by-one error in the CaFe chip.*/ - if (slot->quirks & SDHCI_QUIRK_INCR_TIMEOUT_CONTROL) - div++; - if (div >= 0xF) { - slot_printf(slot, "Timeout too large!\n"); + if (slot->quirks & SDHCI_QUIRK_BROKEN_TIMEOUT_VAL) { div = 0xE; + } else { + target_timeout = 1000000; + div = 0; + current_timeout = (1 << 13) * 1000 / slot->timeout_clk; + while (current_timeout < target_timeout && div < 0xE) { + ++div; + current_timeout <<= 1; + } + /* Compensate for an off-by-one error in the CaFe chip.*/ + if (div < 0xE && + (slot->quirks & SDHCI_QUIRK_INCR_TIMEOUT_CONTROL)) { + ++div; + } } - if (slot->quirks & SDHCI_QUIRK_BROKEN_TIMEOUT_VAL) - div = 0xE; WR1(slot, SDHCI_TIMEOUT_CONTROL, div); if (data == NULL) From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 19:44:50 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 66CE7FD0; Fri, 16 Aug 2013 19:44:50 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5406E2D3E; Fri, 16 Aug 2013 19:44:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GJioJI028719; Fri, 16 Aug 2013 19:44:50 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GJiobc028718; Fri, 16 Aug 2013 19:44:50 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308161944.r7GJiobc028718@svn.freebsd.org> From: Ian Lepore Date: Fri, 16 Aug 2013 19:44:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254424 - head/sys/dev/sdhci X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 19:44:50 -0000 Author: ian Date: Fri Aug 16 19:44:49 2013 New Revision: 254424 URL: http://svnweb.freebsd.org/changeset/base/254424 Log: Add named constants for 8-bit bus support. The sdhci and mmc drivers don't have support for this yet, but some low-level hardware is ready for it when the higher layers catch up. Modified: head/sys/dev/sdhci/sdhci.h Modified: head/sys/dev/sdhci/sdhci.h ============================================================================== --- head/sys/dev/sdhci/sdhci.h Fri Aug 16 19:40:00 2013 (r254423) +++ head/sys/dev/sdhci/sdhci.h Fri Aug 16 19:44:49 2013 (r254424) @@ -120,6 +120,8 @@ #define SDHCI_CTRL_SDMA 0x08 #define SDHCI_CTRL_ADMA2 0x10 #define SDHCI_CTRL_ADMA264 0x18 +#define SDHCI_CTRL_DMA_MASK 0x18 +#define SDHCI_CTRL_8BITBUS 0x20 #define SDHCI_CTRL_CARD_DET 0x40 #define SDHCI_CTRL_FORCE_CARD 0x80 @@ -195,6 +197,7 @@ #define SDHCI_CLOCK_BASE_SHIFT 8 #define SDHCI_MAX_BLOCK_MASK 0x00030000 #define SDHCI_MAX_BLOCK_SHIFT 16 +#define SDHCI_CAN_DO_8BITBUS 0x00040000 #define SDHCI_CAN_DO_ADMA2 0x00080000 #define SDHCI_CAN_DO_HISPD 0x00200000 #define SDHCI_CAN_DO_DMA 0x00400000 From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 20:22:58 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 493D2A36; Fri, 16 Aug 2013 20:22:58 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 35FFB2F3E; Fri, 16 Aug 2013 20:22:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GKMwKg043652; Fri, 16 Aug 2013 20:22:58 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GKMw50043651; Fri, 16 Aug 2013 20:22:58 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308162022.r7GKMw50043651@svn.freebsd.org> From: Ian Lepore Date: Fri, 16 Aug 2013 20:22:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254425 - head/sys/dev/mmc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 20:22:58 -0000 Author: ian Date: Fri Aug 16 20:22:57 2013 New Revision: 254425 URL: http://svnweb.freebsd.org/changeset/base/254425 Log: Print the card relative address in hex, because that's what all the other debugging output does (when it appears in command arguments, for example). Modified: head/sys/dev/mmc/mmc.c Modified: head/sys/dev/mmc/mmc.c ============================================================================== --- head/sys/dev/mmc/mmc.c Fri Aug 16 19:44:49 2013 (r254424) +++ head/sys/dev/mmc/mmc.c Fri Aug 16 20:22:57 2013 (r254425) @@ -1209,7 +1209,7 @@ mmc_set_blocklen(struct mmc_softc *sc, u static void mmc_log_card(device_t dev, struct mmc_ivars *ivar, int newcard) { - device_printf(dev, "Card at relative address %d%s:\n", + device_printf(dev, "Card at relative address 0x%04x%s:\n", ivar->rca, newcard ? " added" : ""); device_printf(dev, " card: %s\n", ivar->card_id_string); device_printf(dev, " bus: %ubit, %uMHz%s\n", From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 20:24:43 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 66585B88; Fri, 16 Aug 2013 20:24:43 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 44DE62F51; Fri, 16 Aug 2013 20:24:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GKOhEV043922; Fri, 16 Aug 2013 20:24:43 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GKOgan043911; Fri, 16 Aug 2013 20:24:42 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308162024.r7GKOgan043911@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 16 Aug 2013 20:24:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254426 - head/bin/sh X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 20:24:43 -0000 Author: jilles Date: Fri Aug 16 20:24:41 2013 New Revision: 254426 URL: http://svnweb.freebsd.org/changeset/base/254426 Log: sh: Remove unnecessary reset functions. These are already handled by exception handlers. Modified: head/bin/sh/eval.c head/bin/sh/main.c head/bin/sh/parser.c head/bin/sh/parser.h head/bin/sh/redir.c head/bin/sh/redir.h Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Fri Aug 16 20:22:57 2013 (r254425) +++ head/bin/sh/eval.c Fri Aug 16 20:24:41 2013 (r254426) @@ -109,7 +109,6 @@ reseteval(void) { evalskip = 0; loopnest = 0; - funcnest = 0; } Modified: head/bin/sh/main.c ============================================================================== --- head/bin/sh/main.c Fri Aug 16 20:22:57 2013 (r254425) +++ head/bin/sh/main.c Fri Aug 16 20:24:41 2013 (r254426) @@ -185,8 +185,6 @@ reset(void) { reseteval(); resetinput(); - resetparser(); - resetredir(); } /* Modified: head/bin/sh/parser.c ============================================================================== --- head/bin/sh/parser.c Fri Aug 16 20:22:57 2013 (r254425) +++ head/bin/sh/parser.c Fri Aug 16 20:24:41 2013 (r254426) @@ -210,6 +210,7 @@ parsecmd(int interact) heredoclist = NULL; tokpushback = 0; + checkkwd = 0; doprompt = interact; if (doprompt) setprompt(1); @@ -1822,14 +1823,6 @@ parsearith: { } /* end of readtoken */ -void -resetparser(void) -{ - tokpushback = 0; - checkkwd = 0; -} - - /* * Returns true if the text contains nothing to expand (no dollar signs * or backquotes). Modified: head/bin/sh/parser.h ============================================================================== --- head/bin/sh/parser.h Fri Aug 16 20:22:57 2013 (r254425) +++ head/bin/sh/parser.h Fri Aug 16 20:24:41 2013 (r254426) @@ -79,7 +79,6 @@ extern const char *const parsekwd[]; union node *parsecmd(int); void fixredir(union node *, const char *, int); -void resetparser(void); int goodname(const char *); int isassignment(const char *); char *getprompt(void *); Modified: head/bin/sh/redir.c ============================================================================== --- head/bin/sh/redir.c Fri Aug 16 20:22:57 2013 (r254425) +++ head/bin/sh/redir.c Fri Aug 16 20:24:41 2013 (r254426) @@ -319,18 +319,6 @@ popredir(void) INTON; } -/* - * Undo all redirections. Called on error or interrupt. - */ - -void -resetredir(void) -{ - while (redirlist) - popredir(); -} - - /* Return true if fd 0 has already been redirected at least once. */ int fd0_redirected_p(void) Modified: head/bin/sh/redir.h ============================================================================== --- head/bin/sh/redir.h Fri Aug 16 20:22:57 2013 (r254425) +++ head/bin/sh/redir.h Fri Aug 16 20:24:41 2013 (r254426) @@ -40,7 +40,6 @@ union node; void redirect(union node *, int); void popredir(void); -void resetredir(void); int fd0_redirected_p(void); void clearredir(void); From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 20:32:57 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5F682DAE; Fri, 16 Aug 2013 20:32:57 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4D0C32FC5; Fri, 16 Aug 2013 20:32:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GKWvtE047306; Fri, 16 Aug 2013 20:32:57 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GKWvSU047304; Fri, 16 Aug 2013 20:32:57 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308162032.r7GKWvSU047304@svn.freebsd.org> From: Ian Lepore Date: Fri, 16 Aug 2013 20:32:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254427 - head/sys/dev/mmc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 20:32:57 -0000 Author: ian Date: Fri Aug 16 20:32:56 2013 New Revision: 254427 URL: http://svnweb.freebsd.org/changeset/base/254427 Log: During card identification, run the bus at 400KHz, not the minimum speed the bus claims to be capable of. The 400KHz speed is dictated by the SD and MMC standards. Modified: head/sys/dev/mmc/mmc.c Modified: head/sys/dev/mmc/mmc.c ============================================================================== --- head/sys/dev/mmc/mmc.c Fri Aug 16 20:24:41 2013 (r254426) +++ head/sys/dev/mmc/mmc.c Fri Aug 16 20:32:56 2013 (r254427) @@ -106,6 +106,8 @@ struct mmc_ivars { #define CMD_RETRIES 3 +#define CARD_ID_FREQUENCY 400000 /* Spec requires 400KHz max during ID phase. */ + static SYSCTL_NODE(_hw, OID_AUTO, mmc, CTLFLAG_RD, NULL, "mmc driver"); static int mmc_debug; @@ -579,7 +581,7 @@ mmc_power_up(struct mmc_softc *sc) mmcbr_update_ios(dev); mmc_ms_delay(1); - mmcbr_set_clock(dev, mmcbr_get_f_min(sc->dev)); + mmcbr_set_clock(dev, CARD_ID_FREQUENCY); mmcbr_set_timing(dev, bus_timing_normal); mmcbr_set_power_mode(dev, power_on); mmcbr_update_ios(dev); @@ -1534,7 +1536,7 @@ mmc_go_discovery(struct mmc_softc *sc) mmc_idle_cards(sc); } else { mmcbr_set_bus_mode(dev, opendrain); - mmcbr_set_clock(dev, mmcbr_get_f_min(dev)); + mmcbr_set_clock(dev, CARD_ID_FREQUENCY); mmcbr_update_ios(dev); /* XXX recompute vdd based on new cards? */ } @@ -1572,11 +1574,10 @@ static int mmc_calculate_clock(struct mmc_softc *sc) { int max_dtr, max_hs_dtr, max_timing; - int nkid, i, f_min, f_max; + int nkid, i, f_max; device_t *kids; struct mmc_ivars *ivar; - f_min = mmcbr_get_f_min(sc->dev); f_max = mmcbr_get_f_max(sc->dev); max_dtr = max_hs_dtr = f_max; if ((mmcbr_get_caps(sc->dev) & MMC_CAP_HSPEED)) From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 21:13:57 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 96D2D762; Fri, 16 Aug 2013 21:13:57 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 671D221B4; Fri, 16 Aug 2013 21:13:57 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GLDvCY062597; Fri, 16 Aug 2013 21:13:57 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GLDtYC062588; Fri, 16 Aug 2013 21:13:55 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201308162113.r7GLDtYC062588@svn.freebsd.org> From: John Baldwin Date: Fri, 16 Aug 2013 21:13:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254430 - in head: lib/libc/sys sys/sys sys/vm usr.bin/kdump usr.bin/truss X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 21:13:57 -0000 Author: jhb Date: Fri Aug 16 21:13:55 2013 New Revision: 254430 URL: http://svnweb.freebsd.org/changeset/base/254430 Log: Add new mmap(2) flags to permit applications to request specific virtual address alignment of mappings. - MAP_ALIGNED(n) requests a mapping aligned on a boundary of (1 << n). Requests for n >= number of bits in a pointer or less than the size of a page fail with EINVAL. This matches the API provided by NetBSD. - MAP_ALIGNED_SUPER is a special case of MAP_ALIGNED. It can be used to optimize the chances of using large pages. By default it will align the mapping on a large page boundary (the system is free to choose any large page size to align to that seems best for the mapping request). However, if the object being mapped is already using large pages, then it will align the virtual mapping to match the existing large pages in the object instead. - Internally, VMFS_ALIGNED_SPACE is now renamed to VMFS_SUPER_SPACE, and VMFS_ALIGNED_SPACE(n) is repurposed for specifying a specific alignment. MAP_ALIGNED(n) maps to using VMFS_ALIGNED_SPACE(n), while MAP_ALIGNED_SUPER maps to VMFS_SUPER_SPACE. - mmap() of a device object now uses VMFS_OPTIMAL_SPACE rather than explicitly using VMFS_SUPER_SPACE. All device objects are forced to use a specific color on creation, so VMFS_OPTIMAL_SPACE is effectively equivalent. Reviewed by: alc MFC after: 1 month Modified: head/lib/libc/sys/mmap.2 head/sys/sys/mman.h head/sys/vm/vm_init.c head/sys/vm/vm_kern.c head/sys/vm/vm_map.c head/sys/vm/vm_map.h head/sys/vm/vm_mmap.c head/usr.bin/kdump/mksubr head/usr.bin/truss/syscalls.c Modified: head/lib/libc/sys/mmap.2 ============================================================================== --- head/lib/libc/sys/mmap.2 Fri Aug 16 21:04:58 2013 (r254429) +++ head/lib/libc/sys/mmap.2 Fri Aug 16 21:13:55 2013 (r254430) @@ -28,7 +28,7 @@ .\" @(#)mmap.2 8.4 (Berkeley) 5/11/95 .\" $FreeBSD$ .\" -.Dd March 18, 2012 +.Dd August 16, 2013 .Dt MMAP 2 .Os .Sh NAME @@ -97,7 +97,30 @@ Sharing, mapping type and options are sp argument by .Em or Ns 'ing the following values: -.Bl -tag -width MAP_HASSEMAPHORE +.Bl -tag -width MAP_PREFAULT_READ +.It Dv MAP_ALIGNED Ns Pq Fa n +Align the region on a requested boundary. +If a suitable region cannot be found, +.Fn mmap +will fail. +The +.Fa n +argument specifies the binary logarithm of the desired alignment. +.It Dv MAP_ALIGNED_SUPER +Align the region to maximize the potential use of large +.Pq Dq super +pages. +If a suitable region cannot be found, +.Fn mmap +will fail. +The system will choose a suitable page size based on the size of +mapping. +The page size used as well as the alignment of the region may both be +affected by properties of the file being mapped. +In particular, +the physical address of existing pages of a file may require a specific +alignment. +The region is not guaranteed to be aligned on any specific boundary. .It Dv MAP_ANON Map anonymous memory not associated with any specific file. The file descriptor used for creating @@ -274,6 +297,25 @@ Although this implementation does not im the .Fa offset argument, a portable program must only use page-aligned values. +.Pp +Large page mappings require that the pages backing an object be +aligned in matching blocks in both the virtual address space and RAM. +The system will automatically attempt to use large page mappings when +mapping an object that is already backed by large pages in RAM by +aligning the mapping request in the virtual address space to match the +alignment of the large physical pages. +The system may also use large page mappings when mapping portions of an +object that are not yet backed by pages in RAM. +The +.Dv MAP_ALIGNED_SUPER +flag is an optimization that will align the mapping request to the +size of a large page similar to +.Dv MAP_ALIGNED , +except that the system will override this alignment if an object already +uses large pages so that the mapping will be consistent with the existing +large pages. +This flag is mostly useful for maximizing the use of large pages on the +first mapping of objects that do not yet have pages present in RAM. .Sh RETURN VALUES Upon successful completion, .Fn mmap @@ -325,6 +367,10 @@ The argument was equal to zero. .It Bq Er EINVAL +.Dv MAP_ALIGNED +was specified and the desired alignment was either larger than the +virtual address size of the machine or smaller than a page. +.It Bq Er EINVAL .Dv MAP_ANON was specified and the .Fa fd @@ -356,7 +402,8 @@ was specified and insufficient memory wa .Xr msync 2 , .Xr munlock 2 , .Xr munmap 2 , -.Xr getpagesize 3 +.Xr getpagesize 3 , +.Xr getpagesizes 3 .Sh BUGS The .Fa len Modified: head/sys/sys/mman.h ============================================================================== --- head/sys/sys/mman.h Fri Aug 16 21:04:58 2013 (r254429) +++ head/sys/sys/mman.h Fri Aug 16 21:13:55 2013 (r254430) @@ -91,6 +91,17 @@ */ #define MAP_NOCORE 0x00020000 /* dont include these pages in a coredump */ #define MAP_PREFAULT_READ 0x00040000 /* prefault mapping for reading */ + +/* + * Request specific alignment (n == log2 of the desired alignment). + * + * MAP_ALIGNED_SUPER requests optimal superpage alignment, but does + * not enforce a specific alignment. + */ +#define MAP_ALIGNED(n) ((n) << MAP_ALIGNMENT_SHIFT) +#define MAP_ALIGNMENT_SHIFT 24 +#define MAP_ALIGNMENT_MASK MAP_ALIGNED(0xff) +#define MAP_ALIGNED_SUPER MAP_ALIGNED(1) /* align on a superpage */ #endif /* __BSD_VISIBLE */ #if __POSIX_VISIBLE >= 199309 Modified: head/sys/vm/vm_init.c ============================================================================== --- head/sys/vm/vm_init.c Fri Aug 16 21:04:58 2013 (r254429) +++ head/sys/vm/vm_init.c Fri Aug 16 21:13:55 2013 (r254430) @@ -112,7 +112,7 @@ kva_import(void *unused, vmem_size_t siz addr = vm_map_min(kernel_map); result = vm_map_find(kernel_map, NULL, 0, &addr, size, - VMFS_ALIGNED_SPACE, VM_PROT_ALL, VM_PROT_ALL, MAP_NOFAULT); + VMFS_SUPER_SPACE, VM_PROT_ALL, VM_PROT_ALL, MAP_NOFAULT); if (result != KERN_SUCCESS) return (ENOMEM); Modified: head/sys/vm/vm_kern.c ============================================================================== --- head/sys/vm/vm_kern.c Fri Aug 16 21:04:58 2013 (r254429) +++ head/sys/vm/vm_kern.c Fri Aug 16 21:13:55 2013 (r254430) @@ -286,7 +286,7 @@ kmem_suballoc(vm_map_t parent, vm_offset *min = vm_map_min(parent); ret = vm_map_find(parent, NULL, 0, min, size, superpage_align ? - VMFS_ALIGNED_SPACE : VMFS_ANY_SPACE, VM_PROT_ALL, VM_PROT_ALL, + VMFS_SUPER_SPACE : VMFS_ANY_SPACE, VM_PROT_ALL, VM_PROT_ALL, MAP_ACC_NO_CHARGE); if (ret != KERN_SUCCESS) panic("kmem_suballoc: bad status return of %d", ret); Modified: head/sys/vm/vm_map.c ============================================================================== --- head/sys/vm/vm_map.c Fri Aug 16 21:04:58 2013 (r254429) +++ head/sys/vm/vm_map.c Fri Aug 16 21:13:55 2013 (r254430) @@ -1434,12 +1434,17 @@ vm_map_find(vm_map_t map, vm_object_t ob vm_size_t length, int find_space, vm_prot_t prot, vm_prot_t max, int cow) { - vm_offset_t start, initial_addr; + vm_offset_t alignment, initial_addr, start; int result; if (find_space == VMFS_OPTIMAL_SPACE && (object == NULL || (object->flags & OBJ_COLORED) == 0)) - find_space = VMFS_ANY_SPACE; + find_space = VMFS_ANY_SPACE; + if (find_space >> 8 != 0) { + KASSERT((find_space & 0xff) == 0, ("bad VMFS flags")); + alignment = (vm_offset_t)1 << (find_space >> 8); + } else + alignment = 0; initial_addr = *addr; again: start = initial_addr; @@ -1455,12 +1460,18 @@ again: return (KERN_NO_SPACE); } switch (find_space) { - case VMFS_ALIGNED_SPACE: + case VMFS_SUPER_SPACE: case VMFS_OPTIMAL_SPACE: pmap_align_superpage(object, offset, addr, length); break; + case VMFS_ANY_SPACE: + break; default: + if ((*addr & (alignment - 1)) != 0) { + *addr &= ~(alignment - 1); + *addr += alignment; + } break; } @@ -1468,8 +1479,8 @@ again: } result = vm_map_insert(map, object, offset, start, start + length, prot, max, cow); - } while (result == KERN_NO_SPACE && (find_space == VMFS_ALIGNED_SPACE || - find_space == VMFS_OPTIMAL_SPACE)); + } while (result == KERN_NO_SPACE && find_space != VMFS_NO_SPACE && + find_space != VMFS_ANY_SPACE); vm_map_unlock(map); return (result); } Modified: head/sys/vm/vm_map.h ============================================================================== --- head/sys/vm/vm_map.h Fri Aug 16 21:04:58 2013 (r254429) +++ head/sys/vm/vm_map.h Fri Aug 16 21:13:55 2013 (r254430) @@ -339,12 +339,16 @@ long vmspace_resident_count(struct vmspa #define VM_FAULT_READ_AHEAD_MAX min(atop(MAXPHYS) - 1, UINT8_MAX) /* - * The following "find_space" options are supported by vm_map_find() + * The following "find_space" options are supported by vm_map_find(). + * + * For VMFS_ALIGNED_SPACE, the desired alignment is specified to + * the macro argument as log base 2 of the desired alignment. */ #define VMFS_NO_SPACE 0 /* don't find; use the given range */ #define VMFS_ANY_SPACE 1 /* find a range with any alignment */ #define VMFS_OPTIMAL_SPACE 2 /* find a range with optimal alignment*/ -#define VMFS_ALIGNED_SPACE 3 /* find a superpage-aligned range */ +#define VMFS_SUPER_SPACE 3 /* find a superpage-aligned range */ +#define VMFS_ALIGNED_SPACE(x) ((x) << 8) /* find a range with fixed alignment */ /* * vm_map_wire and vm_map_unwire option flags Modified: head/sys/vm/vm_mmap.c ============================================================================== --- head/sys/vm/vm_mmap.c Fri Aug 16 21:04:58 2013 (r254429) +++ head/sys/vm/vm_mmap.c Fri Aug 16 21:13:55 2013 (r254430) @@ -201,7 +201,7 @@ sys_mmap(td, uap) vm_prot_t cap_maxprot, prot, maxprot; void *handle; objtype_t handle_type; - int flags, error; + int align, error, flags; off_t pos; struct vmspace *vms = td->td_proc->p_vmspace; cap_rights_t rights; @@ -251,6 +251,13 @@ sys_mmap(td, uap) size += pageoff; /* low end... */ size = (vm_size_t) round_page(size); /* hi end */ + /* Ensure alignment is at least a page and fits in a pointer. */ + align = flags & MAP_ALIGNMENT_MASK; + if (align != 0 && align != MAP_ALIGNED_SUPER && + (align >> MAP_ALIGNMENT_SHIFT >= sizeof(void *) * NBBY || + align >> MAP_ALIGNMENT_SHIFT < PAGE_SHIFT)) + return (EINVAL); + /* * Check for illegal addresses. Watch out for address wrap... Note * that VM_*_ADDRESS are not constants due to casts (argh). @@ -1490,7 +1497,7 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, boolean_t fitit; vm_object_t object = NULL; struct thread *td = curthread; - int docow, error, rv; + int docow, error, findspace, rv; boolean_t writecounted; if (size == 0) @@ -1605,12 +1612,17 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, if (flags & MAP_STACK) rv = vm_map_stack(map, *addr, size, prot, maxprot, docow | MAP_STACK_GROWS_DOWN); - else if (fitit) - rv = vm_map_find(map, object, foff, addr, size, - object != NULL && object->type == OBJT_DEVICE ? - VMFS_ALIGNED_SPACE : VMFS_OPTIMAL_SPACE, prot, maxprot, - docow); - else + else if (fitit) { + if ((flags & MAP_ALIGNMENT_MASK) == MAP_ALIGNED_SUPER) + findspace = VMFS_SUPER_SPACE; + else if ((flags & MAP_ALIGNMENT_MASK) != 0) + findspace = VMFS_ALIGNED_SPACE(flags >> + MAP_ALIGNMENT_SHIFT); + else + findspace = VMFS_OPTIMAL_SPACE; + rv = vm_map_find(map, object, foff, addr, size, findspace, + prot, maxprot, docow); + } else rv = vm_map_fixed(map, object, foff, *addr, size, prot, maxprot, docow); Modified: head/usr.bin/kdump/mksubr ============================================================================== --- head/usr.bin/kdump/mksubr Fri Aug 16 21:04:58 2013 (r254429) +++ head/usr.bin/kdump/mksubr Fri Aug 16 21:13:55 2013 (r254430) @@ -385,7 +385,6 @@ auto_switch_type "lio_listioname" " auto_switch_type "madvisebehavname" "_?MADV_[A-Z]+[[:space:]]+[0-9]+" "sys/mman.h" auto_switch_type "minheritname" "INHERIT_[A-Z]+[[:space:]]+[0-9]+" "sys/mman.h" auto_or_type "mlockallname" "MCL_[A-Z]+[[:space:]]+0x[0-9]+" "sys/mman.h" -auto_or_type "mmapflagsname" "MAP_[A-Z]+[[:space:]]+0x[0-9A-Fa-f]+" "sys/mman.h" auto_or_type "mmapprotname" "PROT_[A-Z]+[[:space:]]+0x[0-9A-Fa-f]+" "sys/mman.h" auto_or_type "modename" "S_[A-Z]+[[:space:]]+[0-6]{7}" "sys/stat.h" auto_or_type "mountflagsname" "MNT_[A-Z]+[[:space:]]+0x[0-9]+" "sys/mount.h" @@ -469,6 +468,40 @@ cat <<_EOF_ /* * AUTO - Special * + * The MAP_ALIGNED flag requires special handling. + */ +void +mmapflagsname(int flags) +{ + int align; + int or = 0; + printf("%#x<", flags); +_EOF_ +egrep "^#[[:space:]]*define[[:space:]]+MAP_[A-Z_]+[[:space:]]+0x[0-9A-Fa-f]+[[:space:]]*" \ + $include_dir/sys/mman.h | grep -v MAP_ALIGNED | \ + awk '{ for (i = 1; i <= NF; i++) \ + if ($i ~ /define/) \ + break; \ + ++i; \ + printf "\tif (!((flags > 0) ^ ((%s) > 0)))\n\t\tif_print_or(flags, %s, or);\n", $i, $i }' +cat <<_EOF_ + align = flags & MAP_ALIGNMENT_MASK; + if (align != 0) { + if (align == MAP_ALIGNED_SUPER) + print_or("MAP_ALIGNED_SUPER", or); + else { + print_or("MAP_ALIGNED", or); + printf("(%d)", align >> MAP_ALIGNMENT_SHIFT); + } + } + printf(">"); + if (or == 0) + printf("%d", flags); +} + +/* + * AUTO - Special + * * The only reason this is not fully automated is due to the * grep -v RTP_PRIO statement. A better egrep line should * make this capable of being a auto_switch_type() function. Modified: head/usr.bin/truss/syscalls.c ============================================================================== --- head/usr.bin/truss/syscalls.c Fri Aug 16 21:04:58 2013 (r254429) +++ head/usr.bin/truss/syscalls.c Fri Aug 16 21:13:55 2013 (r254430) @@ -296,7 +296,7 @@ static struct xlat mmap_flags[] = { X(MAP_SHARED) X(MAP_PRIVATE) X(MAP_FIXED) X(MAP_RENAME) X(MAP_NORESERVE) X(MAP_RESERVED0080) X(MAP_RESERVED0100) X(MAP_HASSEMAPHORE) X(MAP_STACK) X(MAP_NOSYNC) X(MAP_ANON) - X(MAP_NOCORE) XEND + X(MAP_NOCORE) X(MAP_PREFAULT_READ) XEND }; static struct xlat mprot_flags[] = { @@ -893,9 +893,41 @@ print_arg(struct syscall_args *sc, unsig case Mprot: tmp = strdup(xlookup_bits(mprot_flags, args[sc->offset])); break; - case Mmapflags: - tmp = strdup(xlookup_bits(mmap_flags, args[sc->offset])); + case Mmapflags: { + const char *base, *alignstr; + int align, flags; + + /* + * MAP_ALIGNED can't be handled by xlookup_bits(), so + * generate that string manually and prepend it to the + * string from xlookup_bits(). Have to be careful to + * avoid outputting MAP_ALIGNED|0 if MAP_ALIGNED is + * the only flag. + */ + flags = args[sc->offset] & ~MAP_ALIGNMENT_MASK; + align = args[sc->offset] & MAP_ALIGNMENT_MASK; + if (align != 0) { + if (align == MAP_ALIGNED_SUPER) + alignstr = strdup("MAP_ALIGNED_SUPER"); + else + asprintf(&alignstr, "MAP_ALIGNED(%d)", + align >> MAP_ALIGNMENT_SHIFT); + if (flags == 0) { + tmp = alignstr; + break; + } + } else + alignstr = NULL; + base = strdup(xlookup_bits(mmap_flags, flags)); + if (alignstr == NULL) { + tmp = base; + break; + } + asprintf(&tmp, "%s|%s", alignstr, base); + free(alignstr); + free(base); break; + } case Whence: tmp = strdup(xlookup(whence_arg, args[sc->offset])); break; From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 21:25:03 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 51755B0E; Fri, 16 Aug 2013 21:25:03 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [IPv6:2001:470:1f11:75::1]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 29288221F; Fri, 16 Aug 2013 21:25:03 +0000 (UTC) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 306AFB924; Fri, 16 Aug 2013 17:25:01 -0400 (EDT) From: John Baldwin To: src-committers@freebsd.org Subject: Re: svn commit: r254430 - in head: lib/libc/sys sys/sys sys/vm usr.bin/kdump usr.bin/truss Date: Fri, 16 Aug 2013 17:20:42 -0400 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p28; KDE/4.5.5; amd64; ; ) References: <201308162113.r7GLDtYC062588@svn.freebsd.org> In-Reply-To: <201308162113.r7GLDtYC062588@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201308161720.42632.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Fri, 16 Aug 2013 17:25:01 -0400 (EDT) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 21:25:03 -0000 On Friday, August 16, 2013 5:13:55 pm John Baldwin wrote: > Author: jhb > Date: Fri Aug 16 21:13:55 2013 > New Revision: 254430 > URL: http://svnweb.freebsd.org/changeset/base/254430 > > Log: > Add new mmap(2) flags to permit applications to request specific virtual > address alignment of mappings. > - MAP_ALIGNED(n) requests a mapping aligned on a boundary of (1 << n). > Requests for n >= number of bits in a pointer or less than the size of > a page fail with EINVAL. This matches the API provided by NetBSD. > - MAP_ALIGNED_SUPER is a special case of MAP_ALIGNED. It can be used > to optimize the chances of using large pages. By default it will align > the mapping on a large page boundary (the system is free to choose any > large page size to align to that seems best for the mapping request). > However, if the object being mapped is already using large pages, then > it will align the virtual mapping to match the existing large pages in > the object instead. > - Internally, VMFS_ALIGNED_SPACE is now renamed to VMFS_SUPER_SPACE, and > VMFS_ALIGNED_SPACE(n) is repurposed for specifying a specific alignment. > MAP_ALIGNED(n) maps to using VMFS_ALIGNED_SPACE(n), while > MAP_ALIGNED_SUPER maps to VMFS_SUPER_SPACE. > - mmap() of a device object now uses VMFS_OPTIMAL_SPACE rather than > explicitly using VMFS_SUPER_SPACE. All device objects are forced to > use a specific color on creation, so VMFS_OPTIMAL_SPACE is effectively > equivalent. Forgot to note: - Handle MAP_PREFAULT_READ in kdump and truss. Also, any awkwardness in the mmap(2) text is purely my fault and not Alan's. We might tweak it further, but the code is tested and fully reviewed. -- John Baldwin From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 21:29:49 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 75D94C77; Fri, 16 Aug 2013 21:29:49 +0000 (UTC) (envelope-from alc@rice.edu) Received: from pp2.rice.edu (proofpoint2.mail.rice.edu [128.42.201.101]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 409D0223C; Fri, 16 Aug 2013 21:29:48 +0000 (UTC) Received: from pps.filterd (pp2.rice.edu [127.0.0.1]) by pp2.rice.edu (8.14.5/8.14.5) with SMTP id r7GEs5AG021658; Fri, 16 Aug 2013 16:29:42 -0500 Received: from mh1.mail.rice.edu (mh1.mail.rice.edu [128.42.201.20]) by pp2.rice.edu with ESMTP id 1e96f912ux-1; Fri, 16 Aug 2013 16:29:42 -0500 X-Virus-Scanned: by amavis-2.7.0 at mh1.mail.rice.edu, auth channel Received: from [10.104.199.75] (unknown [131.107.165.208]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) (Authenticated sender: alc) by mh1.mail.rice.edu (Postfix) with ESMTPSA id 7BD4A47C391; Fri, 16 Aug 2013 16:29:41 -0500 (CDT) Subject: Re: svn commit: r254430 - in head: lib/libc/sys sys/sys sys/vm usr.bin/kdump usr.bin/truss Mime-Version: 1.0 (Apple Message framework v1085) Content-Type: text/plain; charset=us-ascii From: Alan Cox In-Reply-To: <201308161720.42632.jhb@freebsd.org> Date: Fri, 16 Aug 2013 14:29:42 -0700 Content-Transfer-Encoding: quoted-printable Message-Id: References: <201308162113.r7GLDtYC062588@svn.freebsd.org> <201308161720.42632.jhb@freebsd.org> To: John Baldwin X-Mailer: Apple Mail (2.1085) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 21:29:49 -0000 On Aug 16, 2013, at 2:20 PM, John Baldwin wrote: > On Friday, August 16, 2013 5:13:55 pm John Baldwin wrote: >> Author: jhb >> Date: Fri Aug 16 21:13:55 2013 >> New Revision: 254430 >> URL: http://svnweb.freebsd.org/changeset/base/254430 >>=20 >> Log: >> Add new mmap(2) flags to permit applications to request specific = virtual >> address alignment of mappings. >> - MAP_ALIGNED(n) requests a mapping aligned on a boundary of (1 << = n). >> Requests for n >=3D number of bits in a pointer or less than the = size of >> a page fail with EINVAL. This matches the API provided by NetBSD. >> - MAP_ALIGNED_SUPER is a special case of MAP_ALIGNED. It can be = used >> to optimize the chances of using large pages. By default it will = align >> the mapping on a large page boundary (the system is free to choose = any >> large page size to align to that seems best for the mapping = request). >> However, if the object being mapped is already using large pages, = then >> it will align the virtual mapping to match the existing large = pages in >> the object instead. >> - Internally, VMFS_ALIGNED_SPACE is now renamed to VMFS_SUPER_SPACE, = and >> VMFS_ALIGNED_SPACE(n) is repurposed for specifying a specific = alignment. >> MAP_ALIGNED(n) maps to using VMFS_ALIGNED_SPACE(n), while >> MAP_ALIGNED_SUPER maps to VMFS_SUPER_SPACE. >> - mmap() of a device object now uses VMFS_OPTIMAL_SPACE rather than >> explicitly using VMFS_SUPER_SPACE. All device objects are forced = to >> use a specific color on creation, so VMFS_OPTIMAL_SPACE is = effectively >> equivalent. >=20 > Forgot to note: >=20 > - Handle MAP_PREFAULT_READ in kdump and truss. >=20 > Also, any awkwardness in the mmap(2) text is purely my fault and not = Alan's. > We might tweak it further, but the code is tested and fully reviewed. >=20 Thank you for doing this! Alan From owner-svn-src-head@FreeBSD.ORG Fri Aug 16 23:05:35 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F18B3C7B; Fri, 16 Aug 2013 23:05:34 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D03C326A1; Fri, 16 Aug 2013 23:05:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7GN5YQo004530; Fri, 16 Aug 2013 23:05:34 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7GN5Y6R004529; Fri, 16 Aug 2013 23:05:34 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308162305.r7GN5Y6R004529@svn.freebsd.org> From: Ian Lepore Date: Fri, 16 Aug 2013 23:05:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254431 - head/sys/dev/mmc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 16 Aug 2013 23:05:35 -0000 Author: ian Date: Fri Aug 16 23:05:34 2013 New Revision: 254431 URL: http://svnweb.freebsd.org/changeset/base/254431 Log: Handle command retries for commands originating at the mmc layer, and ensure that all such commands have a non-zero retry count except for those that are expected to fail (for example, because they are used to probe for feature support). While it is possible to pass a retry count down to the hardware driver in the command request structure, no hardware driver currently implements any retry logic. The hardware doesn't know much about the context of a single request, so it makes more sense to handle retries at a layer that does. This adds retry loops to the mmc_wait_for_cmd() and mmc_wait_for_app_cmd() functions. These functions are the gateway from other code within mmc.c to the hardware. App commands are a sequence of two commands and a retry has to rerun both of them in order, so it needs its own retry loop. Retry looping is specifically NOT implemented in mmc_wait_for_request() because it is the gateway for children on the bus, and they have to implement their own retry logic depending on what makes sense for them. Modified: head/sys/dev/mmc/mmc.c Modified: head/sys/dev/mmc/mmc.c ============================================================================== --- head/sys/dev/mmc/mmc.c Fri Aug 16 21:13:55 2013 (r254430) +++ head/sys/dev/mmc/mmc.c Fri Aug 16 23:05:34 2013 (r254431) @@ -393,8 +393,9 @@ mmc_wait_for_req(struct mmc_softc *sc, s while ((req->flags & MMC_REQ_DONE) == 0) msleep(req, &sc->sc_mtx, 0, "mmcreq", 0); MMC_UNLOCK(sc); - if (mmc_debug > 2 || (mmc_debug > 1 && req->cmd->error)) - device_printf(sc->dev, "RESULT: %d\n", req->cmd->error); + if (mmc_debug > 2 || (mmc_debug > 0 && req->cmd->error != MMC_ERR_NONE)) + device_printf(sc->dev, "CMD%d RESULT: %d\n", + req->cmd->opcode, req->cmd->error); return (0); } @@ -410,14 +411,21 @@ static int mmc_wait_for_cmd(struct mmc_softc *sc, struct mmc_command *cmd, int retries) { struct mmc_request mreq; + int err; + + do { + memset(&mreq, 0, sizeof(mreq)); + memset(cmd->resp, 0, sizeof(cmd->resp)); + cmd->retries = 0; /* Retries done here, not in hardware. */ + cmd->mrq = &mreq; + mreq.cmd = cmd; + if (mmc_wait_for_req(sc, &mreq) != 0) + err = MMC_ERR_FAILED; + else + err = cmd->error; + } while (err != MMC_ERR_NONE && retries-- > 0); - memset(&mreq, 0, sizeof(mreq)); - memset(cmd->resp, 0, sizeof(cmd->resp)); - cmd->retries = retries; - cmd->mrq = &mreq; - mreq.cmd = cmd; - mmc_wait_for_req(sc, &mreq); - return (cmd->error); + return (err); } static int @@ -425,24 +433,27 @@ mmc_wait_for_app_cmd(struct mmc_softc *s struct mmc_command *cmd, int retries) { struct mmc_command appcmd; - int err = MMC_ERR_NONE, i; + int err; - for (i = 0; i <= retries; i++) { + do { appcmd.opcode = MMC_APP_CMD; appcmd.arg = rca << 16; appcmd.flags = MMC_RSP_R1 | MMC_CMD_AC; appcmd.data = NULL; - mmc_wait_for_cmd(sc, &appcmd, 0); - err = appcmd.error; - if (err != MMC_ERR_NONE) - continue; - if (!(appcmd.resp[0] & R1_APP_CMD)) - return MMC_ERR_FAILED; - mmc_wait_for_cmd(sc, cmd, 0); - err = cmd->error; - if (err == MMC_ERR_NONE) - break; - } + if (mmc_wait_for_cmd(sc, &appcmd, 0) != 0) + err = MMC_ERR_FAILED; + else + err = appcmd.error; + if (err == MMC_ERR_NONE) { + if (!(appcmd.resp[0] & R1_APP_CMD)) + return MMC_ERR_FAILED; /* Retries won't help. */ + if (mmc_wait_for_cmd(sc, cmd, 0) != 0) + err = MMC_ERR_FAILED; + else + err = cmd->error; + } + } while (err != MMC_ERR_NONE && retries-- > 0); + return (err); } @@ -461,8 +472,6 @@ mmc_wait_for_command(struct mmc_softc *s err = mmc_wait_for_cmd(sc, &cmd, retries); if (err) return (err); - if (cmd.error) - return (cmd.error); if (resp) { if (flags & MMC_RSP_136) memcpy(resp, cmd.resp, 4 * sizeof(uint32_t)); @@ -488,7 +497,7 @@ mmc_idle_cards(struct mmc_softc *sc) cmd.arg = 0; cmd.flags = MMC_RSP_NONE | MMC_CMD_BC; cmd.data = NULL; - mmc_wait_for_cmd(sc, &cmd, 0); + mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); mmc_ms_delay(1); mmcbr_set_chip_select(dev, cs_dontcare); @@ -625,7 +634,7 @@ mmc_switch(struct mmc_softc *sc, uint8_t set; cmd.flags = MMC_RSP_R1B | MMC_CMD_AC; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); return (err); } @@ -1054,7 +1063,7 @@ mmc_all_send_cid(struct mmc_softc *sc, u cmd.arg = 0; cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); memcpy(rawcid, cmd.resp, 4 * sizeof(uint32_t)); return (err); } @@ -1069,7 +1078,7 @@ mmc_send_csd(struct mmc_softc *sc, uint1 cmd.arg = rca << 16; cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); memcpy(rawcsd, cmd.resp, 4 * sizeof(uint32_t)); return (err); } @@ -1160,7 +1169,7 @@ mmc_set_relative_addr(struct mmc_softc * cmd.arg = resp << 16; cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); return (err); } @@ -1174,7 +1183,7 @@ mmc_send_relative_addr(struct mmc_softc cmd.arg = 0; cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); *resp = cmd.resp[0]; return (err); } @@ -1189,7 +1198,7 @@ mmc_send_status(struct mmc_softc *sc, ui cmd.arg = rca << 16; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); *status = cmd.resp[0]; return (err); } @@ -1204,7 +1213,7 @@ mmc_set_blocklen(struct mmc_softc *sc, u cmd.arg = len; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; cmd.data = NULL; - err = mmc_wait_for_cmd(sc, &cmd, 0); + err = mmc_wait_for_cmd(sc, &cmd, CMD_RETRIES); return (err); } From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 00:19:28 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 6D4F0940; Sat, 17 Aug 2013 00:19:28 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4B0922994; Sat, 17 Aug 2013 00:19:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H0JSBS032150; Sat, 17 Aug 2013 00:19:28 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H0JR2W032147; Sat, 17 Aug 2013 00:19:27 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308170019.r7H0JR2W032147@svn.freebsd.org> From: Ian Lepore Date: Sat, 17 Aug 2013 00:19:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254432 - head/sys/dev/mmc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 00:19:28 -0000 Author: ian Date: Sat Aug 17 00:19:27 2013 New Revision: 254432 URL: http://svnweb.freebsd.org/changeset/base/254432 Log: Consistently init all mmc request, command, and data structures to zero before using them. Modified: head/sys/dev/mmc/mmc.c head/sys/dev/mmc/mmcsd.c Modified: head/sys/dev/mmc/mmc.c ============================================================================== --- head/sys/dev/mmc/mmc.c Fri Aug 16 23:05:34 2013 (r254431) +++ head/sys/dev/mmc/mmc.c Sat Aug 17 00:19:27 2013 (r254432) @@ -436,6 +436,7 @@ mmc_wait_for_app_cmd(struct mmc_softc *s int err; do { + memset(&appcmd, 0, sizeof(appcmd)); appcmd.opcode = MMC_APP_CMD; appcmd.arg = rca << 16; appcmd.flags = MMC_RSP_R1 | MMC_CMD_AC; @@ -627,6 +628,7 @@ mmc_switch(struct mmc_softc *sc, uint8_t struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = MMC_SWITCH_FUNC; cmd.arg = (MMC_SWITCH_FUNC_WR << 24) | (index << 16) | @@ -646,8 +648,8 @@ mmc_sd_switch(struct mmc_softc *sc, uint struct mmc_command cmd; struct mmc_data data; - memset(&cmd, 0, sizeof(struct mmc_command)); - memset(&data, 0, sizeof(struct mmc_data)); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); memset(res, 0, 64); cmd.opcode = SD_SWITCH_FUNC; @@ -674,14 +676,14 @@ mmc_set_card_bus_width(struct mmc_softc uint8_t value; if (mmcbr_get_mode(sc->dev) == mode_sd) { - memset(&cmd, 0, sizeof(struct mmc_command)); + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = ACMD_SET_CLR_CARD_DETECT; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; cmd.arg = SD_CLR_CARD_DETECT; err = mmc_wait_for_app_cmd(sc, rca, &cmd, CMD_RETRIES); if (err != 0) return (err); - memset(&cmd, 0, sizeof(struct mmc_command)); + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = ACMD_SET_BUS_WIDTH; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; switch (width) { @@ -757,6 +759,8 @@ mmc_test_bus_width(struct mmc_softc *sc) mmcbr_set_bus_width(sc->dev, bus_width_8); mmcbr_update_ios(sc->dev); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); cmd.opcode = MMC_BUSTEST_W; cmd.arg = 0; cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; @@ -767,6 +771,8 @@ mmc_test_bus_width(struct mmc_softc *sc) data.flags = MMC_DATA_WRITE; mmc_wait_for_cmd(sc, &cmd, 0); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); cmd.opcode = MMC_BUSTEST_R; cmd.arg = 0; cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; @@ -788,6 +794,8 @@ mmc_test_bus_width(struct mmc_softc *sc) mmcbr_set_bus_width(sc->dev, bus_width_4); mmcbr_update_ios(sc->dev); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); cmd.opcode = MMC_BUSTEST_W; cmd.arg = 0; cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; @@ -798,6 +806,8 @@ mmc_test_bus_width(struct mmc_softc *sc) data.flags = MMC_DATA_WRITE; mmc_wait_for_cmd(sc, &cmd, 0); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); cmd.opcode = MMC_BUSTEST_R; cmd.arg = 0; cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; @@ -1059,6 +1069,7 @@ mmc_all_send_cid(struct mmc_softc *sc, u struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = MMC_ALL_SEND_CID; cmd.arg = 0; cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; @@ -1074,6 +1085,7 @@ mmc_send_csd(struct mmc_softc *sc, uint1 struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = MMC_SEND_CSD; cmd.arg = rca << 16; cmd.flags = MMC_RSP_R2 | MMC_CMD_BCR; @@ -1090,8 +1102,8 @@ mmc_app_send_scr(struct mmc_softc *sc, u struct mmc_command cmd; struct mmc_data data; - memset(&cmd, 0, sizeof(struct mmc_command)); - memset(&data, 0, sizeof(struct mmc_data)); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); memset(rawscr, 0, 8); cmd.opcode = ACMD_SEND_SCR; @@ -1116,8 +1128,8 @@ mmc_send_ext_csd(struct mmc_softc *sc, u struct mmc_command cmd; struct mmc_data data; - memset(&cmd, 0, sizeof(struct mmc_command)); - memset(&data, 0, sizeof(struct mmc_data)); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); memset(rawextcsd, 0, 512); cmd.opcode = MMC_SEND_EXT_CSD; @@ -1140,8 +1152,8 @@ mmc_app_sd_status(struct mmc_softc *sc, struct mmc_command cmd; struct mmc_data data; - memset(&cmd, 0, sizeof(struct mmc_command)); - memset(&data, 0, sizeof(struct mmc_data)); + memset(&cmd, 0, sizeof(cmd)); + memset(&data, 0, sizeof(data)); memset(rawsdstatus, 0, 64); cmd.opcode = ACMD_SD_STATUS; @@ -1165,6 +1177,7 @@ mmc_set_relative_addr(struct mmc_softc * struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = MMC_SET_RELATIVE_ADDR; cmd.arg = resp << 16; cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR; @@ -1179,6 +1192,7 @@ mmc_send_relative_addr(struct mmc_softc struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = SD_SEND_RELATIVE_ADDR; cmd.arg = 0; cmd.flags = MMC_RSP_R6 | MMC_CMD_BCR; @@ -1194,6 +1208,7 @@ mmc_send_status(struct mmc_softc *sc, ui struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = MMC_SEND_STATUS; cmd.arg = rca << 16; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; @@ -1209,6 +1224,7 @@ mmc_set_blocklen(struct mmc_softc *sc, u struct mmc_command cmd; int err; + memset(&cmd, 0, sizeof(cmd)); cmd.opcode = MMC_SET_BLOCKLEN; cmd.arg = len; cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; Modified: head/sys/dev/mmc/mmcsd.c ============================================================================== --- head/sys/dev/mmc/mmcsd.c Fri Aug 16 23:05:34 2013 (r254431) +++ head/sys/dev/mmc/mmcsd.c Sat Aug 17 00:19:27 2013 (r254432) @@ -328,6 +328,7 @@ mmcsd_rw(struct mmcsd_softc *sc, struct memset(&req, 0, sizeof(req)); memset(&cmd, 0, sizeof(cmd)); memset(&stop, 0, sizeof(stop)); + memset(&data, 0, sizeof(data)); cmd.mrq = &req; req.cmd = &cmd; cmd.data = &data; From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 00:25:11 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A219AADC; Sat, 17 Aug 2013 00:25:11 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8EF1D29E5; Sat, 17 Aug 2013 00:25:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H0PBbN035146; Sat, 17 Aug 2013 00:25:11 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H0PBYF035145; Sat, 17 Aug 2013 00:25:11 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201308170025.r7H0PBYF035145@svn.freebsd.org> From: Xin LI Date: Sat, 17 Aug 2013 00:25:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254433 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 00:25:11 -0000 Author: delphij Date: Sat Aug 17 00:25:11 2013 New Revision: 254433 URL: http://svnweb.freebsd.org/changeset/base/254433 Log: Fix build. Modified: head/sys/kern/uipc_syscalls.c Modified: head/sys/kern/uipc_syscalls.c ============================================================================== --- head/sys/kern/uipc_syscalls.c Sat Aug 17 00:19:27 2013 (r254432) +++ head/sys/kern/uipc_syscalls.c Sat Aug 17 00:25:11 2013 (r254433) @@ -158,8 +158,6 @@ sfstat_sysctl(SYSCTL_HANDLER_ARGS) SYSCTL_PROC(_kern_ipc, OID_AUTO, sfstat, CTLTYPE_OPAQUE | CTLFLAG_RW, NULL, 0, sfstat_sysctl, "I", "sendfile statistics"); -fo_sendfile_t vn_sendfile; - /* * Convert a user file descriptor to a kernel file entry and check if required * capability rights are present. From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 00:52:37 2013 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 93B82F56; Sat, 17 Aug 2013 00:52:37 +0000 (UTC) (envelope-from sjg@juniper.net) Received: from db9outboundpool.messaging.microsoft.com (mail-db9lp0252.outbound.messaging.microsoft.com [213.199.154.252]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 23BF92B07; Sat, 17 Aug 2013 00:52:36 +0000 (UTC) Received: from mail9-db9-R.bigfish.com (10.174.16.230) by DB9EHSOBE001.bigfish.com (10.174.14.64) with Microsoft SMTP Server id 14.1.225.22; Sat, 17 Aug 2013 00:37:20 +0000 Received: from mail9-db9 (localhost [127.0.0.1]) by mail9-db9-R.bigfish.com (Postfix) with ESMTP id BF767C8032A; Sat, 17 Aug 2013 00:37:19 +0000 (UTC) X-Forefront-Antispam-Report: CIP:66.129.224.51; KIP:(null); UIP:(null); IPV:NLI; H:P-EMF01-SAC.jnpr.net; RD:none; EFVD:NLI X-SpamScore: 2 X-BigFish: VPS2(zz1432Izz1f42h208ch1ee6h1de0h1fdah2073h1202h1e76h1d1ah1d2ah1fc6h1082kzzz2fh2a8h839hd25hf0ah1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h14ddh1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1ad9h1b0ah1b2fh1b88h1fb3h1d0ch1d2eh1d3fh1de2h1dfeh1dffh1e23h1fe8h1ff5h1155h) Received-SPF: pass (mail9-db9: domain of juniper.net designates 66.129.224.51 as permitted sender) client-ip=66.129.224.51; envelope-from=sjg@juniper.net; helo=P-EMF01-SAC.jnpr.net ; SAC.jnpr.net ; Received: from mail9-db9 (localhost.localdomain [127.0.0.1]) by mail9-db9 (MessageSwitch) id 1376699786109353_26872; Sat, 17 Aug 2013 00:36:26 +0000 (UTC) Received: from DB9EHSMHS029.bigfish.com (unknown [10.174.16.238]) by mail9-db9.bigfish.com (Postfix) with ESMTP id 1669D920049; Sat, 17 Aug 2013 00:36:26 +0000 (UTC) Received: from P-EMF01-SAC.jnpr.net (66.129.224.51) by DB9EHSMHS029.bigfish.com (10.174.14.39) with Microsoft SMTP Server (TLS) id 14.16.227.3; Sat, 17 Aug 2013 00:36:25 +0000 Received: from magenta.juniper.net (172.17.27.123) by P-EMF01-SAC.jnpr.net (172.24.192.21) with Microsoft SMTP Server (TLS) id 14.3.146.0; Fri, 16 Aug 2013 17:36:23 -0700 Received: from chaos.jnpr.net (chaos.jnpr.net [172.24.29.229]) by magenta.juniper.net (8.11.3/8.11.3) with ESMTP id r7H0aLL46914; Fri, 16 Aug 2013 17:36:22 -0700 (PDT) (envelope-from sjg@juniper.net) Received: from chaos.jnpr.net (localhost [127.0.0.1]) by chaos.jnpr.net (Postfix) with ESMTP id B7C0D58097; Fri, 16 Aug 2013 17:36:21 -0700 (PDT) To: Juli Mallett Subject: Re: svn commit: r254419 - head/contrib/bmake In-Reply-To: References: <201308161847.r7GIlIGW006139@svn.freebsd.org> Comments: In-reply-to: Juli Mallett message dated "Fri, 16 Aug 2013 11:56:24 -0700." From: "Simon J. Gerraty" X-Mailer: MH-E 7.82+cvs; nmh 1.3; GNU Emacs 22.3.1 Date: Fri, 16 Aug 2013 17:36:21 -0700 Message-ID: <20130817003621.B7C0D58097@chaos.jnpr.net> MIME-Version: 1.0 Content-Type: text/plain X-OriginatorOrg: juniper.net X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn% Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 00:52:37 -0000 On Fri, 16 Aug 2013 11:56:24 -0700, Juli Mallett writes: >> Log: >> Add .MAKE.ALWAYS_PASS_JOB_QUEUE knob (default yes) >> for backwards compatability. >> > >Thanks very much. Do you have some sense of when/if this might switch to a >default of "no"? If so, it seems like it might be good to note that >dependence on that behaviour is deprecated and will be removed in >11.0-RELEASE or whenever you think appropriate. Right now I don't see any compelling reason to change it to "no". So, no timeline. From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 01:02:04 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E375A174; Sat, 17 Aug 2013 01:02:04 +0000 (UTC) (envelope-from obrien@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CFD912B5F; Sat, 17 Aug 2013 01:02:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H124nX049362; Sat, 17 Aug 2013 01:02:04 GMT (envelope-from obrien@svn.freebsd.org) Received: (from obrien@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H124Gp049360; Sat, 17 Aug 2013 01:02:04 GMT (envelope-from obrien@svn.freebsd.org) Message-Id: <201308170102.r7H124Gp049360@svn.freebsd.org> From: "David E. O'Brien" Date: Sat, 17 Aug 2013 01:02:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254434 - head/share/man/man9 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 01:02:05 -0000 Author: obrien Date: Sat Aug 17 01:02:04 2013 New Revision: 254434 URL: http://svnweb.freebsd.org/changeset/base/254434 Log: Correct spelling. Modified: head/share/man/man9/sleep.9 Modified: head/share/man/man9/sleep.9 ============================================================================== --- head/share/man/man9/sleep.9 Sat Aug 17 00:25:11 2013 (r254433) +++ head/share/man/man9/sleep.9 Sat Aug 17 01:02:04 2013 (r254434) @@ -173,7 +173,7 @@ functions take .Fa sbt parameter instead of .Fa timo . -It allows to specify relative or absolite wakeup time with higher resolution +It allows to specify relative or absolute wakeup time with higher resolution in form of .Vt sbintime_t . The parameter From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 01:14:28 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E8F8748F; Sat, 17 Aug 2013 01:14:28 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BBDC82BE9; Sat, 17 Aug 2013 01:14:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H1ESf3053953; Sat, 17 Aug 2013 01:14:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H1ES1U053952; Sat, 17 Aug 2013 01:14:28 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201308170114.r7H1ES1U053952@svn.freebsd.org> From: Adrian Chadd Date: Sat, 17 Aug 2013 01:14:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254435 - head/sys/dev/ath X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 01:14:29 -0000 Author: adrian Date: Sat Aug 17 01:14:28 2013 New Revision: 254435 URL: http://svnweb.freebsd.org/changeset/base/254435 Log: Log the MAC address of the node in question rather than the pointer. Modified: head/sys/dev/ath/if_ath_tx.c Modified: head/sys/dev/ath/if_ath_tx.c ============================================================================== --- head/sys/dev/ath/if_ath_tx.c Sat Aug 17 01:02:04 2013 (r254434) +++ head/sys/dev/ath/if_ath_tx.c Sat Aug 17 01:14:28 2013 (r254435) @@ -3739,33 +3739,50 @@ ath_tx_tid_drain_print(struct ath_softc tap = ath_tx_get_tx_tid(an, tid->tid); device_printf(sc->sc_dev, - "%s: %s: node %p: bf=%p: addbaw=%d, dobaw=%d, " + "%s: %s: %6D: bf=%p: addbaw=%d, dobaw=%d, " "seqno=%d, retry=%d\n", - __func__, pfx, ni, bf, + __func__, + pfx, + ni->ni_macaddr, + ":", + bf, bf->bf_state.bfs_addedbaw, bf->bf_state.bfs_dobaw, SEQNO(bf->bf_state.bfs_seqno), bf->bf_state.bfs_retries); device_printf(sc->sc_dev, - "%s: node %p: bf=%p: txq[%d] axq_depth=%d, axq_aggr_depth=%d\n", - __func__, ni, bf, + "%s: %s: %6D: bf=%p: txq[%d] axq_depth=%d, axq_aggr_depth=%d\n", + __func__, + pfx, + ni->ni_macaddr, + ":", + bf, txq->axq_qnum, txq->axq_depth, txq->axq_aggr_depth); device_printf(sc->sc_dev, - "%s: node %p: bf=%p: tid txq_depth=%d hwq_depth=%d, bar_wait=%d, isfiltered=%d\n", - __func__, ni, bf, + "%s: %s: %6D: bf=%p: tid txq_depth=%d hwq_depth=%d, bar_wait=%d, " + "isfiltered=%d\n", + __func__, + pfx, + ni->ni_macaddr, + ":", + bf, tid->axq_depth, tid->hwq_depth, tid->bar_wait, tid->isfiltered); device_printf(sc->sc_dev, - "%s: node %p: tid %d: " + "%s: %s: %6D: tid %d: " "sched=%d, paused=%d, " "incomp=%d, baw_head=%d, " "baw_tail=%d txa_start=%d, ni_txseqs=%d\n", - __func__, ni, tid->tid, + __func__, + pfx, + ni->ni_macaddr, + ":", + tid->tid, tid->sched, tid->paused, tid->incomp, tid->baw_head, tid->baw_tail, tap == NULL ? -1 : tap->txa_start, From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 01:17:51 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9D1606F7; Sat, 17 Aug 2013 01:17:51 +0000 (UTC) (envelope-from mjacob@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 89E632C07; Sat, 17 Aug 2013 01:17:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H1HpBW054612; Sat, 17 Aug 2013 01:17:51 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H1HpdP054611; Sat, 17 Aug 2013 01:17:51 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201308170117.r7H1HpdP054611@svn.freebsd.org> From: Matt Jacob Date: Sat, 17 Aug 2013 01:17:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254436 - head/share/man/man9 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 01:17:51 -0000 Author: mjacob Date: Sat Aug 17 01:17:51 2013 New Revision: 254436 URL: http://svnweb.freebsd.org/changeset/base/254436 Log: Correct sentence syntax too. Modified: head/share/man/man9/sleep.9 Modified: head/share/man/man9/sleep.9 ============================================================================== --- head/share/man/man9/sleep.9 Sat Aug 17 01:14:28 2013 (r254435) +++ head/share/man/man9/sleep.9 Sat Aug 17 01:17:51 2013 (r254436) @@ -173,15 +173,15 @@ functions take .Fa sbt parameter instead of .Fa timo . -It allows to specify relative or absolute wakeup time with higher resolution +It allows the caller to specify relative or absolute wakeup time with higher resolution in form of .Vt sbintime_t . The parameter .Fa pr -allows to specify wanted absolute event precision. +allows the caller to specify wanted absolute event precision. The parameter .Fa flags -allows to pass additional +allows the caller to pass additional .Fn callout_reset_sbt flags. .Pp From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 04:41:35 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C05B5EEF; Sat, 17 Aug 2013 04:41:35 +0000 (UTC) (envelope-from sjg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AEF2623EE; Sat, 17 Aug 2013 04:41:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H4fZQj033470; Sat, 17 Aug 2013 04:41:35 GMT (envelope-from sjg@svn.freebsd.org) Received: (from sjg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H4fZ9v033469; Sat, 17 Aug 2013 04:41:35 GMT (envelope-from sjg@svn.freebsd.org) Message-Id: <201308170441.r7H4fZ9v033469@svn.freebsd.org> From: "Simon J. Gerraty" Date: Sat, 17 Aug 2013 04:41:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254437 - head X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 04:41:35 -0000 Author: sjg Date: Sat Aug 17 04:41:35 2013 New Revision: 254437 URL: http://svnweb.freebsd.org/changeset/base/254437 Log: Don't let user specified DESTDIR, break building our chosen make. Modified: head/Makefile Modified: head/Makefile ============================================================================== --- head/Makefile Sat Aug 17 01:17:51 2013 (r254436) +++ head/Makefile Sat Aug 17 04:41:35 2013 (r254437) @@ -349,9 +349,9 @@ make bmake: .PHONY @echo ">>> Building an up-to-date make(1)" @echo "--------------------------------------------------------------" ${_+_}@cd ${.CURDIR}/usr.bin/${.TARGET}; \ - ${MMAKE} obj && \ - ${MMAKE} depend && \ - ${MMAKE} all && \ + ${MMAKE} obj DESTDIR= && \ + ${MMAKE} depend DESTDIR= && \ + ${MMAKE} all DESTDIR= && \ ${MMAKE} install DESTDIR=${MYMAKE:H} BINDIR= PROGNAME=${MYMAKE:T} tinderbox toolchains kernel-toolchains: upgrade_checks From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 06:29:46 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 4DC48F55; Sat, 17 Aug 2013 06:29:46 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3B66F27A0; Sat, 17 Aug 2013 06:29:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H6TkBu072083; Sat, 17 Aug 2013 06:29:46 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H6TjOn072081; Sat, 17 Aug 2013 06:29:45 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201308170629.r7H6TjOn072081@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 17 Aug 2013 06:29:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254438 - head/sys/dev/usb/controller X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 06:29:46 -0000 Author: hselasky Date: Sat Aug 17 06:29:45 2013 New Revision: 254438 URL: http://svnweb.freebsd.org/changeset/base/254438 Log: Fix some USB controller names according to pciconf output. MFC after: 1 week Submitted by: Dmitry Luhtionov Modified: head/sys/dev/usb/controller/ehci_pci.c head/sys/dev/usb/controller/ohci_pci.c Modified: head/sys/dev/usb/controller/ehci_pci.c ============================================================================== --- head/sys/dev/usb/controller/ehci_pci.c Sat Aug 17 04:41:35 2013 (r254437) +++ head/sys/dev/usb/controller/ehci_pci.c Sat Aug 17 06:29:45 2013 (r254438) @@ -165,7 +165,7 @@ ehci_pci_match(device_t self) case 0x00e810de: return "NVIDIA nForce3 250 USB 2.0 controller"; case 0x005b10de: - return "NVIDIA nForce4 USB 2.0 controller"; + return "NVIDIA nForce CK804 USB 2.0 controller"; case 0x036d10de: return "NVIDIA nForce MCP55 USB 2.0 controller"; case 0x03f210de: Modified: head/sys/dev/usb/controller/ohci_pci.c ============================================================================== --- head/sys/dev/usb/controller/ohci_pci.c Sat Aug 17 04:41:35 2013 (r254437) +++ head/sys/dev/usb/controller/ohci_pci.c Sat Aug 17 06:29:45 2013 (r254438) @@ -154,6 +154,8 @@ ohci_pci_match(device_t self) case 0x00d710de: return ("nVidia nForce3 USB Controller"); + case 0x005a10de: + return ("nVidia nForce CK804 USB Controller"); case 0x036c10de: return ("nVidia nForce MCP55 USB Controller"); case 0x03f110de: From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 07:10:02 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 086254C9; Sat, 17 Aug 2013 07:10:02 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EA8592919; Sat, 17 Aug 2013 07:10:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H7A10D087175; Sat, 17 Aug 2013 07:10:01 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H7A1Ox087174; Sat, 17 Aug 2013 07:10:01 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201308170710.r7H7A1Ox087174@svn.freebsd.org> From: Konstantin Belousov Date: Sat, 17 Aug 2013 07:10:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254439 - head/sys/vm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 07:10:02 -0000 Author: kib Date: Sat Aug 17 07:10:01 2013 New Revision: 254439 URL: http://svnweb.freebsd.org/changeset/base/254439 Log: Remove the arbitrary binding of the pagedaemon threads to the domains, update the comment accordingly and make it more precise. Requested and reviewed by: jeff (previous version) Modified: head/sys/vm/vm_pageout.c Modified: head/sys/vm/vm_pageout.c ============================================================================== --- head/sys/vm/vm_pageout.c Sat Aug 17 06:29:45 2013 (r254438) +++ head/sys/vm/vm_pageout.c Sat Aug 17 07:10:01 2013 (r254439) @@ -1575,35 +1575,16 @@ static void vm_pageout_worker(void *arg) { struct vm_domain *domain; - struct pcpu *pc; - int cpu, domidx; + int domidx; domidx = (uintptr_t)arg; domain = &vm_dom[domidx]; /* - * XXXKIB The bind is rather arbitrary. With some minor - * complications, we could assign the cpuset consisting of all - * CPUs in the same domain. In fact, it even does not matter - * if the CPU we bind to is in the affinity domain of this - * page queue, we only need to establish the fair distribution - * of pagedaemon threads among CPUs. - * - * XXXKIB It would be useful to allocate vm_pages for the - * domain from the domain, and put pcpu area into the page - * owned by the domain. + * XXXKIB It could be useful to bind pageout daemon threads to + * the cores belonging to the domain, from which vm_page_array + * is allocated. */ - if (mem_affinity != NULL) { - CPU_FOREACH(cpu) { - pc = pcpu_find(cpu); - if (pc->pc_domain == domidx) { - thread_lock(curthread); - sched_bind(curthread, cpu); - thread_unlock(curthread); - break; - } - } - } KASSERT(domain->vmd_segs != 0, ("domain without segments")); vm_pageout_init_marker(&domain->vmd_marker, PQ_INACTIVE); From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 07:12:53 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5D665616; Sat, 17 Aug 2013 07:12:53 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4ADD9294C; Sat, 17 Aug 2013 07:12:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H7CrvR089637; Sat, 17 Aug 2013 07:12:53 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H7CrYi089636; Sat, 17 Aug 2013 07:12:53 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201308170712.r7H7CrYi089636@svn.freebsd.org> From: Hiroki Sato Date: Sat, 17 Aug 2013 07:12:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254440 - head/usr.sbin/rwhod X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 07:12:53 -0000 Author: hrs Date: Sat Aug 17 07:12:52 2013 New Revision: 254440 URL: http://svnweb.freebsd.org/changeset/base/254440 Log: Unbreak rwhod(8): - It did not work with GENERIC kernel after r250603 because options PROCDESC was required for pdfork(2). It now just uses fork(2) instead when this syscall is not available. - Fix verify(). This function was broken in r250602 because the outermost "()" was removed from the condition !(isalnum() || ispunct()). It prevented hostnames including "-", for example. Modified: head/usr.sbin/rwhod/rwhod.c Modified: head/usr.sbin/rwhod/rwhod.c ============================================================================== --- head/usr.sbin/rwhod/rwhod.c Sat Aug 17 07:10:01 2013 (r254439) +++ head/usr.sbin/rwhod/rwhod.c Sat Aug 17 07:12:52 2013 (r254440) @@ -274,6 +274,15 @@ main(int argc, char *argv[]) exit(1); if (!quiet_mode) { pid_child_receiver = pdfork(&fdp, 0); + if (pid_child_receiver == -1) { + if (errno != ENOSYS) { + syslog(LOG_ERR, "pdfork: %m"); + exit(1); + } else { + pid_child_receiver = fork(); + fdp = -1; + } + } if (pid_child_receiver == 0) { receiver_process(); } else if (pid_child_receiver > 0) { @@ -328,7 +337,7 @@ verify(char *name, int maxlen) size = 0; while (*name != '\0' && size < maxlen - 1) { - if (!isascii(*name) || !isalnum(*name) || ispunct(*name)) + if (!isascii(*name) || !(isalnum(*name) || ispunct(*name))) return (0); name++; size++; From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 07:14:46 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3A96F762; Sat, 17 Aug 2013 07:14:46 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 281022958; Sat, 17 Aug 2013 07:14:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7H7EkOU089971; Sat, 17 Aug 2013 07:14:46 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7H7Ekim089970; Sat, 17 Aug 2013 07:14:46 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201308170714.r7H7Ekim089970@svn.freebsd.org> From: Hiroki Sato Date: Sat, 17 Aug 2013 07:14:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254441 - head/sys/netinet6 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 07:14:46 -0000 Author: hrs Date: Sat Aug 17 07:14:45 2013 New Revision: 254441 URL: http://svnweb.freebsd.org/changeset/base/254441 Log: Return 0 in nbi->expire when la_expire == 0. Conversion from time_uptime to time_second should not be performed in this case. Modified: head/sys/netinet6/nd6.c Modified: head/sys/netinet6/nd6.c ============================================================================== --- head/sys/netinet6/nd6.c Sat Aug 17 07:12:52 2013 (r254440) +++ head/sys/netinet6/nd6.c Sat Aug 17 07:14:45 2013 (r254441) @@ -1508,7 +1508,11 @@ nd6_ioctl(u_long cmd, caddr_t data, stru nbi->state = ln->ln_state; nbi->asked = ln->la_asked; nbi->isrouter = ln->ln_router; - nbi->expire = ln->la_expire + (time_second - time_uptime); + if (ln->la_expire == 0) + nbi->expire = 0; + else + nbi->expire = ln->la_expire + + (time_second - time_uptime); LLE_RUNLOCK(ln); break; } From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:09:46 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E1DB6976; Sat, 17 Aug 2013 14:09:46 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CF81B29AF; Sat, 17 Aug 2013 14:09:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HE9kbR056518; Sat, 17 Aug 2013 14:09:46 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HE9kkF056517; Sat, 17 Aug 2013 14:09:46 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201308171409.r7HE9kkF056517@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sat, 17 Aug 2013 14:09:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254445 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:09:47 -0000 Author: pjd Date: Sat Aug 17 14:09:46 2013 New Revision: 254445 URL: http://svnweb.freebsd.org/changeset/base/254445 Log: Remove redundant variable. Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Sat Aug 17 08:31:34 2013 (r254444) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Sat Aug 17 14:09:46 2013 (r254445) @@ -1799,12 +1799,10 @@ zfs_statfs(vfs_t *vfsp, struct statfs *s int zfs_vnode_lock(vnode_t *vp, int flags) { - int error; ASSERT(vp != NULL); - error = vn_lock(vp, flags); - return (error); + return (vn_lock(vp, flags)); } static int From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:13:46 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1C497AD9; Sat, 17 Aug 2013 14:13:46 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 09F3629F0; Sat, 17 Aug 2013 14:13:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEDjQZ059360; Sat, 17 Aug 2013 14:13:45 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEDjfU059359; Sat, 17 Aug 2013 14:13:45 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201308171413.r7HEDjfU059359@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sat, 17 Aug 2013 14:13:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254446 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:13:46 -0000 Author: pjd Date: Sat Aug 17 14:13:45 2013 New Revision: 254446 URL: http://svnweb.freebsd.org/changeset/base/254446 Log: In r114945 the line 'nmp = TAILQ_NEXT(mp, mnt_list);' was duplicated. Instead of just removing the duplicate, convert the loop to TAILQ_FOREACH(). Modified: head/sys/kern/vfs_subr.c Modified: head/sys/kern/vfs_subr.c ============================================================================== --- head/sys/kern/vfs_subr.c Sat Aug 17 14:09:46 2013 (r254445) +++ head/sys/kern/vfs_subr.c Sat Aug 17 14:13:45 2013 (r254446) @@ -2906,7 +2906,7 @@ vn_printf(struct vnode *vp, const char * */ DB_SHOW_COMMAND(lockedvnods, lockedvnodes) { - struct mount *mp, *nmp; + struct mount *mp; struct vnode *vp; /* @@ -2916,14 +2916,11 @@ DB_SHOW_COMMAND(lockedvnods, lockedvnode * about that. */ db_printf("Locked vnodes\n"); - for (mp = TAILQ_FIRST(&mountlist); mp != NULL; mp = nmp) { - nmp = TAILQ_NEXT(mp, mnt_list); + TAILQ_FOREACH(mp, &mountlist, mnt_list) { TAILQ_FOREACH(vp, &mp->mnt_nvnodelist, v_nmntvnodes) { - if (vp->v_type != VMARKER && - VOP_ISLOCKED(vp)) + if (vp->v_type != VMARKER && VOP_ISLOCKED(vp)) vprint("", vp); } - nmp = TAILQ_NEXT(mp, mnt_list); } } From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:17:14 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 085A2D02; Sat, 17 Aug 2013 14:17:14 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id EA14C2A01; Sat, 17 Aug 2013 14:17:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEHDO3060134; Sat, 17 Aug 2013 14:17:13 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEHDOK060133; Sat, 17 Aug 2013 14:17:13 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201308171417.r7HEHDOK060133@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sat, 17 Aug 2013 14:17:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254447 - head/sys/compat/freebsd32 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:17:14 -0000 Author: pjd Date: Sat Aug 17 14:17:13 2013 New Revision: 254447 URL: http://svnweb.freebsd.org/changeset/base/254447 Log: Make pdfork(2), pdkill(2) and pdgetpid(2) syscalls available for 32bit binaries running under 64bit kernel. Sponsored by: The FreeBSD Foundation Modified: head/sys/compat/freebsd32/syscalls.master Modified: head/sys/compat/freebsd32/syscalls.master ============================================================================== --- head/sys/compat/freebsd32/syscalls.master Sat Aug 17 14:13:45 2013 (r254446) +++ head/sys/compat/freebsd32/syscalls.master Sat Aug 17 14:17:13 2013 (r254447) @@ -975,10 +975,10 @@ uint64_t *rightsp); } 516 AUE_CAP_ENTER NOPROTO { int cap_enter(void); } 517 AUE_CAP_GETMODE NOPROTO { int cap_getmode(u_int *modep); } -518 AUE_PDFORK UNIMPL pdfork -519 AUE_PDKILL UNIMPL pdkill -520 AUE_PDGETPID UNIMPL pdgetpid -521 AUE_PDWAIT UNIMPL pdwait +518 AUE_PDFORK NOPROTO { int pdfork(int *fdp, int flags); } +519 AUE_PDKILL NOPROTO { int pdkill(int fd, int signum); } +520 AUE_PDGETPID NOPROTO { int pdgetpid(int fd, pid_t *pidp); } +521 AUE_PDWAIT UNIMPL pdwait4 522 AUE_SELECT STD { int freebsd32_pselect(int nd, fd_set *in, \ fd_set *ou, fd_set *ex, \ const struct timespec32 *ts, \ From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:18:42 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 88926E46; Sat, 17 Aug 2013 14:18:42 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 669B12A0E; Sat, 17 Aug 2013 14:18:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEIgcn060391; Sat, 17 Aug 2013 14:18:42 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEIfep060386; Sat, 17 Aug 2013 14:18:41 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201308171418.r7HEIfep060386@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sat, 17 Aug 2013 14:18:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254448 - head/sys/compat/freebsd32 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:18:42 -0000 Author: pjd Date: Sat Aug 17 14:18:41 2013 New Revision: 254448 URL: http://svnweb.freebsd.org/changeset/base/254448 Log: Regenerate after r254447. Sponsored by: The FreeBSD Foundation Modified: head/sys/compat/freebsd32/freebsd32_proto.h head/sys/compat/freebsd32/freebsd32_syscall.h head/sys/compat/freebsd32/freebsd32_syscalls.c head/sys/compat/freebsd32/freebsd32_sysent.c head/sys/compat/freebsd32/freebsd32_systrace_args.c Modified: head/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32_proto.h Sat Aug 17 14:17:13 2013 (r254447) +++ head/sys/compat/freebsd32/freebsd32_proto.h Sat Aug 17 14:18:41 2013 (r254448) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 253530 2013-07-21 19:43:52Z kib + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 254447 2013-08-17 14:17:13Z pjd */ #ifndef _FREEBSD32_SYSPROTO_H_ Modified: head/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32_syscall.h Sat Aug 17 14:17:13 2013 (r254447) +++ head/sys/compat/freebsd32/freebsd32_syscall.h Sat Aug 17 14:18:41 2013 (r254448) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 253530 2013-07-21 19:43:52Z kib + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 254447 2013-08-17 14:17:13Z pjd */ #define FREEBSD32_SYS_syscall 0 @@ -424,6 +424,9 @@ #define FREEBSD32_SYS_cap_rights_get 515 #define FREEBSD32_SYS_cap_enter 516 #define FREEBSD32_SYS_cap_getmode 517 +#define FREEBSD32_SYS_pdfork 518 +#define FREEBSD32_SYS_pdkill 519 +#define FREEBSD32_SYS_pdgetpid 520 #define FREEBSD32_SYS_freebsd32_pselect 522 #define FREEBSD32_SYS_getloginclass 523 #define FREEBSD32_SYS_setloginclass 524 Modified: head/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_syscalls.c Sat Aug 17 14:17:13 2013 (r254447) +++ head/sys/compat/freebsd32/freebsd32_syscalls.c Sat Aug 17 14:18:41 2013 (r254448) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 253530 2013-07-21 19:43:52Z kib + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 254447 2013-08-17 14:17:13Z pjd */ const char *freebsd32_syscallnames[] = { @@ -541,10 +541,10 @@ const char *freebsd32_syscallnames[] = { "cap_rights_get", /* 515 = cap_rights_get */ "cap_enter", /* 516 = cap_enter */ "cap_getmode", /* 517 = cap_getmode */ - "#518", /* 518 = pdfork */ - "#519", /* 519 = pdkill */ - "#520", /* 520 = pdgetpid */ - "#521", /* 521 = pdwait */ + "pdfork", /* 518 = pdfork */ + "pdkill", /* 519 = pdkill */ + "pdgetpid", /* 520 = pdgetpid */ + "#521", /* 521 = pdwait4 */ "freebsd32_pselect", /* 522 = freebsd32_pselect */ "getloginclass", /* 523 = getloginclass */ "setloginclass", /* 524 = setloginclass */ Modified: head/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_sysent.c Sat Aug 17 14:17:13 2013 (r254447) +++ head/sys/compat/freebsd32/freebsd32_sysent.c Sat Aug 17 14:18:41 2013 (r254448) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 253530 2013-07-21 19:43:52Z kib + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 254447 2013-08-17 14:17:13Z pjd */ #include "opt_compat.h" @@ -578,10 +578,10 @@ struct sysent freebsd32_sysent[] = { { AS(cap_rights_get_args), (sy_call_t *)sys_cap_rights_get, AUE_CAP_RIGHTS_GET, NULL, 0, 0, 0, SY_THR_STATIC }, /* 515 = cap_rights_get */ { 0, (sy_call_t *)sys_cap_enter, AUE_CAP_ENTER, NULL, 0, 0, 0, SY_THR_STATIC }, /* 516 = cap_enter */ { AS(cap_getmode_args), (sy_call_t *)sys_cap_getmode, AUE_CAP_GETMODE, NULL, 0, 0, 0, SY_THR_STATIC }, /* 517 = cap_getmode */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 518 = pdfork */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 519 = pdkill */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 520 = pdgetpid */ - { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 521 = pdwait */ + { AS(pdfork_args), (sy_call_t *)sys_pdfork, AUE_PDFORK, NULL, 0, 0, 0, SY_THR_STATIC }, /* 518 = pdfork */ + { AS(pdkill_args), (sy_call_t *)sys_pdkill, AUE_PDKILL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 519 = pdkill */ + { AS(pdgetpid_args), (sy_call_t *)sys_pdgetpid, AUE_PDGETPID, NULL, 0, 0, 0, SY_THR_STATIC }, /* 520 = pdgetpid */ + { 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT }, /* 521 = pdwait4 */ { AS(freebsd32_pselect_args), (sy_call_t *)freebsd32_pselect, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 522 = freebsd32_pselect */ { AS(getloginclass_args), (sy_call_t *)sys_getloginclass, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 523 = getloginclass */ { AS(setloginclass_args), (sy_call_t *)sys_setloginclass, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 524 = setloginclass */ Modified: head/sys/compat/freebsd32/freebsd32_systrace_args.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_systrace_args.c Sat Aug 17 14:17:13 2013 (r254447) +++ head/sys/compat/freebsd32/freebsd32_systrace_args.c Sat Aug 17 14:18:41 2013 (r254448) @@ -3018,6 +3018,30 @@ systrace_args(int sysnum, void *params, *n_args = 1; break; } + /* pdfork */ + case 518: { + struct pdfork_args *p = params; + uarg[0] = (intptr_t) p->fdp; /* int * */ + iarg[1] = p->flags; /* int */ + *n_args = 2; + break; + } + /* pdkill */ + case 519: { + struct pdkill_args *p = params; + iarg[0] = p->fd; /* int */ + iarg[1] = p->signum; /* int */ + *n_args = 2; + break; + } + /* pdgetpid */ + case 520: { + struct pdgetpid_args *p = params; + iarg[0] = p->fd; /* int */ + uarg[1] = (intptr_t) p->pidp; /* pid_t * */ + *n_args = 2; + break; + } /* freebsd32_pselect */ case 522: { struct freebsd32_pselect_args *p = params; @@ -8281,6 +8305,45 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; + /* pdfork */ + case 518: + switch(ndx) { + case 0: + p = "int *"; + break; + case 1: + p = "int"; + break; + default: + break; + }; + break; + /* pdkill */ + case 519: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "int"; + break; + default: + break; + }; + break; + /* pdgetpid */ + case 520: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "pid_t *"; + break; + default: + break; + }; + break; /* freebsd32_pselect */ case 522: switch(ndx) { @@ -10488,6 +10551,21 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; + /* pdfork */ + case 518: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* pdkill */ + case 519: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* pdgetpid */ + case 520: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* freebsd32_pselect */ case 522: if (ndx == 0 || ndx == 1) From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:36:32 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B5754174; Sat, 17 Aug 2013 14:36:32 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A12E22AA8; Sat, 17 Aug 2013 14:36:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEaWiA067360; Sat, 17 Aug 2013 14:36:32 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEaWVx067359; Sat, 17 Aug 2013 14:36:32 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171436.r7HEaWVx067359@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 14:36:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254449 - head/contrib/binutils/gas/config X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:36:32 -0000 Author: andrew Date: Sat Aug 17 14:36:32 2013 New Revision: 254449 URL: http://svnweb.freebsd.org/changeset/base/254449 Log: Silence a warning that is incorrect on ARMv6 and later. In the smull, umull, smlal, and umlal the output registers are allowed to be the same as either input registers, where in ARMv4 and ARMv5 they could only be the same as the last input register. Modified: head/contrib/binutils/gas/config/tc-arm.c Modified: head/contrib/binutils/gas/config/tc-arm.c ============================================================================== --- head/contrib/binutils/gas/config/tc-arm.c Sat Aug 17 14:18:41 2013 (r254448) +++ head/contrib/binutils/gas/config/tc-arm.c Sat Aug 17 14:36:32 2013 (r254449) @@ -7218,10 +7218,11 @@ do_mull (void) inst.instruction |= inst.operands[2].reg; inst.instruction |= inst.operands[3].reg << 8; - /* rdhi, rdlo and rm must all be different. */ + /* rdhi, rdlo and rm must all be different prior to ARMv6. */ if (inst.operands[0].reg == inst.operands[1].reg - || inst.operands[0].reg == inst.operands[2].reg + || ((inst.operands[0].reg == inst.operands[2].reg || inst.operands[1].reg == inst.operands[2].reg) + && !ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_v6))) as_tsktsk (_("rdhi, rdlo and rm must all be different")); } From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:42:40 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id AD17E526; Sat, 17 Aug 2013 14:42:40 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 99C662B0C; Sat, 17 Aug 2013 14:42:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEgeHE070286; Sat, 17 Aug 2013 14:42:40 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEgeUY070285; Sat, 17 Aug 2013 14:42:40 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171442.r7HEgeUY070285@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 14:42:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254450 - head/lib/libthread_db/arch/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:42:40 -0000 Author: andrew Date: Sat Aug 17 14:42:40 2013 New Revision: 254450 URL: http://svnweb.freebsd.org/changeset/base/254450 Log: Ensure we set all fpu registers to zero by using the address and size of the union over one of its members. Modified: head/lib/libthread_db/arch/arm/libpthread_md.c Modified: head/lib/libthread_db/arch/arm/libpthread_md.c ============================================================================== --- head/lib/libthread_db/arch/arm/libpthread_md.c Sat Aug 17 14:36:32 2013 (r254449) +++ head/lib/libthread_db/arch/arm/libpthread_md.c Sat Aug 17 14:42:40 2013 (r254450) @@ -90,7 +90,7 @@ pt_fpreg_to_ucontext(const struct fpreg mcontext_t *mc = &uc->uc_mcontext; /* XXX */ - memset(&mc->__fpu.__fpregs, 0, sizeof(__fpregset_t)); + memset(&mc->__fpu, 0, sizeof(mc->__fpu)); } void From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:52:19 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9C27E94C; Sat, 17 Aug 2013 14:52:19 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 87FF92B9F; Sat, 17 Aug 2013 14:52:19 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEqJpQ073974; Sat, 17 Aug 2013 14:52:19 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEqJcF073973; Sat, 17 Aug 2013 14:52:19 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171452.r7HEqJcF073973@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 14:52:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254451 - head/sys/arm/arm X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:52:19 -0000 Author: andrew Date: Sat Aug 17 14:52:19 2013 New Revision: 254451 URL: http://svnweb.freebsd.org/changeset/base/254451 Log: Remove unused FPE code. This is not enabled anywhere as it is the only file I can find containing FAST_FPE. It appears this would not work as want_resched is not defined anywhere. Modified: head/sys/arm/arm/undefined.c Modified: head/sys/arm/arm/undefined.c ============================================================================== --- head/sys/arm/arm/undefined.c Sat Aug 17 14:42:40 2013 (r254450) +++ head/sys/arm/arm/undefined.c Sat Aug 17 14:52:19 2013 (r254451) @@ -65,9 +65,6 @@ __FBSDID("$FreeBSD$"); #ifdef KDB #include #endif -#ifdef FAST_FPE -#include -#endif #include #include @@ -89,9 +86,6 @@ __FBSDID("$FreeBSD$"); #endif static int gdb_trapper(u_int, u_int, struct trapframe *, int); -#ifdef FAST_FPE -extern int want_resched; -#endif LIST_HEAD(, undefined_handler) undefined_handlers[MAX_COPROCS]; @@ -294,33 +288,5 @@ undefinedinstruction(trapframe_t *frame) panic("Undefined instruction in kernel.\n"); } -#ifdef FAST_FPE - /* Optimised exit code */ - { - - /* - * Check for reschedule request, at the moment there is only - * 1 ast so this code should always be run - */ - - if (want_resched) { - /* - * We are being preempted. - */ - preempt(0); - } - - /* Invoke MI userret code */ - mi_userret(td); - -#if 0 - l->l_priority = l->l_usrpri; - - curcpu()->ci_schedstate.spc_curpriority = l->l_priority; -#endif - } - -#else userret(td, frame); -#endif } From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:53:54 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 65D62A9F; Sat, 17 Aug 2013 14:53:54 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 52EAA2BAF; Sat, 17 Aug 2013 14:53:54 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HErsfw074234; Sat, 17 Aug 2013 14:53:54 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HErrRO074232; Sat, 17 Aug 2013 14:53:53 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171453.r7HErrRO074232@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 14:53:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254452 - head/sys/arm/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:53:54 -0000 Author: andrew Date: Sat Aug 17 14:53:53 2013 New Revision: 254452 URL: http://svnweb.freebsd.org/changeset/base/254452 Log: Remove fpe_sp_state as we don't support fpe. Modified: head/sys/arm/include/fp.h head/sys/arm/include/pcb.h Modified: head/sys/arm/include/fp.h ============================================================================== --- head/sys/arm/include/fp.h Sat Aug 17 14:52:19 2013 (r254451) +++ head/sys/arm/include/fp.h Sat Aug 17 14:53:53 2013 (r254452) @@ -66,19 +66,10 @@ typedef struct fp_extended_precision fp_ * This needs to move and be hidden from userland. */ -#ifdef ARM_VFP_SUPPORT struct vfp_state { u_int64_t reg[32]; u_int32_t fpscr; }; -#else -struct fpe_sp_state { - unsigned int fp_flags; - unsigned int fp_sr; - unsigned int fp_cr; - fp_reg_t fp_registers[16]; -}; -#endif /* * Type for a saved FP context, if we want to translate the context to a Modified: head/sys/arm/include/pcb.h ============================================================================== --- head/sys/arm/include/pcb.h Sat Aug 17 14:52:19 2013 (r254451) +++ head/sys/arm/include/pcb.h Sat Aug 17 14:53:53 2013 (r254452) @@ -80,12 +80,8 @@ struct pcb { #define PCB_NOALIGNFLT 0x00000002 caddr_t pcb_onfault; /* On fault handler */ struct pcb_arm32 un_32; -#ifdef ARM_VFP_SUPPORT struct vfp_state pcb_vfpstate; /* VP/NEON state */ u_int pcb_vfpcpu; /* VP/NEON last cpu */ -#else - struct fpe_sp_state pcb_fpstate; /* Floating Point state */ -#endif }; /* From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 14:55:31 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C084CBDB; Sat, 17 Aug 2013 14:55:31 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AE4C22BB8; Sat, 17 Aug 2013 14:55:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HEtV3J074626; Sat, 17 Aug 2013 14:55:31 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HEtVDv074625; Sat, 17 Aug 2013 14:55:31 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201308171455.r7HEtVDv074625@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sat, 17 Aug 2013 14:55:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254453 - head/lib/libc/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 14:55:31 -0000 Author: pjd Date: Sat Aug 17 14:55:31 2013 New Revision: 254453 URL: http://svnweb.freebsd.org/changeset/base/254453 Log: Correct function name and return value. Modified: head/lib/libc/sys/cap_ioctls_limit.2 Modified: head/lib/libc/sys/cap_ioctls_limit.2 ============================================================================== --- head/lib/libc/sys/cap_ioctls_limit.2 Sat Aug 17 14:53:53 2013 (r254452) +++ head/lib/libc/sys/cap_ioctls_limit.2 Sat Aug 17 14:55:31 2013 (r254453) @@ -99,10 +99,10 @@ argument. .Rv -std cap_ioctls_limit .Pp The -.Fn cap_ioctls_limit +.Fn cap_ioctls_get function, if successfull, returns the total number of allowed ioctl commands or the value -.Dv INT_MAX +.Dv CAP_IOCTLS_ALL if all ioctls commands are allowed. On failure the value .Va -1 From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 15:09:15 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0F7E5E9C; Sat, 17 Aug 2013 15:09:15 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F16922C25; Sat, 17 Aug 2013 15:09:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HF9Ems079256; Sat, 17 Aug 2013 15:09:14 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HF9ERE079253; Sat, 17 Aug 2013 15:09:14 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171509.r7HF9ERE079253@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 15:09:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254454 - in head/sys: arm/arm conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 15:09:15 -0000 Author: andrew Date: Sat Aug 17 15:09:14 2013 New Revision: 254454 URL: http://svnweb.freebsd.org/changeset/base/254454 Log: Remove the ARMFPE option. It is unsupported, and appears to be broken as arm_fpe_core_changecontext is not a function. Modified: head/sys/arm/arm/swtch.S head/sys/conf/options.arm Modified: head/sys/arm/arm/swtch.S ============================================================================== --- head/sys/arm/arm/swtch.S Sat Aug 17 14:55:31 2013 (r254453) +++ head/sys/arm/arm/swtch.S Sat Aug 17 15:09:14 2013 (r254454) @@ -472,15 +472,6 @@ ENTRY(cpu_switch) ldr r13, [r7, #(PCB_SP)] #endif - /* rem: r6 = lock */ - /* rem: r7 = new pcb */ - -#ifdef ARMFPE - add r0, r7, #(USER_SIZE) & 0x00ff - add r0, r0, #(USER_SIZE) & 0xff00 - bl _C_LABEL(arm_fpe_core_changecontext) -#endif - /* rem: r5 = new lwp's proc */ /* rem: r6 = lock */ /* rem: r7 = new PCB */ Modified: head/sys/conf/options.arm ============================================================================== --- head/sys/conf/options.arm Sat Aug 17 14:55:31 2013 (r254453) +++ head/sys/conf/options.arm Sat Aug 17 15:09:14 2013 (r254454) @@ -1,7 +1,6 @@ #$FreeBSD$ ARM9_CACHE_WRITE_THROUGH opt_global.h ARM_CACHE_LOCK_ENABLE opt_global.h -ARMFPE opt_global.h ARM_KERN_DIRECTMAP opt_vm.h ARM_L2_PIPT opt_global.h ARM_MANY_BOARD opt_global.h From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 15:21:17 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D6ACA263; Sat, 17 Aug 2013 15:21:17 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C425A2CD2; Sat, 17 Aug 2013 15:21:17 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HFLHNx085573; Sat, 17 Aug 2013 15:21:17 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HFLHgS085572; Sat, 17 Aug 2013 15:21:17 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171521.r7HFLHgS085572@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 15:21:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254455 - head/sys/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 15:21:17 -0000 Author: andrew Date: Sat Aug 17 15:21:17 2013 New Revision: 254455 URL: http://svnweb.freebsd.org/changeset/base/254455 Log: Remove the armfpe config options. These files don't exist on FreeBSD. Modified: head/sys/conf/files.arm Modified: head/sys/conf/files.arm ============================================================================== --- head/sys/conf/files.arm Sat Aug 17 15:09:14 2013 (r254454) +++ head/sys/conf/files.arm Sat Aug 17 15:21:17 2013 (r254455) @@ -51,9 +51,6 @@ arm/arm/undefined.c standard arm/arm/vectors.S standard arm/arm/vm_machdep.c standard arm/arm/vfp.c optional vfp -arm/fpe-arm/armfpe_glue.S optional armfpe -arm/fpe-arm/armfpe_init.c optional armfpe -arm/fpe-arm/armfpe.S optional armfpe board_id.h standard \ dependency "$S/arm/conf/genboardid.awk $S/arm/conf/mach-types" \ compile-with "${AWK} -f $S/arm/conf/genboardid.awk $S/arm/conf/mach-types > board_id.h" \ From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 17:02:44 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id F1C9FB35; Sat, 17 Aug 2013 17:02:43 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DD2022109; Sat, 17 Aug 2013 17:02:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HH2hue025713; Sat, 17 Aug 2013 17:02:43 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HH2hn4025712; Sat, 17 Aug 2013 17:02:43 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201308171702.r7HH2hn4025712@svn.freebsd.org> From: Bryan Venteicher Date: Sat, 17 Aug 2013 17:02:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254457 - head/sys/kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 17:02:44 -0000 Author: bryanv Date: Sat Aug 17 17:02:43 2013 New Revision: 254457 URL: http://svnweb.freebsd.org/changeset/base/254457 Log: Do not use potentially stale thread in kthread_add() When an existing process is provided, the thread selected to use to initialize the new thread could have exited and be reaped. Acquire the proc lock earlier to ensure the thread remains valid. Reviewed by: jhb, julian (previous version) MFC after: 3 days Modified: head/sys/kern/kern_kthread.c Modified: head/sys/kern/kern_kthread.c ============================================================================== --- head/sys/kern/kern_kthread.c Sat Aug 17 16:42:18 2013 (r254456) +++ head/sys/kern/kern_kthread.c Sat Aug 17 17:02:43 2013 (r254457) @@ -257,18 +257,17 @@ kthread_add(void (*func)(void *), void * panic("kthread_add called too soon"); /* If no process supplied, put it on proc0 */ - if (p == NULL) { + if (p == NULL) p = &proc0; - oldtd = &thread0; - } else { - oldtd = FIRST_THREAD_IN_PROC(p); - } /* Initialize our new td */ newtd = thread_alloc(pages); if (newtd == NULL) return (ENOMEM); + PROC_LOCK(p); + oldtd = FIRST_THREAD_IN_PROC(p); + bzero(&newtd->td_startzero, __rangeof(struct thread, td_startzero, td_endzero)); bcopy(&oldtd->td_startcopy, &newtd->td_startcopy, @@ -292,7 +291,6 @@ kthread_add(void (*func)(void *), void * newtd->td_ucred = crhold(p->p_ucred); /* this code almost the same as create_thread() in kern_thr.c */ - PROC_LOCK(p); p->p_flag |= P_HADTHREADS; thread_link(newtd, p); thread_lock(oldtd); From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 17:23:43 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 9BD0A622; Sat, 17 Aug 2013 17:23:43 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 6F477222F; Sat, 17 Aug 2013 17:23:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HHNhJ6033894; Sat, 17 Aug 2013 17:23:43 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HHNhFC033893; Sat, 17 Aug 2013 17:23:43 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201308171723.r7HHNhFC033893@svn.freebsd.org> From: Hiroki Sato Date: Sat, 17 Aug 2013 17:23:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254459 - head/usr.bin/netstat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 17:23:43 -0000 Author: hrs Date: Sat Aug 17 17:23:42 2013 New Revision: 254459 URL: http://svnweb.freebsd.org/changeset/base/254459 Log: - Use getnameinfo(3) instead of gethostbyaddr(3) or inet_ntop(3). - Fill sin6_scope_id from in6p.sin6_addr.s6_addr[2]. struct inpcb has struct in6_addr for the endpoint addresses, so sin6_scope_id must be filled. Modified: head/usr.bin/netstat/inet6.c Modified: head/usr.bin/netstat/inet6.c ============================================================================== --- head/usr.bin/netstat/inet6.c Sat Aug 17 17:09:26 2013 (r254458) +++ head/usr.bin/netstat/inet6.c Sat Aug 17 17:23:42 2013 (r254459) @@ -1120,12 +1120,17 @@ inet6print(struct in6_addr *in6, int por char * inet6name(struct in6_addr *in6p) { - char *cp; + struct sockaddr_in6 sin6; + char hbuf[NI_MAXHOST], *cp; static char line[50]; - struct hostent *hp; static char domain[MAXHOSTNAMELEN]; static int first = 1; + int flags, error; + if (IN6_IS_ADDR_UNSPECIFIED(in6p)) { + strcpy(line, "*"); + return (line); + } if (first && !numeric_addr) { first = 0; if (gethostname(domain, MAXHOSTNAMELEN) == 0 && @@ -1134,24 +1139,26 @@ inet6name(struct in6_addr *in6p) else domain[0] = 0; } - cp = 0; - if (!numeric_addr && !IN6_IS_ADDR_UNSPECIFIED(in6p)) { - hp = gethostbyaddr((char *)in6p, sizeof(*in6p), AF_INET6); - if (hp) { - if ((cp = strchr(hp->h_name, '.')) && - !strcmp(cp + 1, domain)) - *cp = 0; - cp = hp->h_name; - } - } - if (IN6_IS_ADDR_UNSPECIFIED(in6p)) - strcpy(line, "*"); - else if (cp) - strcpy(line, cp); - else + memset(&sin6, 0, sizeof(sin6)); + memcpy(&sin6.sin6_addr, in6p, sizeof(*in6p)); + sin6.sin6_family = AF_INET6; + /* XXX: in6p.s6_addr[2] can contain scopeid. */ + in6_fillscopeid(&sin6); + flags = (numeric_addr) ? NI_NUMERICHOST : 0; + error = getnameinfo((struct sockaddr *)&sin6, sizeof(sin6), hbuf, + sizeof(hbuf), NULL, 0, flags); + if (error == 0) { + if ((flags & NI_NUMERICHOST) == 0 && + (cp = strchr(hbuf, '.')) && + !strcmp(cp + 1, domain)) + *cp = 0; + strcpy(line, hbuf); + } else { + /* XXX: this should not happen. */ sprintf(line, "%s", - inet_ntop(AF_INET6, (void *)in6p, ntop_buf, + inet_ntop(AF_INET6, (void *)&sin6.sin6_addr, ntop_buf, sizeof(ntop_buf))); + } return (line); } #endif /*INET6*/ From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 18:51:41 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 32605A6C; Sat, 17 Aug 2013 18:51:41 +0000 (UTC) (envelope-from andrew@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D9DB6261D; Sat, 17 Aug 2013 18:51:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HIpeAM070257; Sat, 17 Aug 2013 18:51:40 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HIpcPV070242; Sat, 17 Aug 2013 18:51:38 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201308171851.r7HIpcPV070242@svn.freebsd.org> From: Andrew Turner Date: Sat, 17 Aug 2013 18:51:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254461 - in head/sys: arm/arm arm/conf arm/include conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 18:51:41 -0000 Author: andrew Date: Sat Aug 17 18:51:38 2013 New Revision: 254461 URL: http://svnweb.freebsd.org/changeset/base/254461 Log: Rename device vfp to option VFP and retire the ARM_VFP_SUPPORT option. This simplifies enabling as previously both options were required to be enabled, now we only need a single option. While here enable VFP on the PandaBoard. Modified: head/sys/arm/arm/genassym.c head/sys/arm/arm/machdep.c head/sys/arm/arm/mp_machdep.c head/sys/arm/arm/swtch.S head/sys/arm/arm/undefined.c head/sys/arm/arm/vfp.c head/sys/arm/conf/PANDABOARD head/sys/arm/conf/RPI-B head/sys/arm/include/pcpu.h head/sys/conf/files.arm head/sys/conf/options.arm Modified: head/sys/arm/arm/genassym.c ============================================================================== --- head/sys/arm/arm/genassym.c Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/arm/genassym.c Sat Aug 17 18:51:38 2013 (r254461) @@ -113,7 +113,7 @@ ASSYM(ARM_RAS_START, ARM_RAS_START); ASSYM(ARM_RAS_END, ARM_RAS_END); #endif -#ifdef ARM_VFP_SUPPORT +#ifdef VFP ASSYM(PCB_VFPSTATE, offsetof(struct pcb, pcb_vfpstate)); ASSYM(PCB_VFPCPU, offsetof(struct pcb, pcb_vfpcpu)); Modified: head/sys/arm/arm/machdep.c ============================================================================== --- head/sys/arm/arm/machdep.c Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/arm/machdep.c Sat Aug 17 18:51:38 2013 (r254461) @@ -875,7 +875,7 @@ pcpu0_init(void) #endif pcpu_init(pcpup, 0, sizeof(struct pcpu)); PCPU_SET(curthread, &thread0); -#ifdef ARM_VFP_SUPPORT +#ifdef VFP PCPU_SET(cpu, 0); #endif } Modified: head/sys/arm/arm/mp_machdep.c ============================================================================== --- head/sys/arm/arm/mp_machdep.c Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/arm/mp_machdep.c Sat Aug 17 18:51:38 2013 (r254461) @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#ifdef ARM_VFP_SUPPORT +#ifdef VFP #include #endif @@ -199,7 +199,7 @@ init_secondary(int cpu) KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); pc->pc_curthread = pc->pc_idlethread; pc->pc_curpcb = pc->pc_idlethread->td_pcb; -#ifdef ARM_VFP_SUPPORT +#ifdef VFP pc->pc_cpu = cpu; vfp_init(); Modified: head/sys/arm/arm/swtch.S ============================================================================== --- head/sys/arm/arm/swtch.S Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/arm/swtch.S Sat Aug 17 18:51:38 2013 (r254461) @@ -114,7 +114,7 @@ ENTRY(cpu_throw) GET_PCPU(r7) -#ifdef ARM_VFP_SUPPORT +#ifdef VFP /* * vfp_discard will clear pcpu->pc_vfpcthread, and modify * and modify the control as needed. @@ -124,7 +124,7 @@ ENTRY(cpu_throw) bne 3f bl _C_LABEL(vfp_discard) /* yes, shut down vfp */ 3: -#endif /* ARM_VFP_SUPPORT */ +#endif /* VFP */ ldr r7, [r5, #(TD_PCB)] /* r7 = new thread's PCB */ @@ -303,7 +303,7 @@ ENTRY(cpu_switch) /* rem: r9 = new PCB */ /* rem: interrupts are enabled */ -#ifdef ARM_VFP_SUPPORT +#ifdef VFP /* * vfp_store will clear pcpu->pc_vfpcthread, save * registers and state, and modify the control as needed. @@ -325,7 +325,7 @@ ENTRY(cpu_switch) add r0, r2, #(PCB_VFPSTATE) bl _C_LABEL(vfp_store) 1: -#endif /* ARM_VFP_SUPPORT */ +#endif /* VFP */ /* r1 now free! */ @@ -505,7 +505,7 @@ ENTRY(savectx) /* Store all the registers in the process's pcb */ add r2, r0, #(PCB_R8) stmia r2, {r8-r13} -#ifdef ARM_VFP_SUPPORT +#ifdef VFP /* * vfp_store will clear pcpu->pc_vfpcthread, save * registers and state, and modify the control as needed. @@ -525,7 +525,7 @@ ENTRY(savectx) add r0, r0, #(PCB_VFPSTATE) bl _C_LABEL(vfp_store) 1: -#endif /* ARM_VFP_SUPPORT */ +#endif /* VFP */ add sp, sp, #4; ldmfd sp!, {r4-r7, pc} END(savectx) Modified: head/sys/arm/arm/undefined.c ============================================================================== --- head/sys/arm/arm/undefined.c Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/arm/undefined.c Sat Aug 17 18:51:38 2013 (r254461) @@ -234,13 +234,13 @@ undefinedinstruction(trapframe_t *frame) coprocessor = 0; if ((fault_instruction & (1 << 27)) != 0) coprocessor = (fault_instruction >> 8) & 0x0f; -#ifdef ARM_VFP_SUPPORT +#ifdef VFP else { /* check for special instructions */ if (((fault_instruction & 0xfe000000) == 0xf2000000) || ((fault_instruction & 0xff100000) == 0xf4000000)) coprocessor = 10; /* vfp / simd */ } -#endif /* ARM_VFP_SUPPORT */ +#endif /* VFP */ if ((frame->tf_spsr & PSR_MODE) == PSR_USR32_MODE) { /* Modified: head/sys/arm/arm/vfp.c ============================================================================== --- head/sys/arm/arm/vfp.c Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/arm/vfp.c Sat Aug 17 18:51:38 2013 (r254461) @@ -24,10 +24,11 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ + #include __FBSDID("$FreeBSD$"); - +#ifdef VFP #include #include #include @@ -281,3 +282,5 @@ vfp_enable() tmp |= VFPEXC_EN; fmxr(VFPEXC, tmp); } +#endif + Modified: head/sys/arm/conf/PANDABOARD ============================================================================== --- head/sys/arm/conf/PANDABOARD Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/conf/PANDABOARD Sat Aug 17 18:51:38 2013 (r254461) @@ -140,5 +140,4 @@ options FDT options FDT_DTB_STATIC makeoptions FDT_DTS_FILE=pandaboard.dts -#device vfp # vfp/neon -#options ARM_VFP_SUPPORT # vfp/neon +options VFP # vfp/neon Modified: head/sys/arm/conf/RPI-B ============================================================================== --- head/sys/arm/conf/RPI-B Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/conf/RPI-B Sat Aug 17 18:51:38 2013 (r254461) @@ -109,5 +109,4 @@ options FDT #options FDT_DTB_STATIC makeoptions FDT_DTS_FILE=rpi.dts -device vfp # vfp/neon -options ARM_VFP_SUPPORT # vfp/neon +options VFP # vfp/neon Modified: head/sys/arm/include/pcpu.h ============================================================================== --- head/sys/arm/include/pcpu.h Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/arm/include/pcpu.h Sat Aug 17 18:51:38 2013 (r254461) @@ -41,7 +41,7 @@ struct vmspace; #endif /* _KERNEL */ -#ifdef ARM_VFP_SUPPORT +#ifdef VFP #define PCPU_MD_FIELDS \ unsigned int pc_cpu; \ unsigned int pc_vfpsid; \ Modified: head/sys/conf/files.arm ============================================================================== --- head/sys/conf/files.arm Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/conf/files.arm Sat Aug 17 18:51:38 2013 (r254461) @@ -50,7 +50,7 @@ arm/arm/uio_machdep.c standard arm/arm/undefined.c standard arm/arm/vectors.S standard arm/arm/vm_machdep.c standard -arm/arm/vfp.c optional vfp +arm/arm/vfp.c standard board_id.h standard \ dependency "$S/arm/conf/genboardid.awk $S/arm/conf/mach-types" \ compile-with "${AWK} -f $S/arm/conf/genboardid.awk $S/arm/conf/mach-types > board_id.h" \ Modified: head/sys/conf/options.arm ============================================================================== --- head/sys/conf/options.arm Sat Aug 17 18:38:00 2013 (r254460) +++ head/sys/conf/options.arm Sat Aug 17 18:51:38 2013 (r254461) @@ -60,3 +60,4 @@ GFB_DEBUG opt_gfb.h GFB_NO_FONT_LOADING opt_gfb.h GFB_NO_MODE_CHANGE opt_gfb.h AT91C_MAIN_CLOCK opt_at91.h +VFP opt_global.h From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 19:23:37 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7601910C; Sat, 17 Aug 2013 19:23:37 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 62ADE2757; Sat, 17 Aug 2013 19:23:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HJNble082546; Sat, 17 Aug 2013 19:23:37 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HJNZcL082530; Sat, 17 Aug 2013 19:23:35 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201308171923.r7HJNZcL082530@svn.freebsd.org> From: Hiroki Sato Date: Sat, 17 Aug 2013 19:23:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254462 - head/usr.sbin/rtsold X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 19:23:37 -0000 Author: hrs Date: Sat Aug 17 19:23:35 2013 New Revision: 254462 URL: http://svnweb.freebsd.org/changeset/base/254462 Log: - Remove struct ifinfo *iflist. It is no longer used. - Suppress warnings about increase of alignment requirement. Modified: head/usr.sbin/rtsold/dump.c head/usr.sbin/rtsold/if.c head/usr.sbin/rtsold/probe.c head/usr.sbin/rtsold/rtsock.c head/usr.sbin/rtsold/rtsol.c head/usr.sbin/rtsold/rtsold.c head/usr.sbin/rtsold/rtsold.h Modified: head/usr.sbin/rtsold/dump.c ============================================================================== --- head/usr.sbin/rtsold/dump.c Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/dump.c Sat Aug 17 19:23:35 2013 (r254462) @@ -50,8 +50,6 @@ static FILE *fp; -extern struct ifinfo *iflist; - static void dump_interface_status(void); static const char * const ifstatstr[] = {"IDLE", "DELAY", "PROBE", "DOWN", "TENTATIVE"}; Modified: head/usr.sbin/rtsold/if.c ============================================================================== --- head/usr.sbin/rtsold/if.c Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/if.c Sat Aug 17 19:23:35 2013 (r254462) @@ -61,7 +61,6 @@ #include #include "rtsold.h" -extern int rssock; static int ifsock; static int get_llflag(const char *); @@ -304,13 +303,13 @@ if_nametosdl(char *name) lim = buf + len; for (next = buf; next < lim; next += ifm->ifm_msglen) { - ifm = (struct if_msghdr *)next; + ifm = (struct if_msghdr *)(void *)next; if (ifm->ifm_type == RTM_IFINFO) { sa = (struct sockaddr *)(ifm + 1); get_rtaddrs(ifm->ifm_addrs, sa, rti_info); if ((sa = rti_info[RTAX_IFP]) != NULL) { if (sa->sa_family == AF_LINK) { - sdl = (struct sockaddr_dl *)sa; + sdl = (struct sockaddr_dl *)(void *)sa; if (strlen(name) != sdl->sdl_nlen) continue; /* not same len */ if (strncmp(&sdl->sdl_data[0], @@ -397,7 +396,7 @@ get_llflag(const char *name) continue; if (ifa->ifa_addr->sa_family != AF_INET6) continue; - sin6 = (struct sockaddr_in6 *)ifa->ifa_addr; + sin6 = (struct sockaddr_in6 *)(void *)ifa->ifa_addr; if (!IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr)) continue; Modified: head/usr.sbin/rtsold/probe.c ============================================================================== --- head/usr.sbin/rtsold/probe.c Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/probe.c Sat Aug 17 19:23:35 2013 (r254462) @@ -164,7 +164,7 @@ sendprobe(struct in6_addr *addr, struct cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo)); - pi = (struct in6_pktinfo *)CMSG_DATA(cm); + pi = (struct in6_pktinfo *)(void *)CMSG_DATA(cm); memset(&pi->ipi6_addr, 0, sizeof(pi->ipi6_addr)); /*XXX*/ pi->ipi6_ifindex = ifindex; Modified: head/usr.sbin/rtsold/rtsock.c ============================================================================== --- head/usr.sbin/rtsold/rtsock.c Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/rtsock.c Sat Aug 17 19:23:35 2013 (r254462) @@ -103,7 +103,7 @@ rtsock_input(int s) lim = msg + n; for (next = msg; next < lim; next += len) { - rtm = (struct rt_msghdr *)next; + rtm = (struct rt_msghdr *)(void *)next; if (lim - next < lenlim) break; len = rtm->rtm_msglen; @@ -138,7 +138,7 @@ static int rtsock_input_ifannounce(int s __unused, struct rt_msghdr *rtm, char *lim) { struct if_announcemsghdr *ifan; - struct ifinfo *ifinfo; + struct ifinfo *ifi; ifan = (struct if_announcemsghdr *)rtm; if ((char *)(ifan + 1) > lim) @@ -158,14 +158,14 @@ rtsock_input_ifannounce(int s __unused, case IFAN_DEPARTURE: warnmsg(LOG_WARNING, __func__, "interface %s removed", ifan->ifan_name); - ifinfo = find_ifinfo(ifan->ifan_index); - if (ifinfo) { + ifi = find_ifinfo(ifan->ifan_index); + if (ifi) { if (dflag > 1) { warnmsg(LOG_INFO, __func__, "bring interface %s to DOWN state", ifan->ifan_name); } - ifinfo->state = IFS_DOWN; + ifi->state = IFS_DOWN; } break; } Modified: head/usr.sbin/rtsold/rtsol.c ============================================================================== --- head/usr.sbin/rtsold/rtsol.c Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/rtsol.c Sat Aug 17 19:23:35 2013 (r254462) @@ -205,7 +205,7 @@ sendpacket(struct ifinfo *ifi) cm->cmsg_level = IPPROTO_IPV6; cm->cmsg_type = IPV6_PKTINFO; cm->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo)); - pi = (struct in6_pktinfo *)CMSG_DATA(cm); + pi = (struct in6_pktinfo *)(void *)CMSG_DATA(cm); memset(&pi->ipi6_addr, 0, sizeof(pi->ipi6_addr)); /*XXX*/ pi->ipi6_ifindex = ifi->sdl->sdl_index; @@ -275,13 +275,13 @@ rtsol_input(int s) if (cm->cmsg_level == IPPROTO_IPV6 && cm->cmsg_type == IPV6_PKTINFO && cm->cmsg_len == CMSG_LEN(sizeof(struct in6_pktinfo))) { - pi = (struct in6_pktinfo *)(CMSG_DATA(cm)); + pi = (struct in6_pktinfo *)(void *)(CMSG_DATA(cm)); ifindex = pi->ipi6_ifindex; } if (cm->cmsg_level == IPPROTO_IPV6 && cm->cmsg_type == IPV6_HOPLIMIT && cm->cmsg_len == CMSG_LEN(sizeof(int))) - hlimp = (int *)CMSG_DATA(cm); + hlimp = (int *)(void *)CMSG_DATA(cm); } if (ifindex == 0) { @@ -417,7 +417,7 @@ rtsol_input(int s) break; } - addr = (struct in6_addr *)(raoptp + sizeof(*rdnss)); + addr = (struct in6_addr *)(void *)(raoptp + sizeof(*rdnss)); while ((char *)addr < (char *)RA_OPT_NEXT_HDR(raoptp)) { if (inet_ntop(AF_INET6, addr, ntopbuf, sizeof(ntopbuf)) == NULL) { Modified: head/usr.sbin/rtsold/rtsold.c ============================================================================== --- head/usr.sbin/rtsold/rtsold.c Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/rtsold.c Sat Aug 17 19:23:35 2013 (r254462) @@ -67,7 +67,6 @@ #define RTSOL_DUMPFILE "/var/run/rtsold.dump"; #define RTSOL_PIDFILE "/var/run/rtsold.pid"; -struct ifinfo *iflist; struct timespec tm_max; static int log_upto = 999; static int fflag = 0; Modified: head/usr.sbin/rtsold/rtsold.h ============================================================================== --- head/usr.sbin/rtsold/rtsold.h Sat Aug 17 18:51:38 2013 (r254461) +++ head/usr.sbin/rtsold/rtsold.h Sat Aug 17 19:23:35 2013 (r254462) @@ -176,6 +176,7 @@ extern int getinet6sysctl(int); extern int setinet6sysctl(int, int); /* rtsol.c */ +extern int rssock; extern int sockopen(void); extern void sendpacket(struct ifinfo *); extern void rtsol_input(int); From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 19:25:00 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 3D42A332; Sat, 17 Aug 2013 19:25:00 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 29ECA2764; Sat, 17 Aug 2013 19:25:00 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HJP0Ae082949; Sat, 17 Aug 2013 19:25:00 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HJOxKr082925; Sat, 17 Aug 2013 19:24:59 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201308171924.r7HJOxKr082925@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 17 Aug 2013 19:24:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254463 - in head: lib/libc/amd64/sys lib/libc/gen lib/libc/i386/sys sys/amd64/include sys/i386/include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 19:25:00 -0000 Author: jilles Date: Sat Aug 17 19:24:58 2013 New Revision: 254463 URL: http://svnweb.freebsd.org/changeset/base/254463 Log: libc: Access _logname_valid more efficiently. The variable _logname_valid is not exported via the version script; therefore, change C and i386/amd64 assembler code to remove indirection (which allowed interposition). This makes the code slightly smaller and faster. Also, remove #define PIC_GOT from i386/amd64 in !PIC mode. Without PIC, there is no place containing the address of each variable, so there is no possible definition for PIC_GOT. Modified: head/lib/libc/amd64/sys/setlogin.S head/lib/libc/gen/getlogin.c head/lib/libc/i386/sys/setlogin.S head/sys/amd64/include/asm.h head/sys/i386/include/asm.h Modified: head/lib/libc/amd64/sys/setlogin.S ============================================================================== --- head/lib/libc/amd64/sys/setlogin.S Sat Aug 17 19:23:35 2013 (r254462) +++ head/lib/libc/amd64/sys/setlogin.S Sat Aug 17 19:24:58 2013 (r254463) @@ -48,12 +48,7 @@ ENTRY(__sys_setlogin) mov $SYS_setlogin,%rax KERNCALL jb HIDENAME(cerror) -#ifdef PIC - movq PIC_GOT(CNAME(_logname_valid)),%rdx - movl $0,(%rdx) -#else movl $0,CNAME(_logname_valid)(%rip) -#endif ret /* setlogin(name) */ END(__sys_setlogin) Modified: head/lib/libc/gen/getlogin.c ============================================================================== --- head/lib/libc/gen/getlogin.c Sat Aug 17 19:23:35 2013 (r254462) +++ head/lib/libc/gen/getlogin.c Sat Aug 17 19:24:58 2013 (r254463) @@ -50,7 +50,7 @@ __FBSDID("$FreeBSD$"); extern int _getlogin(char *, int); -int _logname_valid; /* known to setlogin() */ +int _logname_valid __hidden; /* known to setlogin() */ static pthread_mutex_t logname_mutex = PTHREAD_MUTEX_INITIALIZER; static char * Modified: head/lib/libc/i386/sys/setlogin.S ============================================================================== --- head/lib/libc/i386/sys/setlogin.S Sat Aug 17 19:23:35 2013 (r254462) +++ head/lib/libc/i386/sys/setlogin.S Sat Aug 17 19:24:58 2013 (r254463) @@ -41,16 +41,9 @@ __FBSDID("$FreeBSD$"); .globl CNAME(_logname_valid) /* in _getlogin() */ SYSCALL(setlogin) -#ifdef PIC PIC_PROLOGUE - pushl %eax - movl PIC_GOT(CNAME(_logname_valid)),%eax - movl $0,(%eax) - popl %eax + movl $0,PIC_GOTOFF(CNAME(_logname_valid)) PIC_EPILOGUE -#else - movl $0,CNAME(_logname_valid) -#endif ret /* setlogin(name) */ END(__sys_setlogin) Modified: head/sys/amd64/include/asm.h ============================================================================== --- head/sys/amd64/include/asm.h Sat Aug 17 19:23:35 2013 (r254462) +++ head/sys/amd64/include/asm.h Sat Aug 17 19:24:58 2013 (r254463) @@ -43,7 +43,6 @@ #define PIC_GOT(x) x@GOTPCREL(%rip) #else #define PIC_PLT(x) x -#define PIC_GOT(x) x #endif /* Modified: head/sys/i386/include/asm.h ============================================================================== --- head/sys/i386/include/asm.h Sat Aug 17 19:23:35 2013 (r254462) +++ head/sys/i386/include/asm.h Sat Aug 17 19:24:58 2013 (r254463) @@ -49,11 +49,12 @@ popl %ebx #define PIC_PLT(x) x@PLT #define PIC_GOT(x) x@GOT(%ebx) +#define PIC_GOTOFF(x) x@GOTOFF(%ebx) #else #define PIC_PROLOGUE #define PIC_EPILOGUE #define PIC_PLT(x) x -#define PIC_GOT(x) x +#define PIC_GOTOFF(x) x #endif /* From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 19:29:51 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B1ACE4AB; Sat, 17 Aug 2013 19:29:51 +0000 (UTC) (envelope-from ian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9F1A9278D; Sat, 17 Aug 2013 19:29:51 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HJTpaY083750; Sat, 17 Aug 2013 19:29:51 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HJTpxX083749; Sat, 17 Aug 2013 19:29:51 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201308171929.r7HJTpxX083749@svn.freebsd.org> From: Ian Lepore Date: Sat, 17 Aug 2013 19:29:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254464 - head/sys/arm/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 19:29:51 -0000 Author: ian Date: Sat Aug 17 19:29:51 2013 New Revision: 254464 URL: http://svnweb.freebsd.org/changeset/base/254464 Log: Enable VFP support for BeagleBone. Modified: head/sys/arm/conf/BEAGLEBONE Modified: head/sys/arm/conf/BEAGLEBONE ============================================================================== --- head/sys/arm/conf/BEAGLEBONE Sat Aug 17 19:24:58 2013 (r254463) +++ head/sys/arm/conf/BEAGLEBONE Sat Aug 17 19:29:51 2013 (r254464) @@ -49,6 +49,7 @@ options _KPOSIX_PRIORITY_SCHEDULING #Po options KBD_INSTALL_CDEV # install a CDEV entry in /dev options PREEMPTION options FREEBSD_BOOT_LOADER +options VFP # vfp/neon # Debugging makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 19:34:42 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 880D572E; Sat, 17 Aug 2013 19:34:42 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 758C827EB; Sat, 17 Aug 2013 19:34:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HJYgKV086726; Sat, 17 Aug 2013 19:34:42 GMT (envelope-from emaste@svn.freebsd.org) Received: (from emaste@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HJYgnw086725; Sat, 17 Aug 2013 19:34:42 GMT (envelope-from emaste@svn.freebsd.org) Message-Id: <201308171934.r7HJYgnw086725@svn.freebsd.org> From: Ed Maste Date: Sat, 17 Aug 2013 19:34:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254465 - head/sys/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 19:34:42 -0000 Author: emaste Date: Sat Aug 17 19:34:41 2013 New Revision: 254465 URL: http://svnweb.freebsd.org/changeset/base/254465 Log: Correct implementation of atomic_flag_test_and_set The function sets the flag and returns the previous value (7.17.8.1). Modified: head/sys/sys/stdatomic.h Modified: head/sys/sys/stdatomic.h ============================================================================== --- head/sys/sys/stdatomic.h Sat Aug 17 19:29:51 2013 (r254464) +++ head/sys/sys/stdatomic.h Sat Aug 17 19:34:41 2013 (r254465) @@ -381,11 +381,7 @@ static __inline _Bool atomic_flag_test_and_set_explicit(volatile atomic_flag *__object, memory_order __order) { - _Bool __expected; - - __expected = 0; - return (atomic_compare_exchange_strong_explicit(&__object->__flag, - &__expected, 1, __order, __order)); + return (atomic_exchange_explicit(&__object->__flag, 1, __order)); } static __inline void From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 19:49:09 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 1426CBDD; Sat, 17 Aug 2013 19:49:09 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 008CF2892; Sat, 17 Aug 2013 19:49:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HJn8kk091049; Sat, 17 Aug 2013 19:49:08 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HJn8sR091046; Sat, 17 Aug 2013 19:49:08 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201308171949.r7HJn8sR091046@svn.freebsd.org> From: Neel Natu Date: Sat, 17 Aug 2013 19:49:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254466 - in head/sys/amd64: amd64 include X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 19:49:09 -0000 Author: neel Date: Sat Aug 17 19:49:08 2013 New Revision: 254466 URL: http://svnweb.freebsd.org/changeset/base/254466 Log: Bump up the maximum addressable memory on amd64 systems from 1TB to 4TB. Bump up the KVA size proportionally from 512GB to 2TB. The number of page table pages used by the direct map is now calculated at run time based on 'Maxmem'. This means the small memory systems will not see any additional tax in terms of page table pages for the direct map. However all amd64 systems, regardless of the memory size, will use 3 more pages to accomodate the bump in the KVA size. More details available here: http://lists.freebsd.org/pipermail/freebsd-hackers/2013-June/043015.html http://lists.freebsd.org/pipermail/freebsd-current/2013-July/043143.html Tested with the following configurations: - Sandybridge server with 64GB of memory. - bhyve VM with 64MB of memory. - bhyve VM with a 8GB of memory with the memory segment above 4GB cuddling right up against the 4TB maximum memory limit. Discussed on: hackers@, current@ Submitted by: Chris Torek (torek@torek.net) Modified: head/sys/amd64/amd64/pmap.c head/sys/amd64/include/pmap.h head/sys/amd64/include/vmparam.h Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Sat Aug 17 19:34:41 2013 (r254465) +++ head/sys/amd64/amd64/pmap.c Sat Aug 17 19:49:08 2013 (r254466) @@ -232,6 +232,7 @@ u_int64_t KPML4phys; /* phys addr of ke static u_int64_t DMPDphys; /* phys addr of direct mapped level 2 */ static u_int64_t DMPDPphys; /* phys addr of direct mapped level 3 */ +static int ndmpdpphys; /* number of DMPDPphys pages */ static struct rwlock_padalign pvh_global_lock; @@ -539,7 +540,18 @@ create_pagetables(vm_paddr_t *firstaddr) ndmpdp = (ptoa(Maxmem) + NBPDP - 1) >> PDPSHIFT; if (ndmpdp < 4) /* Minimum 4GB of dirmap */ ndmpdp = 4; - DMPDPphys = allocpages(firstaddr, NDMPML4E); + ndmpdpphys = howmany(ndmpdp, NPDPEPG); + if (ndmpdpphys > NDMPML4E) { + /* + * Each NDMPML4E allows 512 GB, so limit to that, + * and then readjust ndmpdp and ndmpdpphys. + */ + printf("NDMPML4E limits system to %d GB\n", NDMPML4E * 512); + Maxmem = atop(NDMPML4E * NBPML4); + ndmpdpphys = NDMPML4E; + ndmpdp = NDMPML4E * NPDEPG; + } + DMPDPphys = allocpages(firstaddr, ndmpdpphys); ndm1g = 0; if ((amd_feature & AMDID_PAGE1GB) != 0) ndm1g = ptoa(Maxmem) >> PDPSHIFT; @@ -556,6 +568,10 @@ create_pagetables(vm_paddr_t *firstaddr) * bootstrap. We defer this until after all memory-size dependent * allocations are done (e.g. direct map), so that we don't have to * build in too much slop in our estimate. + * + * Note that when NKPML4E > 1, we have an empty page underneath + * all but the KPML4I'th one, so we need NKPML4E-1 extra (zeroed) + * pages. (pmap_enter requires a PD page to exist for each KPML4E.) */ nkpt_init(*firstaddr); nkpdpe = NKPDPE(nkpt); @@ -580,8 +596,8 @@ create_pagetables(vm_paddr_t *firstaddr) for (i = 0; (i << PDRSHIFT) < *firstaddr; i++) pd_p[i] = (i << PDRSHIFT) | PG_RW | PG_V | PG_PS | PG_G; - /* And connect up the PD to the PDP */ - pdp_p = (pdp_entry_t *)KPDPphys; + /* And connect up the PD to the PDP (leaving room for L4 pages) */ + pdp_p = (pdp_entry_t *)(KPDPphys + ptoa(KPML4I - KPML4BASE)); for (i = 0; i < nkpdpe; i++) pdp_p[i + KPDPI] = (KPDphys + ptoa(i)) | PG_RW | PG_V | PG_U; @@ -618,14 +634,16 @@ create_pagetables(vm_paddr_t *firstaddr) p4_p[PML4PML4I] |= PG_RW | PG_V | PG_U; /* Connect the Direct Map slot(s) up to the PML4. */ - for (i = 0; i < NDMPML4E; i++) { + for (i = 0; i < ndmpdpphys; i++) { p4_p[DMPML4I + i] = DMPDPphys + ptoa(i); p4_p[DMPML4I + i] |= PG_RW | PG_V | PG_U; } - /* Connect the KVA slot up to the PML4 */ - p4_p[KPML4I] = KPDPphys; - p4_p[KPML4I] |= PG_RW | PG_V | PG_U; + /* Connect the KVA slots up to the PML4 */ + for (i = 0; i < NKPML4E; i++) { + p4_p[KPML4BASE + i] = KPDPphys + ptoa(i); + p4_p[KPML4BASE + i] |= PG_RW | PG_V | PG_U; + } } /* @@ -1684,8 +1702,11 @@ pmap_pinit(pmap_t pmap) pagezero(pmap->pm_pml4); /* Wire in kernel global address entries. */ - pmap->pm_pml4[KPML4I] = KPDPphys | PG_RW | PG_V | PG_U; - for (i = 0; i < NDMPML4E; i++) { + for (i = 0; i < NKPML4E; i++) { + pmap->pm_pml4[KPML4BASE + i] = (KPDPphys + (i << PAGE_SHIFT)) | + PG_RW | PG_V | PG_U; + } + for (i = 0; i < ndmpdpphys; i++) { pmap->pm_pml4[DMPML4I + i] = (DMPDPphys + (i << PAGE_SHIFT)) | PG_RW | PG_V | PG_U; } @@ -1940,8 +1961,9 @@ pmap_release(pmap_t pmap) m = PHYS_TO_VM_PAGE(pmap->pm_pml4[PML4PML4I] & PG_FRAME); - pmap->pm_pml4[KPML4I] = 0; /* KVA */ - for (i = 0; i < NDMPML4E; i++) /* Direct Map */ + for (i = 0; i < NKPML4E; i++) /* KVA */ + pmap->pm_pml4[KPML4BASE + i] = 0; + for (i = 0; i < ndmpdpphys; i++)/* Direct Map */ pmap->pm_pml4[DMPML4I + i] = 0; pmap->pm_pml4[PML4PML4I] = 0; /* Recursive Mapping */ Modified: head/sys/amd64/include/pmap.h ============================================================================== --- head/sys/amd64/include/pmap.h Sat Aug 17 19:34:41 2013 (r254465) +++ head/sys/amd64/include/pmap.h Sat Aug 17 19:49:08 2013 (r254466) @@ -113,28 +113,49 @@ ((unsigned long)(l2) << PDRSHIFT) | \ ((unsigned long)(l1) << PAGE_SHIFT)) -#define NKPML4E 1 /* number of kernel PML4 slots */ +/* + * Number of kernel PML4 slots. Can be anywhere from 1 to 64 or so, + * but setting it larger than NDMPML4E makes no sense. + * + * Each slot provides .5 TB of kernel virtual space. + */ +#define NKPML4E 4 #define NUPML4E (NPML4EPG/2) /* number of userland PML4 pages */ #define NUPDPE (NUPML4E*NPDPEPG)/* number of userland PDP pages */ #define NUPDE (NUPDPE*NPDEPG) /* number of userland PD entries */ /* - * NDMPML4E is the number of PML4 entries that are used to implement the - * direct map. It must be a power of two. + * NDMPML4E is the maximum number of PML4 entries that will be + * used to implement the direct map. It must be a power of two, + * and should generally exceed NKPML4E. The maximum possible + * value is 64; using 128 will make the direct map intrude into + * the recursive page table map. */ -#define NDMPML4E 2 +#define NDMPML4E 8 /* - * The *PDI values control the layout of virtual memory. The starting address + * These values control the layout of virtual memory. The starting address * of the direct map, which is controlled by DMPML4I, must be a multiple of * its size. (See the PHYS_TO_DMAP() and DMAP_TO_PHYS() macros.) + * + * Note: KPML4I is the index of the (single) level 4 page that maps + * the KVA that holds KERNBASE, while KPML4BASE is the index of the + * first level 4 page that maps VM_MIN_KERNEL_ADDRESS. If NKPML4E + * is 1, these are the same, otherwise KPML4BASE < KPML4I and extra + * level 4 PDEs are needed to map from VM_MIN_KERNEL_ADDRESS up to + * KERNBASE. + * + * (KPML4I combines with KPDPI to choose where KERNBASE starts. + * Or, in other words, KPML4I provides bits 39..47 of KERNBASE, + * and KPDPI provides bits 30..38.) */ #define PML4PML4I (NPML4EPG/2) /* Index of recursive pml4 mapping */ -#define KPML4I (NPML4EPG-1) /* Top 512GB for KVM */ -#define DMPML4I rounddown(KPML4I - NDMPML4E, NDMPML4E) /* Below KVM */ +#define KPML4BASE (NPML4EPG-NKPML4E) /* KVM at highest addresses */ +#define DMPML4I rounddown(KPML4BASE-NDMPML4E, NDMPML4E) /* Below KVM */ +#define KPML4I (NPML4EPG-1) #define KPDPI (NPDPEPG-2) /* kernbase at -2GB */ /* Modified: head/sys/amd64/include/vmparam.h ============================================================================== --- head/sys/amd64/include/vmparam.h Sat Aug 17 19:34:41 2013 (r254465) +++ head/sys/amd64/include/vmparam.h Sat Aug 17 19:49:08 2013 (r254466) @@ -145,18 +145,19 @@ * 0x0000000000000000 - 0x00007fffffffffff user map * 0x0000800000000000 - 0xffff7fffffffffff does not exist (hole) * 0xffff800000000000 - 0xffff804020100fff recursive page table (512GB slot) - * 0xffff804020101000 - 0xfffffdffffffffff unused - * 0xfffffe0000000000 - 0xfffffeffffffffff 1TB direct map - * 0xffffff0000000000 - 0xffffff7fffffffff unused - * 0xffffff8000000000 - 0xffffffffffffffff 512GB kernel map + * 0xffff804020101000 - 0xfffff7ffffffffff unused + * 0xfffff80000000000 - 0xfffffbffffffffff 4TB direct map + * 0xfffffc0000000000 - 0xfffffdffffffffff unused + * 0xfffffe0000000000 - 0xffffffffffffffff 2TB kernel map * * Within the kernel map: * * 0xffffffff80000000 KERNBASE */ -#define VM_MAX_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-1, NPDEPG-1, NPTEPG-1) -#define VM_MIN_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-512, 0, 0) +#define VM_MIN_KERNEL_ADDRESS KVADDR(KPML4BASE, 0, 0, 0) +#define VM_MAX_KERNEL_ADDRESS KVADDR(KPML4BASE + NKPML4E - 1, \ + NPDPEPG-1, NPDEPG-1, NPTEPG-1) #define DMAP_MIN_ADDRESS KVADDR(DMPML4I, 0, 0, 0) #define DMAP_MAX_ADDRESS KVADDR(DMPML4I + NDMPML4E, 0, 0, 0) From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 21:53:38 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 64387E7D; Sat, 17 Aug 2013 21:53:38 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 50FC92DB8; Sat, 17 Aug 2013 21:53:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HLrcRt038924; Sat, 17 Aug 2013 21:53:38 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HLrcur038923; Sat, 17 Aug 2013 21:53:38 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308172153.r7HLrcur038923@svn.freebsd.org> From: Mark Johnston Date: Sat, 17 Aug 2013 21:53:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254467 - head/sys/compat/linux X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 21:53:38 -0000 Author: markj Date: Sat Aug 17 21:53:37 2013 New Revision: 254467 URL: http://svnweb.freebsd.org/changeset/base/254467 Log: Remove a couple of unused macros. MFC after: 3 days Modified: head/sys/compat/linux/linux_dtrace.h Modified: head/sys/compat/linux/linux_dtrace.h ============================================================================== --- head/sys/compat/linux/linux_dtrace.h Sat Aug 17 19:49:08 2013 (r254466) +++ head/sys/compat/linux/linux_dtrace.h Sat Aug 17 21:53:37 2013 (r254467) @@ -72,11 +72,6 @@ #define LIN_SDT_PROBE_DEFINE5(a, b, c, d, e, f, g, h) _LIN_SDT_PROBE_DEFINE5(\ LINUX_DTRACE, a, b, c, d, e, f, g, h) -#define _LIN_SDT_PROBE_ARGTYPE(a, b, c, d, e, f) SDT_PROBE_ARGTYPE(a, b,\ - c, d, e, f) -#define LIN_SDT_PROBE_ARGTYPE(a, b, c, d, e) _LIN_SDT_PROBE_ARGTYPE( \ - LINUX_DTRACE, a, b, c, d, e) - #define LIN_SDT_PROBE0(a, b, c) SDT_PROBE1(LINUX_DTRACE, a, b, \ c, 0) #define LIN_SDT_PROBE1(a, b, c, d) SDT_PROBE1(LINUX_DTRACE, a, b, \ From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 22:02:27 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 46A2A1AA; Sat, 17 Aug 2013 22:02:27 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 330652E1E; Sat, 17 Aug 2013 22:02:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HM2R5u042638; Sat, 17 Aug 2013 22:02:27 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HM2Q6K042636; Sat, 17 Aug 2013 22:02:26 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308172202.r7HM2Q6K042636@svn.freebsd.org> From: Mark Johnston Date: Sat, 17 Aug 2013 22:02:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254468 - in head/sys: cddl/dev/sdt sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 22:02:27 -0000 Author: markj Date: Sat Aug 17 22:02:26 2013 New Revision: 254468 URL: http://svnweb.freebsd.org/changeset/base/254468 Log: Add a "translated type" argument to SDT_PROBE_ARGTYPE() and add some macros which allow one to define SDT probes that specify translated types. The idea is to make it easy to write SDT probe definitions that can work across multiple operating systems. In particular, this makes it possible to port illumos SDT probes to FreeBSD without changing their argument types, so long as the appropriate translators are defined. Then DTrace scripts written for Solaris/illumos will work on FreeBSD without any changes. MFC after: 1 week Modified: head/sys/cddl/dev/sdt/sdt.c head/sys/sys/sdt.h Modified: head/sys/cddl/dev/sdt/sdt.c ============================================================================== --- head/sys/cddl/dev/sdt/sdt.c Sat Aug 17 21:53:37 2013 (r254467) +++ head/sys/cddl/dev/sdt/sdt.c Sat Aug 17 22:02:26 2013 (r254468) @@ -201,11 +201,15 @@ sdt_getargdesc(void *arg, dtrace_id_t id if (desc->dtargd_ndx < probe->n_args) { TAILQ_FOREACH(argtype, &probe->argtype_list, argtype_entry) { if (desc->dtargd_ndx == argtype->ndx) { - /* XXX */ desc->dtargd_mapping = desc->dtargd_ndx; strlcpy(desc->dtargd_native, argtype->type, sizeof(desc->dtargd_native)); - desc->dtargd_xlate[0] = '\0'; /* XXX */ + if (argtype->xtype != NULL) + strlcpy(desc->dtargd_xlate, + argtype->xtype, + sizeof(desc->dtargd_xlate)); + else + desc->dtargd_xlate[0] = '\0'; } } } else Modified: head/sys/sys/sdt.h ============================================================================== --- head/sys/sys/sdt.h Sat Aug 17 21:53:37 2013 (r254467) +++ head/sys/sys/sdt.h Sat Aug 17 22:02:26 2013 (r254468) @@ -87,7 +87,7 @@ #define SDT_PROBE_DEFINE(prov, mod, func, name, sname) #define SDT_PROBE_DECLARE(prov, mod, func, name) #define SDT_PROBE(prov, mod, func, name, arg0, arg1, arg2, arg3, arg4) -#define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type) +#define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type, xtype) #define SDT_PROBE_DEFINE0(prov, mod, func, name, sname) #define SDT_PROBE_DEFINE1(prov, mod, func, name, sname, arg0) @@ -110,6 +110,22 @@ #define SDT_PROBE7(prov, mod, func, name, arg0, arg1, arg2, arg3, arg4, arg5, \ arg6) +#define SDT_PROBE_DEFINE0_XLATE(prov, mod, func, name, sname) +#define SDT_PROBE_DEFINE1_XLATE(prov, mod, func, name, sname, arg0, xarg0) +#define SDT_PROBE_DEFINE2_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1) +#define SDT_PROBE_DEFINE3_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2) +#define SDT_PROBE_DEFINE4_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3) +#define SDT_PROBE_DEFINE5_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3, arg4, xarg4) +#define SDT_PROBE_DEFINE6_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3, arg4, xarg4, arg5, xarg5) +#define SDT_PROBE_DEFINE7_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3, arg4, xarg4, arg5, xarg5, arg6, \ + xarg6) + #else SET_DECLARE(sdt_providers_set, struct sdt_provider); @@ -143,9 +159,9 @@ SET_DECLARE(sdt_argtypes_set, struct sdt (uintptr_t) arg3, (uintptr_t) arg4); \ } while (0) -#define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type) \ +#define SDT_PROBE_ARGTYPE(prov, mod, func, name, num, type, xtype) \ static struct sdt_argtype sdt_##prov##_##mod##_##func##_##name##num[1] \ - = { { num, type, { NULL, NULL }, \ + = { { num, type, xtype, { NULL, NULL }, \ sdt_##prov##_##mod##_##func##_##name } \ }; \ DATA_SET(sdt_argtypes_set, sdt_##prov##_##mod##_##func##_##name##num); @@ -155,54 +171,113 @@ SET_DECLARE(sdt_argtypes_set, struct sdt #define SDT_PROBE_DEFINE1(prov, mod, func, name, sname, arg0) \ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0) + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL) #define SDT_PROBE_DEFINE2(prov, mod, func, name, sname, arg0, arg1) \ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1) + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, NULL) #define SDT_PROBE_DEFINE3(prov, mod, func, name, sname, arg0, arg1, arg2)\ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2) + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, NULL) #define SDT_PROBE_DEFINE4(prov, mod, func, name, sname, arg0, arg1, arg2, arg3) \ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3) + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, NULL) #define SDT_PROBE_DEFINE5(prov, mod, func, name, sname, arg0, arg1, arg2, arg3, arg4) \ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4) + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4, NULL) #define SDT_PROBE_DEFINE6(prov, mod, func, name, sname, arg0, arg1, arg2, arg3,\ arg4, arg5) \ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 5, arg5); + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 5, arg5, NULL) #define SDT_PROBE_DEFINE7(prov, mod, func, name, sname, arg0, arg1, arg2, arg3,\ arg4, arg5, arg6) \ SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 5, arg5); \ - SDT_PROBE_ARGTYPE(prov, mod, func, name, 6, arg6); + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 5, arg5, NULL); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 6, arg6, NULL) + +#define SDT_PROBE_DEFINE0_XLATE(prov, mod, func, name, sname) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname) + +#define SDT_PROBE_DEFINE1_XLATE(prov, mod, func, name, sname, arg0, xarg0) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0) + +#define SDT_PROBE_DEFINE2_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, xarg1) + +#define SDT_PROBE_DEFINE3_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, xarg1); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, xarg2) + +#define SDT_PROBE_DEFINE4_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, xarg1); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, xarg2); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, xarg3) + +#define SDT_PROBE_DEFINE5_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3, arg4, xarg4) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, xarg1); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, xarg2); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, xarg3); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4, xarg4) + +#define SDT_PROBE_DEFINE6_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3, arg4, xarg4, arg5, xarg5) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, xarg1); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, xarg2); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, xarg3); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4, xarg4); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 5, arg5, xarg5) + +#define SDT_PROBE_DEFINE7_XLATE(prov, mod, func, name, sname, arg0, xarg0, \ + arg1, xarg1, arg2, xarg2, arg3, xarg3, arg4, xarg4, arg5, xarg5, arg6, \ + xarg6) \ + SDT_PROBE_DEFINE(prov, mod, func, name, sname); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 0, arg0, xarg0); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 1, arg1, xarg1); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 2, arg2, xarg2); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 3, arg3, xarg3); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 4, arg4, xarg4); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 5, arg5, xarg5); \ + SDT_PROBE_ARGTYPE(prov, mod, func, name, 6, arg6, xarg6) #define SDT_PROBE0(prov, mod, func, name) \ SDT_PROBE(prov, mod, func, name, 0, 0, 0, 0, 0) @@ -257,12 +332,12 @@ struct sdt_provider; struct linker_file; struct sdt_argtype { - int ndx; /* Argument index. */ - const char *type; /* Argument type string. */ + int ndx; /* Argument index. */ + const char *type; /* Argument type string. */ + const char *xtype; /* Translated argument type. */ TAILQ_ENTRY(sdt_argtype) argtype_entry; /* Argument type list entry. */ - struct sdt_probe - *probe; /* Ptr to the probe structure. */ + struct sdt_probe *probe; /* Ptr to the probe structure. */ }; struct sdt_probe { From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 22:06:31 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 32923425; Sat, 17 Aug 2013 22:06:31 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 10B262E4E; Sat, 17 Aug 2013 22:06:31 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HM6UEr043512; Sat, 17 Aug 2013 22:06:30 GMT (envelope-from markj@svn.freebsd.org) Received: (from markj@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HM6Ums043511; Sat, 17 Aug 2013 22:06:30 GMT (envelope-from markj@svn.freebsd.org) Message-Id: <201308172206.r7HM6Ums043511@svn.freebsd.org> From: Mark Johnston Date: Sat, 17 Aug 2013 22:06:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254469 - head/share/man/man9 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 22:06:31 -0000 Author: markj Date: Sat Aug 17 22:06:30 2013 New Revision: 254469 URL: http://svnweb.freebsd.org/changeset/base/254469 Log: Update the SDT(9) man page with the macros added in 254468. Also change the existing examples to not pass an mbuf as a probe argument. There's no obvious reason to have it there, and it doesn't really jibe with the example added in this revision. MFC after: 1 week Modified: head/share/man/man9/SDT.9 Modified: head/share/man/man9/SDT.9 ============================================================================== --- head/share/man/man9/SDT.9 Sat Aug 17 22:02:26 2013 (r254468) +++ head/share/man/man9/SDT.9 Sat Aug 17 22:06:30 2013 (r254469) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd July 3, 2013 +.Dd August 17, 2013 .Dt SDT 9 .Os .Sh NAME @@ -45,6 +45,19 @@ .Fn SDT_PROBE_DEFINE6 prov mod func name sname arg0 arg1 arg2 arg3 arg4 arg5 .Fn SDT_PROBE_DEFINE7 prov mod func name sname arg0 arg1 arg2 arg3 arg4 arg5 \ arg6 +.Fn SDT_PROBE_DEFINE0_XLATE prov mod func name sname +.Fn SDT_PROBE_DEFINE1_XLATE prov mod func name sname arg0 xarg0 +.Fn SDT_PROBE_DEFINE2_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 +.Fn SDT_PROBE_DEFINE3_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ + arg2 xarg2 +.Fn SDT_PROBE_DEFINE4_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ + arg2 xarg2 arg3 xarg3 +.Fn SDT_PROBE_DEFINE5_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ + arg2 xarg2 arg3 xarg3 arg4 xarg4 +.Fn SDT_PROBE_DEFINE6_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ + arg2 xarg2 arg3 xarg3 arg4 xarg4 arg5 xarg5 +.Fn SDT_PROBE_DEFINE7_XLATE prov mod func name sname arg0 xarg0 arg1 xarg1 \ + arg2 xarg2 arg3 xarg3 arg4 xarg4 arg5 xarg5 arg6 xarg6 .Fn SDT_PROBE0 prov mod func name .Fn SDT_PROBE1 prov mod func name arg0 .Fn SDT_PROBE2 prov mod func name arg0 arg1 @@ -150,6 +163,30 @@ It is strongly recommended that probe de argument types. .Pp The +.Fn SDT_PROBE_DEFINE*_XLATE +macros are used for probes whose argument types are to be dynamically translated +to the types specified by the corresponding +.Ar xarg +arguments. +This is mainly useful when porting probe definitions from other operating +systems. +As seen by +.Xr dtrace 1 , +the arguments of a probe defined using these macros will have types which match +the +.Ar xarg +types in the probe definition. +However, the arguments passed in at the trace point will have types matching the +native argument types in the probe definition, and thus the native type is +dynamically translated to the translated type. +So long as an appropriate translator is defined in +.Pa /usr/lib/dtrace , +scripts making use of the probe need not concern themselves with the underlying +type of a given +.Nm +probe argument. +.Pp +The .Fn SDT_PROBE* macros are used to create .Nm @@ -164,21 +201,20 @@ of type Destination Unreachable: .Bd -literal -offset indent SDT_PROVIDER_DECLARE(icmp); -SDT_PROBE_DEFINE2(icmp, , unreach, pkt_receive, pkt-receive, - "struct mbuf *", "struct icmp *"); +SDT_PROBE_DEFINE1(icmp, , unreach, pkt_receive, pkt-receive, + "struct icmp *"); .Ed -This particular probe would take two arguments: a pointer to the -.Xr mbuf 9 -containing the incoming packet, and a pointer to the ICMP header for the packet. +This particular probe would take a single argument: a pointer to the struct +containing the ICMP header for the packet. Note that the module name of this probe is not specified. .Pp Consider a DTrace probe which fires when the network stack receives an IP packet. Such a probe would be defined by multiple tracepoints: .Bd -literal -offset indent -SDT_PROBE_DEFINE2(ip, , , receive, receive, "struct mbuf *", - "struct ifnet *", "struct ip *", "struct ip6_hdr *"); +SDT_PROBE_DEFINE3(ip, , , receive, receive, "struct ifnet *", + "struct ip *", "struct ip6_hdr *"); int ip_input(struct mbuf *m) @@ -186,7 +222,7 @@ ip_input(struct mbuf *m) struct ip *ip; ... ip = mtod(m, struct ip *); - SDT_PROBE4(ip, , , receive, m, m->m_pkthdr.rcvif, ip, NULL); + SDT_PROBE3(ip, , , receive, m->m_pkthdr.rcvif, ip, NULL); ... } @@ -196,13 +232,46 @@ ip6_input(struct mbuf *m) struct ip6_hdr *ip6; ... ip6 = mtod(m, struct ip6_hdr *); - SDT_PROBE4(ip, , , receive, m, m->m_pkthdr.rcvif, NULL, ip6); + SDT_PROBE3(ip, , , receive, m->m_pkthdr.rcvif, NULL, ip6); ... } .Ed In particular, the probe should fire when the kernel receives either an IPv4 packet or an IPv6 packet. +.Pp +Consider the ICMP probe discussed above. +We note that its second argument is of type +.Ar struct icmp , +which is a type defined in the FreeBSD kernel to represent the ICMP header of +an ICMP packet, defined in RFC 792. +Linux has a corresponding type, +.Ar struct icmphdr , +for the same purpose, but its field names differ from FreeBSD's +.Ar struct icmp . +Similarly, illumos defines the +.Ar icmph_t +type, again with different field names. +Even with the +.Ql icmp:::pkt-receive +probes defined in all three operating systems, +one would still have to write OS-specific scripts to extract a given field out +of the ICMP header argument. +Dynamically-translated types solve this problem: one can define an +OS-independent +.Xr c 7 +struct to represent an ICMP header, say +.Ar struct icmp_hdr_dt , +and define translators from each of the three OS-specific types to +.Ar struct icmp_hdr_dt , +all in the +.Xr dtrace 1 +library path. +Then the FreeBSD probe above can be defined with: +.Bd -literal -offset indent +SDT_PROBE_DEFINE1_XLATE(ip, , , receive, receive, "struct icmp *", + "struct icmp_hdr_dt *"); +.Ed .Sh SEE ALSO .Xr dtrace 1 .Sh AUTHORS From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 22:13:26 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B93796A2; Sat, 17 Aug 2013 22:13:26 +0000 (UTC) (envelope-from hrs@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9884F2EAA; Sat, 17 Aug 2013 22:13:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r7HMDQIH047162; Sat, 17 Aug 2013 22:13:26 GMT (envelope-from hrs@svn.freebsd.org) Received: (from hrs@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r7HMDQmB047161; Sat, 17 Aug 2013 22:13:26 GMT (envelope-from hrs@svn.freebsd.org) Message-Id: <201308172213.r7HMDQmB047161@svn.freebsd.org> From: Hiroki Sato Date: Sat, 17 Aug 2013 22:13:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r254470 - head/usr.sbin/rtsold X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 22:13:26 -0000 Author: hrs Date: Sat Aug 17 22:13:26 2013 New Revision: 254470 URL: http://svnweb.freebsd.org/changeset/base/254470 Log: Use sysctl(ICMPV6CTL_ND6_DRLIST) instead of SIOCGDRLST_IN6 ioctl. Modified: head/usr.sbin/rtsold/probe.c Modified: head/usr.sbin/rtsold/probe.c ============================================================================== --- head/usr.sbin/rtsold/probe.c Sat Aug 17 22:06:30 2013 (r254469) +++ head/usr.sbin/rtsold/probe.c Sat Aug 17 22:13:26 2013 (r254470) @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -102,41 +103,51 @@ probe_init(void) void defrouter_probe(struct ifinfo *ifinfo) { - u_char ntopbuf[INET6_ADDRSTRLEN]; - struct in6_drlist dr; - int s, i; - int ifindex = ifinfo->sdl->sdl_index; + struct in6_defrouter *p, *ep; + int ifindex, mib[4]; + char *buf, ntopbuf[INET6_ADDRSTRLEN]; + size_t l; - if ((s = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) { - warnmsg(LOG_ERR, __func__, "socket: %s", strerror(errno)); + ifindex = ifinfo->sdl->sdl_index; + if (ifindex == 0) + return; + mib[0] = CTL_NET; + mib[1] = PF_INET6; + mib[2] = IPPROTO_ICMPV6; + mib[3] = ICMPV6CTL_ND6_DRLIST; + if (sysctl(mib, nitems(mib), NULL, &l, NULL, 0) < 0) { + warnmsg(LOG_ERR, __func__, "sysctl(ICMPV6CTL_ND6_DRLIST): %s", + strerror(errno)); return; } - memset(&dr, 0, sizeof(dr)); - strlcpy(dr.ifname, "lo0", sizeof dr.ifname); /* dummy interface */ - if (ioctl(s, SIOCGDRLST_IN6, (caddr_t)&dr) < 0) { - warnmsg(LOG_ERR, __func__, "ioctl(SIOCGDRLST_IN6): %s", + if (l == 0) + return; + buf = malloc(l); + if (buf == NULL) { + warnmsg(LOG_ERR, __func__, "malloc(): %s", strerror(errno)); + return; + } + if (sysctl(mib, nitems(mib), buf, &l, NULL, 0) < 0) { + warnmsg(LOG_ERR, __func__, "sysctl(ICMPV6CTL_ND6_DRLIST): %s", strerror(errno)); - goto closeandend; + free(buf); + return; } - - for (i = 0; i < DRLSTSIZ && dr.defrouter[i].if_index; i++) { - if (ifindex && dr.defrouter[i].if_index == ifindex) { - /* sanity check */ - if (!IN6_IS_ADDR_LINKLOCAL(&dr.defrouter[i].rtaddr)) { - warnmsg(LOG_ERR, __func__, - "default router list contains a " - "non-link-local address(%s)", - inet_ntop(AF_INET6, - &dr.defrouter[i].rtaddr, - ntopbuf, INET6_ADDRSTRLEN)); - continue; /* ignore the address */ - } - sendprobe(&dr.defrouter[i].rtaddr, ifinfo); + ep = (struct in6_defrouter *)(void *)(buf + l); + for (p = (struct in6_defrouter *)(void *)buf; p < ep; p++) { + if (ifindex != p->if_index) + continue; + if (!IN6_IS_ADDR_LINKLOCAL(&p->rtaddr.sin6_addr)) { + warnmsg(LOG_ERR, __func__, + "default router list contains a " + "non-link-local address(%s)", + inet_ntop(AF_INET6, &p->rtaddr.sin6_addr, ntopbuf, + INET6_ADDRSTRLEN)); + continue; /* ignore the address */ } + sendprobe(&p->rtaddr.sin6_addr, ifinfo); } - -closeandend: - close(s); + free(buf); } static void From owner-svn-src-head@FreeBSD.ORG Sat Aug 17 22:34:33 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id B60A2FC2; Sat, 17 Aug 2013 22:34:33 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from tensor.andric.com (unknown [IPv6:2001:7b8:3a7:1:2d0:b7ff:fea0:8c26]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7903A2FA5; Sat, 17 Aug 2013 22:34:33 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::ddd4:7f4b:3bda:d27d] (unknown [IPv6:2001:7b8:3a7:0:ddd4:7f4b:3bda:d27d]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 834BD5C43; Sun, 18 Aug 2013 00:34:26 +0200 (CEST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: svn commit: r254273 - in head: . include lib lib/libc/iconv lib/libiconv_compat lib/libkiconv share/mk sys/sys tools/build/mk From: Dimitry Andric In-Reply-To: <201308130715.r7D7F1nu076335@svn.freebsd.org> Date: Sun, 18 Aug 2013 00:34:30 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <3887D7C7-D766-40DF-B154-D05768B86AA6@FreeBSD.org> References: <201308130715.r7D7F1nu076335@svn.freebsd.org> To: Peter Wemm X-Mailer: Apple Mail (2.1508) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, FreeBSD Ports X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2013 22:34:33 -0000 On Aug 13, 2013, at 09:15, Peter Wemm wrote: > Author: peter > Date: Tue Aug 13 07:15:01 2013 > New Revision: 254273 > URL: http://svnweb.freebsd.org/changeset/base/254273 >=20 > Log: > The iconv in libc did two things - implement the standard APIs, the = GNU > extensions and also tried to be link time compatible with ports = libiconv. > This splits that functionality and enables the parts that shouldn't > interfere with the port by default. >=20 > WITH_ICONV (now on by default) - adds iconv.h, iconv_open(3) etc. > WITH_LIBICONV_COMPAT (off by default) adds the libiconv_open etc API, = linker > symbols and even a stub libiconv.so.3 that are good enough to be able > to 'pkg delete -f libiconv' on a running system and reasonably expect = it > to work. >=20 > I have tortured many machines over the last few days to try and = reduce > the possibilities of foot-shooting as much as I can. I've = successfully > recompiled to enable and disable the libiconv_compat modes, ports = that use > libiconv alongside system iconv etc. If you don't enable the > WITH_LIBICONV_COMPAT switch, they don't share symbol space. >=20 > This is an extension of behavior on other system. iconv(3) is a = standard > libc interface and libiconv port expects to be able to run alongside = it on > systems that have it. Unfortunately I expect this will break many ports, when the libiconv port is installed. A simple example is the following: #include int main(void) { iconv_t ic =3D iconv_open("UTF-8", "ISO-8859-1"); iconv_close(ic); return 0; } If you compile this on a system after r254273 with -I/usr/local/include, and the libiconv port installed, it will result in: $ cc -I/usr/local/include iconv-test.c -o iconv-test /tmp/iconv-test-I1ltw1.o: In function `main': iconv-test.c:(.text+0x21): undefined reference to `libiconv_open' iconv-test.c:(.text+0x2f): undefined reference to `libiconv_close' cc: error: linker command failed with exit code 1 (use -v to see = invocation) This is because libiconv's iconv.h does: #define iconv_open libiconv_open ... #define iconv_close libiconv_close and so on for most of its functions. -Dimitry