From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 00:32:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 42612F88; Sun, 5 Jan 2014 00:32:40 +0000 (UTC) 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 2178E1FD7; Sun, 5 Jan 2014 00:32: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 s050Wd06085427; Sun, 5 Jan 2014 00:32:39 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s050Wcx5085421; Sun, 5 Jan 2014 00:32:38 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401050032.s050Wcx5085421@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 5 Jan 2014 00:32:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260310 - in head/contrib: gcc/config gcclibs/libcpp X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 00:32:40 -0000 Author: pfg Date: Sun Jan 5 00:32:38 2014 New Revision: 260310 URL: http://svnweb.freebsd.org/changeset/base/260310 Log: libcpp: misc fixes from Apple's GCC. Fixes some bugs detected by Apple: #error with unmatched quotes pragma mark Obtained from: Apple GCC 4.2 - 5553 MFC after: 1 week Modified: head/contrib/gcc/config/darwin.h head/contrib/gcclibs/libcpp/ChangeLog.apple head/contrib/gcclibs/libcpp/charset.c head/contrib/gcclibs/libcpp/directives.c head/contrib/gcclibs/libcpp/internal.h head/contrib/gcclibs/libcpp/lex.c Modified: head/contrib/gcc/config/darwin.h ============================================================================== --- head/contrib/gcc/config/darwin.h Sat Jan 4 23:53:11 2014 (r260309) +++ head/contrib/gcc/config/darwin.h Sun Jan 5 00:32:38 2014 (r260310) @@ -873,7 +873,9 @@ enum machopic_addr_class { #define DARWIN_REGISTER_TARGET_PRAGMAS() \ do { \ - c_register_pragma (0, "mark", darwin_pragma_ignore); \ + /* APPLE LOCAL begin pragma mark 5614511 */ \ + /* Removed mark. */ \ + /* APPLE LOCAL end pragma mark 5614511 */ \ c_register_pragma (0, "options", darwin_pragma_options); \ c_register_pragma (0, "segment", darwin_pragma_ignore); \ c_register_pragma (0, "unused", darwin_pragma_unused); \ Modified: head/contrib/gcclibs/libcpp/ChangeLog.apple ============================================================================== --- head/contrib/gcclibs/libcpp/ChangeLog.apple Sat Jan 4 23:53:11 2014 (r260309) +++ head/contrib/gcclibs/libcpp/ChangeLog.apple Sun Jan 5 00:32:38 2014 (r260310) @@ -3,6 +3,11 @@ Radar 6121572 * charset.c (_cpp_convert_input): Don't read to.text[-1]. +2008-05-01 Mike Stump + + Radar 5774975 + * charset.c (_cpp_convert_input): Eat UTF-8 BOM. + 2005-02-17 Devang Patel Radar 3958387 Modified: head/contrib/gcclibs/libcpp/charset.c ============================================================================== --- head/contrib/gcclibs/libcpp/charset.c Sat Jan 4 23:53:11 2014 (r260309) +++ head/contrib/gcclibs/libcpp/charset.c Sun Jan 5 00:32:38 2014 (r260310) @@ -1597,6 +1597,17 @@ _cpp_convert_input (cpp_reader *pfile, c input_cset = init_iconv_desc (pfile, SOURCE_CHARSET, input_charset); if (input_cset.func == convert_no_conversion) { + /* APPLE LOCAL begin UTF-8 BOM 5774975 */ + /* Eat the UTF-8 BOM. */ + if (len >= 3 + && input[0] == 0xef + && input[1] == 0xbb + && input[2] == 0xbf) + { + memmove (&input[0], &input[3], size-3); + len -= 3; + } + /* APPLE LOCAL end UTF-8 BOM 5774975 */ to.text = input; to.asize = size; to.len = len; Modified: head/contrib/gcclibs/libcpp/directives.c ============================================================================== --- head/contrib/gcclibs/libcpp/directives.c Sat Jan 4 23:53:11 2014 (r260309) +++ head/contrib/gcclibs/libcpp/directives.c Sun Jan 5 00:32:38 2014 (r260310) @@ -991,7 +991,11 @@ do_diagnostic (cpp_reader *pfile, int co if (print_dir) fprintf (stderr, "#%s ", pfile->directive->name); pfile->state.prevent_expansion++; + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic++; cpp_output_line (pfile, stderr); + /* APPLE LOCAL #error with unmatched quotes 5607574 */ + pfile->state.in_diagnostic--; pfile->state.prevent_expansion--; } } @@ -1173,12 +1177,25 @@ cpp_register_deferred_pragma (cpp_reader } } +/* APPLE LOCAL begin pragma mark 5614511 */ +/* Handle #pragma mark. */ +static void +do_pragma_mark (cpp_reader *pfile) +{ + ++pfile->state.skipping; + skip_rest_of_line (pfile); + --pfile->state.skipping; +} +/* APPLE LOCAL end pragma mark 5614511 */ + /* Register the pragmas the preprocessor itself handles. */ void _cpp_init_internal_pragmas (cpp_reader *pfile) { /* Pragmas in the global namespace. */ register_pragma_internal (pfile, 0, "once", do_pragma_once); + /* APPLE LOCAL pragma mark 5614511 */ + register_pragma_internal (pfile, 0, "mark", do_pragma_mark); /* New GCC-specific pragmas should be put in the GCC namespace. */ register_pragma_internal (pfile, "GCC", "poison", do_pragma_poison); Modified: head/contrib/gcclibs/libcpp/internal.h ============================================================================== --- head/contrib/gcclibs/libcpp/internal.h Sat Jan 4 23:53:11 2014 (r260309) +++ head/contrib/gcclibs/libcpp/internal.h Sun Jan 5 00:32:38 2014 (r260310) @@ -220,6 +220,11 @@ struct lexer_state /* Nonzero if the deferred pragma being handled allows macro expansion. */ unsigned char pragma_allow_expansion; + + /* APPLE LOCAL begin #error with unmatched quotes 5607574 */ + /* Nonzero when handling #error and #warning to allow unmatched quotes. */ + unsigned char in_diagnostic; + /* APPLE LOCAL end #error with unmatched quotes 5607574 */ }; /* Special nodes - identifiers with predefined significance. */ Modified: head/contrib/gcclibs/libcpp/lex.c ============================================================================== --- head/contrib/gcclibs/libcpp/lex.c Sat Jan 4 23:53:11 2014 (r260309) +++ head/contrib/gcclibs/libcpp/lex.c Sun Jan 5 00:32:38 2014 (r260310) @@ -658,7 +658,12 @@ lex_string (cpp_reader *pfile, cpp_token cpp_error (pfile, CPP_DL_WARNING, "null character(s) preserved in literal"); - if (type == CPP_OTHER && CPP_OPTION (pfile, lang) != CLK_ASM) + /* APPLE LOCAL begin #error with unmatched quotes 5607574 */ + if (type == CPP_OTHER + && CPP_OPTION (pfile, lang) != CLK_ASM + && !pfile->state.in_diagnostic + && !pfile->state.skipping) + /* APPLE LOCAL end #error with unmatched quotes 5607574 */ cpp_error (pfile, CPP_DL_PEDWARN, "missing terminating %c character", (int) terminator); From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 00:43:29 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3C4C6689; Sun, 5 Jan 2014 00:43:29 +0000 (UTC) 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 2454E10A9; Sun, 5 Jan 2014 00:43: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 s050hTCr089557; Sun, 5 Jan 2014 00:43:29 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s050hSMI089553; Sun, 5 Jan 2014 00:43:28 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401050043.s050hSMI089553@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 5 Jan 2014 00:43:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 00:43:29 -0000 Author: pfg Date: Sun Jan 5 00:43:28 2014 New Revision: 260311 URL: http://svnweb.freebsd.org/changeset/base/260311 Log: gcc: Add support for Apple's Block extension Block objects [1] are a C-level syntactic and runtime feature. They are similar to standard C functions, but in addition to executable code they may also contain variable bindings to automatic (stack) or managed (heap) memory. A block can therefore maintain a set of state (data) that it can use to impact behavior when executed. This port is based on Apple's GCC 5646 with some bugfixes from Apple GCC 5666.3. It has some small differences with the support in clang, which remains the recommended compiler. Perhaps the most notable difference is that in GCC that __block is not actually a keyword, but a macro. There will be workaround for this issue in a near future. Other issues can be consulted in the clang documentation [2] For better compatiblity with Apple's GCC and llvm-gcc some related fixes and features from Apple have been included. Support for the non-standard nested functions in GCC is now off by default. No effort was made to update the ObjC support since FreeBSD doesn't carry ObjC in the base system, but some of the code crept in and was more difficult to remove than to adjust. Reference: [1] https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html [2] http://clang.llvm.org/compatibility.html#block-variable-initialization Obtained from: Apple GCC 4.2 MFC after: 3 weeks Modified: head/contrib/gcc/ChangeLog.apple head/contrib/gcc/attribs.c head/contrib/gcc/c-common.c head/contrib/gcc/c-common.h head/contrib/gcc/c-convert.c head/contrib/gcc/c-cppbuiltin.c head/contrib/gcc/c-decl.c head/contrib/gcc/c-objc-common.h head/contrib/gcc/c-opts.c head/contrib/gcc/c-parser.c head/contrib/gcc/c-pretty-print.c head/contrib/gcc/c-pretty-print.h head/contrib/gcc/c-tree.h head/contrib/gcc/c-typeck.c head/contrib/gcc/c.opt head/contrib/gcc/calls.c head/contrib/gcc/cgraph.h head/contrib/gcc/cgraphunit.c head/contrib/gcc/convert.c head/contrib/gcc/convert.h head/contrib/gcc/cp/ChangeLog.apple head/contrib/gcc/cp/call.c head/contrib/gcc/cp/class.c head/contrib/gcc/cp/cp-gimplify.c head/contrib/gcc/cp/cp-objcp-common.c head/contrib/gcc/cp/cp-objcp-common.h head/contrib/gcc/cp/cp-tree.h head/contrib/gcc/cp/decl.c head/contrib/gcc/cp/decl.h head/contrib/gcc/cp/decl2.c head/contrib/gcc/cp/error.c head/contrib/gcc/cp/init.c head/contrib/gcc/cp/mangle.c head/contrib/gcc/cp/name-lookup.c head/contrib/gcc/cp/name-lookup.h head/contrib/gcc/cp/parser.c head/contrib/gcc/cp/pt.c head/contrib/gcc/cp/semantics.c head/contrib/gcc/cp/tree.c head/contrib/gcc/cp/typeck.c head/contrib/gcc/dbxout.c head/contrib/gcc/doc/extend.texi head/contrib/gcc/doc/invoke.texi head/contrib/gcc/dwarf2.h head/contrib/gcc/dwarf2out.c head/contrib/gcc/expmed.c head/contrib/gcc/expr.c head/contrib/gcc/fold-const.c head/contrib/gcc/function.c head/contrib/gcc/function.h head/contrib/gcc/ggc-common.c head/contrib/gcc/ggc.h head/contrib/gcc/langhooks-def.h head/contrib/gcc/langhooks.c head/contrib/gcc/langhooks.h head/contrib/gcc/stor-layout.c head/contrib/gcc/stub-objc.c head/contrib/gcc/targhooks.c head/contrib/gcc/toplev.c head/contrib/gcc/tree-gimple.h head/contrib/gcc/tree-nested.c head/contrib/gcc/tree.c head/contrib/gcc/tree.def head/contrib/gcc/tree.h head/contrib/gcc/varasm.c head/contrib/gcclibs/include/libiberty.h head/contrib/gcclibs/libiberty/physmem.c Modified: head/contrib/gcc/ChangeLog.apple ============================================================================== --- head/contrib/gcc/ChangeLog.apple Sun Jan 5 00:32:38 2014 (r260310) +++ head/contrib/gcc/ChangeLog.apple Sun Jan 5 00:43:28 2014 (r260311) @@ -1,8 +1,908 @@ -006-02-15 Fariborz Jahanian +2010-03-16 Fariborz Jahanian + + Radar 7760213 + * c-common.h (HasByrefArray): New decl. + * c-common.c (HasByrefArray): New definition. + * c-typeck.c (build_external_ref): Diagnose access of + __block array. + +2010-03-12 Jim Grosbach + + Radar 7744816 + + * expmed.c (synth_mult): Remove incorrect special case handling for + 0xffffffff. + +2010-03-12 Fariborz Jahanian + + Radar 7735196 + * c-parser.c (build_block_struct_initlist): + Set BLOCK_USE_STRET flag in block descriptor for + blocks which return their aggregate value in memory. + * c-common.h (BLOCK_USE_STRET): New flag. + +2010-03-05 Fariborz Jahanian + + Radar 7721728 + * c-typeck.c (build_external_ref): Diagnose + importation of copied-in variables. + +2009-03-12 Caroline Tice + + Radar 6144634 + * c-parser.c (c_parser_statement_after_labels): When + re-setting the expression location at the end, use the input + location for Block pointer assignments. + +2009-02-11 Fariborz Jahanian + + Radar 6573923 + * c-decl.c (synth_block_byref_id_object_copy_func, + synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER + flag in call to copy/dispose helper functions. + * c-common.h (BLOCK_BYREF_CALLER): New flag. + +2008-12-21 Caroline Tice + + Radar 6455678 + * cp/typeck.c (original_type): Stop if the type + and its DECL_ORIGINAL_TYPE are the same. + +2008-12-18 Bill Wendling + + Radar 6457359 + * c-parser.c (build_block_struct_initlist): Changed type. + * cp/parser.c (build_block_struct_initlist): Ditto. + +2008-12-02 Caroline Tice + + Radar 6386976 + * objcp/objcp-decl.h (TYPE_HAS_OBJCXX_INFO): New macro. + * objcp/objcp-lang.c (objcp-decl.h): New include statement, with + required define. + (LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE): Redefine for + obj-c++. + (objcxx_is_runtime_type): New function. + +2008-12-02 Fariborz Jahanian + + Radar 6411649 + * funciton.h: Added new field. + * c-common.c (build_block_helper_name): Produce a unique + block number per each enclosing function when building + the block helper function name. + +2008-11-18 Stuart Hastings + + Radar 6353006 + * tree.c (generic_block_literal_struct_type): Fix APPLE LOCAL. + * langhooks-def.h (lhd_build_generic_block_struct_type): Fix + APPLE LOCAL. + +2008-11-07 Fariborz Jahanian + + Radar 5847976 + * c-decl.c (synth_block_byref_id_object_copy_func): Takes a new + 'flag' argument and generates the much simplified API. + (synth_block_byref_id_object_dispose_func): Ditto. + (new_block_byref_decl): Hack to prevent issuing bogus warning + on a field declared as __weak. + (init_byref_decl): Takes an additional 'flag' argument + and passes it down to synth_block_byref_id_object_copy_func and + synth_block_byref_id_object_dispose_func. + (finish_decl): Computes the flag for the block variable declaration. + * c-common.c (build_block_byref_release_decl, + build_block_byref_assign_copy_decl): Removed. + (build_block_byref_release_exp): Use the new API. + (build_block_object_assign_decl, build_block_object_assign_call_exp, + build_block_object_dispose_decl, build_block_object_dispose_call_exp): New. + (build_indirect_object_id_exp): Fixed a code gen bug which was exposed in + c/c++ mode, but not in ObjC/ObjC++ mode. + * c-common.h (build_block_object_assign_call_exp, + build_block_object_dispose_call_exp, + objc_is_gcable_type): New decls. + Declaration of several new flags. + (cast_to_pointer_to_id): Removed. + * stub-objc.c (objc_is_gcable_type): New + (copy_in_object, retain_block_component, release_block_component): Removed. + (cast_to_pointer_to_id): Removed. + * c-parser.c (build_block_struct_initlist): Remove call to copy_in_object. + (synth_copy_helper_block_func): Generates much simplified API. + (synth_destroy_helper_block_func): Ditto. + (block_object_dispose): Removed. + * config/darwin-c.c (darwin_cpp_builtins): Define __weak even when + -fobjc-gc is off. + +2008-10-31 Fariborz Jahanian + + Radar 6175959 + * stub-objc.c (block_requires_copying): Object pointers with + NSObject attribute also require copy/release API. + * c-parser.c (synth_copy_helper_block_func): Use the new API + _Block_object_assign for ObjC object copying. + (block_object_dispose): New + (synth_destroy_helper_block_func): Call block_object_dispose + to use new _Block_object_dispose API for ObjC object release. + +2008-10-27 Fariborz Jahanian + + Radar 6231433 + * c-typeck.c (objc_compare_types, objc_have_common_type): + Take an extra argument for better diagnostics. + * c-common.c (objc_compare_types, objc_have_common_type): + Take extra argument. + * stub-objc.c: Ditto + +2008-10-24 Fariborz Jahanian + + Radar 6305545 + * cgraph.h (lower_if_nested_functions): New decl. + * tree-gimple.h (lower_nested_functions): Takes one more arg. + * cgraphunit.c (lower_if_nested_functions): New + * tree-nested.c (lower_nested_functions): Skip structors. + +2008-10-24 Fariborz Jahanian + + Radar 5847213 (minor tweak) + * c-decl.c (build_block_descriptor_type): + Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose + visible to pch. + +2008-10-23 Caroline Tice + + Radar 6300081 + * tree.c(build_block_pointer_type): Add call to + build_generic_block_struct_type to initialize + generic_block_literal_struct_type if necessary. + * cp/parser.c (build_generic_block_struct_type): Update comments. + (build_block_struct_type): Remove call to + build_generic_block_struct_type. + (make_block_pointer_declarator): Likewise. + * c-decl.c (make_block_pointer_declarator): Likewise. + * c-parser.c (build_block_struct_type): Likewise. + (build_generic_block_struct_type): Update comments. + +2008-10-22 Caroline Tice + + Radar 6300081 & Radar 6163705 + * tree.h (generic_block_literal_struct_type): Extern global variable + decl. + (build_generic_block_struct_type): New extern function decl. + * cp/parser (build_generic_block_struct_type): New function. + (build_block_struct_type): Call build_generic_block_struct_type + to initialize generic_block_literal_struct_type. + (make_block_pointer_declarator): Likewise. + (declare_block_prologue_local_vars): Temporarily set input_location + to 1 before the start of the block function; re-set input_location at + the end of this function. + * dwarf2out.c (add_type_attribute): If the type is a + BLOCK_POINTER_TYPE, assign it to be a pointer to a + generic_block_literal_struct_type. + * c-decl.c (make_block_pointer_declarator): Call + build_generic_block_struct_type to initialize + generic_block_literal_struct_type. + * c-common.c (generic_block_literal_struct_type): New global variable. + * c-parser.c (build_generic_block_struct_type): New function. + (build_block_struct_type): Call build_generic_block_struct_type + to initialize generic_block_literal_struct_type. + * testsuite/gcc.apple/block-debug-1.c: Fix test to work with new + compiler modifications. + * testsuite/gcc.apple/block-debug-2.c: Likewise. + * testsuite/g++.apple/block-debug-1.C: Likewise. + * testsuite/g++.apple/block-debug-2.C: Likewise. + +2008-10-10 Fariborz Jahanian + + Radar 5847213 - New Block ABI + * dwarf2out.c (add_type_attribute): Unusuable code + for radar 5811943 is removed. + * c-decl.c (build_block_byref_decl): Removed unneeded + build of block_original_byref_decl_list. + (build_block_internal_types): Removed. + (build_block_descriptor_type): New routine to build the descriptor type. + (make_block_pointer_declarator): Unused code is removed. + * c-typeck.c (build_block_call): New code gen for block calls. + * c-common.c (invoke_impl_ptr_type): Removed. + * c-common.h (block_original_byref_decl_list, build_block_internal_types): Removed + (build_block_descriptor_type, BLOCK_HAS_DESCRIPTOR): Decls added. + * c-parser.c (build_block_struct_type): Block literal expression internal type + is redeclared into its new layout. + (build_block_struct_initlist): Initializer list for above type is redone. + (build_descriptor_block_decl): New routine to declare the descriptor variable + (build_block_literal_tmp): Modified for the new type and initiazation. + +2008-10-06 Fariborz Jahanian + + Radar 6268817 + * c-decl.c (check_for_loop_decls): Block helper function + is OK if declared in a for-loop main statement block. + +2008-10-02 Fariborz Jahanian + + Radar 6246527 + * attribs.c (decl_attributes): Added support for adding attributes + on block pointer variable declarations. + * c-common.c (block_delta_format_args): Add + (any_recognized_block_attribute): Add + * c-common.h (any_recognized_block_attribute): New decl. + * c-parser.c (c_parser_block_literal_expr): Call to do the delta + on printf attribute. + +2008-09-30 Fariborz Jahanian + + Radar 6225809 + * c-decl.c (build_block_byref_decl): Add __block vaiables + to intervening blocks. + +2008-09-25 Fariborz Jahanian + + Radar 6237713 + * c-common.c (handle_noreturn_attribute): Add 'noreturn' + attribute to block pointer decls. + * c-parser.c (c_parser_block_literal_expr): Parse and set + attributes on block literals. + +2008-09-25 Fariborz Jahanian + + Radar 6244520 - minor addition + * c-common.c (build_indirect_object_id_exp): offset needs + be updated to accomodate addition of the new field. + +2008-09-16 Fariborz Jahanian + + Radar 6214617 + * c-common: New flag BLOCK_HAS_CXX_OBJ replaces BLOCK_NO_COPY. + (BlockImportsCxxObjects): New field replaces BlockHasByrefVar. + * c-parser.c (build_block_struct_type): Remove setting of + BLOCK_NO_COPY flag. + +2008-09-16 Fariborz Jahanian + + Radar 6217257 + * c-common.c (handle_blocks_attribute): Diagnose + vla __block declarations. + +2008-09-12 Fariborz Jahanian + + Radar 6212722 (tweak) + * c-decl.c (build_block_ref_decl): Use array_to_pointer_conversion + and function_to_pointer_conversion. + * c-typeck.c (array_to_pointer_conversion, function_to_pointer_conversion): + Made them global. + * c-common.h (array_to_pointer_conversion, function_to_pointer_conversion): + Declare. + +2008-09-09 Fariborz Jahanian + + Radar 6169580 + * c-commmon.c (build_block_helper_name): Fix bug in + block helper function name mangling. + +2008-09-03 Fariborz Jahanian + + Radar 6185344 + * c-typeck.c (c_finish_return): Don't do block specific + stuff when block has a return type. + * c-common.h (block_sema_info): block_has_return_type is + a new field. + * c-parser.c (c_parser_direct_declarator): Terminate type + parsing for block return types. + (c_parser_block_literal_expr): Added support to parse and + handle explicit return type for blocks. + +2008-08-28 Fariborz Jahanian + + Radar 6160536 + * c-commmon.c (build_block_helper_name): New + * c-common.h (build_block_helper_name): New decl. + * c-parser.c (c_parser_block_literal_expr): Call + build_block_helper_name to build pretty helper function + name. + +2008-08-28 Fariborz Jahanian + + Radar 6180456 + * c-decl.c (synth_block_byref_id_object_copy_func): Different + API for copying __block declared objects in c. + (synth_block_byref_id_object_dispose_func): Different API + for releasing __block declared objects in c. + * c-common.c (block_byref_assign_copy_decl): New + (build_indirect_object_id_exp): Cast to 'id *' in objective-c + mode only. + * c-common.h (build_block_byref_assign_copy_decl): New decl. + * c-parser.c (synth_copy_helper_block_func): Refactored code + to call build_block_byref_assign_copy_decl(). + +2008-08-24 Caroline Tice + + Radars 6144664, 6145471, 6144634 + c-decl.c (build_block_byref_decl): Assign the source + location for each byref decl to the source location of + the helper function decl. + (build_block_ref_decl): Ditto for ref decls. + +2008-08-14 Fariborz Jahanian + + Radar 5822844 + * c-typeck.c (digest_init): Handler block as initializer. + (c_finish_return): check for completed block before + analyzing block's return expression. + * varasm.c (output_constant): Allow outputting block data. + * c-common.h (BLOCK_IS_GLOBAL): New flag. + (block_is_complete): New field in block data structure. + * c-parser.c (build_block_struct_initlist): New initializer and + flag for global block data. + (build_block_literal_tmp): Temporary data for global block is + declared as global static. + (c_parser_block_literal_expr): Removed diagnostics for global blocks. + Moved fixing helper function type earlier before its tree is built. + +2008-08-06 Fariborz Jahanian + + Radar 6014138 + * c-decl.c (build_block_byref_decl): In the presence of nested "{" + move up the scope chain until reaching the main function body's scope. + +2008-08-04 Fariborz Jahanian + + Radar 6040305 - work in progress. + * c-decl.c (build_indirect_object_id_exp): Removed. + * c-common.c (build_indirect_object_id_exp): Added + * c-common.h (build_indirect_object_id_exp): New decl. + * config/darwin-c.c (darwin_cpp_builtins): Define __byref + in c++ mode as well. + +2008-07-18 Fariborz Jahanian + + Radar 6083129 - twiked + * c-decl.c (release_all_local_byrefs_at_return): Do not release + imported __byref variables in the block. + * c-parser.c (gen_block_byref_release_exp): Do not release __byref + variables outside of the block when returning from the block. + +2008-07-15 Fariborz Jahanian + + Radar 5988451 + * c-decl.c (build_block_ref_decl): Insert copied in variable + in each enclosing block which does not use it. + (begin_block): Remove setting of "the_scope" field of the block. + (in_imm_block): Fix effect of changing the "the_scope" field. + (lookup_name_in_block): Do not skip over copied-in variables when + looking up a variable in the block. + * c-parser.c (c_parser_block_literal_expr): Set block's "the_scope" field + to the helper function's outer-most body scope. + +2008-07-08 Fariborz Jahanian + + Radar 6048570 + * c-typeck.c (c_finish_return): Error on returning a block on the stack. + +2008-06-05 Fariborz Jahanian + + Radar 5988995 + * c-typeck.c (types_are_closure_compatible): Nested block pointer + types must be considered when matching block types. + +2008-06-05 Fariborz Jahanian + + Radar 5982990 + * c-parser.c (c_parser_objc_synch_compound_statement): New + (c_parser_objc_synchronized_statement): Call + c_parser_objc_synch_compound_statement. + +2008-06-04 Fariborz Jahanian + + Radar 5985368 + * c-parser.c (c_parser_declaration_or_fndef): Better diagnostics for + a bad block definition. + +2008-05-23 Fariborz Jahanian + + Radar 5925781 + * c-common.c (handle_nonnull_attribute): Support block pointer + just like a pointer for nonnull attribute. + (check_nonnull_arg): Ditto. + +2008-05-20 Fariborz Jahanian + + Radar 5932809 - minor change for runtime delight. + * c-parser.c (build_closure_struct_type): Add strcutor fields + for __byref 'id' object blocks as well. + (build_closure_struct_initlist): And their initializers. + +2008-04-30 Caroline Tice + + Radar 5811961 + * c-decl.c: (declare_closure_prologue_local_vars): Set the source + location for the new decl expr statement to be the source location of + the decl tree. + +2008-04-25 Fariborz Jahanian + + Radar 5803005 (tweaked) + * c-typeck.c (build_external_ref): Refactored global decl checks. + +2008-04-24 Caroline Tice + + Radar 5811943 + * tree.h (TYPE_CLOSURE_IMPL_STRUCT): New macro. + (lang_flag_2): Use previously unused field in tree_type to indicate + closure structs. + * dwarf2out.c (c-common.h): New include statement. + (dwarf_attr_name): Add case for DW_AT_APPLE_closure. + (gen_variable_die): Give pointers to closures the + invoke_impl_ptr_type. + (gen_struct_or_union_type_die): Add DW_AT_APPLE_closure + to structs that define closures. + * dwarf2.h (DW_AT_APPLE_closure): New Dwarf attribute. + * c-typeck.c (invoke_impl_ptr_type): Move declaration from here to + c-common.c + (build_closure_internal_types): Set TYPE_CLOSURE_IMPL_STRUCT + flag for closure structs. + * c-common.c (invoke_impl_ptr_type): Move declaration to here from + c-typeck.c. + +2008-04-23 Fariborz Jahanian + + Radar 5882266 + * c-typeck.c (types_are_closure_compatible): Check for underlying + pointer types as well. + +2008-04-15 Stuart Hastings + + Radar 5862465 + * tree.h (PTR_OR_REF_CHECK, POINTER_TYPE_P): Add + CLOSURE_POINTER_TYPE. + * fold-const.c (fold_convert): Add CLOSURE_POINTER_TYPE. + * testsuite/gcc.apple/closure-5862465.c: New. + +2008-03-31 Fariborz Jahanian + + Radar 5831855 + * c-typeck.c (convert_for_assignment): Block and 'id' types + are interchangeable. + +2008-03-28 Fariborz Jahanian + + Radar 5809099 + * convert.c (convert_to_pointer): Allow typecast of closure + pointer to 'id'. + (convert_to_closure_pointer): Allow typecast of 'id' + of a closure pointer expression. + +2008-03-25 Fariborz Jahanian + + Radar 5811887 (minor change) + * c-opts.c (c_common_post_options): Remove conditional check + of pedantic when setting flag_blocks. + +2008-03-24 Fariborz Jahanian + + Radar 5811887 + * c-cppbuiltin.c: flag_closures renamed to flag_blocks + * c-parser.c: Ditto. + * c.opt: flag_closures renamed to flag_blocks. flag_blocks + defaulted to -1. + * c-opts.c (c_common_post_options): All flavors of c99, blocks are off by + default unless requested via -fblocks. + +2008-03-24 Fariborz Jahanian + + Radar 5814025 + * c-tree.h (make_closure_pointer_declarator): Takes + additional argument. + * c-decl.c (grokdeclarator): Get 'const'-ness of closure + pointer. + (make_closure_pointer_declarator): Takes additional argument for + const/volatile. + * c-parser.c (c_parser_declarator): Pass down attribute info. + to make_closure_pointer_declarator. + +2008-03-20 Fariborz Jahanian + + Radar 5802025 + * c-common.h (objc_build_property_getter_func_call): New decl. + * stub-objc.c (objc_build_property_getter_func_call): New stub. + +2008-03-18 Fariborz Jahanian + + Radar 5803600 + * c-decl.c (add_closure_global_byref_list, + in_closure_global_byref_list): New defs. + * c-common.h (add_closure_global_byref_list, + in_closure_global_byref_list): New decls. + * c-typeck.c (build_external_ref): global variables + declared as 'byref' are enterred in their own list + of such declarations per each closure. + * c-parser.c (c_parser_postfix_expression): Remove previous fix. + (c_parser_closure_byref_declaration): Check for global + 'byref' by calling in_closure_global_byref_list. + +2008-03-13 Fariborz Jahanian + + Radar 5795493 + * c-typeck.c: Renamed typesAreClosureCompatible to + types_are_closure_compatible. + +2008-03-11 Fariborz Jahanian + + Radar 5732232 (Related to change of command option/macro) + * c-cppbuiltin.c: __CLOSURES__ macro rename __BLOCKS__ + * c.opt: -fclosures change to -fblocks. + +2008-03-10 Fariborz Jahanian + + Radar 5782740 - part 2 (bug fix). + * c-parser.c (synth_copy_helper_closure, + synth_destroy_helper_closure): set DECL_ARG_TYPE field of input + arguments for the two synthesized helper functions. + +2008-02-21 Caroline Tice + + Radar 5741070 + * objc/objc-act.c (objc_finish_message_expr): Find + the record-type tree from the class interface, and mark the record + type as used, for emitting debug info. + * cp/cp-objcp-common.c (c_return_interface_record_type): New function. + * cp/cp-tree.h (c_return_interface_record_type): New extern function + declaration. + * c-tree.h (c_return_interface_record_type): Likewise + * c-decl.c (c_return_interface_record_type): New function. + +2007-08-22 Fariborz Jahanian + + Radar 4947311 + * c-common.h (objc_declare_protocols, objc_start_protocol): Decl changed. + * stub-objc.c (objc_declare_protocols, objc_start_protocol): Changed. + * c-parser.c (c_parser_external_declaration): Call to + c_parser_objc_protocol_definition takes additional argument. + (c_parser_declaration_or_fndef): Protocols with attributes are processed + here by passing it to c_parser_objc_protocol_definition. + (c_parser_objc_protocol_definition): Takes additional argument and passes + it to objc_declare_protocols or objc_start_protocol. + +2007-07-13 Fariborz Jahanian + + Radar 5277239 + * c-parser.c (c_parser_next_token_starts_declspecs): Exclude + objc2's property dot-syntax as a declarator. + (c_parser_postfix_expression): Convert property dot-syntax on + class objects into a property reference expression. + +2007-07-10 Fariborz Jahanian + + Radar 5285911 + * tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): Macro removed. + * c-typeck.c (build_component_ref): Call + objc_build_property_reference_expr instead of objc_build_getter_call. + (build_modify_expr): Call objc_property_reference_expr instead of + objc_property_call. + * c-common.h (objc_build_getter_call, objc_property_call): Decl removed. + (objc_build_property_reference_expr, objc_property_reference_expr): Decl. + added. + * stub-objc.c (objc_build_getter_call, objc_property_call): Stub removed. + (objc_build_property_reference_expr, objc_property_reference_expr): + Stub added. + +2007-06-29 Fariborz Jahanian + + Radar 5276085 + * c-parser.c (c_parser_binary_expression) : objc_generate_weak_read + replaced with call to objc_build_weak_reference_tree + * c-typeck.c (build_modify_expr, c_objc_common_truthvalue_conversion): + objc_remove_weak_read replaced with call to objc_weak_reference_expr. + * c-common.h (objc_weak_reference_expr, + objc_build_weak_reference_tree) : New decl. + (objc_generate_weak_read, objc_remove_weak_read): remove. + * stub-objc.c (objc_weak_reference_expr, + objc_build_weak_reference_tree): New stub. + (objc_generate_weak_read, objc_remove_weak_read): remove. + +2007-05-23 Fariborz Jahanian + + Radar 5195402 + * c-format.c (handle_format_arg_attribute): Check for NSString * + and CFStringRef as valid formatting types. + (check_format_string): Ditto. + * c-common.h (objc_check_format_nsstring, + objc_check_cfstringref_type): New decls. + * stub-objc.c (objc_check_nsstring_pointer_type): New stub. + * config/darwin-c.c (objc_check_cfstringref_type): New + (objc_check_format_cfstring): Call objc_check_cfstringref_type + for valid CFStringRef argument type. + * config/darwin-protos.h (objc_check_cfstringref_type): New decl. + * config/darwin.h (CFSTRING_TYPE_CHECK): New macro. + +2007-05-18 Fariborz Jahanian + + Radar 5202926 + * c-common.h (objc_anonymous_local_objc_name): New decl. + * config/darwin-protos.h (objc_anonymous_local_objc_name): Decl. + * stub-objc.c (objc_anonymous_local_objc_name): New stub. + * config/darwin.h (ASM_OUTPUT_LABELREF) Call + objc_anonymous_local_objc_name. + +2007-05-07 Fariborz Jahanian + + Radar 4157812 + * c-common.h (objc_build_keyword_decl): Takes a new argument. + * stub-objc.c (objc_build_keyword_decl): Ditto. + * c-parser.c (c_parser_objc_method_decl): Recognize optional + method's argument attribute. + (c_parser_objc_method_decl): Handle errornous selector. + +2007-05-02 Fariborz Jahanian + + Radar 4502186 + * c-typeck.c (convert_for_assignment): Remove synthesized 'volatile' + type before doing type comparison. + +2007-03-29 Fariborz Jahanian + + Radar 4564694 + * c-parse.c (c_parser_objc_class_instance_variables): Add @package + support to syntax. + * c-common.h (RID_AT_PACKAGE): Add + +2007-03-29 Fariborz Jahanian + + Radar 4947014 - objc atomic property + * c-common.h (RID_NONATOMIC): Add + * c-parse.c (c_parser_objc_property_attribute) : Recognize 'nonatomic' + as new property. + +2007-03-23 Fariborz Jahanian + + Radar 4985544 + * c-format.c (enum format_type): New entry for NSString format. + (format_typ): Has a new entry for NSString format. + (decode_format_attr): Error on use of NSString format on a + non-objective-c program. + (objc_check_nsformat_arg): New. + (check_format_info): Call back for NSString is objc_check_nsformat_arg + (handle_format_attribute): Use objc_check_format_nsstring for + NSString format. + * c-common.h (objc_NSString_format): New decl. + (objc_check_format_nsstring): New decl. + * stub-objc.c (objc_NSString_format, objc_check_format_nsstring): New + stubs. + * config/darwin-protos.h (darwin_cfstring_type_node): New decl. + * config/darwin.c (darwin_cfstring_type_node): New + * config/darwin.h (TARGET_CFSTRING_P): New macro + +2007-03-23 Fariborz Jahanian + + Radar 4985544 + * c-format.c (enum format_type): New entry for NSString format. + (format_typ): Has a new entry for NSString format. + (decode_format_attr): Error on use of NSString format on a + non-objective-c program. + (objc_check_nsformat_arg): New. + (check_format_info): Call back for NSString is objc_check_nsformat_arg + (handle_format_attribute): Use objc_check_format_nsstring for + NSString format. + * c-common.h (objc_NSString_format): New decl. + (objc_check_format_nsstring): New decl. + * stub-objc.c (objc_NSString_format, objc_check_format_nsstring): New + stubs. + * config/darwin-protos.h (darwin_cfstring_type_node): New decl. + * config/darwin.c (darwin_cfstring_type_node): New + * config/darwin.h (TARGET_CFSTRING_P): New macro + +2007-03-22 Fariborz Jahanian + + Radar 4965989 + * c-parser.c (c_parser_objc_class_definition): Add supprt for anonymous + category syntax. + +2007-03-21 Fariborz Jahanian + + Radar 2848255 + * c-parser.c (c_parser_objc_try_catch_statement): Parse @catch(...). + * c.opt: Add -fobjc-zerocost-exceptions option. + * c-opts.c (c_common_post_options): Set the flags for + -fobjc-zerocost-exceptions. + * c-common.h: Add some declarations. + * stub-objc.c (objc2_valid_objc_catch_type, objc2_build_throw_call): + New stubs. + * config/darwin.h (OBJC_FLAG_OBJC_ABI): Check for proper + use of -fobjc-zerocost-exceptions option. + +2006-11-06 Fariborz Jahanian + + Radar 4781080 (part 2) + * targhooks.c (default_objc_fpreturn_msgcall): Takes 2nd argument. + * targhooks.h (default_objc_fpreturn_msgcall): Changed Decl. + * target.h (objc_fpreturn_msgcall): Changed Decl. + * config/i386/i386.h (OBJC_FPRETURN_MSGCALL): Changed Decl. + * config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): Changed Decl. + * config/i386/i386.c (ix86_objc_fpreturn_msgcall): Changed definition. +2006-09-15 Fariborz Jahanian + + Radar 4727659 + * c-common.c (handle_noreturn_attribute): Handle method_decl + nodes as well. + +2006-09-01 Fariborz Jahanian + + Radar 4712269 + * c-common.h (objc_build_incr_decr_setter_call): New decl. + * stub-objc.c (objc_build_incr_decr_setter_call): New stub. + * c-typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call + for potential ince/decr pre/post expressions involving properties. + +2006-08-31 Fariborz Jahanian + + Radar 4697411 + * c-common.h (objc_volatilize_component_ref): New decl. + * c-typeck.c (build_component_ref): Call objc_volatilize_component_ref. + * stub-objc.c (objc_volatilize_component_ref): New stub. + +2006-07-18 Fariborz Jahanian + + Radar 4592503 + * c-decl.c (finish_struct): Check on illegal use of __weak + on struct fields. + * decl.c (start_decl): Check on illegal use of __weak on + variable declarations. + * stub-objc.c (objc_checkon_weak_attribute): New stub. + * c-common.h (objc_checkon_weak_attribute): New decl. + +2006-06-26 Fariborz Jahanian + + Radar 4591909 + * c-parse.in: New/modified grammar for new attributes in + properties. + (yylexname): Change to recognize new attribute terminals. + * c-common.h (RID_DYNAMIC): New enum declaration. + +2006-07-14 Fariborz Jahanian + + Radar 4621020 + * c-parse.in: Added 'weak' attribute keyword for @property. + * c-common.h: 'weak' related declarations. + +2006-05-18 Fariborz Jahanian + + Radar 4548636 (objc attributes on class) + * c-parse.in: Add attribute non-terminal before + AT_INTERFACE. + * c-common.h (objc_start_class_interface): New argument added. + * stub-objc.c (objc_start_class_interface): Ditto. + +2006-05-16 Fariborz Jahanian + + Radar 4547045 + * c-gimplify.c (obj_reuse_bc_block): Removed. + (objc_pop_label, objc_push_label): New. + (gimplify_c_loop): Fix up foreach's innerloop break label. + +2006-04-26 Fariborz Jahanian + + Radar 3803157 (method attributes) + * c-parse.in: Add grammar support for declaring + attribute for objc methods. + * c-common.c (handle_deprecated_attribute): Recognize + objc methods as valid declarations. + (handle_unavailable_attribute): Ditto. + * c-common.h: Bunch of new extern declarations. + * stub-objc.c (objc_add_method_declaration, objc_start_method_definition): + Added new argument. + (objc_method_decl): New stub. + +2006-04-12 Fariborz Jahanian + + Radar 4507230 + * c-common.h (objc_type_valid_for_messaging): Declare. + * stub-objc.c (objc_type_valid_for_messaging): New stub. + +2006-04-06 Fariborz Jahanian + + Radar 4436866 + (Missing copies attribute) + * c-parse.in: Add grammer for 'copies' attribute. + * c-common.h (RID_COPIES): New enumerator. + +2006-03-27 Fariborz Jahanian + + Radar 4133425 + * c-common.h (objc_diagnose_private_ivar): New decl. + * stub-objc.c (objc_diagnose_private_ivar): New stub. + * c-decl.c (undeclared_variable): Issue disnostic on + private 'ivar' access. + +2006-03-27 Fariborz Jahanian + + Radar 4491608 + * c-typeck.c (convert_arguments): function name must come from 'selector' + when diagnosing 'too many arguments'. + +2006-03-23 Fariborz Jahanian + + Radar 4193359 + * c-typeck.c (convert_for_assignment): Remove Objective-C EH machinery + 'volatile' qualifier before doing type comparison. + +2006-02-28 Fariborz Jahanian + + Radar 4441049 + * c-common.h (objc_v2_bitfield_ivar_bitpos): New decl. + * expr.h (objc_v2_bitfield_ivar_bitpos): New decl. + * stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub. + * expr.c (get_inner_reference): Compute ivar's bitfield bit offset. + +2006-02-15 Fariborz Jahanian Radar 4445586 * c-common.def (DO_STMT): Takes an extra argument. +2006-02-02 Fariborz Jahanian + + Radar 4426814 + * c-parse.in (cast_expr): generate objc_read_weak call on + each __weak object in the expession. + * c-typeck.c (build_modify_expr): Undo the call to objc_read_weak + on LHS expression. + * c-objc-common.c (c_objc_common_truthvalue_conversion): Generate + objc_read_weak call before generating tree for !exp, etc. + * c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl. + * stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs. + +2005-12-15 Fariborz Jahanian + + Radar 4229905 + * c-typeck.c (build_conditional_expr): Call objc_have_common_type when + looking for objective-c common pointer types. + * c-common.h objc_have_common_type): New declaration. + * stub-objc.c (objc_have_common_type): New stub. + +2005-12-05 Mike Stump + + Radar 4357979 + * doc/invoke.texi (C Dialect Options): Improve -fnested-functions wording. + * doc/extend.texi (Nested Functions): Note that on darwin nested + functions are off by default. + +2005-11-08 Fariborz Jahanian + + Radar 4330422 + + * c-common.h (objc_non_volatilized_type): New declaration + * stub-objc.c (objc_non_volatilized_type): New stub. + +2005-10-12 Fariborz Jahanian + + Radar 4291785 + + * c-common.h (objc_get_interface_ivars): New declaration + (objc_detect_field_duplicates): Ditto. + * c-decl.c (finish_struct): Check for duplicate among + flattened fields if objective-c. + * stub-objc.c (objc_get_interface_ivars): New stub. + (objc_detect_field_duplicates): Ditto. + +2005-09-28 Devang Patel + + Radar 4258406 + * c-parse.in (nested_function): Report an error, instead of a warning. + (nontype_nested_function): Same. + * c.opt (Wnested-funcs): Remove. + * doc/invoke.texi: Remove Wnested-funcs documentations. + +2005-08-03 Fariborz Jahanian + + Radar 4188876 + * c-typeck.c (pop_init_level): Issue diagnostic on non-constant + vector initializers. + +2005-06-22 Ziemowit Laski + + Radar 4154928 + * c-common.h (objc_common_type): New prototype. + * c-typeck.c (build_conditional_expr): For two ObjC pointer types, + use their ObjC common type. + * stub-objc.c (objc_common_type): New stub. + /* APPLE LOCAL merge marger */ /* Stuff under is in fsf mainline, but not in the 4.2 branch */ Modified: head/contrib/gcc/attribs.c ============================================================================== --- head/contrib/gcc/attribs.c Sun Jan 5 00:32:38 2014 (r260310) +++ head/contrib/gcc/attribs.c Sun Jan 5 00:43:28 2014 (r260311) @@ -216,7 +216,8 @@ decl_attributes (tree *node, tree attrib if (spec->function_type_required && TREE_CODE (*anode) != FUNCTION_TYPE && TREE_CODE (*anode) != METHOD_TYPE) { - if (TREE_CODE (*anode) == POINTER_TYPE + /* APPLE LOCAL radar 6246527 */ + if ((TREE_CODE (*anode) == POINTER_TYPE || TREE_CODE (*anode) == BLOCK_POINTER_TYPE) && (TREE_CODE (TREE_TYPE (*anode)) == FUNCTION_TYPE || TREE_CODE (TREE_TYPE (*anode)) == METHOD_TYPE)) { @@ -323,6 +324,14 @@ decl_attributes (tree *node, tree attrib if (fn_ptr_tmp) { + /* APPLE LOCAL begin radar 6246527 */ + if (DECL_P (*node) && TREE_TYPE (*node) && + TREE_CODE (TREE_TYPE (*node)) == BLOCK_POINTER_TYPE) + /* Rebuild the block pointer type and put it in the + appropriate place. */ + fn_ptr_tmp = build_block_pointer_type (fn_ptr_tmp); + else + /* APPLE LOCAL end radar 6246527 */ /* Rebuild the function pointer type and put it in the appropriate place. */ fn_ptr_tmp = build_pointer_type (fn_ptr_tmp); Modified: head/contrib/gcc/c-common.c ============================================================================== --- head/contrib/gcc/c-common.c Sun Jan 5 00:32:38 2014 (r260310) +++ head/contrib/gcc/c-common.c Sun Jan 5 00:43:28 2014 (r260311) @@ -552,6 +552,8 @@ static tree handle_cleanup_attribute (tr static tree handle_warn_unused_result_attribute (tree *, tree, tree, int, bool *); static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *); +/* APPLE LOCAL radar 5932809 - copyable byref blocks */ +static tree handle_blocks_attribute (tree *, tree, tree, int, bool *); static void check_function_nonnull (tree, tree); static void check_nonnull_arg (void *, tree, unsigned HOST_WIDE_INT); @@ -607,7 +609,8 @@ const struct attribute_spec c_common_att handle_section_attribute }, { "aligned", 0, 1, false, false, false, handle_aligned_attribute }, - { "weak", 0, 0, true, false, false, + /* APPLE LOCAL weak types 5954418 */ + { "weak", 0, 0, false, false, false, handle_weak_attribute }, { "alias", 1, 1, true, false, false, handle_alias_attribute }, @@ -650,6 +653,8 @@ const struct attribute_spec c_common_att handle_warn_unused_result_attribute }, { "sentinel", 0, 1, false, true, true, handle_sentinel_attribute }, + /* APPLE LOCAL radar 5932809 - copyable byref blocks */ + { "blocks", 1, 1, true, false, false, handle_blocks_attribute }, { NULL, 0, 0, false, false, false, NULL } }; @@ -4259,7 +4264,10 @@ handle_noreturn_attribute (tree *node, t tree type = TREE_TYPE (*node); /* See FIXME comment in c_common_attribute_table. */ - if (TREE_CODE (*node) == FUNCTION_DECL) + /* APPLE LOCAL begin radar 4727659 */ + if (TREE_CODE (*node) == FUNCTION_DECL + || objc_method_decl (TREE_CODE (*node))) + /* APPLE LOCAL end radar 4727659 */ TREE_THIS_VOLATILE (*node) = 1; else if (TREE_CODE (type) == POINTER_TYPE && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE) @@ -4267,6 +4275,14 @@ handle_noreturn_attribute (tree *node, t = build_pointer_type (build_type_variant (TREE_TYPE (type), TYPE_READONLY (TREE_TYPE (type)), 1)); + /* APPLE LOCAL begin radar 6237713 */ + else if (TREE_CODE (type) == BLOCK_POINTER_TYPE + && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE) + TREE_TYPE (*node) + = build_block_pointer_type + (build_type_variant (TREE_TYPE (type), + TYPE_READONLY (TREE_TYPE (type)), 1)); + /* APPLE LOCAL end radar 6237713 */ else { warning (OPT_Wattributes, "%qE attribute ignored", name); @@ -4893,6 +4909,23 @@ handle_weak_attribute (tree *node, tree if (TREE_CODE (*node) == FUNCTION_DECL || TREE_CODE (*node) == VAR_DECL) declare_weak (*node); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 00:46:32 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 22D4BA33; Sun, 5 Jan 2014 00:46:32 +0000 (UTC) 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 0F3D810CB; Sun, 5 Jan 2014 00:46: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 s050kVc5090115; Sun, 5 Jan 2014 00:46:31 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s050kVLI090114; Sun, 5 Jan 2014 00:46:31 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401050046.s050kVLI090114@svn.freebsd.org> From: Adrian Chadd Date: Sun, 5 Jan 2014 00:46:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260312 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 00:46:32 -0000 Author: adrian Date: Sun Jan 5 00:46:31 2014 New Revision: 260312 URL: http://svnweb.freebsd.org/changeset/base/260312 Log: Move the retune notification print to a debug print. Yes, I still have to do the retune. But I'm giving in to many people pestering me (very gently!) about this. Tested: * Intel Centrino 6205 Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Sun Jan 5 00:43:28 2014 (r260311) +++ head/sys/dev/iwn/if_iwn.c Sun Jan 5 00:46:31 2014 (r260312) @@ -5894,7 +5894,7 @@ iwn_check_rx_recovery(struct iwn_softc * * if ((delta * 100 / msecs) > threshold) */ if (thresh > 0 && (delta_cck + delta_ofdm + delta_ht) * 100 > thresh) { - device_printf(sc->sc_dev, + DPRINTF(sc, IWN_DEBUG_ANY, "%s: PLCP error threshold raw (%d) comparison (%d) " "over limit (%d); retune!\n", __func__, From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 01:07:14 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id ECAD42E9; Sun, 5 Jan 2014 01:07:14 +0000 (UTC) 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 D6FC31205; Sun, 5 Jan 2014 01:07: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 s0517EmJ098267; Sun, 5 Jan 2014 01:07:14 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0517EEG098265; Sun, 5 Jan 2014 01:07:14 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201401050107.s0517EEG098265@svn.freebsd.org> From: Gavin Atkinson Date: Sun, 5 Jan 2014 01:07:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260313 - in head/sys: contrib/dev/iwn modules/iwnfw modules/iwnfw/iwn135 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 01:07:15 -0000 Author: gavin Date: Sun Jan 5 01:07:14 2014 New Revision: 260313 URL: http://svnweb.freebsd.org/changeset/base/260313 Log: Add firmware version 18.168.6.1 (API version 6) for Intel Centrino Wireless-N 135 wireless adapters, soon to be supported by iwn(4). Committed using: Laptop with Centrino 135 chipset Obtained from: wireless.kernel.org firmware downloads Added: head/sys/contrib/dev/iwn/iwlwifi-135-6-18.168.6.1.fw.uu head/sys/modules/iwnfw/iwn135/ head/sys/modules/iwnfw/iwn135/Makefile (contents, props changed) Modified: head/sys/modules/iwnfw/Makefile Added: head/sys/contrib/dev/iwn/iwlwifi-135-6-18.168.6.1.fw.uu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/iwn/iwlwifi-135-6-18.168.6.1.fw.uu Sun Jan 5 01:07:14 2014 (r260313) @@ -0,0 +1,12344 @@ +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-135-6-18.168.6.1.fw +AAAAAElXTAoxMzUgZncgdjE4LjE2OC42LjEgYnVpbGQgMAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQaoEgAAAAABAAAAAAAAAAEAAAD8ogIAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwEA9BtpIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBC +JBw0CiKAP4AACHsKIwA3Xg4ACEomAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAAwhQHggIECH +AAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzI +s/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTd +K/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATcFN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c +8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAgFBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHG +sCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiAD +AeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEEG4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA +4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQRBQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8E +GwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3GgAKwvGIGauBihDQdgFAXY4HjPcaAArC8YgbO4 +urgYofkGYBRk2AoiQIAA2e4AAQAvJgDwSiZAAE4ABgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAv +JgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAIm +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 +57oS9AgUAzHPdYAA0OGpcVZ5QIFQcAX0QpFwcgbyR4nnuvfzgNgD8AaJwcXgf6LA8cDPcoAAGt8y +aDZ5MWKiwUDBQcCLcAjZntoe29YLYA8Yu6LA0cDgfuB+4HjxwAjIlbgIGhgwCcibuAkaGDALyIq4 +jbiQuAsaGDDPcIAA8CIDgBiIgeAM9AvIz3EAAFAsrLgLGhgwcgqgBw/Y0cDgfvHA4cUIdT6Iz3CA +AKwWQIBAJQAUA7k1eVlhkgkgEAramg/v/6lwEQLP/uB48cClwUHAQsEMHAAxEBxAMc9xgAB8njQZ +wA8wGQAPLBnADigZgA4kGUAOz3CAAHyeIBhAC89wgAB8nhwYAAvPcIAAfJ4YGMAKz3CAAHyeFBiA +Cs9wgAB8nhAYwAjPcIAAfJ4MGIAIz3CAAHyeCBhACM9xgAAAnoAZAAh8GcAHeBmAB3QZQAdwGQAH +bBkAB2gZgAZkGUAGYBkABlwZwAVYGYAFVBlABVAZAAVMGcAESBmABEQZQARAGQAE76HOoa2hjKEs +GcACKBmAAiQZQAIgGQACHBnAARgZgAEUGUABEBkAAWOhaiAAA9gZAABqIMAC1BkAAGoggALQGQAA +aiBAAcgZAABqIAABxBkAAGogwADAGQAAaiCAALwZAABqIEAAuBkAAGogAAC0GQAAaiCAAcwZAABA +2J+4z3GfALj/HaHPcKD+AAAWoVMjwAQFIIAPsP4AABahGIFTJ801UyXENVMmxTWUuBihQMMBwALB +17oMFAYwqXNaCeAGEBQHMOIPYA8A2M9xoADIOy6BngrgBn3YlglABM9wAACt3tYJAAEI2ADZMgpg +B5m57QYAEOB48cDmD4/+z3KAAPApgOHPdYAA/GYO8gCiAIWA4BP0NgigAQ/YDgrgCAjYAdgApQvw +AN7AouYOYAEP2L4J4AgI2MClEQDP/uB4z3GAAPQtAIEc2s9zgACcCUCgQoNVIsAJAaGgEgAAjbig +GgAAz3CAADwLpBoAAJwSAAFngwShVSJADQOhQCIAB3Z4BYig4Az0z3CAAJQJAJBIdIAkRBMArB7b +A/AY22KhVSJADXhgBaGpAmAPKHDgePHAKg+P/s9wgACMFQOAgOAP8s9ynwC4/x2iz3GAACAhBIEB +4LO4tbi4uAShFqLPcIAAQAlAgM92gAAEEqCGBCKDDw8AAOAEI4EPAQAAABJpZHgHfaCmmHUEIo4P +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 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 01:54:13 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 112773A6; Sun, 5 Jan 2014 01:54:13 +0000 (UTC) Received: from mail-ea0-x22f.google.com (mail-ea0-x22f.google.com [IPv6:2a00:1450:4013:c01::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0700314F8; Sun, 5 Jan 2014 01:54:11 +0000 (UTC) Received: by mail-ea0-f175.google.com with SMTP id z10so7248437ead.6 for ; Sat, 04 Jan 2014 17:54:10 -0800 (PST) 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=LDgN3yEwYupxc0zkuMscE63oq1MrTD7cj91YnjrP+8M=; b=DrcBj6UVXblfB7aTRgYm5qlHHiyW+DC4mAesvKpWux/Xu8ZZNAxMSaxnX1TJ/blAtZ xDJidf1DsPHygtzj6JDvae/X4FnyQxjqzElnrG6oWnVFbQJ4wZXR0AgdfbT63cjKM9jC +2R10VgnUdro0GdaM6OBHlbca977C8+/MjhcgDoVnJcBIZJKAV9M2N34WPihOCpBPOIi CPGfX+BheXUVH5UCVB/GFX8+r0CNGq8TwsJ9Y9+dS/xop3Mj8S5pzsaG9iE8s8mqqEbc MyJrZRtpVUWJPgh5HLUp0DAUTVrhxnc7F/7r67EXGpHiCvCGi7ubUPaR+USkjRsRbwwU eTDg== MIME-Version: 1.0 X-Received: by 10.15.54.130 with SMTP id t2mr9327929eew.72.1388886850363; Sat, 04 Jan 2014 17:54:10 -0800 (PST) Sender: hiren.panchasara@gmail.com Received: by 10.14.2.66 with HTTP; Sat, 4 Jan 2014 17:54:10 -0800 (PST) In-Reply-To: <201401040448.s044mwsF026117@svn.freebsd.org> References: <201401040448.s044mwsF026117@svn.freebsd.org> Date: Sat, 4 Jan 2014 17:54:10 -0800 X-Google-Sender-Auth: oiqls0A2-89CH9fX8X-iLTSj-Zg Message-ID: Subject: Re: svn commit: r260252 - in stable/9: share/man/man4 sys/amd64/conf sys/conf sys/dev/bxe sys/i386/conf sys/modules/bxe From: hiren panchasara To: Eric Davis Content-Type: text/plain; charset=UTF-8 Cc: svn-src-stable@freebsd.org, svn-src-all , src-committers , svn-src-stable-9@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 01:54:13 -0000 On Fri, Jan 3, 2014 at 8:48 PM, Eric Davis wrote: > Author: edavis > Date: Sat Jan 4 04:48:58 2014 > New Revision: 260252 > URL: http://svnweb.freebsd.org/changeset/base/260252 > > Log: > MFC Broadcom 10Gb bxe driver Thanks a lot! cheers, Hiren From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 10:41:44 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6522838A; Sun, 5 Jan 2014 10:41:44 +0000 (UTC) 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 51014142F; Sun, 5 Jan 2014 10:41: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 s05AfiCX019046; Sun, 5 Jan 2014 10:41:44 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Afhkx019042; Sun, 5 Jan 2014 10:41:43 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401051041.s05Afhkx019042@svn.freebsd.org> From: Hans Petter Selasky Date: Sun, 5 Jan 2014 10:41:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260315 - head/lib/libusb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 10:41:44 -0000 Author: hselasky Date: Sun Jan 5 10:41:43 2014 New Revision: 260315 URL: http://svnweb.freebsd.org/changeset/base/260315 Log: Implement two new libusb API functions. PR: usb/185454 MFC after: 2 weeks Modified: head/lib/libusb/Makefile head/lib/libusb/libusb.3 head/lib/libusb/libusb.h head/lib/libusb/libusb10_io.c Modified: head/lib/libusb/Makefile ============================================================================== --- head/lib/libusb/Makefile Sun Jan 5 02:00:05 2014 (r260314) +++ head/lib/libusb/Makefile Sun Jan 5 10:41:43 2014 (r260315) @@ -130,6 +130,8 @@ MLINKS += libusb.3 libusb_event_handler_ MLINKS += libusb.3 libusb_lock_event_waiters.3 MLINKS += libusb.3 libusb_unlock_event_waiters.3 MLINKS += libusb.3 libusb_wait_for_event.3 +MLINKS += libusb.3 libusb_handle_events_timeout_completed.3 +MLINKS += libusb.3 libusb_handle_events_completed.3 MLINKS += libusb.3 libusb_handle_events_timeout.3 MLINKS += libusb.3 libusb_handle_events.3 MLINKS += libusb.3 libusb_handle_events_locked.3 Modified: head/lib/libusb/libusb.3 ============================================================================== --- head/lib/libusb/libusb.3 Sun Jan 5 02:00:05 2014 (r260314) +++ head/lib/libusb/libusb.3 Sun Jan 5 10:41:43 2014 (r260315) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 7, 2013 +.Dd January 5, 2014 .Dt LIBUSB 3 .Os .Sh NAME @@ -485,11 +485,40 @@ transfer completes or another thread sto timeout expired. .Pp .Ft int +.Fn libusb_handle_events_timeout_completed "libusb_context *ctx" "struct timeval *tv" "int *completed" +Handle any pending events by checking if timeouts have expired and by +checking the set of file descriptors for activity. +If the +.Fa completed +argument is not equal to NULL, this function will +loop until a transfer completion callback sets the variable pointed to +by the +.Fa completed +argument to non-zero. +If the +.Fa tv +argument is not equal to NULL, this function will return +LIBUSB_ERROR_TIMEOUT after the given timeout. +Returns 0 on success, or a LIBUSB_ERROR code on failure or timeout. +.Pp +.Ft int +.Fn libusb_handle_events_completed "libusb_context *ctx" "int *completed" +Handle any pending events by checking the set of file descriptors for activity. +If the +.Fa completed +argument is not equal to NULL, this function will +loop until a transfer completion callback sets the variable pointed to +by the +.Fa completed +argument to non-zero. +Returns 0 on success, or a LIBUSB_ERROR code on failure. +.Pp +.Ft int .Fn libusb_handle_events_timeout "libusb_context *ctx" "struct timeval *tv" Handle any pending events by checking if timeouts have expired and by checking the set of file descriptors for activity. Returns 0 on success, or a -LIBUSB_ERROR code on failure. +LIBUSB_ERROR code on failure or timeout. .Pp .Ft int .Fn libusb_handle_events "libusb_context *ctx" @@ -508,7 +537,7 @@ Must be called with the event lock held. Determine the next internal timeout that libusb needs to handle. Returns 0 if there are no pending timeouts, 1 if a timeout was returned, or a LIBUSB_ERROR -code on failure. +code on failure or timeout. .Pp .Ft void .Fn libusb_set_pollfd_notifiers "libusb_context *ctx" "libusb_pollfd_added_cb added_cb" "libusb_pollfd_removed_cb remove_cb" "void *user_data" Modified: head/lib/libusb/libusb.h ============================================================================== --- head/lib/libusb/libusb.h Sun Jan 5 02:00:05 2014 (r260314) +++ head/lib/libusb/libusb.h Sun Jan 5 10:41:43 2014 (r260315) @@ -438,6 +438,8 @@ int libusb_event_handler_active(libusb_c void libusb_lock_event_waiters(libusb_context * ctx); void libusb_unlock_event_waiters(libusb_context * ctx); int libusb_wait_for_event(libusb_context * ctx, struct timeval *tv); +int libusb_handle_events_timeout_completed(libusb_context * ctx, struct timeval *tv, int *completed); +int libusb_handle_events_completed(libusb_context * ctx, int *completed); int libusb_handle_events_timeout(libusb_context * ctx, struct timeval *tv); int libusb_handle_events(libusb_context * ctx); int libusb_handle_events_locked(libusb_context * ctx, struct timeval *tv); Modified: head/lib/libusb/libusb10_io.c ============================================================================== --- head/lib/libusb/libusb10_io.c Sun Jan 5 02:00:05 2014 (r260314) +++ head/lib/libusb/libusb10_io.c Sun Jan 5 10:41:43 2014 (r260315) @@ -336,29 +336,50 @@ libusb_wait_for_event(libusb_context *ct } int -libusb_handle_events_timeout(libusb_context *ctx, struct timeval *tv) +libusb_handle_events_timeout_completed(libusb_context *ctx, + struct timeval *tv, int *completed) { - int err; + int err = 0; ctx = GET_CONTEXT(ctx); - DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_handle_events_timeout enter"); + DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_handle_events_timeout_completed enter"); libusb_lock_events(ctx); - err = libusb_handle_events_locked(ctx, tv); + while (1) { + if (completed != NULL) { + if (*completed != 0 || err != 0) + break; + } + err = libusb_handle_events_locked(ctx, tv); + if (completed == NULL) + break; + } libusb_unlock_events(ctx); - DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_handle_events_timeout leave"); + DPRINTF(ctx, LIBUSB_DEBUG_FUNCTION, "libusb_handle_events_timeout_completed exit"); return (err); } int +libusb_handle_events_completed(libusb_context *ctx, int *completed) +{ + return (libusb_handle_events_timeout_completed(ctx, NULL, completed)); +} + +int +libusb_handle_events_timeout(libusb_context *ctx, struct timeval *tv) +{ + return (libusb_handle_events_timeout_completed(ctx, tv, NULL)); +} + +int libusb_handle_events(libusb_context *ctx) { - return (libusb_handle_events_timeout(ctx, NULL)); + return (libusb_handle_events_timeout_completed(ctx, NULL, NULL)); } int @@ -371,8 +392,9 @@ libusb_handle_events_locked(libusb_conte if (libusb_event_handling_ok(ctx)) { err = libusb10_handle_events_sub(ctx, tv); } else { - libusb_wait_for_event(ctx, tv); - err = 0; + err = libusb_wait_for_event(ctx, tv); + if (err != 0) + err = LIBUSB_ERROR_TIMEOUT; } return (err); } From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 10:49:57 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C6D81545; Sun, 5 Jan 2014 10:49:57 +0000 (UTC) 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 B213A1488; Sun, 5 Jan 2014 10:49: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 s05AnvAx020045; Sun, 5 Jan 2014 10:49:57 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05AnuSc020041; Sun, 5 Jan 2014 10:49:56 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401051049.s05AnuSc020041@svn.freebsd.org> From: Hans Petter Selasky Date: Sun, 5 Jan 2014 10:49:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260316 - stable/9/lib/libusb X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 10:49:58 -0000 Author: hselasky Date: Sun Jan 5 10:49:56 2014 New Revision: 260316 URL: http://svnweb.freebsd.org/changeset/base/260316 Log: MFC r235128: Add missing LibUSB 1.0 API function: libusb_get_string_descriptor(). Modified: stable/9/lib/libusb/Makefile stable/9/lib/libusb/libusb.3 stable/9/lib/libusb/libusb.h stable/9/lib/libusb/libusb10_desc.c Directory Properties: stable/9/lib/ (props changed) stable/9/lib/libusb/ (props changed) Modified: stable/9/lib/libusb/Makefile ============================================================================== --- stable/9/lib/libusb/Makefile Sun Jan 5 10:41:43 2014 (r260315) +++ stable/9/lib/libusb/Makefile Sun Jan 5 10:49:56 2014 (r260316) @@ -77,6 +77,7 @@ MLINKS += libusb.3 libusb_get_active_con MLINKS += libusb.3 libusb_get_config_descriptor.3 MLINKS += libusb.3 libusb_get_config_descriptor_by_value.3 MLINKS += libusb.3 libusb_free_config_descriptor.3 +MLINKS += libusb.3 libusb_get_string_descriptor.3 MLINKS += libusb.3 libusb_get_string_descriptor_ascii.3 MLINKS += libusb.3 libusb_parse_ss_endpoint_comp.3 MLINKS += libusb.3 libusb_free_ss_endpoint_comp.3 Modified: stable/9/lib/libusb/libusb.3 ============================================================================== --- stable/9/lib/libusb/libusb.3 Sun Jan 5 10:41:43 2014 (r260315) +++ stable/9/lib/libusb/libusb.3 Sun Jan 5 10:49:56 2014 (r260316) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 20, 2013 +.Dd January 5, 2014 .Dt LIBUSB 3 .Os .Sh NAME @@ -327,6 +327,12 @@ LIBUSB_ERROR code on failure. Free a configuration descriptor. .Pp .Ft int +.Fn libusb_get_string_descriptor "libusb_device_handle *devh" "uint8_t desc_idx" "uint16_t langid" "unsigned char *data" "int length" +Retrieve a string descriptor in raw format. +Returns the number of bytes actually transferred on success +or a negative LIBUSB_ERROR code on failure. +.Pp +.Ft int .Fn libusb_get_string_descriptor_ascii "libusb_device_handle *devh" "uint8_t desc_idx" "unsigned char *data" "int length" Retrieve a string descriptor in C style ASCII. Returns the positive number of bytes in the resulting ASCII string Modified: stable/9/lib/libusb/libusb.h ============================================================================== --- stable/9/lib/libusb/libusb.h Sun Jan 5 10:41:43 2014 (r260315) +++ stable/9/lib/libusb/libusb.h Sun Jan 5 10:49:56 2014 (r260316) @@ -401,6 +401,7 @@ int libusb_get_active_config_descriptor( int libusb_get_config_descriptor(libusb_device * dev, uint8_t config_index, struct libusb_config_descriptor **config); int libusb_get_config_descriptor_by_value(libusb_device * dev, uint8_t bConfigurationValue, struct libusb_config_descriptor **config); void libusb_free_config_descriptor(struct libusb_config_descriptor *config); +int libusb_get_string_descriptor(libusb_device_handle * devh, uint8_t desc_index, uint16_t langid, unsigned char *data, int length); int libusb_get_string_descriptor_ascii(libusb_device_handle * devh, uint8_t desc_index, uint8_t *data, int length); int libusb_get_descriptor(libusb_device_handle * devh, uint8_t desc_type, uint8_t desc_index, uint8_t *data, int length); int libusb_parse_ss_endpoint_comp(const void *buf, int len, struct libusb_ss_endpoint_companion_descriptor **ep_comp); Modified: stable/9/lib/libusb/libusb10_desc.c ============================================================================== --- stable/9/lib/libusb/libusb10_desc.c Sun Jan 5 10:41:43 2014 (r260315) +++ stable/9/lib/libusb/libusb10_desc.c Sun Jan 5 10:49:56 2014 (r260316) @@ -294,6 +294,25 @@ libusb_free_config_descriptor(struct lib } int +libusb_get_string_descriptor(libusb_device_handle *pdev, + uint8_t desc_index, uint16_t langid, unsigned char *data, + int length) +{ + if (pdev == NULL || data == NULL || length < 1) + return (LIBUSB_ERROR_INVALID_PARAM); + + if (length > 65535) + length = 65535; + + /* put some default data into the destination buffer */ + data[0] = 0; + + return (libusb_control_transfer(pdev, LIBUSB_ENDPOINT_IN, + LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_STRING << 8) | desc_index, + langid, data, length, 1000)); +} + +int libusb_get_string_descriptor_ascii(libusb_device_handle *pdev, uint8_t desc_index, unsigned char *data, int length) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 10:52:58 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7A7927CC; Sun, 5 Jan 2014 10:52:58 +0000 (UTC) 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 65A511508; Sun, 5 Jan 2014 10:52: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 s05AqwMc023009; Sun, 5 Jan 2014 10:52:58 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Aqvkh023005; Sun, 5 Jan 2014 10:52:57 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401051052.s05Aqvkh023005@svn.freebsd.org> From: Hans Petter Selasky Date: Sun, 5 Jan 2014 10:52:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260317 - stable/8/lib/libusb X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 10:52:58 -0000 Author: hselasky Date: Sun Jan 5 10:52:57 2014 New Revision: 260317 URL: http://svnweb.freebsd.org/changeset/base/260317 Log: MFC r235128: Add missing LibUSB 1.0 API function: libusb_get_string_descriptor(). Modified: stable/8/lib/libusb/Makefile stable/8/lib/libusb/libusb.3 stable/8/lib/libusb/libusb.h stable/8/lib/libusb/libusb10_desc.c Directory Properties: stable/8/lib/ (props changed) stable/8/lib/libusb/ (props changed) Modified: stable/8/lib/libusb/Makefile ============================================================================== --- stable/8/lib/libusb/Makefile Sun Jan 5 10:49:56 2014 (r260316) +++ stable/8/lib/libusb/Makefile Sun Jan 5 10:52:57 2014 (r260317) @@ -75,6 +75,7 @@ MLINKS += libusb.3 libusb_get_active_con MLINKS += libusb.3 libusb_get_config_descriptor.3 MLINKS += libusb.3 libusb_get_config_descriptor_by_value.3 MLINKS += libusb.3 libusb_free_config_descriptor.3 +MLINKS += libusb.3 libusb_get_string_descriptor.3 MLINKS += libusb.3 libusb_get_string_descriptor_ascii.3 MLINKS += libusb.3 libusb_parse_ss_endpoint_comp.3 MLINKS += libusb.3 libusb_free_ss_endpoint_comp.3 Modified: stable/8/lib/libusb/libusb.3 ============================================================================== --- stable/8/lib/libusb/libusb.3 Sun Jan 5 10:49:56 2014 (r260316) +++ stable/8/lib/libusb/libusb.3 Sun Jan 5 10:52:57 2014 (r260317) @@ -26,7 +26,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 12, 2012 +.Dd May 7, 2012 .Dt LIBUSB 3 .Os .Sh NAME @@ -314,6 +314,12 @@ LIBUSB_ERROR code on failure. Free a configuration descriptor. .Pp .Ft int +.Fn libusb_get_string_descriptor "libusb_device_handle *devh" "uint8_t desc_idx" "uint16_t langid" "unsigned char *data" "int length" +Retrieve a string descriptor in raw format. +Returns the number of bytes actually transferred on success +or a negative LIBUSB_ERROR code on failure. +.Pp +.Ft int .Fn libusb_get_string_descriptor_ascii "libusb_device_handle *devh" "uint8_t desc_idx" "unsigned char *data" "int length" Retrieve a string descriptor in C style ASCII. Returns the positive number of bytes in the resulting ASCII string Modified: stable/8/lib/libusb/libusb.h ============================================================================== --- stable/8/lib/libusb/libusb.h Sun Jan 5 10:49:56 2014 (r260316) +++ stable/8/lib/libusb/libusb.h Sun Jan 5 10:52:57 2014 (r260317) @@ -399,6 +399,7 @@ int libusb_get_active_config_descriptor( int libusb_get_config_descriptor(libusb_device * dev, uint8_t config_index, struct libusb_config_descriptor **config); int libusb_get_config_descriptor_by_value(libusb_device * dev, uint8_t bConfigurationValue, struct libusb_config_descriptor **config); void libusb_free_config_descriptor(struct libusb_config_descriptor *config); +int libusb_get_string_descriptor(libusb_device_handle * devh, uint8_t desc_index, uint16_t langid, unsigned char *data, int length); int libusb_get_string_descriptor_ascii(libusb_device_handle * devh, uint8_t desc_index, uint8_t *data, int length); int libusb_get_descriptor(libusb_device_handle * devh, uint8_t desc_type, uint8_t desc_index, uint8_t *data, int length); int libusb_parse_ss_endpoint_comp(const void *buf, int len, struct libusb_ss_endpoint_companion_descriptor **ep_comp); Modified: stable/8/lib/libusb/libusb10_desc.c ============================================================================== --- stable/8/lib/libusb/libusb10_desc.c Sun Jan 5 10:49:56 2014 (r260316) +++ stable/8/lib/libusb/libusb10_desc.c Sun Jan 5 10:52:57 2014 (r260317) @@ -294,6 +294,25 @@ libusb_free_config_descriptor(struct lib } int +libusb_get_string_descriptor(libusb_device_handle *pdev, + uint8_t desc_index, uint16_t langid, unsigned char *data, + int length) +{ + if (pdev == NULL || data == NULL || length < 1) + return (LIBUSB_ERROR_INVALID_PARAM); + + if (length > 65535) + length = 65535; + + /* put some default data into the destination buffer */ + data[0] = 0; + + return (libusb_control_transfer(pdev, LIBUSB_ENDPOINT_IN, + LIBUSB_REQUEST_GET_DESCRIPTOR, (LIBUSB_DT_STRING << 8) | desc_index, + langid, data, length, 1000)); +} + +int libusb_get_string_descriptor_ascii(libusb_device_handle *pdev, uint8_t desc_index, unsigned char *data, int length) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 11:46:07 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 74275FFD; Sun, 5 Jan 2014 11:46:07 +0000 (UTC) Received: from mailrelay011.isp.belgacom.be (mailrelay011.isp.belgacom.be [195.238.6.178]) by mx1.freebsd.org (Postfix) with ESMTP id 8F6E2182C; Sun, 5 Jan 2014 11:46:06 +0000 (UTC) X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGABxFyVJR8nf4/2dsb2JhbABYgws4Sbk3gQsXdIIlAQEBBDocIxALFAQJJQ8qHgaIGwEIw08Xjw8HhDcEmBaBMZBlgW+BPzs Received: from 248.119-242-81.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([81.242.119.248]) by relay.skynet.be with ESMTP; 05 Jan 2014 12:45:58 +0100 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.14.7/8.14.7) with ESMTP id s05BjvXX001404; Sun, 5 Jan 2014 12:45:57 +0100 (CET) (envelope-from tijl@FreeBSD.org) Date: Sun, 5 Jan 2014 12:45:57 +0100 From: Tijl Coosemans To: "Pedro F. Giffuni" Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty Message-ID: <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> In-Reply-To: <201401050043.s050hSMI089553@svn.freebsd.org> References: <201401050043.s050hSMI089553@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 11:46:07 -0000 On Sun, 5 Jan 2014 00:43:28 +0000 (UTC) Pedro F. Giffuni wrote: > Author: pfg > Date: Sun Jan 5 00:43:28 2014 > New Revision: 260311 > URL: http://svnweb.freebsd.org/changeset/base/260311 > > Log: > gcc: Add support for Apple's Block extension > > Block objects [1] are a C-level syntactic and runtime feature. They > are similar to standard C functions, but in addition to executable > code they may also contain variable bindings to automatic (stack) > or managed (heap) memory. A block can therefore maintain a set of > state (data) that it can use to impact behavior when executed. > > This port is based on Apple's GCC 5646 with some bugfixes from > Apple GCC 5666.3. It has some small differences with the support > in clang, which remains the recommended compiler. > > Perhaps the most notable difference is that in GCC that __block > is not actually a keyword, but a macro. There will be workaround > for this issue in a near future. Other issues can be consulted in > the clang documentation [2] > > For better compatiblity with Apple's GCC and llvm-gcc some related > fixes and features from Apple have been included. Support for the > non-standard nested functions in GCC is now off by default. Some ports use nested functions. From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 11:58:08 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3C0422C9; Sun, 5 Jan 2014 11:58:08 +0000 (UTC) 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 2799918C4; Sun, 5 Jan 2014 11:58: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 s05Bw7L1045970; Sun, 5 Jan 2014 11:58:07 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Bw7nq045969; Sun, 5 Jan 2014 11:58:07 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401051158.s05Bw7nq045969@svn.freebsd.org> From: Luigi Rizzo Date: Sun, 5 Jan 2014 11:58:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260318 - stable/9/sys/dev/e1000 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 11:58:08 -0000 Author: luigi Date: Sun Jan 5 11:58:07 2014 New Revision: 260318 URL: http://svnweb.freebsd.org/changeset/base/260318 Log: MFC revision 259907 use the correct netmap <-> nic slot mapping on the transmit ring for 'lem'. This bug would manifest only in netmap mode and on packets transmitted after a NIC reset while netmap mode is active. Modified: stable/9/sys/dev/e1000/if_lem.c Modified: stable/9/sys/dev/e1000/if_lem.c ============================================================================== --- stable/9/sys/dev/e1000/if_lem.c Sun Jan 5 10:52:57 2014 (r260317) +++ stable/9/sys/dev/e1000/if_lem.c Sun Jan 5 11:58:07 2014 (r260318) @@ -2678,7 +2678,7 @@ lem_setup_transmit_structures(struct ada void *addr; addr = PNMB(slot + si, &paddr); - adapter->tx_desc_base[si].buffer_addr = htole64(paddr); + adapter->tx_desc_base[i].buffer_addr = htole64(paddr); /* reload the map for netmap mode */ netmap_load_map(adapter->txtag, tx_buffer->map, addr); } From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 13:55:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0308EDD6; Sun, 5 Jan 2014 13:55:34 +0000 (UTC) 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 E23BE121B; Sun, 5 Jan 2014 13:55: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 s05DtXlm098074; Sun, 5 Jan 2014 13:55:33 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05DtXP5098073; Sun, 5 Jan 2014 13:55:33 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401051355.s05DtXP5098073@svn.freebsd.org> From: Gleb Smirnoff Date: Sun, 5 Jan 2014 13:55:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260319 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 13:55:34 -0000 Author: glebius Date: Sun Jan 5 13:55:33 2014 New Revision: 260319 URL: http://svnweb.freebsd.org/changeset/base/260319 Log: Merge r260188 from head: Fix regression from r249894. Now we pass "gw" as argument to if_output method, thus for multicast case we need it to point at "dst". PR: 185395 Modified: stable/10/sys/netinet/ip_output.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/ip_output.c ============================================================================== --- stable/10/sys/netinet/ip_output.c Sun Jan 5 11:58:07 2014 (r260318) +++ stable/10/sys/netinet/ip_output.c Sun Jan 5 13:55:33 2014 (r260319) @@ -331,6 +331,12 @@ again: if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { m->m_flags |= M_MCAST; /* + * IP destination address is multicast. Make sure "gw" + * still points to the address in "ro". (It may have been + * changed to point to a gateway address, above.) + */ + gw = dst; + /* * See if the caller provided any multicast options */ if (imo != NULL) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 15:33:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 237E48D2; Sun, 5 Jan 2014 15:33:34 +0000 (UTC) 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 0EDE819C3; Sun, 5 Jan 2014 15:33: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 s05FXXhg042269; Sun, 5 Jan 2014 15:33:33 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05FXX0j042268; Sun, 5 Jan 2014 15:33:33 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401051533.s05FXX0j042268@svn.freebsd.org> From: Ian Lepore Date: Sun, 5 Jan 2014 15:33:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260320 - head/sys/arm/tegra X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 15:33:34 -0000 Author: ian Date: Sun Jan 5 15:33:33 2014 New Revision: 260320 URL: http://svnweb.freebsd.org/changeset/base/260320 Log: Use the common armv6 fdt_bus_tag defintion instead of an essentially identical local copy of it. Deleted: head/sys/arm/tegra/bus_space.c Modified: head/sys/arm/tegra/files.tegra2 Modified: head/sys/arm/tegra/files.tegra2 ============================================================================== --- head/sys/arm/tegra/files.tegra2 Sun Jan 5 13:55:33 2014 (r260319) +++ head/sys/arm/tegra/files.tegra2 Sun Jan 5 15:33:33 2014 (r260320) @@ -2,6 +2,7 @@ arm/arm/bus_space_asm_generic.S standard arm/arm/bus_space_generic.c standard +arm/arm/bus_space-v6.c standard arm/arm/cpufunc_asm_armv5.S standard arm/arm/cpufunc_asm_arm11.S standard arm/arm/cpufunc_asm_armv7.S standard @@ -10,7 +11,6 @@ arm/arm/irq_dispatch.S standard arm/arm/gic.c standard arm/arm/mpcore_timer.c standard -arm/tegra/bus_space.c standard arm/tegra/common.c standard arm/tegra/tegra2_machdep.c standard From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 15:39:39 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E9FCCD54; Sun, 5 Jan 2014 15:39:38 +0000 (UTC) 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 D367319F2; Sun, 5 Jan 2014 15:39: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 s05Fdcqx043540; Sun, 5 Jan 2014 15:39:38 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05FdbTC043533; Sun, 5 Jan 2014 15:39:37 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401051539.s05FdbTC043533@svn.freebsd.org> From: Dimitry Andric Date: Sun, 5 Jan 2014 15:39:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260321 - in stable: 10/sys/conf 10/sys/modules/drm2/radeonkms 10/sys/modules/ibcore 10/sys/modules/ipoib 10/sys/modules/mlx4 10/sys/modules/mlx4ib 10/sys/modules/mlxen 10/sys/modules/m... X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 15:39:39 -0000 Author: dim Date: Sun Jan 5 15:39:37 2014 New Revision: 260321 URL: http://svnweb.freebsd.org/changeset/base/260321 Log: Revert MFC of r260102 for now, until I can merge the required fix from head. This should fix building modules which require -fms-extensions to compile them with gcc. Modified: stable/9/sys/conf/kern.pre.mk stable/9/sys/modules/mlx4/Makefile stable/9/sys/modules/mlx4ib/Makefile stable/9/sys/modules/mlxen/Makefile stable/9/sys/modules/mthca/Makefile Directory Properties: stable/9/sys/ (props changed) Changes in other areas also in this revision: Modified: stable/10/sys/conf/kern.pre.mk stable/10/sys/modules/drm2/radeonkms/Makefile stable/10/sys/modules/ibcore/Makefile stable/10/sys/modules/ipoib/Makefile stable/10/sys/modules/mlx4/Makefile stable/10/sys/modules/mlx4ib/Makefile stable/10/sys/modules/mlxen/Makefile stable/10/sys/modules/mthca/Makefile stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile stable/10/sys/ofed/drivers/net/mlx4/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/9/sys/conf/kern.pre.mk ============================================================================== --- stable/9/sys/conf/kern.pre.mk Sun Jan 5 15:33:33 2014 (r260320) +++ stable/9/sys/conf/kern.pre.mk Sun Jan 5 15:39:37 2014 (r260321) @@ -106,8 +106,6 @@ ASM_CFLAGS= -x assembler-with-cpp -DLOCO .if ${COMPILER_TYPE} == "clang" CLANG_NO_IAS= -no-integrated-as -.else -GCC_MS_EXTENSIONS= -fms-extensions .endif .if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 @@ -159,7 +157,7 @@ NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLA # Infiniband C flags. Correct include paths and omit errors that linux # does not honor. OFEDINCLUDES= -I$S/ofed/include/ -OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith -fms-extensions OFEDCFLAGS= ${CFLAGS:N-I*} ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR} OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF} OFED_C= ${OFED_C_NOIMP} ${.IMPSRC} Modified: stable/9/sys/modules/mlx4/Makefile ============================================================================== --- stable/9/sys/modules/mlx4/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/9/sys/modules/mlx4/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -26,4 +26,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/9/sys/modules/mlx4ib/Makefile ============================================================================== --- stable/9/sys/modules/mlx4ib/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/9/sys/modules/mlx4ib/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -24,4 +24,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/9/sys/modules/mlxen/Makefile ============================================================================== --- stable/9/sys/modules/mlxen/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/9/sys/modules/mlxen/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -25,4 +25,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/9/sys/modules/mthca/Makefile ============================================================================== --- stable/9/sys/modules/mthca/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/9/sys/modules/mthca/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 15:39:41 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3883DD55; Sun, 5 Jan 2014 15:39:41 +0000 (UTC) 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 21BC319F3; Sun, 5 Jan 2014 15:39: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 s05FdfQx043557; Sun, 5 Jan 2014 15:39:41 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Fddno043545; Sun, 5 Jan 2014 15:39:39 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401051539.s05Fddno043545@svn.freebsd.org> From: Dimitry Andric Date: Sun, 5 Jan 2014 15:39:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260321 - in stable: 10/sys/conf 10/sys/modules/drm2/radeonkms 10/sys/modules/ibcore 10/sys/modules/ipoib 10/sys/modules/mlx4 10/sys/modules/mlx4ib 10/sys/modules/mlxen 10/sys/modules/m... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 15:39:41 -0000 Author: dim Date: Sun Jan 5 15:39:37 2014 New Revision: 260321 URL: http://svnweb.freebsd.org/changeset/base/260321 Log: Revert MFC of r260102 for now, until I can merge the required fix from head. This should fix building modules which require -fms-extensions to compile them with gcc. Modified: stable/10/sys/conf/kern.pre.mk stable/10/sys/modules/drm2/radeonkms/Makefile stable/10/sys/modules/ibcore/Makefile stable/10/sys/modules/ipoib/Makefile stable/10/sys/modules/mlx4/Makefile stable/10/sys/modules/mlx4ib/Makefile stable/10/sys/modules/mlxen/Makefile stable/10/sys/modules/mthca/Makefile stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile stable/10/sys/ofed/drivers/net/mlx4/Makefile Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/9/sys/conf/kern.pre.mk stable/9/sys/modules/mlx4/Makefile stable/9/sys/modules/mlx4ib/Makefile stable/9/sys/modules/mlxen/Makefile stable/9/sys/modules/mthca/Makefile Directory Properties: stable/9/sys/ (props changed) Modified: stable/10/sys/conf/kern.pre.mk ============================================================================== --- stable/10/sys/conf/kern.pre.mk Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/conf/kern.pre.mk Sun Jan 5 15:39:37 2014 (r260321) @@ -99,8 +99,6 @@ ASM_CFLAGS= -x assembler-with-cpp -DLOCO .if ${COMPILER_TYPE} == "clang" CLANG_NO_IAS= -no-integrated-as -.else -GCC_MS_EXTENSIONS= -fms-extensions .endif .if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 @@ -159,7 +157,7 @@ NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLA # Infiniband C flags. Correct include paths and omit errors that linux # does not honor. OFEDINCLUDES= -I$S/ofed/include/ -OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith -fms-extensions OFEDCFLAGS= ${CFLAGS:N-I*} ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR} OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF} OFED_C= ${OFED_C_NOIMP} ${.IMPSRC} Modified: stable/10/sys/modules/drm2/radeonkms/Makefile ============================================================================== --- stable/10/sys/modules/drm2/radeonkms/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/drm2/radeonkms/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -103,6 +103,9 @@ SRCS += \ iicbus_if.h \ pci_if.h -CFLAGS += -I${.CURDIR}/../../../dev/drm2/radeon ${GCC_MS_EXTENSIONS} +CFLAGS += -I${.CURDIR}/../../../dev/drm2/radeon +.if ${COMPILER_TYPE} == "gcc" +CFLAGS += -fms-extensions +.endif .include Modified: stable/10/sys/modules/ibcore/Makefile ============================================================================== --- stable/10/sys/modules/ibcore/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/ibcore/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -20,7 +20,7 @@ CFLAGS+= -DINET6 -DINET -DOFED .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions CWARNFLAGS.cm.c= -Wno-unused-function CWARNFLAGS+= ${CWARNFLAGS.${.IMPSRC:T}} Modified: stable/10/sys/modules/ipoib/Makefile ============================================================================== --- stable/10/sys/modules/ipoib/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/ipoib/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/10/sys/modules/mlx4/Makefile ============================================================================== --- stable/10/sys/modules/mlx4/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/mlx4/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -27,6 +27,7 @@ opt_inet6.h: .include CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions CWARNFLAGS.mcg.c= -Wno-unused CWARNFLAGS+= ${CWARNFLAGS.${.IMPSRC:T}} Modified: stable/10/sys/modules/mlx4ib/Makefile ============================================================================== --- stable/10/sys/modules/mlx4ib/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/mlx4ib/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -31,4 +31,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/10/sys/modules/mlxen/Makefile ============================================================================== --- stable/10/sys/modules/mlxen/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/mlxen/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -25,4 +25,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/10/sys/modules/mthca/Makefile ============================================================================== --- stable/10/sys/modules/mthca/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/modules/mthca/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile ============================================================================== --- stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions Modified: stable/10/sys/ofed/drivers/net/mlx4/Makefile ============================================================================== --- stable/10/sys/ofed/drivers/net/mlx4/Makefile Sun Jan 5 15:33:33 2014 (r260320) +++ stable/10/sys/ofed/drivers/net/mlx4/Makefile Sun Jan 5 15:39:37 2014 (r260321) @@ -30,5 +30,5 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 16:24:18 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 65B06ADF for ; Sun, 5 Jan 2014 16:24:18 +0000 (UTC) Received: from nm18-vm0.bullet.mail.bf1.yahoo.com (nm18-vm0.bullet.mail.bf1.yahoo.com [98.139.213.138]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 092E81F42 for ; Sun, 5 Jan 2014 16:24:17 +0000 (UTC) Received: from [66.196.81.170] by nm18.bullet.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 16:18:19 -0000 Received: from [68.142.230.69] by tm16.bullet.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 16:18:19 -0000 Received: from [127.0.0.1] by smtp226.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 16:18:19 -0000 X-Yahoo-Newman-Id: 366229.38343.bm@smtp226.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: xaviVHMVM1novPg5784mGZl.lXLLP9oFfNq.96tvMGtLgwT a.ooEinZ7m4mdjepfbi1OOSHqipbFrDg1lWf729pD5ZHMIKiuKVNKfRI2aX2 hQuo2hskuDtePeLEhMgYi0SimH_0Y.A9B1.RcicLVXEeVZNPT33z8MQtOlsR 8NE2XjaBEUy34GPfZLLVcVsr9E5HrR47ve7ElckI757N69E2zLkW9tsufYUD DwDPL7QGYKOaUiZlIp1vbN_zDSaQ7pjugxc8NFdGoQcQ5v0.H6dNFwCqnuZd uXHxDDt9u84bI4OK51DsmSHsQ5pSDWAkreyag.BFRxK5Z19fsrGr8KuHhbv8 ._zKex8d369..FaE.PicjMnM_iKZDEtz3JJXctkNqT7OLxX9qGCt3IY1JOsE lu4kJethJc3sxn.uFWIh1SeijPd.d8b0mNEmti2KNbstLNOUi0k0IrLm0fq9 JCHbSGjAwm0txg5tLVpco7lAZHIZMDGLsD6kPxpK4aoZJrNCNn5F1NCWFg_z 21o.bqOspwBI9ogtSr7pqqJsWqbQzUDG_gPl7.nvmIAnCFjPhFjW4fw7Id35 FQ6rYRXZP.xKUD18omLlqGJ0qIglx1Ct49I6PynYc3G80icE2NIPb8he7xku naxZPygmOL1sn.JvfNsAE.uqJ7dU- X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf X-Rocket-Received: from [192.168.0.102] (pfg@190.157.126.109 with plain [98.138.105.21]) by smtp226.mail.bf1.yahoo.com with SMTP; 05 Jan 2014 16:18:19 +0000 UTC Message-ID: <52C985C7.9060406@FreeBSD.org> Date: Sun, 05 Jan 2014 11:18:15 -0500 From: Pedro Giffuni User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Tijl Coosemans Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty References: <201401050043.s050hSMI089553@svn.freebsd.org> <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> In-Reply-To: <20140105124557.5dd8395a@kalimero.tijl.coosemans.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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 16:24:18 -0000 On 05.01.2014 06:45, Tijl Coosemans wrote: > On Sun, 5 Jan 2014 00:43:28 +0000 (UTC) Pedro F. Giffuni wrote: >> Author: pfg >> Date: Sun Jan 5 00:43:28 2014 >> New Revision: 260311 >> URL: http://svnweb.freebsd.org/changeset/base/260311 >> >> Log: >> gcc: Add support for Apple's Block extension >> >> Block objects [1] are a C-level syntactic and runtime feature. They >> are similar to standard C functions, but in addition to executable >> code they may also contain variable bindings to automatic (stack) >> or managed (heap) memory. A block can therefore maintain a set of >> state (data) that it can use to impact behavior when executed. >> >> This port is based on Apple's GCC 5646 with some bugfixes from >> Apple GCC 5666.3. It has some small differences with the support >> in clang, which remains the recommended compiler. >> >> Perhaps the most notable difference is that in GCC that __block >> is not actually a keyword, but a macro. There will be workaround >> for this issue in a near future. Other issues can be consulted in >> the clang documentation [2] >> >> For better compatiblity with Apple's GCC and llvm-gcc some related >> fixes and features from Apple have been included. Support for the >> non-standard nested functions in GCC is now off by default. > Some ports use nested functions. We now have the Apple-GCC compatible -fnested-functions, however, this is of little relevance because on FreeBSD 10+ the default compiler (clang) doesn't support them at all. Most such ports should already be using the fsf gcc but I am not going to find out which do or dont; I simply won't merge this to 9 until there is a good reason to do it. * Pedro. *Anyone working on a GCD-enabled version of grep or sort? :). From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 16:40:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6B27C7BA; Sun, 5 Jan 2014 16:40:42 +0000 (UTC) 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 57FCA10B7; Sun, 5 Jan 2014 16:40: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 s05Gegvt069961; Sun, 5 Jan 2014 16:40:42 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Gegmh069960; Sun, 5 Jan 2014 16:40:42 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401051640.s05Gegmh069960@svn.freebsd.org> From: Dimitry Andric Date: Sun, 5 Jan 2014 16:40:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260322 - head/share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 16:40:42 -0000 Author: dim Date: Sun Jan 5 16:40:41 2014 New Revision: 260322 URL: http://svnweb.freebsd.org/changeset/base/260322 Log: In addition to r260102, also define GCC_MS_EXTENSIONS in bsd.sys.mk, since kernel module builds do not use kern.pre.mk. MFC after: 3 days X-MFC-With: r260102 Modified: head/share/mk/bsd.sys.mk Modified: head/share/mk/bsd.sys.mk ============================================================================== --- head/share/mk/bsd.sys.mk Sun Jan 5 15:39:37 2014 (r260321) +++ head/share/mk/bsd.sys.mk Sun Jan 5 16:40:41 2014 (r260322) @@ -123,6 +123,7 @@ CFLAGS+= -Qunused-arguments CFLAGS+= ${CFLAGS.clang} CXXFLAGS+= ${CXXFLAGS.clang} .else # !CLANG +GCC_MS_EXTENSIONS= -fms-extensions CFLAGS+= ${CFLAGS.gcc} CXXFLAGS+= ${CXXFLAGS.gcc} .endif # CLANG From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 16:42:31 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C81A3934; Sun, 5 Jan 2014 16:42:31 +0000 (UTC) Received: from mailrelay002.isp.belgacom.be (mailrelay002.isp.belgacom.be [195.238.6.175]) by mx1.freebsd.org (Postfix) with ESMTP id 82F551116; Sun, 5 Jan 2014 16:42:30 +0000 (UTC) X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlYGAJ2KyVJR8nf4/2dsb2JhbABYgws4Sbk2gQsXdIIlAQEBBDocIxALDgYECSUPKh4GiBsBCMNTF48PB4Q3BJgWgTGQZYFvgT87 Received: from 248.119-242-81.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([81.242.119.248]) by relay.skynet.be with ESMTP; 05 Jan 2014 17:42:22 +0100 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.14.7/8.14.7) with ESMTP id s05GgLxB002819; Sun, 5 Jan 2014 17:42:21 +0100 (CET) (envelope-from tijl@FreeBSD.org) Date: Sun, 5 Jan 2014 17:42:21 +0100 From: Tijl Coosemans To: Pedro Giffuni Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty Message-ID: <20140105174221.220d9a13@kalimero.tijl.coosemans.org> In-Reply-To: <52C985C7.9060406@FreeBSD.org> References: <201401050043.s050hSMI089553@svn.freebsd.org> <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> <52C985C7.9060406@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, bapt@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 16:42:31 -0000 On Sun, 05 Jan 2014 11:18:15 -0500 Pedro Giffuni wrote: > On 05.01.2014 06:45, Tijl Coosemans wrote: >> On Sun, 5 Jan 2014 00:43:28 +0000 (UTC) Pedro F. Giffuni wrote: >>> Author: pfg >>> Date: Sun Jan 5 00:43:28 2014 >>> New Revision: 260311 >>> URL: http://svnweb.freebsd.org/changeset/base/260311 >>> >>> Log: >>> gcc: Add support for Apple's Block extension >>> >>> Block objects [1] are a C-level syntactic and runtime feature. They >>> are similar to standard C functions, but in addition to executable >>> code they may also contain variable bindings to automatic (stack) >>> or managed (heap) memory. A block can therefore maintain a set of >>> state (data) that it can use to impact behavior when executed. >>> >>> This port is based on Apple's GCC 5646 with some bugfixes from >>> Apple GCC 5666.3. It has some small differences with the support >>> in clang, which remains the recommended compiler. >>> >>> Perhaps the most notable difference is that in GCC that __block >>> is not actually a keyword, but a macro. There will be workaround >>> for this issue in a near future. Other issues can be consulted in >>> the clang documentation [2] >>> >>> For better compatiblity with Apple's GCC and llvm-gcc some related >>> fixes and features from Apple have been included. Support for the >>> non-standard nested functions in GCC is now off by default. >> Some ports use nested functions. > > We now have the Apple-GCC compatible -fnested-functions, > however, this is of little relevance because on FreeBSD 10+ > the default compiler (clang) doesn't support them at all. > > Most such ports should already be using the fsf gcc but > I am not going to find out which do or dont; I simply won't > merge this to 9 until there is a good reason to do it. * Doesn't this affect architectures where clang isn't the default yet? You can grep the ports tree for nestedfct which currently implies USE_GCC=any, i.e. use base system gcc when available, otherwise use lang/gcc port. Do you think it's best to change this into USE_GCC=yes, i.e. always use lang/gcc port? From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 16:45:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 05A2CCD1; Sun, 5 Jan 2014 16:45:35 +0000 (UTC) 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 CCB071138; Sun, 5 Jan 2014 16:45: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 s05GjYwR072614; Sun, 5 Jan 2014 16:45:34 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05GjYJm072613; Sun, 5 Jan 2014 16:45:34 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401051645.s05GjYJm072613@svn.freebsd.org> From: Ian Lepore Date: Sun, 5 Jan 2014 16:45:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260323 - head/sys/arm/tegra X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 16:45:35 -0000 Author: ian Date: Sun Jan 5 16:45:34 2014 New Revision: 260323 URL: http://svnweb.freebsd.org/changeset/base/260323 Log: Eliminate use of fdt_immr_addr(), it's not needed for this SoC. Convert to the newer arm_devmap_add_entry() routine for creating device mappings. Modified: head/sys/arm/tegra/tegra2_machdep.c Modified: head/sys/arm/tegra/tegra2_machdep.c ============================================================================== --- head/sys/arm/tegra/tegra2_machdep.c Sun Jan 5 16:40:41 2014 (r260322) +++ head/sys/arm/tegra/tegra2_machdep.c Sun Jan 5 16:45:34 2014 (r260323) @@ -50,17 +50,12 @@ __FBSDID("$FreeBSD$"); #include -/* FIXME move to tegrareg.h */ -#define TEGRA2_BASE 0xE0000000 /* KVM base for peripherials */ -#define TEGRA2_UARTA_VA_BASE 0xE0006000 -#define TEGRA2_UARTA_PA_BASE 0x70006000 - #define TEGRA2_CLK_RST_PA_BASE 0x60006000 #define TEGRA2_CLK_RST_OSC_FREQ_DET_REG 0x58 #define TEGRA2_CLK_RST_OSC_FREQ_DET_STAT_REG 0x5C -#define OSC_FREQ_DET_TRIG (1<<31) -#define OSC_FREQ_DET_BUSY (1<<31) +#define OSC_FREQ_DET_TRIG (1U<<31) +#define OSC_FREQ_DET_BUSY (1U<<31) #if 0 static int @@ -107,15 +102,12 @@ vm_offset_t initarm_lastaddr(void) { - return (fdt_immr_va); + return (arm_devmap_lastaddr()); } void initarm_early_init(void) { - - if (fdt_immr_addr(TEGRA2_BASE) != 0) /* FIXME ???? */ - while (1); } void @@ -128,26 +120,16 @@ initarm_late_init(void) { } -#define FDT_DEVMAP_MAX (1 + 2 + 1 + 1) /* FIXME */ -static struct arm_devmap_entry fdt_devmap[FDT_DEVMAP_MAX] = { - { 0, 0, 0, 0, 0, } -}; - /* - * Construct pmap_devmap[] with DT-derived config data. + * Add a static mapping for the register range that includes the debug uart. + * It's not clear this is needed, but the original code established this mapping + * before conversion to the newer arm_devmap_add_entry() routine. */ int initarm_devmap_init(void) { - int i = 0; - fdt_devmap[i].pd_va = 0xe0000000; - fdt_devmap[i].pd_pa = 0x70000000; - fdt_devmap[i].pd_size = 0x100000; - fdt_devmap[i].pd_prot = VM_PROT_READ | VM_PROT_WRITE; - fdt_devmap[i].pd_cache = PTE_NOCACHE; - i++; - arm_devmap_register_table(&fdt_devmap[0]); + arm_devmap_add_entry(0x70000000, 0x00100000); return (0); } From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 17:29:54 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 31E01959; Sun, 5 Jan 2014 17:29:54 +0000 (UTC) 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 1DB6E138D; Sun, 5 Jan 2014 17:29: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 s05HTrBp089906; Sun, 5 Jan 2014 17:29:53 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05HTrR8089905; Sun, 5 Jan 2014 17:29:53 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201401051729.s05HTrR8089905@svn.freebsd.org> From: Sean Bruno Date: Sun, 5 Jan 2014 17:29:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260324 - stable/10/usr.sbin/mfiutil X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 17:29:54 -0000 Author: sbruno Date: Sun Jan 5 17:29:53 2014 New Revision: 260324 URL: http://svnweb.freebsd.org/changeset/base/260324 Log: MFC r258901: svn r251516 resized the buf argument a bit too much. Pass a hardcoded size of 6 to humanize_number() to resolve this. PR: bin/184405 Submitted by: jhb Modified: stable/10/usr.sbin/mfiutil/mfi_show.c Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/mfiutil/mfi_show.c ============================================================================== --- stable/10/usr.sbin/mfiutil/mfi_show.c Sun Jan 5 16:45:34 2014 (r260323) +++ stable/10/usr.sbin/mfiutil/mfi_show.c Sun Jan 5 17:29:53 2014 (r260324) @@ -320,7 +320,7 @@ print_pd(struct mfi_pd_info *info, int s const char *s; char buf[256]; - humanize_number(buf, sizeof(buf), info->raw_size * 512, "", + humanize_number(buf, 6, info->raw_size * 512, "", HN_AUTOSCALE, HN_B | HN_NOSPACE |HN_DECIMAL); printf("(%6s) ", buf); if (info->state.ddf.v.pd_type.is_foreign) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 17:33:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6DE92C5E; Sun, 5 Jan 2014 17:33:11 +0000 (UTC) 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 5A4471462; Sun, 5 Jan 2014 17:33: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 s05HXBo9093043; Sun, 5 Jan 2014 17:33:11 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05HXBbD093042; Sun, 5 Jan 2014 17:33:11 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201401051733.s05HXBbD093042@svn.freebsd.org> From: Sean Bruno Date: Sun, 5 Jan 2014 17:33:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260325 - stable/9/usr.sbin/mfiutil X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 17:33:11 -0000 Author: sbruno Date: Sun Jan 5 17:33:10 2014 New Revision: 260325 URL: http://svnweb.freebsd.org/changeset/base/260325 Log: MFC r258901: svn r251516 resized the buf argument a bit too much. Pass a hardcoded size of 6 to humanize_number() to resolve this. PR: bin/184405 Submitted by: jhb Modified: stable/9/usr.sbin/mfiutil/mfi_show.c Directory Properties: stable/9/usr.sbin/mfiutil/ (props changed) Modified: stable/9/usr.sbin/mfiutil/mfi_show.c ============================================================================== --- stable/9/usr.sbin/mfiutil/mfi_show.c Sun Jan 5 17:29:53 2014 (r260324) +++ stable/9/usr.sbin/mfiutil/mfi_show.c Sun Jan 5 17:33:10 2014 (r260325) @@ -320,7 +320,7 @@ print_pd(struct mfi_pd_info *info, int s const char *s; char buf[256]; - humanize_number(buf, sizeof(buf), info->raw_size * 512, "", + humanize_number(buf, 6, info->raw_size * 512, "", HN_AUTOSCALE, HN_B | HN_NOSPACE |HN_DECIMAL); printf("(%6s) ", buf); if (info->state.ddf.v.pd_type.is_foreign) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 18:40:07 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D894437F; Sun, 5 Jan 2014 18:40:07 +0000 (UTC) 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 BA74C191D; Sun, 5 Jan 2014 18:40: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 s05Ie7DX019559; Sun, 5 Jan 2014 18:40:07 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Ie6J6019550; Sun, 5 Jan 2014 18:40:06 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401051840.s05Ie6J6019550@svn.freebsd.org> From: Ian Lepore Date: Sun, 5 Jan 2014 18:40:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260326 - in head/sys: arm/lpc dev/uart X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 18:40:07 -0000 Author: ian Date: Sun Jan 5 18:40:06 2014 New Revision: 260326 URL: http://svnweb.freebsd.org/changeset/base/260326 Log: Convert from using fdt_immr style to arm_devmap_add_entry() to make static device mappings. This SoC relied heavily on the fact that all devices were static-mapped at a fixed address, and it (rather bogusly) used bus_space read and write calls passing hard-coded virtual addresses instead of proper bus handles, relying on the fact that the virtual addresses of the mappings were known at compile time, and relying on the implementation details of arm bus_space never changing. All such usage was replaced with calls to bus_space_map() to obtain a proper bus handle for the read/write calls. This required adjusting some of the #define values that map out hardware registers, and some of them were renamed in the process to make it clear which were defining absolute physical addresses and which were defining offsets. (The ones that just define offsets don't appear to be referenced and probably serve no value other than perhaps documentation.) Modified: head/sys/arm/lpc/lpc_gpio.c head/sys/arm/lpc/lpc_machdep.c head/sys/arm/lpc/lpc_mmc.c head/sys/arm/lpc/lpcreg.h head/sys/dev/uart/uart_dev_lpc.c Modified: head/sys/arm/lpc/lpc_gpio.c ============================================================================== --- head/sys/arm/lpc/lpc_gpio.c Sun Jan 5 17:33:10 2014 (r260325) +++ head/sys/arm/lpc/lpc_gpio.c Sun Jan 5 18:40:06 2014 (r260326) @@ -502,12 +502,18 @@ lpc_gpio_get_state(device_t dev, int pin void platform_gpio_init() { + bus_space_tag_t bst; + bus_space_handle_t bsh; + + bst = fdtbus_bs_tag; + /* Preset SPI devices CS pins to one */ - bus_space_write_4(fdtbus_bs_tag, - LPC_GPIO_BASE, LPC_GPIO_P3_OUTP_SET, + bus_space_map(bst, LPC_GPIO_PHYS_BASE, LPC_GPIO_SIZE, 0, &bsh); + bus_space_write_4(bst, bsh, LPC_GPIO_P3_OUTP_SET, 1 << (SSD1289_CS_PIN - LPC_GPIO_GPO_00(0)) | 1 << (SSD1289_DC_PIN - LPC_GPIO_GPO_00(0)) | 1 << (ADS7846_CS_PIN - LPC_GPIO_GPO_00(0))); + bus_space_unmap(bst, bsh, LPC_GPIO_SIZE); } static device_method_t lpc_gpio_methods[] = { Modified: head/sys/arm/lpc/lpc_machdep.c ============================================================================== --- head/sys/arm/lpc/lpc_machdep.c Sun Jan 5 17:33:10 2014 (r260325) +++ head/sys/arm/lpc/lpc_machdep.c Sun Jan 5 18:40:06 2014 (r260326) @@ -57,21 +57,17 @@ __FBSDID("$FreeBSD$"); #include #include -#include vm_offset_t initarm_lastaddr(void) { - return (fdt_immr_va); + return (arm_devmap_lastaddr()); } void initarm_early_init(void) { - - if (fdt_immr_addr(LPC_DEV_BASE) != 0) - while (1); } void @@ -89,28 +85,16 @@ initarm_late_init(void) { } -#define FDT_DEVMAP_MAX (1 + 2 + 1 + 1) -static struct arm_devmap_entry fdt_devmap[FDT_DEVMAP_MAX] = { - { 0, 0, 0, 0, 0, } -}; - /* - * Construct pmap_devmap[] with DT-derived config data. + * Add a single static device mapping. + * The values used were taken from the ranges property of the SoC node in the + * dts file when this code was converted to arm_devmap_add_entry(). */ int initarm_devmap_init(void) { - /* - * IMMR range. - */ - fdt_devmap[0].pd_va = fdt_immr_va; - fdt_devmap[0].pd_pa = fdt_immr_pa; - fdt_devmap[0].pd_size = fdt_immr_size; - fdt_devmap[0].pd_prot = VM_PROT_READ | VM_PROT_WRITE; - fdt_devmap[0].pd_cache = PTE_NOCACHE; - - arm_devmap_register_table(&fdt_devmap[0]); + arm_devmap_add_entry(LPC_DEV_PHYS_BASE, LPC_DEV_SIZE); return (0); } @@ -131,15 +115,24 @@ bus_dma_get_range_nb(void) void cpu_reset(void) { + bus_space_tag_t bst; + bus_space_handle_t bsh; + + bst = fdtbus_bs_tag; + /* Enable WDT */ - bus_space_write_4(fdtbus_bs_tag, - LPC_CLKPWR_BASE, LPC_CLKPWR_TIMCLK_CTRL, + bus_space_map(bst, LPC_CLKPWR_PHYS_BASE, LPC_CLKPWR_SIZE, 0, &bsh); + bus_space_write_4(bst, bsh, LPC_CLKPWR_TIMCLK_CTRL, LPC_CLKPWR_TIMCLK_CTRL_WATCHDOG); + bus_space_unmap(bst, bsh, LPC_CLKPWR_SIZE); /* Instant assert of RESETOUT_N with pulse length 1ms */ - bus_space_write_4(fdtbus_bs_tag, LPC_WDTIM_BASE, LPC_WDTIM_PULSE, 13000); - bus_space_write_4(fdtbus_bs_tag, LPC_WDTIM_BASE, LPC_WDTIM_MCTRL, 0x70); + bus_space_map(bst, LPC_WDTIM_PHYS_BASE, LPC_WDTIM_SIZE, 0, &bsh); + bus_space_write_4(bst, bsh, LPC_WDTIM_PULSE, 13000); + bus_space_write_4(bst, bsh, LPC_WDTIM_MCTRL, 0x70); + bus_space_unmap(bst, bsh, LPC_WDTIM_SIZE); - for (;;); + for (;;) + continue; } Modified: head/sys/arm/lpc/lpc_mmc.c ============================================================================== --- head/sys/arm/lpc/lpc_mmc.c Sun Jan 5 17:33:10 2014 (r260325) +++ head/sys/arm/lpc/lpc_mmc.c Sun Jan 5 18:40:06 2014 (r260326) @@ -507,14 +507,14 @@ lpc_mmc_setup_xfer(struct lpc_mmc_softc if (data->flags & MMC_DATA_READ) { sc->lm_xfer_direction = DIRECTION_READ; lpc_dmac_setup_transfer(sc->lm_dev, LPC_MMC_DMACH_READ, - LPC_SD_BASE + LPC_SD_FIFO, sc->lm_buffer_phys, + LPC_SD_PHYS_BASE + LPC_SD_FIFO, sc->lm_buffer_phys, data_words, 0); } if (data->flags & MMC_DATA_WRITE) { sc->lm_xfer_direction = DIRECTION_WRITE; lpc_dmac_setup_transfer(sc->lm_dev, LPC_MMC_DMACH_WRITE, - sc->lm_buffer_phys, LPC_SD_BASE + LPC_SD_FIFO, + sc->lm_buffer_phys, LPC_SD_PHYS_BASE + LPC_SD_FIFO, data_words, 0); } Modified: head/sys/arm/lpc/lpcreg.h ============================================================================== --- head/sys/arm/lpc/lpcreg.h Sun Jan 5 17:33:10 2014 (r260325) +++ head/sys/arm/lpc/lpcreg.h Sun Jan 5 18:40:06 2014 (r260326) @@ -32,7 +32,6 @@ #define LPC_DEV_PHYS_BASE 0x40000000 #define LPC_DEV_P5_PHYS_BASE 0x20000000 #define LPC_DEV_P6_PHYS_BASE 0x30000000 -#define LPC_DEV_BASE 0xd0000000 #define LPC_DEV_SIZE 0x10000000 /* @@ -88,7 +87,7 @@ /* * Watchdog timer. (from UM10326: LPC32x0 User manual, page 572) */ -#define LPC_WDTIM_BASE (LPC_DEV_BASE + 0x3c000) +#define LPC_WDTIM_PHYS_BASE (LPC_DEV_PHYS_BASE + 0x3c000) #define LPC_WDTIM_INT 0x00 #define LPC_WDTIM_CTRL 0x04 #define LPC_WDTIM_COUNTER 0x08 @@ -97,11 +96,12 @@ #define LPC_WDTIM_EMR 0x14 #define LPC_WDTIM_PULSE 0x18 #define LPC_WDTIM_RES 0x1c +#define LPC_WDTIM_SIZE 0x20 /* * Clocking and power control. (from UM10326: LPC32x0 User manual, page 58) */ -#define LPC_CLKPWR_BASE (LPC_DEV_BASE + 0x4000) +#define LPC_CLKPWR_PHYS_BASE (LPC_DEV_PHYS_BASE + 0x4000) #define LPC_CLKPWR_PWR_CTRL 0x44 #define LPC_CLKPWR_OSC_CTRL 0x4c #define LPC_CLKPWR_SYSCLK_CTRL 0x50 @@ -189,6 +189,7 @@ #define LPC_CLKPWR_UARTCLK_CTRL 0xe4 #define LPC_CLKPWR_POS0_IRAM_CTRL 0x110 #define LPC_CLKPWR_POS1_IRAM_CTRL 0x114 +#define LPC_CLKPWR_SIZE 0x118 /* Additional UART registers in CLKPWR address space. */ #define LPC_CLKPWR_UART_U3CLK 0xd0 @@ -201,9 +202,9 @@ #define LPC_CLKPWR_UART_IRDACLK 0xe0 /* Additional UART registers */ -#define LPC_UART_BASE (LPC_DEV_BASE + 0x80000) -#define LPC_UART_CONTROL_BASE (LPC_DEV_BASE + 0x54000) -#define LPC_UART5_BASE (LPC_DEV_BASE + 0x90000) +#define LPC_UART_BASE 0x80000 +#define LPC_UART_CONTROL_BASE 0x54000 +#define LPC_UART5_BASE 0x90000 #define LPC_UART_CTRL 0x00 #define LPC_UART_CLKMODE 0x04 #define LPC_UART_CLKMODE_UART3(_n) (((_n) & 0x3) << 4) @@ -211,6 +212,7 @@ #define LPC_UART_CLKMODE_UART5(_n) (((_n) & 0x3) << 8) #define LPC_UART_CLKMODE_UART6(_n) (((_n) & 0x3) << 10) #define LPC_UART_LOOP 0x08 +#define LPC_UART_CONTROL_SIZE 0x0c #define LPC_UART_FIFOSIZE 64 /* @@ -236,7 +238,7 @@ /* * MMC/SD controller. (from UM10326: LPC32x0 User manual, page 436) */ -#define LPC_SD_BASE (LPC_DEV_P5_PHYS_BASE + 0x98000) +#define LPC_SD_PHYS_BASE (LPC_DEV_P5_PHYS_BASE + 0x98000) #define LPC_SD_CLK (13 * 1000 * 1000) // 13Mhz #define LPC_SD_POWER 0x00 #define LPC_SD_POWER_OPENDRAIN (1 << 6) @@ -535,7 +537,7 @@ /* * GPIO (from UM10326: LPC32x0 User manual, page 606) */ -#define LPC_GPIO_BASE (LPC_DEV_BASE + 0x28000) +#define LPC_GPIO_PHYS_BASE (LPC_DEV_PHYS_BASE + 0x28000) #define LPC_GPIO_P0_COUNT 8 #define LPC_GPIO_P1_COUNT 24 #define LPC_GPIO_P2_COUNT 13 @@ -564,6 +566,8 @@ #define LPC_GPIO_P3_OUTP_SET 0x04 #define LPC_GPIO_P3_OUTP_CLR 0x08 #define LPC_GPIO_P3_OUTP_STATE 0x0c +#define LPC_GPIO_SIZE 0x80 + /* Aliases for logical pin numbers: */ #define LPC_GPIO_GPI_00(_n) (0 + _n) #define LPC_GPIO_GPI_15(_n) (10 + _n) Modified: head/sys/dev/uart/uart_dev_lpc.c ============================================================================== --- head/sys/dev/uart/uart_dev_lpc.c Sun Jan 5 17:33:10 2014 (r260325) +++ head/sys/dev/uart/uart_dev_lpc.c Sun Jan 5 18:40:06 2014 (r260326) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -43,16 +44,13 @@ __FBSDID("$FreeBSD$"); #include "uart_if.h" #define DEFAULT_RCLK (13 * 1000 * 1000) -#define LPC_UART_NO(_bas) (((_bas->bsh) - LPC_UART_BASE) >> 15) -#define lpc_ns8250_get_auxreg(_bas, _reg) \ - bus_space_read_4((_bas)->bst, LPC_UART_CONTROL_BASE, _reg) -#define lpc_ns8250_set_auxreg(_bas, _reg, _val) \ - bus_space_write_4((_bas)->bst, LPC_UART_CONTROL_BASE, _reg, _val); +static bus_space_handle_t bsh_clkpwr; + #define lpc_ns8250_get_clkreg(_bas, _reg) \ - bus_space_read_4((_bas)->bst, LPC_CLKPWR_BASE, (_reg)) + bus_space_read_4(fdtbus_bs_tag, bsh_clkpwr, (_reg)) #define lpc_ns8250_set_clkreg(_bas, _reg, _val) \ - bus_space_write_4((_bas)->bst, LPC_CLKPWR_BASE, (_reg), (_val)) + bus_space_write_4(fdtbus_bs_tag, bsh_clkpwr, (_reg), (_val)) /* * Clear pending interrupts. THRE is cleared by reading IIR. Data @@ -293,9 +291,12 @@ lpc_ns8250_init(struct uart_bas *bas, in u_long clkmode; /* Enable UART clock */ - clkmode = lpc_ns8250_get_auxreg(bas, LPC_UART_CLKMODE); - lpc_ns8250_set_auxreg(bas, LPC_UART_CLKMODE, - clkmode | LPC_UART_CLKMODE_UART5(1)); + bus_space_map(fdtbus_bs_tag, LPC_CLKPWR_PHYS_BASE, LPC_CLKPWR_SIZE, 0, + &bsh_clkpwr); + clkmode = lpc_ns8250_get_clkreg(bas, LPC_UART_CLKMODE); + lpc_ns8250_set_clkreg(bas, LPC_UART_CLKMODE, clkmode | + LPC_UART_CLKMODE_UART5(1)); + #if 0 /* Work around H/W bug */ uart_setreg(bas, REG_DATA, 0x00); From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 18:47:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 10E8D52F; Sun, 5 Jan 2014 18:47:02 +0000 (UTC) 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 E4EC11991; Sun, 5 Jan 2014 18:47: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 s05Il1pO022500; Sun, 5 Jan 2014 18:47:01 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05IkwE3022468; Sun, 5 Jan 2014 18:46:58 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201401051846.s05IkwE3022468@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 5 Jan 2014 18:46:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260327 - in head/sys: arm/arm arm/include arm/mv dev/fdt dev/uart mips/include powerpc/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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 18:47:02 -0000 Author: nwhitehorn Date: Sun Jan 5 18:46:58 2014 New Revision: 260327 URL: http://svnweb.freebsd.org/changeset/base/260327 Log: Retire machine/fdt.h as a header used by MI code, as its function is now obsolete. This involves the following pieces: - Remove it entirely on PowerPC, where it is not used by MD code either - Remove all references to machine/fdt.h in non-architecture-specific code (aside from uart_cpu_fdt.c, shared by ARM and MIPS, and so is somewhat non-arch-specific). - Fix code relying on header pollution from machine/fdt.h includes - Legacy fdtbus.c (still used on x86 FDT systems) now passes resource requests to its parent (nexus). This allows x86 FDT devices to allocate both memory and IO requests and removes the last notionally MI use of fdtbus_bs_tag. - On those architectures that retain a machine/fdt.h, unused bits like FDT_MAP_IRQ and FDT_INTR_MAX have been removed. Deleted: head/sys/powerpc/include/fdt.h Modified: head/sys/arm/arm/machdep.c head/sys/arm/include/fdt.h head/sys/arm/include/ofw_machdep.h head/sys/arm/mv/mv_machdep.c head/sys/arm/mv/mv_pci.c head/sys/dev/fdt/fdt_common.c head/sys/dev/fdt/fdt_common.h head/sys/dev/fdt/fdt_pci.c head/sys/dev/fdt/fdtbus.c head/sys/dev/fdt/simplebus.c head/sys/dev/uart/uart_bus_fdt.c head/sys/mips/include/fdt.h head/sys/x86/include/fdt.h head/sys/x86/include/ofw_machdep.h Modified: head/sys/arm/arm/machdep.c ============================================================================== --- head/sys/arm/arm/machdep.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/arm/arm/machdep.c Sun Jan 5 18:46:58 2014 (r260327) @@ -92,6 +92,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include Modified: head/sys/arm/include/fdt.h ============================================================================== --- head/sys/arm/include/fdt.h Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/arm/include/fdt.h Sun Jan 5 18:46:58 2014 (r260327) @@ -51,11 +51,6 @@ */ extern bus_space_tag_t fdtbus_bs_tag; -struct mem_region { - vm_offset_t mr_start; - vm_size_t mr_size; -}; - struct arm_devmap_entry; int fdt_localbus_devmap(phandle_t, struct arm_devmap_entry *, int, int *); Modified: head/sys/arm/include/ofw_machdep.h ============================================================================== --- head/sys/arm/include/ofw_machdep.h Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/arm/include/ofw_machdep.h Sun Jan 5 18:46:58 2014 (r260327) @@ -32,6 +32,13 @@ #ifndef _MACHINE_OFW_MACHDEP_H_ #define _MACHINE_OFW_MACHDEP_H_ +#include + typedef uint32_t cell_t; +struct mem_region { + vm_offset_t mr_start; + vm_size_t mr_size; +}; + #endif /* _MACHINE_OFW_MACHDEP_H_ */ Modified: head/sys/arm/mv/mv_machdep.c ============================================================================== --- head/sys/arm/mv/mv_machdep.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/arm/mv/mv_machdep.c Sun Jan 5 18:46:58 2014 (r260327) @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include /* XXX */ Modified: head/sys/arm/mv/mv_pci.c ============================================================================== --- head/sys/arm/mv/mv_pci.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/arm/mv/mv_pci.c Sun Jan 5 18:46:58 2014 (r260327) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include Modified: head/sys/dev/fdt/fdt_common.c ============================================================================== --- head/sys/dev/fdt/fdt_common.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/dev/fdt/fdt_common.c Sun Jan 5 18:46:58 2014 (r260327) @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include Modified: head/sys/dev/fdt/fdt_common.h ============================================================================== --- head/sys/dev/fdt/fdt_common.h Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/dev/fdt/fdt_common.h Sun Jan 5 18:46:58 2014 (r260327) @@ -35,7 +35,6 @@ #include #include #include -#include #define FDT_MEM_REGIONS 8 Modified: head/sys/dev/fdt/fdt_pci.c ============================================================================== --- head/sys/dev/fdt/fdt_pci.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/dev/fdt/fdt_pci.c Sun Jan 5 18:46:58 2014 (r260327) @@ -41,9 +41,11 @@ __FBSDID("$FreeBSD$"); #include #include -#include #if defined(__arm__) +#include +#include #include +#include #endif #include "ofw_bus_if.h" Modified: head/sys/dev/fdt/fdtbus.c ============================================================================== --- head/sys/dev/fdt/fdtbus.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/dev/fdt/fdtbus.c Sun Jan 5 18:46:58 2014 (r260327) @@ -39,8 +39,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include - #include #include @@ -52,11 +50,6 @@ __FBSDID("$FreeBSD$"); static void fdtbus_identify(driver_t *, device_t); static int fdtbus_probe(device_t); -static int fdtbus_activate_resource(device_t, device_t, int, int, - struct resource *); -static int fdtbus_deactivate_resource(device_t, device_t, int, int, - struct resource *); - /* * Bus interface definition. */ @@ -66,8 +59,8 @@ static device_method_t fdtbus_methods[] DEVMETHOD(device_probe, fdtbus_probe), /* Bus interface */ - DEVMETHOD(bus_activate_resource, fdtbus_activate_resource), - DEVMETHOD(bus_deactivate_resource, fdtbus_deactivate_resource), + DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), + DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), DEVMETHOD(bus_config_intr, bus_generic_config_intr), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), @@ -96,33 +89,3 @@ fdtbus_probe(device_t dev) return (BUS_PROBE_NOWILDCARD); } -static int -fdtbus_activate_resource(device_t bus, device_t child, int type, int rid, - struct resource *res) -{ - bus_space_handle_t p; - int error; - - if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { - /* XXX endianess should be set based on SOC node */ - rman_set_bustag(res, fdtbus_bs_tag); - rman_set_bushandle(res, rman_get_start(res)); - - error = bus_space_map(rman_get_bustag(res), - rman_get_bushandle(res), rman_get_size(res), 0, &p); - if (error) - return (error); - rman_set_bushandle(res, p); - } - - return (rman_activate_resource(res)); -} - -static int -fdtbus_deactivate_resource(device_t bus, device_t child, int type, int rid, - struct resource *res) -{ - - return (rman_deactivate_resource(res)); -} - Modified: head/sys/dev/fdt/simplebus.c ============================================================================== --- head/sys/dev/fdt/simplebus.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/dev/fdt/simplebus.c Sun Jan 5 18:46:58 2014 (r260327) @@ -40,8 +40,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include - #include #include #include Modified: head/sys/dev/uart/uart_bus_fdt.c ============================================================================== --- head/sys/dev/uart/uart_bus_fdt.c Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/dev/uart/uart_bus_fdt.c Sun Jan 5 18:46:58 2014 (r260327) @@ -38,7 +38,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include #include #include Modified: head/sys/mips/include/fdt.h ============================================================================== --- head/sys/mips/include/fdt.h Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/mips/include/fdt.h Sun Jan 5 18:46:58 2014 (r260327) @@ -33,17 +33,6 @@ #define _MACHINE_FDT_H_ #include -#include - -/* Max interrupt number */ -#if defined(CPU_RMI) || defined(CPU_NLM) -#define FDT_INTR_MAX XLR_MAX_INTR -#else -#define FDT_INTR_MAX (NHARD_IRQS + NSOFT_IRQS) -#endif - -/* Map phandle/intpin pair to global IRQ number */ -#define FDT_MAP_IRQ(node, pin) (pin) /* * Bus space tag. XXX endianess info needs to be derived from the blob. Modified: head/sys/x86/include/fdt.h ============================================================================== --- head/sys/x86/include/fdt.h Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/x86/include/fdt.h Sun Jan 5 18:46:58 2014 (r260327) @@ -29,24 +29,6 @@ #ifndef _MACHINE_FDT_H_ #define _MACHINE_FDT_H_ -#include -#include - -/* Max interrupt number. */ -#define FDT_INTR_MAX NUM_IO_INTS - -/* Map phandle/intpin pair to global IRQ number */ -#define FDT_MAP_IRQ(node, pin) \ - (panic("%s: FDT_MAP_IRQ(%#x, %#x)", __func__, node, pin), -1) - -/* Bus space tag. XXX we only support I/O port space this way. */ -#define fdtbus_bs_tag X86_BUS_SPACE_IO - -struct mem_region { - vm_offset_t mr_start; - vm_size_t mr_size; -}; - __BEGIN_DECLS int x86_init_fdt(void); __END_DECLS Modified: head/sys/x86/include/ofw_machdep.h ============================================================================== --- head/sys/x86/include/ofw_machdep.h Sun Jan 5 18:40:06 2014 (r260326) +++ head/sys/x86/include/ofw_machdep.h Sun Jan 5 18:46:58 2014 (r260327) @@ -30,7 +30,13 @@ #define _MACHINE_OFW_MACHDEP_H_ #include +#include typedef uint32_t cell_t; +struct mem_region { + vm_offset_t mr_start; + vm_size_t mr_size; +}; + #endif /* _MACHINE_OFW_MACHDEP_H_ */ From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 18:51:19 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D0AD4723; Sun, 5 Jan 2014 18:51:19 +0000 (UTC) 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 9B3AA1A0D; Sun, 5 Jan 2014 18:51:19 +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 <0MYX00E00YXL0P00@smtpauth2.wiscmail.wisc.edu>; Sun, 05 Jan 2014 12:51:12 -0600 (CST) X-Spam-PmxInfo: Server=avs-2, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.5.184515, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) 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 <0MYX006OZZ1BBV00@smtpauth2.wiscmail.wisc.edu>; Sun, 05 Jan 2014 12:51:12 -0600 (CST) Message-id: <52C9A99E.80400@freebsd.org> Date: Sun, 05 Jan 2014 13:51:10 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r260327 - in head/sys: arm/arm arm/include arm/mv dev/fdt dev/uart mips/include powerpc/include x86/include References: <201401051846.s05IkwE3022468@svn.freebsd.org> In-reply-to: <201401051846.s05IkwE3022468@svn.freebsd.org> X-Enigmail-Version: 1.6 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 18:51:19 -0000 On 01/05/14 13:46, Nathan Whitehorn wrote: > Author: nwhitehorn Date: Sun Jan 5 18:46:58 2014 New Revision: > 260327 URL: http://svnweb.freebsd.org/changeset/base/260327 > > Log: Retire machine/fdt.h as a header used by MI code, as its > function is now obsolete. This involves the following pieces: - > Remove it entirely on PowerPC, where it is not used by MD code > either - Remove all references to machine/fdt.h in > non-architecture-specific code (aside from uart_cpu_fdt.c, shared by > ARM and MIPS, and so is somewhat non-arch-specific). - Fix code > relying on header pollution from machine/fdt.h includes - Legacy > fdtbus.c (still used on x86 FDT systems) now passes resource requests > to its parent (nexus). This allows x86 FDT devices to allocate both > memory and IO requests and removes the last notionally MI use of > fdtbus_bs_tag. - On those architectures that retain a machine/fdt.h, > unused bits like FDT_MAP_IRQ and FDT_INTR_MAX have been removed. > A few extra notes from while I was doing this: #1: dev/fdt/fdt_pci.c is not actually MI. In fact, it is used only by arm/mv/mv_pci.c and contains a large number of implementation details thereof. Perhaps it should be moved into arm/mv. #2: fdtbus_bs_tag (and machine/fdt.h) are still used from uart_cpu_fdt.c, which is used by ARM and MIPS. Maybe this should be looked at some. Since this file is specific to those architectures anyway, and they use it extensively, it's not a big deal. #3: Nearly every architecture in the tree is currently separately declaring an identical struct mem_region, which is a combination of a vm_offset_t and a vm_size_t. These should be centralized. The vm_offset_t should also be a vm_paddr_t. #4: uart_bus_fdt.c really has nothing to do with FDT per se: it's just the simplebus attachment for uart(4). It should probably be renamed to uart_bus_simplebus.c or the like or split up into its constituent UART drivers. -Nathan From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 19:07:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id DA9C3C0E; Sun, 5 Jan 2014 19:07:42 +0000 (UTC) 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 C71A11AB3; Sun, 5 Jan 2014 19:07: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 s05J7gs1030184; Sun, 5 Jan 2014 19:07:42 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05J7gGW030183; Sun, 5 Jan 2014 19:07:42 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401051907.s05J7gGW030183@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 19:07:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260328 - head/sys/cddl/compat/opensolaris/sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 19:07:42 -0000 Author: mav Date: Sun Jan 5 19:07:42 2014 New Revision: 260328 URL: http://svnweb.freebsd.org/changeset/base/260328 Log: Fix build after r260234 by converting ddi_get_lbolt64() from inline into a macro. Otherwise compiler complains that hz variable used there either undefined or defined twice, thanks to header mess caused by compat shims. Modified: head/sys/cddl/compat/opensolaris/sys/time.h Modified: head/sys/cddl/compat/opensolaris/sys/time.h ============================================================================== --- head/sys/cddl/compat/opensolaris/sys/time.h Sun Jan 5 18:46:58 2014 (r260327) +++ head/sys/cddl/compat/opensolaris/sys/time.h Sun Jan 5 19:07:42 2014 (r260328) @@ -70,21 +70,10 @@ gethrtime(void) { #define gethrtime_waitfree() gethrtime() extern int nsec_per_tick; /* nanoseconds per clock tick */ -extern int hz; /* clock ticks per second */ -static __inline int64_t -ddi_get_lbolt64(void) -{ - - return (((getsbinuptime() >> 16) * hz) >> 16); -} - -static __inline clock_t -ddi_get_lbolt(void) -{ - - return (ddi_get_lbolt64()); -} +#define ddi_get_lbolt64() \ + (int64_t)(((getsbinuptime() >> 16) * hz) >> 16) +#define ddi_get_lbolt() (clock_t)ddi_get_lbolt64() #else From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 19:50:59 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 58E728F6 for ; Sun, 5 Jan 2014 19:50:59 +0000 (UTC) Received: from nm49-vm6.bullet.mail.bf1.yahoo.com (nm49-vm6.bullet.mail.bf1.yahoo.com [216.109.115.205]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DDDE11E95 for ; Sun, 5 Jan 2014 19:50:58 +0000 (UTC) Received: from [98.139.214.32] by nm49.bullet.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 19:45:26 -0000 Received: from [98.139.213.10] by tm15.bullet.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 19:45:25 -0000 Received: from [127.0.0.1] by smtp110.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 19:45:25 -0000 X-Yahoo-Newman-Id: 948913.57254.bm@smtp110.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: o_N2T9MVM1l4pnbbnB1a795II4RrHrDZ.GLzh.0aw9WBszm CH01WLYsoOChiWJjvjjUo3iSn7fJ9ST6N1y_tjPNAYPA.Z34JpXvvUX3X32g IvKXp9NCMAcHPs8SmdhO6X284b1e.9fZB0ebq.tYYKNPmfgqpz69SmMMxpx_ 5gbiurn17q2XFEsZfPK4vx8.nDVpNgKld4ZEfNnpeahnGPE0sBAI2cCcavMP sf_jG.om6unpPj61Gx7OAd4WoHnXmGb9hKs_wE6l0Q301cfsZYTVuhDTIL_b VDjhgkQPysi50jmQM_ArFQxF9fcp8hcUgu.Co8EXWsIRkkaA5oqLzN1bF9Bt lFT0zq.ocsv.fTqajWTkdKniJ1eVI9OEIEjcqcBCz0DRQTw6j30mJVcYcRgr CSMwHj9ZtSt79dtCcKmLZB8BCu3qcT0l.nogwhJPN73dH8uhOGnAsK5.Pq6x F.6B24Ze_mH2rnfyeQTemDWBvTPR4FJyvJuzEjqMy5F15mUW2uey3PjF.Zqg Im.arDtjIZbJZ3usOTXOacwH0HNHJcDBSg_yQLLq4SP_mVP.XloZu1uOHOIM kCrsygS4.oQn.MwxLL7RfctcHdifZqxCz0a0TnJHH6Vc5JTd_G7ChyOqgRYR kbQimGD52jhmTKOFymU9uyMICGpSV X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf X-Rocket-Received: from [192.168.0.102] (pfg@190.157.126.109 with plain [63.250.193.228]) by smtp110.mail.bf1.yahoo.com with SMTP; 05 Jan 2014 11:45:25 -0800 PST Message-ID: <52C9B652.9040102@FreeBSD.org> Date: Sun, 05 Jan 2014 14:45:22 -0500 From: Pedro Giffuni User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Tijl Coosemans Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty References: <201401050043.s050hSMI089553@svn.freebsd.org> <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> <52C985C7.9060406@FreeBSD.org> <20140105174221.220d9a13@kalimero.tijl.coosemans.org> In-Reply-To: <20140105174221.220d9a13@kalimero.tijl.coosemans.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, bapt@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 19:50:59 -0000 On 05.01.2014 11:42, Tijl Coosemans wrote: > On Sun, 05 Jan 2014 11:18:15 -0500 Pedro Giffuni wrote: >> On 05.01.2014 06:45, Tijl Coosemans wrote: >>> On Sun, 5 Jan 2014 00:43:28 +0000 (UTC) Pedro F. Giffuni wrote: >>>> Author: pfg >>>> Date: Sun Jan 5 00:43:28 2014 >>>> New Revision: 260311 >>>> URL: http://svnweb.freebsd.org/changeset/base/260311 >>>> >>>> Log: >>>> gcc: Add support for Apple's Block extension >>>> >>>> Block objects [1] are a C-level syntactic and runtime feature. They >>>> are similar to standard C functions, but in addition to executable >>>> code they may also contain variable bindings to automatic (stack) >>>> or managed (heap) memory. A block can therefore maintain a set of >>>> state (data) that it can use to impact behavior when executed. >>>> >>>> This port is based on Apple's GCC 5646 with some bugfixes from >>>> Apple GCC 5666.3. It has some small differences with the support >>>> in clang, which remains the recommended compiler. >>>> >>>> Perhaps the most notable difference is that in GCC that __block >>>> is not actually a keyword, but a macro. There will be workaround >>>> for this issue in a near future. Other issues can be consulted in >>>> the clang documentation [2] >>>> >>>> For better compatiblity with Apple's GCC and llvm-gcc some related >>>> fixes and features from Apple have been included. Support for the >>>> non-standard nested functions in GCC is now off by default. >>> Some ports use nested functions. >> We now have the Apple-GCC compatible -fnested-functions, >> however, this is of little relevance because on FreeBSD 10+ >> the default compiler (clang) doesn't support them at all. >> >> Most such ports should already be using the fsf gcc but >> I am not going to find out which do or dont; I simply won't >> merge this to 9 until there is a good reason to do it. * > Doesn't this affect architectures where clang isn't the default yet? Yes, it may affect a small number of ports in tier 2 platforms. The fix is rather trivial though and gcc is rather verbal about it. For tier 2 platforms it would be especially ugly to have people build a new version of gcc to run such ports. > You can grep the ports tree for nestedfct which currently implies > USE_GCC=any, i.e. use base system gcc when available, otherwise use > lang/gcc port. Do you think it's best to change this into USE_GCC=yes, > i.e. always use lang/gcc port? That search would be big: many ports (OpenOffice for example) can build with gcc 4.2 but it doesn't use nested functions. The most reliable way to catch them all would be to make an experimental run on the ports tree but we currently don't have that capacity for tier 2 platforms. I think it would be best to have upstream ports learn about -fnested-functions (stuff that works on Apple should already know) and on the long run hope that upstream authors will avoid the feature altogether. Pedro. From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 19:52:57 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D6F13B7E; Sun, 5 Jan 2014 19:52:56 +0000 (UTC) Received: from smtpauth3.wiscmail.wisc.edu (wmauth3.doit.wisc.edu [144.92.197.226]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0405E1EA8; Sun, 5 Jan 2014 19:52:56 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MYY00F001SVDO00@smtpauth3.wiscmail.wisc.edu>; Sun, 05 Jan 2014 13:52:49 -0600 (CST) X-Spam-PmxInfo: Server=avs-3, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.5.194517, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MYY009YC1VY5V00@smtpauth3.wiscmail.wisc.edu>; Sun, 05 Jan 2014 13:52:48 -0600 (CST) Message-id: <52C9B80E.6060100@freebsd.org> Date: Sun, 05 Jan 2014 14:52:46 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: Pedro Giffuni , Tijl Coosemans Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty References: <201401050043.s050hSMI089553@svn.freebsd.org> <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> <52C985C7.9060406@FreeBSD.org> <20140105174221.220d9a13@kalimero.tijl.coosemans.org> <52C9B652.9040102@FreeBSD.org> In-reply-to: <52C9B652.9040102@FreeBSD.org> X-Enigmail-Version: 1.6 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, bapt@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 19:52:57 -0000 On 01/05/14 14:45, Pedro Giffuni wrote: > On 05.01.2014 11:42, Tijl Coosemans wrote: >> On Sun, 05 Jan 2014 11:18:15 -0500 Pedro Giffuni wrote: >>> On 05.01.2014 06:45, Tijl Coosemans wrote: >>>> On Sun, 5 Jan 2014 00:43:28 +0000 (UTC) Pedro F. Giffuni wrote: >>>>> Author: pfg >>>>> Date: Sun Jan 5 00:43:28 2014 >>>>> New Revision: 260311 >>>>> URL: http://svnweb.freebsd.org/changeset/base/260311 >>>>> >>>>> Log: >>>>> gcc: Add support for Apple's Block extension >>>>> Block objects [1] are a C-level syntactic and runtime >>>>> feature. They >>>>> are similar to standard C functions, but in addition to >>>>> executable >>>>> code they may also contain variable bindings to automatic (stack) >>>>> or managed (heap) memory. A block can therefore maintain a set of >>>>> state (data) that it can use to impact behavior when executed. >>>>> This port is based on Apple's GCC 5646 with some bugfixes >>>>> from >>>>> Apple GCC 5666.3. It has some small differences with the support >>>>> in clang, which remains the recommended compiler. >>>>> Perhaps the most notable difference is that in GCC that >>>>> __block >>>>> is not actually a keyword, but a macro. There will be workaround >>>>> for this issue in a near future. Other issues can be consulted in >>>>> the clang documentation [2] >>>>> For better compatiblity with Apple's GCC and llvm-gcc some >>>>> related >>>>> fixes and features from Apple have been included. Support for the >>>>> non-standard nested functions in GCC is now off by default. >>>> Some ports use nested functions. >>> We now have the Apple-GCC compatible -fnested-functions, >>> however, this is of little relevance because on FreeBSD 10+ >>> the default compiler (clang) doesn't support them at all. >>> >>> Most such ports should already be using the fsf gcc but >>> I am not going to find out which do or dont; I simply won't >>> merge this to 9 until there is a good reason to do it. * >> Doesn't this affect architectures where clang isn't the default yet? > Yes, it may affect a small number of ports in tier 2 platforms. The > fix is rather trivial though and gcc is rather verbal about it. > > For tier 2 platforms it would be especially ugly to have people build > a new version of gcc to run such ports. > > >> You can grep the ports tree for nestedfct which currently implies >> USE_GCC=any, i.e. use base system gcc when available, otherwise use >> lang/gcc port. Do you think it's best to change this into USE_GCC=yes, >> i.e. always use lang/gcc port? > > That search would be big: many ports (OpenOffice for example) can > build with gcc 4.2 but it doesn't use nested functions. The most > reliable way to catch them all would be to make an experimental run on > the ports tree but we currently don't have that capacity for tier 2 > platforms. > > I think it would be best to have upstream ports learn about > -fnested-functions (stuff that works on Apple should already know) and > on the long run hope that upstream authors will avoid the feature > altogether. > > Pedro. It's also worth pointing out that our default ports GCC (4.6) does not build on some of these platforms (PowerPC64, for example), so requiring it would unconditionally break them. lang/gcc48 does, however, at least on PPC64, so it might be worth switching the default. -Nathan From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 20:09:52 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2582D2D3; Sun, 5 Jan 2014 20:09:52 +0000 (UTC) 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 0F4E21F81; Sun, 5 Jan 2014 20:09:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s05K9puG053502; Sun, 5 Jan 2014 20:09:51 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05K9pkk053498; Sun, 5 Jan 2014 20:09:51 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401052009.s05K9pkk053498@svn.freebsd.org> From: Ian Lepore Date: Sun, 5 Jan 2014 20:09:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260331 - in head/sys/arm: broadcom/bcm2835 freescale/imx lpc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 20:09:52 -0000 Author: ian Date: Sun Jan 5 20:09:51 2014 New Revision: 260331 URL: http://svnweb.freebsd.org/changeset/base/260331 Log: Add #include to a few files that used to get it via pollution from other headers. Modified: head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c head/sys/arm/freescale/imx/imx51_ipuv3.c head/sys/arm/lpc/lpc_machdep.c Modified: head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c Sun Jan 5 20:07:12 2014 (r260330) +++ head/sys/arm/broadcom/bcm2835/bcm2835_fbd.c Sun Jan 5 20:09:51 2014 (r260331) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include Modified: head/sys/arm/freescale/imx/imx51_ipuv3.c ============================================================================== --- head/sys/arm/freescale/imx/imx51_ipuv3.c Sun Jan 5 20:07:12 2014 (r260330) +++ head/sys/arm/freescale/imx/imx51_ipuv3.c Sun Jan 5 20:09:51 2014 (r260331) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include Modified: head/sys/arm/lpc/lpc_machdep.c ============================================================================== --- head/sys/arm/lpc/lpc_machdep.c Sun Jan 5 20:07:12 2014 (r260330) +++ head/sys/arm/lpc/lpc_machdep.c Sun Jan 5 20:09:51 2014 (r260331) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 20:28:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6DDE5930 for ; Sun, 5 Jan 2014 20:28:27 +0000 (UTC) Received: from nm31.bullet.mail.bf1.yahoo.com (nm31.bullet.mail.bf1.yahoo.com [72.30.239.198]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 25FD110FF for ; Sun, 5 Jan 2014 20:28:27 +0000 (UTC) Received: from [98.139.212.151] by nm31.bullet.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 20:22:34 -0000 Received: from [68.142.230.77] by tm8.bullet.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 20:22:34 -0000 Received: from [127.0.0.1] by smtp234.mail.bf1.yahoo.com with NNFMP; 05 Jan 2014 20:22:34 -0000 X-Yahoo-Newman-Id: 291346.19202.bm@smtp234.mail.bf1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: p66IlJMVM1kQPUkGdeEyLD1UxY8IWVk_MEZVZthMxTAqvRq j8OUHn.KpoDy9DKyYVgydzAVoLbNZwK.uacSkUkda3nxOFv2QtsimycSBch. lWXDdHDUhv9Khe2LDIk4ImkWbIZjoXVkHD09vbZU28bBdhzW6Ge5E7r.fALk Yk2sFU9aCXzfuFydRJTE3N5pYRKFeoX6xIElotK60xchFUwcm5KLfJ5ZZnf7 GzyetIEF20qgUcBlN8BSRFzZMa8Ke6erCdts9WYLA_SHkYyfLEjSHFiwfvcV BI_Pa8vKq536hQBLP7dCe4t7HRi45i5ohnfRYmBJ7b6pukgqLPp6ioBbDlv3 ZimSF50IA7L0dtPJvaGL_BtaGKsD9yHk1mTVNrEMi9dCrjEG7rIHQH2ro9m3 z2jAvllYOtcV35WQXcc.Py.7RX5MS94TiX1u5ist9Pkx33O3tB5gJSFjO96B NUmNJHmcLzDuobcvqvtdA5p5xOJQEEZHBjmS8qSEJ12KmUxgsuRcmAIZAjvZ 1GW.ZTKq.dfZaFOcsq._Ms_JYb8RLNPrIaQ4nvzeaBYATTp2OPkqe_CDCY8u Qid9JXB7B5wtiqb1ZKH0maJezen5ah25YyiWdVKqwk.lJMYsThiGGYKcWeoP 6oM1lLEu6hXLhrI7D2LUO0bJY7hk- X-Yahoo-SMTP: xcjD0guswBAZaPPIbxpWwLcp9Unf X-Rocket-Received: from [192.168.0.102] (pfg@190.157.126.109 with plain [63.250.193.228]) by smtp234.mail.bf1.yahoo.com with SMTP; 05 Jan 2014 20:22:34 +0000 UTC Message-ID: <52C9BF06.5040301@FreeBSD.org> Date: Sun, 05 Jan 2014 15:22:30 -0500 From: Pedro Giffuni User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Whitehorn , Tijl Coosemans Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty References: <201401050043.s050hSMI089553@svn.freebsd.org> <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> <52C985C7.9060406@FreeBSD.org> <20140105174221.220d9a13@kalimero.tijl.coosemans.org> <52C9B652.9040102@FreeBSD.org> <52C9B80E.6060100@freebsd.org> In-Reply-To: <52C9B80E.6060100@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, bapt@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 20:28:27 -0000 On 05.01.2014 14:52, Nathan Whitehorn wrote: > On 01/05/14 14:45, Pedro Giffuni wrote: >> On 05.01.2014 11:42, Tijl Coosemans wrote: >>> On Sun, 05 Jan 2014 11:18:15 -0500 Pedro Giffuni wrote: >>>> On 05.01.2014 06:45, Tijl Coosemans wrote: >>>>> On Sun, 5 Jan 2014 00:43:28 +0000 (UTC) Pedro F. Giffuni wrote: >>>>>> Author: pfg >>>>>> Date: Sun Jan 5 00:43:28 2014 >>>>>> New Revision: 260311 >>>>>> URL: http://svnweb.freebsd.org/changeset/base/260311 >>>>>> >>>>>> Log: >>>>>> gcc: Add support for Apple's Block extension >>>>>> Block objects [1] are a C-level syntactic and runtime >>>>>> feature. They >>>>>> are similar to standard C functions, but in addition to >>>>>> executable >>>>>> code they may also contain variable bindings to automatic (stack) >>>>>> or managed (heap) memory. A block can therefore maintain a set of >>>>>> state (data) that it can use to impact behavior when executed. >>>>>> This port is based on Apple's GCC 5646 with some bugfixes >>>>>> from >>>>>> Apple GCC 5666.3. It has some small differences with the support >>>>>> in clang, which remains the recommended compiler. >>>>>> Perhaps the most notable difference is that in GCC that >>>>>> __block >>>>>> is not actually a keyword, but a macro. There will be workaround >>>>>> for this issue in a near future. Other issues can be consulted in >>>>>> the clang documentation [2] >>>>>> For better compatiblity with Apple's GCC and llvm-gcc some >>>>>> related >>>>>> fixes and features from Apple have been included. Support for the >>>>>> non-standard nested functions in GCC is now off by default. >>>>> Some ports use nested functions. >>>> We now have the Apple-GCC compatible -fnested-functions, >>>> however, this is of little relevance because on FreeBSD 10+ >>>> the default compiler (clang) doesn't support them at all. >>>> >>>> Most such ports should already be using the fsf gcc but >>>> I am not going to find out which do or dont; I simply won't >>>> merge this to 9 until there is a good reason to do it. * >>> Doesn't this affect architectures where clang isn't the default yet? >> Yes, it may affect a small number of ports in tier 2 platforms. The >> fix is rather trivial though and gcc is rather verbal about it. >> >> For tier 2 platforms it would be especially ugly to have people build >> a new version of gcc to run such ports. >> >> >>> You can grep the ports tree for nestedfct which currently implies >>> USE_GCC=any, i.e. use base system gcc when available, otherwise use >>> lang/gcc port. Do you think it's best to change this into USE_GCC=yes, >>> i.e. always use lang/gcc port? >> That search would be big: many ports (OpenOffice for example) can >> build with gcc 4.2 but it doesn't use nested functions. The most >> reliable way to catch them all would be to make an experimental run on >> the ports tree but we currently don't have that capacity for tier 2 >> platforms. >> >> I think it would be best to have upstream ports learn about >> -fnested-functions (stuff that works on Apple should already know) and >> on the long run hope that upstream authors will avoid the feature >> altogether. >> >> Pedro. > It's also worth pointing out that our default ports GCC (4.6) does not > build on some of these platforms (PowerPC64, for example), so requiring > it would unconditionally break them. lang/gcc48 does, however, at least > on PPC64, so it might be worth switching the default. The whole idea of this commit is to make gcc behave more like clang so that we can start using the new features in base. For now just adding -fnested-functions on a small number of ports (hopefully nothing big/important) is probably not a huge sacrifice. When PPC64 moves to clang we will have to find a real fix for the issue so leaving the switch off is a good way to detect the trouble early. Regards, Pedro. From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 20:33:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B1B0EBFF; Sun, 5 Jan 2014 20:33:45 +0000 (UTC) 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 9BE26117F; Sun, 5 Jan 2014 20:33: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 s05KXj22064200; Sun, 5 Jan 2014 20:33:45 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05KXiOh064193; Sun, 5 Jan 2014 20:33:44 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401052033.s05KXiOh064193@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 5 Jan 2014 20:33:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260332 - head/contrib/gcc/cp X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 20:33:45 -0000 Author: pfg Date: Sun Jan 5 20:33:44 2014 New Revision: 260332 URL: http://svnweb.freebsd.org/changeset/base/260332 Log: gcc: backport some fixes from llvm-gcc llvm-gcc backported some patches from gcc trunk: http://gcc.gnu.org/ml/gcc-cvs/2007-05/msg00662.html http://gcc.gnu.org/ml/gcc-cvs/2007-07/msg00019.html http://gcc.gnu.org/ml/gcc-cvs/2007-08/msg00240.html http://gcc.gnu.org/ml/gcc-cvs/2007-08/msg00493.html The first two were always GPL2. The last two were added after the GPL3 transition, but were written by aaw@google.com and Rafael Espíndola got permission to relicense them under the GPL2 for inclusion in llvm-gcc. This fixes GCC-PR c++/31749 Obtained from: llvm-gcc (rev. 75463; GPLv2) MFC after: 2 weeks Modified: head/contrib/gcc/cp/ChangeLog.gcc43 head/contrib/gcc/cp/decl.c head/contrib/gcc/cp/name-lookup.c head/contrib/gcc/cp/parser.c Modified: head/contrib/gcc/cp/ChangeLog.gcc43 ============================================================================== --- head/contrib/gcc/cp/ChangeLog.gcc43 Sun Jan 5 20:09:51 2014 (r260331) +++ head/contrib/gcc/cp/ChangeLog.gcc43 Sun Jan 5 20:33:44 2014 (r260332) @@ -7,6 +7,17 @@ * typeck.c (cxx_alignof_expr): When alignof is used on a plain FUNCTION_DECL, return its alignment. +2007-07-01 Ollie Wild (r126177) + + * name-lookup.c (ambiguous_decl): Fix case when new->value is hidden. + (select_decl): Remove function. + (unqualified_namespace_lookup): Populate binding by calling + ambiguous_decl. Remove select_decl call. + (lookup_qualified_name): Remove select_decl call. + * decl.c (lookup_and_check_tag): Check for ambiguous references. + * parser.c (cp_parser_elaborated_type_specifier): Skip redundant error + generation when name lookup is ambiguous. + 2007-06-28 Geoffrey Keating (r126088) * decl2.c (determine_visibility): Implement @@ -29,6 +40,11 @@ * typeck.c (build_binary_op): Include types in error. +2007-05-22 Ollie Wild (r124963) + + * name-lookup.c (ambiguous_decl): Adds check for hidden types. + (unqualified_namespace_lookup): Adds check for hidden types. + 2007-05-18 Geoffrey Keating (r124839) * mangle.c (write_real_cst): Use 'unsigned long' for %lx. Modified: head/contrib/gcc/cp/decl.c ============================================================================== --- head/contrib/gcc/cp/decl.c Sun Jan 5 20:09:51 2014 (r260331) +++ head/contrib/gcc/cp/decl.c Sun Jan 5 20:33:44 2014 (r260332) @@ -10253,6 +10253,12 @@ lookup_and_check_tag (enum tag_types tag | DECL_SELF_REFERENCE_P (decl)); return t; } + else if (decl && TREE_CODE (decl) == TREE_LIST) + { + error ("reference to %qD is ambiguous", name); + print_candidates (decl); + return error_mark_node; + } else return NULL_TREE; } Modified: head/contrib/gcc/cp/name-lookup.c ============================================================================== --- head/contrib/gcc/cp/name-lookup.c Sun Jan 5 20:09:51 2014 (r260331) +++ head/contrib/gcc/cp/name-lookup.c Sun Jan 5 20:33:44 2014 (r260332) @@ -42,7 +42,6 @@ struct scope_binding { #define EMPTY_SCOPE_BINDING { NULL_TREE, NULL_TREE } static cxx_scope *innermost_nonclass_level (void); -static tree select_decl (const struct scope_binding *, int); static cxx_binding *binding_for_name (cxx_scope *, tree); static tree lookup_name_innermost_nonclass_level (tree); static tree push_overloaded_decl (tree, int, bool); @@ -2104,6 +2103,22 @@ do_nonmember_using_decl (tree scope, tre return; } + /* LLVM LOCAL begin mainline */ + /* Shift the old and new bindings around so we're comparing class and + enumeration names to each other. */ + if (oldval && DECL_IMPLICIT_TYPEDEF_P (oldval)) + { + oldtype = oldval; + oldval = NULL_TREE; + } + + if (decls.value && DECL_IMPLICIT_TYPEDEF_P (decls.value)) + { + decls.type = decls.value; + decls.value = NULL_TREE; + } + /* LLVM LOCAL end mainline */ + /* It is impossible to overload a built-in function; any explicit declaration eliminates the built-in declaration. So, if OLDVAL is a built-in, then we can just pretend it isn't there. */ @@ -2113,95 +2128,112 @@ do_nonmember_using_decl (tree scope, tre && !DECL_HIDDEN_FRIEND_P (oldval)) oldval = NULL_TREE; - /* Check for using functions. */ - if (decls.value && is_overloaded_fn (decls.value)) + /* LLVM LOCAL begin mainline */ + if (decls.value) { - tree tmp, tmp1; - - if (oldval && !is_overloaded_fn (oldval)) - { - if (!DECL_IMPLICIT_TYPEDEF_P (oldval)) - error ("%qD is already declared in this scope", name); - oldval = NULL_TREE; - } - - *newval = oldval; - for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp)) + /* Check for using functions. */ + if (is_overloaded_fn (decls.value)) { - tree new_fn = OVL_CURRENT (tmp); + tree tmp, tmp1; - /* [namespace.udecl] + if (oldval && !is_overloaded_fn (oldval)) + { + error ("%qD is already declared in this scope", name); + oldval = NULL_TREE; + } - If a function declaration in namespace scope or block - scope has the same name and the same parameter types as a - function introduced by a using declaration the program is - ill-formed. */ - for (tmp1 = oldval; tmp1; tmp1 = OVL_NEXT (tmp1)) + *newval = oldval; + for (tmp = decls.value; tmp; tmp = OVL_NEXT (tmp)) { - tree old_fn = OVL_CURRENT (tmp1); + tree new_fn = OVL_CURRENT (tmp); - if (new_fn == old_fn) - /* The function already exists in the current namespace. */ - break; - else if (OVL_USED (tmp1)) - continue; /* this is a using decl */ - else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (new_fn)), - TYPE_ARG_TYPES (TREE_TYPE (old_fn)))) + /* [namespace.udecl] + + If a function declaration in namespace scope or block + scope has the same name and the same parameter types as a + function introduced by a using declaration the program is + ill-formed. */ + for (tmp1 = oldval; tmp1; tmp1 = OVL_NEXT (tmp1)) { - gcc_assert (!DECL_ANTICIPATED (old_fn) - || DECL_HIDDEN_FRIEND_P (old_fn)); + tree old_fn = OVL_CURRENT (tmp1); - /* There was already a non-using declaration in - this scope with the same parameter types. If both - are the same extern "C" functions, that's ok. */ - if (decls_match (new_fn, old_fn)) + if (new_fn == old_fn) + /* The function already exists in the current namespace. */ break; - else + else if (OVL_USED (tmp1)) + continue; /* this is a using decl */ + else if (compparms (TYPE_ARG_TYPES (TREE_TYPE (new_fn)), + TYPE_ARG_TYPES (TREE_TYPE (old_fn)))) { - error ("%qD is already declared in this scope", name); - break; + gcc_assert (!DECL_ANTICIPATED (old_fn) + || DECL_HIDDEN_FRIEND_P (old_fn)); + + /* There was already a non-using declaration in + this scope with the same parameter types. If both + are the same extern "C" functions, that's ok. */ + if (decls_match (new_fn, old_fn)) + break; + else + { + error ("%qD is already declared in this scope", name); + break; + } } } - } - /* If we broke out of the loop, there's no reason to add - this function to the using declarations for this - scope. */ - if (tmp1) - continue; - - /* If we are adding to an existing OVERLOAD, then we no - longer know the type of the set of functions. */ - if (*newval && TREE_CODE (*newval) == OVERLOAD) - TREE_TYPE (*newval) = unknown_type_node; - /* Add this new function to the set. */ - *newval = build_overload (OVL_CURRENT (tmp), *newval); - /* If there is only one function, then we use its type. (A - using-declaration naming a single function can be used in - contexts where overload resolution cannot be - performed.) */ - if (TREE_CODE (*newval) != OVERLOAD) - { - *newval = ovl_cons (*newval, NULL_TREE); - TREE_TYPE (*newval) = TREE_TYPE (OVL_CURRENT (tmp)); + /* If we broke out of the loop, there's no reason to add + this function to the using declarations for this + scope. */ + if (tmp1) + continue; + + /* If we are adding to an existing OVERLOAD, then we no + longer know the type of the set of functions. */ + if (*newval && TREE_CODE (*newval) == OVERLOAD) + TREE_TYPE (*newval) = unknown_type_node; + /* Add this new function to the set. */ + *newval = build_overload (OVL_CURRENT (tmp), *newval); + /* If there is only one function, then we use its type. (A + using-declaration naming a single function can be used in + contexts where overload resolution cannot be + performed.) */ + if (TREE_CODE (*newval) != OVERLOAD) + { + *newval = ovl_cons (*newval, NULL_TREE); + TREE_TYPE (*newval) = TREE_TYPE (OVL_CURRENT (tmp)); + } + OVL_USED (*newval) = 1; } - OVL_USED (*newval) = 1; + } + else + { + *newval = decls.value; + if (oldval && !decls_match (*newval, oldval)) + error ("%qD is already declared in this scope", name); } } else + *newval = oldval; + + if (decls.type && TREE_CODE (decls.type) == TREE_LIST) { - *newval = decls.value; - if (oldval && !decls_match (*newval, oldval)) - error ("%qD is already declared in this scope", name); + error ("reference to %qD is ambiguous", name); + print_candidates (decls.type); } - - *newtype = decls.type; - if (oldtype && *newtype && !same_type_p (oldtype, *newtype)) + else { - error ("using declaration %qD introduced ambiguous type %qT", - name, oldtype); - return; + *newtype = decls.type; + if (oldtype && *newtype && !decls_match (oldtype, *newtype)) + error ("%qD is already declared in this scope", name); } + + /* If *newval is empty, shift any class or enumeration name down. */ + if (!*newval) + { + *newval = *newtype; + *newtype = NULL_TREE; + } + /* LLVM LOCAL end mainline */ } /* Process a using-declaration at function scope. */ @@ -3495,43 +3527,63 @@ merge_functions (tree s1, tree s2) XXX In what way should I treat extern declarations? XXX I don't want to repeat the entire duplicate_decls here */ +/* LLVM LOCAL begin mainline */ static void -ambiguous_decl (tree name, struct scope_binding *old, cxx_binding *new, - int flags) +ambiguous_decl (struct scope_binding *old, cxx_binding *new, int flags) { tree val, type; gcc_assert (old != NULL); + + /* Copy the type. */ + type = new->type; + if (LOOKUP_NAMESPACES_ONLY (flags) + || (type && hidden_name_p (type) && !(flags & LOOKUP_HIDDEN))) + type = NULL_TREE; + /* Copy the value. */ val = new->value; if (val) - switch (TREE_CODE (val)) - { - case TEMPLATE_DECL: - /* If we expect types or namespaces, and not templates, - or this is not a template class. */ - if ((LOOKUP_QUALIFIERS_ONLY (flags) - && !DECL_CLASS_TEMPLATE_P (val)) - || hidden_name_p (val)) - val = NULL_TREE; - break; - case TYPE_DECL: - if (LOOKUP_NAMESPACES_ONLY (flags) || hidden_name_p (val)) - val = NULL_TREE; - break; - case NAMESPACE_DECL: - if (LOOKUP_TYPES_ONLY (flags)) - val = NULL_TREE; - break; - case FUNCTION_DECL: - /* Ignore built-in functions that are still anticipated. */ - if (LOOKUP_QUALIFIERS_ONLY (flags) || hidden_name_p (val)) - val = NULL_TREE; - break; - default: - if (LOOKUP_QUALIFIERS_ONLY (flags)) - val = NULL_TREE; - } + { + if (hidden_name_p (val) && !(flags & LOOKUP_HIDDEN)) + val = NULL_TREE; + else + switch (TREE_CODE (val)) + { + case TEMPLATE_DECL: + /* If we expect types or namespaces, and not templates, + or this is not a template class. */ + if ((LOOKUP_QUALIFIERS_ONLY (flags) + && !DECL_CLASS_TEMPLATE_P (val))) + val = NULL_TREE; + break; + case TYPE_DECL: + if (LOOKUP_NAMESPACES_ONLY (flags) + || (type && (flags & LOOKUP_PREFER_TYPES))) + val = NULL_TREE; + break; + case NAMESPACE_DECL: + if (LOOKUP_TYPES_ONLY (flags)) + val = NULL_TREE; + break; + case FUNCTION_DECL: + /* Ignore built-in functions that are still anticipated. */ + if (LOOKUP_QUALIFIERS_ONLY (flags)) + val = NULL_TREE; + break; + default: + if (LOOKUP_QUALIFIERS_ONLY (flags)) + val = NULL_TREE; + } + } + + /* If val is hidden, shift down any class or enumeration name. */ + if (!val) + { + val = type; + type = NULL_TREE; + } +/* LLVM LOCAL end mainline */ if (!old->value) old->value = val; else if (val && val != old->value) @@ -3541,25 +3593,21 @@ ambiguous_decl (tree name, struct scope_ else { old->value = tree_cons (NULL_TREE, old->value, - build_tree_list (NULL_TREE, new->value)); + build_tree_list (NULL_TREE, val)); TREE_TYPE (old->value) = error_mark_node; } } - /* ... and copy the type. */ - type = new->type; - if (LOOKUP_NAMESPACES_ONLY (flags)) - type = NULL_TREE; + + /* LLVM LOCAL begin mainline */ if (!old->type) old->type = type; else if (type && old->type != type) { - if (flags & LOOKUP_COMPLAIN) - { - error ("%qD denotes an ambiguous type",name); - error ("%J first type here", TYPE_MAIN_DECL (old->type)); - error ("%J other type here", TYPE_MAIN_DECL (type)); - } + old->type = tree_cons (NULL_TREE, old->type, + build_tree_list (NULL_TREE, type)); + TREE_TYPE (old->type) = error_mark_node; } + /* LLVM LOCAL end mainline */ } /* Return the declarations that are members of the namespace NS. */ @@ -3648,36 +3696,6 @@ remove_hidden_names (tree fns) return fns; } -/* Select the right _DECL from multiple choices. */ - -static tree -select_decl (const struct scope_binding *binding, int flags) -{ - tree val; - val = binding->value; - - timevar_push (TV_NAME_LOOKUP); - if (LOOKUP_NAMESPACES_ONLY (flags)) - { - /* We are not interested in types. */ - if (val && (TREE_CODE (val) == NAMESPACE_DECL - || TREE_CODE (val) == TREE_LIST)) - POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val); - POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, NULL_TREE); - } - - /* If looking for a type, or if there is no non-type binding, select - the value binding. */ - if (binding->type && (!val || (flags & LOOKUP_PREFER_TYPES))) - val = binding->type; - /* Don't return non-types if we really prefer types. */ - else if (val && LOOKUP_TYPES_ONLY (flags) - && ! DECL_DECLARES_TYPE_P (val)) - val = NULL_TREE; - - POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val); -} - /* Unscoped lookup of a global: iterate over current namespaces, considering using-directives. */ @@ -3689,22 +3707,18 @@ unqualified_namespace_lookup (tree name, tree siter; struct cp_binding_level *level; tree val = NULL_TREE; - struct scope_binding binding = EMPTY_SCOPE_BINDING; timevar_push (TV_NAME_LOOKUP); for (; !val; scope = CP_DECL_CONTEXT (scope)) { + struct scope_binding binding = EMPTY_SCOPE_BINDING; cxx_binding *b = cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name); if (b) - { - if (b->value - && ((flags & LOOKUP_HIDDEN) || !hidden_name_p (b->value))) - binding.value = b->value; - binding.type = b->type; - } + /* LLVM LOCAL mainline */ + ambiguous_decl (&binding, b, flags); /* Add all _DECLs seen through local using-directives. */ for (level = current_binding_level; @@ -3729,7 +3743,7 @@ unqualified_namespace_lookup (tree name, siter = CP_DECL_CONTEXT (siter); } - val = select_decl (&binding, flags); + val = binding.value; if (scope == global_namespace) break; } @@ -3759,7 +3773,7 @@ lookup_qualified_name (tree scope, tree if (is_type_p) flags |= LOOKUP_PREFER_TYPES; if (qualified_lookup_using_namespace (name, scope, &binding, flags)) - t = select_decl (&binding, flags); + t = binding.value; } else if (is_aggr_type (scope, complain)) t = lookup_member (scope, name, 2, is_type_p); @@ -3792,7 +3806,8 @@ lookup_using_namespace (tree name, struc cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (used), name); /* Resolve ambiguities. */ if (val1) - ambiguous_decl (name, val, val1, flags); + /* LLVM LOCAL mainline */ + ambiguous_decl (val, val1, flags); } POP_TIMEVAR_AND_RETURN (TV_NAME_LOOKUP, val->value != error_mark_node); } @@ -3821,7 +3836,8 @@ qualified_lookup_using_namespace (tree n cxx_scope_find_binding_for_name (NAMESPACE_LEVEL (scope), name); seen = tree_cons (scope, NULL_TREE, seen); if (binding) - ambiguous_decl (name, result, binding, flags); + /* LLVM LOCAL mainline */ + ambiguous_decl (result, binding, flags); /* Consider strong using directives always, and non-strong ones if we haven't found a binding yet. ??? Shouldn't we consider Modified: head/contrib/gcc/cp/parser.c ============================================================================== --- head/contrib/gcc/cp/parser.c Sun Jan 5 20:09:51 2014 (r260331) +++ head/contrib/gcc/cp/parser.c Sun Jan 5 20:33:44 2014 (r260332) @@ -10675,13 +10675,19 @@ cp_parser_elaborated_type_specifier (cp_ if (parser->scope) { tree decl; + tree ambiguous_decls; decl = cp_parser_lookup_name (parser, identifier, tag_type, /*is_template=*/false, /*is_namespace=*/false, /*check_dependency=*/true, - /*ambiguous_decls=*/NULL); + &ambiguous_decls); + + /* If the lookup was ambiguous, an error will already have been + issued. */ + if (ambiguous_decls) + return error_mark_node; /* If we are parsing friend declaration, DECL may be a TEMPLATE_DECL tree node here. However, we need to check From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 20:44:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7D23FF4F; Sun, 5 Jan 2014 20:44:11 +0000 (UTC) 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 691F61225; Sun, 5 Jan 2014 20:44: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 s05KiBkj067910; Sun, 5 Jan 2014 20:44:11 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05KiB7R067908; Sun, 5 Jan 2014 20:44:11 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401052044.s05KiB7R067908@svn.freebsd.org> From: Ian Lepore Date: Sun, 5 Jan 2014 20:44:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260333 - in head/sys: arm/conf boot/fdt/dts X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 20:44:11 -0000 Author: ian Date: Sun Jan 5 20:44:10 2014 New Revision: 260333 URL: http://svnweb.freebsd.org/changeset/base/260333 Log: Enable the cesa security/crypto device by providing the required property in the dts source, and adding the right devices to the kernel config. Also generally bring the kernel config into line with what we have for other Marvell/Kirkwood systems (add lots of useful devices and options). One particularly notable addition amongst the kernel config changes is USB_HOST_ALIGN=32, which may help eliminate data corruption on USB drives. PR: kern/181975 arm/162159 Modified: head/sys/arm/conf/DOCKSTAR head/sys/boot/fdt/dts/dockstar.dts Modified: head/sys/arm/conf/DOCKSTAR ============================================================================== --- head/sys/arm/conf/DOCKSTAR Sun Jan 5 20:33:44 2014 (r260332) +++ head/sys/arm/conf/DOCKSTAR Sun Jan 5 20:44:10 2014 (r260333) @@ -3,73 +3,165 @@ # # $FreeBSD$ # +# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html +# +# The handbook is also available locally in /usr/share/doc/handbook +# if you've installed the doc distribution, otherwise always see the +# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the +# latest information. +# +# An exhaustive list of options and more detailed explanations of the +# device lines is also present in the ../../conf/NOTES and NOTES files. +# If you are in doubt as to the purpose or necessity of a line, check first +# in NOTES. +# +# $FreeBSD$ +# ident DOCKSTAR + include "../mv/kirkwood/std.db88f6xxx" -options SOC_MV_KIRKWOOD +makeoptions FDT_DTS_FILE=dockstar.dts + makeoptions MODULES_OVERRIDE="" -#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols -makeoptions WERROR="-Werror" +options SOC_MV_KIRKWOOD options SCHED_4BSD #4BSD scheduler options INET #InterNETworking options INET6 #IPv6 communications protocols +options SOFTUPDATES +options CD9660 #ISO 9660 filesystem options FFS #Berkeley Fast Filesystem -options NFSCL #New Network Filesystem Client -options NFSLOCKD #Network Lock Manager -options NFS_ROOT #NFS usable as /, requires NFSCL -options BOOTP -options BOOTP_NFSROOT -options BOOTP_NFSV3 -options BOOTP_COMPAT -options BOOTP_WIRED_TO=mge0 - -# Root fs on USB device -#options ROOTDEVNAME=\"ufs:/dev/da0a\" - +options MSDOSFS #MS DOS File System (FAT, FAT32) +options NULLFS #NULL filesystem +options TMPFS #Efficient memory filesystem options SYSVSHM #SYSV-style shared memory options SYSVMSG #SYSV-style message queues options SYSVSEM #SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions -options MUTEX_NOINLINE -options RWLOCK_NOINLINE -options NO_FFS_SNAPSHOT -options NO_SWAPPING +options GEOM_ELI # Disk encryption. +options GEOM_LABEL # Providers labelization. +options GEOM_PART_GPT # GPT partitioning -# Debugging -options ALT_BREAK_TO_DEBUGGER -options DDB -options KDB +# Flattened Device Tree +device fdt +options FDT +options FDT_DTB_STATIC + +# Misc pseudo devices +device bpf #Required for DHCP +device faith #IPv6-to-IPv4 relaying (translation) +device firmware #firmware(9) required for USB wlan +device gif #IPv6 and IPv4 tunneling +device loop #Network loopback +device md #Memory/malloc disk +device pty #BSD-style compatibility pseudo ttys +device random #Entropy device +device tun #Packet tunnel. +device ether #Required for all ethernet devices +device vlan #802.1Q VLAN support +device wlan #802.11 WLAN support -# Pseudo devices -device md -device random -device loop +# cam support for umass and ahci +device scbus +device pass +device da # Serial ports device uart # Networking -device ether device mge # Marvell Gigabit Ethernet controller device mii -device bpf -options HZ=1000 -options DEVICE_POLLING -device vlan +device e1000phy # USB -options USB_DEBUG # enable debug msgs -device usb -device ehci -device umass -device scbus -device pass -device da +options USB_HOST_ALIGN=32 # Align DMA to cacheline +#options USB_DEBUG # Compile in USB debug support +device usb # Basic usb support +device ehci # USB host controller +device umass # Mass storage +device uhid # Human-interface devices +device rum # Ralink Technology RT2501USB wireless NICs +device uath # Atheros AR5523 wireless NICs +device ural # Ralink Technology RT2500USB wireless NICs +device zyd # ZyDAS zb1211/zb1211b wireless NICs +device urtw # Realtek RTL8187B/L USB +device upgt # Conexant/Intersil PrismGT SoftMAC USB +device u3g # USB-based 3G modems (Option, Huawei, Sierra) + +# I2C (TWSI) +device iic +device iicbus + +# Sound +device sound +device snd_uaudio + +#crypto +device cesa # Marvell security engine +device crypto +device cryptodev + +# IPSec +device enc +options IPSEC +options IPSEC_NAT_T +options TCP_SIGNATURE #include support for RFC 2385 + +# IPFW +options IPFIREWALL +options IPFIREWALL_DEFAULT_TO_ACCEPT +options IPFIREWALL_VERBOSE +options IPFIREWALL_VERBOSE_LIMIT=100 +options IPFIREWALL_NAT +options LIBALIAS +options DUMMYNET +options IPDIVERT + +#PF +device pf +device pflog +device pfsync + +# ALTQ, required for PF +options ALTQ # Basic ALTQ support +options ALTQ_CBQ # Class Based Queueing +options ALTQ_RED # Random Early Detection +options ALTQ_RIO # RED In/Out +options ALTQ_HFSC # Hierarchical Packet Scheduler +options ALTQ_CDNR # Traffic conditioner +options ALTQ_PRIQ # Priority Queueing +options ALTQ_NOPCC # Required if the TSC is unusable +#options ALTQ_DEBUG + +# Debugging +makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols +options BREAK_TO_DEBUGGER +options ALT_BREAK_TO_DEBUGGER +options DDB +options KDB +options DIAGNOSTIC +options INVARIANTS #Enable calls of extra sanity checking +options INVARIANT_SUPPORT #Extra sanity checks of internal structures, required by INVARIANTS +#options WITNESS #Enable checks to detect deadlocks and cycles +#options WITNESS_SKIPSPIN #Don't run witness on spinlocks for speed +#options WITNESS_KDB + +# Enable these options for nfs root configured via BOOTP. +options NFSCL #Network Filesystem Client +options NFSLOCKD #Network Lock Manager +#options NFS_ROOT #NFS usable as /, requires NFSCLIENT +#options BOOTP +#options BOOTP_NFSROOT +#options BOOTP_NFSV3 +#options BOOTP_WIRED_TO=mge0 + +# If not using BOOTP, use something like one of these... +#options ROOTDEVNAME=\"ufs:/dev/da0a\" +options ROOTDEVNAME=\"ufs:/dev/da0s1a\" +#options ROOTDEVNAME=\"ufs:/dev/da0p10\" +#options ROOTDEVNAME=\"nfs:192.168.0.254/dreamplug\" -# Flattened Device Tree -options FDT -options FDT_DTB_STATIC -makeoptions FDT_DTS_FILE=dockstar.dts Modified: head/sys/boot/fdt/dts/dockstar.dts ============================================================================== --- head/sys/boot/fdt/dts/dockstar.dts Sun Jan 5 20:33:44 2014 (r260332) +++ head/sys/boot/fdt/dts/dockstar.dts Sun Jan 5 20:44:10 2014 (r260333) @@ -209,6 +209,8 @@ reg = <0x30000 0x10000>; interrupts = <22>; interrupt-parent = <&PIC>; + + sram-handle = <&SRAM>; }; usb@50000 { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 21:03:54 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2E7D287A; Sun, 5 Jan 2014 21:03:54 +0000 (UTC) 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 0EEE2138E; Sun, 5 Jan 2014 21:03: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 s05L3rKD076414; Sun, 5 Jan 2014 21:03:53 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05L3nCU076384; Sun, 5 Jan 2014 21:03:49 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401052103.s05L3nCU076384@svn.freebsd.org> From: Dimitry Andric Date: Sun, 5 Jan 2014 21:03:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260334 - in head: lib/libiconv lib/libiconv_modules/BIG5 lib/libiconv_modules/EUC lib/libiconv_modules/EUCTW lib/libiconv_modules/GBK2K lib/libiconv_modules/ISO2022 lib/libiconv_module... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 21:03:54 -0000 Author: dim Date: Sun Jan 5 21:03:49 2014 New Revision: 260334 URL: http://svnweb.freebsd.org/changeset/base/260334 Log: Split the last gcc-specific flags off into CFLAGS.gcc. This also removes the need to use -Qunused-arguments for clang throughout the tree. MFC after: 3 days Modified: head/lib/libiconv/Makefile head/lib/libiconv_modules/BIG5/Makefile head/lib/libiconv_modules/EUC/Makefile head/lib/libiconv_modules/EUCTW/Makefile head/lib/libiconv_modules/GBK2K/Makefile head/lib/libiconv_modules/ISO2022/Makefile head/lib/libiconv_modules/JOHAB/Makefile head/lib/libiconv_modules/UES/Makefile head/lib/libiconv_modules/UTF1632/Makefile head/lib/libiconv_modules/UTF7/Makefile head/lib/libiconv_modules/iconv_std/Makefile head/lib/libiconv_modules/mapper_parallel/Makefile head/lib/libiconv_modules/mapper_serial/Makefile head/lib/libiconv_modules/mapper_std/Makefile head/lib/libiconv_modules/mapper_zone/Makefile head/share/mk/bsd.sys.mk head/sys/boot/i386/boot2/Makefile head/sys/boot/i386/gptboot/Makefile head/sys/boot/i386/gptzfsboot/Makefile head/sys/boot/i386/zfsboot/Makefile head/sys/boot/pc98/boot2/Makefile head/usr.sbin/mfiutil/Makefile Modified: head/lib/libiconv/Makefile ============================================================================== --- head/lib/libiconv/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -19,6 +19,7 @@ SRCS= citrus_bcs.c citrus_bcs_strtol.c c citrus_module.c citrus_none.c citrus_pivot_factory.c \ citrus_prop.c citrus_stdenc.c iconv.c -CFLAGS+= --param max-inline-insns-single=128 -I ${.CURDIR}/../../include -I${.CURDIR}/../libc/include +CFLAGS.gcc+= --param max-inline-insns-single=128 +CFLAGS+= -I ${.CURDIR}/../../include -I${.CURDIR}/../libc/include .include Modified: head/lib/libiconv_modules/BIG5/Makefile ============================================================================== --- head/lib/libiconv_modules/BIG5/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/BIG5/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= BIG5 SRCS+= citrus_big5.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/EUC/Makefile ============================================================================== --- head/lib/libiconv_modules/EUC/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/EUC/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= EUC SRCS+= citrus_euc.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/EUCTW/Makefile ============================================================================== --- head/lib/libiconv_modules/EUCTW/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/EUCTW/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= EUCTW SRCS+= citrus_euctw.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/GBK2K/Makefile ============================================================================== --- head/lib/libiconv_modules/GBK2K/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/GBK2K/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= GBK2K SRCS+= citrus_gbk2k.c -CFLAGS+= --param max-inline-insns-single=16 +CFLAGS.gcc+= --param max-inline-insns-single=16 .include Modified: head/lib/libiconv_modules/ISO2022/Makefile ============================================================================== --- head/lib/libiconv_modules/ISO2022/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/ISO2022/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= ISO2022 SRCS+= citrus_iso2022.c -CFLAGS+= --param max-inline-insns-single=128 +CFLAGS.gcc+= --param max-inline-insns-single=128 .include Modified: head/lib/libiconv_modules/JOHAB/Makefile ============================================================================== --- head/lib/libiconv_modules/JOHAB/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/JOHAB/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= JOHAB SRCS+= citrus_johab.c -CFLAGS+= --param max-inline-insns-single=16 +CFLAGS.gcc+= --param max-inline-insns-single=16 .include Modified: head/lib/libiconv_modules/UES/Makefile ============================================================================== --- head/lib/libiconv_modules/UES/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/UES/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= UES SRCS+= citrus_ues.c -CFLAGS+= --param max-inline-insns-single=64 +CFLAGS.gcc+= --param max-inline-insns-single=64 .include Modified: head/lib/libiconv_modules/UTF1632/Makefile ============================================================================== --- head/lib/libiconv_modules/UTF1632/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/UTF1632/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= UTF1632 SRCS+= citrus_utf1632.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/UTF7/Makefile ============================================================================== --- head/lib/libiconv_modules/UTF7/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/UTF7/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= UTF7 SRCS+= citrus_utf7.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/iconv_std/Makefile ============================================================================== --- head/lib/libiconv_modules/iconv_std/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/iconv_std/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= iconv_std SRCS+= citrus_iconv_std.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/mapper_parallel/Makefile ============================================================================== --- head/lib/libiconv_modules/mapper_parallel/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/mapper_parallel/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -4,6 +4,6 @@ SHLIB= mapper_parallel SRCS+= citrus_mapper_serial.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/mapper_serial/Makefile ============================================================================== --- head/lib/libiconv_modules/mapper_serial/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/mapper_serial/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= mapper_serial SRCS+= citrus_mapper_serial.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: head/lib/libiconv_modules/mapper_std/Makefile ============================================================================== --- head/lib/libiconv_modules/mapper_std/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/mapper_std/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= mapper_std SRCS+= citrus_mapper_std.c -CFLAGS+= --param max-inline-insns-single=8 +CFLAGS.gcc+= --param max-inline-insns-single=8 .include Modified: head/lib/libiconv_modules/mapper_zone/Makefile ============================================================================== --- head/lib/libiconv_modules/mapper_zone/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/lib/libiconv_modules/mapper_zone/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -2,6 +2,6 @@ SHLIB= mapper_zone SRCS+= citrus_mapper_zone.c -CFLAGS+= --param max-inline-insns-single=8 +CFLAGS.gcc+= --param max-inline-insns-single=8 .include Modified: head/share/mk/bsd.sys.mk ============================================================================== --- head/share/mk/bsd.sys.mk Sun Jan 5 20:44:10 2014 (r260333) +++ head/share/mk/bsd.sys.mk Sun Jan 5 21:03:49 2014 (r260334) @@ -119,7 +119,6 @@ CWARNFLAGS+= -Wno-unknown-pragmas CLANG_NO_IAS= -no-integrated-as CLANG_OPT_SMALL= -mstack-alignment=8 -mllvm -inline-threshold=3\ -mllvm -enable-load-pre=false -mllvm -simplifycfg-dup-ret -CFLAGS+= -Qunused-arguments CFLAGS+= ${CFLAGS.clang} CXXFLAGS+= ${CXXFLAGS.clang} .else # !CLANG Modified: head/sys/boot/i386/boot2/Makefile ============================================================================== --- head/sys/boot/i386/boot2/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/sys/boot/i386/boot2/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -37,12 +37,13 @@ CFLAGS= -Os \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 \ + -Winline \ ${CLANG_OPT_SMALL} CFLAGS.gcc+= -fno-guess-branch-probability \ -fno-unit-at-a-time \ -mno-align-long-strings \ + --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: head/sys/boot/i386/gptboot/Makefile ============================================================================== --- head/sys/boot/i386/gptboot/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/sys/boot/i386/gptboot/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -35,7 +35,9 @@ CFLAGS= -DBOOTPROG=\"gptboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: head/sys/boot/i386/gptzfsboot/Makefile ============================================================================== --- head/sys/boot/i386/gptzfsboot/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/sys/boot/i386/gptzfsboot/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -32,7 +32,9 @@ CFLAGS= -DBOOTPROG=\"gptzfsboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: head/sys/boot/i386/zfsboot/Makefile ============================================================================== --- head/sys/boot/i386/zfsboot/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/sys/boot/i386/zfsboot/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -29,7 +29,9 @@ CFLAGS= -DBOOTPROG=\"zfsboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: head/sys/boot/pc98/boot2/Makefile ============================================================================== --- head/sys/boot/pc98/boot2/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/sys/boot/pc98/boot2/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -42,7 +42,9 @@ CFLAGS= -Os \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 # Set machine type to PC98_SYSTEM_PARAMETER #CFLAGS+= -DSET_MACHINE_TYPE Modified: head/usr.sbin/mfiutil/Makefile ============================================================================== --- head/usr.sbin/mfiutil/Makefile Sun Jan 5 20:44:10 2014 (r260333) +++ head/usr.sbin/mfiutil/Makefile Sun Jan 5 21:03:49 2014 (r260334) @@ -6,7 +6,7 @@ SRCS= mfiutil.c mfi_bbu.c mfi_cmd.c mfi_ mfi_properties.c MAN8= mfiutil.8 -CFLAGS+= -fno-builtin-strftime +CFLAGS.gcc+= -fno-builtin-strftime DPADD= ${LIBUTIL} LDADD= -lutil From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 21:35:08 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2B743745; Sun, 5 Jan 2014 21:35:08 +0000 (UTC) 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 142C91623; Sun, 5 Jan 2014 21:35: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 s05LZ7Bj087992; Sun, 5 Jan 2014 21:35:07 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05LZ73R087991; Sun, 5 Jan 2014 21:35:07 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201401052135.s05LZ73R087991@svn.freebsd.org> From: Gavin Atkinson Date: Sun, 5 Jan 2014 21:35:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260335 - head/sys/modules/iwnfw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 21:35:08 -0000 Author: gavin Date: Sun Jan 5 21:35:07 2014 New Revision: 260335 URL: http://svnweb.freebsd.org/changeset/base/260335 Log: Wrap SUBDIRs over several lines. Modified: head/sys/modules/iwnfw/Makefile Modified: head/sys/modules/iwnfw/Makefile ============================================================================== --- head/sys/modules/iwnfw/Makefile Sun Jan 5 21:03:49 2014 (r260334) +++ head/sys/modules/iwnfw/Makefile Sun Jan 5 21:35:07 2014 (r260335) @@ -1,5 +1,15 @@ # $FreeBSD$ -SUBDIR= iwn135 iwn1000 iwn4965 iwn5000 iwn5150 iwn6000 iwn6000g2a iwn6000g2b iwn6050 iwn2000 iwn2030 +SUBDIR= iwn135 \ + iwn1000 \ + iwn2000 \ + iwn2030 \ + iwn4965 \ + iwn5000 \ + iwn5150 \ + iwn6000 \ + iwn6000g2a \ + iwn6000g2b \ + iwn6050 .include From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 21:44:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 53B92BC3; Sun, 5 Jan 2014 21:44:05 +0000 (UTC) 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 3FE5C16CD; Sun, 5 Jan 2014 21:44: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 s05Li5W1091676; Sun, 5 Jan 2014 21:44:05 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Li5oq091675; Sun, 5 Jan 2014 21:44:05 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401052144.s05Li5oq091675@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 5 Jan 2014 21:44:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260336 - head/usr.bin/find X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 21:44:05 -0000 Author: jilles Date: Sun Jan 5 21:44:04 2014 New Revision: 260336 URL: http://svnweb.freebsd.org/changeset/base/260336 Log: find: Fix -lname and -ilname. The code did not take into account that readlink() does not add a terminating '\0', and therefore did not work reliably. As before, symlinks of length PATH_MAX or more are not handled correctly. (These can only be created on other operating systems.) PR: bin/185393 Submitted by: Ben Reser (original version) MFC after: 1 week Modified: head/usr.bin/find/function.c Modified: head/usr.bin/find/function.c ============================================================================== --- head/usr.bin/find/function.c Sun Jan 5 21:35:07 2014 (r260335) +++ head/usr.bin/find/function.c Sun Jan 5 21:44:04 2014 (r260336) @@ -1122,11 +1122,14 @@ f_name(PLAN *plan, FTSENT *entry) { char fn[PATH_MAX]; const char *name; + ssize_t len; if (plan->flags & F_LINK) { - name = fn; - if (readlink(entry->fts_path, fn, sizeof(fn)) == -1) + len = readlink(entry->fts_path, fn, sizeof(fn) - 1); + if (len == -1) return 0; + fn[len] = '\0'; + name = fn; } else name = entry->fts_name; return !fnmatch(plan->c_data, name, From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:09:19 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9D6AA41F; Sun, 5 Jan 2014 22:09:19 +0000 (UTC) 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 87B6C1865; Sun, 5 Jan 2014 22:09: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 s05M9Jjm099970; Sun, 5 Jan 2014 22:09:19 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05M9IlX099965; Sun, 5 Jan 2014 22:09:18 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052209.s05M9IlX099965@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:09:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260337 - in stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:09:19 -0000 Author: mav Date: Sun Jan 5 22:09:18 2014 New Revision: 260337 URL: http://svnweb.freebsd.org/changeset/base/260337 Log: MFC r258137: Introduce allocation cache to store LZ4 compression contexts without kicking VM subsystem twice for every written record. Tests on 24-core system show double reduction of CPU time spent on copying single large well-compressed file. This patch is not really needed on illumos (while not harm either) since their memory allocator by default uses caching for all requests up to 128K. Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c Sun Jan 5 21:44:04 2014 (r260336) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/lz4.c Sun Jan 5 22:09:18 2014 (r260337) @@ -44,6 +44,8 @@ static int LZ4_compressCtx(void *ctx, co static int LZ4_compress64kCtx(void *ctx, const char *source, char *dest, int isize, int osize); +static kmem_cache_t *lz4_ctx_cache; + /*ARGSUSED*/ size_t lz4_compress(void *s_start, void *d_start, size_t s_len, size_t d_len, int n) @@ -840,7 +842,7 @@ static int real_LZ4_compress(const char *source, char *dest, int isize, int osize) { #if HEAPMODE - void *ctx = kmem_zalloc(sizeof (struct refTables), KM_NOSLEEP); + void *ctx = kmem_cache_alloc(lz4_ctx_cache, KM_NOSLEEP); int result; /* @@ -850,12 +852,13 @@ real_LZ4_compress(const char *source, ch if (ctx == NULL) return (0); + bzero(ctx, sizeof(struct refTables)); if (isize < LZ4_64KLIMIT) result = LZ4_compress64kCtx(ctx, source, dest, isize, osize); else result = LZ4_compressCtx(ctx, source, dest, isize, osize); - kmem_free(ctx, sizeof (struct refTables)); + kmem_cache_free(lz4_ctx_cache, ctx); return (result); #else if (isize < (int)LZ4_64KLIMIT) @@ -1001,3 +1004,22 @@ LZ4_uncompress_unknownOutputSize(const c _output_error: return (int)(-(((char *)ip) - source)); } + +extern void +lz4_init(void) +{ + +#if HEAPMODE + lz4_ctx_cache = kmem_cache_create("lz4_ctx", sizeof(struct refTables), + 0, NULL, NULL, NULL, NULL, NULL, 0); +#endif +} + +extern void +lz4_fini(void) +{ + +#if HEAPMODE + kmem_cache_destroy(lz4_ctx_cache); +#endif +} Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Sun Jan 5 21:44:04 2014 (r260336) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c Sun Jan 5 22:09:18 2014 (r260337) @@ -1739,6 +1739,7 @@ spa_init(int mode) unique_init(); space_map_init(); zio_init(); + lz4_init(); dmu_init(); zil_init(); vdev_cache_stat_init(); @@ -1764,6 +1765,7 @@ spa_fini(void) vdev_cache_stat_fini(); zil_fini(); dmu_fini(); + lz4_fini(); zio_fini(); space_map_fini(); unique_fini(); Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h Sun Jan 5 21:44:04 2014 (r260336) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h Sun Jan 5 22:09:18 2014 (r260337) @@ -70,6 +70,8 @@ extern size_t zle_compress(void *src, vo int level); extern int zle_decompress(void *src, void *dst, size_t s_len, size_t d_len, int level); +extern void lz4_init(void); +extern void lz4_fini(void); extern size_t lz4_compress(void *src, void *dst, size_t s_len, size_t d_len, int level); extern int lz4_decompress(void *src, void *dst, size_t s_len, size_t d_len, From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:12:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8182E61F; Sun, 5 Jan 2014 22:12:46 +0000 (UTC) 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 65D5F18D4; Sun, 5 Jan 2014 22:12: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 s05MCknE003256; Sun, 5 Jan 2014 22:12:46 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MCkh8003255; Sun, 5 Jan 2014 22:12:46 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052212.s05MCkh8003255@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:12:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260338 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:12:46 -0000 Author: mav Date: Sun Jan 5 22:12:45 2014 New Revision: 260338 URL: http://svnweb.freebsd.org/changeset/base/260338 Log: MFC r258342: Reenable vfs.zfs.zio.use_uma for amd64, disabled at r209261. On machines with seveal CPUs and enough RAM this can easily twice improve ZFS performance or twice reduce CPU usage. It was disabled three years ago due to memory and KVA exhaustion reports, but our VM subsystem got improved a lot since that time, hopefully enough to make another try. Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun Jan 5 22:09:18 2014 (r260337) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun Jan 5 22:12:45 2014 (r260338) @@ -39,7 +39,11 @@ SYSCTL_DECL(_vfs_zfs); SYSCTL_NODE(_vfs_zfs, OID_AUTO, zio, CTLFLAG_RW, 0, "ZFS ZIO"); +#if defined(__amd64__) +static int zio_use_uma = 1; +#else static int zio_use_uma = 0; +#endif TUNABLE_INT("vfs.zfs.zio.use_uma", &zio_use_uma); SYSCTL_INT(_vfs_zfs_zio, OID_AUTO, use_uma, CTLFLAG_RDTUN, &zio_use_uma, 0, "Use uma(9) for ZIO allocations"); From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:14:13 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 17772783; Sun, 5 Jan 2014 22:14:13 +0000 (UTC) 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 EBED318DC; Sun, 5 Jan 2014 22:14:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s05MECXl003513; Sun, 5 Jan 2014 22:14:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MECxh003510; Sun, 5 Jan 2014 22:14:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052214.s05MECxh003510@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:14:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260339 - in stable/10: cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:14:13 -0000 Author: mav Date: Sun Jan 5 22:14:12 2014 New Revision: 260339 URL: http://svnweb.freebsd.org/changeset/base/260339 Log: MFC r259168: Don't even try to read vdev labels from devices smaller then SPA_MINDEVSIZE (64MB). Even if we would find one somehow, ZFS kernel code rejects such devices. It is funny to look on attempts to read 4 256K vdev labels from 1.44MB floppy, though it is not very practical and quite slow. Modified: stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Directory Properties: stable/10/ (props changed) Modified: stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c ============================================================================== --- stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Sun Jan 5 22:12:45 2014 (r260338) +++ stable/10/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c Sun Jan 5 22:14:12 2014 (r260339) @@ -995,10 +995,10 @@ nozpool_all_slices(avl_tree_t *r, const #endif /* sun */ } +#ifdef sun static void check_slices(avl_tree_t *r, int fd, const char *sname) { -#ifdef sun struct extvtoc vtoc; struct dk_gpt *gpt; char diskname[MAXNAMELEN]; @@ -1028,8 +1028,8 @@ check_slices(avl_tree_t *r, int fd, cons check_one_slice(r, diskname, i, 0, 1); efi_free(gpt); } -#endif /* sun */ } +#endif /* sun */ static void zpool_open_func(void *arg) @@ -1059,6 +1059,7 @@ zpool_open_func(void *arg) return; } /* this file is too small to hold a zpool */ +#ifdef sun if (S_ISREG(statbuf.st_mode) && statbuf.st_size < SPA_MINDEVSIZE) { (void) close(fd); @@ -1070,6 +1071,12 @@ zpool_open_func(void *arg) */ check_slices(rn->rn_avl, fd, rn->rn_name); } +#else /* !sun */ + if (statbuf.st_size < SPA_MINDEVSIZE) { + (void) close(fd); + return; + } +#endif /* sun */ if ((zpool_read_label(fd, &config)) != 0) { (void) close(fd); Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Sun Jan 5 22:12:45 2014 (r260338) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Sun Jan 5 22:14:12 2014 (r260339) @@ -370,10 +370,16 @@ vdev_geom_attach_taster(struct g_consume if (pp->flags & G_PF_WITHER) return (EINVAL); - if (pp->sectorsize > VDEV_PAD_SIZE || !ISP2(pp->sectorsize)) - return (EINVAL); g_attach(cp, pp); error = g_access(cp, 1, 0, 0); + if (error == 0) { + if (pp->sectorsize > VDEV_PAD_SIZE || !ISP2(pp->sectorsize)) + error = EINVAL; + else if (pp->mediasize < SPA_MINDEVSIZE) + error = EINVAL; + if (error != 0) + g_access(cp, -1, 0, 0); + } if (error != 0) g_detach(cp); return (error); From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:36:36 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 853A7F5; Sun, 5 Jan 2014 22:36:36 +0000 (UTC) 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 650411A84; Sun, 5 Jan 2014 22:36: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 s05Maa67011150; Sun, 5 Jan 2014 22:36:36 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MaZt4011141; Sun, 5 Jan 2014 22:36:35 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401052236.s05MaZt4011141@svn.freebsd.org> From: Ian Lepore Date: Sun, 5 Jan 2014 22:36:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260340 - in head/sys: arm/include arm/mv conf dev/fdt X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:36:36 -0000 Author: ian Date: Sun Jan 5 22:36:34 2014 New Revision: 260340 URL: http://svnweb.freebsd.org/changeset/base/260340 Log: Remove dev/fdt/fdt_pci.c, which was code specific to Marvell ARM SoCs, related to setting up static device mappings. Since it was only used by arm/mv/mv_pci.c, it's now just static functions within that file, plus one public function that gets called only from arm/mv/mv_machdep.c. Deleted: head/sys/dev/fdt/fdt_pci.c Modified: head/sys/arm/include/fdt.h head/sys/arm/mv/mv_machdep.c head/sys/arm/mv/mv_pci.c head/sys/arm/mv/mvvar.h head/sys/conf/files head/sys/dev/fdt/fdt_common.h Modified: head/sys/arm/include/fdt.h ============================================================================== --- head/sys/arm/include/fdt.h Sun Jan 5 22:14:12 2014 (r260339) +++ head/sys/arm/include/fdt.h Sun Jan 5 22:36:34 2014 (r260340) @@ -54,7 +54,5 @@ extern bus_space_tag_t fdtbus_bs_tag; struct arm_devmap_entry; int fdt_localbus_devmap(phandle_t, struct arm_devmap_entry *, int, int *); -int fdt_pci_devmap(phandle_t, struct arm_devmap_entry *devmap, vm_offset_t, - vm_offset_t); #endif /* _MACHINE_FDT_H_ */ Modified: head/sys/arm/mv/mv_machdep.c ============================================================================== --- head/sys/arm/mv/mv_machdep.c Sun Jan 5 22:14:12 2014 (r260339) +++ head/sys/arm/mv/mv_machdep.c Sun Jan 5 22:36:34 2014 (r260340) @@ -294,11 +294,11 @@ out: } /* - * Supply a default do-nothing implementation of fdt_pci_devmap() via a weak + * Supply a default do-nothing implementation of mv_pci_devmap() via a weak * alias. Many Marvell platforms don't support a PCI interface, but to support * those that do, we end up with a reference to this function below, in * initarm_devmap_init(). If "device pci" appears in the kernel config, the - * real implementation of this function in dev/fdt/fdt_pci.c overrides the weak + * real implementation of this function in arm/mv/mv_pci.c overrides the weak * alias defined here. */ int mv_default_fdt_pci_devmap(phandle_t node, struct arm_devmap_entry *devmap, @@ -310,7 +310,7 @@ mv_default_fdt_pci_devmap(phandle_t node return (0); } -__weak_reference(mv_default_fdt_pci_devmap, fdt_pci_devmap); +__weak_reference(mv_default_fdt_pci_devmap, mv_pci_devmap); /* * XXX: When device entry in devmap has pd_size smaller than section size, @@ -379,7 +379,7 @@ initarm_devmap_init(void) * XXX this should account for PCI and multiple ranges * of a given kind. */ - if (fdt_pci_devmap(child, &fdt_devmap[i], MV_PCI_VA_IO_BASE, + if (mv_pci_devmap(child, &fdt_devmap[i], MV_PCI_VA_IO_BASE, MV_PCI_VA_MEM_BASE) != 0) return (ENXIO); i += 2; Modified: head/sys/arm/mv/mv_pci.c ============================================================================== --- head/sys/arm/mv/mv_pci.c Sun Jan 5 22:14:12 2014 (r260339) +++ head/sys/arm/mv/mv_pci.c Sun Jan 5 22:36:34 2014 (r260340) @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include "ofw_bus_if.h" #include "pcib_if.h" +#include #include #include @@ -83,6 +84,172 @@ __FBSDID("$FreeBSD$"); #define debugf(fmt, args...) #endif +/* + * Code and data related to fdt-based PCI configuration. + * + * This stuff used to be in dev/fdt/fdt_pci.c and fdt_common.h, but it was + * always Marvell-specific so that was deleted and the code now lives here. + */ + +struct mv_pci_range { + u_long base_pci; + u_long base_parent; + u_long len; +}; + +#define FDT_RANGES_CELLS ((3 + 3 + 2) * 2) + +static void +mv_pci_range_dump(struct mv_pci_range *range) +{ +#ifdef DEBUG + printf("\n"); + printf(" base_pci = 0x%08lx\n", range->base_pci); + printf(" base_par = 0x%08lx\n", range->base_parent); + printf(" len = 0x%08lx\n", range->len); +#endif +} + +static int +mv_pci_ranges_decode(phandle_t node, struct mv_pci_range *io_space, + struct mv_pci_range *mem_space) +{ + pcell_t ranges[FDT_RANGES_CELLS]; + struct mv_pci_range *pci_space; + pcell_t addr_cells, size_cells, par_addr_cells; + pcell_t *rangesptr; + pcell_t cell0, cell1, cell2; + int tuple_size, tuples, i, rv, offset_cells, len; + + /* + * Retrieve 'ranges' property. + */ + if ((fdt_addrsize_cells(node, &addr_cells, &size_cells)) != 0) + return (EINVAL); + if (addr_cells != 3 || size_cells != 2) + return (ERANGE); + + par_addr_cells = fdt_parent_addr_cells(node); + if (par_addr_cells > 3) + return (ERANGE); + + len = OF_getproplen(node, "ranges"); + if (len > sizeof(ranges)) + return (ENOMEM); + + if (OF_getprop(node, "ranges", ranges, sizeof(ranges)) <= 0) + return (EINVAL); + + tuple_size = sizeof(pcell_t) * (addr_cells + par_addr_cells + + size_cells); + tuples = len / tuple_size; + + /* + * Initialize the ranges so that we don't have to worry about + * having them all defined in the FDT. In particular, it is + * perfectly fine not to want I/O space on PCI busses. + */ + bzero(io_space, sizeof(*io_space)); + bzero(mem_space, sizeof(*mem_space)); + + rangesptr = &ranges[0]; + offset_cells = 0; + for (i = 0; i < tuples; i++) { + cell0 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + cell1 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + cell2 = fdt_data_get((void *)rangesptr, 1); + rangesptr++; + + if (cell0 & 0x02000000) { + pci_space = mem_space; + } else if (cell0 & 0x01000000) { + pci_space = io_space; + } else { + rv = ERANGE; + goto out; + } + + if (par_addr_cells == 3) { + /* + * This is a PCI subnode 'ranges'. Skip cell0 and + * cell1 of this entry and only use cell2. + */ + offset_cells = 2; + rangesptr += offset_cells; + } + + if (fdt_data_verify((void *)rangesptr, par_addr_cells - + offset_cells)) { + rv = ERANGE; + goto out; + } + pci_space->base_parent = fdt_data_get((void *)rangesptr, + par_addr_cells - offset_cells); + rangesptr += par_addr_cells - offset_cells; + + if (fdt_data_verify((void *)rangesptr, size_cells)) { + rv = ERANGE; + goto out; + } + pci_space->len = fdt_data_get((void *)rangesptr, size_cells); + rangesptr += size_cells; + + pci_space->base_pci = cell2; + } + rv = 0; +out: + return (rv); +} + +static int +mv_pci_ranges(phandle_t node, struct mv_pci_range *io_space, + struct mv_pci_range *mem_space) +{ + int err; + + debugf("Processing PCI node: %x\n", node); + if ((err = mv_pci_ranges_decode(node, io_space, mem_space)) != 0) { + debugf("could not decode parent PCI node 'ranges'\n"); + return (err); + } + + debugf("Post fixup dump:\n"); + mv_pci_range_dump(io_space); + mv_pci_range_dump(mem_space); + return (0); +} + +int +mv_pci_devmap(phandle_t node, struct arm_devmap_entry *devmap, vm_offset_t io_va, + vm_offset_t mem_va) +{ + struct mv_pci_range io_space, mem_space; + int error; + + if ((error = mv_pci_ranges_decode(node, &io_space, &mem_space)) != 0) + return (error); + + devmap->pd_va = (io_va ? io_va : io_space.base_parent); + devmap->pd_pa = io_space.base_parent; + devmap->pd_size = io_space.len; + devmap->pd_prot = VM_PROT_READ | VM_PROT_WRITE; + devmap->pd_cache = PTE_NOCACHE; + devmap++; + + devmap->pd_va = (mem_va ? mem_va : mem_space.base_parent); + devmap->pd_pa = mem_space.base_parent; + devmap->pd_size = mem_space.len; + devmap->pd_prot = VM_PROT_READ | VM_PROT_WRITE; + devmap->pd_cache = PTE_NOCACHE; + return (0); +} + +/* + * Code and data related to the Marvell pcib driver. + */ + #define PCI_CFG_ENA (1U << 31) #define PCI_CFG_BUS(bus) (((bus) & 0xff) << 16) #define PCI_CFG_DEV(dev) (((dev) & 0x1f) << 11) @@ -912,13 +1079,13 @@ mv_pcib_route_interrupt(device_t bus, de static int mv_pcib_decode_win(phandle_t node, struct mv_pcib_softc *sc) { - struct fdt_pci_range io_space, mem_space; + struct mv_pci_range io_space, mem_space; device_t dev; int error; dev = sc->sc_dev; - if ((error = fdt_pci_ranges(node, &io_space, &mem_space)) != 0) { + if ((error = mv_pci_ranges(node, &io_space, &mem_space)) != 0) { device_printf(dev, "could not retrieve 'ranges' data\n"); return (error); } @@ -1026,3 +1193,4 @@ mv_pcib_release_msi(device_t dev, device return (0); } #endif + Modified: head/sys/arm/mv/mvvar.h ============================================================================== --- head/sys/arm/mv/mvvar.h Sun Jan 5 22:14:12 2014 (r260339) +++ head/sys/arm/mv/mvvar.h Sun Jan 5 22:36:34 2014 (r260340) @@ -46,6 +46,8 @@ #include #include +#include + #define MV_TYPE_PCI 0 #define MV_TYPE_PCIE 1 @@ -135,4 +137,9 @@ uint32_t mv_drbl_get_msg(int mnr, int di int mv_msi_data(int irq, uint64_t *addr, uint32_t *data); +struct arm_devmap_entry; + +int mv_pci_devmap(phandle_t, struct arm_devmap_entry *, vm_offset_t, + vm_offset_t); + #endif /* _MVVAR_H_ */ Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Sun Jan 5 22:14:12 2014 (r260339) +++ head/sys/conf/files Sun Jan 5 22:36:34 2014 (r260340) @@ -1402,7 +1402,6 @@ dev/fb/fb_if.m standard dev/fb/splash.c optional sc splash dev/fdt/fdt_common.c optional fdt dev/fdt/fdt_ic_if.m optional fdt -dev/fdt/fdt_pci.c optional fdt pci dev/fdt/fdt_slicer.c optional fdt cfi | fdt nand dev/fdt/fdt_static_dtb.S optional fdt fdt_dtb_static \ dependency "$S/boot/fdt/dts/${FDT_DTS_FILE}" Modified: head/sys/dev/fdt/fdt_common.h ============================================================================== --- head/sys/dev/fdt/fdt_common.h Sun Jan 5 22:14:12 2014 (r260339) +++ head/sys/dev/fdt/fdt_common.h Sun Jan 5 22:36:34 2014 (r260340) @@ -40,12 +40,6 @@ #define DI_MAX_INTR_NUM 32 -struct fdt_pci_range { - u_long base_pci; - u_long base_parent; - u_long len; -}; - struct fdt_sense_level { enum intr_trigger trig; enum intr_polarity pol; @@ -100,9 +94,6 @@ int fdt_is_enabled(phandle_t); int fdt_pm_is_enabled(phandle_t); int fdt_is_type(phandle_t, const char *); int fdt_parent_addr_cells(phandle_t); -int fdt_pci_ranges(phandle_t, struct fdt_pci_range *, struct fdt_pci_range *); -int fdt_pci_ranges_decode(phandle_t, struct fdt_pci_range *, - struct fdt_pci_range *); int fdt_ranges_verify(pcell_t *, int, int, int, int); int fdt_reg_to_rl(phandle_t, struct resource_list *); int fdt_pm(phandle_t); From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:38:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B2BC7289; Sun, 5 Jan 2014 22:38:45 +0000 (UTC) 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 82A681A92; Sun, 5 Jan 2014 22:38: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 s05McjCi011440; Sun, 5 Jan 2014 22:38:45 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MciDn011436; Sun, 5 Jan 2014 22:38:44 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052238.s05MciDn011436@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:38:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260341 - stable/10/sys/dev/isp X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:38:45 -0000 Author: mav Date: Sun Jan 5 22:38:44 2014 New Revision: 260341 URL: http://svnweb.freebsd.org/changeset/base/260341 Log: MFC r256705: Optimize isp(4) to reduce CPU usage, especially in target mode: - Remove two excessive and slow register reads from isp_intr(). Instead of rereading value every time, assume that registers contain what we have written there. - Avoid sequential search through 4096 array elements when looking for command tag. Use hash of lists to store active tags separately from free ones and so greatly speedup the searches. Modified: stable/10/sys/dev/isp/isp.c stable/10/sys/dev/isp/isp_freebsd.c stable/10/sys/dev/isp/isp_freebsd.h stable/10/sys/dev/isp/ispvar.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/isp/isp.c ============================================================================== --- stable/10/sys/dev/isp/isp.c Sun Jan 5 22:36:34 2014 (r260340) +++ stable/10/sys/dev/isp/isp.c Sun Jan 5 22:38:44 2014 (r260341) @@ -1422,7 +1422,7 @@ isp_scsi_init(ispsoftc_t *isp) if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { return; } - isp->isp_residx = mbs.param[5]; + isp->isp_residx = isp->isp_resodx = mbs.param[5]; MBSINIT(&mbs, MBOX_INIT_REQ_QUEUE_A64, MBLOGALL, 0); mbs.param[1] = RQUEST_QUEUE_LEN(isp); @@ -1446,7 +1446,7 @@ isp_scsi_init(ispsoftc_t *isp) if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { return; } - isp->isp_residx = mbs.param[5]; + isp->isp_residx = isp->isp_resodx = mbs.param[5]; MBSINIT(&mbs, MBOX_INIT_REQ_QUEUE, MBLOGALL, 0); mbs.param[1] = RQUEST_QUEUE_LEN(isp); @@ -1918,6 +1918,7 @@ isp_fibre_init(ispsoftc_t *isp) isp->isp_reqidx = 0; isp->isp_reqodx = 0; isp->isp_residx = 0; + isp->isp_resodx = 0; /* * Whatever happens, we're now committed to being here. @@ -2208,6 +2209,8 @@ isp_fibre_init_2400(ispsoftc_t *isp) isp->isp_reqidx = 0; isp->isp_reqodx = 0; isp->isp_residx = 0; + isp->isp_resodx = 0; + isp->isp_atioodx = 0; /* * Whatever happens, we're now committed to being here. @@ -5015,7 +5018,6 @@ isp_intr(ispsoftc_t *isp, uint32_t isr, int etype, last_etype = 0; again: - optr = isp->isp_residx; /* * Is this a mailbox related interrupt? * The mailbox semaphore will be nonzero if so. @@ -5067,7 +5069,9 @@ again: /* * Thank you very much! *Burrrp*! */ - ISP_WRITE(isp, isp->isp_respoutrp, ISP_READ(isp, isp->isp_respinrp)); + isp->isp_residx = ISP_READ(isp, isp->isp_respinrp); + isp->isp_resodx = isp->isp_residx; + ISP_WRITE(isp, isp->isp_respoutrp, isp->isp_resodx); if (IS_24XX(isp)) { ISP_DISABLE_INTS(isp); } @@ -5080,7 +5084,7 @@ again: */ if (IS_24XX(isp)) { iptr = ISP_READ(isp, BIU2400_ATIO_RSPINP); - optr = ISP_READ(isp, BIU2400_ATIO_RSPOUTP); + optr = isp->isp_atioodx; while (optr != iptr) { uint8_t qe[QENTRY_LEN]; @@ -5105,7 +5109,7 @@ again: optr = ISP_NXT_QENTRY(oop, RESULT_QUEUE_LEN(isp)); ISP_WRITE(isp, BIU2400_ATIO_RSPOUTP, optr); } - optr = isp->isp_residx; + isp->isp_atioodx = optr; } #endif @@ -5114,18 +5118,19 @@ again: * * If we're a 2300 or 2400, we can ask what hardware what it thinks. */ +#if 0 if (IS_23XX(isp) || IS_24XX(isp)) { optr = ISP_READ(isp, isp->isp_respoutrp); /* * Debug: to be taken out eventually */ - if (isp->isp_residx != optr) { - isp_prt(isp, ISP_LOGINFO, "isp_intr: hard optr=%x, soft optr %x", optr, isp->isp_residx); - isp->isp_residx = optr; + if (isp->isp_resodx != optr) { + isp_prt(isp, ISP_LOGINFO, "isp_intr: hard optr=%x, soft optr %x", optr, isp->isp_resodx); + isp->isp_resodx = optr; } - } else { - optr = isp->isp_residx; - } + } else +#endif + optr = isp->isp_resodx; /* * You *must* read the Response Queue In Pointer @@ -5147,8 +5152,6 @@ again: } else { iptr = ISP_READ(isp, isp->isp_respinrp); } - isp->isp_resodx = iptr; - if (optr == iptr && sema == 0) { /* @@ -5182,7 +5185,7 @@ again: isp_prt(isp, ISP_LOGDEBUG1, "bogus intr- isr %x (%x) iptr %x optr %x", isr, junk, iptr, optr); } } - isp->isp_resodx = iptr; + isp->isp_residx = iptr; while (optr != iptr) { uint8_t qe[QENTRY_LEN]; @@ -5552,13 +5555,9 @@ again: */ if (nlooked) { ISP_WRITE(isp, isp->isp_respoutrp, optr); - /* - * While we're at it, read the requst queue out pointer. - */ - isp->isp_reqodx = ISP_READ(isp, isp->isp_rqstoutrp); - if (isp->isp_rscchiwater < ndone) { + isp->isp_resodx = optr; + if (isp->isp_rscchiwater < ndone) isp->isp_rscchiwater = ndone; - } } out: @@ -5570,7 +5569,6 @@ out: ISP_WRITE(isp, BIU_SEMA, 0); } - isp->isp_residx = optr; for (i = 0; i < ndone; i++) { xs = complist[i]; if (xs) { Modified: stable/10/sys/dev/isp/isp_freebsd.c ============================================================================== --- stable/10/sys/dev/isp/isp_freebsd.c Sun Jan 5 22:36:34 2014 (r260340) +++ stable/10/sys/dev/isp/isp_freebsd.c Sun Jan 5 22:38:44 2014 (r260341) @@ -804,6 +804,7 @@ static ISP_INLINE tstate_t *get_lun_stat static ISP_INLINE void rls_lun_statep(ispsoftc_t *, tstate_t *); static ISP_INLINE inot_private_data_t *get_ntp_from_tagdata(ispsoftc_t *, uint32_t, uint32_t, tstate_t **); static ISP_INLINE atio_private_data_t *isp_get_atpd(ispsoftc_t *, tstate_t *, uint32_t); +static ISP_INLINE atio_private_data_t *isp_find_atpd(ispsoftc_t *, tstate_t *, uint32_t); static ISP_INLINE void isp_put_atpd(ispsoftc_t *, tstate_t *, atio_private_data_t *); static ISP_INLINE inot_private_data_t *isp_get_ntpd(ispsoftc_t *, tstate_t *); static ISP_INLINE inot_private_data_t *isp_find_ntpd(ispsoftc_t *, tstate_t *, uint32_t, uint32_t); @@ -937,8 +938,8 @@ get_lun_statep_from_tag(ispsoftc_t *isp, for (i = 0; i < LUN_HASH_SIZE; i++) { ISP_GET_PC_ADDR(isp, bus, lun_hash[i], lhp); SLIST_FOREACH(tptr, lhp, next) { - atp = isp_get_atpd(isp, tptr, tagval); - if (atp && atp->tag == tagval) { + atp = isp_find_atpd(isp, tptr, tagval); + if (atp) { tptr->hold++; return (tptr); } @@ -1034,17 +1035,23 @@ isp_get_atpd(ispsoftc_t *isp, tstate_t * { atio_private_data_t *atp; - if (tag == 0) { - atp = tptr->atfree; - if (atp) { - tptr->atfree = atp->next; - } - return (atp); + atp = LIST_FIRST(&tptr->atfree); + if (atp) { + LIST_REMOVE(atp, next); + atp->tag = tag; + LIST_INSERT_HEAD(&tptr->atused[ATPDPHASH(tag)], atp, next); } - for (atp = tptr->atpool; atp < &tptr->atpool[ATPDPSIZE]; atp++) { - if (atp->tag == tag) { + return (atp); +} + +static ISP_INLINE atio_private_data_t * +isp_find_atpd(ispsoftc_t *isp, tstate_t *tptr, uint32_t tag) +{ + atio_private_data_t *atp; + + LIST_FOREACH(atp, &tptr->atused[ATPDPHASH(tag)], next) { + if (atp->tag == tag) return (atp); - } } return (NULL); } @@ -1055,9 +1062,9 @@ isp_put_atpd(ispsoftc_t *isp, tstate_t * if (atp->ests) { isp_put_ecmd(isp, atp->ests); } + LIST_REMOVE(atp, next); memset(atp, 0, sizeof (*atp)); - atp->next = tptr->atfree; - tptr->atfree = atp; + LIST_INSERT_HEAD(&tptr->atfree, atp, next); } static void @@ -1067,11 +1074,8 @@ isp_dump_atpd(ispsoftc_t *isp, tstate_t const char *states[8] = { "Free", "ATIO", "CAM", "CTIO", "LAST_CTIO", "PDON", "?6", "7" }; for (atp = tptr->atpool; atp < &tptr->atpool[ATPDPSIZE]; atp++) { - if (atp->tag == 0) { - continue; - } xpt_print(tptr->owner, "ATP: [0x%x] origdlen %u bytes_xfrd %u lun %u nphdl 0x%04x s_id 0x%06x d_id 0x%06x oxid 0x%04x state %s\n", - atp->tag, atp->orig_datalen, atp->bytes_xfered, atp->lun, atp->nphdl, atp->sid, atp->portid, atp->oxid, states[atp->state & 0x7]); + atp->tag, atp->orig_datalen, atp->bytes_xfered, atp->lun, atp->nphdl, atp->sid, atp->portid, atp->oxid, states[atp->state & 0x7]); } } @@ -1137,11 +1141,13 @@ create_lun_state(ispsoftc_t *isp, int bu SLIST_INIT(&tptr->atios); SLIST_INIT(&tptr->inots); TAILQ_INIT(&tptr->waitq); - for (i = 0; i < ATPDPSIZE-1; i++) { - tptr->atpool[i].next = &tptr->atpool[i+1]; + LIST_INIT(&tptr->atfree); + for (i = ATPDPSIZE-1; i >= 0; i--) + LIST_INSERT_HEAD(&tptr->atfree, &tptr->atpool[i], next); + for (i = 0; i < ATPDPHASHSIZE; i++) + LIST_INIT(&tptr->atused[i]); + for (i = 0; i < ATPDPSIZE-1; i++) tptr->ntpool[i].next = &tptr->ntpool[i+1]; - } - tptr->atfree = tptr->atpool; tptr->ntfree = tptr->ntpool; tptr->hold = 1; ISP_GET_PC_ADDR(isp, bus, lun_hash[LUN_HASH_FUNC(xpt_path_lun_id(tptr->owner))], lhp); @@ -1620,7 +1626,7 @@ isp_target_start_ctio(ispsoftc_t *isp, u } } - atp = isp_get_atpd(isp, tptr, cso->tag_id); + atp = isp_find_atpd(isp, tptr, cso->tag_id); if (atp == NULL) { isp_prt(isp, ISP_LOGERR, "%s: [0x%x] cannot find private data adjunct in %s", __func__, cso->tag_id, __func__); isp_dump_atpd(isp, tptr); @@ -2252,7 +2258,7 @@ isp_handle_platform_atio(ispsoftc_t *isp } } - atp = isp_get_atpd(isp, tptr, 0); + atp = isp_get_atpd(isp, tptr, aep->at_handle); atiop = (struct ccb_accept_tio *) SLIST_FIRST(&tptr->atios); if (atiop == NULL || atp == NULL) { /* @@ -2272,7 +2278,6 @@ isp_handle_platform_atio(ispsoftc_t *isp rls_lun_statep(isp, tptr); return; } - atp->tag = aep->at_handle; atp->rxid = aep->at_tag_val; atp->state = ATPD_STATE_ATIO; SLIST_REMOVE_HEAD(&tptr->atios, sim_links.sle); @@ -2401,12 +2406,11 @@ isp_handle_platform_atio2(ispsoftc_t *is goto noresrc; } - atp = isp_get_atpd(isp, tptr, 0); + atp = isp_get_atpd(isp, tptr, aep->at_rxid); if (atp == NULL) { goto noresrc; } - atp->tag = aep->at_rxid; atp->state = ATPD_STATE_ATIO; SLIST_REMOVE_HEAD(&tptr->atios, sim_links.sle); tptr->atio_count--; @@ -2638,12 +2642,7 @@ isp_handle_platform_atio7(ispsoftc_t *is goto noresrc; } - atp = isp_get_atpd(isp, tptr, 0); - if (atp == NULL) { - isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atps", aep->at_rxid); - goto noresrc; - } - oatp = isp_get_atpd(isp, tptr, aep->at_rxid); + oatp = isp_find_atpd(isp, tptr, aep->at_rxid); if (oatp) { isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] tag wraparound in isp_handle_platforms_atio7 (N-Port Handle 0x%04x S_ID 0x%04x OX_ID 0x%04x) oatp state %d", aep->at_rxid, nphdl, sid, aep->at_hdr.ox_id, oatp->state); @@ -2652,8 +2651,12 @@ isp_handle_platform_atio7(ispsoftc_t *is */ goto noresrc; } + atp = isp_get_atpd(isp, tptr, aep->at_rxid); + if (atp == NULL) { + isp_prt(isp, ISP_LOGTDEBUG0, "[0x%x] out of atps", aep->at_rxid); + goto noresrc; + } atp->word3 = lp->prli_word3; - atp->tag = aep->at_rxid; atp->state = ATPD_STATE_ATIO; SLIST_REMOVE_HEAD(&tptr->atios, sim_links.sle); tptr->atio_count--; @@ -2846,7 +2849,7 @@ isp_handle_srr_notify(ispsoftc_t *isp, v isp_async(isp, ISPASYNC_TARGET_NOTIFY_ACK, inot); return; } - atp = isp_get_atpd(isp, tptr, tag); + atp = isp_find_atpd(isp, tptr, tag); if (atp == NULL) { rls_lun_statep(isp, tptr); isp_prt(isp, ISP_LOGERR, "%s: cannot find adjunct for %x in SRR Notify", __func__, tag); @@ -2905,11 +2908,11 @@ isp_handle_platform_ctio(ispsoftc_t *isp } if (IS_24XX(isp)) { - atp = isp_get_atpd(isp, tptr, ((ct7_entry_t *)arg)->ct_rxid); + atp = isp_find_atpd(isp, tptr, ((ct7_entry_t *)arg)->ct_rxid); } else if (IS_FC(isp)) { - atp = isp_get_atpd(isp, tptr, ((ct2_entry_t *)arg)->ct_rxid); + atp = isp_find_atpd(isp, tptr, ((ct2_entry_t *)arg)->ct_rxid); } else { - atp = isp_get_atpd(isp, tptr, ((ct_entry_t *)arg)->ct_fwhandle); + atp = isp_find_atpd(isp, tptr, ((ct_entry_t *)arg)->ct_fwhandle); } if (atp == NULL) { rls_lun_statep(isp, tptr); @@ -3093,7 +3096,7 @@ isp_handle_platform_notify_fc(ispsoftc_t return; } } - atp = isp_get_atpd(isp, tptr, inp->in_seqid); + atp = isp_find_atpd(isp, tptr, inp->in_seqid); if (atp) { inot = (struct ccb_immediate_notify *) SLIST_FIRST(&tptr->inots); @@ -3516,7 +3519,7 @@ isp_target_mark_aborted(ispsoftc_t *isp, } } - atp = isp_get_atpd(isp, tptr, accb->atio.tag_id); + atp = isp_find_atpd(isp, tptr, accb->atio.tag_id); if (atp == NULL) { ccb->ccb_h.status = CAM_REQ_INVALID; } else { @@ -5005,7 +5008,7 @@ isp_action(struct cam_sim *sim, union cc if (ccb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) { if (ccb->atio.tag_id) { - atio_private_data_t *atp = isp_get_atpd(isp, tptr, ccb->atio.tag_id); + atio_private_data_t *atp = isp_find_atpd(isp, tptr, ccb->atio.tag_id); if (atp) { isp_put_atpd(isp, tptr, atp); } Modified: stable/10/sys/dev/isp/isp_freebsd.h ============================================================================== --- stable/10/sys/dev/isp/isp_freebsd.h Sun Jan 5 22:36:34 2014 (r260340) +++ stable/10/sys/dev/isp/isp_freebsd.h Sun Jan 5 22:38:44 2014 (r260341) @@ -95,11 +95,13 @@ void isp_put_ecmd(struct ispsoftc *, is #define ISP_TARGET_FUNCTIONS 1 #define ATPDPSIZE 4096 +#define ATPDPHASHSIZE 16 +#define ATPDPHASH(x) ((((x) >> 24) ^ ((x) >> 16) ^ ((x) >> 8) ^ (x)) & \ + ((ATPDPHASHSIZE) - 1)) #include - -typedef struct { - void * next; +typedef struct atio_private_data { + LIST_ENTRY(atio_private_data) next; uint32_t orig_datalen; uint32_t bytes_xfered; uint32_t bytes_in_transit; @@ -173,7 +175,8 @@ typedef struct tstate { inot_private_data_t * restart_queue; inot_private_data_t * ntfree; inot_private_data_t ntpool[ATPDPSIZE]; - atio_private_data_t * atfree; + LIST_HEAD(, atio_private_data) atfree; + LIST_HEAD(, atio_private_data) atused[ATPDPHASHSIZE]; atio_private_data_t atpool[ATPDPSIZE]; } tstate_t; Modified: stable/10/sys/dev/isp/ispvar.h ============================================================================== --- stable/10/sys/dev/isp/ispvar.h Sun Jan 5 22:36:34 2014 (r260340) +++ stable/10/sys/dev/isp/ispvar.h Sun Jan 5 22:38:44 2014 (r260341) @@ -614,8 +614,9 @@ struct ispsoftc { volatile mbreg_t isp_curmbx; /* currently active mailbox command */ volatile uint32_t isp_reqodx; /* index of last ISP pickup */ volatile uint32_t isp_reqidx; /* index of next request */ - volatile uint32_t isp_residx; /* index of next result */ + volatile uint32_t isp_residx; /* index of last ISP write */ volatile uint32_t isp_resodx; /* index of next result */ + volatile uint32_t isp_atioodx; /* index of next ATIO */ volatile uint32_t isp_obits; /* mailbox command output */ volatile uint32_t isp_serno; /* rolling serial number */ volatile uint16_t isp_mboxtmp[MAX_MAILBOX]; From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:40:30 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 22CE944F; Sun, 5 Jan 2014 22:40:30 +0000 (UTC) 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 02A6B1AA7; Sun, 5 Jan 2014 22:40: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 s05MeT9A014247; Sun, 5 Jan 2014 22:40:29 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MeSHs014241; Sun, 5 Jan 2014 22:40:28 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052240.s05MeSHs014241@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:40:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260342 - in stable/10/sys/dev: aic7xxx firewire isp mpt X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:40:30 -0000 Author: mav Date: Sun Jan 5 22:40:28 2014 New Revision: 260342 URL: http://svnweb.freebsd.org/changeset/base/260342 Log: MFC r256826: Fix several target mode SIMs to not blindly clear ccb_h.flags field of ATIO CCBs. Not all CCB flags there belong to them. Modified: stable/10/sys/dev/aic7xxx/aic79xx.c stable/10/sys/dev/aic7xxx/aic7xxx.c stable/10/sys/dev/firewire/sbp_targ.c stable/10/sys/dev/isp/isp_freebsd.c stable/10/sys/dev/mpt/mpt_cam.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/aic7xxx/aic79xx.c ============================================================================== --- stable/10/sys/dev/aic7xxx/aic79xx.c Sun Jan 5 22:38:44 2014 (r260341) +++ stable/10/sys/dev/aic7xxx/aic79xx.c Sun Jan 5 22:40:28 2014 (r260342) @@ -10342,9 +10342,9 @@ ahd_handle_target_cmd(struct ahd_softc * /* Tag was included */ atio->tag_action = *byte++; atio->tag_id = *byte++; - atio->ccb_h.flags = CAM_TAG_ACTION_VALID; + atio->ccb_h.flags |= CAM_TAG_ACTION_VALID; } else { - atio->ccb_h.flags = 0; + atio->ccb_h.flags &= ~CAM_TAG_ACTION_VALID; } byte++; Modified: stable/10/sys/dev/aic7xxx/aic7xxx.c ============================================================================== --- stable/10/sys/dev/aic7xxx/aic7xxx.c Sun Jan 5 22:38:44 2014 (r260341) +++ stable/10/sys/dev/aic7xxx/aic7xxx.c Sun Jan 5 22:40:28 2014 (r260342) @@ -7842,9 +7842,9 @@ ahc_handle_target_cmd(struct ahc_softc * /* Tag was included */ atio->tag_action = *byte++; atio->tag_id = *byte++; - atio->ccb_h.flags = CAM_TAG_ACTION_VALID; + atio->ccb_h.flags |= CAM_TAG_ACTION_VALID; } else { - atio->ccb_h.flags = 0; + atio->ccb_h.flags &= ~CAM_TAG_ACTION_VALID; } byte++; Modified: stable/10/sys/dev/firewire/sbp_targ.c ============================================================================== --- stable/10/sys/dev/firewire/sbp_targ.c Sun Jan 5 22:38:44 2014 (r260341) +++ stable/10/sys/dev/firewire/sbp_targ.c Sun Jan 5 22:40:28 2014 (r260342) @@ -1483,7 +1483,7 @@ sbp_targ_cmd_handler(struct fw_xfer *xfe atio->tag_id = orbi->orb_lo; atio->init_id = orbi->login->id; - atio->ccb_h.flags = CAM_TAG_ACTION_VALID; + atio->ccb_h.flags |= CAM_TAG_ACTION_VALID; bytes = (u_char *)&orb[5]; if (debug) printf("%s: %p %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", Modified: stable/10/sys/dev/isp/isp_freebsd.c ============================================================================== --- stable/10/sys/dev/isp/isp_freebsd.c Sun Jan 5 22:38:44 2014 (r260341) +++ stable/10/sys/dev/isp/isp_freebsd.c Sun Jan 5 22:40:28 2014 (r260342) @@ -2286,9 +2286,9 @@ isp_handle_platform_atio(ispsoftc_t *isp atiop->ccb_h.target_id = aep->at_tgt; atiop->ccb_h.target_lun = aep->at_lun; if (aep->at_flags & AT_NODISC) { - atiop->ccb_h.flags = CAM_DIS_DISCONNECT; + atiop->ccb_h.flags |= CAM_DIS_DISCONNECT; } else { - atiop->ccb_h.flags = 0; + atiop->ccb_h.flags &= ~CAM_DIS_DISCONNECT; } if (status & QLTM_SVALID) { @@ -2456,15 +2456,15 @@ isp_handle_platform_atio2(ispsoftc_t *is atiop->tag_id = atp->tag; switch (aep->at_taskflags & ATIO2_TC_ATTR_MASK) { case ATIO2_TC_ATTR_SIMPLEQ: - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; atiop->tag_action = MSG_SIMPLE_Q_TAG; break; case ATIO2_TC_ATTR_HEADOFQ: - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; atiop->tag_action = MSG_HEAD_OF_Q_TAG; break; case ATIO2_TC_ATTR_ORDERED: - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; atiop->tag_action = MSG_ORDERED_Q_TAG; break; case ATIO2_TC_ATTR_ACAQ: /* ?? */ @@ -2676,15 +2676,15 @@ isp_handle_platform_atio7(ispsoftc_t *is atiop->tag_id = atp->tag; switch (aep->at_cmnd.fcp_cmnd_task_attribute & FCP_CMND_TASK_ATTR_MASK) { case FCP_CMND_TASK_ATTR_SIMPLE: - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; atiop->tag_action = MSG_SIMPLE_Q_TAG; break; case FCP_CMND_TASK_ATTR_HEAD: - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; atiop->tag_action = MSG_HEAD_OF_Q_TAG; break; case FCP_CMND_TASK_ATTR_ORDERED: - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; atiop->tag_action = MSG_ORDERED_Q_TAG; break; default: @@ -5004,7 +5004,6 @@ isp_action(struct cam_sim *sim, union cc } ccb->ccb_h.spriv_field0 = 0; ccb->ccb_h.spriv_ptr1 = isp; - ccb->ccb_h.flags = 0; if (ccb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) { if (ccb->atio.tag_id) { Modified: stable/10/sys/dev/mpt/mpt_cam.c ============================================================================== --- stable/10/sys/dev/mpt/mpt_cam.c Sun Jan 5 22:38:44 2014 (r260341) +++ stable/10/sys/dev/mpt/mpt_cam.c Sun Jan 5 22:40:28 2014 (r260342) @@ -3683,7 +3683,6 @@ mpt_action(struct cam_sim *sim, union cc lun_id_t lun = ccb->ccb_h.target_lun; ccb->ccb_h.sim_priv.entries[0].field = 0; ccb->ccb_h.sim_priv.entries[1].ptr = mpt; - ccb->ccb_h.flags = 0; if (lun == CAM_LUN_WILDCARD) { if (ccb->ccb_h.target_id != CAM_TARGET_WILDCARD) { @@ -5156,7 +5155,7 @@ mpt_scsi_tgt_atio(struct mpt_softc *mpt, tgt->tag_id = atiop->tag_id; if (tag_action) { atiop->tag_action = tag_action; - atiop->ccb_h.flags = CAM_TAG_ACTION_VALID; + atiop->ccb_h.flags |= CAM_TAG_ACTION_VALID; } if (mpt->verbose >= MPT_PRT_DEBUG) { int i; From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:42:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 78791645; Sun, 5 Jan 2014 22:42:43 +0000 (UTC) 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 643F91B09; Sun, 5 Jan 2014 22:42: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 s05MghJe014590; Sun, 5 Jan 2014 22:42:43 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MghKa014589; Sun, 5 Jan 2014 22:42:43 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052242.s05MghKa014589@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:42:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260343 - stable/10/sys/dev/aha X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:42:43 -0000 Author: mav Date: Sun Jan 5 22:42:42 2014 New Revision: 260343 URL: http://svnweb.freebsd.org/changeset/base/260343 Log: MFC r256887: Fix memory and references leak due to unfreed path. Coverity CID: 1109817 Modified: stable/10/sys/dev/aha/aha.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/aha/aha.c ============================================================================== --- stable/10/sys/dev/aha/aha.c Sun Jan 5 22:40:28 2014 (r260342) +++ stable/10/sys/dev/aha/aha.c Sun Jan 5 22:42:42 2014 (r260343) @@ -1168,8 +1168,10 @@ ahadone(struct aha_softc *aha, struct ah cam_sim_path(aha->sim), accb->hccb.target, CAM_LUN_WILDCARD); - if (error == CAM_REQ_CMP) + if (error == CAM_REQ_CMP) { xpt_async(AC_SENT_BDR, path, NULL); + xpt_free_path(path); + } ccb_h = LIST_FIRST(&aha->pending_ccbs); while (ccb_h != NULL) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:43:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D4E2779A; Sun, 5 Jan 2014 22:43:40 +0000 (UTC) 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 C05BD1B12; Sun, 5 Jan 2014 22:43: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 s05Mheo0014739; Sun, 5 Jan 2014 22:43:40 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MheBB014738; Sun, 5 Jan 2014 22:43:40 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052243.s05MheBB014738@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:43:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260344 - stable/10/sys/dev/buslogic X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:43:40 -0000 Author: mav Date: Sun Jan 5 22:43:40 2014 New Revision: 260344 URL: http://svnweb.freebsd.org/changeset/base/260344 Log: MFC r256893: Fix memory and references leak due to unfreed path. Coverity CID: 1109815 Modified: stable/10/sys/dev/buslogic/bt.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/buslogic/bt.c ============================================================================== --- stable/10/sys/dev/buslogic/bt.c Sun Jan 5 22:42:42 2014 (r260343) +++ stable/10/sys/dev/buslogic/bt.c Sun Jan 5 22:43:40 2014 (r260344) @@ -1586,8 +1586,10 @@ btdone(struct bt_softc *bt, struct bt_cc bccb->hccb.target_id, CAM_LUN_WILDCARD); - if (error == CAM_REQ_CMP) + if (error == CAM_REQ_CMP) { xpt_async(AC_SENT_BDR, path, NULL); + xpt_free_path(path); + } ccb_h = LIST_FIRST(&bt->pending_ccbs); while (ccb_h != NULL) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:45:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id F0FE18F2; Sun, 5 Jan 2014 22:45:46 +0000 (UTC) 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 DD0901B1C; Sun, 5 Jan 2014 22:45: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 s05Mjk3C015099; Sun, 5 Jan 2014 22:45:46 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MjkCF015098; Sun, 5 Jan 2014 22:45:46 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052245.s05MjkCF015098@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:45:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260345 - stable/10/sys/dev/isp X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:45:47 -0000 Author: mav Date: Sun Jan 5 22:45:46 2014 New Revision: 260345 URL: http://svnweb.freebsd.org/changeset/base/260345 Log: MFC r257916: Save one more register read per command by not reading rqstoutrp register every time. The purpose of that register is unlikely output queue overflow detection, so read it only when its last known (and probably stale now) value signals overflow. Modified: stable/10/sys/dev/isp/isp_library.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/isp/isp_library.c ============================================================================== --- stable/10/sys/dev/isp/isp_library.c Sun Jan 5 22:43:40 2014 (r260344) +++ stable/10/sys/dev/isp/isp_library.c Sun Jan 5 22:45:46 2014 (r260345) @@ -322,9 +322,13 @@ isp_destroy_handle(ispsoftc_t *isp, uint void * isp_getrqentry(ispsoftc_t *isp) { - isp->isp_reqodx = ISP_READ(isp, isp->isp_rqstoutrp); - if (ISP_NXT_QENTRY(isp->isp_reqidx, RQUEST_QUEUE_LEN(isp)) == isp->isp_reqodx) { - return (NULL); + uint32_t next; + + next = ISP_NXT_QENTRY(isp->isp_reqidx, RQUEST_QUEUE_LEN(isp)); + if (next == isp->isp_reqodx) { + isp->isp_reqodx = ISP_READ(isp, isp->isp_rqstoutrp); + if (next == isp->isp_reqodx) + return (NULL); } return (ISP_QUEUE_ENTRY(isp->isp_rquest, isp->isp_reqidx)); } From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:47:13 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9462CACC; Sun, 5 Jan 2014 22:47:13 +0000 (UTC) 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 672571B2F; Sun, 5 Jan 2014 22:47: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 s05MlDA8015351; Sun, 5 Jan 2014 22:47:13 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MlDId015350; Sun, 5 Jan 2014 22:47:13 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052247.s05MlDId015350@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:47:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260346 - stable/10/sys/dev/isp X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:47:13 -0000 Author: mav Date: Sun Jan 5 22:47:12 2014 New Revision: 260346 URL: http://svnweb.freebsd.org/changeset/base/260346 Log: MFC r257930: Some more registers access optimizations: - Process ATIO queue only if interrupt status tells so; - Do not update queue out pointers after each processed command, do it only once at the end of the loop. Modified: stable/10/sys/dev/isp/isp.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/isp/isp.c ============================================================================== --- stable/10/sys/dev/isp/isp.c Sun Jan 5 22:45:46 2014 (r260345) +++ stable/10/sys/dev/isp/isp.c Sun Jan 5 22:47:12 2014 (r260346) @@ -5082,7 +5082,9 @@ again: /* * Check for ATIO Queue entries. */ - if (IS_24XX(isp)) { + if (IS_24XX(isp) && + ((isr & BIU2400_R2HST_ISTAT_MASK) == ISP2400R2HST_ATIO_RSPQ_UPDATE || + (isr & BIU2400_R2HST_ISTAT_MASK) == ISP2400R2HST_ATIO_RQST_UPDATE)) { iptr = ISP_READ(isp, BIU2400_ATIO_RSPINP); optr = isp->isp_atioodx; @@ -5107,9 +5109,11 @@ again: break; } optr = ISP_NXT_QENTRY(oop, RESULT_QUEUE_LEN(isp)); + } + if (isp->isp_atioodx != optr) { ISP_WRITE(isp, BIU2400_ATIO_RSPOUTP, optr); + isp->isp_atioodx = optr; } - isp->isp_atioodx = optr; } #endif @@ -5284,7 +5288,6 @@ again: optr = ISP_NXT_QENTRY(tsto, RESULT_QUEUE_LEN(isp)); } if (r > 0) { - ISP_WRITE(isp, isp->isp_respoutrp, optr); ISP_MEMZERO(hp, QENTRY_LEN); /* PERF */ last_etype = etype; continue; @@ -5319,7 +5322,6 @@ again: if (sp->req_header.rqs_flags & RQSFLAG_MASK) { if (sp->req_header.rqs_flags & RQSFLAG_CONTINUATION) { isp_print_bytes(isp, "unexpected continuation segment", QENTRY_LEN, sp); - ISP_WRITE(isp, isp->isp_respoutrp, optr); last_etype = etype; continue; } @@ -5343,7 +5345,6 @@ again: } if (sp->req_header.rqs_flags & RQSFLAG_BADORDER) { isp_print_bytes(isp, "invalid IOCB ordering", QENTRY_LEN, sp); - ISP_WRITE(isp, isp->isp_respoutrp, optr); last_etype = etype; continue; } @@ -5352,7 +5353,6 @@ again: if (!ISP_VALID_HANDLE(isp, sp->req_handle)) { isp_prt(isp, ISP_LOGERR, "bad request handle 0x%x (iocb type 0x%x)", sp->req_handle, etype); ISP_MEMZERO(hp, QENTRY_LEN); /* PERF */ - ISP_WRITE(isp, isp->isp_respoutrp, optr); last_etype = etype; continue; } @@ -5369,7 +5369,6 @@ again: isp_prt(isp, ISP_LOGERR, "cannot find handle 0x%x (status 0x%x)", sp->req_handle, ts); } ISP_MEMZERO(hp, QENTRY_LEN); /* PERF */ - ISP_WRITE(isp, isp->isp_respoutrp, optr); last_etype = etype; continue; } From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:48:13 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 31660C3C; Sun, 5 Jan 2014 22:48:13 +0000 (UTC) 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 F40B41B41; Sun, 5 Jan 2014 22:48:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s05MmC7K015501; Sun, 5 Jan 2014 22:48:12 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MmCUc015498; Sun, 5 Jan 2014 22:48:12 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052248.s05MmCUc015498@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:48:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260347 - stable/10/sys/dev/isp X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:48:13 -0000 Author: mav Date: Sun Jan 5 22:48:12 2014 New Revision: 260347 URL: http://svnweb.freebsd.org/changeset/base/260347 Log: MFC r257932: Use relaxed (write-only) memory barriers when writing some of queue index registers (for now on ISP2400+). We never read those registers back and AFAIK their semantics does not require any immediate reaction on write. Modified: stable/10/sys/dev/isp/isp_freebsd.h stable/10/sys/dev/isp/isp_pci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/isp/isp_freebsd.h ============================================================================== --- stable/10/sys/dev/isp/isp_freebsd.h Sun Jan 5 22:47:12 2014 (r260346) +++ stable/10/sys/dev/isp/isp_freebsd.h Sun Jan 5 22:48:12 2014 (r260347) @@ -459,6 +459,39 @@ default: \ break; \ } +#define MEMORYBARRIERW(isp, type, offset, size, chan) \ +switch (type) { \ +case SYNC_SFORDEV: \ +{ \ + struct isp_fc *fc = ISP_FC_PC(isp, chan); \ + bus_dmamap_sync(fc->tdmat, fc->tdmap, \ + BUS_DMASYNC_PREWRITE); \ + break; \ +} \ +case SYNC_REQUEST: \ + bus_dmamap_sync(isp->isp_osinfo.cdmat, \ + isp->isp_osinfo.cdmap, BUS_DMASYNC_PREWRITE); \ + break; \ +case SYNC_SFORCPU: \ +{ \ + struct isp_fc *fc = ISP_FC_PC(isp, chan); \ + bus_dmamap_sync(fc->tdmat, fc->tdmap, \ + BUS_DMASYNC_POSTWRITE); \ + break; \ +} \ +case SYNC_RESULT: \ + bus_dmamap_sync(isp->isp_osinfo.cdmat, \ + isp->isp_osinfo.cdmap, BUS_DMASYNC_POSTWRITE); \ + break; \ +case SYNC_REG: \ + bus_space_barrier(isp->isp_osinfo.bus_tag, \ + isp->isp_osinfo.bus_handle, offset, size, \ + BUS_SPACE_BARRIER_WRITE); \ + break; \ +default: \ + break; \ +} + #define MBOX_ACQUIRE isp_mbox_acquire #define MBOX_WAIT_COMPLETE isp_mbox_wait_complete #define MBOX_NOTIFY_COMPLETE isp_mbox_notify_done Modified: stable/10/sys/dev/isp/isp_pci.c ============================================================================== --- stable/10/sys/dev/isp/isp_pci.c Sun Jan 5 22:47:12 2014 (r260346) +++ stable/10/sys/dev/isp/isp_pci.c Sun Jan 5 22:48:12 2014 (r260347) @@ -1432,6 +1432,15 @@ isp_pci_wr_reg_2400(ispsoftc_t *isp, int case BIU2400_GPIOE: case BIU2400_HSEMA: BXW4(isp, IspVirt2Off(isp, regoff), val); +#ifdef MEMORYBARRIERW + if (regoff == BIU2400_REQINP || + regoff == BIU2400_RSPOUTP || + regoff == BIU2400_PRI_REQINP || + regoff == BIU2400_ATIO_RSPOUTP) + MEMORYBARRIERW(isp, SYNC_REG, + IspVirt2Off(isp, regoff), 4, -1) + else +#endif MEMORYBARRIER(isp, SYNC_REG, IspVirt2Off(isp, regoff), 4, -1); break; default: From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:49:55 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 511F1D85; Sun, 5 Jan 2014 22:49:55 +0000 (UTC) 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 315841B48; Sun, 5 Jan 2014 22:49: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 s05Mnt5C015704; Sun, 5 Jan 2014 22:49:55 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Mnsmc015699; Sun, 5 Jan 2014 22:49:54 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052249.s05Mnsmc015699@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:49:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260348 - in stable/10/sys/dev: ahci ata ata/chipsets usb/controller X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:49:55 -0000 Author: mav Date: Sun Jan 5 22:49:54 2014 New Revision: 260348 URL: http://svnweb.freebsd.org/changeset/base/260348 Log: MFC r258162: Add some more IDs for Intel ATA, AHCI and USB controllers. Modified: stable/10/sys/dev/ahci/ahci.c stable/10/sys/dev/ata/ata-pci.h stable/10/sys/dev/ata/chipsets/ata-intel.c stable/10/sys/dev/usb/controller/ehci_pci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/ahci/ahci.c ============================================================================== --- stable/10/sys/dev/ahci/ahci.c Sun Jan 5 22:48:12 2014 (r260347) +++ stable/10/sys/dev/ahci/ahci.c Sun Jan 5 22:49:54 2014 (r260348) @@ -190,21 +190,54 @@ static struct { {0x28268086, 0x00, "Intel Patsburg (RAID)", 0}, {0x1e028086, 0x00, "Intel Panther Point", 0}, {0x1e038086, 0x00, "Intel Panther Point", 0}, - {0x1e048086, 0x00, "Intel Panther Point", 0}, - {0x1e058086, 0x00, "Intel Panther Point", 0}, - {0x1e068086, 0x00, "Intel Panther Point", 0}, - {0x1e078086, 0x00, "Intel Panther Point", 0}, - {0x1e0e8086, 0x00, "Intel Panther Point", 0}, - {0x1e0f8086, 0x00, "Intel Panther Point", 0}, + {0x1e048086, 0x00, "Intel Panther Point (RAID)", 0}, + {0x1e058086, 0x00, "Intel Panther Point (RAID)", 0}, + {0x1e068086, 0x00, "Intel Panther Point (RAID)", 0}, + {0x1e078086, 0x00, "Intel Panther Point (RAID)", 0}, + {0x1e0e8086, 0x00, "Intel Panther Point (RAID)", 0}, + {0x1e0f8086, 0x00, "Intel Panther Point (RAID)", 0}, + {0x1f228086, 0x00, "Intel Avoton", 0}, + {0x1f238086, 0x00, "Intel Avoton", 0}, + {0x1f248086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f258086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f268086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f278086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f2e8086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f2f8086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f328086, 0x00, "Intel Avoton", 0}, + {0x1f338086, 0x00, "Intel Avoton", 0}, + {0x1f348086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f358086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f368086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f378086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f3e8086, 0x00, "Intel Avoton (RAID)", 0}, + {0x1f3f8086, 0x00, "Intel Avoton (RAID)", 0}, {0x23a38086, 0x00, "Intel Coleto Creek", 0}, + {0x28238086, 0x00, "Intel Wellsburg (RAID)", 0}, + {0x28278086, 0x00, "Intel Wellsburg (RAID)", 0}, {0x8c028086, 0x00, "Intel Lynx Point", 0}, {0x8c038086, 0x00, "Intel Lynx Point", 0}, - {0x8c048086, 0x00, "Intel Lynx Point", 0}, - {0x8c058086, 0x00, "Intel Lynx Point", 0}, - {0x8c068086, 0x00, "Intel Lynx Point", 0}, - {0x8c078086, 0x00, "Intel Lynx Point", 0}, - {0x8c0e8086, 0x00, "Intel Lynx Point", 0}, - {0x8c0f8086, 0x00, "Intel Lynx Point", 0}, + {0x8c048086, 0x00, "Intel Lynx Point (RAID)", 0}, + {0x8c058086, 0x00, "Intel Lynx Point (RAID)", 0}, + {0x8c068086, 0x00, "Intel Lynx Point (RAID)", 0}, + {0x8c078086, 0x00, "Intel Lynx Point (RAID)", 0}, + {0x8c0e8086, 0x00, "Intel Lynx Point (RAID)", 0}, + {0x8c0f8086, 0x00, "Intel Lynx Point (RAID)", 0}, + {0x8d028086, 0x00, "Intel Wellsburg", 0}, + {0x8d048086, 0x00, "Intel Wellsburg (RAID)", 0}, + {0x8d068086, 0x00, "Intel Wellsburg (RAID)", 0}, + {0x8d628086, 0x00, "Intel Wellsburg", 0}, + {0x8d648086, 0x00, "Intel Wellsburg (RAID)", 0}, + {0x8d668086, 0x00, "Intel Wellsburg (RAID)", 0}, + {0x8d6e8086, 0x00, "Intel Wellsburg (RAID)", 0}, + {0x9c028086, 0x00, "Intel Lynx Point-LP", 0}, + {0x9c038086, 0x00, "Intel Lynx Point-LP", 0}, + {0x9c048086, 0x00, "Intel Lynx Point-LP (RAID)", 0}, + {0x9c058086, 0x00, "Intel Lynx Point-LP (RAID)", 0}, + {0x9c068086, 0x00, "Intel Lynx Point-LP (RAID)", 0}, + {0x9c078086, 0x00, "Intel Lynx Point-LP (RAID)", 0}, + {0x9c0e8086, 0x00, "Intel Lynx Point-LP (RAID)", 0}, + {0x9c0f8086, 0x00, "Intel Lynx Point-LP (RAID)", 0}, {0x23238086, 0x00, "Intel DH89xxCC", 0}, {0x2360197b, 0x00, "JMicron JMB360", 0}, {0x2361197b, 0x00, "JMicron JMB361", AHCI_Q_NOFORCE}, Modified: stable/10/sys/dev/ata/ata-pci.h ============================================================================== --- stable/10/sys/dev/ata/ata-pci.h Sun Jan 5 22:48:12 2014 (r260347) +++ stable/10/sys/dev/ata/ata-pci.h Sun Jan 5 22:49:54 2014 (r260348) @@ -257,6 +257,11 @@ struct ata_pci_controller { #define ATA_PPT_R5 0x1e0e8086 #define ATA_PPT_R6 0x1e0f8086 +#define ATA_AVOTON_S1 0x1f208086 +#define ATA_AVOTON_S2 0x1f218086 +#define ATA_AVOTON_S3 0x1f308086 +#define ATA_AVOTON_S4 0x1f318086 + #define ATA_LPT_S1 0x8c008086 #define ATA_LPT_S2 0x8c018086 #define ATA_LPT_AH1 0x8c028086 @@ -270,6 +275,16 @@ struct ata_pci_controller { #define ATA_LPT_R5 0x8c0e8086 #define ATA_LPT_R6 0x8c0f8086 +#define ATA_WELLS_S1 0x8d008086 +#define ATA_WELLS_S2 0x8d088086 +#define ATA_WELLS_S3 0x8d608086 +#define ATA_WELLS_S4 0x8d688086 + +#define ATA_LPTLP_S1 0x9c008086 +#define ATA_LPTLP_S2 0x9c018086 +#define ATA_LPTLP_S3 0x9c088086 +#define ATA_LPTLP_S4 0x9c098086 + #define ATA_I31244 0x32008086 #define ATA_ISCH 0x811a8086 #define ATA_DH89XXCC 0x23238086 Modified: stable/10/sys/dev/ata/chipsets/ata-intel.c ============================================================================== --- stable/10/sys/dev/ata/chipsets/ata-intel.c Sun Jan 5 22:48:12 2014 (r260347) +++ stable/10/sys/dev/ata/chipsets/ata-intel.c Sun Jan 5 22:49:54 2014 (r260348) @@ -211,6 +211,10 @@ ata_intel_probe(device_t dev) { ATA_PPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Panther Point" }, { ATA_PPT_R5, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, { ATA_PPT_R6, 0, INTEL_AHCI, 0, ATA_SA300, "Panther Point" }, + { ATA_AVOTON_S1, 0, INTEL_6CH, 0, ATA_SA300, "Avoton" }, + { ATA_AVOTON_S2, 0, INTEL_6CH, 0, ATA_SA300, "Avoton" }, + { ATA_AVOTON_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Avoton" }, + { ATA_AVOTON_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Avoton" }, { ATA_LPT_S1, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_S2, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_AH1, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, @@ -223,6 +227,14 @@ ata_intel_probe(device_t dev) { ATA_LPT_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_R5, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, { ATA_LPT_R6, 0, INTEL_AHCI, 0, ATA_SA300, "Lynx Point" }, + { ATA_WELLS_S1, 0, INTEL_6CH, 0, ATA_SA300, "Wellsburg" }, + { ATA_WELLS_S2, 0, INTEL_6CH2, 0, ATA_SA300, "Wellsburg" }, + { ATA_WELLS_S3, 0, INTEL_6CH, 0, ATA_SA300, "Wellsburg" }, + { ATA_WELLS_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Wellsburg" }, + { ATA_LPTLP_S1, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point-LP" }, + { ATA_LPTLP_S2, 0, INTEL_6CH, 0, ATA_SA300, "Lynx Point-LP" }, + { ATA_LPTLP_S3, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point-LP" }, + { ATA_LPTLP_S4, 0, INTEL_6CH2, 0, ATA_SA300, "Lynx Point-LP" }, { ATA_I31244, 0, 0, 2, ATA_SA150, "31244" }, { ATA_ISCH, 0, 0, 1, ATA_UDMA5, "SCH" }, { ATA_DH89XXCC, 0, INTEL_AHCI, 0, ATA_SA300, "DH89xxCC" }, Modified: stable/10/sys/dev/usb/controller/ehci_pci.c ============================================================================== --- stable/10/sys/dev/usb/controller/ehci_pci.c Sun Jan 5 22:48:12 2014 (r260347) +++ stable/10/sys/dev/usb/controller/ehci_pci.c Sun Jan 5 22:49:54 2014 (r260348) @@ -124,6 +124,8 @@ ehci_pci_match(device_t self) return ("Intel Panther Point USB 2.0 controller"); case 0x1e2d8086: return ("Intel Panther Point USB 2.0 controller"); + case 0x1f2c8086: + return ("Intel Avoton USB 2.0 controller"); case 0x25ad8086: return "Intel 6300ESB USB 2.0 controller"; case 0x24cd8086: From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:51:10 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A8099F9D; Sun, 5 Jan 2014 22:51:10 +0000 (UTC) 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 7B3501CB2; Sun, 5 Jan 2014 22:51: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 s05MpA9O016652; Sun, 5 Jan 2014 22:51:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MpAk1016651; Sun, 5 Jan 2014 22:51:10 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052251.s05MpAk1016651@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:51:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260350 - stable/10/sys/dev/acpica X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:51:10 -0000 Author: mav Date: Sun Jan 5 22:51:09 2014 New Revision: 260350 URL: http://svnweb.freebsd.org/changeset/base/260350 Log: MFC r258164: Handle case when ACPI reports HPET device, but does not provide memory resource for it. In such case take the address range from the HPET table. This fixes hpet(4) driver attach on Asrock C2750D4I board. Modified: stable/10/sys/dev/acpica/acpi_hpet.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/acpica/acpi_hpet.c ============================================================================== --- stable/10/sys/dev/acpica/acpi_hpet.c Sun Jan 5 22:50:32 2014 (r260349) +++ stable/10/sys/dev/acpica/acpi_hpet.c Sun Jan 5 22:51:09 2014 (r260350) @@ -293,7 +293,7 @@ hpet_find(ACPI_HANDLE handle, UINT32 lev return (AE_OK); if (ACPI_FAILURE(acpi_GetInteger(handle, "_UID", &uid)) || id == uid) - *((int *)status) = 1; + *status = acpi_get_device(handle); return (AE_OK); } @@ -321,7 +321,7 @@ hpet_identify(driver_t *driver, device_t ACPI_TABLE_HPET *hpet; ACPI_STATUS status; device_t child; - int i, found; + int i; /* Only one HPET device can be added. */ if (devclass_get_device(hpet_devclass, 0)) @@ -332,12 +332,18 @@ hpet_identify(driver_t *driver, device_t if (ACPI_FAILURE(status)) return; /* Search for HPET device with same ID. */ - found = 0; + child = NULL; AcpiWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - 100, hpet_find, NULL, (void *)(uintptr_t)hpet->Sequence, (void *)&found); + 100, hpet_find, NULL, (void *)(uintptr_t)hpet->Sequence, + (void *)&child); /* If found - let it be probed in normal way. */ - if (found) + if (child) { + if (bus_get_resource(child, SYS_RES_MEMORY, 0, + NULL, NULL) != 0) + bus_set_resource(child, SYS_RES_MEMORY, 0, + hpet->Address.Address, HPET_MEM_WIDTH); continue; + } /* If not - create it from table info. */ child = BUS_ADD_CHILD(parent, 2, "hpet", 0); if (child == NULL) { From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:53:01 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E83C31BD; Sun, 5 Jan 2014 22:53:00 +0000 (UTC) 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 D37A11CBB; Sun, 5 Jan 2014 22:53: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 s05Mr0aj018776; Sun, 5 Jan 2014 22:53:00 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05Mr0PL018772; Sun, 5 Jan 2014 22:53:00 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052253.s05Mr0PL018772@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:53:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260351 - stable/10/sys/dev/sound/pci/hda X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:53:01 -0000 Author: mav Date: Sun Jan 5 22:52:59 2014 New Revision: 260351 URL: http://svnweb.freebsd.org/changeset/base/260351 Log: MFC r258168, r258170: Add some more Intel HDA controller and CODEC IDs. Modified: stable/10/sys/dev/sound/pci/hda/hdac.c stable/10/sys/dev/sound/pci/hda/hdac.h stable/10/sys/dev/sound/pci/hda/hdacc.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/sound/pci/hda/hdac.c ============================================================================== --- stable/10/sys/dev/sound/pci/hda/hdac.c Sun Jan 5 22:51:09 2014 (r260350) +++ stable/10/sys/dev/sound/pci/hda/hdac.c Sun Jan 5 22:52:59 2014 (r260351) @@ -78,11 +78,20 @@ static const struct { char quirks_on; char quirks_off; } hdac_devices[] = { + { HDA_INTEL_OAK, "Intel Oaktrail", 0, 0 }, + { HDA_INTEL_BAY, "Intel BayTrail", 0, 0 }, + { HDA_INTEL_HSW1, "Intel Haswell", 0, 0 }, + { HDA_INTEL_HSW2, "Intel Haswell", 0, 0 }, + { HDA_INTEL_HSW3, "Intel Haswell", 0, 0 }, { HDA_INTEL_CPT, "Intel Cougar Point", 0, 0 }, { HDA_INTEL_PATSBURG,"Intel Patsburg", 0, 0 }, { HDA_INTEL_PPT1, "Intel Panther Point", 0, 0 }, { HDA_INTEL_LPT1, "Intel Lynx Point", 0, 0 }, { HDA_INTEL_LPT2, "Intel Lynx Point", 0, 0 }, + { HDA_INTEL_WELLS1, "Intel Wellsburg", 0, 0 }, + { HDA_INTEL_WELLS2, "Intel Wellsburg", 0, 0 }, + { HDA_INTEL_LPTLP1, "Intel Lynx Point-LP", 0, 0 }, + { HDA_INTEL_LPTLP2, "Intel Lynx Point-LP", 0, 0 }, { HDA_INTEL_82801F, "Intel 82801F", 0, 0 }, { HDA_INTEL_63XXESB, "Intel 631x/632xESB", 0, 0 }, { HDA_INTEL_82801G, "Intel 82801G", 0, 0 }, Modified: stable/10/sys/dev/sound/pci/hda/hdac.h ============================================================================== --- stable/10/sys/dev/sound/pci/hda/hdac.h Sun Jan 5 22:51:09 2014 (r260350) +++ stable/10/sys/dev/sound/pci/hda/hdac.h Sun Jan 5 22:52:59 2014 (r260351) @@ -41,6 +41,11 @@ /* Intel */ #define INTEL_VENDORID 0x8086 +#define HDA_INTEL_OAK HDA_MODEL_CONSTRUCT(INTEL, 0x080a) +#define HDA_INTEL_BAY HDA_MODEL_CONSTRUCT(INTEL, 0x0f04) +#define HDA_INTEL_HSW1 HDA_MODEL_CONSTRUCT(INTEL, 0x0a0c) +#define HDA_INTEL_HSW2 HDA_MODEL_CONSTRUCT(INTEL, 0x0c0c) +#define HDA_INTEL_HSW3 HDA_MODEL_CONSTRUCT(INTEL, 0x0d0c) #define HDA_INTEL_CPT HDA_MODEL_CONSTRUCT(INTEL, 0x1c20) #define HDA_INTEL_PATSBURG HDA_MODEL_CONSTRUCT(INTEL, 0x1d20) #define HDA_INTEL_PPT1 HDA_MODEL_CONSTRUCT(INTEL, 0x1e20) @@ -56,6 +61,10 @@ #define HDA_INTEL_SCH HDA_MODEL_CONSTRUCT(INTEL, 0x811b) #define HDA_INTEL_LPT1 HDA_MODEL_CONSTRUCT(INTEL, 0x8c20) #define HDA_INTEL_LPT2 HDA_MODEL_CONSTRUCT(INTEL, 0x8c21) +#define HDA_INTEL_WELLS1 HDA_MODEL_CONSTRUCT(INTEL, 0x8d20) +#define HDA_INTEL_WELLS2 HDA_MODEL_CONSTRUCT(INTEL, 0x8d21) +#define HDA_INTEL_LPTLP1 HDA_MODEL_CONSTRUCT(INTEL, 0x9c20) +#define HDA_INTEL_LPTLP2 HDA_MODEL_CONSTRUCT(INTEL, 0x9c21) #define HDA_INTEL_ALL HDA_MODEL_CONSTRUCT(INTEL, 0xffff) /* Nvidia */ @@ -605,6 +614,7 @@ #define HDA_CODEC_INTELIP2 HDA_CODEC_CONSTRUCT(INTEL, 0x2804) #define HDA_CODEC_INTELCPT HDA_CODEC_CONSTRUCT(INTEL, 0x2805) #define HDA_CODEC_INTELPPT HDA_CODEC_CONSTRUCT(INTEL, 0x2806) +#define HDA_CODEC_INTELHSW HDA_CODEC_CONSTRUCT(INTEL, 0x2807) #define HDA_CODEC_INTELCL HDA_CODEC_CONSTRUCT(INTEL, 0x29fb) #define HDA_CODEC_INTELXXXX HDA_CODEC_CONSTRUCT(INTEL, 0xffff) Modified: stable/10/sys/dev/sound/pci/hda/hdacc.c ============================================================================== --- stable/10/sys/dev/sound/pci/hda/hdacc.c Sun Jan 5 22:51:09 2014 (r260350) +++ stable/10/sys/dev/sound/pci/hda/hdacc.c Sun Jan 5 22:52:59 2014 (r260351) @@ -318,6 +318,7 @@ static const struct { { HDA_CODEC_INTELIP2, 0, "Intel Ibex Peak" }, { HDA_CODEC_INTELCPT, 0, "Intel Cougar Point" }, { HDA_CODEC_INTELPPT, 0, "Intel Panther Point" }, + { HDA_CODEC_INTELHSW, 0, "Intel Haswell" }, { HDA_CODEC_INTELCL, 0, "Intel Crestline" }, { HDA_CODEC_SII1390, 0, "Silicon Image SiI1390" }, { HDA_CODEC_SII1392, 0, "Silicon Image SiI1392" }, From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:53:56 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 75C2832F; Sun, 5 Jan 2014 22:53:56 +0000 (UTC) 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 613FA1CC1; Sun, 5 Jan 2014 22:53: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 s05MrupW018905; Sun, 5 Jan 2014 22:53:56 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MruUn018904; Sun, 5 Jan 2014 22:53:56 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052253.s05MruUn018904@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:53:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260352 - stable/10/sys/dev/ichsmb X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:53:56 -0000 Author: mav Date: Sun Jan 5 22:53:55 2014 New Revision: 260352 URL: http://svnweb.freebsd.org/changeset/base/260352 Log: MFC r258169: Add ID for Intel Avoton SMBus controller. Modified: stable/10/sys/dev/ichsmb/ichsmb_pci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/ichsmb/ichsmb_pci.c ============================================================================== --- stable/10/sys/dev/ichsmb/ichsmb_pci.c Sun Jan 5 22:52:59 2014 (r260351) +++ stable/10/sys/dev/ichsmb/ichsmb_pci.c Sun Jan 5 22:53:55 2014 (r260352) @@ -85,6 +85,7 @@ __FBSDID("$FreeBSD$"); #define ID_PATSBURG 0x1d228086 #define ID_CPT 0x1c228086 #define ID_PPT 0x1e228086 +#define ID_AVOTON 0x1f3c8086 #define ID_COLETOCRK 0x23B08086 #define ID_LPT 0x8c228086 @@ -190,6 +191,9 @@ ichsmb_pci_probe(device_t dev) case ID_PPT: device_set_desc(dev, "Intel Panther Point SMBus controller"); break; + case ID_AVOTON: + device_set_desc(dev, "Intel Avoton SMBus controller"); + break; case ID_LPT: device_set_desc(dev, "Intel Lynx Point SMBus controller"); break; From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:55:22 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6467B470; Sun, 5 Jan 2014 22:55:22 +0000 (UTC) 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 443F41CC7; Sun, 5 Jan 2014 22:55: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 s05MtM8G019191; Sun, 5 Jan 2014 22:55:22 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MtLlX019188; Sun, 5 Jan 2014 22:55:21 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052255.s05MtLlX019188@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:55:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260353 - stable/10/sys/dev/ahci X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:55:22 -0000 Author: mav Date: Sun Jan 5 22:55:21 2014 New Revision: 260353 URL: http://svnweb.freebsd.org/changeset/base/260353 Log: MFC r258173: Add few more minor parts of DevSleep support from AHCI 1.3.1 proposal. Modified: stable/10/sys/dev/ahci/ahci.c stable/10/sys/dev/ahci/ahci.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/ahci/ahci.c ============================================================================== --- stable/10/sys/dev/ahci/ahci.c Sun Jan 5 22:53:55 2014 (r260352) +++ stable/10/sys/dev/ahci/ahci.c Sun Jan 5 22:55:21 2014 (r260353) @@ -1087,13 +1087,16 @@ ahci_ch_attach(device_t dev) version = ATA_INL(ctlr->r_mem, AHCI_VS); if (version < 0x00010200 && (ctlr->caps & AHCI_CAP_FBSS)) ch->chcaps |= AHCI_P_CMD_FBSCP; + if (ch->caps2 & AHCI_CAP2_SDS) + ch->chscaps = ATA_INL(ch->r_mem, AHCI_P_DEVSLP); if (bootverbose) { - device_printf(dev, "Caps:%s%s%s%s%s\n", + device_printf(dev, "Caps:%s%s%s%s%s%s\n", (ch->chcaps & AHCI_P_CMD_HPCP) ? " HPCP":"", (ch->chcaps & AHCI_P_CMD_MPSP) ? " MPSP":"", (ch->chcaps & AHCI_P_CMD_CPD) ? " CPD":"", (ch->chcaps & AHCI_P_CMD_ESP) ? " ESP":"", - (ch->chcaps & AHCI_P_CMD_FBSCP) ? " FBSCP":""); + (ch->chcaps & AHCI_P_CMD_FBSCP) ? " FBSCP":"", + (ch->chscaps & AHCI_P_DEVSLP_DSP) ? " DSP":""); } /* Create the device queue for our SIM. */ devq = cam_simq_alloc(ch->numslots); Modified: stable/10/sys/dev/ahci/ahci.h ============================================================================== --- stable/10/sys/dev/ahci/ahci.h Sun Jan 5 22:53:55 2014 (r260352) +++ stable/10/sys/dev/ahci/ahci.h Sun Jan 5 22:55:21 2014 (r260353) @@ -137,6 +137,7 @@ #define ATA_SC_IPM_NONE 0x00000000 #define ATA_SC_IPM_DIS_PARTIAL 0x00000100 #define ATA_SC_IPM_DIS_SLUMBER 0x00000200 +#define ATA_SC_IPM_DIS_DEVSLEEP 0x00000400 #define ATA_SACTIVE 16 @@ -286,6 +287,17 @@ #define AHCI_P_FBS_ADO_SHIFT 12 #define AHCI_P_FBS_DWE 0x000f0000 #define AHCI_P_FBS_DWE_SHIFT 16 +#define AHCI_P_DEVSLP 0x44 +#define AHCI_P_DEVSLP_ADSE 0x00000001 +#define AHCI_P_DEVSLP_DSP 0x00000002 +#define AHCI_P_DEVSLP_DETO 0x000003fc +#define AHCI_P_DEVSLP_DETO_SHIFT 2 +#define AHCI_P_DEVSLP_MDAT 0x00007c00 +#define AHCI_P_DEVSLP_MDAT_SHIFT 10 +#define AHCI_P_DEVSLP_DITO 0x01ff8000 +#define AHCI_P_DEVSLP_DITO_SHIFT 15 +#define AHCI_P_DEVSLP_DM 0x0e000000 +#define AHCI_P_DEVSLP_DM_SHIFT 25 /* Just to be sure, if building as module. */ #if MAXPHYS < 512 * 1024 @@ -402,6 +414,7 @@ struct ahci_channel { uint32_t caps; /* Controller capabilities */ uint32_t caps2; /* Controller capabilities */ uint32_t chcaps; /* Channel capabilities */ + uint32_t chscaps; /* Channel sleep capabilities */ int quirks; int numslots; /* Number of present slots */ int pm_level; /* power management level */ From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 23:00:39 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 11A196B3; Sun, 5 Jan 2014 23:00:39 +0000 (UTC) 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 D7FDE1CF0; Sun, 5 Jan 2014 23:00: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 s05N0ccl020618; Sun, 5 Jan 2014 23:00:38 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05N0cPs020617; Sun, 5 Jan 2014 23:00:38 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052300.s05N0cPs020617@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 23:00:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260354 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 23:00:39 -0000 Author: mav Date: Sun Jan 5 23:00:38 2014 New Revision: 260354 URL: http://svnweb.freebsd.org/changeset/base/260354 Log: MFC r256614: - Take BIO lock in biodone() only when there is no completion callback set and so we should wake up thread waiting in biowait(). - Remove msleep() timeout from biowait(). It was added 11 years ago, when there was no locks used, and it should not be needed any more. Modified: stable/10/sys/kern/vfs_bio.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/vfs_bio.c ============================================================================== --- stable/10/sys/kern/vfs_bio.c Sun Jan 5 22:55:21 2014 (r260353) +++ stable/10/sys/kern/vfs_bio.c Sun Jan 5 23:00:38 2014 (r260354) @@ -3559,9 +3559,6 @@ biodone(struct bio *bp) vm_offset_t start, end; int transient; - mtxp = mtx_pool_find(mtxpool_sleep, bp); - mtx_lock(mtxp); - bp->bio_flags |= BIO_DONE; if ((bp->bio_flags & BIO_TRANSIENT_MAPPING) != 0) { start = trunc_page((vm_offset_t)bp->bio_data); end = round_page((vm_offset_t)bp->bio_data + bp->bio_length); @@ -3571,11 +3568,16 @@ biodone(struct bio *bp) start = end = 0; } done = bp->bio_done; - if (done == NULL) + if (done == NULL) { + mtxp = mtx_pool_find(mtxpool_sleep, bp); + mtx_lock(mtxp); + bp->bio_flags |= BIO_DONE; wakeup(bp); - mtx_unlock(mtxp); - if (done != NULL) + mtx_unlock(mtxp); + } else { + bp->bio_flags |= BIO_DONE; done(bp); + } if (transient) { pmap_qremove(start, OFF_TO_IDX(end - start)); vmem_free(transient_arena, start, end - start); @@ -3585,9 +3587,6 @@ biodone(struct bio *bp) /* * Wait for a BIO to finish. - * - * XXX: resort to a timeout for now. The optimal locking (if any) for this - * case is not yet clear. */ int biowait(struct bio *bp, const char *wchan) @@ -3597,7 +3596,7 @@ biowait(struct bio *bp, const char *wcha mtxp = mtx_pool_find(mtxpool_sleep, bp); mtx_lock(mtxp); while ((bp->bio_flags & BIO_DONE) == 0) - msleep(bp, mtxp, PRIBIO, wchan, hz / 10); + msleep(bp, mtxp, PRIBIO, wchan, 0); mtx_unlock(mtxp); if (bp->bio_error != 0) return (bp->bio_error); From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 23:01:29 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BE228802; Sun, 5 Jan 2014 23:01:29 +0000 (UTC) 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 912EE1D4A; Sun, 5 Jan 2014 23:01: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 s05N1TcH022660; Sun, 5 Jan 2014 23:01:29 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05N1TjX022655; Sun, 5 Jan 2014 23:01:29 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401052301.s05N1TjX022655@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 5 Jan 2014 23:01:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260355 - head/usr.bin/find X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 23:01:29 -0000 Author: jilles Date: Sun Jan 5 23:01:28 2014 New Revision: 260355 URL: http://svnweb.freebsd.org/changeset/base/260355 Log: find: Fix two more problems with -lname and -ilname: * Do not match symlinks that are followed because of -H or -L. This is explicitly documented in GNU find's info file and is like -type l. * Fix matching symlinks in subdirectories when fts changes directories. Also, avoid some readlink() calls on files that are obviously not symlinks (because of fts(3) restrictions, not all of them). MFC after: 1 week Modified: head/usr.bin/find/find.1 head/usr.bin/find/function.c Modified: head/usr.bin/find/find.1 ============================================================================== --- head/usr.bin/find/find.1 Sun Jan 5 23:00:38 2014 (r260354) +++ head/usr.bin/find/find.1 Sun Jan 5 23:01:28 2014 (r260355) @@ -31,7 +31,7 @@ .\" @(#)find.1 8.7 (Berkeley) 5/9/95 .\" $FreeBSD$ .\" -.Dd November 18, 2012 +.Dd January 5, 2014 .Dt FIND 1 .Os .Sh NAME @@ -520,6 +520,8 @@ Like .Ic -name , but the contents of the symbolic link are matched instead of the file name. +Note that this only matches broken symbolic links +if symbolic links are being followed. This is a GNU find extension. .It Ic -ls This primary always evaluates to true. Modified: head/usr.bin/find/function.c ============================================================================== --- head/usr.bin/find/function.c Sun Jan 5 23:00:38 2014 (r260354) +++ head/usr.bin/find/function.c Sun Jan 5 23:01:28 2014 (r260355) @@ -1125,7 +1125,17 @@ f_name(PLAN *plan, FTSENT *entry) ssize_t len; if (plan->flags & F_LINK) { - len = readlink(entry->fts_path, fn, sizeof(fn) - 1); + /* + * The below test both avoids obviously useless readlink() + * calls and ensures that symlinks with existent target do + * not match if symlinks are being followed. + * Assumption: fts will stat all symlinks that are to be + * followed and will return the stat information. + */ + if (entry->fts_info != FTS_NSOK && entry->fts_info != FTS_SL && + entry->fts_info != FTS_SLNONE) + return 0; + len = readlink(entry->fts_accpath, fn, sizeof(fn) - 1); if (len == -1) return 0; fn[len] = '\0'; From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 23:02:03 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9AEA494E; Sun, 5 Jan 2014 23:02:03 +0000 (UTC) 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 86D351D54; Sun, 5 Jan 2014 23:02: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 s05N23E9022829; Sun, 5 Jan 2014 23:02:03 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05N23WY022828; Sun, 5 Jan 2014 23:02:03 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052302.s05N23WY022828@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 23:02:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260356 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 23:02:03 -0000 Author: mav Date: Sun Jan 5 23:02:03 2014 New Revision: 260356 URL: http://svnweb.freebsd.org/changeset/base/260356 Log: MFC r256885: Remove global device lock acquisition from dev_relthread(), replacing it with atomics on per-device data. Modified: stable/10/sys/kern/kern_conf.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/kern_conf.c ============================================================================== --- stable/10/sys/kern/kern_conf.c Sun Jan 5 23:01:28 2014 (r260355) +++ stable/10/sys/kern/kern_conf.c Sun Jan 5 23:02:03 2014 (r260356) @@ -193,7 +193,7 @@ dev_refthread(struct cdev *dev, int *ref if (csw != NULL) { cdp = cdev2priv(dev); if ((cdp->cdp_flags & CDP_SCHED_DTR) == 0) - dev->si_threadcount++; + atomic_add_long(&dev->si_threadcount, 1); else csw = NULL; } @@ -234,7 +234,7 @@ devvn_refthread(struct vnode *vp, struct if ((cdp->cdp_flags & CDP_SCHED_DTR) == 0) { csw = dev->si_devsw; if (csw != NULL) - dev->si_threadcount++; + atomic_add_long(&dev->si_threadcount, 1); } dev_unlock(); if (csw != NULL) { @@ -251,11 +251,9 @@ dev_relthread(struct cdev *dev, int ref) mtx_assert(&devmtx, MA_NOTOWNED); if (!ref) return; - dev_lock(); KASSERT(dev->si_threadcount > 0, ("%s threadcount is wrong", dev->si_name)); - dev->si_threadcount--; - dev_unlock(); + atomic_subtract_rel_long(&dev->si_threadcount, 1); } int From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 23:13:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9F830F81; Sun, 5 Jan 2014 23:13:21 +0000 (UTC) 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 8806E1E02; Sun, 5 Jan 2014 23:13: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 s05NDLKM027483; Sun, 5 Jan 2014 23:13:21 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05NDJs9027469; Sun, 5 Jan 2014 23:13:19 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201401052313.s05NDJs9027469@svn.freebsd.org> From: Eric Davis Date: Sun, 5 Jan 2014 23:13:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r260357 - in stable/7: share/man/man4 sys/amd64/conf sys/conf sys/dev/bxe sys/i386/conf sys/modules/bxe X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 23:13:21 -0000 Author: edavis Date: Sun Jan 5 23:13:18 2014 New Revision: 260357 URL: http://svnweb.freebsd.org/changeset/base/260357 Log: MFC Broadcom 10Gb bxe driver Merged r255736, r255861, r256299, r256341, r258187, r259928, r260113 Approved by: davidch (mentor) Added: stable/7/share/man/man4/bxe.4 (contents, props changed) stable/7/sys/dev/bxe/ stable/7/sys/dev/bxe/57710_init_values.c (contents, props changed) stable/7/sys/dev/bxe/57710_int_offsets.h (contents, props changed) stable/7/sys/dev/bxe/57711_init_values.c (contents, props changed) stable/7/sys/dev/bxe/57711_int_offsets.h (contents, props changed) stable/7/sys/dev/bxe/57712_init_values.c (contents, props changed) stable/7/sys/dev/bxe/57712_int_offsets.h (contents, props changed) stable/7/sys/dev/bxe/bxe.c (contents, props changed) stable/7/sys/dev/bxe/bxe.h (contents, props changed) stable/7/sys/dev/bxe/bxe_dcb.h (contents, props changed) stable/7/sys/dev/bxe/bxe_debug.c (contents, props changed) stable/7/sys/dev/bxe/bxe_elink.c (contents, props changed) stable/7/sys/dev/bxe/bxe_elink.h (contents, props changed) stable/7/sys/dev/bxe/bxe_stats.c (contents, props changed) stable/7/sys/dev/bxe/bxe_stats.h (contents, props changed) stable/7/sys/dev/bxe/ecore_fw_defs.h (contents, props changed) stable/7/sys/dev/bxe/ecore_hsi.h (contents, props changed) stable/7/sys/dev/bxe/ecore_init.h (contents, props changed) stable/7/sys/dev/bxe/ecore_init_ops.h (contents, props changed) stable/7/sys/dev/bxe/ecore_mfw_req.h (contents, props changed) stable/7/sys/dev/bxe/ecore_reg.h (contents, props changed) stable/7/sys/dev/bxe/ecore_sp.c (contents, props changed) stable/7/sys/dev/bxe/ecore_sp.h (contents, props changed) stable/7/sys/modules/bxe/ stable/7/sys/modules/bxe/Makefile (contents, props changed) Modified: stable/7/share/man/man4/altq.4 stable/7/share/man/man4/vlan.4 stable/7/sys/amd64/conf/GENERIC stable/7/sys/amd64/conf/NOTES stable/7/sys/conf/NOTES stable/7/sys/conf/files stable/7/sys/conf/files.amd64 stable/7/sys/conf/files.i386 stable/7/sys/i386/conf/GENERIC stable/7/sys/i386/conf/NOTES Directory Properties: stable/7/share/ (props changed) stable/7/share/man/ (props changed) stable/7/share/man/man4/ (props changed) stable/7/sys/ (props changed) Modified: stable/7/share/man/man4/altq.4 ============================================================================== --- stable/7/share/man/man4/altq.4 Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/share/man/man4/altq.4 Sun Jan 5 23:13:18 2014 (r260357) @@ -127,6 +127,7 @@ They have been applied to the following .Xr bce 4 , .Xr bfe 4 , .Xr bge 4 , +.Xr bxe 4 , .Xr cas 4 , .Xr dc 4 , .Xr de 4 , Added: stable/7/share/man/man4/bxe.4 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/share/man/man4/bxe.4 Sun Jan 5 23:13:18 2014 (r260357) @@ -0,0 +1,341 @@ +.\" Copyright (c) 2013 Broadcom Corporation. 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. +.\" 3. Neither the name of Broadcom Corporation nor the name of its contributors +.\" may be used to endorse or promote products derived from this software +.\" without specific prior written consent. +.\" +.\" 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. +.\" +.\" $FreeBSD$ +.\" +.Dd April 29, 2012 +.Dt BXE 4 +.Os +.Sh NAME +.Nm bxe +.Nd Broadcom NetXtreme II Ethernet 10Gb PCIe adapter driver +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device bxe" +.Ed +.Pp +Alternatively, to load the driver as a module at boot time, place the +following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +if_bxe_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides support for PCIe 10Gb Ethernet adapters based on the Broadcom +NetXtreme II family of 10Gb chips. +The driver supports Jumbo Frames, VLAN +tagging, checksum offload (IPv4, TCP, UDP, IPv6-TCP, IPv6-UDP), MSI-X +interrupts, TCP Segmentation Offload (TSO), Large Receive Offload (LRO), and +Receive Side Scaling (RSS). +.Sh HARDWARE +The +.Nm +driver provides support for various NICs based on the Broadcom NetXtreme II +family of 10Gb Ethernet controller chips, including the following: +.Pp +.Bl -bullet -compact +.It +Broadcom NetXtreme II BCM57710 10Gb +.It +Broadcom NetXtreme II BCM57711 10Gb +.It +Broadcom NetXtreme II BCM57711E 10Gb +.It +Broadcom NetXtreme II BCM57712 10Gb +.It +Broadcom NetXtreme II BCM57712-MF 10Gb +.It +Broadcom NetXtreme II BCM57800 10Gb +.It +Broadcom NetXtreme II BCM57800-MF 10Gb +.It +Broadcom NetXtreme II BCM57810 10Gb +.It +Broadcom NetXtreme II BCM57810-MF 10Gb +.It +Broadcom NetXtreme II BCM57840 10Gb / 20Gb +.It +Broadcom NetXtreme II BCM57840-MF 10Gb +.El +.Sh CONFIGURATION +There a number of configuration parameters that can be set to tweak the +driver's behavior. +These parameters can be set via the +.Xr loader.conf 5 +file to take affect during the next system boot. +The following parameters affect +ALL instances of the driver. +.Bl -tag -width indent +.It Va hw.bxe.debug +DEFAULT = 0 +.br +Sets the default logging level of the driver. +See the Diagnostics and Debugging +section below for more details. +.It Va hw.bxe.interrupt_mode +DEFAULT = 2 +.br +Sets the default interrupt mode: 0=IRQ, 1=MSI, 2=MSIX. +If set to MSIX and +allocation fails, the driver will roll back and attempt MSI allocation. +If MSI +allocation fails, the driver will roll back and attempt fixed level IRQ +allocation. +If IRQ allocation fails, then the driver load fails. +With MSI/MSIX, +the driver attempts to allocate a vector for each queue in addition to one more +for default processing. +.It Va hw.bxe.queue_count +DEFAULT = 4 +.br +Sets the default number of fast path packet processing queues. +Note that one +MSI/MSIX interrupt vector is allocated per-queue. +.It Va hw.bxe.max_rx_bufs +DEFAULT = 0 +.br +Sets the maximum number of receive buffers to allocate per-queue. +Zero(0) means +to allocate a receive buffer for every buffer descriptor. +By default this +equates to 4080 buffers per-queue which is the maximum value for this config +parameter. +.It Va hw.bxe.hc_rx_ticks +DEFAULT = 25 +.br +Sets the number of ticks for host interrupt coalescing in the receive path. +.It Va hw.bxe.hc_tx_ticks +DEFAULT = 50 +.br +Sets the number of ticks for host interrupt coalescing in the transmit path. +.It Va hw.bxe.rx_budget +DEFAULT = 0xffffffff +.br +Sets the maximum number of receive packets to process in an interrupt. +If the +budget is reached then the remaining/pending packets will be processed in a +scheduled taskqueue. +.It Va hw.bxe.max_aggregation_size +DEFAULT = 32768 +.br +Sets the maximum LRO aggregration byte size. +The higher the value the more +packets the hardware will aggregate. +Maximum is 65K. +.It Va hw.bxe.mrrs +DEFAULT = -1 +.br +Sets the PCI MRRS: -1=Auto, 0=128B, 1=256B, 2=512B, 3=1KB +.It Va hw.bxe.autogreeen +DEFAULT = 0 +.br +Set AutoGrEEEN: 0=HW_DEFAULT, 1=FORCE_ON, 2=FORCE_OFF +.It Va hw.bxe.udp_rss +DEFAULT = 0 +.br +Enable/Disable 4-tuple RSS for UDP: 0=DISABLED, 1=ENABLED +.El +.Pp +Special care must be taken when modifying the number of queues and receive +buffers. +FreeBSD imposes a limit on the maximum number of +.Xr mbuf 9 +allocations. +If buffer allocations fail, the interface initialization will fail +and the interface will not be usable. +The driver does not make a best effort +for buffer allocations. +It is an all or nothing effort. +.Pp +You can tweak the +.Xr mbuf 9 +allocation limit using +.Xr sysctl 8 +and view the current usage with +.Xr netstat 1 +as follows: +.Bd -literal -offset indent +# netstat -m +# sysctl kern.ipc.nmbclusters +# sysctl kern.ipc.nmbclusters=<#> +.Ed +.Pp +There are additional configuration parameters that can be set on a per-instance +basis to dynamically override the default configuration. +The '#' below must be +replaced with the driver instance / interface unit number: +.Bl -tag -width indent +.It Va dev.bxe.#.debug +DEFAULT = 0 +.br +Sets the default logging level of the driver instance. +See +.Va hw.bxe.debug +above and +the Diagnostics and Debugging section below for more details. +.It Va dev.bxe.#.rx_budget +DEFAULT = 0xffffffff +.br +Sets the maximum number of receive packets to process in an interrupt for the +driver instance. +See +.Va hw.bxe.rx_budget +above for more details. +.El +.Pp +Additional items can be configured using +.Xr ifconfig 8 : +.Bl -tag -width indent +.It Va MTU - Maximum Transmission Unit +DEFAULT = 1500 +.br +RANGE = 46-9184 +.br +# ifconfig bxe# mtu +.It Va Promiscuous Mode +DEFAULT = OFF +.br +# ifconfig bxe# [ promisc | -promisc ] +.It Va Rx/Tx Checksum Offload +DEFAULT = RX/TX CSUM ON +.br +Note that the Rx and Tx settings are not independent. +.br +# ifconfig bxe# [ rxcsum | -rxcsum | txcsum | -txcsum ] +.It Va TSO - TCP Segmentation Offload +DEFAULT = ON +.br +# ifconfig bxe# [ tso | -tso | tso6 | -tso6 ] +.It Va LRO - TCP Large Receive Offload +DEFAULT = ON +.br +# ifconfig bxe# [ lro | -lro ] +.El +.Sh DIAGNOSTICS AND DEBUGGING +There are many statistics exposed by +.Nm +via +.Xr sysctl 8 . +.Pp +To dump the default driver configuration: +.Bd -literal -offset indent +# sysctl -a | grep hw.bxe +.Ed +.Pp +To dump every instance's configuration and detailed statistics: +.Bd -literal -offset indent +# sysctl -a | grep dev.bxe +.Ed +.Pp +To dump information for a single instance (replace the '#' with the driver +instance / interface unit number): +.Bd -literal -offset indent +# sysctl -a | grep dev.bxe.# +.Ed +.Pp +To dump information for all the queues of a single instance: +.Bd -literal -offset indent +# sysctl -a | grep dev.bxe.#.queue +.Ed +.Pp +To dump information for a single queue of a single instance (replace the +additional '#' with the queue number): +.Bd -literal -offset indent +# sysctl -a | grep dev.bxe.#.queue.# +.Ed +.Pp +The +.Nm +driver has the ability to dump a ton of debug messages to the system +log. +The default level of logging can be set with the +.Va hw.bxe.debug +.Xr sysctl 8 . +Take care with this setting as it can result in too +many logs being dumped. +Since this parameter is the default one, it affects +every instance and will dramatically change the timing in the driver. +A better +alternative to aid in debugging is to dynamically change the debug level of a +specific instance with the +.Va dev.bxe.#.debug +.Xr sysctl 8 . +This allows +you to turn on/off logging of various debug groups on-the-fly. +.Pp +The different debug groups that can be toggled are: +.Bd -literal -offset indent +DBG_LOAD 0x00000001 /* load and unload */ +DBG_INTR 0x00000002 /* interrupt handling */ +DBG_SP 0x00000004 /* slowpath handling */ +DBG_STATS 0x00000008 /* stats updates */ +DBG_TX 0x00000010 /* packet transmit */ +DBG_RX 0x00000020 /* packet receive */ +DBG_PHY 0x00000040 /* phy/link handling */ +DBG_IOCTL 0x00000080 /* ioctl handling */ +DBG_MBUF 0x00000100 /* dumping mbuf info */ +DBG_REGS 0x00000200 /* register access */ +DBG_LRO 0x00000400 /* lro processing */ +DBG_ASSERT 0x80000000 /* debug assert */ +DBG_ALL 0xFFFFFFFF /* flying monkeys */ +.Ed +.Pp +For example, to debug an issue in the receive path on bxe0: +.Bd -literal -offset indent +# sysctl dev.bxe.0.debug=0x22 +.Ed +.Pp +When finished turn the logging back off: +.Bd -literal -offset indent +# sysctl dev.bxe.0.debug=0 +.Ed +.Sh SEE ALSO +.Xr netstat 1 , +.Xr altq 4 , +.Xr arp 4 , +.Xr netintro 4 , +.Xr ng_ether 4 , +.Xr vlan 4 , +.Xr ifconfig 8 +.Sh HISTORY +The +.Nm +device driver first appeared in +.Fx 9.0 . +.Sh AUTHORS +The +.Nm +driver was written by +.An Eric Davis Aq edavis@broadcom.com , +.An David Christensen Aq davidch@broadcom.com , +and +.An Gary Zambrano Aq zambrano@broadcom.com . Modified: stable/7/share/man/man4/vlan.4 ============================================================================== --- stable/7/share/man/man4/vlan.4 Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/share/man/man4/vlan.4 Sun Jan 5 23:13:18 2014 (r260357) @@ -127,6 +127,7 @@ in hardware: .Xr ale 4 , .Xr bce 4 , .Xr bge 4 , +.Xr bxe 4 , .Xr cxgb 4 , .Xr em 4 , .Xr igb 4 , Modified: stable/7/sys/amd64/conf/GENERIC ============================================================================== --- stable/7/sys/amd64/conf/GENERIC Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/sys/amd64/conf/GENERIC Sun Jan 5 23:13:18 2014 (r260357) @@ -184,6 +184,7 @@ device ppi # Parallel port interface d #device puc # PCI Ethernet NICs. +device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 Gigabit Ethernet Family device igb # Intel PRO/1000 PCIE Server Gigabit Family Modified: stable/7/sys/amd64/conf/NOTES ============================================================================== --- stable/7/sys/amd64/conf/NOTES Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/sys/amd64/conf/NOTES Sun Jan 5 23:13:18 2014 (r260357) @@ -306,6 +306,8 @@ options DRM_DEBUG # Include debug print # # ath: Atheros a/b/g WiFi adapters (requires ath_hal and wlan) +# bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet +# adapters. # ed: Western Digital and SMC 80xx; Novell NE1000 and NE2000; 3Com 3C503 # HP PC Lan+, various PC Card devices # (requires miibus) @@ -317,6 +319,7 @@ options DRM_DEBUG # Include debug print # ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter # wpi: Intel 3945ABG Wireless LAN controller +device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE device ed options ED_3C503 options ED_HPP Modified: stable/7/sys/conf/NOTES ============================================================================== --- stable/7/sys/conf/NOTES Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/sys/conf/NOTES Sun Jan 5 23:13:18 2014 (r260357) @@ -1773,6 +1773,8 @@ device xmphy # XaQti XMAC II # BCM570x family of controllers, including the 3Com 3c996-T, # the Netgear GA302T, the SysKonnect SK-9D21 and SK-9D41, and # the embedded gigE NICs on Dell PowerEdge 2550 servers. +# bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet +# adapters. # cas: Sun Cassini/Cassini+ and National Semiconductor DP83065 Saturn # cm: Arcnet SMC COM90c26 / SMC COM90c56 # (and SMC COM90c66 in '56 compatibility mode) adapters. Modified: stable/7/sys/conf/files ============================================================================== --- stable/7/sys/conf/files Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/sys/conf/files Sun Jan 5 23:13:18 2014 (r260357) @@ -669,6 +669,7 @@ dev/buslogic/bt_isa.c optional bt isa dev/buslogic/bt_mca.c optional bt mca dev/buslogic/bt_pci.c optional bt pci dev/cardbus/cardbus.c optional cardbus +dev/cardbus/cardbus.c optional cardbus dev/cardbus/cardbus_cis.c optional cardbus dev/cardbus/cardbus_device.c optional cardbus dev/cas/if_cas.c optional cas Modified: stable/7/sys/conf/files.amd64 ============================================================================== --- stable/7/sys/conf/files.amd64 Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/sys/conf/files.amd64 Sun Jan 5 23:13:18 2014 (r260357) @@ -144,6 +144,14 @@ dev/atkbdc/atkbdc.c optional atkbdc dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc +dev/bxe/bxe.c optional bxe pci +dev/bxe/bxe_stats.c optional bxe pci +dev/bxe/bxe_debug.c optional bxe pci +dev/bxe/ecore_sp.c optional bxe pci +dev/bxe/bxe_elink.c optional bxe pci +dev/bxe/57710_init_values.c optional bxe pci +dev/bxe/57711_init_values.c optional bxe pci +dev/bxe/57712_init_values.c optional bxe pci dev/coretemp/coretemp.c optional coretemp dev/cpuctl/cpuctl.c optional cpuctl # There are no systems with isa slots, so all ed isa entries should go.. Modified: stable/7/sys/conf/files.i386 ============================================================================== --- stable/7/sys/conf/files.i386 Sun Jan 5 23:02:03 2014 (r260356) +++ stable/7/sys/conf/files.i386 Sun Jan 5 23:13:18 2014 (r260357) @@ -145,6 +145,14 @@ dev/atkbdc/atkbdc.c optional atkbdc dev/atkbdc/atkbdc_isa.c optional atkbdc isa dev/atkbdc/atkbdc_subr.c optional atkbdc dev/atkbdc/psm.c optional psm atkbdc +dev/bxe/bxe.c optional bxe pci +dev/bxe/bxe_stats.c optional bxe pci +dev/bxe/bxe_debug.c optional bxe pci +dev/bxe/ecore_sp.c optional bxe pci +dev/bxe/bxe_elink.c optional bxe pci +dev/bxe/57710_init_values.c optional bxe pci +dev/bxe/57711_init_values.c optional bxe pci +dev/bxe/57712_init_values.c optional bxe pci dev/ce/ceddk.c optional ce dev/ce/if_ce.c optional ce dev/ce/tau32-ddk.c optional ce Added: stable/7/sys/dev/bxe/57710_init_values.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/sys/dev/bxe/57710_init_values.c Sun Jan 5 23:13:18 2014 (r260357) @@ -0,0 +1,29161 @@ +/*- + * Copyright (c) 2007-2013 Broadcom Corporation. All rights reserved. + * + * Eric Davis + * David Christensen + * Gary Zambrano + * + * 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. Neither the name of Broadcom Corporation nor the name of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written consent. + * + * 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. + */ + +#include +__FBSDID("$FreeBSD$"); + + +/* +* This file contains an array of operations needed to initialize the chip: +* OP_WR - write a single register. +* OP_RD - read a single register. +* OP_SW - write an array to consecutive registers. +* OP_WB - write an array using DMAE. +* OP_ZR - clear consecutive registers. +* OP_WB_ZR - clear consecutive registers using DMAE. +* OP_ZP - unzip and write an array using DMAE. +* OP_WR_64 - write a 64-bit pattern to consecutive registers. +* OP_IF_MODE_OR - skip next ops if all modes do not match. +* OP_IF_MODE_AND - skip next ops if at least one mode does not match. +*/ +#include "bxe.h" + +#include "ecore_init.h" + +#ifdef __SunOS +#define const +#endif + +static const struct raw_op init_ops_e1[] = { +/* #define BRB1_COMMON_START 22 */ + {OP_WR, 0x600dc, 0x1}, + {OP_SW, 0x61000, 0x2000000}, + {OP_RD, 0x600d8, 0x0}, + {OP_SW, 0x60200, 0x30200}, + {OP_WR, 0x600dc, 0x0}, +/* #define BRB1_COMMON_END 23 */ +/* #define BRB1_PORT0_START 24 */ + {OP_WR, 0x60068, 0xb8}, + {OP_WR, 0x60078, 0x114}, + {OP_RD, 0x600b8, 0x0}, + {OP_RD, 0x600c8, 0x0}, +/* #define BRB1_PORT0_END 25 */ +/* #define BRB1_PORT1_START 26 */ + {OP_WR, 0x6006c, 0xb8}, + {OP_WR, 0x6007c, 0x114}, + {OP_RD, 0x600bc, 0x0}, + {OP_RD, 0x600cc, 0x0}, +/* #define BRB1_PORT1_END 27 */ +/* #define CCM_COMMON_START 44 */ + {OP_WR, 0xd0044, 0x32}, + {OP_SW, 0xd004c, 0x40203}, + {OP_ZR, 0xd005c, 0x4}, + {OP_SW, 0xd008c, 0x110207}, + {OP_WR, 0xd015c, 0x1}, + {OP_SW, 0xd0164, 0x20218}, + {OP_WR, 0xd0204, 0x1}, + {OP_SW, 0xd020c, 0x3021a}, + {OP_SW, 0xd0220, 0x2021d}, + {OP_ZR, 0xd0280, 0x12}, + {OP_SW, 0xd0300, 0x18021f}, + {OP_ZR, 0xd0360, 0xc}, + {OP_ZR, 0xd4000, 0xa00}, + {OP_SW, 0xd0004, 0xf0237}, +/* #define CCM_COMMON_END 45 */ +/* #define CCM_PORT0_START 46 */ + {OP_WR, 0xd0114, 0xd}, +/* #define CCM_PORT0_END 47 */ +/* #define CCM_PORT1_START 48 */ + {OP_WR, 0xd0118, 0x2d}, +/* #define CCM_PORT1_END 49 */ +/* #define CDU_COMMON_START 66 */ + {OP_SW, 0x101000, 0x30246}, + {OP_WR, 0x101010, 0x264}, + {OP_WB, 0x101100, 0x100249}, + {OP_WB_ZR, 0x101140, 0x8}, + {OP_WB, 0x101160, 0x100259}, + {OP_WB_ZR, 0x1011a0, 0x18}, + {OP_WB, 0x101800, 0x2000269}, + {OP_WR, 0x101010, 0x0}, +/* #define CDU_COMMON_END 67 */ +/* #define CFC_COMMON_START 88 */ + {OP_ZR, 0x104c00, 0x100}, + {OP_WR, 0x104028, 0x10}, + {OP_WR, 0x104044, 0x3fff}, + {OP_WR, 0x104058, 0x280000}, + {OP_WR, 0x104084, 0x84924a}, + {OP_WR, 0x104058, 0x0}, +/* #define CFC_COMMON_END 89 */ +/* #define CSDM_COMMON_START 110 */ + {OP_SW, 0xc2008, 0x30469}, + {OP_SW, 0xc201c, 0x4046c}, + {OP_SW, 0xc2038, 0x110470}, + {OP_ZR, 0xc207c, 0x4f}, + {OP_SW, 0xc21b8, 0x110481}, + {OP_ZR, 0xc21fc, 0xf}, + {OP_SW, 0xc2238, 0x40492}, + {OP_RD, 0xc2248, 0x0}, + {OP_RD, 0xc224c, 0x0}, + {OP_RD, 0xc2250, 0x0}, + {OP_RD, 0xc2254, 0x0}, + {OP_RD, 0xc2258, 0x0}, + {OP_RD, 0xc225c, 0x0}, + {OP_RD, 0xc2260, 0x0}, + {OP_RD, 0xc2264, 0x0}, + {OP_RD, 0xc2268, 0x0}, + {OP_RD, 0xc226c, 0x0}, + {OP_RD, 0xc2270, 0x0}, + {OP_RD, 0xc2274, 0x0}, + {OP_RD, 0xc2278, 0x0}, + {OP_RD, 0xc227c, 0x0}, + {OP_WR, 0xc24bc, 0x1}, + {OP_IF_MODE_AND, 1, 0x1}, /* asic */ + {OP_WR, 0xc2000, 0x3e8}, + {OP_IF_MODE_AND, 1, 0x2}, /* fpga */ + {OP_WR, 0xc2000, 0xa}, + {OP_IF_MODE_AND, 1, 0x4}, /* emul */ + {OP_WR, 0xc2000, 0x1}, +/* #define CSDM_COMMON_END 111 */ +/* #define CSEM_COMMON_START 132 */ + {OP_FW, 0x200400, 0xe00000}, + {OP_WR_64, 0x200780, 0x100496}, + {OP_ZR, 0x220000, 0x1600}, + {OP_ZR, 0x228000, 0x40}, + {OP_ZR, 0x223bd0, 0x8}, + {OP_ZR, 0x224800, 0x6}, + {OP_SW, 0x224818, 0x40498}, + {OP_ZR, 0x224828, 0xc}, + {OP_SW, 0x224858, 0x4049c}, + {OP_ZR, 0x224868, 0xc}, + {OP_SW, 0x224898, 0x404a0}, + {OP_ZR, 0x2248a8, 0xc}, + {OP_SW, 0x2248d8, 0x404a4}, + {OP_ZR, 0x2248e8, 0xc}, + {OP_SW, 0x224918, 0x404a8}, + {OP_ZR, 0x224928, 0xc}, + {OP_SW, 0x224958, 0x404ac}, + {OP_ZR, 0x224968, 0xc}, + {OP_SW, 0x224998, 0x404b0}, + {OP_ZR, 0x2249a8, 0xc}, + {OP_SW, 0x2249d8, 0x404b4}, + {OP_ZR, 0x2249e8, 0xc}, + {OP_SW, 0x224a18, 0x404b8}, + {OP_ZR, 0x224a28, 0xc}, + {OP_SW, 0x224a58, 0x404bc}, + {OP_ZR, 0x224a68, 0xc}, + {OP_SW, 0x224a98, 0x404c0}, + {OP_ZR, 0x224aa8, 0xc}, + {OP_SW, 0x224ad8, 0x404c4}, + {OP_ZR, 0x224ae8, 0xc}, + {OP_SW, 0x224b18, 0x404c8}, + {OP_ZR, 0x224b28, 0xc}, + {OP_SW, 0x224b58, 0x404cc}, + {OP_ZR, 0x224b68, 0xc}, + {OP_SW, 0x224b98, 0x404d0}, + {OP_ZR, 0x224ba8, 0xc}, + {OP_SW, 0x224bd8, 0x404d4}, + {OP_ZR, 0x224be8, 0xc}, + {OP_SW, 0x224c18, 0x404d8}, + {OP_ZR, 0x224c28, 0xc}, + {OP_SW, 0x224c58, 0x404dc}, + {OP_ZR, 0x224c68, 0xc}, + {OP_SW, 0x224c98, 0x404e0}, + {OP_ZR, 0x224ca8, 0xc}, + {OP_SW, 0x224cd8, 0x404e4}, + {OP_ZR, 0x224ce8, 0xc}, + {OP_SW, 0x224d18, 0x404e8}, + {OP_ZR, 0x224d28, 0xc}, + {OP_SW, 0x224d58, 0x404ec}, + {OP_ZR, 0x224d68, 0xc}, + {OP_SW, 0x224d98, 0x404f0}, + {OP_ZR, 0x224da8, 0xc}, + {OP_SW, 0x224dd8, 0x404f4}, + {OP_ZR, 0x224de8, 0xc}, + {OP_SW, 0x224e18, 0x404f8}, + {OP_ZR, 0x224e28, 0xc}, + {OP_SW, 0x224e58, 0x404fc}, + {OP_ZR, 0x224e68, 0xc}, + {OP_SW, 0x224e98, 0x40500}, + {OP_ZR, 0x224ea8, 0xc}, + {OP_SW, 0x224ed8, 0x40504}, + {OP_ZR, 0x224ee8, 0xc}, + {OP_SW, 0x224f18, 0x40508}, + {OP_ZR, 0x224f28, 0xc}, + {OP_SW, 0x224f58, 0x4050c}, + {OP_ZR, 0x224f68, 0xc}, + {OP_SW, 0x224f98, 0x40510}, + {OP_ZR, 0x224fa8, 0xc}, + {OP_SW, 0x224fd8, 0x40514}, + {OP_ZR, 0x224fe8, 0x6}, + {OP_SW, 0x225198, 0x40518}, + {OP_WR, 0x238000, 0x10}, + {OP_WR, 0x238040, 0x12}, + {OP_WR, 0x238080, 0x30}, + {OP_WR, 0x2380c0, 0xe}, + {OP_WR, 0x238380, 0x7a120}, + {OP_WR, 0x2383c0, 0x1f4}, + {OP_WR, 0x238bc0, 0x1}, + {OP_IF_MODE_AND, 2, 0x1}, /* asic */ + {OP_WR, 0x238300, 0x7a120}, + {OP_WR, 0x238340, 0x1f4}, + {OP_IF_MODE_AND, 2, 0x2}, /* fpga */ + {OP_WR, 0x238300, 0x1388}, + {OP_WR, 0x238340, 0x5}, + {OP_IF_MODE_AND, 2, 0x4}, /* emul */ + {OP_WR, 0x238300, 0x138}, + {OP_WR, 0x238340, 0x0}, + {OP_FW, 0x240000, 0x27300000}, + {OP_WR_64, 0x249cc0, 0x6ace051c}, + {OP_RD, 0x200000, 0x0}, + {OP_RD, 0x200004, 0x0}, + {OP_RD, 0x200008, 0x0}, + {OP_RD, 0x20000c, 0x0}, + {OP_RD, 0x200010, 0x0}, + {OP_RD, 0x200014, 0x0}, + {OP_SW, 0x200020, 0x1a051e}, + {OP_SW, 0x2000a4, 0x20538}, + {OP_WR, 0x200224, 0x0}, + {OP_WR, 0x200234, 0x0}, + {OP_WR, 0x20024c, 0x0}, + {OP_WR, 0x2002e4, 0xffff}, + {OP_WB_ZR, 0x202000, 0x800}, +/* #define CSEM_COMMON_END 133 */ +/* #define CSEM_PORT0_START 134 */ + {OP_ZR, 0x221400, 0x2}, + {OP_ZR, 0x221490, 0x30}, + {OP_ZR, 0x223900, 0x10}, + {OP_ZR, 0x225108, 0x2}, + {OP_ZR, 0x2251a8, 0x6}, +/* #define CSEM_PORT0_END 135 */ +/* #define CSEM_PORT1_START 136 */ + {OP_ZR, 0x221408, 0x2}, + {OP_ZR, 0x221550, 0x30}, + {OP_ZR, 0x223940, 0x10}, + {OP_ZR, 0x225110, 0x2}, + {OP_ZR, 0x2251c0, 0x6}, +/* #define CSEM_PORT1_END 137 */ +/* #define DMAE_COMMON_START 176 */ + {OP_ZR, 0x102400, 0xe0}, + {OP_SW, 0x10201c, 0x2053a}, + {OP_WR, 0x1020c0, 0x1}, + {OP_SW, 0x102004, 0x2053c}, +/* #define DMAE_COMMON_END 177 */ +/* #define DORQ_COMMON_START 198 */ + {OP_WR, 0x170008, 0x2}, + {OP_WR, 0x17002c, 0x3}, + {OP_SW, 0x170038, 0x2053e}, + {OP_SW, 0x170044, 0x60540}, + {OP_SW, 0x170060, 0x50546}, + {OP_SW, 0x170078, 0x2054b}, + {OP_WR, 0x170004, 0xf}, +/* #define DORQ_COMMON_END 199 */ +/* #define HC_COMMON_START 220 */ + {OP_ZR, 0x108068, 0x4}, +/* #define HC_COMMON_END 221 */ +/* #define HC_PORT0_START 222 */ + {OP_WR, 0x108000, 0x1080}, + {OP_ZR, 0x108040, 0x2}, + {OP_ZR, 0x108028, 0x2}, + {OP_WR, 0x108038, 0x10}, + {OP_SW, 0x108040, 0x2054d}, + {OP_WR, 0x108050, 0x0}, + {OP_WR, 0x108100, 0x0}, + {OP_ZR, 0x108120, 0x2}, + {OP_WR, 0x108008, 0x2b5}, + {OP_WR, 0x108010, 0x0}, + {OP_WR, 0x108108, 0x1ffff}, + {OP_ZR, 0x108200, 0x4a}, + {OP_ZR, 0x108140, 0x2}, + {OP_WR, 0x108000, 0x1a80}, + {OP_ZR, 0x109000, 0x24}, + {OP_ZR, 0x109120, 0x4a}, + {OP_ZR, 0x109370, 0x4a}, + {OP_ZR, 0x1095c0, 0x4a}, +/* #define HC_PORT0_END 223 */ +/* #define HC_PORT1_START 224 */ + {OP_WR, 0x108004, 0x1080}, + {OP_ZR, 0x108048, 0x2}, + {OP_ZR, 0x108030, 0x2}, + {OP_WR, 0x10803c, 0x10}, + {OP_SW, 0x108048, 0x2054f}, + {OP_WR, 0x108054, 0x0}, + {OP_WR, 0x108104, 0x0}, + {OP_ZR, 0x108128, 0x2}, + {OP_WR, 0x10800c, 0x2b5}, + {OP_WR, 0x108014, 0x0}, + {OP_WR, 0x10810c, 0x1ffff}, + {OP_ZR, 0x108400, 0x4a}, + {OP_ZR, 0x108148, 0x2}, + {OP_WR, 0x108004, 0x1a80}, + {OP_ZR, 0x109090, 0x24}, + {OP_ZR, 0x109248, 0x4a}, + {OP_ZR, 0x109498, 0x4a}, + {OP_ZR, 0x1096e8, 0x4a}, +/* #define HC_PORT1_END 225 */ +/* #define MISC_COMMON_START 264 */ + {OP_WR, 0xa468, 0xaffdc}, + {OP_WR, 0xa280, 0x1}, + {OP_SW, 0xa294, 0x40551}, + {OP_WR, 0xa4fc, 0xff000000}, +/* #define MISC_COMMON_END 265 */ +/* #define NIG_COMMON_START 286 */ + {OP_SW, 0x100b4, 0x20555}, + {OP_WR, 0x100dc, 0x1}, + {OP_SW, 0x10100, 0x20557}, +/* #define NIG_COMMON_END 287 */ +/* #define NIG_PORT0_START 288 */ + {OP_WR, 0x1007c, 0x300000}, + {OP_WR, 0x10084, 0x28}, + {OP_WR, 0x1008c, 0x0}, + {OP_WR, 0x10130, 0x4}, + {OP_ZR, 0x10138, 0x11}, + {OP_WR, 0x10328, 0x0}, + {OP_WR, 0x10554, 0x30}, + {OP_WR, 0x100c4, 0x1}, + {OP_WR, 0x100cc, 0x1}, + {OP_WR, 0x100f8, 0x1}, + {OP_WR, 0x100f0, 0x1}, +/* #define NIG_PORT0_END 289 */ +/* #define NIG_PORT1_START 290 */ + {OP_WR, 0x10080, 0x300000}, + {OP_WR, 0x10088, 0x28}, + {OP_WR, 0x10090, 0x0}, + {OP_WR, 0x10134, 0x4}, + {OP_ZR, 0x1017c, 0x11}, + {OP_WR, 0x1032c, 0x0}, + {OP_WR, 0x10564, 0x30}, + {OP_WR, 0x100c8, 0x1}, + {OP_WR, 0x100d0, 0x1}, + {OP_WR, 0x100fc, 0x1}, + {OP_WR, 0x100f4, 0x1}, +/* #define NIG_PORT1_END 291 */ +/* #define PBF_COMMON_START 308 */ + {OP_WR, 0x140000, 0x1}, + {OP_WR, 0x14000c, 0x1}, + {OP_SW, 0x140040, 0x20559}, + {OP_WR, 0x14000c, 0x0}, + {OP_WR, 0x140000, 0x0}, + {OP_WR, 0x14006c, 0x0}, +/* #define PBF_COMMON_END 309 */ +/* #define PBF_PORT0_START 310 */ + {OP_WR, 0x140004, 0x1}, + {OP_WR, 0x140030, 0x1}, + {OP_WR, 0x140004, 0x0}, + {OP_WR, 0x14005c, 0x0}, +/* #define PBF_PORT0_END 311 */ +/* #define PBF_PORT1_START 312 */ + {OP_WR, 0x140008, 0x1}, + {OP_WR, 0x140034, 0x1}, + {OP_WR, 0x140008, 0x0}, + {OP_WR, 0x140060, 0x0}, +/* #define PBF_PORT1_END 313 */ +/* #define PRS_COMMON_START 352 */ + {OP_SW, 0x40004, 0x12055b}, + {OP_SW, 0x40054, 0x3056d}, + {OP_WR, 0x40070, 0x4}, + {OP_SW, 0x40078, 0x40570}, + {OP_ZR, 0x40088, 0x5}, + {OP_SW, 0x4009c, 0x30574}, + {OP_ZR, 0x400a8, 0x4}, + {OP_SW, 0x400b8, 0x50577}, + {OP_ZR, 0x400cc, 0x4}, + {OP_SW, 0x400dc, 0x4057c}, + {OP_ZR, 0x400ec, 0x4}, + {OP_RD, 0x40124, 0x0}, + {OP_RD, 0x40128, 0x0}, + {OP_RD, 0x4012c, 0x0}, + {OP_RD, 0x40130, 0x0}, + {OP_WR, 0x40134, 0xf}, +/* #define PRS_COMMON_END 353 */ +/* #define PXP2_COMMON_START 374 */ + {OP_SW, 0x120490, 0x220580}, + {OP_WR, 0x120520, 0x2}, + {OP_WR, 0x120388, 0x64}, + {OP_WR, 0x120390, 0x8}, + {OP_SW, 0x12039c, 0x305a2}, + {OP_WR, 0x1203bc, 0x4}, + {OP_WR, 0x1203c4, 0x4}, + {OP_WR, 0x1203d0, 0x0}, + {OP_WR, 0x1203dc, 0x0}, + {OP_WR, 0x12036c, 0x1}, + {OP_WR, 0x120368, 0x3f}, + {OP_SW, 0x1201bc, 0x3c05a5}, + {OP_SW, 0x1202b0, 0x205e1}, + {OP_SW, 0x120324, 0x205e3}, + {OP_WR, 0x1201b0, 0x1}, +/* #define PXP2_COMMON_END 375 */ +/* #define PXP_COMMON_START 396 */ + {OP_WB, 0x103800, 0x505e5}, + {OP_WB, 0x103c00, 0x505ea}, + {OP_WB, 0x103c20, 0x505ef}, +/* #define PXP_COMMON_END 397 */ +/* #define QM_COMMON_START 418 */ + {OP_SW, 0x168030, 0x805f4}, + {OP_WR, 0x168054, 0x2}, + {OP_SW, 0x168060, 0x505fc}, + {OP_ZR, 0x168074, 0x7}, + {OP_SW, 0x168090, 0x20601}, + {OP_SW, 0x16809c, 0x50603}, + {OP_ZR, 0x1680b0, 0x7}, + {OP_SW, 0x1680cc, 0x80608}, + {OP_WR, 0x1680f0, 0x7}, + {OP_ZR, 0x1680f4, 0xc}, + {OP_SW, 0x168124, 0x40610}, + {OP_ZR, 0x168134, 0xc}, + {OP_SW, 0x168164, 0x3b0614}, + {OP_ZR, 0x168250, 0x4}, + {OP_SW, 0x168260, 0x2064f}, + {OP_ZR, 0x168268, 0x8}, + {OP_SW, 0x168288, 0x80651}, + {OP_ZR, 0x1682a8, 0xa}, + {OP_WR, 0x168804, 0x4}, + {OP_SW, 0x16880c, 0x100659}, + {OP_WR, 0x1680ec, 0xff}, +/* #define QM_COMMON_END 419 */ +/* #define SRC_COMMON_START 440 */ + {OP_SW, 0x40408, 0x140669}, +/* #define SRC_COMMON_END 441 */ +/* #define TCM_COMMON_START 462 */ + {OP_SW, 0x50044, 0x2067d}, + {OP_SW, 0x50050, 0x4067f}, + {OP_ZR, 0x50060, 0x4}, + {OP_SW, 0x50090, 0x130683}, + {OP_WR, 0x50114, 0x1}, + {OP_SW, 0x5011c, 0x20696}, + {OP_WR, 0x50204, 0x1}, + {OP_SW, 0x5020c, 0x20698}, + {OP_SW, 0x5021c, 0x3069a}, + {OP_ZR, 0x50240, 0xa}, + {OP_SW, 0x50280, 0x20069d}, + {OP_ZR, 0x54000, 0xd00}, + {OP_SW, 0x50004, 0x1006bd}, +/* #define TCM_COMMON_END 463 */ +/* #define TCM_PORT0_START 464 */ + {OP_WR, 0x500e0, 0xe}, +/* #define TCM_PORT0_END 465 */ +/* #define TCM_PORT1_START 466 */ + {OP_WR, 0x500e4, 0x2e}, +/* #define TCM_PORT1_END 467 */ +/* #define TM_COMMON_START 484 */ + {OP_ZR, 0x164024, 0x2}, + {OP_SW, 0x164030, 0x306cd}, + {OP_WR, 0x164044, 0x20}, + {OP_WR, 0x164070, 0x1c}, + {OP_WR, 0x164208, 0x1}, + {OP_WR, 0x164210, 0x1}, + {OP_WR, 0x164220, 0x1}, + {OP_WR, 0x164228, 0x1}, + {OP_WR, 0x164230, 0x1}, + {OP_WR, 0x164238, 0x1}, + {OP_WR, 0x164260, 0x1}, + {OP_IF_MODE_AND, 1, 0x1}, /* asic */ + {OP_WR, 0x16401c, 0x3d090}, + {OP_IF_MODE_AND, 1, 0x2}, /* fpga */ + {OP_WR, 0x16401c, 0x9c4}, + {OP_IF_MODE_AND, 1, 0x4}, /* emul */ + {OP_WR, 0x16401c, 0x9c}, + {OP_WR, 0x164000, 0x1}, + {OP_WR, 0x1640d8, 0x1}, + {OP_SW, 0x164008, 0x306d0}, +/* #define TM_COMMON_END 485 */ +/* #define TM_PORT0_START 486 */ + {OP_WR, 0x164240, 0x0}, + {OP_WR, 0x164248, 0x0}, + {OP_WB_ZR, 0x164270, 0x2}, +/* #define TM_PORT0_END 487 */ +/* #define TM_PORT1_START 488 */ + {OP_WR, 0x164250, 0x0}, + {OP_WR, 0x164258, 0x0}, + {OP_WB_ZR, 0x164280, 0x2}, +/* #define TM_PORT1_END 489 */ +/* #define TSDM_COMMON_START 506 */ + {OP_SW, 0x42008, 0x406d3}, + {OP_SW, 0x4201c, 0x406d7}, + {OP_ZR, 0x42038, 0x80}, + {OP_SW, 0x42238, 0x406db}, + {OP_RD, 0x42248, 0x0}, + {OP_RD, 0x4224c, 0x0}, + {OP_RD, 0x42250, 0x0}, + {OP_RD, 0x42254, 0x0}, + {OP_RD, 0x42258, 0x0}, + {OP_RD, 0x4225c, 0x0}, + {OP_RD, 0x42260, 0x0}, + {OP_RD, 0x42264, 0x0}, + {OP_RD, 0x42268, 0x0}, + {OP_RD, 0x4226c, 0x0}, + {OP_RD, 0x42270, 0x0}, + {OP_RD, 0x42274, 0x0}, + {OP_RD, 0x42278, 0x0}, + {OP_RD, 0x4227c, 0x0}, + {OP_WR, 0x424bc, 0x1}, + {OP_IF_MODE_AND, 1, 0x1}, /* asic */ + {OP_WR, 0x42000, 0x3e8}, + {OP_IF_MODE_AND, 1, 0x2}, /* fpga */ + {OP_WR, 0x42000, 0xa}, + {OP_IF_MODE_AND, 1, 0x4}, /* emul */ + {OP_WR, 0x42000, 0x1}, +/* #define TSDM_COMMON_END 507 */ +/* #define TSEM_COMMON_START 528 */ + {OP_FW, 0x180400, 0xd80000}, + {OP_WR_64, 0x180760, 0x1406df}, + {OP_ZR, 0x1a0000, 0x1600}, + {OP_ZR, 0x1a8000, 0x40}, + {OP_SW, 0x1a08b0, 0x206e1}, + {OP_SW, 0x1a19c8, 0x206e3}, + {OP_SW, 0x1a2fc0, 0x406e5}, + {OP_ZR, 0x1a2fd0, 0x6}, + {OP_SW, 0x1a2fe8, 0x206e9}, + {OP_SW, 0x1a3000, 0x3f906eb}, + {OP_ZR, 0x1a3fe4, 0x7}, + {OP_SW, 0x1a4870, 0x40ae4}, + {OP_WR, 0x1b8000, 0x34}, + {OP_WR, 0x1b8040, 0x18}, + {OP_WR, 0x1b8080, 0xc}, + {OP_WR, 0x1b80c0, 0x20}, + {OP_WR, 0x1b8380, 0x7a120}, + {OP_WR, 0x1b83c0, 0x1f4}, + {OP_WR, 0x1b8bc0, 0x1}, + {OP_IF_MODE_AND, 2, 0x1}, /* asic */ + {OP_WR, 0x1b8300, 0x7a120}, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 23:28:04 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 20D80537; Sun, 5 Jan 2014 23:28:04 +0000 (UTC) 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 0D2411EC0; Sun, 5 Jan 2014 23:28: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 s05NS3cG031867; Sun, 5 Jan 2014 23:28:03 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05NS3t6031866; Sun, 5 Jan 2014 23:28:03 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201401052328.s05NS3t6031866@svn.freebsd.org> From: Warren Block Date: Sun, 5 Jan 2014 23:28:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260358 - head/contrib/diff/man X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 23:28:04 -0000 Author: wblock (doc committer) Date: Sun Jan 5 23:28:03 2014 New Revision: 260358 URL: http://svnweb.freebsd.org/changeset/base/260358 Log: Fix a cut and paste error. PR: docs/184791 Submitted by: Jamie Landeg Jones MFC after: 3 days Modified: head/contrib/diff/man/diff3.1 Modified: head/contrib/diff/man/diff3.1 ============================================================================== --- head/contrib/diff/man/diff3.1 Sun Jan 5 23:13:18 2014 (r260357) +++ head/contrib/diff/man/diff3.1 Sun Jan 5 23:28:03 2014 (r260358) @@ -73,6 +73,6 @@ and .B diff3 programs are properly installed at your site, the command .IP -.B info diff +.B info diff3 .PP should give you access to the complete manual. From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 00:52:39 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id F015AA8F; Mon, 6 Jan 2014 00:52:39 +0000 (UTC) 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 DC7EA14A7; Mon, 6 Jan 2014 00:52: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 s060qdjm065686; Mon, 6 Jan 2014 00:52:39 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s060qdOk065684; Mon, 6 Jan 2014 00:52:39 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401060052.s060qdOk065684@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Mon, 6 Jan 2014 00:52:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260361 - head/contrib/gcc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 00:52:40 -0000 Author: pfg Date: Mon Jan 6 00:52:39 2014 New Revision: 260361 URL: http://svnweb.freebsd.org/changeset/base/260361 Log: Fix optimization bug. GCC-PR rtl-optimization/34628 * combine.c (try_combine): Stop and undo after the first combination if an autoincrement side-effect on the first insn has effectively been lost. The issue was detected in OpenBSD but their fix was not very good. Huge thanks to the upstream author, Eric Botcazou, for permitting the use of this patch under GPLv2. MFC after: 5 days Modified: head/contrib/gcc/combine.c Modified: head/contrib/gcc/combine.c ============================================================================== --- head/contrib/gcc/combine.c Mon Jan 6 00:15:19 2014 (r260360) +++ head/contrib/gcc/combine.c Mon Jan 6 00:52:39 2014 (r260361) @@ -2370,12 +2370,17 @@ try_combine (rtx i3, rtx i2, rtx i1, int if (i1 && GET_CODE (newpat) != CLOBBER) { - /* Before we can do this substitution, we must redo the test done - above (see detailed comments there) that ensures that I1DEST - isn't mentioned in any SETs in NEWPAT that are field assignments. */ - - if (! combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, - 0, (rtx*) 0)) + /* Check that an autoincrement side-effect on I1 has not been lost. + This happens if I1DEST is mentioned in I2 and dies there, and + has disappeared from the new pattern. */ + if ((FIND_REG_INC_NOTE (i1, NULL_RTX) != 0 + && !i1_feeds_i3 + && dead_or_set_p (i2, i1dest) + && !reg_overlap_mentioned_p (i1dest, newpat)) + /* Before we can do this substitution, we must redo the test done + above (see detailed comments there) that ensures that I1DEST + isn't mentioned in any SETs in NEWPAT that are field assignments. */ + || !combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, 0, 0)) { undo_all (); return 0; From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 02:55:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 97BA9866; Mon, 6 Jan 2014 02:55:16 +0000 (UTC) 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 67E841CAC; Mon, 6 Jan 2014 02:55:16 +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 1W00LS-000EfO-T2; Mon, 06 Jan 2014 02:55:15 +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 s062tC3Y026847; Sun, 5 Jan 2014 19:55:12 -0700 (MST) (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+K0Yuf87qehWMDF0Dls49f Subject: Re: svn commit: r260161 - in head/sys/arm: arm include From: Ian Lepore To: Zbigniew Bodek In-Reply-To: <201401012003.s01K3ngn009757@svn.freebsd.org> References: <201401012003.s01K3ngn009757@svn.freebsd.org> Content-Type: text/plain; charset="us-ascii" Date: Sun, 05 Jan 2014 19:55:12 -0700 Message-ID: <1388976912.1158.331.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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 02:55:16 -0000 On Wed, 2014-01-01 at 20:03 +0000, Zbigniew Bodek wrote: > Author: zbb > Date: Wed Jan 1 20:03:48 2014 > New Revision: 260161 > URL: http://svnweb.freebsd.org/changeset/base/260161 > > Log: > Add polarity and level support to ARM GIC > > Add suport for setting triggering level and polarity in GIC. > New function pointer was added to nexus which corresponds > to the function which sets level/sense in the hardware (GIC). > > Submitted by: Wojciech Macek > Obtained from: Semihalf > > Modified: > head/sys/arm/arm/gic.c > head/sys/arm/arm/intr.c > head/sys/arm/arm/nexus.c > head/sys/arm/include/intr.h > [...] > Modified: head/sys/arm/include/intr.h > ============================================================================== > --- head/sys/arm/include/intr.h Wed Jan 1 19:38:15 2014 (r260160) > +++ head/sys/arm/include/intr.h Wed Jan 1 20:03:48 2014 (r260161) > @@ -68,6 +68,7 @@ > #endif > > #include > +#include > > int arm_get_next_irq(int); > void arm_mask_irq(uintptr_t); > @@ -77,6 +78,8 @@ void arm_setup_irqhandler(const char *, > void *, int, int, void **); > int arm_remove_irqhandler(int, void *); > extern void (*arm_post_filter)(void *); > +extern int (*arm_config_irq)(int irq, enum intr_trigger trig, > + enum intr_polarity pol); > > void gic_init_secondary(void); > It turns out that the new #include in this change is causing the current arm tinderbox failures. Enums can't have forward decls anymore, so the fix for this may not be easy. -- Ian From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 03:48:33 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 4CCC137B; Mon, 6 Jan 2014 03:48:33 +0000 (UTC) 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 1BDDF10AB; Mon, 6 Jan 2014 03:48: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 s063mWCB031853; Mon, 6 Jan 2014 03:48:32 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s063mW8C031852; Mon, 6 Jan 2014 03:48:32 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401060348.s063mW8C031852@svn.freebsd.org> From: Adrian Chadd Date: Mon, 6 Jan 2014 03:48:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260363 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 03:48:33 -0000 Author: adrian Date: Mon Jan 6 03:48:32 2014 New Revision: 260363 URL: http://svnweb.freebsd.org/changeset/base/260363 Log: Correctly remove entries from the relevant receive ath_buf list before freeing them. The current code would walk the list and call the buffer free, which didn't remove it from any lists before pushing it back on the free list. Tested: AR9485, STA mode Noticed by: dillon@apollo.dragonflybsd.org Modified: head/sys/dev/ath/if_ath_rx_edma.c Modified: head/sys/dev/ath/if_ath_rx_edma.c ============================================================================== --- head/sys/dev/ath/if_ath_rx_edma.c Mon Jan 6 01:51:08 2014 (r260362) +++ head/sys/dev/ath/if_ath_rx_edma.c Mon Jan 6 03:48:32 2014 (r260363) @@ -450,18 +450,20 @@ ath_edma_recv_proc_queue(struct ath_soft static void ath_edma_flush_deferred_queue(struct ath_softc *sc) { - struct ath_buf *bf, *next; + struct ath_buf *bf; ATH_RX_LOCK_ASSERT(sc); /* Free in one set, inside the lock */ - TAILQ_FOREACH_SAFE(bf, - &sc->sc_rx_rxlist[HAL_RX_QUEUE_LP], bf_list, next) { + while (! TAILQ_EMPTY(&sc->sc_rx_rxlist[HAL_RX_QUEUE_LP])) { + bf = TAILQ_FIRST(&sc->sc_rx_rxlist[HAL_RX_QUEUE_LP]); + TAILQ_REMOVE(&sc->sc_rx_rxlist[HAL_RX_QUEUE_LP], bf, bf_list); /* Free the buffer/mbuf */ ath_edma_rxbuf_free(sc, bf); } - TAILQ_FOREACH_SAFE(bf, - &sc->sc_rx_rxlist[HAL_RX_QUEUE_HP], bf_list, next) { + while (! TAILQ_EMPTY(&sc->sc_rx_rxlist[HAL_RX_QUEUE_HP])) { + bf = TAILQ_FIRST(&sc->sc_rx_rxlist[HAL_RX_QUEUE_HP]); + TAILQ_REMOVE(&sc->sc_rx_rxlist[HAL_RX_QUEUE_HP], bf, bf_list); /* Free the buffer/mbuf */ ath_edma_rxbuf_free(sc, bf); } @@ -495,6 +497,10 @@ ath_edma_recv_proc_deferred_queue(struct ATH_RX_UNLOCK(sc); /* Handle the completed descriptors */ + /* + * XXX is this SAFE call needed? The ath_buf entries + * aren't modified by ath_rx_pkt, right? + */ TAILQ_FOREACH_SAFE(bf, &rxlist, bf_list, next) { /* * Skip the RX descriptor status - start at the data offset @@ -520,7 +526,9 @@ ath_edma_recv_proc_deferred_queue(struct /* Free in one set, inside the lock */ ATH_RX_LOCK(sc); - TAILQ_FOREACH_SAFE(bf, &rxlist, bf_list, next) { + while (! TAILQ_EMPTY(&rxlist)) { + bf = TAILQ_FIRST(&rxlist); + TAILQ_REMOVE(&rxlist, bf, bf_list); /* Free the buffer/mbuf */ ath_edma_rxbuf_free(sc, bf); } From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 03:51:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 673AB4EC; Mon, 6 Jan 2014 03:51:45 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E3A781122; Mon, 6 Jan 2014 03:51:44 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.7/8.14.7) with ESMTP id s063pdg2034300; Mon, 6 Jan 2014 05:51:39 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua s063pdg2034300 Received: (from kostik@localhost) by tom.home (8.14.7/8.14.7/Submit) id s063pdcJ034299; Mon, 6 Jan 2014 05:51:39 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 6 Jan 2014 05:51:39 +0200 From: Konstantin Belousov To: Adrian Chadd Subject: Re: svn commit: r260363 - head/sys/dev/ath Message-ID: <20140106035139.GC59496@kib.kiev.ua> References: <201401060348.s063mW8C031852@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="+yS4nipRHeFlCPfe" Content-Disposition: inline In-Reply-To: <201401060348.s063mW8C031852@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 03:51:45 -0000 --+yS4nipRHeFlCPfe Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jan 06, 2014 at 03:48:32AM +0000, Adrian Chadd wrote: > Author: adrian > Date: Mon Jan 6 03:48:32 2014 > New Revision: 260363 > URL: http://svnweb.freebsd.org/changeset/base/260363 >=20 > Log: > Correctly remove entries from the relevant receive ath_buf list before > freeing them. > =20 > The current code would walk the list and call the buffer free, which > didn't remove it from any lists before pushing it back on the free list. > =20 > Tested: AR9485, STA mode > =20 > Noticed by: dillon@apollo.dragonflybsd.org This is a NOP, right ? >=20 > Modified: > head/sys/dev/ath/if_ath_rx_edma.c >=20 > Modified: head/sys/dev/ath/if_ath_rx_edma.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/dev/ath/if_ath_rx_edma.c Mon Jan 6 01:51:08 2014 (r260362) > +++ head/sys/dev/ath/if_ath_rx_edma.c Mon Jan 6 03:48:32 2014 (r260363) > @@ -450,18 +450,20 @@ ath_edma_recv_proc_queue(struct ath_soft > static void > ath_edma_flush_deferred_queue(struct ath_softc *sc) > { > - struct ath_buf *bf, *next; > + struct ath_buf *bf; > =20 > ATH_RX_LOCK_ASSERT(sc); > =20 > /* Free in one set, inside the lock */ > - TAILQ_FOREACH_SAFE(bf, > - &sc->sc_rx_rxlist[HAL_RX_QUEUE_LP], bf_list, next) { > + while (! TAILQ_EMPTY(&sc->sc_rx_rxlist[HAL_RX_QUEUE_LP])) { > + bf =3D TAILQ_FIRST(&sc->sc_rx_rxlist[HAL_RX_QUEUE_LP]); > + TAILQ_REMOVE(&sc->sc_rx_rxlist[HAL_RX_QUEUE_LP], bf, bf_list); > /* Free the buffer/mbuf */ > ath_edma_rxbuf_free(sc, bf); > } > - TAILQ_FOREACH_SAFE(bf, > - &sc->sc_rx_rxlist[HAL_RX_QUEUE_HP], bf_list, next) { > + while (! TAILQ_EMPTY(&sc->sc_rx_rxlist[HAL_RX_QUEUE_HP])) { > + bf =3D TAILQ_FIRST(&sc->sc_rx_rxlist[HAL_RX_QUEUE_HP]); > + TAILQ_REMOVE(&sc->sc_rx_rxlist[HAL_RX_QUEUE_HP], bf, bf_list); > /* Free the buffer/mbuf */ > ath_edma_rxbuf_free(sc, bf); > } > @@ -495,6 +497,10 @@ ath_edma_recv_proc_deferred_queue(struct > ATH_RX_UNLOCK(sc); > =20 > /* Handle the completed descriptors */ > + /* > + * XXX is this SAFE call needed? The ath_buf entries > + * aren't modified by ath_rx_pkt, right? > + */ > TAILQ_FOREACH_SAFE(bf, &rxlist, bf_list, next) { > /* > * Skip the RX descriptor status - start at the data offset > @@ -520,7 +526,9 @@ ath_edma_recv_proc_deferred_queue(struct > =20 > /* Free in one set, inside the lock */ > ATH_RX_LOCK(sc); > - TAILQ_FOREACH_SAFE(bf, &rxlist, bf_list, next) { > + while (! TAILQ_EMPTY(&rxlist)) { > + bf =3D TAILQ_FIRST(&rxlist); > + TAILQ_REMOVE(&rxlist, bf, bf_list); > /* Free the buffer/mbuf */ > ath_edma_rxbuf_free(sc, bf); > } --+yS4nipRHeFlCPfe Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQIcBAEBAgAGBQJSyihKAAoJEJDCuSvBvK1BJ0QP/Rdm1AK1tv0I+Eh98xe11CdH ggmPPbO/371rKvlgL2A2HlBYWUWgI1PR+p4U0VUp2pQ3mzJvyhVIqgwbBKT0P+tB bk5PGzuXPV+Xg01PvFFxQEpppmXA5r0MmFkIeLFuwibEp5vJ2ILt8DKlZynyoiPM 8pdxtBCaiz/HexdJ+3tgD9DwrnHHUkLtfgR2g8Kh+lqx5/XViVzfvLVjShBopDjs mVSAFRg0IQB/lMqoE1fe4oWwaAyk5F8uZ5v7Uz/HLqC6hkH009lnrgtdQQoGxTSW JBzNzO+kBdsDOE3m2dSG7mR9BgRotQHAwlcItBKpUB2cDSlaebvyxDA9wGJ4wPkK vLhYIJemakfRym3uwf2RPWr4i3utD2aCq3j2bzpSSPS5VYlxTacI2592ZTCNNG5j O3HCL1nIIVbtohN/l/w+j/t079n3lil1o1pHjnqfG8rNmA6yOjf4AR3UplXt6nMM Unn3e+VCifhUQXt7FWrpcIuqeRIzK0w/3888rNI85Ye6gubogl15xiyKNQ+8FJYe ls0BOsinEDJhJjjnehDlLFrjMp5+j9/xoI76Nw8zwccRxToWaTnCfp45Tef4MaLR Nr1a2rYQ2b/v6IKWRElWW379JQG7l1BNZ58tiqxrFTljftnnjql0EEK8SS4YyHFh +PCQoC4Sl7v5ZXd/+6Y0 =ZDA/ -----END PGP SIGNATURE----- --+yS4nipRHeFlCPfe-- From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 05:00:59 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 72419E41; Mon, 6 Jan 2014 05:00:59 +0000 (UTC) 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 5DDE4150E; Mon, 6 Jan 2014 05:00: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 s0650xuT060943; Mon, 6 Jan 2014 05:00:59 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0650xwV060942; Mon, 6 Jan 2014 05:00:59 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201401060500.s0650xwV060942@svn.freebsd.org> From: Marcel Moolenaar Date: Mon, 6 Jan 2014 05:00:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260364 - head/sys/cddl/contrib/opensolaris/common/atomic/ia64 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 05:00:59 -0000 Author: marcel Date: Mon Jan 6 05:00:58 2014 New Revision: 260364 URL: http://svnweb.freebsd.org/changeset/base/260364 Log: In atomic_or_8_nv() load 1 and not 8 bytes from the address given. Note that atomic_or_8_nv() is not used at this time. Modified: head/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S Modified: head/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S ============================================================================== --- head/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S Mon Jan 6 03:48:32 2014 (r260363) +++ head/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S Mon Jan 6 05:00:58 2014 (r260364) @@ -74,7 +74,7 @@ END(atomic_add_64_nv) */ ENTRY(atomic_or_8_nv, 2) 1: - ld8 r16 = [r32] + ld1 r16 = [r32] ;; mov ar.ccv = r16 or r8 = r16, r33 From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 05:16:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 40F6E1FD; Mon, 6 Jan 2014 05:16:16 +0000 (UTC) Received: from smtp.fgznet.ch (mail.fgznet.ch [81.92.96.47]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AA94A1627; Mon, 6 Jan 2014 05:16:14 +0000 (UTC) Received: from deuterium.andreas.nets (dhclient-91-190-14-19.flashcable.ch [91.190.14.19]) by smtp.fgznet.ch (8.13.8/8.13.8/Submit_SMTPAUTH) with ESMTP id s065FpbT054545; Mon, 6 Jan 2014 06:16:03 +0100 (CET) (envelope-from andreast@FreeBSD.org) Message-ID: <52CA3C07.9030002@FreeBSD.org> Date: Mon, 06 Jan 2014 06:15:51 +0100 From: Andreas Tobler User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 MIME-Version: 1.0 To: Ian Lepore , Zbigniew Bodek Subject: Re: svn commit: r260161 - in head/sys/arm: arm include References: <201401012003.s01K3ngn009757@svn.freebsd.org> <1388976912.1158.331.camel@revolution.hippie.lan> In-Reply-To: <1388976912.1158.331.camel@revolution.hippie.lan> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.64 on 81.92.96.47 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 05:16:16 -0000 On 06.01.14 03:55, Ian Lepore wrote: > On Wed, 2014-01-01 at 20:03 +0000, Zbigniew Bodek wrote: >> Author: zbb >> Date: Wed Jan 1 20:03:48 2014 >> New Revision: 260161 >> URL: http://svnweb.freebsd.org/changeset/base/260161 >> >> Log: >> Add polarity and level support to ARM GIC >> >> Add suport for setting triggering level and polarity in GIC. >> New function pointer was added to nexus which corresponds >> to the function which sets level/sense in the hardware (GIC). >> >> Submitted by: Wojciech Macek >> Obtained from: Semihalf >> >> Modified: >> head/sys/arm/arm/gic.c >> head/sys/arm/arm/intr.c >> head/sys/arm/arm/nexus.c >> head/sys/arm/include/intr.h >> > [...] >> Modified: head/sys/arm/include/intr.h >> ============================================================================== >> --- head/sys/arm/include/intr.h Wed Jan 1 19:38:15 2014 (r260160) >> +++ head/sys/arm/include/intr.h Wed Jan 1 20:03:48 2014 (r260161) >> @@ -68,6 +68,7 @@ >> #endif >> >> #include >> +#include >> >> int arm_get_next_irq(int); >> void arm_mask_irq(uintptr_t); >> @@ -77,6 +78,8 @@ void arm_setup_irqhandler(const char *, >> void *, int, int, void **); >> int arm_remove_irqhandler(int, void *); >> extern void (*arm_post_filter)(void *); >> +extern int (*arm_config_irq)(int irq, enum intr_trigger trig, >> + enum intr_polarity pol); >> >> void gic_init_secondary(void); >> > > It turns out that the new #include in this change is causing the current > arm tinderbox failures. Enums can't have forward decls anymore, so the > fix for this may not be easy. I posted my try to fix this here: http://lists.freebsd.org/pipermail/freebsd-current/2014-January/047694.html Rebuilt 260333 successfully with it. Andreas From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 05:37:23 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3146B4E8; Mon, 6 Jan 2014 05:37:23 +0000 (UTC) Received: from mail-qe0-x22f.google.com (mail-qe0-x22f.google.com [IPv6:2607:f8b0:400d:c02::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C054C1725; Mon, 6 Jan 2014 05:37:22 +0000 (UTC) Received: by mail-qe0-f47.google.com with SMTP id t7so17957028qeb.34 for ; Sun, 05 Jan 2014 21:37:22 -0800 (PST) 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=nJpgZi/uNgIjSPirQT+yooFYNIzbGwEawTE7ppLinXk=; b=F2WgtSVoKUvzAg6mnala7DLXpA4nw7U7IqiGukUs8+awRrFMaXNmUlQ2HpNCVxI2in emCM/158FTFB97U/OKfN4f7gk3ITd7o/2SOhYStndKVPQexz7F8Uh+7X2ilpNzE14p4a HgzjOvrGQtJTawBW1wfyyX/wRFgwtBllTWPXIJNt6vY7OgytqzJOgoLe9rh/tdtt2MvR VeoQswq6TIFujcMRsg5IVZ2z3+6sAHQkShrU0gfdB1aFm7Zlpf4afrlQBBBMjr0lD2D9 tAdlRTYVdUvkgQpNub+WVIbrq7QAnyBKF/PtxyL2lJWyKe2OCNVXjG2gD7dSX0ovdgRs ASrw== MIME-Version: 1.0 X-Received: by 10.224.124.195 with SMTP id v3mr177167193qar.55.1388986642034; Sun, 05 Jan 2014 21:37:22 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Sun, 5 Jan 2014 21:37:21 -0800 (PST) In-Reply-To: <20140106035139.GC59496@kib.kiev.ua> References: <201401060348.s063mW8C031852@svn.freebsd.org> <20140106035139.GC59496@kib.kiev.ua> Date: Sun, 5 Jan 2014 21:37:21 -0800 X-Google-Sender-Auth: 1BgRYk_vEaNwle0fXw1Zzq79tRI Message-ID: Subject: Re: svn commit: r260363 - head/sys/dev/ath From: Adrian Chadd To: Konstantin Belousov 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 05:37:23 -0000 On 5 January 2014 19:51, Konstantin Belousov wrote: > On Mon, Jan 06, 2014 at 03:48:32AM +0000, Adrian Chadd wrote: >> Author: adrian >> Date: Mon Jan 6 03:48:32 2014 >> New Revision: 260363 >> URL: http://svnweb.freebsd.org/changeset/base/260363 >> >> Log: >> Correctly remove entries from the relevant receive ath_buf list before >> freeing them. >> >> The current code would walk the list and call the buffer free, which >> didn't remove it from any lists before pushing it back on the free list. >> >> Tested: AR9485, STA mode >> >> Noticed by: dillon@apollo.dragonflybsd.org > This is a NOP, right ? Nope. the previous version didn't remove the entries from the list. that's the bug. -a From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 06:53:23 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 79D91B72; Mon, 6 Jan 2014 06:53:23 +0000 (UTC) Received: from mail-pa0-x230.google.com (mail-pa0-x230.google.com [IPv6:2607:f8b0:400e:c03::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3D6421C8F; Mon, 6 Jan 2014 06:53:23 +0000 (UTC) Received: by mail-pa0-f48.google.com with SMTP id rd3so18168566pab.7 for ; Sun, 05 Jan 2014 22:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=ln3veuJ3GXTc5KP76+a5uijOW3WLEaBqkWHRMn1GblI=; b=Lv7twtdOHcIH6DjjNOH3cYt/0AOIbn81XQWKu77JSnY9gC0HfYRvJXcEvc2p8Fycc1 kb3Fb24JnX0OLpzJ7gdx8wunsDrZyymQKSBFegAesRNBKzsQS1Gdwb99Xt9V/o1pSCWQ 1pxhc0VoehuNCyoIw5QMWn4jxZzs2KdmKec6XohKSkNrS/3Vx06FrCahqGE3Zk7k4H3T PTeLMs/ItU6rSHeB9ZJjYOteo9DIbYnIQheyWZ+6a9Tv0nRUaRZlLYvDxu6Y5SbMo1i7 RNNPCzuGGIjCp89G2tymhWNFZK54UhSdmhXxXQnBlR0juUt0rerA4++pQC3JaB5z8v3u GwKg== X-Received: by 10.68.130.10 with SMTP id oa10mr3376008pbb.160.1388991201728; Sun, 05 Jan 2014 22:53:21 -0800 (PST) Received: from pyunyh@gmail.com (lpe4.p59-icn.cdngp.net. [114.111.62.249]) by mx.google.com with ESMTPSA id ko10sm114094665pbd.38.2014.01.05.22.53.17 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Sun, 05 Jan 2014 22:53:20 -0800 (PST) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Mon, 06 Jan 2014 15:53:14 +0900 From: Yonghyeon PYUN Date: Mon, 6 Jan 2014 15:53:14 +0900 To: Gleb Smirnoff Subject: Re: svn commit: r260224 - head/sys/netinet Message-ID: <20140106065314.GB1372@michelle.cdnetworks.com> References: <201401031103.s03B3CAf013123@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401031103.s03B3CAf013123@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: pyunyh@gmail.com List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 06:53:23 -0000 On Fri, Jan 03, 2014 at 11:03:12AM +0000, Gleb Smirnoff wrote: > Author: glebius > Date: Fri Jan 3 11:03:12 2014 > New Revision: 260224 > URL: http://svnweb.freebsd.org/changeset/base/260224 > > Log: > Make failure of ifpromisc() a non-fatal error. This makes it possible to > run carp(4) on vtnet(4). > vtnet(4) is the only device that doesn't correctly support promiscuous mode? I don't know details of vtnet(4) but it seems it's not hard to mimic promiscuous mode. I'm not sure why the driver returns ENOTSUP to user land given that vtnet(4) defaults to promiscuous mode for backwards compatibility. It also does not handle multicast filter configuration when VTNET_FLAG_CTRL_RX flag is not set. If vtnet(4) does not support multicast filter, it shouldn't announce IFF_MULTICAST. I wonder how vtnet(4) can work with carp(4) given that its multicast handling is ignored. From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 08:09:20 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 05FED4E8; Mon, 6 Jan 2014 08:09:20 +0000 (UTC) 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 E6E8210F0; Mon, 6 Jan 2014 08:09: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 s0689JJW029734; Mon, 6 Jan 2014 08:09:19 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0689Jin029733; Mon, 6 Jan 2014 08:09:19 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401060809.s0689Jin029733@svn.freebsd.org> From: Luigi Rizzo Date: Mon, 6 Jan 2014 08:09:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260365 - head/release/picobsd/build X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 08:09:20 -0000 Author: luigi Date: Mon Jan 6 08:09:19 2014 New Revision: 260365 URL: http://svnweb.freebsd.org/changeset/base/260365 Log: do not use capsicum when building picobsd images Modified: head/release/picobsd/build/picobsd Modified: head/release/picobsd/build/picobsd ============================================================================== --- head/release/picobsd/build/picobsd Mon Jan 6 05:00:58 2014 (r260364) +++ head/release/picobsd/build/picobsd Mon Jan 6 08:09:19 2014 (r260365) @@ -166,6 +166,7 @@ create_includes_and_libraries2() { # opt log "create_includes_and_libraries2() for ${SRC} $1" if [ ${OSVERSION} -ge 600000 ] ; then no="-DNO_CLEAN -DNO_PROFILE -DNO_GAMES -DNO_LIBC_R" # WITHOUT_CDDL=1" + no="$no -DWITHOUT_CASPER" no="$no -DMALLOC_PRODUCTION" else no="-DNOCLEAN -DNOPROFILE -DNOGAMES -DNOLIBC_R" From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 12:06:06 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 34F50B48; Mon, 6 Jan 2014 12:06:06 +0000 (UTC) Received: from mail-wi0-x235.google.com (mail-wi0-x235.google.com [IPv6:2a00:1450:400c:c05::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 52E2B199A; Mon, 6 Jan 2014 12:06:05 +0000 (UTC) Received: by mail-wi0-f181.google.com with SMTP id hq4so2713659wib.2 for ; Mon, 06 Jan 2014 04:06:03 -0800 (PST) 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=Mx2oee/YEkYRG3KJV98M3m869TeqvRVrwjRBDPjPFh4=; b=fX348jJM0ePFN8yQikgLzCcW3XdRiTqjTirg2Qo7D2a9XPzD/s1YcrzQ0Qcar+MwOU 8qQb5EEZgn8OCie9l3b7mmGmj1yfX813C4/Eqyl4HV0e5ZUUMZ8wJXhyNU9xBvVMP2uJ 0YhsHGUaHNC4h2WXyBVVojNbBL97xjtxth90gQFok5RGgWydpPxsQNhQNSmTJ1Gn3MXo SIrXUMLhJkSQ7mubZV8RNRc3UEivfxzeBjZ+kRfqWB+CQFyx0VwWkZtGFhVODuXqi5sk nPRh1zMYwESgdrQpoxX+IbDul1nQ/Gtnj302bpEWL+HvtmWZDRz+N3nUpec6yYefsWcx LVIg== MIME-Version: 1.0 X-Received: by 10.180.21.204 with SMTP id x12mr12086194wie.45.1389009963528; Mon, 06 Jan 2014 04:06:03 -0800 (PST) Sender: zbodek@gmail.com Received: by 10.217.112.65 with HTTP; Mon, 6 Jan 2014 04:06:03 -0800 (PST) In-Reply-To: <1388976912.1158.331.camel@revolution.hippie.lan> References: <201401012003.s01K3ngn009757@svn.freebsd.org> <1388976912.1158.331.camel@revolution.hippie.lan> Date: Mon, 6 Jan 2014 13:06:03 +0100 X-Google-Sender-Auth: EL8Kus9PMlV1p8VnXgyHtQh1Kww Message-ID: Subject: Re: svn commit: r260161 - in head/sys/arm: arm include From: Zbigniew Bodek To: Ian Lepore 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 12:06:06 -0000 2014/1/6 Ian Lepore : > On Wed, 2014-01-01 at 20:03 +0000, Zbigniew Bodek wrote: >> Author: zbb >> Date: Wed Jan 1 20:03:48 2014 >> New Revision: 260161 >> URL: http://svnweb.freebsd.org/changeset/base/260161 >> >> Log: >> Add polarity and level support to ARM GIC >> >> Add suport for setting triggering level and polarity in GIC. >> New function pointer was added to nexus which corresponds >> to the function which sets level/sense in the hardware (GIC). >> >> Submitted by: Wojciech Macek >> Obtained from: Semihalf >> >> Modified: >> head/sys/arm/arm/gic.c >> head/sys/arm/arm/intr.c >> head/sys/arm/arm/nexus.c >> head/sys/arm/include/intr.h >> > [...] >> Modified: head/sys/arm/include/intr.h >> ============================================================================== >> --- head/sys/arm/include/intr.h Wed Jan 1 19:38:15 2014 (r260160) >> +++ head/sys/arm/include/intr.h Wed Jan 1 20:03:48 2014 (r260161) >> @@ -68,6 +68,7 @@ >> #endif >> >> #include >> +#include >> >> int arm_get_next_irq(int); >> void arm_mask_irq(uintptr_t); >> @@ -77,6 +78,8 @@ void arm_setup_irqhandler(const char *, >> void *, int, int, void **); >> int arm_remove_irqhandler(int, void *); >> extern void (*arm_post_filter)(void *); >> +extern int (*arm_config_irq)(int irq, enum intr_trigger trig, >> + enum intr_polarity pol); >> >> void gic_init_secondary(void); >> > > It turns out that the new #include in this change is causing the current > arm tinderbox failures. Enums can't have forward decls anymore, so the > fix for this may not be easy. > > -- Ian > > I apologize. I must have missed that somehow. I was assured that patches are fine. Best regards zbb From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 12:07:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C608FC96; Mon, 6 Jan 2014 12:07:11 +0000 (UTC) Received: from mail-wi0-x235.google.com (mail-wi0-x235.google.com [IPv6:2a00:1450:400c:c05::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C0F2919A8; Mon, 6 Jan 2014 12:07:10 +0000 (UTC) Received: by mail-wi0-f181.google.com with SMTP id hq4so2714884wib.2 for ; Mon, 06 Jan 2014 04:07:09 -0800 (PST) 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=o0uPRLMuhiJRytL+v9xymbMsLV70sicncf6vBK5mqpk=; b=It7slNckNm7LnB+PmXxbtE8sCJl4joj/uJsUYHPN0lyjgQ9qaBj+BK0nhPAJQzPcTY f07Ta2noALYplxAjAobgRyMS0J70HmGCMK1Ed/Z5DUcS6N1XHO8L5wVP8kUDlBefi2Ia 88EloGay1sJX7Cq8CcFpbZDqdOcEnTq2MA+wY6PvgVLaE9eNuIe2dY7O0j2gVwASnZS3 IGMKv5PNESwyOrPzFOFu1p/x6AeKdQ9ZSX1aDtuR7TKc+C/v6zGt7sFcpRO1i6DyrMs7 k9yNTdKWdD7KHigkjUeEDLzzCpeW5SR00/DpJtk4j6G/WmdXO1H8XgteCsoTqO4r+hrN v/sw== MIME-Version: 1.0 X-Received: by 10.180.188.175 with SMTP id gb15mr12066891wic.50.1389010029261; Mon, 06 Jan 2014 04:07:09 -0800 (PST) Sender: zbodek@gmail.com Received: by 10.217.112.65 with HTTP; Mon, 6 Jan 2014 04:07:09 -0800 (PST) In-Reply-To: <52CA3C07.9030002@FreeBSD.org> References: <201401012003.s01K3ngn009757@svn.freebsd.org> <1388976912.1158.331.camel@revolution.hippie.lan> <52CA3C07.9030002@FreeBSD.org> Date: Mon, 6 Jan 2014 13:07:09 +0100 X-Google-Sender-Auth: kxh9t0dNog0Bpgjl9ZQop1BBuWI Message-ID: Subject: Re: svn commit: r260161 - in head/sys/arm: arm include From: Zbigniew Bodek To: Andreas Tobler Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Ian Lepore X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 12:07:12 -0000 2014/1/6 Andreas Tobler : > On 06.01.14 03:55, Ian Lepore wrote: >> On Wed, 2014-01-01 at 20:03 +0000, Zbigniew Bodek wrote: >>> Author: zbb >>> Date: Wed Jan 1 20:03:48 2014 >>> New Revision: 260161 >>> URL: http://svnweb.freebsd.org/changeset/base/260161 >>> >>> Log: >>> Add polarity and level support to ARM GIC >>> >>> Add suport for setting triggering level and polarity in GIC. >>> New function pointer was added to nexus which corresponds >>> to the function which sets level/sense in the hardware (GIC). >>> >>> Submitted by: Wojciech Macek >>> Obtained from: Semihalf >>> >>> Modified: >>> head/sys/arm/arm/gic.c >>> head/sys/arm/arm/intr.c >>> head/sys/arm/arm/nexus.c >>> head/sys/arm/include/intr.h >>> >> [...] >>> Modified: head/sys/arm/include/intr.h >>> ============================================================================== >>> --- head/sys/arm/include/intr.h Wed Jan 1 19:38:15 2014 (r260160) >>> +++ head/sys/arm/include/intr.h Wed Jan 1 20:03:48 2014 (r260161) >>> @@ -68,6 +68,7 @@ >>> #endif >>> >>> #include >>> +#include >>> >>> int arm_get_next_irq(int); >>> void arm_mask_irq(uintptr_t); >>> @@ -77,6 +78,8 @@ void arm_setup_irqhandler(const char *, >>> void *, int, int, void **); >>> int arm_remove_irqhandler(int, void *); >>> extern void (*arm_post_filter)(void *); >>> +extern int (*arm_config_irq)(int irq, enum intr_trigger trig, >>> + enum intr_polarity pol); >>> >>> void gic_init_secondary(void); >>> >> >> It turns out that the new #include in this change is causing the current >> arm tinderbox failures. Enums can't have forward decls anymore, so the >> fix for this may not be easy. > > I posted my try to fix this here: > > http://lists.freebsd.org/pipermail/freebsd-current/2014-January/047694.html > > Rebuilt 260333 successfully with it. > > Andreas > Hello. Thank you very much. Can this be committed or are there any objections? Best regards zbb From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 12:40:47 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 4BF429C6; Mon, 6 Jan 2014 12:40:47 +0000 (UTC) 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 382481D29; Mon, 6 Jan 2014 12:40: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 s06Celhf040520; Mon, 6 Jan 2014 12:40:47 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06CelN1040519; Mon, 6 Jan 2014 12:40:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401061240.s06CelN1040519@svn.freebsd.org> From: Alexander Motin Date: Mon, 6 Jan 2014 12:40:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260367 - head/sys/rpc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 12:40:47 -0000 Author: mav Date: Mon Jan 6 12:40:46 2014 New Revision: 260367 URL: http://svnweb.freebsd.org/changeset/base/260367 Log: Fix NULL dereference panic on UDP requests introduced in r260229. Modified: head/sys/rpc/svc.h Modified: head/sys/rpc/svc.h ============================================================================== --- head/sys/rpc/svc.h Mon Jan 6 12:28:35 2014 (r260366) +++ head/sys/rpc/svc.h Mon Jan 6 12:40:46 2014 (r260367) @@ -411,7 +411,7 @@ struct svc_req { (*(xprt)->xp_ops->xp_stat)(xprt) #define SVC_ACK(xprt, ack) \ - ((xprt)->xp_ops->xp_stat == NULL ? FALSE : \ + ((xprt)->xp_ops->xp_ack == NULL ? FALSE : \ ((ack) == NULL ? TRUE : (*(xprt)->xp_ops->xp_ack)((xprt), (ack)))) #define SVC_REPLY(xprt, msg, addr, m, seq) \ From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 12:53:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 91B9CEFE; Mon, 6 Jan 2014 12:53:16 +0000 (UTC) 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 7ABF21E49; Mon, 6 Jan 2014 12:53: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 s06CrGAU045032; Mon, 6 Jan 2014 12:53:16 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06CrGxF045030; Mon, 6 Jan 2014 12:53:16 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401061253.s06CrGxF045030@svn.freebsd.org> From: Luigi Rizzo Date: Mon, 6 Jan 2014 12:53:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260368 - in head: share/man/man4 sys/dev/e1000 sys/dev/ixgbe sys/dev/netmap sys/net tools/tools/netmap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 12:53:16 -0000 Author: luigi Date: Mon Jan 6 12:53:15 2014 New Revision: 260368 URL: http://svnweb.freebsd.org/changeset/base/260368 Log: It is 2014 and we have a new version of netmap. Most relevant features: - netmap emulation on any NIC, even those without native netmap support. On the ixgbe we have measured about 4Mpps/core/queue in this mode, which is still a lot more than with sockets/bpf. - seamless interconnection of VALE switch, NICs and host stack. If you disable accelerations on your NIC (say em0) ifconfig em0 -txcsum -txcsum you can use the VALE switch to connect the NIC and the host stack: vale-ctl -h valeXX:em0 allowing sharing the NIC with other netmap clients. - THE USER API HAS SLIGHTLY CHANGED (head/cur/tail pointers instead of pointers/count as before). This was unavoidable to support, in the future, multiple threads operating on the same rings. Netmap clients require very small source code changes to compile again. On the plus side, the new API should be easier to understand and the internals are a lot simpler. The manual page has been updated extensively to reflect the current features and give some examples. This is the result of work of several people including Giuseppe Lettieri, Vincenzo Maffione, Michio Honda and myself, and has been financially supported by EU projects CHANGE and OPENLAB, from NetApp University Research Fund, NEC, and of course the Universita` di Pisa. Modified: head/share/man/man4/netmap.4 head/sys/dev/e1000/if_em.c head/sys/dev/e1000/if_igb.c head/sys/dev/e1000/if_lem.c head/sys/dev/ixgbe/ixgbe.c head/sys/dev/netmap/if_em_netmap.h head/sys/dev/netmap/if_igb_netmap.h head/sys/dev/netmap/if_lem_netmap.h head/sys/dev/netmap/if_re_netmap.h head/sys/dev/netmap/ixgbe_netmap.h head/sys/dev/netmap/netmap.c head/sys/dev/netmap/netmap_freebsd.c head/sys/dev/netmap/netmap_generic.c head/sys/dev/netmap/netmap_kern.h head/sys/dev/netmap/netmap_mbq.c head/sys/dev/netmap/netmap_mbq.h head/sys/dev/netmap/netmap_mem2.c head/sys/dev/netmap/netmap_mem2.h head/sys/dev/netmap/netmap_vale.c head/sys/net/netmap.h head/sys/net/netmap_user.h head/tools/tools/netmap/bridge.c head/tools/tools/netmap/nm_util.c head/tools/tools/netmap/nm_util.h head/tools/tools/netmap/pcap.c head/tools/tools/netmap/pkt-gen.c head/tools/tools/netmap/vale-ctl.c Modified: head/share/man/man4/netmap.4 ============================================================================== --- head/share/man/man4/netmap.4 Mon Jan 6 12:40:46 2014 (r260367) +++ head/share/man/man4/netmap.4 Mon Jan 6 12:53:15 2014 (r260368) @@ -1,4 +1,4 @@ -.\" Copyright (c) 2011-2013 Matteo Landi, Luigi Rizzo, Universita` di Pisa +.\" Copyright (c) 2011-2014 Matteo Landi, Luigi Rizzo, Universita` di Pisa .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -27,434 +27,546 @@ .\" .\" $FreeBSD$ .\" -.Dd October 18, 2013 +.Dd January 4, 2014 .Dt NETMAP 4 .Os .Sh NAME .Nm netmap .Nd a framework for fast packet I/O +.br +.Nm VALE +.Nd a fast VirtuAl Local Ethernet using the netmap API .Sh SYNOPSIS .Cd device netmap .Sh DESCRIPTION .Nm is a framework for extremely fast and efficient packet I/O -(reaching 14.88 Mpps with a single core at less than 1 GHz) for both userspace and kernel clients. -Userspace clients can use the netmap API -to send and receive raw packets through physical interfaces -or ports of the -.Xr VALE 4 -switch. -.Pp -.Nm VALE -is a very fast (reaching 20 Mpps per port) -and modular software switch, -implemented within the kernel, which can interconnect -virtual ports, physical devices, and the native host stack. -.Pp -.Nm -uses a memory mapped region to share packet buffers, -descriptors and queues with the kernel. -Simple -.Pa ioctl()s -are used to bind interfaces/ports to file descriptors and -implement non-blocking I/O, whereas blocking I/O uses -.Pa select()/poll() . +It runs on FreeBSD and Linux, +and includes +.Nm VALE , +a very fast and modular in-kernel software switch/dataplane. +.Pp .Nm -can exploit the parallelism in multiqueue devices and -multicore systems. +and +.Nm VALE +are one order of magnitude faster than sockets, bpf or +native switches based on +.Xr tun/tap 4 , +reaching 14.88 Mpps with much less than one core on a 10 Gbit NIC, +and 20 Mpps per core for VALE ports. +.Pp +Userspace clients can dynamically switch NICs into +.Nm +mode and send and receive raw packets through +memory mapped buffers. +A selectable file descriptor supports +synchronization and blocking I/O. +.Pp +Similarly, +.Nm VALE +can dynamically create switch instances and ports, +providing high speed packet I/O between processes, +virtual machines, NICs and the host stack. .Pp -For the best performance, +For best performance, .Nm requires explicit support in device drivers; -a generic emulation layer is available to implement the +however, the .Nm -API on top of unmodified device drivers, +API can be emulated on top of unmodified device drivers, at the price of reduced performance -(but still better than what can be achieved with -sockets or BPF/pcap). +(but still better than sockets or BPF/pcap). .Pp -For a list of devices with native +In the rest of this (long) manual page we document +various aspects of the .Nm -support, see the end of this manual page. -.Sh OPERATION - THE NETMAP API +and +.Nm VALE +architecture, features and usage. +.Pp +.Sh ARCHITECTURE .Nm -clients must first -.Pa open("/dev/netmap") , -and then issue an -.Pa ioctl(fd, NIOCREGIF, (struct nmreq *)arg) -to bind the file descriptor to a specific interface or port. +supports raw packet I/O through a +.Em port , +which can be connected to a physical interface +.Em ( NIC ) , +to the host stack, +or to a +.Nm VALE +switch). +Ports use preallocated circular queues of buffers +.Em ( rings ) +residing in an mmapped region. +There is one ring for each transmit/receive queue of a +NIC or virtual port. +An additional ring pair connects to the host stack. +.Pp +After binding a file descriptor to a port, a +.Nm +client can send or receive packets in batches through +the rings, and possibly implement zero-copy forwarding +between ports. +.Pp +All NICs operating in +.Nm +mode use the same memory region, +accessible to all processes who own +.Nm /dev/netmap +file descriptors bound to NICs. +.Nm VALE +ports instead use separate memory regions. +.Pp +.Sh ENTERING AND EXITING NETMAP MODE +Ports and rings are created and controlled through a file descriptor, +created by opening a special device +.Dl fd = open("/dev/netmap"); +and then bound to a specific port with an +.Dl ioctl(fd, NIOCREGIF, (struct nmreq *)arg); +.Pp .Nm has multiple modes of operation controlled by the -content of the -.Pa struct nmreq -passed to the -.Pa ioctl() . -In particular, the -.Em nr_name -field specifies whether the client operates on a physical network -interface or on a port of a -.Nm VALE -switch, as indicated below. Additional fields in the -.Pa struct nmreq -control the details of operation. +.Vt struct nmreq +argument. +.Va arg.nr_name +specifies the port name, as follows: .Bl -tag -width XXXX -.It Dv Interface name (e.g. 'em0', 'eth1', ... ) -The data path of the interface is disconnected from the host stack. -Depending on additional arguments, -the file descriptor is bound to the NIC (one or all queues), -or to the host stack. +.It Dv OS network interface name (e.g. 'em0', 'eth1', ... ) +the data path of the NIC is disconnected from the host stack, +and the file descriptor is bound to the NIC (one or all queues), +or to the host stack; .It Dv valeXXX:YYY (arbitrary XXX and YYY) -The file descriptor is bound to port YYY of a VALE switch called XXX, -where XXX and YYY are arbitrary alphanumeric strings. +the file descriptor is bound to port YYY of a VALE switch called XXX, +both dynamically created if necessary. The string cannot exceed IFNAMSIZ characters, and YYY cannot -matching the name of any existing interface. -.Pp -The switch and the port are created if not existing. -.It Dv valeXXX:ifname (ifname is an existing interface) -Flags in the argument control whether the physical interface -(and optionally the corrisponding host stack endpoint) -are connected or disconnected from the VALE switch named XXX. -.Pp -In this case the -.Pa ioctl() -is used only for configuring the VALE switch, typically through the -.Nm vale-ctl -command. -The file descriptor cannot be used for I/O, and should be -.Pa close()d -after issuing the -.Pa ioctl(). +be the name of any existing OS network interface. .El .Pp -The binding can be removed (and the interface returns to -regular operation, or the virtual port destroyed) with a -.Pa close() -on the file descriptor. -.Pp -The processes owning the file descriptor can then -.Pa mmap() -the memory region that contains pre-allocated -buffers, descriptors and queues, and use them to -read/write raw packets. +On return, +.Va arg +indicates the size of the shared memory region, +and the number, size and location of all the +.Nm +data structures, which can be accessed by mmapping the memory +.Dl char *mem = mmap(0, arg.nr_memsize, fd); +.Pp Non blocking I/O is done with special -.Pa ioctl()'s , -whereas the file descriptor can be passed to -.Pa select()/poll() -to be notified about incoming packet or available transmit buffers. -.Ss DATA STRUCTURES -The data structures in the mmapped memory are described below -(see -.Xr sys/net/netmap.h -for reference). -All physical devices operating in +.Xr ioctl 2 +.Xr select 2 +and +.Xr poll 2 +on the file descriptor permit blocking I/O. +.Xr epoll 2 +and +.Xr kqueue 2 +are not supported on .Nm -mode use the same memory region, -shared by the kernel and all processes who own -.Pa /dev/netmap -descriptors bound to those devices -(NOTE: visibility may be restricted in future implementations). -Virtual ports instead use separate memory regions, -shared only with the kernel. -.Pp -All references between the shared data structure -are relative (offsets or indexes). Some macros help converting -them into actual pointers. +file descriptors. +.Pp +While a NIC is in +.Nm +mode, the OS will still believe the interface is up and running. +OS-generated packets for that NIC end up into a +.Nm +ring, and another ring is used to send packets into the OS network stack. +A +.Xr close 2 +on the file descriptor removes the binding, +and returns the NIC to normal mode (reconnecting the data path +to the host stack), or destroys the virtual port. +.Pp +.Sh DATA STRUCTURES +The data structures in the mmapped memory region are detailed in +.Xr sys/net/netmap.h , +which is the ultimate reference for the +.Nm +API. The main structures and fields are indicated below: .Bl -tag -width XXX .It Dv struct netmap_if (one per interface) -indicates the number of rings supported by an interface, their -sizes, and the offsets of the -.Pa netmap_rings -associated to the interface. -.Pp -.Pa struct netmap_if -is at offset -.Pa nr_offset -in the shared memory region is indicated by the -field in the structure returned by the -.Pa NIOCREGIF -(see below). .Bd -literal struct netmap_if { - char ni_name[IFNAMSIZ]; /* name of the interface. */ - const u_int ni_version; /* API version */ - const u_int ni_rx_rings; /* number of rx ring pairs */ - const u_int ni_tx_rings; /* if 0, same as ni_rx_rings */ - const ssize_t ring_ofs[]; /* offset of tx and rx rings */ + ... + const uint32_t ni_flags; /* properties */ + ... + const uint32_t ni_tx_rings; /* NIC tx rings */ + const uint32_t ni_rx_rings; /* NIC rx rings */ + const uint32_t ni_extra_tx_rings; /* extra tx rings */ + const uint32_t ni_extra_rx_rings; /* extra rx rings */ + ... }; .Ed +.Pp +Indicates the number of available rings +.Pa ( struct netmap_rings ) +and their position in the mmapped region. +The number of tx and rx rings +.Pa ( ni_tx_rings , ni_rx_rings ) +normally depends on the hardware. +NICs also have an extra tx/rx ring pair connected to the host stack. +.Em NIOCREGIF +can request additional tx/rx rings, +to be used between multiple processes/threads +accessing the same +.Nm +port. .It Dv struct netmap_ring (one per ring) -Contains the positions in the transmit and receive rings to -synchronize the kernel and the application, -and an array of -.Pa slots -describing the buffers. -'reserved' is used in receive rings to tell the kernel the -number of slots after 'cur' that are still in usr -indicates how many slots starting from 'cur' -the -.Pp -Each physical interface has one -.Pa netmap_ring -for each hardware transmit and receive ring, -plus one extra transmit and one receive structure -that connect to the host stack. .Bd -literal struct netmap_ring { - const ssize_t buf_ofs; /* see details */ - const uint32_t num_slots; /* number of slots in the ring */ - uint32_t avail; /* number of usable slots */ - uint32_t cur; /* 'current' read/write index */ - uint32_t reserved; /* not refilled before current */ - - const uint16_t nr_buf_size; - uint16_t flags; -#define NR_TIMESTAMP 0x0002 /* set timestamp on *sync() */ -#define NR_FORWARD 0x0004 /* enable NS_FORWARD for ring */ -#define NR_RX_TSTMP 0x0008 /* set rx timestamp in slots */ - struct timeval ts; - struct netmap_slot slot[0]; /* array of slots */ + ... + const uint32_t num_slots; /* slots in each ring */ + const uint32_t nr_buf_size; /* size of each buffer */ + ... + uint32_t head; /* (u) first buf owned by user */ + uint32_t cur; /* (u) wakeup position */ + const uint32_t tail; /* (k) first buf owned by kernel */ + ... + uint32_t flags; + struct timeval ts; /* (k) time of last rxsync() */ + ... + struct netmap_slot slot[0]; /* array of slots */ } .Ed .Pp -In transmit rings, after a system call 'cur' indicates -the first slot that can be used for transmissions, -and 'avail' reports how many of them are available. -Before the next netmap-related system call on the file -descriptor, the application should fill buffers and -slots with data, and update 'cur' and 'avail' -accordingly, as shown in the figure below: +Implements transmit and receive rings, with read/write +pointers, metadata and and an array of +.Pa slots +describing the buffers. +.Pp +.It Dv struct netmap_slot (one per buffer) .Bd -literal - - cur - |----- avail ---| (after syscall) - v - TX [*****aaaaaaaaaaaaaaaaa**] - TX [*****TTTTTaaaaaaaaaaaa**] - ^ - |-- avail --| (before syscall) - cur +struct netmap_slot { + uint32_t buf_idx; /* buffer index */ + uint16_t len; /* packet length */ + uint16_t flags; /* buf changed, etc. */ + uint64_t ptr; /* address for indirect buffers */ +}; .Ed -In receive rings, after a system call 'cur' indicates -the first slot that contains a valid packet, -and 'avail' reports how many of them are available. -Before the next netmap-related system call on the file -descriptor, the application can process buffers and -release them to the kernel updating -'cur' and 'avail' accordingly, as shown in the figure below. -Receive rings have an additional field called 'reserved' -to indicate how many buffers before 'cur' are still -under processing and cannot be released. +.Pp +Describes a packet buffer, which normally is identified by +an index and resides in the mmapped region. +.It Dv packet buffers +Fixed size (normally 2 KB) packet buffers allocated by the kernel. +.El +.Pp +The offset of the +.Pa struct netmap_if +in the mmapped region is indicated by the +.Pa nr_offset +field in the structure returned by +.Pa NIOCREGIF . +From there, all other objects are reachable through +relative references (offsets or indexes). +Macros and functions in +help converting them into actual pointers: +.Pp +.Dl struct netmap_if *nifp = NETMAP_IF(mem, arg.nr_offset); +.Dl struct netmap_ring *txr = NETMAP_TXRING(nifp, ring_index); +.Dl struct netmap_ring *rxr = NETMAP_RXRING(nifp, ring_index); +.Pp +.Dl char *buf = NETMAP_BUF(ring, buffer_index); +.Sh RINGS, BUFFERS AND DATA I/O +.Va Rings +are circular queues of packets with three indexes/pointers +.Va ( head , cur , tail ) ; +one slot is always kept empty. +The ring size +.Va ( num_slots ) +should not be assumed to be a power of two. +.br +(NOTE: older versions of netmap used head/count format to indicate +the content of a ring). +.Pp +.Va head +is the first slot available to userspace; +.br +.Va cur +is the wakeup point: +select/poll will unblock when +.Va tail +passes +.Va cur ; +.br +.Va tail +is the first slot reserved to the kernel. +.Pp +Slot indexes MUST only move forward; +for convenience, the function +.Dl nm_ring_next(ring, index) +returns the next index modulo the ring size. +.Pp +.Va head +and +.Va cur +are only modified by the user program; +.Va tail +is only modified by the kernel. +The kernel only reads/writes the +.Vt struct netmap_ring +slots and buffers +during the execution of a netmap-related system call. +The only exception are slots (and buffers) in the range +.Va tail\ . . . head-1 , +that are explicitly assigned to the kernel. +.Pp +.Ss TRANSMIT RINGS +On transmit rings, after a +.Nm +system call, slots in the range +.Va head\ . . . tail-1 +are available for transmission. +User code should fill the slots sequentially +and advance +.Va head +and +.Va cur +past slots ready to transmit. +.Va cur +may be moved further ahead if the user code needs +more slots before further transmissions (see +.Sx SCATTER GATHER I/O ) . +.Pp +At the next NIOCTXSYNC/select()/poll(), +slots up to +.Va head-1 +are pushed to the port, and +.Va tail +may advance if further slots have become available. +Below is an example of the evolution of a TX ring: +.Pp .Bd -literal - cur - |-res-|-- avail --| (after syscall) - v - RX [**rrrrrrRRRRRRRRRRRR******] - RX [**...........rrrrRRR******] - |res|--|cur == ring->tail +and return when new slots have become available. +.Pp +High speed applications may want to amortize the cost of system calls +by preparing as many packets as possible before issuing them. +.Pp +A transmit ring with pending transmissions has +.Dl ring->head != ring->tail + 1 (modulo the ring size). +The function +.Va int nm_tx_pending(ring) +implements this test. +.Pp +.Ss RECEIVE RINGS +On receive rings, after a +.Nm +system call, the slots in the range +.Va head\& . . . tail-1 +contain received packets. +User code should process them and advance +.Va head +and +.Va cur +past slots it wants to return to the kernel. +.Va cur +may be moved further ahead if the user code wants to +wait for more packets +without returning all the previous slots to the kernel. +.Pp +At the next NIOCRXSYNC/select()/poll(), +slots up to +.Va head-1 +are returned to the kernel for further receives, and +.Va tail +may advance to report new incoming packets. +.br +Below is an example of the evolution of an RX ring: .Bd -literal -struct netmap_slot { - uint32_t buf_idx; /* buffer index */ - uint16_t len; /* packet length */ - uint16_t flags; /* buf changed, etc. */ -#define NS_BUF_CHANGED 0x0001 /* must resync, buffer changed */ -#define NS_REPORT 0x0002 /* tell hw to report results - * e.g. by generating an interrupt - */ -#define NS_FORWARD 0x0004 /* pass packet to the other endpoint - * (host stack or device) - */ -#define NS_NO_LEARN 0x0008 -#define NS_INDIRECT 0x0010 -#define NS_MOREFRAG 0x0020 -#define NS_PORT_SHIFT 8 -#define NS_PORT_MASK (0xff << NS_PORT_SHIFT) -#define NS_RFRAGS(_slot) ( ((_slot)->flags >> 8) & 0xff) - uint64_t ptr; /* buffer address (indirect buffers) */ -}; + after the syscall, there are some (h)eld and some (R)eceived slots + head cur tail + | | | + v v v + RX [..hhhhhhRRRRRRRR..........] + + user advances head and cur, releasing some slots and holding others + head cur tail + | | | + v v v + RX [..*****hhhRRRRRR...........] + + NICRXSYNC/poll()/select() recovers slots and reports new packets + head cur tail + | | | + v v v + RX [.......hhhRRRRRRRRRRRR....] .Ed -The flags control how the the buffer associated to the slot -should be managed. -.It Dv packet buffers -are normally fixed size (2 Kbyte) buffers allocated by the kernel -that contain packet data. Buffers addresses are computed through -macros. -.El -.Bl -tag -width XXX -Some macros support the access to objects in the shared memory -region. In particular, -.It NETMAP_TXRING(nifp, i) -.It NETMAP_RXRING(nifp, i) -return the address of the i-th transmit and receive ring, -respectively, whereas -.It NETMAP_BUF(ring, buf_idx) -returns the address of the buffer with index buf_idx -(which can be part of any ring for the given interface). -.El .Pp -Normally, buffers are associated to slots when interfaces are bound, -and one packet is fully contained in a single buffer. -Clients can however modify the mapping using the -following flags: -.Ss FLAGS +.Sh SLOTS AND PACKET BUFFERS +Normally, packets should be stored in the netmap-allocated buffers +assigned to slots when ports are bound to a file descriptor. +One packet is fully contained in a single buffer. +.Pp +The following flags affect slot and buffer processing: .Bl -tag -width XXX .It NS_BUF_CHANGED -indicates that the buf_idx in the slot has changed. -This can be useful if the client wants to implement -some form of zero-copy forwarding (e.g. by passing buffers -from an input interface to an output interface), or -needs to process packets out of order. +it MUST be used when the buf_idx in the slot is changed. +This can be used to implement +zero-copy forwarding, see +.Sx ZERO-COPY FORWARDING . .Pp -The flag MUST be used whenever the buffer index is changed. .It NS_REPORT -indicates that we want to be woken up when this buffer -has been transmitted. This reduces performance but insures -a prompt notification when a buffer has been sent. +reports when this buffer has been transmitted. Normally, .Nm notifies transmit completions in batches, hence signals -can be delayed indefinitely. However, we need such notifications -before closing a descriptor. +can be delayed indefinitely. This flag helps detecting +when packets have been send and a file descriptor can be closed. .It NS_FORWARD -When the device is open in 'transparent' mode, -the client can mark slots in receive rings with this flag. -For all marked slots, marked packets are forwarded to -the other endpoint at the next system call, thus restoring -(in a selective way) the connection between the NIC and the -host stack. +When a ring is in 'transparent' mode (see +.Sx TRANSPARENT MODE ) , +packets marked with this flags are forwarded to the other endpoint +at the next system call, thus restoring (in a selective way) +the connection between a NIC and the host stack. .It NS_NO_LEARN tells the forwarding code that the SRC MAC address for this -packet should not be used in the learning bridge +packet must not be used in the learning bridge code. .It NS_INDIRECT -indicates that the packet's payload is not in the netmap -supplied buffer, but in a user-supplied buffer whose -user virtual address is in the 'ptr' field of the slot. +indicates that the packet's payload is in a user-supplied buffer, +whose user virtual address is in the 'ptr' field of the slot. The size can reach 65535 bytes. -.Em This is only supported on the transmit ring of virtual ports +.br +This is only supported on the transmit ring of +.Nm VALE +ports, and it helps reducing data copies in the interconnection +of virtual machines. .It NS_MOREFRAG indicates that the packet continues with subsequent buffers; the last buffer in a packet must have the flag clear. +.El +.Sh SCATTER GATHER I/O +Packets can span multiple slots if the +.Va NS_MOREFRAG +flag is set in all but the last slot. The maximum length of a chain is 64 buffers. -.Em This is only supported on virtual ports -.It NS_RFRAGS(slot) -on receive rings, returns the number of remaining buffers -in a packet, including this one. -Slots with a value greater than 1 also have NS_MOREFRAG set. -The length refers to the individual buffer, there is no -field for the total length. +This is normally used with +.Nm VALE +ports when connecting virtual machines, as they generate large +TSO segments that are not split unless they reach a physical device. .Pp -On transmit rings, if NS_DST is set, it is passed to the lookup -function, which can use it e.g. as the index of the destination -port instead of doing an address lookup. -.El +NOTE: The length field always refers to the individual +fragment; there is no place with the total length of a packet. +.Pp +On receive rings the macro +.Va NS_RFRAGS(slot) +indicates the remaining number of slots for this packet, +including the current one. +Slots with a value greater than 1 also have NS_MOREFRAG set. .Sh IOCTLS .Nm -supports some ioctl() to synchronize the state of the rings -between the kernel and the user processes, plus some -to query and configure the interface. -The former do not require any argument, whereas the latter -use a -.Pa struct nmreq -defined as follows: +uses two ioctls (NIOCTXSYNC, NIOCRXSYNC) +for non-blocking I/O. They take no argument. +Two more ioctls (NIOCGINFO, NIOCREGIF) are used +to query and configure ports, with the following argument: .Bd -literal struct nmreq { - char nr_name[IFNAMSIZ]; - uint32_t nr_version; /* API version */ -#define NETMAP_API 4 /* current version */ - uint32_t nr_offset; /* nifp offset in the shared region */ - uint32_t nr_memsize; /* size of the shared region */ - uint32_t nr_tx_slots; /* slots in tx rings */ - uint32_t nr_rx_slots; /* slots in rx rings */ - uint16_t nr_tx_rings; /* number of tx rings */ - uint16_t nr_rx_rings; /* number of tx rings */ - uint16_t nr_ringid; /* ring(s) we care about */ -#define NETMAP_HW_RING 0x4000 /* low bits indicate one hw ring */ -#define NETMAP_SW_RING 0x2000 /* we process the sw ring */ -#define NETMAP_NO_TX_POLL 0x1000 /* no gratuitous txsync on poll */ -#define NETMAP_RING_MASK 0xfff /* the actual ring number */ - uint16_t nr_cmd; -#define NETMAP_BDG_ATTACH 1 /* attach the NIC */ -#define NETMAP_BDG_DETACH 2 /* detach the NIC */ -#define NETMAP_BDG_LOOKUP_REG 3 /* register lookup function */ -#define NETMAP_BDG_LIST 4 /* get bridge's info */ - uint16_t nr_arg1; - uint16_t nr_arg2; - uint32_t spare2[3]; + char nr_name[IFNAMSIZ]; /* (i) port name */ + uint32_t nr_version; /* (i) API version */ + uint32_t nr_offset; /* (o) nifp offset in mmap region */ + uint32_t nr_memsize; /* (o) size of the mmap region */ + uint32_t nr_tx_slots; /* (o) slots in tx rings */ + uint32_t nr_rx_slots; /* (o) slots in rx rings */ + uint16_t nr_tx_rings; /* (o) number of tx rings */ + uint16_t nr_rx_rings; /* (o) number of tx rings */ + uint16_t nr_ringid; /* (i) ring(s) we care about */ + uint16_t nr_cmd; /* (i) special command */ + uint16_t nr_arg1; /* (i) extra arguments */ + uint16_t nr_arg2; /* (i) extra arguments */ + ... }; - .Ed -A device descriptor obtained through +.Pp +A file descriptor obtained through .Pa /dev/netmap -also supports the ioctl supported by network devices. +also supports the ioctl supported by network devices, see +.Xr netintro 4 . .Pp -The netmap-specific -.Xr ioctl 2 -command codes below are defined in -.In net/netmap.h -and are: .Bl -tag -width XXXX .It Dv NIOCGINFO -returns EINVAL if the named device does not support netmap. +returns EINVAL if the named port does not support netmap. Otherwise, it returns 0 and (advisory) information -about the interface. +about the port. Note that all the information below can change before the interface is actually put in netmap mode. .Pp -.Pa nr_memsize -indicates the size of the netmap -memory region. Physical devices all share the same memory region, -whereas VALE ports may have independent regions for each port. -These sizes can be set through system-wise sysctl variables. -.Pa nr_tx_slots, nr_rx_slots +.Bl -tag -width XX +.It Pa nr_memsize +indicates the size of the +.Nm +memory region. NICs in +.Nm +mode all share the same memory region, +whereas +.Nm VALE +ports have independent regions for each port. +.It Pa nr_tx_slots , nr_rx_slots indicate the size of transmit and receive rings. -.Pa nr_tx_rings, nr_rx_rings +.It Pa nr_tx_rings , nr_rx_rings indicate the number of transmit and receive rings. Both ring number and sizes may be configured at runtime using interface-specific functions (e.g. -.Pa sysctl -or -.Pa ethtool . +.Xr ethtool +). +.El .It Dv NIOCREGIF -puts the interface named in nr_name into netmap mode, disconnecting -it from the host stack, and/or defines which rings are controlled -through this file descriptor. +binds the port named in +.Va nr_name +to the file descriptor. For a physical device this also switches it into +.Nm +mode, disconnecting +it from the host stack. +Multiple file descriptors can be bound to the same port, +with proper synchronization left to the user. +.Pp On return, it gives the same info as NIOCGINFO, and nr_ringid indicates the identity of the rings controlled through the file descriptor. .Pp -Possible values for nr_ringid are +.Va nr_ringid +selects which rings are controlled through this file descriptor. +Possible values are: .Bl -tag -width XXXXX .It 0 -default, all hardware rings +(default) all hardware rings .It NETMAP_SW_RING -the ``host rings'' connecting to the host stack -.It NETMAP_HW_RING + i -the i-th hardware ring +the ``host rings'', connecting to the host stack. +.It NETMAP_HW_RING | i +the i-th hardware ring . .El +.Pp By default, a -.Nm poll +.Xr poll 2 or -.Nm select +.Xr select 2 call pushes out any pending packets on the transmit ring, even if no write events are specified. The feature can be disabled by or-ing -.Nm NETMAP_NO_TX_SYNC -to nr_ringid. -But normally you should keep this feature unless you are using -separate file descriptors for the send and receive rings, because -otherwise packets are pushed out only if NETMAP_TXSYNC is called, -or the send queue is full. -.Pp -.Pa NIOCREGIF -can be used multiple times to change the association of a -file descriptor to a ring pair, always within the same device. +.Va NETMAP_NO_TX_SYNC +to the value written to +.Va nr_ringid. +When this feature is used, +packets are transmitted only on +.Va ioctl(NIOCTXSYNC) +or select()/poll() are called with a write event (POLLOUT/wfdset) or a full ring. .Pp When registering a virtual interface that is dynamically created to a .Xr vale 4 @@ -467,6 +579,164 @@ number of slots available for transmissi tells the hardware of consumed packets, and asks for newly available packets. .El +.Sh SELECT AND POLL +.Xr select 2 +and +.Xr poll 2 +on a +.Nm +file descriptor process rings as indicated in +.Sx TRANSMIT RINGS +and +.Sx RECEIVE RINGS +when write (POLLOUT) and read (POLLIN) events are requested. +.Pp +Both block if no slots are available in the ring ( +.Va ring->cur == ring->tail ) +.Pp +Packets in transmit rings are normally pushed out even without +requesting write events. Passing the NETMAP_NO_TX_SYNC flag to +.Em NIOCREGIF +disables this feature. +.Sh LIBRARIES +The +.Nm +API is supposed to be used directly, both because of its simplicity and +for efficient integration with applications. +.Pp +For conveniency, the +.Va +header provides a few macros and functions to ease creating +a file descriptor and doing I/O with a +.Nm +port. These are loosely modeled after the +.Xr pcap 3 +API, to ease porting of libpcap-based applications to +.Nm . +To use these extra functions, programs should +.Dl #define NETMAP_WITH_LIBS +before +.Dl #include +.Pp +The following functions are available: +.Bl -tag -width XXXXX +.It Va struct nm_desc_t * nm_open(const char *ifname, const char *ring_name, int flags, int ring_flags) +similar to +.Xr pcap_open , +binds a file descriptor to a port. +.Bl -tag -width XX +.It Va ifname +is a port name, in the form "netmap:XXX" for a NIC and "valeXXX:YYY" for a +.Nm VALE +port. +.It Va flags +can be set to +.Va NETMAP_SW_RING +to bind to the host ring pair, +or to NETMAP_HW_RING to bind to a specific ring. +.Va ring_name +with NETMAP_HW_RING, +is interpreted as a string or an integer indicating the ring to use. +.It Va ring_flags +is copied directly into the ring flags, to specify additional parameters +such as NR_TIMESTAMP or NR_FORWARD. +.El +.It Va int nm_close(struct nm_desc_t *d) +closes the file descriptor, unmaps memory, frees resources. +.It Va int nm_inject(struct nm_desc_t *d, const void *buf, size_t size) +similar to pcap_inject(), pushes a packet to a ring, returns the size +of the packet is successful, or 0 on error; +.It Va int nm_dispatch(struct nm_desc_t *d, int cnt, nm_cb_t cb, u_char *arg) +similar to pcap_dispatch(), applies a callback to incoming packets +.It Va u_char * nm_nextpkt(struct nm_desc_t *d, struct nm_hdr_t *hdr) +similar to pcap_next(), fetches the next packet +.Pp +.El +.Sh SUPPORTED DEVICES +.Nm +natively supports the following devices: +.Pp +On FreeBSD: +.Xr em 4 , +.Xr igb 4 , +.Xr ixgbe 4 , +.Xr lem 4 , +.Xr re 4 . +.Pp +On Linux +.Xr e1000 4 , +.Xr e1000e 4 , +.Xr igb 4 , +.Xr ixgbe 4 , +.Xr mlx4 4 , +.Xr forcedeth 4 , +.Xr r8169 4 . +.Pp +NICs without native support can still be used in +.Nm +mode through emulation. Performance is inferior to native netmap +mode but still significantly higher than sockets, and approaching +that of in-kernel solutions such as Linux's +.Xr pktgen . +.Pp +Emulation is also available for devices with native netmap support, +which can be used for testing or performance comparison. +The sysctl variable +.Va dev.netmap.admode +globally controls how netmap mode is implemented. +.Sh SYSCTL VARIABLES AND MODULE PARAMETERS +Some aspect of the operation of +.Nm +are controlled through sysctl variables on FreeBSD +.Em ( dev.netmap.* ) +and module parameters on Linux +.Em ( /sys/module/netmap_lin/parameters/* ) : *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 14:34:15 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 022DFBA5; Mon, 6 Jan 2014 14:34:15 +0000 (UTC) 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 C3B361661; Mon, 6 Jan 2014 14:34:14 +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 1W0BFt-0003gK-E1; Mon, 06 Jan 2014 14:34:13 +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 s06EYApF027596; Mon, 6 Jan 2014 07:34:10 -0700 (MST) (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+ISPuZDe8i+pxAzkhhHfmE Subject: Re: svn commit: r260161 - in head/sys/arm: arm include From: Ian Lepore To: Zbigniew Bodek In-Reply-To: References: <201401012003.s01K3ngn009757@svn.freebsd.org> <1388976912.1158.331.camel@revolution.hippie.lan> <52CA3C07.9030002@FreeBSD.org> Content-Type: text/plain; charset="us-ascii" Date: Mon, 06 Jan 2014 07:34:10 -0700 Message-ID: <1389018850.1158.333.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, Andreas Tobler X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 14:34:15 -0000 On Mon, 2014-01-06 at 13:07 +0100, Zbigniew Bodek wrote: > 2014/1/6 Andreas Tobler : > > On 06.01.14 03:55, Ian Lepore wrote: > >> On Wed, 2014-01-01 at 20:03 +0000, Zbigniew Bodek wrote: > >>> Author: zbb > >>> Date: Wed Jan 1 20:03:48 2014 > >>> New Revision: 260161 > >>> URL: http://svnweb.freebsd.org/changeset/base/260161 > >>> > >>> Log: > >>> Add polarity and level support to ARM GIC > >>> > >>> Add suport for setting triggering level and polarity in GIC. > >>> New function pointer was added to nexus which corresponds > >>> to the function which sets level/sense in the hardware (GIC). > >>> > >>> Submitted by: Wojciech Macek > >>> Obtained from: Semihalf > >>> > >>> Modified: > >>> head/sys/arm/arm/gic.c > >>> head/sys/arm/arm/intr.c > >>> head/sys/arm/arm/nexus.c > >>> head/sys/arm/include/intr.h > >>> > >> [...] > >>> Modified: head/sys/arm/include/intr.h > >>> ============================================================================== > >>> --- head/sys/arm/include/intr.h Wed Jan 1 19:38:15 2014 (r260160) > >>> +++ head/sys/arm/include/intr.h Wed Jan 1 20:03:48 2014 (r260161) > >>> @@ -68,6 +68,7 @@ > >>> #endif > >>> > >>> #include > >>> +#include > >>> > >>> int arm_get_next_irq(int); > >>> void arm_mask_irq(uintptr_t); > >>> @@ -77,6 +78,8 @@ void arm_setup_irqhandler(const char *, > >>> void *, int, int, void **); > >>> int arm_remove_irqhandler(int, void *); > >>> extern void (*arm_post_filter)(void *); > >>> +extern int (*arm_config_irq)(int irq, enum intr_trigger trig, > >>> + enum intr_polarity pol); > >>> > >>> void gic_init_secondary(void); > >>> > >> > >> It turns out that the new #include in this change is causing the current > >> arm tinderbox failures. Enums can't have forward decls anymore, so the > >> fix for this may not be easy. > > > > I posted my try to fix this here: > > > > http://lists.freebsd.org/pipermail/freebsd-current/2014-January/047694.html > > > > Rebuilt 260333 successfully with it. > > > > Andreas > > > > Hello. > > Thank you very much. Can this be committed or are there any objections? > > Best regards > zbb It looks good to me. It's odd that the tinderbox has been failing for several days on this, but I've been doing universe-kernel builds all weekend without running into it. I wonder what's different between tinderbox and universe in this regard? -- Ian From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 14:39:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 30EE6E0F; Mon, 6 Jan 2014 14:39:11 +0000 (UTC) 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 1CE601690; Mon, 6 Jan 2014 14:39: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 s06EdARi086787; Mon, 6 Jan 2014 14:39:10 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06EdAC0086786; Mon, 6 Jan 2014 14:39:10 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401061439.s06EdAC0086786@svn.freebsd.org> From: Dimitry Andric Date: Mon, 6 Jan 2014 14:39:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260369 - head/share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 14:39:11 -0000 Author: dim Date: Mon Jan 6 14:39:10 2014 New Revision: 260369 URL: http://svnweb.freebsd.org/changeset/base/260369 Log: Apply band-aid for 32-bit compat libs failures after r260334: put back -Qunused-arguments for clang for now, until I can figure out a way to make it unneeded in all scenarios. Sorry about the breakage. Modified: head/share/mk/bsd.sys.mk Modified: head/share/mk/bsd.sys.mk ============================================================================== --- head/share/mk/bsd.sys.mk Mon Jan 6 12:53:15 2014 (r260368) +++ head/share/mk/bsd.sys.mk Mon Jan 6 14:39:10 2014 (r260369) @@ -119,6 +119,7 @@ CWARNFLAGS+= -Wno-unknown-pragmas CLANG_NO_IAS= -no-integrated-as CLANG_OPT_SMALL= -mstack-alignment=8 -mllvm -inline-threshold=3\ -mllvm -enable-load-pre=false -mllvm -simplifycfg-dup-ret +CFLAGS+= -Qunused-arguments CFLAGS+= ${CFLAGS.clang} CXXFLAGS+= ${CXXFLAGS.clang} .else # !CLANG From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 14:49:58 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0BEF8324; Mon, 6 Jan 2014 14:49:58 +0000 (UTC) Received: from nk11p03mm-asmtp001.mac.com (nk11p03mm-asmtp001.mac.com [17.158.232.236]) by mx1.freebsd.org (Postfix) with ESMTP id D5B4B1747; Mon, 6 Jan 2014 14:49:57 +0000 (UTC) Received: from [10.20.30.117] ([75.101.82.48]) by nk11p03mm-asmtp001.mac.com (Oracle Communications Messaging Server 7u4-27.08(7.0.4.27.7) 64bit (built Aug 22 2013)) with ESMTPSA id <0MYZ00ILOIINLP40@nk11p03mm-asmtp001.mac.com>; Mon, 06 Jan 2014 14:49:51 +0000 (GMT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-01-06_01:2014-01-06,2014-01-06,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1308280000 definitions=main-1401060073 MIME-version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r260311 - in head/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty From: Jordan Hubbard In-reply-to: <52C985C7.9060406@FreeBSD.org> Date: Mon, 06 Jan 2014 15:48:30 +0100 Message-id: <9B829C42-1218-46F0-B3BF-D491A2F733B9@me.com> References: <201401050043.s050hSMI089553@svn.freebsd.org> <20140105124557.5dd8395a@kalimero.tijl.coosemans.org> <52C985C7.9060406@FreeBSD.org> To: Pedro Giffuni X-Mailer: Apple Mail (2.1827) Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: svn-src-head@freebsd.org, Tijl Coosemans , src-committers@freebsd.org, svn-src-all@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 14:49:58 -0000 On Jan 5, 2014, at 5:18 PM, Pedro Giffuni wrote: > *Anyone working on a GCD-enabled version of grep or sort? :). Look at stdlib/FreeBSD/psort.c in OS X=92s Libc = (http://www.opensource.apple.com/release/os-x-109/Libc-997.1.1) - that=92s= the basis for the GCD-aware sort. I don=92t know if we got around to doing grep or not - I=92d have to = look. :) - Jordan From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 15:10:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7468ADF3; Mon, 6 Jan 2014 15:10:16 +0000 (UTC) Received: from mail-ie0-x22f.google.com (mail-ie0-x22f.google.com [IPv6:2607:f8b0:4001:c03::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2356218FB; Mon, 6 Jan 2014 15:10:16 +0000 (UTC) Received: by mail-ie0-f175.google.com with SMTP id x13so18719491ief.34 for ; Mon, 06 Jan 2014 07:10:15 -0800 (PST) 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=XjlsBqLDBj/qo/6q+i8VY3/YFgSRaCtgCFWWBsUT4Z0=; b=h+mH8RSbgEHK7TCS5RYZVugbGOIZgirvuNH/tVvnXun0q4qzX8/DfXUxiEglq1m7K+ dNRpnfj5ibl42dJuDwAWHu2RvyH9VkBqzdp6i0Nvc1dh4K7J4kbUhW3Hmrjzu0Fi0UmJ 0AN43hKWgTj2vgLewgFAkQ4Hd9VbUy0fsi5F9fwedWrqJHKBp8/WWmKtiMjrmXQcjh1y FPgZcBIYWwM0BztHDviXBe4qG7HDjvp3ZYya3+lgGanSEJCgcCwPdpBnxhIPScYuGCLj Uu58qlw3KkTDn+MStWD6EhX+n1ach5rc5Ykz6UjpLrdtsjCXiCZi7Sn22boONfiQ2Lm5 vThg== X-Received: by 10.50.143.10 with SMTP id sa10mr19788820igb.8.1389021015464; Mon, 06 Jan 2014 07:10:15 -0800 (PST) MIME-Version: 1.0 Sender: mr.kodiak@gmail.com Received: by 10.64.6.134 with HTTP; Mon, 6 Jan 2014 07:09:45 -0800 (PST) In-Reply-To: <20140106065314.GB1372@michelle.cdnetworks.com> References: <201401031103.s03B3CAf013123@svn.freebsd.org> <20140106065314.GB1372@michelle.cdnetworks.com> From: Bryan Venteicher Date: Mon, 6 Jan 2014 09:09:45 -0600 X-Google-Sender-Auth: HqBqF-8DyLBR7RPmQprPoKsKFgk Message-ID: Subject: Re: svn commit: r260224 - head/sys/netinet To: pyunyh@gmail.com Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Gleb Smirnoff , src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 15:10:16 -0000 On Mon, Jan 6, 2014 at 12:53 AM, Yonghyeon PYUN wrote: > On Fri, Jan 03, 2014 at 11:03:12AM +0000, Gleb Smirnoff wrote: > > Author: glebius > > Date: Fri Jan 3 11:03:12 2014 > > New Revision: 260224 > > URL: http://svnweb.freebsd.org/changeset/base/260224 > > > > Log: > > Make failure of ifpromisc() a non-fatal error. This makes it possible > to > > run carp(4) on vtnet(4). > > > > vtnet(4) is the only device that doesn't correctly support > promiscuous mode? I don't know details of vtnet(4) but it seems > it's not hard to mimic promiscuous mode. I'm not sure why the > driver returns ENOTSUP to user land given that vtnet(4) defaults > to promiscuous mode for backwards compatibility. It also does > not handle multicast filter configuration when VTNET_FLAG_CTRL_RX > flag is not set. If vtnet(4) does not support multicast filter, > it shouldn't announce IFF_MULTICAST. I wonder how vtnet(4) can work > with carp(4) given that its multicast handling is ignored. > I've talked to Gleb off-list about this. I intent to remove the default to promiscuous mode hack. Previous versions of the specification had a footnote about this, but it has since been removed. Note that both promisc and multicast likely require some host configuration on the tap/bridge/physical interfaces as well. I'll look at the multicast handling. If carp(4) already works with bhyve, we might want to add a minimalist control virtqueue support to bhyve. From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 15:48:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E5C0BDFF; Mon, 6 Jan 2014 15:48:16 +0000 (UTC) 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 D151A1E31; Mon, 6 Jan 2014 15:48: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 s06FmGFC015556; Mon, 6 Jan 2014 15:48:16 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06FmGZM015555; Mon, 6 Jan 2014 15:48:16 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401061548.s06FmGZM015555@svn.freebsd.org> From: Ian Lepore Date: Mon, 6 Jan 2014 15:48:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260371 - head/sys/arm/broadcom/bcm2835 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 15:48:17 -0000 Author: ian Date: Mon Jan 6 15:48:16 2014 New Revision: 260371 URL: http://svnweb.freebsd.org/changeset/base/260371 Log: Switch to using arm_devmap_add_entry() to set up static device mapping. This eliminates the hard-coded max kva and roughly doubles the available kva space. Modified: head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c Modified: head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c ============================================================================== --- head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c Mon Jan 6 14:56:00 2014 (r260370) +++ head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c Mon Jan 6 15:48:16 2014 (r260371) @@ -59,14 +59,11 @@ __FBSDID("$FreeBSD$"); #include -/* Start of address space used for bootstrap map */ -#define DEVMAP_BOOTSTRAP_MAP_START 0xE0000000 - vm_offset_t initarm_lastaddr(void) { - return (DEVMAP_BOOTSTRAP_MAP_START); + return (arm_devmap_lastaddr()); } void @@ -99,28 +96,16 @@ initarm_late_init(void) } } -#define FDT_DEVMAP_MAX (2) // FIXME -static struct arm_devmap_entry fdt_devmap[FDT_DEVMAP_MAX] = { - { 0, 0, 0, 0, 0, } -}; - - /* - * Construct pmap_devmap[] with DT-derived config data. + * Set up static device mappings. + * All on-chip peripherals exist in a 16MB range starting at 0x20000000. + * Map the entire range using 1MB section mappings. */ int initarm_devmap_init(void) { - int i = 0; - - fdt_devmap[i].pd_va = 0xf2000000; - fdt_devmap[i].pd_pa = 0x20000000; - fdt_devmap[i].pd_size = 0x01000000; /* 1 MB */ - fdt_devmap[i].pd_prot = VM_PROT_READ | VM_PROT_WRITE; - fdt_devmap[i].pd_cache = PTE_DEVICE; - i++; - arm_devmap_register_table(&fdt_devmap[0]); + arm_devmap_add_entry(0x20000000, 0x01000000); return (0); } From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 16:07:28 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2B9803C7; Mon, 6 Jan 2014 16:07:28 +0000 (UTC) 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 182241FC0; Mon, 6 Jan 2014 16:07: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 s06G7RCY023282; Mon, 6 Jan 2014 16:07:27 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06G7RNC023281; Mon, 6 Jan 2014 16:07:27 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401061607.s06G7RNC023281@svn.freebsd.org> From: Ian Lepore Date: Mon, 6 Jan 2014 16:07:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260372 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 16:07:28 -0000 Author: ian Date: Mon Jan 6 16:07:27 2014 New Revision: 260372 URL: http://svnweb.freebsd.org/changeset/base/260372 Log: Allow 'no static device mappings' to potentially work. It's not clear that every arm system must have some static mappings to work correctly (although currently they all do), so remove some panic() calls (which would never been seen anyway, because they would happen before a console is available). Modified: head/sys/arm/arm/devmap.c Modified: head/sys/arm/arm/devmap.c ============================================================================== --- head/sys/arm/arm/devmap.c Mon Jan 6 15:48:16 2014 (r260371) +++ head/sys/arm/arm/devmap.c Mon Jan 6 16:07:27 2014 (r260372) @@ -67,11 +67,8 @@ arm_devmap_lastaddr() if (akva_devmap_idx > 0) return (akva_devmap_vaddr); - if (devmap_table == NULL) - panic("arm_devmap_lastaddr(): No devmap table registered."); - lowaddr = ARM_VECTORS_HIGH; - for (pd = devmap_table; pd->pd_size != 0; ++pd) { + for (pd = devmap_table; pd != NULL && pd->pd_size != 0; ++pd) { if (lowaddr > pd->pd_va) lowaddr = pd->pd_va; } @@ -145,22 +142,21 @@ arm_devmap_bootstrap(vm_offset_t l1pt, c { const struct arm_devmap_entry *pd; + devmap_bootstrap_done = true; + /* - * If given a table pointer, use it, else ensure a table was previously - * registered. This happens early in boot, and there's a good chance - * the panic message won't be seen, but there's not much we can do. + * If given a table pointer, use it. Otherwise, if a table was + * previously registered, use it. Otherwise, no work to do. */ if (table != NULL) devmap_table = table; else if (devmap_table == NULL) - panic("arm_devmap_bootstrap(): No devmap table registered"); + return; for (pd = devmap_table; pd->pd_size != 0; ++pd) { pmap_map_chunk(l1pt, pd->pd_va, pd->pd_pa, pd->pd_size, pd->pd_prot,pd->pd_cache); } - - devmap_bootstrap_done = true; } /* From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 16:33:17 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2170C117; Mon, 6 Jan 2014 16:33:17 +0000 (UTC) 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 0E02B133E; Mon, 6 Jan 2014 16:33: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 s06GXGiD036627; Mon, 6 Jan 2014 16:33:16 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06GXGFf036626; Mon, 6 Jan 2014 16:33:16 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401061633.s06GXGFf036626@svn.freebsd.org> From: Ian Lepore Date: Mon, 6 Jan 2014 16:33:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260373 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 16:33:17 -0000 Author: ian Date: Mon Jan 6 16:33:16 2014 New Revision: 260373 URL: http://svnweb.freebsd.org/changeset/base/260373 Log: Don't try to find a static mapping before calling pmap_mapdev(), that logic is now part of pmap_mapdev() and doesn't need to be duplicated here. Likewise for unmapping. Modified: head/sys/arm/arm/bus_space_generic.c Modified: head/sys/arm/arm/bus_space_generic.c ============================================================================== --- head/sys/arm/arm/bus_space_generic.c Mon Jan 6 16:07:27 2014 (r260372) +++ head/sys/arm/arm/bus_space_generic.c Mon Jan 6 16:33:16 2014 (r260373) @@ -62,16 +62,12 @@ generic_bs_map(void *t, bus_addr_t bpa, void *va; /* - * Look up the address in the static device mappings. If it's not - * there, establish a new dynamic mapping. - * * We don't even examine the passed-in flags. For ARM, the CACHEABLE * flag doesn't make sense (we create PTE_DEVICE mappings), and the * LINEAR flag is just implied because we use kva_alloc(size). */ - if ((va = arm_devmap_ptov(bpa, size)) == NULL) - if ((va = pmap_mapdev(bpa, size)) == NULL) - return (ENOMEM); + if ((va = pmap_mapdev(bpa, size)) == NULL) + return (ENOMEM); *bshp = (bus_space_handle_t)va; return (0); } @@ -90,12 +86,7 @@ void generic_bs_unmap(void *t, bus_space_handle_t h, bus_size_t size) { - /* - * If the region is static-mapped do nothing, otherwise remove the - * dynamic mapping. - */ - if (arm_devmap_vtop((void*)h, size) == DEVMAP_PADDR_NOTFOUND) - pmap_unmapdev((vm_offset_t)h, size); + pmap_unmapdev((vm_offset_t)h, size); } void From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 16:57:23 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9C3125C1; Mon, 6 Jan 2014 16:57:23 +0000 (UTC) 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 6E817156C; Mon, 6 Jan 2014 16:57: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 s06GvNVu044370; Mon, 6 Jan 2014 16:57:23 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06GvN0g044369; Mon, 6 Jan 2014 16:57:23 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401061657.s06GvN0g044369@svn.freebsd.org> From: Ian Lepore Date: Mon, 6 Jan 2014 16:57:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260374 - head/sys/arm/allwinner X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 16:57:23 -0000 Author: ian Date: Mon Jan 6 16:57:22 2014 New Revision: 260374 URL: http://svnweb.freebsd.org/changeset/base/260374 Log: Switch to using arm_devmap_add_entry() to set up static device mapping. This eliminates the hard-coded max kva and roughly doubles the available kva space. Modified: head/sys/arm/allwinner/a10_machdep.c Modified: head/sys/arm/allwinner/a10_machdep.c ============================================================================== --- head/sys/arm/allwinner/a10_machdep.c Mon Jan 6 16:33:16 2014 (r260373) +++ head/sys/arm/allwinner/a10_machdep.c Mon Jan 6 16:57:22 2014 (r260374) @@ -50,21 +50,16 @@ __FBSDID("$FreeBSD$"); #include -/* Start of address space used for bootstrap map */ -#define DEVMAP_BOOTSTRAP_MAP_START 0xE0000000 - - vm_offset_t initarm_lastaddr(void) { - return (DEVMAP_BOOTSTRAP_MAP_START); + return (arm_devmap_lastaddr()); } void initarm_early_init(void) { - } void @@ -77,28 +72,21 @@ initarm_late_init(void) { } -#define FDT_DEVMAP_MAX (1 + 2 + 1 + 1) -static struct arm_devmap_entry fdt_devmap[FDT_DEVMAP_MAX] = { - { 0, 0, 0, 0, 0, } -}; - /* - * Construct pmap_devmap[] with DT-derived config data. + * Set up static device mappings. + * + * This covers all the on-chip device with 1MB section mappings, which is good + * for performance (uses fewer TLB entries for device access). + * + * XXX It also covers a block of SRAM and some GPU (mali400) stuff that maybe + * shouldn't be device-mapped. The original code mapped a 4MB block, but + * perhaps a 1MB block would be more appropriate. */ int initarm_devmap_init(void) { - int i = 0; - - fdt_devmap[i].pd_va = 0xE1C00000; - fdt_devmap[i].pd_pa = 0x01C00000; - fdt_devmap[i].pd_size = 0x00400000; /* 4 MB */ - fdt_devmap[i].pd_prot = VM_PROT_READ | VM_PROT_WRITE; - fdt_devmap[i].pd_cache = PTE_DEVICE; - - i++; - arm_devmap_register_table(&fdt_devmap[0]); + arm_devmap_add_entry(0x01C00000, 0x00400000); /* 4MB */ return (0); } From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 17:16:28 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A273B9E5; Mon, 6 Jan 2014 17:16:28 +0000 (UTC) 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 8E1CC16D6; Mon, 6 Jan 2014 17: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 s06HGSTm052699; Mon, 6 Jan 2014 17:16:28 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06HGSi2052696; Mon, 6 Jan 2014 17:16:28 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201401061716.s06HGSi2052696@svn.freebsd.org> From: Andreas Tobler Date: Mon, 6 Jan 2014 17:16:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260375 - in head/sys/arm: 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 17:16:28 -0000 Author: andreast Date: Mon Jan 6 17:16:27 2014 New Revision: 260375 URL: http://svnweb.freebsd.org/changeset/base/260375 Log: Fix arm build. Reviewed by: ian, zbb Modified: head/sys/arm/arm/trap.c head/sys/arm/include/intr.h head/sys/arm/include/psl.h Modified: head/sys/arm/arm/trap.c ============================================================================== --- head/sys/arm/arm/trap.c Mon Jan 6 16:57:22 2014 (r260374) +++ head/sys/arm/arm/trap.c Mon Jan 6 17:16:27 2014 (r260375) @@ -85,6 +85,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include Modified: head/sys/arm/include/intr.h ============================================================================== --- head/sys/arm/include/intr.h Mon Jan 6 16:57:22 2014 (r260374) +++ head/sys/arm/include/intr.h Mon Jan 6 17:16:27 2014 (r260375) @@ -67,8 +67,6 @@ #define NIRQ 32 #endif -#include -#include int arm_get_next_irq(int); void arm_mask_irq(uintptr_t); Modified: head/sys/arm/include/psl.h ============================================================================== --- head/sys/arm/include/psl.h Mon Jan 6 16:57:22 2014 (r260374) +++ head/sys/arm/include/psl.h Mon Jan 6 17:16:27 2014 (r260375) @@ -46,7 +46,6 @@ #ifndef _MACHINE_PSL_H_ #define _MACHINE_PSL_H_ -#include /* * These are the different SPL states From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 17:17:55 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 82CC8C53; Mon, 6 Jan 2014 17:17:55 +0000 (UTC) Received: from smtp.fgznet.ch (mail.fgznet.ch [81.92.96.47]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0BA1E16F4; Mon, 6 Jan 2014 17:17:54 +0000 (UTC) Received: from deuterium.andreas.nets (dhclient-91-190-14-19.flashcable.ch [91.190.14.19]) by smtp.fgznet.ch (8.13.8/8.13.8/Submit_SMTPAUTH) with ESMTP id s06HHlGr018208; Mon, 6 Jan 2014 18:17:50 +0100 (CET) (envelope-from andreast@FreeBSD.org) Message-ID: <52CAE53B.8010709@FreeBSD.org> Date: Mon, 06 Jan 2014 18:17:47 +0100 From: Andreas Tobler User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Ian Lepore , Zbigniew Bodek Subject: Re: svn commit: r260161 - in head/sys/arm: arm include References: <201401012003.s01K3ngn009757@svn.freebsd.org> <1388976912.1158.331.camel@revolution.hippie.lan> <52CA3C07.9030002@FreeBSD.org> <1389018850.1158.333.camel@revolution.hippie.lan> In-Reply-To: <1389018850.1158.333.camel@revolution.hippie.lan> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.64 on 81.92.96.47 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 17:17:55 -0000 On 06.01.14 15:34, Ian Lepore wrote: > On Mon, 2014-01-06 at 13:07 +0100, Zbigniew Bodek wrote: >> 2014/1/6 Andreas Tobler : >>> On 06.01.14 03:55, Ian Lepore wrote: >>>> On Wed, 2014-01-01 at 20:03 +0000, Zbigniew Bodek wrote: >>>>> Author: zbb >>>>> Date: Wed Jan 1 20:03:48 2014 >>>>> New Revision: 260161 >>>>> URL: http://svnweb.freebsd.org/changeset/base/260161 >>>>> >>>>> Log: >>>>> Add polarity and level support to ARM GIC >>>>> >>>>> Add suport for setting triggering level and polarity in GIC. >>>>> New function pointer was added to nexus which corresponds >>>>> to the function which sets level/sense in the hardware (GIC). >>>>> >>>>> Submitted by: Wojciech Macek >>>>> Obtained from: Semihalf >>>>> >>>>> Modified: >>>>> head/sys/arm/arm/gic.c >>>>> head/sys/arm/arm/intr.c >>>>> head/sys/arm/arm/nexus.c >>>>> head/sys/arm/include/intr.h >>>>> >>>> [...] >>>>> Modified: head/sys/arm/include/intr.h >>>>> ============================================================================== >>>>> --- head/sys/arm/include/intr.h Wed Jan 1 19:38:15 2014 (r260160) >>>>> +++ head/sys/arm/include/intr.h Wed Jan 1 20:03:48 2014 (r260161) >>>>> @@ -68,6 +68,7 @@ >>>>> #endif >>>>> >>>>> #include >>>>> +#include >>>>> >>>>> int arm_get_next_irq(int); >>>>> void arm_mask_irq(uintptr_t); >>>>> @@ -77,6 +78,8 @@ void arm_setup_irqhandler(const char *, >>>>> void *, int, int, void **); >>>>> int arm_remove_irqhandler(int, void *); >>>>> extern void (*arm_post_filter)(void *); >>>>> +extern int (*arm_config_irq)(int irq, enum intr_trigger trig, >>>>> + enum intr_polarity pol); >>>>> >>>>> void gic_init_secondary(void); >>>>> >>>> >>>> It turns out that the new #include in this change is causing the current >>>> arm tinderbox failures. Enums can't have forward decls anymore, so the >>>> fix for this may not be easy. >>> >>> I posted my try to fix this here: >>> >>> http://lists.freebsd.org/pipermail/freebsd-current/2014-January/047694.html >>> >>> Rebuilt 260333 successfully with it. >>> >>> Andreas >>> >> >> Hello. >> >> Thank you very much. Can this be committed or are there any objections? >> >> Best regards >> zbb > > It looks good to me. > > It's odd that the tinderbox has been failing for several days on this, > but I've been doing universe-kernel builds all weekend without running > into it. I wonder what's different between tinderbox and universe in > this regard? Thanks. Committed as r260375. As it is not my home base I wanted to have an ack from an arm dev. Andreas From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 17:23:22 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C0152ED0; Mon, 6 Jan 2014 17:23:22 +0000 (UTC) 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 ABDA41780; Mon, 6 Jan 2014 17:23: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 s06HNM6E056644; Mon, 6 Jan 2014 17:23:22 GMT (envelope-from schweikh@svn.freebsd.org) Received: (from schweikh@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06HNMvt056643; Mon, 6 Jan 2014 17:23:22 GMT (envelope-from schweikh@svn.freebsd.org) Message-Id: <201401061723.s06HNMvt056643@svn.freebsd.org> From: Jens Schweikhardt Date: Mon, 6 Jan 2014 17:23:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260376 - head/sys/amd64/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 17:23:22 -0000 Author: schweikh Date: Mon Jan 6 17:23:22 2014 New Revision: 260376 URL: http://svnweb.freebsd.org/changeset/base/260376 Log: Correct a grammo in a comment; remove white space at EOL. Modified: head/sys/amd64/conf/NOTES Modified: head/sys/amd64/conf/NOTES ============================================================================== --- head/sys/amd64/conf/NOTES Mon Jan 6 17:16:27 2014 (r260375) +++ head/sys/amd64/conf/NOTES Mon Jan 6 17:23:22 2014 (r260376) @@ -462,7 +462,7 @@ options SAFE_RNDTEST # enable rndtest s # # The virtio entry provides a generic bus for use by the device drivers. # It must be combined with an interface that communicates with the host. -# Multiple such interfaces defined by the VirtIO specification. FreeBSD +# Multiple such interfaces are defined by the VirtIO specification. FreeBSD # only has support for PCI. Therefore, virtio_pci must be statically # compiled in or loaded as a module for the device drivers to function. # @@ -476,7 +476,7 @@ device virtio_balloon # VirtIO Memory B device hyperv # HyperV drivers # Xen HVM Guest Optimizations -options XENHVM # Xen HVM kernel infrastructure +options XENHVM # Xen HVM kernel infrastructure device xenpci # Xen HVM Hypervisor services driver ##################################################################### From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 17:37:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9828242E; Mon, 6 Jan 2014 17:37:43 +0000 (UTC) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1CC67187D; Mon, 6 Jan 2014 17:37:42 +0000 (UTC) Received: from tom.home (kostik@localhost [127.0.0.1]) by kib.kiev.ua (8.14.7/8.14.7) with ESMTP id s06HbcoH008076; Mon, 6 Jan 2014 19:37:38 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.8.3 kib.kiev.ua s06HbcoH008076 Received: (from kostik@localhost) by tom.home (8.14.7/8.14.7/Submit) id s06Hbc9f008075; Mon, 6 Jan 2014 19:37:38 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 6 Jan 2014 19:37:38 +0200 From: Konstantin Belousov To: Adrian Chadd Subject: Re: svn commit: r260363 - head/sys/dev/ath Message-ID: <20140106173738.GG59496@kib.kiev.ua> References: <201401060348.s063mW8C031852@svn.freebsd.org> <20140106035139.GC59496@kib.kiev.ua> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="rH0ZJBuyEosIc0Vp" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.22 (2013-10-16) X-Spam-Status: No, score=-2.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED autolearn=no version=3.3.2 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on tom.home Cc: "svn-src-head@freebsd.org" , "svn-src-all@freebsd.org" , "src-committers@freebsd.org" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 17:37:43 -0000 --rH0ZJBuyEosIc0Vp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Jan 05, 2014 at 09:37:21PM -0800, Adrian Chadd wrote: > On 5 January 2014 19:51, Konstantin Belousov wrote: > > On Mon, Jan 06, 2014 at 03:48:32AM +0000, Adrian Chadd wrote: > >> Author: adrian > >> Date: Mon Jan 6 03:48:32 2014 > >> New Revision: 260363 > >> URL: http://svnweb.freebsd.org/changeset/base/260363 > >> > >> Log: > >> Correctly remove entries from the relevant receive ath_buf list befo= re > >> freeing them. > >> > >> The current code would walk the list and call the buffer free, which > >> didn't remove it from any lists before pushing it back on the free l= ist. > >> > >> Tested: AR9485, STA mode > >> > >> Noticed by: dillon@apollo.dragonflybsd.org > > This is a NOP, right ? >=20 > Nope. the previous version didn't remove the entries from the list. > that's the bug. Hm, you mean that the previous version did not TAILQ_INIT() after the loop ? Then I agree. --rH0ZJBuyEosIc0Vp Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iQIcBAEBAgAGBQJSyunhAAoJEJDCuSvBvK1BAc4P/A+wbYIbG11/iJf6045gbnLc ZRyLfcnNW7rMUC7NN5mKa6V3bIbG/R3XE0g+VHWSP/YDF1o67pU7+kMzlI4/JTzZ X1nRwgKm8gI4iGq/OfAgHeuQdXGosjT031iDMD+9bsNPjllQOZNFG5y6mEl0nS/9 42nhaYKwjg0n0bZs2seidnUbujkZTHtrWPeB81D9mhcz3xCU0l8XUxTC6pZFWt5d BkDhugI+DfqB8qU4TzBKt1LIsoQLUuxhPNimoX+5pJwTHF5N6Gu2BRtyK6i12Fnx rjZufZHTLokBysGnoLpfZxBpdFIq5egYrqoe9+Oinda7I6XoAwsQva+qftLs28ec j3385PevNI1+YkaUGXKdwyM3gxsyRvIJmZR3IYf7wQoywh7cv3CaewpXgoBhxP4G ZiH4zFDxcdP0GxR2L68QW6m/RAZKQkXetwdke709uOAFHtImYt2f7I8ffTZEOfCB IJOKhSgqL3sKm+5vCMQGzfVEzUkOR0N+7zCF11aXQZYmKp6Or31rovXdf2nIPTA9 F45dhXa/ZYGA0cj2RHWDbWTAoJgSibwH5j//SUKD/S8dCXyPFgF8NH02/qI5rQja R6q49giV+2ojWtohJX7AwTHpL2+v6ktMJixdYYNmtkfRHTeIv1BD5tvbajS8KJh9 UPdVP5IMXjA3CNFC7foX =6tUW -----END PGP SIGNATURE----- --rH0ZJBuyEosIc0Vp-- From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 19:05:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7A099D3A; Mon, 6 Jan 2014 19:05:05 +0000 (UTC) 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 664511107; Mon, 6 Jan 2014 19:05: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 s06J55ro096290; Mon, 6 Jan 2014 19:05:05 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06J559t096288; Mon, 6 Jan 2014 19:05:05 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401061905.s06J559t096288@svn.freebsd.org> From: Gleb Smirnoff Date: Mon, 6 Jan 2014 19:05:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260377 - head/sys/netpfil/pf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 19:05:05 -0000 Author: glebius Date: Mon Jan 6 19:05:04 2014 New Revision: 260377 URL: http://svnweb.freebsd.org/changeset/base/260377 Log: When pf_get_translation() fails, it should leave *sn pointer pristine, otherwise we will panic in pf_test_rule(). PR: 182557 Modified: head/sys/netpfil/pf/pf_lb.c Modified: head/sys/netpfil/pf/pf_lb.c ============================================================================== --- head/sys/netpfil/pf/pf_lb.c Mon Jan 6 17:23:22 2014 (r260376) +++ head/sys/netpfil/pf/pf_lb.c Mon Jan 6 19:05:04 2014 (r260377) @@ -686,6 +686,7 @@ notrans: uma_zfree(V_pf_state_key_z, *nkp); uma_zfree(V_pf_state_key_z, *skp); *skp = *nkp = NULL; + *sn = NULL; return (NULL); } From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 19:14:47 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 705D6BB; Mon, 6 Jan 2014 19:14:47 +0000 (UTC) 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 5C43411BD; Mon, 6 Jan 2014 19:14: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 s06JEl66000367; Mon, 6 Jan 2014 19:14:47 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06JElaM000366; Mon, 6 Jan 2014 19:14:47 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401061914.s06JElaM000366@svn.freebsd.org> From: Gleb Smirnoff Date: Mon, 6 Jan 2014 19:14:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260378 - releng/10.0/sys/netinet X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 19:14:47 -0000 Author: glebius Date: Mon Jan 6 19:14:46 2014 New Revision: 260378 URL: http://svnweb.freebsd.org/changeset/base/260378 Log: Merge r260319 from stable/10 (r260188 from head): Fix regression from r249894. Now we pass "gw" as argument to if_output method, thus for multicast case we need it to point at "dst". PR: 185395 Approved by: re (gjb) Modified: releng/10.0/sys/netinet/ip_output.c Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/sys/netinet/ip_output.c ============================================================================== --- releng/10.0/sys/netinet/ip_output.c Mon Jan 6 19:05:04 2014 (r260377) +++ releng/10.0/sys/netinet/ip_output.c Mon Jan 6 19:14:46 2014 (r260378) @@ -331,6 +331,12 @@ again: if (IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) { m->m_flags |= M_MCAST; /* + * IP destination address is multicast. Make sure "gw" + * still points to the address in "ro". (It may have been + * changed to point to a gateway address, above.) + */ + gw = dst; + /* * See if the caller provided any multicast options */ if (imo != NULL) { From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 19:49:06 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 82D1BCB7; Mon, 6 Jan 2014 19:49:06 +0000 (UTC) Received: from mail-qc0-x22f.google.com (mail-qc0-x22f.google.com [IPv6:2607:f8b0:400d:c01::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1C2731475; Mon, 6 Jan 2014 19:49:06 +0000 (UTC) Received: by mail-qc0-f175.google.com with SMTP id e9so17806242qcy.20 for ; Mon, 06 Jan 2014 11:49:05 -0800 (PST) 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=y5O72kt03YwyXsukDPaDWt0SOYu9j2sCsMW4EI941ow=; b=kxH5onnPyn7DVE7v55UgZ2uAqyWilNw+HW9KQygRfR/Q5sSzeYDmcKIEK53gt7I1TM oZlmQLtFyHI75lXRDwdWbPuIOvNMyCg0iXjQlHs8hpE6OH4SKlV0bPJdq4NhKh9gaAcu eteuzm89J8a37hN5JD7mOTMsDaBYRFAz7i/NYACu27KF9zt5wVzB2CFOmxBujqUWzNvw JHJYDN03FEZlj1ljNWkqXf2U2af51UvQrNWNKk80awOOHe1Epyl16w9EtIsMsz7f/x+g fuRU0FERlN0P9kRlylQyb7MHDYFvUiofMNd4EQ8wU+d2yyKJ259jjZRShelxXQhQSJLk m9eQ== MIME-Version: 1.0 X-Received: by 10.224.46.8 with SMTP id h8mr181857506qaf.49.1389037745249; Mon, 06 Jan 2014 11:49:05 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Mon, 6 Jan 2014 11:49:05 -0800 (PST) In-Reply-To: <20140106173738.GG59496@kib.kiev.ua> References: <201401060348.s063mW8C031852@svn.freebsd.org> <20140106035139.GC59496@kib.kiev.ua> <20140106173738.GG59496@kib.kiev.ua> Date: Mon, 6 Jan 2014 11:49:05 -0800 X-Google-Sender-Auth: SGTYwxdnXMN0IZil0uhyXkJTojY Message-ID: Subject: Re: svn commit: r260363 - head/sys/dev/ath From: Adrian Chadd To: Konstantin Belousov 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 19:49:06 -0000 On 6 January 2014 09:37, Konstantin Belousov wrote: >> > This is a NOP, right ? >> >> Nope. the previous version didn't remove the entries from the list. >> that's the bug. > Hm, you mean that the previous version did not TAILQ_INIT() after the loop ? > Then I agree. Well, it's that the frames just get moved between the RX queue active list(s) or the rxbuf inactive list. The correct thing to do is to TAILQ_REMOVE them from one list before adding them to the free list. -a From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 22:36:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7A9C55B7; Mon, 6 Jan 2014 22:36:21 +0000 (UTC) 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 4CD111129; Mon, 6 Jan 2014 22:36: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 s06MaLwT077350; Mon, 6 Jan 2014 22:36:21 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06MaKP6077348; Mon, 6 Jan 2014 22:36:20 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401062236.s06MaKP6077348@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Mon, 6 Jan 2014 22:36:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260379 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 22:36:21 -0000 Author: melifaro Date: Mon Jan 6 22:36:20 2014 New Revision: 260379 URL: http://svnweb.freebsd.org/changeset/base/260379 Log: Partially fix IPv4 interface routes deletion in RADIX_MPATH. Noticed by: Nikolay Denev MFC after: 1 month Modified: head/sys/net/radix_mpath.c head/sys/net/route.c Modified: head/sys/net/radix_mpath.c ============================================================================== --- head/sys/net/radix_mpath.c Mon Jan 6 19:14:46 2014 (r260378) +++ head/sys/net/radix_mpath.c Mon Jan 6 22:36:20 2014 (r260379) @@ -112,11 +112,16 @@ rt_mpath_matchgate(struct rtentry *rt, s if (rt->rt_gateway->sa_family == AF_LINK) { if (!memcmp(rt->rt_ifa->ifa_addr, gate, gate->sa_len)) break; - } else { - if (rt->rt_gateway->sa_len == gate->sa_len && - !memcmp(rt->rt_gateway, gate, gate->sa_len)) - break; } + + /* + * Check for other options: + * 1) Routes with 'real' IPv4/IPv6 gateway + * 2) Loopback host routes (another AF_LINK/sockadd_dl check) + * */ + if (rt->rt_gateway->sa_len == gate->sa_len && + !memcmp(rt->rt_gateway, gate, gate->sa_len)) + break; } while ((rn = rn_mpath_next(rn)) != NULL); return (struct rtentry *)rn; Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Mon Jan 6 19:14:46 2014 (r260378) +++ head/sys/net/route.c Mon Jan 6 22:36:20 2014 (r260379) @@ -1547,10 +1547,10 @@ rtinit1(struct ifaddr *ifa, int cmd, int /* this table doesn't exist but others might */ continue; RADIX_NODE_HEAD_RLOCK(rnh); + rn = rnh->rnh_lookup(dst, netmask, rnh); #ifdef RADIX_MPATH if (rn_mpath_capable(rnh)) { - rn = rnh->rnh_matchaddr(dst, rnh); if (rn == NULL) error = ESRCH; else { @@ -1564,13 +1564,11 @@ rtinit1(struct ifaddr *ifa, int cmd, int */ rt = rt_mpath_matchgate(rt, ifa->ifa_addr); - if (!rt) + if (rt == NULL) error = ESRCH; } } - else #endif - rn = rnh->rnh_lookup(dst, netmask, rnh); error = (rn == NULL || (rn->rn_flags & RNF_ROOT) || RNTORT(rn)->rt_ifa != ifa); From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 23:16:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 4B873FB4; Mon, 6 Jan 2014 23:16:40 +0000 (UTC) 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 3679B14F5; Mon, 6 Jan 2014 23:16: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 s06NGelj092948; Mon, 6 Jan 2014 23:16:40 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06NGdOw092945; Mon, 6 Jan 2014 23:16:39 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401062316.s06NGdOw092945@svn.freebsd.org> From: Neel Natu Date: Mon, 6 Jan 2014 23:16:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260380 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 23:16:40 -0000 Author: neel Date: Mon Jan 6 23:16:39 2014 New Revision: 260380 URL: http://svnweb.freebsd.org/changeset/base/260380 Log: Split the VMCS setup between 'vmcs_init()' that does initialization and 'vmx_vminit()' that does customization. This makes it easier to turn on optional features (e.g. APICv) without having to keep adding new parameters to 'vmcs_set_defaults()'. Reviewed by: grehan@ Modified: head/sys/amd64/vmm/intel/vmcs.c head/sys/amd64/vmm/intel/vmcs.h head/sys/amd64/vmm/intel/vmx.c Modified: head/sys/amd64/vmm/intel/vmcs.c ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.c Mon Jan 6 22:36:20 2014 (r260379) +++ head/sys/amd64/vmm/intel/vmcs.c Mon Jan 6 23:16:39 2014 (r260380) @@ -315,11 +315,7 @@ done: } int -vmcs_set_defaults(struct vmcs *vmcs, - u_long host_rip, u_long host_rsp, uint64_t eptp, - uint32_t pinbased_ctls, uint32_t procbased_ctls, - uint32_t procbased_ctls2, uint32_t exit_ctls, - uint32_t entry_ctls, u_long msr_bitmap, uint16_t vpid) +vmcs_init(struct vmcs *vmcs) { int error, codesel, datasel, tsssel; u_long cr0, cr4, efer; @@ -335,22 +331,6 @@ vmcs_set_defaults(struct vmcs *vmcs, */ VMPTRLD(vmcs); - /* - * Load the VMX controls - */ - if ((error = vmwrite(VMCS_PIN_BASED_CTLS, pinbased_ctls)) != 0) - goto done; - if ((error = vmwrite(VMCS_PRI_PROC_BASED_CTLS, procbased_ctls)) != 0) - goto done; - if ((error = vmwrite(VMCS_SEC_PROC_BASED_CTLS, procbased_ctls2)) != 0) - goto done; - if ((error = vmwrite(VMCS_EXIT_CTLS, exit_ctls)) != 0) - goto done; - if ((error = vmwrite(VMCS_ENTRY_CTLS, entry_ctls)) != 0) - goto done; - - /* Guest state */ - /* Initialize guest IA32_PAT MSR with the default value */ pat = PAT_VALUE(0, PAT_WRITE_BACK) | PAT_VALUE(1, PAT_WRITE_THROUGH) | @@ -422,23 +402,7 @@ vmcs_set_defaults(struct vmcs *vmcs, goto done; /* instruction pointer */ - if ((error = vmwrite(VMCS_HOST_RIP, host_rip)) != 0) - goto done; - - /* stack pointer */ - if ((error = vmwrite(VMCS_HOST_RSP, host_rsp)) != 0) - goto done; - - /* eptp */ - if ((error = vmwrite(VMCS_EPTP, eptp)) != 0) - goto done; - - /* vpid */ - if ((error = vmwrite(VMCS_VPID, vpid)) != 0) - goto done; - - /* msr bitmap */ - if ((error = vmwrite(VMCS_MSR_BITMAP, msr_bitmap)) != 0) + if ((error = vmwrite(VMCS_HOST_RIP, (u_long)vmx_exit_guest)) != 0) goto done; /* exception bitmap */ Modified: head/sys/amd64/vmm/intel/vmcs.h ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.h Mon Jan 6 22:36:20 2014 (r260379) +++ head/sys/amd64/vmm/intel/vmcs.h Mon Jan 6 23:16:39 2014 (r260380) @@ -46,12 +46,7 @@ struct msr_entry { }; int vmcs_set_msr_save(struct vmcs *vmcs, u_long g_area, u_int g_count); -int vmcs_set_defaults(struct vmcs *vmcs, u_long host_rip, u_long host_rsp, - uint64_t eptp, - uint32_t pinbased_ctls, uint32_t procbased_ctls, - uint32_t procbased_ctls2, uint32_t exit_ctls, - uint32_t entry_ctls, u_long msr_bitmap, - uint16_t vpid); +int vmcs_init(struct vmcs *vmcs); int vmcs_getreg(struct vmcs *vmcs, int running, int ident, uint64_t *rv); int vmcs_setreg(struct vmcs *vmcs, int running, int ident, uint64_t val); int vmcs_getdesc(struct vmcs *vmcs, int ident, Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Mon Jan 6 22:36:20 2014 (r260379) +++ head/sys/amd64/vmm/intel/vmx.c Mon Jan 6 23:16:39 2014 (r260380) @@ -678,6 +678,7 @@ vmx_vminit(struct vm *vm, pmap_t pmap) uint16_t vpid[VM_MAXCPU]; int i, error, guest_msr_count; struct vmx *vmx; + struct vmcs *vmcs; vmx = malloc(sizeof(struct vmx), M_VMX, M_WAITOK | M_ZERO); if ((uintptr_t)vmx & PAGE_MASK) { @@ -743,26 +744,30 @@ vmx_vminit(struct vm *vm, pmap_t pmap) vpid_alloc(vpid, VM_MAXCPU); for (i = 0; i < VM_MAXCPU; i++) { - vmx->vmcs[i].identifier = vmx_revision(); - error = vmclear(&vmx->vmcs[i]); + vmcs = &vmx->vmcs[i]; + vmcs->identifier = vmx_revision(); + error = vmclear(vmcs); if (error != 0) { panic("vmx_vminit: vmclear error %d on vcpu %d\n", error, i); } - error = vmcs_set_defaults(&vmx->vmcs[i], - (u_long)vmx_exit_guest, - (u_long)&vmx->ctx[i], - vmx->eptp, - pinbased_ctls, - procbased_ctls, - procbased_ctls2, - exit_ctls, entry_ctls, - vtophys(vmx->msr_bitmap), - vpid[i]); + error = vmcs_init(vmcs); + KASSERT(error == 0, ("vmcs_init error %d", error)); - if (error != 0) - panic("vmx_vminit: vmcs_set_defaults error %d", error); + VMPTRLD(vmcs); + error = 0; + error += vmwrite(VMCS_HOST_RSP, (u_long)&vmx->ctx[i]); + error += vmwrite(VMCS_EPTP, vmx->eptp); + error += vmwrite(VMCS_PIN_BASED_CTLS, pinbased_ctls); + error += vmwrite(VMCS_PRI_PROC_BASED_CTLS, procbased_ctls); + error += vmwrite(VMCS_SEC_PROC_BASED_CTLS, procbased_ctls2); + error += vmwrite(VMCS_EXIT_CTLS, exit_ctls); + error += vmwrite(VMCS_ENTRY_CTLS, entry_ctls); + error += vmwrite(VMCS_MSR_BITMAP, vtophys(vmx->msr_bitmap)); + error += vmwrite(VMCS_VPID, vpid[i]); + VMCLEAR(vmcs); + KASSERT(error == 0, ("vmx_vminit: error customizing the vmcs")); vmx->cap[i].set = 0; vmx->cap[i].proc_ctls = procbased_ctls; @@ -773,9 +778,8 @@ vmx_vminit(struct vm *vm, pmap_t pmap) msr_save_area_init(vmx->guest_msrs[i], &guest_msr_count); - error = vmcs_set_msr_save(&vmx->vmcs[i], - vtophys(vmx->guest_msrs[i]), - guest_msr_count); + error = vmcs_set_msr_save(vmcs, vtophys(vmx->guest_msrs[i]), + guest_msr_count); if (error != 0) panic("vmcs_set_msr_save error %d", error); @@ -785,11 +789,11 @@ vmx_vminit(struct vm *vm, pmap_t pmap) * CR0 - 0x60000010 * CR4 - 0 */ - error = vmx_setup_cr0_shadow(&vmx->vmcs[i], 0x60000010); + error = vmx_setup_cr0_shadow(vmcs, 0x60000010); if (error != 0) panic("vmx_setup_cr0_shadow %d", error); - error = vmx_setup_cr4_shadow(&vmx->vmcs[i], 0); + error = vmx_setup_cr4_shadow(vmcs, 0); if (error != 0) panic("vmx_setup_cr4_shadow %d", error); @@ -1455,7 +1459,7 @@ vmx_run(void *arg, int vcpu, register_t * from a different process than the one that actually runs it. * * If the life of a virtual machine was spent entirely in the context - * of a single process we could do this once in vmcs_set_defaults(). + * of a single process we could do this once in vmx_vminit(). */ vmcs_write(VMCS_HOST_CR3, rcr3()); From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 23:48:48 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 5EA16F79; Mon, 6 Jan 2014 23:48:48 +0000 (UTC) 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 4AB2817FE; Mon, 6 Jan 2014 23:48: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 s06NmmU7005587; Mon, 6 Jan 2014 23:48:48 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06NmmWW005586; Mon, 6 Jan 2014 23:48:48 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201401062348.s06NmmWW005586@svn.freebsd.org> From: Jim Harris Date: Mon, 6 Jan 2014 23:48:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260381 - head/sbin/nvmecontrol X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 23:48:48 -0000 Author: jimharris Date: Mon Jan 6 23:48:47 2014 New Revision: 260381 URL: http://svnweb.freebsd.org/changeset/base/260381 Log: For "nvmecontrol devlist", show namespace sizes in terms of MB instead of GB to improve granularity of the reporting - especially for namespaces that are on the order of 1 or 2 GB. Submitted by: Tony Beltran MFC after: 3 days Modified: head/sbin/nvmecontrol/devlist.c Modified: head/sbin/nvmecontrol/devlist.c ============================================================================== --- head/sbin/nvmecontrol/devlist.c Mon Jan 6 23:16:39 2014 (r260380) +++ head/sbin/nvmecontrol/devlist.c Mon Jan 6 23:48:47 2014 (r260381) @@ -99,11 +99,11 @@ devlist(int argc, char *argv[]) sprintf(name, "%s%d%s%d", NVME_CTRLR_PREFIX, ctrlr, NVME_NS_PREFIX, i+1); read_namespace_data(fd, i+1, &nsdata); - printf(" %10s (%lldGB)\n", + printf(" %10s (%lldMB)\n", name, nsdata.nsze * (long long)ns_get_sector_size(&nsdata) / - 1024 / 1024 / 1024); + 1024 / 1024); } close(fd); From owner-svn-src-all@FreeBSD.ORG Mon Jan 6 23:51:26 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id EC04F187; Mon, 6 Jan 2014 23:51:26 +0000 (UTC) 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 BE037187E; Mon, 6 Jan 2014 23:51: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 s06NpQTJ008472; Mon, 6 Jan 2014 23:51:26 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s06NpQoL008471; Mon, 6 Jan 2014 23:51:26 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201401062351.s06NpQoL008471@svn.freebsd.org> From: Jim Harris Date: Mon, 6 Jan 2014 23:51:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260382 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Jan 2014 23:51:27 -0000 Author: jimharris Date: Mon Jan 6 23:51:26 2014 New Revision: 260382 URL: http://svnweb.freebsd.org/changeset/base/260382 Log: For IDENTIFY passthrough commands to Chatham prototype controllers, copy the spoofed identify data into the user buffer rather than issuing the command to the controller, since Chatham IDENTIFY data is always spoofed. While here, fix a bug in the spoofed data for Chatham submission and completion queue entry sizes. Sponsored by: Intel MFC after: 3 days Modified: head/sys/dev/nvme/nvme_ctrlr.c Modified: head/sys/dev/nvme/nvme_ctrlr.c ============================================================================== --- head/sys/dev/nvme/nvme_ctrlr.c Mon Jan 6 23:48:47 2014 (r260381) +++ head/sys/dev/nvme/nvme_ctrlr.c Mon Jan 6 23:51:26 2014 (r260382) @@ -181,8 +181,8 @@ nvme_chatham_populate_cdata(struct nvme_ cdata->lpa.ns_smart = 1; cdata->sqes.min = 6; cdata->sqes.max = 6; - cdata->sqes.min = 4; - cdata->sqes.max = 4; + cdata->cqes.min = 4; + cdata->cqes.max = 4; cdata->nn = 1; /* Chatham2 doesn't support DSM command */ @@ -1041,6 +1041,27 @@ nvme_ctrlr_ioctl(struct cdev *cdev, u_lo break; case NVME_PASSTHROUGH_CMD: pt = (struct nvme_pt_command *)arg; +#ifdef CHATHAM2 + /* + * Chatham IDENTIFY data is spoofed, so copy the spoofed data + * rather than issuing the command to the Chatham controller. + */ + if (pci_get_devid(ctrlr->dev) == CHATHAM_PCI_ID && + pt->cmd.opc == NVME_OPC_IDENTIFY) { + if (pt->cmd.cdw10 == 1) { + if (pt->len != sizeof(ctrlr->cdata)) + return (EINVAL); + return (copyout(&ctrlr->cdata, pt->buf, + pt->len)); + } else { + if (pt->len != sizeof(ctrlr->ns[0].data) || + pt->cmd.nsid != 1) + return (EINVAL); + return (copyout(&ctrlr->ns[0].data, pt->buf, + pt->len)); + } + } +#endif return (nvme_ctrlr_passthrough_cmd(ctrlr, pt, pt->cmd.nsid, 1 /* is_user_buffer */, 1 /* is_admin_cmd */)); default: From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 00:38:24 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 48665387; Tue, 7 Jan 2014 00:38:24 +0000 (UTC) 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 276E21D1D; Tue, 7 Jan 2014 00:38: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 s070cOOd025764; Tue, 7 Jan 2014 00:38:24 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s070cNmC025758; Tue, 7 Jan 2014 00:38:23 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401070038.s070cNmC025758@svn.freebsd.org> From: Neel Natu Date: Tue, 7 Jan 2014 00:38:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260383 - in head/sys/amd64/vmm: . intel io X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 00:38:24 -0000 Author: neel Date: Tue Jan 7 00:38:22 2014 New Revision: 260383 URL: http://svnweb.freebsd.org/changeset/base/260383 Log: Allow vlapic_set_intr_ready() to return a value that indicates whether or not the vcpu should be kicked to process a pending interrupt. This will be useful in the implementation of the Posted Interrupt APICv feature. Change the return value of 'vlapic_pending_intr()' to indicate whether or not an interrupt is available to be delivered to the vcpu depending on the value of the PPR. Add KTR tracepoints to debug guest IPI delivery. Modified: head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/io/vlapic.c head/sys/amd64/vmm/io/vlapic.h head/sys/amd64/vmm/vmm.c head/sys/amd64/vmm/vmm_lapic.c Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Mon Jan 6 23:51:26 2014 (r260382) +++ head/sys/amd64/vmm/intel/vmx.c Tue Jan 7 00:38:22 2014 (r260383) @@ -989,8 +989,7 @@ vmx_inject_interrupts(struct vmx *vmx, i return; /* Ask the local apic for a vector to inject */ - vector = vlapic_pending_intr(vlapic); - if (vector < 0) + if (!vlapic_pending_intr(vlapic, &vector)) return; if (vector < 32 || vector > 255) Modified: head/sys/amd64/vmm/io/vlapic.c ============================================================================== --- head/sys/amd64/vmm/io/vlapic.c Mon Jan 6 23:51:26 2014 (r260382) +++ head/sys/amd64/vmm/io/vlapic.c Tue Jan 7 00:38:22 2014 (r260383) @@ -289,27 +289,29 @@ vlapic_esr_write_handler(struct vlapic * vlapic->esr_pending = 0; } -void +int vlapic_set_intr_ready(struct vlapic *vlapic, int vector, bool level) { - struct LAPIC *lapic = vlapic->apic_page; - uint32_t *irrptr, *tmrptr, mask; - int idx; + struct LAPIC *lapic; + uint32_t *irrptr, *tmrptr, mask; + int idx; - if (vector < 0 || vector >= 256) - panic("vlapic_set_intr_ready: invalid vector %d\n", vector); + KASSERT(vector >= 0 && vector < 256, ("invalid vector %d", vector)); + lapic = vlapic->apic_page; if (!(lapic->svr & APIC_SVR_ENABLE)) { VLAPIC_CTR1(vlapic, "vlapic is software disabled, ignoring " "interrupt %d", vector); - return; + return (0); } if (vector < 16) { vlapic_set_error(vlapic, APIC_ESR_RECEIVE_ILLEGAL_VECTOR); - return; + VLAPIC_CTR1(vlapic, "vlapic ignoring interrupt to vector %d", + vector); + return (1); } - + idx = (vector / 32) * 4; mask = 1 << (vector % 32); @@ -328,6 +330,7 @@ vlapic_set_intr_ready(struct vlapic *vla atomic_clear_int(&tmrptr[idx], mask); VLAPIC_CTR_IRR(vlapic, "vlapic_set_intr_ready"); + return (1); } static __inline uint32_t * @@ -473,8 +476,8 @@ vlapic_fire_lvt(struct vlapic *vlapic, u vlapic_set_error(vlapic, APIC_ESR_SEND_ILLEGAL_VECTOR); return (0); } - vlapic_set_intr_ready(vlapic, vec, false); - vcpu_notify_event(vlapic->vm, vlapic->vcpuid, true); + if (vlapic_set_intr_ready(vlapic, vec, false)) + vcpu_notify_event(vlapic->vm, vlapic->vcpuid, true); break; case APIC_LVT_DM_NMI: vm_inject_nmi(vlapic->vm, vlapic->vcpuid); @@ -935,9 +938,12 @@ vlapic_icrlo_write_handler(struct vlapic if (mode == APIC_DELMODE_FIXED && vec < 16) { vlapic_set_error(vlapic, APIC_ESR_SEND_ILLEGAL_VECTOR); + VLAPIC_CTR1(vlapic, "Ignoring invalid IPI %d", vec); return (0); } - + + VLAPIC_CTR2(vlapic, "icrlo 0x%016lx triggered ipi %d", icrval, vec); + if (mode == APIC_DELMODE_FIXED || mode == APIC_DELMODE_NMI) { switch (icrval & APIC_DEST_MASK) { case APIC_DEST_DESTFLD: @@ -967,8 +973,13 @@ vlapic_icrlo_write_handler(struct vlapic lapic_intr_edge(vlapic->vm, i, vec); vmm_stat_array_incr(vlapic->vm, vlapic->vcpuid, IPIS_SENT, i, 1); - } else + VLAPIC_CTR2(vlapic, "vlapic sending ipi %d " + "to vcpuid %d", vec, i); + } else { vm_inject_nmi(vlapic->vm, i); + VLAPIC_CTR1(vlapic, "vlapic sending ipi nmi " + "to vcpuid %d", i); + } } return (0); /* handled completely in the kernel */ @@ -1023,7 +1034,7 @@ vlapic_icrlo_write_handler(struct vlapic } int -vlapic_pending_intr(struct vlapic *vlapic) +vlapic_pending_intr(struct vlapic *vlapic, int *vecptr) { struct LAPIC *lapic = vlapic->apic_page; int idx, i, bitpos, vector; @@ -1043,12 +1054,14 @@ vlapic_pending_intr(struct vlapic *vlapi vector = i * 32 + (bitpos - 1); if (PRIO(vector) > PRIO(lapic->ppr)) { VLAPIC_CTR1(vlapic, "pending intr %d", vector); - return (vector); + if (vecptr != NULL) + *vecptr = vector; + return (1); } else break; } } - return (-1); + return (0); } void Modified: head/sys/amd64/vmm/io/vlapic.h ============================================================================== --- head/sys/amd64/vmm/io/vlapic.h Mon Jan 6 23:51:26 2014 (r260382) +++ head/sys/amd64/vmm/io/vlapic.h Tue Jan 7 00:38:22 2014 (r260383) @@ -38,16 +38,16 @@ int vlapic_read(struct vlapic *vlapic, u bool *retu); /* - * Returns a vector between 32 and 255 if an interrupt is pending in the - * IRR that can be delivered based on the current state of ISR and TPR. + * Returns 0 if there is no eligible vector that can be delivered to the + * guest at this time and non-zero otherwise. + * + * If an eligible vector number is found and 'vecptr' is not NULL then it will + * be stored in the location pointed to by 'vecptr'. * * Note that the vector does not automatically transition to the ISR as a * result of calling this function. - * - * Returns -1 if there is no eligible vector that can be delivered to the - * guest at this time. */ -int vlapic_pending_intr(struct vlapic *vlapic); +int vlapic_pending_intr(struct vlapic *vlapic, int *vecptr); /* * Transition 'vector' from IRR to ISR. This function is called with the @@ -57,7 +57,18 @@ int vlapic_pending_intr(struct vlapic *v */ void vlapic_intr_accepted(struct vlapic *vlapic, int vector); -void vlapic_set_intr_ready(struct vlapic *vlapic, int vector, bool level); +/* + * Returns 1 if the vcpu needs to be notified of the interrupt and 0 otherwise. + */ +int vlapic_set_intr_ready(struct vlapic *vlapic, int vector, bool level); + +/* + * Post an interrupt to the vcpu running on 'hostcpu'. This will use a + * hardware assist if available (e.g. Posted Interrupt) or fall back to + * sending an IPI to interrupt the 'hostcpu'. + */ +void vlapic_post_intr(struct vlapic *vlapic, int hostcpu); + void vlapic_set_error(struct vlapic *vlapic, uint32_t mask); void vlapic_fire_cmci(struct vlapic *vlapic); int vlapic_trigger_lvt(struct vlapic *vlapic, int vector); @@ -69,7 +80,6 @@ bool vlapic_enabled(struct vlapic *vlapi void vlapic_deliver_intr(struct vm *vm, bool level, uint32_t dest, bool phys, int delmode, int vec); -void vlapic_post_intr(struct vlapic *vlapic, int hostcpu); /* APIC write handlers */ void vlapic_id_write_handler(struct vlapic *vlapic); Modified: head/sys/amd64/vmm/vmm.c ============================================================================== --- head/sys/amd64/vmm/vmm.c Mon Jan 6 23:51:26 2014 (r260382) +++ head/sys/amd64/vmm/vmm.c Tue Jan 7 00:38:22 2014 (r260383) @@ -910,7 +910,7 @@ vm_handle_hlt(struct vm *vm, int vcpuid, * returned from VMRUN() and before we grabbed the vcpu lock. */ if (!vm_nmi_pending(vm, vcpuid) && - (intr_disabled || vlapic_pending_intr(vcpu->vlapic) < 0)) { + (intr_disabled || !vlapic_pending_intr(vcpu->vlapic, NULL))) { t = ticks; vcpu_require_state_locked(vcpu, VCPU_SLEEPING); if (vlapic_enabled(vcpu->vlapic)) { Modified: head/sys/amd64/vmm/vmm_lapic.c ============================================================================== --- head/sys/amd64/vmm/vmm_lapic.c Mon Jan 6 23:51:26 2014 (r260382) +++ head/sys/amd64/vmm/vmm_lapic.c Tue Jan 7 00:38:22 2014 (r260383) @@ -62,8 +62,8 @@ lapic_set_intr(struct vm *vm, int cpu, i return (EINVAL); vlapic = vm_lapic(vm, cpu); - vlapic_set_intr_ready(vlapic, vector, level); - vcpu_notify_event(vm, cpu, true); + if (vlapic_set_intr_ready(vlapic, vector, level)) + vcpu_notify_event(vm, cpu, true); return (0); } From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 01:17:28 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7AA2BCAD; Tue, 7 Jan 2014 01:17:28 +0000 (UTC) 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 66DDA1FFC; Tue, 7 Jan 2014 01:17: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 s071HSnZ041116; Tue, 7 Jan 2014 01:17:28 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s071HSRW041114; Tue, 7 Jan 2014 01:17:28 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401070117.s071HSRW041114@svn.freebsd.org> From: Adrian Chadd Date: Tue, 7 Jan 2014 01:17:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260384 - in head/sys: conf kern X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 01:17:28 -0000 Author: adrian Date: Tue Jan 7 01:17:27 2014 New Revision: 260384 URL: http://svnweb.freebsd.org/changeset/base/260384 Log: Add a compile-time control over the size of KN_HASHSIZE. This is needed for applications that use a lot of non-filedescriptor knotes. MFC after: 1 week Sponsored by: Netflix, Inc. Modified: head/sys/conf/options head/sys/kern/kern_event.c Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Tue Jan 7 00:38:22 2014 (r260383) +++ head/sys/conf/options Tue Jan 7 01:17:27 2014 (r260384) @@ -128,6 +128,7 @@ GEOM_VOL opt_geom.h GEOM_ZERO opt_geom.h KDTRACE_HOOKS opt_global.h KDTRACE_FRAME opt_kdtrace.h +KN_HASHSIZE opt_kqueue.h KSTACK_MAX_PAGES KSTACK_PAGES KTRACE Modified: head/sys/kern/kern_event.c ============================================================================== --- head/sys/kern/kern_event.c Tue Jan 7 00:38:22 2014 (r260383) +++ head/sys/kern/kern_event.c Tue Jan 7 01:17:27 2014 (r260384) @@ -30,6 +30,7 @@ __FBSDID("$FreeBSD$"); #include "opt_ktrace.h" +#include "opt_kqueue.h" #include #include @@ -250,7 +251,10 @@ SYSCTL_UINT(_kern, OID_AUTO, kq_calloutm #define KNL_ASSERT_UNLOCKED(knl) do {} while (0) #endif /* INVARIANTS */ +#ifndef KN_HASHSIZE #define KN_HASHSIZE 64 /* XXX should be tunable */ +#endif + #define KN_HASH(val, mask) (((val) ^ (val >> 8)) & (mask)) static int From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 01:32:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 145E7200; Tue, 7 Jan 2014 01:32:27 +0000 (UTC) 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 EFF98115B; Tue, 7 Jan 2014 01:32: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 s071WQPB048315; Tue, 7 Jan 2014 01:32:26 GMT (envelope-from scottl@svn.freebsd.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s071WO8N048296; Tue, 7 Jan 2014 01:32:24 GMT (envelope-from scottl@svn.freebsd.org) Message-Id: <201401070132.s071WO8N048296@svn.freebsd.org> From: Scott Long Date: Tue, 7 Jan 2014 01:32:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260385 - in stable/10/sys: cam/ata cam/scsi cddl/contrib/opensolaris/uts/common/fs/zfs dev/md geom geom/concat geom/gate geom/mirror geom/multipath geom/nop geom/part geom/raid geom/st... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 01:32:27 -0000 Author: scottl Date: Tue Jan 7 01:32:23 2014 New Revision: 260385 URL: http://svnweb.freebsd.org/changeset/base/260385 Log: MFC Alexander Motin's GEOM direct dispatch work: r256603: Introduce new function devstat_end_transaction_bio_bt(), adding new argument to specify present time. Use this function to move binuptime() out of lock, substantially reducing lock congestion when slow timecounter is used. r256606: Move g_io_deliver() out of the lock, as required for direct dispatch. Move g_destroy_bio() out too to reduce lock scope even more. r256607: Fix passing uninitialized bio_resid argument to g_trace(). r256610: Add unmapped I/O support to GEOM RAID. r256830: Restore BIO_UNMAPPED and BIO_TRANSIENT_MAPPING in biodonne() when unmapping temporary mapped buffer. That fixes double unmap if biodone() called twice for the same BIO (but with different done methods). r256880: Merge GEOM direct dispatch changes from the projects/camlock branch. When safety requirements are met, it allows to avoid passing I/O requests to GEOM g_up/g_down thread, executing them directly in the caller context. That allows to avoid CPU bottlenecks in g_up/g_down threads, plus avoid several context switches per I/O. r259247: Fix bug introduced at r256607. We have to recalculate bp_resid here since sizes of original and completed requests may differ due to end of media. Testing of the stable/10 merge was done by Netflix, but all of the credit goes to Alexander and iX Systems. Submitted by: mav Sponsored by: iX Systems Modified: stable/10/sys/cam/ata/ata_da.c stable/10/sys/cam/scsi/scsi_da.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c stable/10/sys/dev/md/md.c stable/10/sys/geom/concat/g_concat.c stable/10/sys/geom/concat/g_concat.h stable/10/sys/geom/gate/g_gate.c stable/10/sys/geom/geom.h stable/10/sys/geom/geom_dev.c stable/10/sys/geom/geom_disk.c stable/10/sys/geom/geom_disk.h stable/10/sys/geom/geom_int.h stable/10/sys/geom/geom_io.c stable/10/sys/geom/geom_kern.c stable/10/sys/geom/geom_slice.c stable/10/sys/geom/geom_vfs.c stable/10/sys/geom/mirror/g_mirror.c stable/10/sys/geom/mirror/g_mirror.h stable/10/sys/geom/multipath/g_multipath.c stable/10/sys/geom/nop/g_nop.c stable/10/sys/geom/nop/g_nop.h stable/10/sys/geom/part/g_part.c stable/10/sys/geom/raid/g_raid.c stable/10/sys/geom/raid/g_raid.h stable/10/sys/geom/raid/md_ddf.c stable/10/sys/geom/raid/md_intel.c stable/10/sys/geom/raid/md_jmicron.c stable/10/sys/geom/raid/md_nvidia.c stable/10/sys/geom/raid/md_promise.c stable/10/sys/geom/raid/md_sii.c stable/10/sys/geom/raid/tr_concat.c stable/10/sys/geom/raid/tr_raid0.c stable/10/sys/geom/raid/tr_raid1.c stable/10/sys/geom/raid/tr_raid1e.c stable/10/sys/geom/raid/tr_raid5.c stable/10/sys/geom/stripe/g_stripe.c stable/10/sys/geom/stripe/g_stripe.h stable/10/sys/geom/zero/g_zero.c stable/10/sys/kern/subr_devstat.c stable/10/sys/kern/vfs_bio.c stable/10/sys/sys/devicestat.h stable/10/sys/sys/proc.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ata/ata_da.c ============================================================================== --- stable/10/sys/cam/ata/ata_da.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/cam/ata/ata_da.c Tue Jan 7 01:32:23 2014 (r260385) @@ -1254,7 +1254,7 @@ adaregister(struct cam_periph *periph, v maxio = min(maxio, 256 * softc->params.secsize); softc->disk->d_maxsize = maxio; softc->disk->d_unit = periph->unit_number; - softc->disk->d_flags = 0; + softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION; if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; if (softc->flags & ADA_FLAG_CAN_TRIM) { Modified: stable/10/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_da.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/cam/scsi/scsi_da.c Tue Jan 7 01:32:23 2014 (r260385) @@ -2133,7 +2133,7 @@ daregister(struct cam_periph *periph, vo else softc->disk->d_maxsize = cpi.maxio; softc->disk->d_unit = periph->unit_number; - softc->disk->d_flags = 0; + softc->disk->d_flags = DISKFLAG_DIRECT_COMPLETION; if ((softc->quirks & DA_Q_NO_SYNC_CACHE) == 0) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; if ((cpi.hba_misc & PIM_UNMAPPED) != 0) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Tue Jan 7 01:32:23 2014 (r260385) @@ -147,6 +147,7 @@ vdev_geom_attach(struct g_provider *pp) ZFS_LOG(1, "Used existing consumer for %s.", pp->name); } } + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; return (cp); } Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Tue Jan 7 01:32:23 2014 (r260385) @@ -2153,6 +2153,7 @@ zvol_geom_create(const char *name) gp->start = zvol_geom_start; gp->access = zvol_geom_access; pp = g_new_providerf(gp, "%s/%s", ZVOL_DRIVER, name); + pp->flags |= G_PF_DIRECT_RECEIVE | G_PF_DIRECT_SEND; pp->sectorsize = DEV_BSIZE; zv = kmem_zalloc(sizeof(*zv), KM_SLEEP); @@ -2256,18 +2257,20 @@ zvol_geom_start(struct bio *bp) zvol_state_t *zv; boolean_t first; + zv = bp->bio_to->private; + ASSERT(zv != NULL); switch (bp->bio_cmd) { + case BIO_FLUSH: + if (!THREAD_CAN_SLEEP()) + goto enqueue; + zil_commit(zv->zv_zilog, ZVOL_OBJ); + g_io_deliver(bp, 0); + break; case BIO_READ: case BIO_WRITE: - case BIO_FLUSH: - zv = bp->bio_to->private; - ASSERT(zv != NULL); - mtx_lock(&zv->zv_queue_mtx); - first = (bioq_first(&zv->zv_queue) == NULL); - bioq_insert_tail(&zv->zv_queue, bp); - mtx_unlock(&zv->zv_queue_mtx); - if (first) - wakeup_one(&zv->zv_queue); + if (!THREAD_CAN_SLEEP()) + goto enqueue; + zvol_strategy(bp); break; case BIO_GETATTR: case BIO_DELETE: @@ -2275,6 +2278,15 @@ zvol_geom_start(struct bio *bp) g_io_deliver(bp, EOPNOTSUPP); break; } + return; + +enqueue: + mtx_lock(&zv->zv_queue_mtx); + first = (bioq_first(&zv->zv_queue) == NULL); + bioq_insert_tail(&zv->zv_queue, bp); + mtx_unlock(&zv->zv_queue_mtx); + if (first) + wakeup_one(&zv->zv_queue); } static void @@ -2449,6 +2461,7 @@ zvol_rename_minor(struct g_geom *gp, con g_wither_provider(pp, ENXIO); pp = g_new_providerf(gp, "%s/%s", ZVOL_DRIVER, newname); + pp->flags |= G_PF_DIRECT_RECEIVE | G_PF_DIRECT_SEND; pp->sectorsize = DEV_BSIZE; pp->mediasize = zv->zv_volsize; pp->private = zv; Modified: stable/10/sys/dev/md/md.c ============================================================================== --- stable/10/sys/dev/md/md.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/dev/md/md.c Tue Jan 7 01:32:23 2014 (r260385) @@ -189,6 +189,7 @@ struct md_s { LIST_ENTRY(md_s) list; struct bio_queue_head bio_queue; struct mtx queue_mtx; + struct mtx stat_mtx; struct cdev *dev; enum md_types type; off_t mediasize; @@ -415,8 +416,11 @@ g_md_start(struct bio *bp) struct md_s *sc; sc = bp->bio_to->geom->softc; - if ((bp->bio_cmd == BIO_READ) || (bp->bio_cmd == BIO_WRITE)) + if ((bp->bio_cmd == BIO_READ) || (bp->bio_cmd == BIO_WRITE)) { + mtx_lock(&sc->stat_mtx); devstat_start_transaction_bio(sc->devstat, bp); + mtx_unlock(&sc->stat_mtx); + } mtx_lock(&sc->queue_mtx); bioq_disksort(&sc->bio_queue, bp); mtx_unlock(&sc->queue_mtx); @@ -987,6 +991,7 @@ mdnew(int unit, int *errp, enum md_types sc->type = type; bioq_init(&sc->bio_queue); mtx_init(&sc->queue_mtx, "md bio queue", NULL, MTX_DEF); + mtx_init(&sc->stat_mtx, "md stat", NULL, MTX_DEF); sc->unit = unit; sprintf(sc->name, "md%d", unit); LIST_INSERT_HEAD(&md_softc_list, sc, list); @@ -994,6 +999,7 @@ mdnew(int unit, int *errp, enum md_types if (error == 0) return (sc); LIST_REMOVE(sc, list); + mtx_destroy(&sc->stat_mtx); mtx_destroy(&sc->queue_mtx); free_unr(md_uh, sc->unit); free(sc, M_MD); @@ -1011,6 +1017,7 @@ mdinit(struct md_s *sc) gp = g_new_geomf(&g_md_class, "md%d", sc->unit); gp->softc = sc; pp = g_new_providerf(gp, "md%d", sc->unit); + pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE; pp->mediasize = sc->mediasize; pp->sectorsize = sc->sectorsize; switch (sc->type) { @@ -1206,6 +1213,7 @@ mddestroy(struct md_s *sc, struct thread while (!(sc->flags & MD_EXITING)) msleep(sc->procp, &sc->queue_mtx, PRIBIO, "mddestroy", hz / 10); mtx_unlock(&sc->queue_mtx); + mtx_destroy(&sc->stat_mtx); mtx_destroy(&sc->queue_mtx); if (sc->vnode != NULL) { vn_lock(sc->vnode, LK_EXCLUSIVE | LK_RETRY); Modified: stable/10/sys/geom/concat/g_concat.c ============================================================================== --- stable/10/sys/geom/concat/g_concat.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/concat/g_concat.c Tue Jan 7 01:32:23 2014 (r260385) @@ -239,6 +239,27 @@ g_concat_kernel_dump(struct bio *bp) } static void +g_concat_done(struct bio *bp) +{ + struct g_concat_softc *sc; + struct bio *pbp; + + pbp = bp->bio_parent; + sc = pbp->bio_to->geom->softc; + mtx_lock(&sc->sc_lock); + if (pbp->bio_error == 0) + pbp->bio_error = bp->bio_error; + pbp->bio_completed += bp->bio_completed; + pbp->bio_inbed++; + if (pbp->bio_children == pbp->bio_inbed) { + mtx_unlock(&sc->sc_lock); + g_io_deliver(pbp, pbp->bio_error); + } else + mtx_unlock(&sc->sc_lock); + g_destroy_bio(bp); +} + +static void g_concat_flush(struct g_concat_softc *sc, struct bio *bp) { struct bio_queue_head queue; @@ -250,23 +271,19 @@ g_concat_flush(struct g_concat_softc *sc for (no = 0; no < sc->sc_ndisks; no++) { cbp = g_clone_bio(bp); if (cbp == NULL) { - for (cbp = bioq_first(&queue); cbp != NULL; - cbp = bioq_first(&queue)) { - bioq_remove(&queue, cbp); + while ((cbp = bioq_takefirst(&queue)) != NULL) g_destroy_bio(cbp); - } if (bp->bio_error == 0) bp->bio_error = ENOMEM; g_io_deliver(bp, bp->bio_error); return; } bioq_insert_tail(&queue, cbp); - cbp->bio_done = g_std_done; + cbp->bio_done = g_concat_done; cbp->bio_caller1 = sc->sc_disks[no].d_consumer; cbp->bio_to = sc->sc_disks[no].d_consumer->provider; } - for (cbp = bioq_first(&queue); cbp != NULL; cbp = bioq_first(&queue)) { - bioq_remove(&queue, cbp); + while ((cbp = bioq_takefirst(&queue)) != NULL) { G_CONCAT_LOGREQ(cbp, "Sending request."); cp = cbp->bio_caller1; cbp->bio_caller1 = NULL; @@ -320,7 +337,10 @@ g_concat_start(struct bio *bp) offset = bp->bio_offset; length = bp->bio_length; - addr = bp->bio_data; + if ((bp->bio_flags & BIO_UNMAPPED) != 0) + addr = NULL; + else + addr = bp->bio_data; end = offset + length; bioq_init(&queue); @@ -338,11 +358,8 @@ g_concat_start(struct bio *bp) cbp = g_clone_bio(bp); if (cbp == NULL) { - for (cbp = bioq_first(&queue); cbp != NULL; - cbp = bioq_first(&queue)) { - bioq_remove(&queue, cbp); + while ((cbp = bioq_takefirst(&queue)) != NULL) g_destroy_bio(cbp); - } if (bp->bio_error == 0) bp->bio_error = ENOMEM; g_io_deliver(bp, bp->bio_error); @@ -352,11 +369,21 @@ g_concat_start(struct bio *bp) /* * Fill in the component buf structure. */ - cbp->bio_done = g_std_done; + if (len == bp->bio_length) + cbp->bio_done = g_std_done; + else + cbp->bio_done = g_concat_done; cbp->bio_offset = off; - cbp->bio_data = addr; - addr += len; cbp->bio_length = len; + if ((bp->bio_flags & BIO_UNMAPPED) != 0) { + cbp->bio_ma_offset += (uintptr_t)addr; + cbp->bio_ma += cbp->bio_ma_offset / PAGE_SIZE; + cbp->bio_ma_offset %= PAGE_SIZE; + cbp->bio_ma_n = round_page(cbp->bio_ma_offset + + cbp->bio_length) / PAGE_SIZE; + } else + cbp->bio_data = addr; + addr += len; cbp->bio_to = disk->d_consumer->provider; cbp->bio_caller1 = disk; @@ -366,8 +393,7 @@ g_concat_start(struct bio *bp) KASSERT(length == 0, ("Length is still greater than 0 (class=%s, name=%s).", bp->bio_to->geom->class->name, bp->bio_to->geom->name)); - for (cbp = bioq_first(&queue); cbp != NULL; cbp = bioq_first(&queue)) { - bioq_remove(&queue, cbp); + while ((cbp = bioq_takefirst(&queue)) != NULL) { G_CONCAT_LOGREQ(cbp, "Sending request."); disk = cbp->bio_caller1; cbp->bio_caller1 = NULL; @@ -379,7 +405,7 @@ static void g_concat_check_and_run(struct g_concat_softc *sc) { struct g_concat_disk *disk; - struct g_provider *pp; + struct g_provider *dp, *pp; u_int no, sectorsize = 0; off_t start; @@ -388,20 +414,27 @@ g_concat_check_and_run(struct g_concat_s return; pp = g_new_providerf(sc->sc_geom, "concat/%s", sc->sc_name); + pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE | + G_PF_ACCEPT_UNMAPPED; start = 0; for (no = 0; no < sc->sc_ndisks; no++) { disk = &sc->sc_disks[no]; + dp = disk->d_consumer->provider; disk->d_start = start; - disk->d_end = disk->d_start + - disk->d_consumer->provider->mediasize; + disk->d_end = disk->d_start + dp->mediasize; if (sc->sc_type == G_CONCAT_TYPE_AUTOMATIC) - disk->d_end -= disk->d_consumer->provider->sectorsize; + disk->d_end -= dp->sectorsize; start = disk->d_end; if (no == 0) - sectorsize = disk->d_consumer->provider->sectorsize; - else { - sectorsize = lcm(sectorsize, - disk->d_consumer->provider->sectorsize); + sectorsize = dp->sectorsize; + else + sectorsize = lcm(sectorsize, dp->sectorsize); + + /* A provider underneath us doesn't support unmapped */ + if ((dp->flags & G_PF_ACCEPT_UNMAPPED) == 0) { + G_CONCAT_DEBUG(1, "Cancelling unmapped " + "because of %s.", dp->name); + pp->flags &= ~G_PF_ACCEPT_UNMAPPED; } } pp->sectorsize = sectorsize; @@ -468,6 +501,7 @@ g_concat_add_disk(struct g_concat_softc fcp = LIST_FIRST(&gp->consumer); cp = g_new_consumer(gp); + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; error = g_attach(cp, pp); if (error != 0) { g_destroy_consumer(cp); @@ -557,6 +591,7 @@ g_concat_create(struct g_class *mp, cons for (no = 0; no < sc->sc_ndisks; no++) sc->sc_disks[no].d_consumer = NULL; sc->sc_type = type; + mtx_init(&sc->sc_lock, "gconcat lock", NULL, MTX_DEF); gp->softc = sc; sc->sc_geom = gp; @@ -605,6 +640,7 @@ g_concat_destroy(struct g_concat_softc * KASSERT(sc->sc_provider == NULL, ("Provider still exists? (device=%s)", gp->name)); free(sc->sc_disks, M_CONCAT); + mtx_destroy(&sc->sc_lock); free(sc, M_CONCAT); G_CONCAT_DEBUG(0, "Device %s destroyed.", gp->name); Modified: stable/10/sys/geom/concat/g_concat.h ============================================================================== --- stable/10/sys/geom/concat/g_concat.h Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/concat/g_concat.h Tue Jan 7 01:32:23 2014 (r260385) @@ -83,6 +83,7 @@ struct g_concat_softc { struct g_concat_disk *sc_disks; uint16_t sc_ndisks; + struct mtx sc_lock; }; #define sc_name sc_geom->name #endif /* _KERNEL */ Modified: stable/10/sys/geom/gate/g_gate.c ============================================================================== --- stable/10/sys/geom/gate/g_gate.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/gate/g_gate.c Tue Jan 7 01:32:23 2014 (r260385) @@ -91,6 +91,7 @@ static struct mtx g_gate_units_lock; static int g_gate_destroy(struct g_gate_softc *sc, boolean_t force) { + struct bio_queue_head queue; struct g_provider *pp; struct g_consumer *cp; struct g_geom *gp; @@ -113,21 +114,22 @@ g_gate_destroy(struct g_gate_softc *sc, pp->flags |= G_PF_WITHER; g_orphan_provider(pp, ENXIO); callout_drain(&sc->sc_callout); + bioq_init(&queue); mtx_lock(&sc->sc_queue_mtx); - while ((bp = bioq_first(&sc->sc_inqueue)) != NULL) { - bioq_remove(&sc->sc_inqueue, bp); + while ((bp = bioq_takefirst(&sc->sc_inqueue)) != NULL) { sc->sc_queue_count--; - G_GATE_LOGREQ(1, bp, "Request canceled."); - g_io_deliver(bp, ENXIO); + bioq_insert_tail(&queue, bp); } - while ((bp = bioq_first(&sc->sc_outqueue)) != NULL) { - bioq_remove(&sc->sc_outqueue, bp); + while ((bp = bioq_takefirst(&sc->sc_outqueue)) != NULL) { sc->sc_queue_count--; - G_GATE_LOGREQ(1, bp, "Request canceled."); - g_io_deliver(bp, ENXIO); + bioq_insert_tail(&queue, bp); } mtx_unlock(&sc->sc_queue_mtx); g_topology_unlock(); + while ((bp = bioq_takefirst(&queue)) != NULL) { + G_GATE_LOGREQ(1, bp, "Request canceled."); + g_io_deliver(bp, ENXIO); + } mtx_lock(&g_gate_units_lock); /* One reference is ours. */ sc->sc_ref--; @@ -334,6 +336,7 @@ g_gate_getunit(int unit, int *errorp) static void g_gate_guard(void *arg) { + struct bio_queue_head queue; struct g_gate_softc *sc; struct bintime curtime; struct bio *bp, *bp2; @@ -341,24 +344,27 @@ g_gate_guard(void *arg) sc = arg; binuptime(&curtime); g_gate_hold(sc->sc_unit, NULL); + bioq_init(&queue); mtx_lock(&sc->sc_queue_mtx); TAILQ_FOREACH_SAFE(bp, &sc->sc_inqueue.queue, bio_queue, bp2) { if (curtime.sec - bp->bio_t0.sec < 5) continue; bioq_remove(&sc->sc_inqueue, bp); sc->sc_queue_count--; - G_GATE_LOGREQ(1, bp, "Request timeout."); - g_io_deliver(bp, EIO); + bioq_insert_tail(&queue, bp); } TAILQ_FOREACH_SAFE(bp, &sc->sc_outqueue.queue, bio_queue, bp2) { if (curtime.sec - bp->bio_t0.sec < 5) continue; bioq_remove(&sc->sc_outqueue, bp); sc->sc_queue_count--; + bioq_insert_tail(&queue, bp); + } + mtx_unlock(&sc->sc_queue_mtx); + while ((bp = bioq_takefirst(&queue)) != NULL) { G_GATE_LOGREQ(1, bp, "Request timeout."); g_io_deliver(bp, EIO); } - mtx_unlock(&sc->sc_queue_mtx); if ((sc->sc_flags & G_GATE_FLAG_DESTROY) == 0) { callout_reset(&sc->sc_callout, sc->sc_timeout * hz, g_gate_guard, sc); @@ -542,6 +548,7 @@ g_gate_create(struct g_gate_ctl_create * if (ropp != NULL) { cp = g_new_consumer(gp); + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; error = g_attach(cp, ropp); if (error != 0) { G_GATE_DEBUG(1, "Unable to attach to %s.", ropp->name); @@ -560,6 +567,7 @@ g_gate_create(struct g_gate_ctl_create * ggio->gctl_unit = sc->sc_unit; pp = g_new_providerf(gp, "%s", name); + pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE; pp->mediasize = ggio->gctl_mediasize; pp->sectorsize = ggio->gctl_sectorsize; sc->sc_provider = pp; @@ -636,6 +644,7 @@ g_gate_modify(struct g_gate_softc *sc, s return (EINVAL); } cp = g_new_consumer(sc->sc_provider->geom); + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; error = g_attach(cp, pp); if (error != 0) { G_GATE_DEBUG(1, "Unable to attach to %s.", Modified: stable/10/sys/geom/geom.h ============================================================================== --- stable/10/sys/geom/geom.h Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/geom.h Tue Jan 7 01:32:23 2014 (r260385) @@ -177,6 +177,8 @@ struct g_consumer { int flags; #define G_CF_SPOILED 0x1 #define G_CF_ORPHAN 0x4 +#define G_CF_DIRECT_SEND 0x10 +#define G_CF_DIRECT_RECEIVE 0x20 struct devstat *stat; u_int nstart, nend; @@ -206,6 +208,8 @@ struct g_provider { #define G_PF_WITHER 0x2 #define G_PF_ORPHAN 0x4 #define G_PF_ACCEPT_UNMAPPED 0x8 +#define G_PF_DIRECT_SEND 0x10 +#define G_PF_DIRECT_RECEIVE 0x20 /* Two fields for the implementing class to use */ void *private; @@ -393,6 +397,8 @@ g_free(void *ptr) }; \ DECLARE_MODULE(name, name##_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST); +int g_is_geom_thread(struct thread *td); + #endif /* _KERNEL */ /* geom_ctl.c */ Modified: stable/10/sys/geom/geom_dev.c ============================================================================== --- stable/10/sys/geom/geom_dev.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/geom_dev.c Tue Jan 7 01:32:23 2014 (r260385) @@ -222,6 +222,7 @@ g_dev_taste(struct g_class *mp, struct g mtx_init(&sc->sc_mtx, "g_dev", NULL, MTX_DEF); cp = g_new_consumer(gp); cp->private = sc; + cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE; error = g_attach(cp, pp); KASSERT(error == 0, ("g_dev_taste(%s) failed to g_attach, err=%d", pp->name, error)); @@ -485,16 +486,16 @@ g_dev_done(struct bio *bp2) sc = cp->private; bp = bp2->bio_parent; bp->bio_error = bp2->bio_error; - if (bp->bio_error != 0) { + bp->bio_completed = bp2->bio_completed; + bp->bio_resid = bp->bio_length - bp2->bio_completed; + if (bp2->bio_error != 0) { g_trace(G_T_BIO, "g_dev_done(%p) had error %d", - bp2, bp->bio_error); + bp2, bp2->bio_error); bp->bio_flags |= BIO_ERROR; } else { g_trace(G_T_BIO, "g_dev_done(%p/%p) resid %ld completed %jd", - bp2, bp, bp->bio_resid, (intmax_t)bp2->bio_completed); + bp2, bp, bp2->bio_resid, (intmax_t)bp2->bio_completed); } - bp->bio_resid = bp->bio_length - bp2->bio_completed; - bp->bio_completed = bp2->bio_completed; g_destroy_bio(bp2); destroy = 0; mtx_lock(&sc->sc_mtx); Modified: stable/10/sys/geom/geom_disk.c ============================================================================== --- stable/10/sys/geom/geom_disk.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/geom_disk.c Tue Jan 7 01:32:23 2014 (r260385) @@ -66,6 +66,7 @@ struct g_disk_softc { struct sysctl_oid *sysctl_tree; char led[64]; uint32_t state; + struct mtx start_mtx; }; static g_access_t g_disk_access; @@ -229,6 +230,7 @@ g_disk_setstate(struct bio *bp, struct g static void g_disk_done(struct bio *bp) { + struct bintime now; struct bio *bp2; struct g_disk_softc *sc; @@ -237,19 +239,40 @@ g_disk_done(struct bio *bp) bp2 = bp->bio_parent; sc = bp2->bio_to->private; bp->bio_completed = bp->bio_length - bp->bio_resid; + binuptime(&now); mtx_lock(&sc->done_mtx); if (bp2->bio_error == 0) bp2->bio_error = bp->bio_error; bp2->bio_completed += bp->bio_completed; if ((bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_DELETE)) != 0) - devstat_end_transaction_bio(sc->dp->d_devstat, bp); - g_destroy_bio(bp); + devstat_end_transaction_bio_bt(sc->dp->d_devstat, bp, &now); bp2->bio_inbed++; if (bp2->bio_children == bp2->bio_inbed) { + mtx_unlock(&sc->done_mtx); bp2->bio_resid = bp2->bio_bcount - bp2->bio_completed; g_io_deliver(bp2, bp2->bio_error); + } else + mtx_unlock(&sc->done_mtx); + g_destroy_bio(bp); +} + +static void +g_disk_done_single(struct bio *bp) +{ + struct bintime now; + struct g_disk_softc *sc; + + bp->bio_completed = bp->bio_length - bp->bio_resid; + bp->bio_done = (void *)bp->bio_to; + bp->bio_to = LIST_FIRST(&bp->bio_disk->d_geom->provider); + if ((bp->bio_cmd & (BIO_READ|BIO_WRITE|BIO_DELETE)) != 0) { + binuptime(&now); + sc = bp->bio_to->private; + mtx_lock(&sc->done_mtx); + devstat_end_transaction_bio_bt(sc->dp->d_devstat, bp, &now); + mtx_unlock(&sc->done_mtx); } - mtx_unlock(&sc->done_mtx); + g_io_deliver(bp, bp->bio_error); } static int @@ -277,7 +300,7 @@ g_disk_start(struct bio *bp) struct disk *dp; struct g_disk_softc *sc; int error; - off_t off; + off_t d_maxsize, off; sc = bp->bio_to->private; if (sc == NULL || (dp = sc->dp) == NULL || dp->d_destroyed) { @@ -294,6 +317,22 @@ g_disk_start(struct bio *bp) /* fall-through */ case BIO_READ: case BIO_WRITE: + d_maxsize = (bp->bio_cmd == BIO_DELETE) ? + dp->d_delmaxsize : dp->d_maxsize; + if (bp->bio_length <= d_maxsize) { + bp->bio_disk = dp; + bp->bio_to = (void *)bp->bio_done; + bp->bio_done = g_disk_done_single; + bp->bio_pblkno = bp->bio_offset / dp->d_sectorsize; + bp->bio_bcount = bp->bio_length; + mtx_lock(&sc->start_mtx); + devstat_start_transaction_bio(dp->d_devstat, bp); + mtx_unlock(&sc->start_mtx); + g_disk_lock_giant(dp); + dp->d_strategy(bp); + g_disk_unlock_giant(dp); + break; + } off = 0; bp3 = NULL; bp2 = g_clone_bio(bp); @@ -302,10 +341,6 @@ g_disk_start(struct bio *bp) break; } do { - off_t d_maxsize; - - d_maxsize = (bp->bio_cmd == BIO_DELETE) ? - dp->d_delmaxsize : dp->d_maxsize; bp2->bio_offset += off; bp2->bio_length -= off; if ((bp->bio_flags & BIO_UNMAPPED) == 0) { @@ -346,7 +381,9 @@ g_disk_start(struct bio *bp) bp2->bio_pblkno = bp2->bio_offset / dp->d_sectorsize; bp2->bio_bcount = bp2->bio_length; bp2->bio_disk = dp; + mtx_lock(&sc->start_mtx); devstat_start_transaction_bio(dp->d_devstat, bp2); + mtx_unlock(&sc->start_mtx); g_disk_lock_giant(dp); dp->d_strategy(bp2); g_disk_unlock_giant(dp); @@ -402,15 +439,11 @@ g_disk_start(struct bio *bp) error = EOPNOTSUPP; break; } - bp2 = g_clone_bio(bp); - if (bp2 == NULL) { - g_io_deliver(bp, ENOMEM); - return; - } - bp2->bio_done = g_disk_done; - bp2->bio_disk = dp; + bp->bio_disk = dp; + bp->bio_to = (void *)bp->bio_done; + bp->bio_done = g_disk_done_single; g_disk_lock_giant(dp); - dp->d_strategy(bp2); + dp->d_strategy(bp); g_disk_unlock_giant(dp); break; default: @@ -515,17 +548,24 @@ g_disk_create(void *arg, int flag) g_topology_assert(); dp = arg; sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO); + mtx_init(&sc->start_mtx, "g_disk_start", NULL, MTX_DEF); mtx_init(&sc->done_mtx, "g_disk_done", NULL, MTX_DEF); sc->dp = dp; gp = g_new_geomf(&g_disk_class, "%s%d", dp->d_name, dp->d_unit); gp->softc = sc; pp = g_new_providerf(gp, "%s", gp->name); + devstat_remove_entry(pp->stat); + pp->stat = NULL; + dp->d_devstat->id = pp; pp->mediasize = dp->d_mediasize; pp->sectorsize = dp->d_sectorsize; pp->stripeoffset = dp->d_stripeoffset; pp->stripesize = dp->d_stripesize; if ((dp->d_flags & DISKFLAG_UNMAPPED_BIO) != 0) pp->flags |= G_PF_ACCEPT_UNMAPPED; + if ((dp->d_flags & DISKFLAG_DIRECT_COMPLETION) != 0) + pp->flags |= G_PF_DIRECT_SEND; + pp->flags |= G_PF_DIRECT_RECEIVE; if (bootverbose) printf("GEOM: new disk %s\n", gp->name); sysctl_ctx_init(&sc->sysctl_ctx); @@ -574,6 +614,7 @@ g_disk_providergone(struct g_provider *p pp->private = NULL; pp->geom->softc = NULL; mtx_destroy(&sc->done_mtx); + mtx_destroy(&sc->start_mtx); g_free(sc); } Modified: stable/10/sys/geom/geom_disk.h ============================================================================== --- stable/10/sys/geom/geom_disk.h Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/geom_disk.h Tue Jan 7 01:32:23 2014 (r260385) @@ -107,6 +107,7 @@ struct disk { #define DISKFLAG_CANDELETE 0x4 #define DISKFLAG_CANFLUSHCACHE 0x8 #define DISKFLAG_UNMAPPED_BIO 0x10 +#define DISKFLAG_DIRECT_COMPLETION 0x20 struct disk *disk_alloc(void); void disk_create(struct disk *disk, int version); Modified: stable/10/sys/geom/geom_int.h ============================================================================== --- stable/10/sys/geom/geom_int.h Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/geom_int.h Tue Jan 7 01:32:23 2014 (r260385) @@ -39,6 +39,9 @@ LIST_HEAD(class_list_head, g_class); TAILQ_HEAD(g_tailq_head, g_geom); extern int g_collectstats; +#define G_STATS_PROVIDERS 1 /* Collect I/O stats for providers */ +#define G_STATS_CONSUMERS 2 /* Collect I/O stats for consumers */ + extern int g_debugflags; /* * 1 G_T_TOPOLOGY Modified: stable/10/sys/geom/geom_io.c ============================================================================== --- stable/10/sys/geom/geom_io.c Tue Jan 7 01:17:27 2014 (r260384) +++ stable/10/sys/geom/geom_io.c Tue Jan 7 01:32:23 2014 (r260385) @@ -65,6 +65,8 @@ __FBSDID("$FreeBSD$"); #include #include +static int g_io_transient_map_bio(struct bio *bp); + static struct g_bioq g_bio_run_down; static struct g_bioq g_bio_run_up; static struct g_bioq g_bio_run_task; @@ -310,6 +312,8 @@ g_io_check(struct bio *bp) { struct g_consumer *cp; struct g_provider *pp; + off_t excess; + int error; cp = bp->bio_from; pp = bp->bio_to; @@ -354,11 +358,44 @@ g_io_check(struct bio *bp) return (EIO); if (bp->bio_offset > pp->mediasize) return (EIO); + + /* Truncate requests to the end of providers media. */ + excess = bp->bio_offset + bp->bio_length; + if (excess > bp->bio_to->mediasize) { + KASSERT((bp->bio_flags & BIO_UNMAPPED) == 0 || + round_page(bp->bio_ma_offset + + bp->bio_length) / PAGE_SIZE == bp->bio_ma_n, + ("excess bio %p too short", bp)); + excess -= bp->bio_to->mediasize; + bp->bio_length -= excess; + if ((bp->bio_flags & BIO_UNMAPPED) != 0) { + bp->bio_ma_n = round_page(bp->bio_ma_offset + + bp->bio_length) / PAGE_SIZE; + } + if (excess > 0) + CTR3(KTR_GEOM, "g_down truncated bio " + "%p provider %s by %d", bp, + bp->bio_to->name, excess); + } + + /* Deliver zero length transfers right here. */ + if (bp->bio_length == 0) { + CTR2(KTR_GEOM, "g_down terminated 0-length " + "bp %p provider %s", bp, bp->bio_to->name); + return (0); + } + + if ((bp->bio_flags & BIO_UNMAPPED) != 0 && + (bp->bio_to->flags & G_PF_ACCEPT_UNMAPPED) == 0 && + (bp->bio_cmd == BIO_READ || bp->bio_cmd == BIO_WRITE)) { + if ((error = g_io_transient_map_bio(bp)) >= 0) + return (error); + } break; default: break; } - return (0); + return (EJUSTRETURN); } /* @@ -422,7 +459,8 @@ void g_io_request(struct bio *bp, struct g_consumer *cp) { struct g_provider *pp; - int first; + struct mtx *mtxp; + int direct, error, first; KASSERT(cp != NULL, ("NULL cp in g_io_request")); KASSERT(bp != NULL, ("NULL bp in g_io_request")); @@ -472,48 +510,81 @@ g_io_request(struct bio *bp, struct g_co KASSERT(!(bp->bio_flags & BIO_ONQUEUE), ("Bio already on queue bp=%p", bp)); - bp->bio_flags |= BIO_ONQUEUE; - - if (g_collectstats) + if ((g_collectstats & G_STATS_CONSUMERS) != 0 || + ((g_collectstats & G_STATS_PROVIDERS) != 0 && pp->stat != NULL)) binuptime(&bp->bio_t0); else getbinuptime(&bp->bio_t0); +#ifdef GET_STACK_USAGE + direct = (cp->flags & G_CF_DIRECT_SEND) && + (pp->flags & G_PF_DIRECT_RECEIVE) && + !g_is_geom_thread(curthread) && + (((pp->flags & G_PF_ACCEPT_UNMAPPED) == 0 && + (bp->bio_flags & BIO_UNMAPPED) != 0) || THREAD_CAN_SLEEP()); + if (direct) { + /* Block direct execution if less then half of stack left. */ + size_t st, su; + GET_STACK_USAGE(st, su); + if (su * 2 > st) + direct = 0; + } +#else + direct = 0; +#endif + + if (!TAILQ_EMPTY(&g_classifier_tailq) && !bp->bio_classifier1) { + g_bioq_lock(&g_bio_run_down); + g_run_classifiers(bp); + g_bioq_unlock(&g_bio_run_down); + } + /* * The statistics collection is lockless, as such, but we * can not update one instance of the statistics from more * than one thread at a time, so grab the lock first. - * - * We also use the lock to protect the list of classifiers. */ - g_bioq_lock(&g_bio_run_down); - - if (!TAILQ_EMPTY(&g_classifier_tailq) && !bp->bio_classifier1) - g_run_classifiers(bp); - - if (g_collectstats & 1) + mtxp = mtx_pool_find(mtxpool_sleep, pp); + mtx_lock(mtxp); + if (g_collectstats & G_STATS_PROVIDERS) devstat_start_transaction(pp->stat, &bp->bio_t0); - if (g_collectstats & 2) + if (g_collectstats & G_STATS_CONSUMERS) devstat_start_transaction(cp->stat, &bp->bio_t0); - pp->nstart++; cp->nstart++; - first = TAILQ_EMPTY(&g_bio_run_down.bio_queue); - TAILQ_INSERT_TAIL(&g_bio_run_down.bio_queue, bp, bio_queue); - g_bio_run_down.bio_queue_length++; - g_bioq_unlock(&g_bio_run_down); + mtx_unlock(mtxp); - /* Pass it on down. */ - if (first) - wakeup(&g_wait_down); + if (direct) { + error = g_io_check(bp); + if (error >= 0) { + CTR3(KTR_GEOM, "g_io_request g_io_check on bp %p " + "provider %s returned %d", bp, bp->bio_to->name, + error); + g_io_deliver(bp, error); + return; + } + bp->bio_to->geom->start(bp); + } else { + g_bioq_lock(&g_bio_run_down); + first = TAILQ_EMPTY(&g_bio_run_down.bio_queue); + TAILQ_INSERT_TAIL(&g_bio_run_down.bio_queue, bp, bio_queue); + bp->bio_flags |= BIO_ONQUEUE; + g_bio_run_down.bio_queue_length++; + g_bioq_unlock(&g_bio_run_down); + /* Pass it on down. */ + if (first) + wakeup(&g_wait_down); + } } void g_io_deliver(struct bio *bp, int error) { + struct bintime now; struct g_consumer *cp; struct g_provider *pp; - int first; + struct mtx *mtxp; + int direct, first; KASSERT(bp != NULL, ("NULL bp in g_io_deliver")); pp = bp->bio_to; @@ -559,31 +630,55 @@ g_io_deliver(struct bio *bp, int error) bp->bio_bcount = bp->bio_length; bp->bio_resid = bp->bio_bcount - bp->bio_completed; +#ifdef GET_STACK_USAGE + direct = (pp->flags & G_PF_DIRECT_SEND) && + (cp->flags & G_CF_DIRECT_RECEIVE) && + !g_is_geom_thread(curthread); + if (direct) { + /* Block direct execution if less then half of stack left. */ + size_t st, su; + GET_STACK_USAGE(st, su); + if (su * 2 > st) + direct = 0; + } +#else + direct = 0; +#endif + /* * The statistics collection is lockless, as such, but we * can not update one instance of the statistics from more * than one thread at a time, so grab the lock first. */ - g_bioq_lock(&g_bio_run_up); - if (g_collectstats & 1) - devstat_end_transaction_bio(pp->stat, bp); - if (g_collectstats & 2) - devstat_end_transaction_bio(cp->stat, bp); - + if ((g_collectstats & G_STATS_CONSUMERS) != 0 || + ((g_collectstats & G_STATS_PROVIDERS) != 0 && pp->stat != NULL)) + binuptime(&now); + mtxp = mtx_pool_find(mtxpool_sleep, cp); + mtx_lock(mtxp); + if (g_collectstats & G_STATS_PROVIDERS) + devstat_end_transaction_bio_bt(pp->stat, bp, &now); + if (g_collectstats & G_STATS_CONSUMERS) + devstat_end_transaction_bio_bt(cp->stat, bp, &now); cp->nend++; pp->nend++; + mtx_unlock(mtxp); + if (error != ENOMEM) { bp->bio_error = error; - first = TAILQ_EMPTY(&g_bio_run_up.bio_queue); - TAILQ_INSERT_TAIL(&g_bio_run_up.bio_queue, bp, bio_queue); - bp->bio_flags |= BIO_ONQUEUE; - g_bio_run_up.bio_queue_length++; - g_bioq_unlock(&g_bio_run_up); - if (first) - wakeup(&g_wait_up); + if (direct) { + biodone(bp); + } else { + g_bioq_lock(&g_bio_run_up); + first = TAILQ_EMPTY(&g_bio_run_up.bio_queue); + TAILQ_INSERT_TAIL(&g_bio_run_up.bio_queue, bp, bio_queue); + bp->bio_flags |= BIO_ONQUEUE; + g_bio_run_up.bio_queue_length++; + g_bioq_unlock(&g_bio_run_up); + if (first) + wakeup(&g_wait_up); + } return; } - g_bioq_unlock(&g_bio_run_up); if (bootverbose) printf("ENOMEM %p on %p(%s)\n", bp, pp, pp->name); @@ -639,11 +734,10 @@ retry: if (vmem_alloc(transient_arena, size, M_BESTFIT | M_NOWAIT, &addr)) { if (transient_map_retries != 0 && retried >= transient_map_retries) { - g_io_deliver(bp, EDEADLK/* XXXKIB */); CTR2(KTR_GEOM, "g_down cannot map bp %p provider %s", bp, bp->bio_to->name); atomic_add_int(&transient_map_hard_failures, 1); - return (1); + return (EDEADLK/* XXXKIB */); } else { /* * Naive attempt to quisce the I/O to get more @@ -663,14 +757,13 @@ retry: bp->bio_data = (caddr_t)addr + bp->bio_ma_offset; bp->bio_flags |= BIO_TRANSIENT_MAPPING; bp->bio_flags &= ~BIO_UNMAPPED; - return (0); + return (EJUSTRETURN); } void g_io_schedule_down(struct thread *tp __unused) { struct bio *bp; - off_t excess; int error; for(;;) { @@ -689,59 +782,15 @@ g_io_schedule_down(struct thread *tp __u pause("g_down", hz/10); pace--; } + CTR2(KTR_GEOM, "g_down processing bp %p provider %s", bp, + bp->bio_to->name); error = g_io_check(bp); - if (error) { + if (error >= 0) { CTR3(KTR_GEOM, "g_down g_io_check on bp %p provider " "%s returned %d", bp, bp->bio_to->name, error); g_io_deliver(bp, error); continue; } - CTR2(KTR_GEOM, "g_down processing bp %p provider %s", bp, - bp->bio_to->name); - switch (bp->bio_cmd) { - case BIO_READ: - case BIO_WRITE: - case BIO_DELETE: - /* Truncate requests to the end of providers media. */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 01:40:51 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2720E68E; Tue, 7 Jan 2014 01:40:51 +0000 (UTC) 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 12A2211FA; Tue, 7 Jan 2014 01:40: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 s071eoxT050236; Tue, 7 Jan 2014 01:40:50 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s071eo4l050231; Tue, 7 Jan 2014 01:40:50 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401070140.s071eo4l050231@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Tue, 7 Jan 2014 01:40:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260386 - in head/contrib/gperf: doc src X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 01:40:51 -0000 Author: pfg Date: Tue Jan 7 01:40:49 2014 New Revision: 260386 URL: http://svnweb.freebsd.org/changeset/base/260386 Log: gperf: reverse size_type patch from r258115. Silencing the broken warning as done in r258139 renders the code unreacheable. An option could've been to turn off the warnings in gperf but given that the code is not being used it is better to just revert the original change altogether. This code was never MFC'd. Modified: head/contrib/gperf/doc/gperf.1 head/contrib/gperf/src/options.cc head/contrib/gperf/src/options.h head/contrib/gperf/src/options.icc head/contrib/gperf/src/output.cc Modified: head/contrib/gperf/doc/gperf.1 ============================================================================== --- head/contrib/gperf/doc/gperf.1 Tue Jan 7 01:32:23 2014 (r260385) +++ head/contrib/gperf/doc/gperf.1 Tue Jan 7 01:40:49 2014 (r260386) @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. -.TH GPERF "1" "October 2011" "GNU gperf 3.0.3" FSF +.TH GPERF "1" "May 2007" "GNU gperf 3.0.3" FSF .SH NAME -gperf \- manual page for gperf 3.0.3 +gperf \- generate a perfect hash function from a key set .SH SYNOPSIS .B gperf [\fIOPTION\fR]... [\fIINPUT-FILE\fR] @@ -129,10 +129,6 @@ binary search. Prevents the transfer of the type declaration to the output file. Use this option if the type is already defined elsewhere. -.TP -\fB\-\-size\-type\fR=\fITYPE\fR -Specify the type for length parameters. Default type is -\&'unsigned int'. .SS "Algorithm employed by gperf:" .TP \fB\-k\fR, \fB\-\-key\-positions\fR=\fIKEYS\fR Modified: head/contrib/gperf/src/options.cc ============================================================================== --- head/contrib/gperf/src/options.cc Tue Jan 7 01:32:23 2014 (r260385) +++ head/contrib/gperf/src/options.cc Tue Jan 7 01:40:49 2014 (r260386) @@ -67,8 +67,6 @@ static const char *const DEFAULT_STRINGP /* Default delimiters that separate keywords from their attributes. */ static const char *const DEFAULT_DELIMITERS = ","; -static const char *const DEFAULT_SIZE_TYPE = "unsigned int"; - /* Prints program usage to given stream. */ void @@ -204,9 +202,6 @@ Options::long_usage (FILE * stream) " Prevents the transfer of the type declaration to the\n" " output file. Use this option if the type is already\n" " defined elsewhere.\n"); - fprintf (stream, - " --size-type=TYPE Specify the type for length parameters. Default type is\n" - " 'unsigned int'.\n"); fprintf (stream, "\n"); fprintf (stream, "Algorithm employed by gperf:\n"); @@ -475,7 +470,6 @@ Options::Options () _lengthtable_name (DEFAULT_LENGTHTABLE_NAME), _stringpool_name (DEFAULT_STRINGPOOL_NAME), _delimiters (DEFAULT_DELIMITERS), - _size_type (DEFAULT_SIZE_TYPE), _key_positions () { } @@ -520,7 +514,6 @@ Options::~Options () "\nhash table size multiplier = %g" "\ninitial associated value = %d" "\ndelimiters = %s" - "\nsize type = %s" "\nnumber of switch statements = %d\n", _option_word & TYPE ? "enabled" : "disabled", _option_word & UPPERLOWER ? "enabled" : "disabled", @@ -546,7 +539,7 @@ Options::~Options () _function_name, _hash_name, _wordlist_name, _lengthtable_name, _stringpool_name, _slot_name, _initializer_suffix, _asso_iterations, _jump, _size_multiple, _initial_asso_value, - _delimiters, _size_type, _total_switches); + _delimiters, _total_switches); if (_key_positions.is_useall()) fprintf (stderr, "all characters are used in the hash function\n"); else @@ -675,12 +668,6 @@ Options::set_delimiters (const char *del _delimiters = delimiters; } -void -Options::set_size_type (const char *size_type) -{ - if (_size_type == DEFAULT_SIZE_TYPE) - _size_type = size_type; -} /* Parses the command line Options and sets appropriate flags in option_word. */ @@ -706,7 +693,6 @@ static const struct option long_options[ { "global-table", no_argument, NULL, 'G' }, { "word-array-name", required_argument, NULL, 'W' }, { "length-table-name", required_argument, NULL, CHAR_MAX + 4 }, - { "size-type", required_argument, NULL, CHAR_MAX + 5 }, { "switch", required_argument, NULL, 'S' }, { "omit-struct-type", no_argument, NULL, 'T' }, { "key-positions", required_argument, NULL, 'k' }, @@ -1060,11 +1046,6 @@ warranty; not even for MERCHANTABILITY o _lengthtable_name = /*getopt*/optarg; break; } - case CHAR_MAX + 5: /* Sets the name for the length table array. */ - { - _size_type = /*getopt*/optarg; - break; - } default: short_usage (stderr); exit (1); Modified: head/contrib/gperf/src/options.h ============================================================================== --- head/contrib/gperf/src/options.h Tue Jan 7 01:32:23 2014 (r260385) +++ head/contrib/gperf/src/options.h Tue Jan 7 01:40:49 2014 (r260386) @@ -209,9 +209,6 @@ public: /* Sets the delimiters string, if not already set. */ void set_delimiters (const char *delimiters); - const char * get_size_type() const; - void set_size_type(const char*); - /* Returns key positions. */ const Positions& get_key_positions () const; @@ -282,8 +279,6 @@ private: /* Separates keywords from other attributes. */ const char * _delimiters; - const char * _size_type; - /* Contains user-specified key choices. */ Positions _key_positions; }; Modified: head/contrib/gperf/src/options.icc ============================================================================== --- head/contrib/gperf/src/options.icc Tue Jan 7 01:32:23 2014 (r260385) +++ head/contrib/gperf/src/options.icc Tue Jan 7 01:40:49 2014 (r260386) @@ -155,9 +155,3 @@ Options::get_key_positions () const { return _key_positions; } - -INLINE const char * -Options::get_size_type() const -{ - return _size_type; -} Modified: head/contrib/gperf/src/output.cc ============================================================================== --- head/contrib/gperf/src/output.cc Tue Jan 7 01:32:23 2014 (r260385) +++ head/contrib/gperf/src/output.cc Tue Jan 7 01:40:49 2014 (r260386) @@ -772,14 +772,14 @@ Output::output_hash_function () const printf (option[KRC] ? "(str, len)\n" " register char *str;\n" - " register %s len;\n" : + " register unsigned int len;\n" : option[C] ? "(str, len)\n" " register const char *str;\n" - " register %s len;\n" : + " register unsigned int len;\n" : option[ANSIC] | option[CPLUSPLUS] ? - "(register const char *str, register %s len)\n" : - "%s", option.get_size_type()); + "(register const char *str, register unsigned int len)\n" : + ""); /* Note that when the hash function is called, it has already been verified that min_key_len <= len <= max_key_len. */ @@ -875,7 +875,7 @@ Output::output_hash_function () const " switch (%s)\n" " {\n" " default:\n", - option[NOLENGTH] ? "0" : "(int)len", + option[NOLENGTH] ? "0" : "len", option[NOLENGTH] ? "len" : "hval"); while (key_pos != Positions::LASTCHAR && key_pos >= _max_key_len) @@ -1900,14 +1900,14 @@ Output::output_lookup_function () const printf (option[KRC] ? "(str, len)\n" " register char *str;\n" - " register %s len;\n" : + " register unsigned int len;\n" : option[C] ? "(str, len)\n" " register const char *str;\n" - " register %s len;\n" : + " register unsigned int len;\n" : option[ANSIC] | option[CPLUSPLUS] ? - "(register const char *str, register %s len)\n" : - "%s", option.get_size_type()); + "(register const char *str, register unsigned int len)\n" : + ""); /* Output the function's body. */ printf ("{\n"); @@ -2074,14 +2074,13 @@ Output::output () printf ("class %s\n" "{\n" "private:\n" - " static inline unsigned int %s (const char *str, %s len);\n" + " static inline unsigned int %s (const char *str, unsigned int len);\n" "public:\n" - " static %s%s%s (const char *str, %s len);\n" + " static %s%s%s (const char *str, unsigned int len);\n" "};\n" "\n", - option.get_class_name (), option.get_hash_name (), option.get_size_type(), - const_for_struct, _return_type, option.get_function_name (), - option.get_size_type()); + option.get_class_name (), option.get_hash_name (), + const_for_struct, _return_type, option.get_function_name ()); output_hash_function (); From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 01:51:50 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 33FFE877; Tue, 7 Jan 2014 01:51:50 +0000 (UTC) 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 1CA221296; Tue, 7 Jan 2014 01:51: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 s071poKW055909; Tue, 7 Jan 2014 01:51:50 GMT (envelope-from scottl@svn.freebsd.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s071pmLP055901; Tue, 7 Jan 2014 01:51:48 GMT (envelope-from scottl@svn.freebsd.org) Message-Id: <201401070151.s071pmLP055901@svn.freebsd.org> From: Scott Long Date: Tue, 7 Jan 2014 01:51:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260387 - in stable/10/sys: cam cam/ata cam/ctl cam/scsi dev/ahci dev/ata dev/isp dev/mvs dev/siis kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 01:51:50 -0000 Author: scottl Date: Tue Jan 7 01:51:48 2014 New Revision: 260387 URL: http://svnweb.freebsd.org/changeset/base/260387 Log: MFC Alexander Motin's direct dispatch, multi-queue, and finer-grained locking support for CAM r256826: Fix several target mode SIMs to not blindly clear ccb_h.flags field of ATIO CCBs. Not all CCB flags there belong to them. r256836: Remove hard limit on number of BIOs handled with one ATA TRIM request. r256843: Merge CAM locking changes from the projects/camlock branch to radically reduce lock congestion and improve SMP scalability of the SCSI/ATA stack, preparing the ground for the coming next GEOM direct dispatch support. r256888: Unconditionally acquire periph reference on CCB allocation failure. r256895: Fix memory and references leak due to unfreed path. r256960: Move CAM_UNQUEUED_INDEX setting to the last moment and under the periph lock. This fixes race condition with cam_periph_ccbwait(), causing use-after-free. r256975: Minor (mostly cosmetical) addition to r256960. r257054: Some microoptimizations for da and ada drivers: - Replace ordered_tag_count counter with single flag; - From da remove outstanding_cmds counter, duplicating pending_ccbs list; - From da_softc remove unused links field. r257482: Fix lock recursion, triggered by `smartctl -a /dev/adaX`. r257501: Make getenv_*() functions and respectively TUNABLE_*_FETCH() macros not allocate memory and so not require sleepable environment. getenv() has already used on-stack temporary storage, so just use it more rationally. getenv_string() receives buffer as argument, so don't need another one. r257914: Some CAM locks polishing: - Fix LOR and possible lock recursion when handling high-power commands. Introduce new lock to protect left power quota and list of frozen devices. - Correct locking around xpt periph creation. - Remove seems never used XPT_FLAG_OPEN xpt periph flag. Again, Netflix assisted with testing the merge, but all of the credit goes to Alexander and iX Systems. Submitted by: mav Sponsored by: iX Systems Modified: stable/10/sys/cam/ata/ata_da.c stable/10/sys/cam/ata/ata_pmp.c stable/10/sys/cam/ata/ata_xpt.c stable/10/sys/cam/cam_ccb.h stable/10/sys/cam/cam_periph.c stable/10/sys/cam/cam_periph.h stable/10/sys/cam/cam_queue.c stable/10/sys/cam/cam_queue.h stable/10/sys/cam/cam_sim.c stable/10/sys/cam/cam_sim.h stable/10/sys/cam/cam_xpt.c stable/10/sys/cam/cam_xpt.h stable/10/sys/cam/cam_xpt_internal.h stable/10/sys/cam/cam_xpt_sim.h stable/10/sys/cam/ctl/ctl_frontend_cam_sim.c stable/10/sys/cam/ctl/scsi_ctl.c stable/10/sys/cam/scsi/scsi_cd.c stable/10/sys/cam/scsi/scsi_ch.c stable/10/sys/cam/scsi/scsi_da.c stable/10/sys/cam/scsi/scsi_enc.c stable/10/sys/cam/scsi/scsi_enc_internal.h stable/10/sys/cam/scsi/scsi_enc_safte.c stable/10/sys/cam/scsi/scsi_enc_ses.c stable/10/sys/cam/scsi/scsi_pass.c stable/10/sys/cam/scsi/scsi_pt.c stable/10/sys/cam/scsi/scsi_sa.c stable/10/sys/cam/scsi/scsi_sg.c stable/10/sys/cam/scsi/scsi_targ_bh.c stable/10/sys/cam/scsi/scsi_target.c stable/10/sys/cam/scsi/scsi_xpt.c stable/10/sys/dev/ahci/ahci.c stable/10/sys/dev/ahci/ahci.h stable/10/sys/dev/ata/ata-all.c stable/10/sys/dev/isp/isp_freebsd.c stable/10/sys/dev/mvs/mvs.c stable/10/sys/dev/siis/siis.c stable/10/sys/kern/kern_environment.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ata/ata_da.c ============================================================================== --- stable/10/sys/cam/ata/ata_da.c Tue Jan 7 01:40:49 2014 (r260386) +++ stable/10/sys/cam/ata/ata_da.c Tue Jan 7 01:51:48 2014 (r260387) @@ -80,7 +80,7 @@ typedef enum { ADA_FLAG_CAN_NCQ = 0x0008, ADA_FLAG_CAN_DMA = 0x0010, ADA_FLAG_NEED_OTAG = 0x0020, - ADA_FLAG_WENT_IDLE = 0x0040, + ADA_FLAG_WAS_OTAG = 0x0040, ADA_FLAG_CAN_TRIM = 0x0080, ADA_FLAG_OPEN = 0x0100, ADA_FLAG_SCTX_INIT = 0x0200, @@ -103,7 +103,6 @@ typedef enum { ADA_CCB_RAHEAD = 0x01, ADA_CCB_WCACHE = 0x02, ADA_CCB_BUFFER_IO = 0x03, - ADA_CCB_WAITING = 0x04, ADA_CCB_DUMP = 0x05, ADA_CCB_TRIM = 0x06, ADA_CCB_TYPE_MASK = 0x0F, @@ -123,21 +122,20 @@ struct disk_params { #define TRIM_MAX_BLOCKS 8 #define TRIM_MAX_RANGES (TRIM_MAX_BLOCKS * ATA_DSM_BLK_RANGES) -#define TRIM_MAX_BIOS (TRIM_MAX_RANGES * 4) struct trim_request { uint8_t data[TRIM_MAX_RANGES * ATA_DSM_RANGE_SIZE]; - struct bio *bps[TRIM_MAX_BIOS]; + TAILQ_HEAD(, bio) bps; }; struct ada_softc { struct bio_queue_head bio_queue; struct bio_queue_head trim_queue; + int outstanding_cmds; /* Number of active commands */ + int refcount; /* Active xpt_action() calls */ ada_state state; - ada_flags flags; + ada_flags flags; ada_quirks quirks; int sort_io_queue; - int ordered_tag_count; - int outstanding_cmds; int trim_max_ranges; int trim_running; int read_ahead; @@ -630,14 +628,8 @@ adaclose(struct disk *dp) int error; periph = (struct cam_periph *)dp->d_drv1; - cam_periph_lock(periph); - if (cam_periph_hold(periph, PRIBIO) != 0) { - cam_periph_unlock(periph); - cam_periph_release(periph); - return (0); - } - softc = (struct ada_softc *)periph->softc; + cam_periph_lock(periph); CAM_DEBUG(periph->path, CAM_DEBUG_TRACE | CAM_DEBUG_PERIPH, ("adaclose\n")); @@ -645,7 +637,8 @@ adaclose(struct disk *dp) /* We only sync the cache if the drive is capable of it. */ if ((softc->flags & ADA_FLAG_DIRTY) != 0 && (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) != 0 && - (periph->flags & CAM_PERIPH_INVALID) == 0) { + (periph->flags & CAM_PERIPH_INVALID) == 0 && + cam_periph_hold(periph, PRIBIO) == 0) { ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL); cam_fill_ataio(&ccb->ataio, @@ -669,10 +662,13 @@ adaclose(struct disk *dp) else softc->flags &= ~ADA_FLAG_DIRTY; xpt_release_ccb(ccb); + cam_periph_unhold(periph); } softc->flags &= ~ADA_FLAG_OPEN; - cam_periph_unhold(periph); + + while (softc->refcount != 0) + cam_periph_sleep(periph, &softc->refcount, PRIBIO, "adaclose", 1); cam_periph_unlock(periph); cam_periph_release(periph); return (0); @@ -682,23 +678,15 @@ static void adaschedule(struct cam_periph *periph) { struct ada_softc *softc = (struct ada_softc *)periph->softc; - uint32_t prio; if (softc->state != ADA_STATE_NORMAL) return; - /* Check if cam_periph_getccb() was called. */ - prio = periph->immediate_priority; - /* Check if we have more work to do. */ if (bioq_first(&softc->bio_queue) || (!softc->trim_running && bioq_first(&softc->trim_queue))) { - prio = CAM_PRIORITY_NORMAL; + xpt_schedule(periph, CAM_PRIORITY_NORMAL); } - - /* Schedule CCB if any of above is true. */ - if (prio != CAM_PRIORITY_NONE) - xpt_schedule(periph, prio); } /* @@ -962,7 +950,7 @@ adaasync(void *callback_arg, u_int32_t c status = cam_periph_alloc(adaregister, adaoninvalidate, adacleanup, adastart, "ada", CAM_PERIPH_BIO, - cgd->ccb_h.path, adaasync, + path, adaasync, AC_FOUND_DEVICE, cgd); if (status != CAM_REQ_CMP @@ -1038,8 +1026,10 @@ adaasync(void *callback_arg, u_int32_t c softc->state = ADA_STATE_WCACHE; else break; - cam_periph_acquire(periph); - xpt_schedule(periph, CAM_PRIORITY_DEV); + if (cam_periph_acquire(periph) != CAM_REQ_CMP) + softc->state = ADA_STATE_NORMAL; + else + xpt_schedule(periph, CAM_PRIORITY_DEV); } default: cam_periph_async(periph, code, path, arg); @@ -1346,8 +1336,8 @@ adaregister(struct cam_periph *periph, v * Create our sysctl variables, now that we know * we have successfully attached. */ - cam_periph_acquire(periph); - taskqueue_enqueue(taskqueue_thread, &softc->sysctl_task); + if (cam_periph_acquire(periph) == CAM_REQ_CMP) + taskqueue_enqueue(taskqueue_thread, &softc->sysctl_task); /* * Add async callbacks for bus reset and @@ -1365,7 +1355,7 @@ adaregister(struct cam_periph *periph, v * Schedule a periodic event to occasionally send an * ordered tag to a device. */ - callout_init_mtx(&softc->sendordered_c, periph->sim->mtx, 0); + callout_init_mtx(&softc->sendordered_c, cam_periph_mtx(periph), 0); callout_reset(&softc->sendordered_c, (ada_default_timeout * hz) / ADA_ORDEREDTAG_INTERVAL, adasendorderedtag, softc); @@ -1373,16 +1363,17 @@ adaregister(struct cam_periph *periph, v if (ADA_RA >= 0 && cgd->ident_data.support.command1 & ATA_SUPPORT_LOOKAHEAD) { softc->state = ADA_STATE_RAHEAD; - cam_periph_acquire(periph); - xpt_schedule(periph, CAM_PRIORITY_DEV); } else if (ADA_WC >= 0 && cgd->ident_data.support.command1 & ATA_SUPPORT_WRITECACHE) { softc->state = ADA_STATE_WCACHE; - cam_periph_acquire(periph); - xpt_schedule(periph, CAM_PRIORITY_DEV); - } else + } else { softc->state = ADA_STATE_NORMAL; - + return(CAM_REQ_CMP); + } + if (cam_periph_acquire(periph) != CAM_REQ_CMP) + softc->state = ADA_STATE_NORMAL; + else + xpt_schedule(periph, CAM_PRIORITY_DEV); return(CAM_REQ_CMP); } @@ -1400,29 +1391,17 @@ adastart(struct cam_periph *periph, unio struct bio *bp; u_int8_t tag_code; - /* Execute immediate CCB if waiting. */ - if (periph->immediate_priority <= periph->pinfo.priority) { - CAM_DEBUG(periph->path, CAM_DEBUG_SUBTRACE, - ("queuing for immediate ccb\n")); - start_ccb->ccb_h.ccb_state = ADA_CCB_WAITING; - SLIST_INSERT_HEAD(&periph->ccb_list, &start_ccb->ccb_h, - periph_links.sle); - periph->immediate_priority = CAM_PRIORITY_NONE; - wakeup(&periph->ccb_list); - /* Have more work to do, so ensure we stay scheduled */ - adaschedule(periph); - break; - } /* Run TRIM if not running yet. */ if (!softc->trim_running && (bp = bioq_first(&softc->trim_queue)) != 0) { struct trim_request *req = &softc->trim_req; struct bio *bp1; uint64_t lastlba = (uint64_t)-1; - int bps = 0, c, lastcount = 0, off, ranges = 0; + int c, lastcount = 0, off, ranges = 0; softc->trim_running = 1; bzero(req, sizeof(*req)); + TAILQ_INIT(&req->bps); bp1 = bp; do { uint64_t lba = bp1->bio_pblkno; @@ -1465,10 +1444,9 @@ adastart(struct cam_periph *periph, unio */ } lastlba = lba; - req->bps[bps++] = bp1; + TAILQ_INSERT_TAIL(&req->bps, bp1, bio_queue); bp1 = bioq_first(&softc->trim_queue); - if (bps >= TRIM_MAX_BIOS || - bp1 == NULL || + if (bp1 == NULL || bp1->bio_bcount / softc->params.secsize > (softc->trim_max_ranges - ranges) * ATA_DSM_RANGE_MAX) @@ -1487,6 +1465,7 @@ adastart(struct cam_periph *periph, unio ATA_DSM_TRIM, 0, (ranges + ATA_DSM_BLK_RANGES - 1) / ATA_DSM_BLK_RANGES); start_ccb->ccb_h.ccb_state = ADA_CCB_TRIM; + start_ccb->ccb_h.flags |= CAM_UNLOCKED; goto out; } /* Run regular command. */ @@ -1500,7 +1479,7 @@ adastart(struct cam_periph *periph, unio if ((bp->bio_flags & BIO_ORDERED) != 0 || (softc->flags & ADA_FLAG_NEED_OTAG) != 0) { softc->flags &= ~ADA_FLAG_NEED_OTAG; - softc->ordered_tag_count++; + softc->flags |= ADA_FLAG_WAS_OTAG; tag_code = 0; } else { tag_code = 1; @@ -1655,10 +1634,15 @@ adastart(struct cam_periph *periph, unio break; } start_ccb->ccb_h.ccb_state = ADA_CCB_BUFFER_IO; + start_ccb->ccb_h.flags |= CAM_UNLOCKED; out: start_ccb->ccb_h.ccb_bp = bp; softc->outstanding_cmds++; + softc->refcount++; + cam_periph_unlock(periph); xpt_action(start_ccb); + cam_periph_lock(periph); + softc->refcount--; /* May have more work to do, so ensure we stay scheduled */ adaschedule(periph); @@ -1667,13 +1651,6 @@ out: case ADA_STATE_RAHEAD: case ADA_STATE_WCACHE: { - if ((periph->flags & CAM_PERIPH_INVALID) != 0) { - softc->state = ADA_STATE_NORMAL; - xpt_release_ccb(start_ccb); - cam_periph_release_locked(periph); - return; - } - cam_fill_ataio(ataio, 1, adadone, @@ -1722,10 +1699,12 @@ adadone(struct cam_periph *periph, union struct bio *bp; int error; + cam_periph_lock(periph); if ((done_ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { error = adaerror(done_ccb, 0, 0); if (error == ERESTART) { /* A retry was scheduled, so just return. */ + cam_periph_unlock(periph); return; } if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) @@ -1754,29 +1733,32 @@ adadone(struct cam_periph *periph, union } softc->outstanding_cmds--; if (softc->outstanding_cmds == 0) - softc->flags |= ADA_FLAG_WENT_IDLE; + softc->flags |= ADA_FLAG_WAS_OTAG; + xpt_release_ccb(done_ccb); if (state == ADA_CCB_TRIM) { - struct trim_request *req = - (struct trim_request *)ataio->data_ptr; - int i; - - for (i = 1; i < TRIM_MAX_BIOS && req->bps[i]; i++) { - struct bio *bp1 = req->bps[i]; + TAILQ_HEAD(, bio) queue; + struct bio *bp1; - bp1->bio_error = bp->bio_error; - if (bp->bio_flags & BIO_ERROR) { + TAILQ_INIT(&queue); + TAILQ_CONCAT(&queue, &softc->trim_req.bps, bio_queue); + softc->trim_running = 0; + adaschedule(periph); + cam_periph_unlock(periph); + while ((bp1 = TAILQ_FIRST(&queue)) != NULL) { + TAILQ_REMOVE(&queue, bp1, bio_queue); + bp1->bio_error = error; + if (error != 0) { bp1->bio_flags |= BIO_ERROR; bp1->bio_resid = bp1->bio_bcount; } else bp1->bio_resid = 0; biodone(bp1); } - softc->trim_running = 0; - biodone(bp); - adaschedule(periph); - } else + } else { + cam_periph_unlock(periph); biodone(bp); - break; + } + return; } case ADA_CCB_RAHEAD: { @@ -1852,12 +1834,6 @@ out: cam_periph_release_locked(periph); return; } - case ADA_CCB_WAITING: - { - /* Caller will release the CCB */ - wakeup(&done_ccb->ccb_h.cbfcnp); - return; - } case ADA_CCB_DUMP: /* No-op. We're polling */ return; @@ -1919,14 +1895,11 @@ adasendorderedtag(void *arg) struct ada_softc *softc = arg; if (ada_send_ordered) { - if ((softc->ordered_tag_count == 0) - && ((softc->flags & ADA_FLAG_WENT_IDLE) == 0)) { - softc->flags |= ADA_FLAG_NEED_OTAG; + if (softc->outstanding_cmds > 0) { + if ((softc->flags & ADA_FLAG_WAS_OTAG) == 0) + softc->flags |= ADA_FLAG_NEED_OTAG; + softc->flags &= ~ADA_FLAG_WAS_OTAG; } - if (softc->outstanding_cmds > 0) - softc->flags &= ~ADA_FLAG_WENT_IDLE; - - softc->ordered_tag_count = 0; } /* Queue us up again */ callout_reset(&softc->sendordered_c, Modified: stable/10/sys/cam/ata/ata_pmp.c ============================================================================== --- stable/10/sys/cam/ata/ata_pmp.c Tue Jan 7 01:40:49 2014 (r260386) +++ stable/10/sys/cam/ata/ata_pmp.c Tue Jan 7 01:51:48 2014 (r260387) @@ -293,7 +293,7 @@ pmpasync(void *callback_arg, u_int32_t c status = cam_periph_alloc(pmpregister, pmponinvalidate, pmpcleanup, pmpstart, "pmp", CAM_PERIPH_BIO, - cgd->ccb_h.path, pmpasync, + path, pmpasync, AC_FOUND_DEVICE, cgd); if (status != CAM_REQ_CMP @@ -318,13 +318,17 @@ pmpasync(void *callback_arg, u_int32_t c if (code == AC_SENT_BDR || code == AC_BUS_RESET) softc->found = 0; /* We have to reset everything. */ if (softc->state == PMP_STATE_NORMAL) { - if (softc->pm_pid == 0x37261095 || - softc->pm_pid == 0x38261095) - softc->state = PMP_STATE_PM_QUIRKS_1; - else - softc->state = PMP_STATE_PRECONFIG; - cam_periph_acquire(periph); - xpt_schedule(periph, CAM_PRIORITY_DEV); + if (cam_periph_acquire(periph) == CAM_REQ_CMP) { + if (softc->pm_pid == 0x37261095 || + softc->pm_pid == 0x38261095) + softc->state = PMP_STATE_PM_QUIRKS_1; + else + softc->state = PMP_STATE_PRECONFIG; + xpt_schedule(periph, CAM_PRIORITY_DEV); + } else { + pmprelease(periph, softc->found); + xpt_release_boot(); + } } else softc->restart = 1; break; Modified: stable/10/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/10/sys/cam/ata/ata_xpt.c Tue Jan 7 01:40:49 2014 (r260386) +++ stable/10/sys/cam/ata/ata_xpt.c Tue Jan 7 01:51:48 2014 (r260387) @@ -182,7 +182,7 @@ static struct cam_ed * static void ata_device_transport(struct cam_path *path); static void ata_get_transfer_settings(struct ccb_trans_settings *cts); static void ata_set_transfer_settings(struct ccb_trans_settings *cts, - struct cam_ed *device, + struct cam_path *path, int async_update); static void ata_dev_async(u_int32_t async_code, struct cam_eb *bus, @@ -249,6 +249,7 @@ proberegister(struct cam_periph *periph, return (status); } CAM_DEBUG(periph->path, CAM_DEBUG_PROBE, ("Probe started\n")); + ata_device_transport(periph->path); probeschedule(periph); return(CAM_REQ_CMP); } @@ -1320,6 +1321,7 @@ ata_scan_bus(struct cam_periph *periph, struct cam_path *path; ata_scan_bus_info *scan_info; union ccb *work_ccb, *reset_ccb; + struct mtx *mtx; cam_status status; CAM_DEBUG(request_ccb->ccb_h.path, CAM_DEBUG_TRACE, @@ -1395,11 +1397,14 @@ ata_scan_bus(struct cam_periph *periph, xpt_done(request_ccb); break; } + mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); goto scan_next; case XPT_SCAN_LUN: work_ccb = request_ccb; /* Reuse the same CCB to query if a device was really found */ scan_info = (ata_scan_bus_info *)work_ccb->ccb_h.ppriv_ptr0; + mtx = xpt_path_mtx(scan_info->request_ccb->ccb_h.path); + mtx_lock(mtx); /* If there is PMP... */ if ((scan_info->cpi->hba_inquiry & PI_SATAPM) && (scan_info->counter == scan_info->cpi->max_target)) { @@ -1428,6 +1433,7 @@ ata_scan_bus(struct cam_periph *periph, ((scan_info->cpi->hba_inquiry & PI_SATAPM) ? 0 : scan_info->cpi->max_target)) { done: + mtx_unlock(mtx); xpt_free_ccb(work_ccb); xpt_free_ccb((union ccb *)scan_info->cpi); request_ccb = scan_info->request_ccb; @@ -1444,6 +1450,8 @@ scan_next: scan_info->request_ccb->ccb_h.path_id, scan_info->counter, 0); if (status != CAM_REQ_CMP) { + if (request_ccb->ccb_h.func_code == XPT_SCAN_LUN) + mtx_unlock(mtx); printf("xpt_scan_bus: xpt_create_path failed" " with status %#x, bus scan halted\n", status); @@ -1459,9 +1467,15 @@ scan_next: scan_info->request_ccb->ccb_h.pinfo.priority); work_ccb->ccb_h.func_code = XPT_SCAN_LUN; work_ccb->ccb_h.cbfcnp = ata_scan_bus; + work_ccb->ccb_h.flags |= CAM_UNLOCKED; work_ccb->ccb_h.ppriv_ptr0 = scan_info; work_ccb->crcn.flags = scan_info->request_ccb->crcn.flags; + mtx_unlock(mtx); + if (request_ccb->ccb_h.func_code == XPT_SCAN_LUN) + mtx = NULL; xpt_action(work_ccb); + if (mtx != NULL) + mtx_lock(mtx); break; default: break; @@ -1476,6 +1490,7 @@ ata_scan_lun(struct cam_periph *periph, cam_status status; struct cam_path *new_path; struct cam_periph *old_periph; + int lock; CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_scan_lun\n")); @@ -1510,10 +1525,14 @@ ata_scan_lun(struct cam_periph *periph, } xpt_setup_ccb(&request_ccb->ccb_h, new_path, CAM_PRIORITY_XPT); request_ccb->ccb_h.cbfcnp = xptscandone; + request_ccb->ccb_h.flags |= CAM_UNLOCKED; request_ccb->ccb_h.func_code = XPT_SCAN_LUN; request_ccb->crcn.flags = flags; } + lock = (xpt_path_owned(path) == 0); + if (lock) + xpt_path_lock(path); if ((old_periph = cam_periph_find(path, "aprobe")) != NULL) { if ((old_periph->flags & CAM_PERIPH_INVALID) == 0) { probe_softc *softc; @@ -1540,6 +1559,8 @@ ata_scan_lun(struct cam_periph *periph, xpt_done(request_ccb); } } + if (lock) + xpt_path_unlock(path); } static void @@ -1553,7 +1574,6 @@ xptscandone(struct cam_periph *periph, u static struct cam_ed * ata_alloc_device(struct cam_eb *bus, struct cam_et *target, lun_id_t lun_id) { - struct cam_path path; struct ata_quirk_entry *quirk; struct cam_ed *device; @@ -1574,22 +1594,6 @@ ata_alloc_device(struct cam_eb *bus, str device->queue_flags = 0; device->serial_num = NULL; device->serial_num_len = 0; - - /* - * XXX should be limited by number of CCBs this bus can - * do. - */ - bus->sim->max_ccbs += device->ccbq.devq_openings; - if (lun_id != CAM_LUN_WILDCARD) { - xpt_compile_path(&path, - NULL, - bus->path_id, - target->target_id, - lun_id); - ata_device_transport(&path); - xpt_release_path(&path); - } - return (device); } @@ -1712,15 +1716,8 @@ ata_dev_advinfo(union ccb *start_ccb) start_ccb->ccb_h.status = CAM_REQ_CMP; if (cdai->flags & CDAI_FLAG_STORE) { - int owned; - - owned = mtx_owned(start_ccb->ccb_h.path->bus->sim->mtx); - if (owned == 0) - mtx_lock(start_ccb->ccb_h.path->bus->sim->mtx); xpt_async(AC_ADVINFO_CHANGED, start_ccb->ccb_h.path, (void *)(uintptr_t)cdai->buftype); - if (owned == 0) - mtx_unlock(start_ccb->ccb_h.path->bus->sim->mtx); } } @@ -1732,7 +1729,7 @@ ata_action(union ccb *start_ccb) case XPT_SET_TRAN_SETTINGS: { ata_set_transfer_settings(&start_ccb->cts, - start_ccb->ccb_h.path->device, + start_ccb->ccb_h.path, /*async_update*/FALSE); break; } @@ -1791,11 +1788,9 @@ ata_get_transfer_settings(struct ccb_tra struct ccb_trans_settings_ata *ata; struct ccb_trans_settings_scsi *scsi; struct cam_ed *device; - struct cam_sim *sim; device = cts->ccb_h.path->device; - sim = cts->ccb_h.path->bus->sim; - (*(sim->sim_action))(sim, (union ccb *)cts); + xpt_action_default((union ccb *)cts); if (cts->protocol == PROTO_UNKNOWN || cts->protocol == PROTO_UNSPECIFIED) { @@ -1832,17 +1827,17 @@ ata_get_transfer_settings(struct ccb_tra } static void -ata_set_transfer_settings(struct ccb_trans_settings *cts, struct cam_ed *device, +ata_set_transfer_settings(struct ccb_trans_settings *cts, struct cam_path *path, int async_update) { struct ccb_pathinq cpi; struct ccb_trans_settings_ata *ata; struct ccb_trans_settings_scsi *scsi; - struct cam_sim *sim; struct ata_params *ident_data; struct scsi_inquiry_data *inq_data; + struct cam_ed *device; - if (device == NULL) { + if (path == NULL || (device = path->device) == NULL) { cts->ccb_h.status = CAM_PATH_INVALID; xpt_done((union ccb *)cts); return; @@ -1859,14 +1854,14 @@ ata_set_transfer_settings(struct ccb_tra cts->protocol_version = device->protocol_version; if (cts->protocol != device->protocol) { - xpt_print(cts->ccb_h.path, "Uninitialized Protocol %x:%x?\n", + xpt_print(path, "Uninitialized Protocol %x:%x?\n", cts->protocol, device->protocol); cts->protocol = device->protocol; } if (cts->protocol_version > device->protocol_version) { if (bootverbose) { - xpt_print(cts->ccb_h.path, "Down reving Protocol " + xpt_print(path, "Down reving Protocol " "Version from %d to %d?\n", cts->protocol_version, device->protocol_version); } @@ -1884,21 +1879,20 @@ ata_set_transfer_settings(struct ccb_tra cts->transport_version = device->transport_version; if (cts->transport != device->transport) { - xpt_print(cts->ccb_h.path, "Uninitialized Transport %x:%x?\n", + xpt_print(path, "Uninitialized Transport %x:%x?\n", cts->transport, device->transport); cts->transport = device->transport; } if (cts->transport_version > device->transport_version) { if (bootverbose) { - xpt_print(cts->ccb_h.path, "Down reving Transport " + xpt_print(path, "Down reving Transport " "Version from %d to %d?\n", cts->transport_version, device->transport_version); } cts->transport_version = device->transport_version; } - sim = cts->ccb_h.path->bus->sim; ident_data = &device->ident_data; inq_data = &device->inq_data; if (cts->protocol == PROTO_ATA) @@ -1909,7 +1903,7 @@ ata_set_transfer_settings(struct ccb_tra scsi = &cts->proto_specific.scsi; else scsi = NULL; - xpt_setup_ccb(&cpi.ccb_h, cts->ccb_h.path, CAM_PRIORITY_NONE); + xpt_setup_ccb(&cpi.ccb_h, path, CAM_PRIORITY_NONE); cpi.ccb_h.func_code = XPT_PATH_INQ; xpt_action((union ccb *)&cpi); @@ -1953,11 +1947,11 @@ ata_set_transfer_settings(struct ccb_tra device->tag_delay_count = CAM_TAG_DELAY_COUNT; device->flags |= CAM_DEV_TAG_AFTER_COUNT; } else if (nowt && !newt) - xpt_stop_tags(cts->ccb_h.path); + xpt_stop_tags(path); } if (async_update == FALSE) - (*(sim->sim_action))(sim, (union ccb *)cts); + xpt_action_default((union ccb *)cts); } /* @@ -2014,10 +2008,14 @@ ata_dev_async(u_int32_t async_code, stru xpt_release_device(device); } else if (async_code == AC_TRANSFER_NEG) { struct ccb_trans_settings *settings; + struct cam_path path; settings = (struct ccb_trans_settings *)async_arg; - ata_set_transfer_settings(settings, device, + xpt_compile_path(&path, NULL, bus->path_id, target->target_id, + device->lun_id); + ata_set_transfer_settings(settings, &path, /*async_update*/TRUE); + xpt_release_path(&path); } } @@ -2030,7 +2028,7 @@ ata_announce_periph(struct cam_periph *p u_int speed; u_int mb; - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NORMAL); cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS; Modified: stable/10/sys/cam/cam_ccb.h ============================================================================== --- stable/10/sys/cam/cam_ccb.h Tue Jan 7 01:40:49 2014 (r260386) +++ stable/10/sys/cam/cam_ccb.h Tue Jan 7 01:51:48 2014 (r260387) @@ -104,7 +104,9 @@ typedef enum { CAM_SEND_SENSE = 0x08000000,/* Send sense data with status */ CAM_TERM_IO = 0x10000000,/* Terminate I/O Message sup. */ CAM_DISCONNECT = 0x20000000,/* Disconnects are mandatory */ - CAM_SEND_STATUS = 0x40000000 /* Send status after data phase */ + CAM_SEND_STATUS = 0x40000000,/* Send status after data phase */ + + CAM_UNLOCKED = 0x80000000 /* Call callback without lock. */ } ccb_flags; typedef enum { @@ -151,6 +153,9 @@ typedef enum { /* Device statistics (error counts, etc.) */ XPT_DEV_ADVINFO = 0x0e, /* Get/Set Device advanced information */ + XPT_ASYNC = 0x0f | XPT_FC_QUEUED | XPT_FC_USER_CCB + | XPT_FC_XPT_ONLY, + /* Asynchronous event */ /* SCSI Control Functions: 0x10->0x1F */ XPT_ABORT = 0x10, /* Abort the specified CCB */ @@ -1154,6 +1159,16 @@ struct ccb_dev_advinfo { }; /* + * CCB for sending async events + */ +struct ccb_async { + struct ccb_hdr ccb_h; + uint32_t async_code; + off_t async_arg_size; + void *async_arg_ptr; +}; + +/* * Union of all CCB types for kernel space allocation. This union should * never be used for manipulating CCBs - its only use is for the allocation * and deallocation of raw CCB space and is the return type of xpt_ccb_alloc @@ -1192,6 +1207,7 @@ union ccb { struct ccb_debug cdbg; struct ccb_ataio ataio; struct ccb_dev_advinfo cdai; + struct ccb_async casync; }; __BEGIN_DECLS Modified: stable/10/sys/cam/cam_periph.c ============================================================================== --- stable/10/sys/cam/cam_periph.c Tue Jan 7 01:40:49 2014 (r260386) +++ stable/10/sys/cam/cam_periph.c Tue Jan 7 01:51:48 2014 (r260387) @@ -196,12 +196,12 @@ cam_periph_alloc(periph_ctor_t *periph_c path_id = xpt_path_path_id(path); target_id = xpt_path_target_id(path); lun_id = xpt_path_lun_id(path); - cam_init_pinfo(&periph->pinfo); periph->periph_start = periph_start; periph->periph_dtor = periph_dtor; periph->periph_oninval = periph_oninvalidate; periph->type = type; periph->periph_name = name; + periph->scheduled_priority = CAM_PRIORITY_NONE; periph->immediate_priority = CAM_PRIORITY_NONE; periph->refcount = 1; /* Dropped by invalidation. */ periph->sim = sim; @@ -298,7 +298,7 @@ cam_periph_find(struct cam_path *path, c TAILQ_FOREACH(periph, &(*p_drv)->units, unit_links) { if (xpt_path_comp(periph->path, path) == 0) { xpt_unlock_buses(); - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); return(periph); } } @@ -379,7 +379,7 @@ void cam_periph_release_locked_buses(struct cam_periph *periph) { - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); KASSERT(periph->refcount >= 1, ("periph->refcount >= 1")); if (--periph->refcount == 0) camperiphfree(periph); @@ -400,16 +400,16 @@ cam_periph_release_locked(struct cam_per void cam_periph_release(struct cam_periph *periph) { - struct cam_sim *sim; + struct mtx *mtx; if (periph == NULL) return; - sim = periph->sim; - mtx_assert(sim->mtx, MA_NOTOWNED); - mtx_lock(sim->mtx); + cam_periph_assert(periph, MA_NOTOWNED); + mtx = cam_periph_mtx(periph); + mtx_lock(mtx); cam_periph_release_locked(periph); - mtx_unlock(sim->mtx); + mtx_unlock(mtx); } int @@ -427,10 +427,10 @@ cam_periph_hold(struct cam_periph *perip if (cam_periph_acquire(periph) != CAM_REQ_CMP) return (ENXIO); - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); while ((periph->flags & CAM_PERIPH_LOCKED) != 0) { periph->flags |= CAM_PERIPH_LOCK_WANTED; - if ((error = mtx_sleep(periph, periph->sim->mtx, priority, + if ((error = cam_periph_sleep(periph, periph, priority, "caplck", 0)) != 0) { cam_periph_release_locked(periph); return (error); @@ -449,7 +449,7 @@ void cam_periph_unhold(struct cam_periph *periph) { - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); periph->flags &= ~CAM_PERIPH_LOCKED; if ((periph->flags & CAM_PERIPH_LOCK_WANTED) != 0) { @@ -577,7 +577,7 @@ void cam_periph_invalidate(struct cam_periph *periph) { - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); /* * We only call this routine the first time a peripheral is * invalidated. @@ -600,7 +600,9 @@ camperiphfree(struct cam_periph *periph) { struct periph_driver **p_drv; - mtx_assert(periph->sim->mtx, MA_OWNED); + cam_periph_assert(periph, MA_OWNED); + KASSERT(periph->periph_allocating == 0, ("%s%d: freed while allocating", + periph->periph_name, periph->unit_number)); for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { if (strcmp((*p_drv)->driver_name, periph->periph_name) == 0) break; @@ -947,40 +949,14 @@ cam_periph_unmapmem(union ccb *ccb, stru PRELE(curproc); } -union ccb * -cam_periph_getccb(struct cam_periph *periph, u_int32_t priority) -{ - struct ccb_hdr *ccb_h; - - mtx_assert(periph->sim->mtx, MA_OWNED); - CAM_DEBUG(periph->path, CAM_DEBUG_TRACE, ("entering cdgetccb\n")); - - while (SLIST_FIRST(&periph->ccb_list) == NULL) { - if (periph->immediate_priority > priority) - periph->immediate_priority = priority; - xpt_schedule(periph, priority); - if ((SLIST_FIRST(&periph->ccb_list) != NULL) - && (SLIST_FIRST(&periph->ccb_list)->pinfo.priority == priority)) - break; - mtx_assert(periph->sim->mtx, MA_OWNED); - mtx_sleep(&periph->ccb_list, periph->sim->mtx, PRIBIO, "cgticb", - 0); - } - - ccb_h = SLIST_FIRST(&periph->ccb_list); - SLIST_REMOVE_HEAD(&periph->ccb_list, periph_links.sle); - return ((union ccb *)ccb_h); -} - void cam_periph_ccbwait(union ccb *ccb) { - struct cam_sim *sim; - sim = xpt_path_sim(ccb->ccb_h.path); if ((ccb->ccb_h.pinfo.index != CAM_UNQUEUED_INDEX) || ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_INPROG)) - mtx_sleep(&ccb->ccb_h.cbfcnp, sim->mtx, PRIBIO, "cbwait", 0); + xpt_path_sleep(ccb->ccb_h.path, &ccb->ccb_h.cbfcnp, PRIBIO, + "cbwait", 0); } int @@ -1045,6 +1021,14 @@ cam_periph_ioctl(struct cam_periph *peri return(error); } +static void +cam_periph_done(struct cam_periph *periph, union ccb *done_ccb) +{ + + /* Caller will release the CCB */ + wakeup(&done_ccb->ccb_h.cbfcnp); +} + int cam_periph_runccb(union ccb *ccb, int (*error_routine)(union ccb *ccb, @@ -1053,12 +1037,9 @@ cam_periph_runccb(union ccb *ccb, cam_flags camflags, u_int32_t sense_flags, struct devstat *ds) { - struct cam_sim *sim; int error; - error = 0; - sim = xpt_path_sim(ccb->ccb_h.path); - mtx_assert(sim->mtx, MA_OWNED); + xpt_path_assert(ccb->ccb_h.path, MA_OWNED); /* * If the user has supplied a stats structure, and if we understand @@ -1068,6 +1049,7 @@ cam_periph_runccb(union ccb *ccb, ccb->ccb_h.func_code == XPT_ATA_IO)) devstat_start_transaction(ds, NULL); + ccb->ccb_h.cbfcnp = cam_periph_done; xpt_action(ccb); do { @@ -1786,9 +1768,11 @@ cam_periph_error(union ccb *ccb, cam_fla scan_ccb->ccb_h.func_code = XPT_SCAN_TGT; scan_ccb->crcn.flags = 0; xpt_rescan(scan_ccb); - } else + } else { xpt_print(newpath, "Can't allocate CCB to rescan target\n"); + xpt_free_path(newpath); + } } } Modified: stable/10/sys/cam/cam_periph.h ============================================================================== --- stable/10/sys/cam/cam_periph.h Tue Jan 7 01:40:49 2014 (r260386) +++ stable/10/sys/cam/cam_periph.h Tue Jan 7 01:51:48 2014 (r260387) @@ -35,6 +35,7 @@ #include #ifdef _KERNEL +#include #include @@ -103,7 +104,6 @@ typedef cam_status periph_ctor_t (struct typedef void periph_oninv_t (struct cam_periph *periph); typedef void periph_dtor_t (struct cam_periph *periph); struct cam_periph { - cam_pinfo pinfo; periph_start_t *periph_start; periph_oninv_t *periph_oninval; periph_dtor_t *periph_dtor; @@ -120,15 +120,20 @@ struct cam_periph { #define CAM_PERIPH_INVALID 0x08 #define CAM_PERIPH_NEW_DEV_FOUND 0x10 #define CAM_PERIPH_RECOVERY_INPROG 0x20 +#define CAM_PERIPH_RUN_TASK 0x40 #define CAM_PERIPH_FREE 0x80 #define CAM_PERIPH_ANNOUNCED 0x100 - u_int32_t immediate_priority; + uint32_t scheduled_priority; + uint32_t immediate_priority; + int periph_allocating; + int periph_allocated; u_int32_t refcount; SLIST_HEAD(, ccb_hdr) ccb_list; /* For "immediate" requests */ SLIST_ENTRY(cam_periph) periph_links; TAILQ_ENTRY(cam_periph) unit_links; ac_callback_t *deferred_callback; ac_code deferred_ac; + struct task periph_run_task; }; #define CAM_PERIPH_MAXMAPS 2 @@ -185,30 +190,26 @@ void cam_periph_freeze_after_event(stru int cam_periph_error(union ccb *ccb, cam_flags camflags, u_int32_t sense_flags, union ccb *save_ccb); -static __inline void -cam_periph_lock(struct cam_periph *periph) +static __inline struct mtx * +cam_periph_mtx(struct cam_periph *periph) { - mtx_lock(periph->sim->mtx); + return (xpt_path_mtx(periph->path)); } -static __inline void -cam_periph_unlock(struct cam_periph *periph) -{ - mtx_unlock(periph->sim->mtx); -} +#define cam_periph_owned(periph) \ + mtx_owned(xpt_path_mtx((periph)->path)) -static __inline int -cam_periph_owned(struct cam_periph *periph) -{ - return (mtx_owned(periph->sim->mtx)); -} +#define cam_periph_lock(periph) \ + mtx_lock(xpt_path_mtx((periph)->path)) -static __inline int -cam_periph_sleep(struct cam_periph *periph, void *chan, int priority, - const char *wmesg, int timo) -{ - return (msleep(chan, periph->sim->mtx, priority, wmesg, timo)); -} +#define cam_periph_unlock(periph) \ + mtx_unlock(xpt_path_mtx((periph)->path)) + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 05:35:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 36B19480; Tue, 7 Jan 2014 05:35:11 +0000 (UTC) Received: from mail-we0-x22b.google.com (mail-we0-x22b.google.com [IPv6:2a00:1450: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 5771F1279; Tue, 7 Jan 2014 05:35:10 +0000 (UTC) Received: by mail-we0-f171.google.com with SMTP id q58so16714192wes.16 for ; Mon, 06 Jan 2014 21:35:08 -0800 (PST) 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=WMlFdz2zcvY52lOfOOUI+ueXrlFtEdS/JPM8IAVODJQ=; b=U1Yg8E8d8F6sszkhE3mYqtiRcDuRP4VM/KTDCj38Ob94va/BnoeUydoiIUMlLLHFJH KnjAWIJsc6dPpJnhVtvRVyWpdJsWfY3t9XIO4vaMeODCw50X9zfgFJ7z6E5ohJstTIas k0WOiY1F4JPCr6KagoUHXlfktwGPnXzPH6yme4GV7GhyItY/any4ebjDXC4Xv4JXPbpb XWeXk3cecZecmETZAmy633g+i9iK8CiBtIhrbx/btygMkz0uzUODzidJrHHLVT/kqZVz DY5F81x2l472lRg2zEaFLk325LOmRnC0PaY6Kg3UNagNe0YWnh7k6t7Tp0SyHpCsnSeP jEnw== MIME-Version: 1.0 X-Received: by 10.180.207.239 with SMTP id lz15mr15197900wic.28.1389072908560; Mon, 06 Jan 2014 21:35:08 -0800 (PST) Received: by 10.217.117.197 with HTTP; Mon, 6 Jan 2014 21:35:08 -0800 (PST) Received: by 10.217.117.197 with HTTP; Mon, 6 Jan 2014 21:35:08 -0800 (PST) In-Reply-To: <201401062236.s06MaKP6077348@svn.freebsd.org> References: <201401062236.s06MaKP6077348@svn.freebsd.org> Date: Tue, 7 Jan 2014 09:35:08 +0400 Message-ID: Subject: Re: svn commit: r260379 - head/sys/net From: Sergey Kandaurov To: "Alexander V. Chernikov" Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 05:35:11 -0000 07.01.2014 2:36 =D0=CF=CC=D8=DA=CF=D7=C1=D4=C5=CC=D8 "Alexander V. Cherniko= v" =CE=C1=D0=C9=D3=C1=CC: > > Author: melifaro > Date: Mon Jan 6 22:36:20 2014 > New Revision: 260379 > URL: http://svnweb.freebsd.org/changeset/base/260379 > > Log: > Partially fix IPv4 interface routes deletion in RADIX_MPATH. > > Noticed by: Nikolay Denev > MFC after: 1 month > > Modified: > head/sys/net/radix_mpath.c > head/sys/net/route.c > > Modified: head/sys/net/radix_mpath.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/net/radix_mpath.c Mon Jan 6 19:14:46 2014 (r260378) > +++ head/sys/net/radix_mpath.c Mon Jan 6 22:36:20 2014 (r260379) > @@ -112,11 +112,16 @@ rt_mpath_matchgate(struct rtentry *rt, s > if (rt->rt_gateway->sa_family =3D=3D AF_LINK) { > if (!memcmp(rt->rt_ifa->ifa_addr, gate, gate->sa_len)) > break; > - } else { > - if (rt->rt_gateway->sa_len =3D=3D gate->sa_len && > - !memcmp(rt->rt_gateway, gate, gate->sa_len)) > - break; > } > + > + /* > + * Check for other options: > + * 1) Routes with 'real' IPv4/IPv6 gateway > + * 2) Loopback host routes (another AF_LINK/sockadd_dl check) sockaddr_dl From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 09:52:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 1BD086E7; Tue, 7 Jan 2014 09:52:27 +0000 (UTC) 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 07D5C14BC; Tue, 7 Jan 2014 09:52: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 s079qQqT038811; Tue, 7 Jan 2014 09:52:26 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s079qQ7n038810; Tue, 7 Jan 2014 09:52:26 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401070952.s079qQ7n038810@svn.freebsd.org> From: Hans Petter Selasky Date: Tue, 7 Jan 2014 09:52:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260388 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 09:52:27 -0000 Author: hselasky Date: Tue Jan 7 09:52:26 2014 New Revision: 260388 URL: http://svnweb.freebsd.org/changeset/base/260388 Log: Check the XHCI event ring regardless of the XHCI status register value. The "Intel Lynx Point" XHCI controller found in the MBP2013 has been observed to not always set the event interrupt bit while there are events to consume in the event ring. MFC after: 1 week Tested by: Huang Wen Hui Modified: head/sys/dev/usb/controller/xhci.c Modified: head/sys/dev/usb/controller/xhci.c ============================================================================== --- head/sys/dev/usb/controller/xhci.c Tue Jan 7 01:51:48 2014 (r260387) +++ head/sys/dev/usb/controller/xhci.c Tue Jan 7 09:52:26 2014 (r260388) @@ -1582,8 +1582,6 @@ xhci_interrupt(struct xhci_softc *sc) USB_BUS_LOCK(&sc->sc_bus); status = XREAD4(sc, oper, XHCI_USBSTS); - if (status == 0) - goto done; /* acknowledge interrupts */ @@ -1591,10 +1589,8 @@ xhci_interrupt(struct xhci_softc *sc) DPRINTFN(16, "real interrupt (status=0x%08x)\n", status); - if (status & XHCI_STS_EINT) { - /* check for event(s) */ - xhci_interrupt_poll(sc); - } + /* check for event(s) */ + xhci_interrupt_poll(sc); if (status & (XHCI_STS_PCD | XHCI_STS_HCH | XHCI_STS_HSE | XHCI_STS_HCE)) { @@ -1618,7 +1614,6 @@ xhci_interrupt(struct xhci_softc *sc) __FUNCTION__); } } -done: USB_BUS_UNLOCK(&sc->sc_bus); } From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 11:03:58 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 28843220; Tue, 7 Jan 2014 11:03:58 +0000 (UTC) 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 147A91B20; Tue, 7 Jan 2014 11: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 s07B3vBD066358; Tue, 7 Jan 2014 11:03:57 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07B3vV7066357; Tue, 7 Jan 2014 11:03:57 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201401071103.s07B3vV7066357@svn.freebsd.org> From: Edward Tomasz Napierala Date: Tue, 7 Jan 2014 11:03:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260389 - head/sys/dev/iscsi X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 11:03:58 -0000 Author: trasz Date: Tue Jan 7 11:03:57 2014 New Revision: 260389 URL: http://svnweb.freebsd.org/changeset/base/260389 Log: Fix a rare "truncated checksums" problem, which manifested like this: WARNING: icl_pdu_check_data_digest: data digest check failed; got 0xf23b, should be 0xdb7f23b Tested by: Darcy Birkbeck MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/iscsi/icl.c Modified: head/sys/dev/iscsi/icl.c ============================================================================== --- head/sys/dev/iscsi/icl.c Tue Jan 7 09:52:26 2014 (r260388) +++ head/sys/dev/iscsi/icl.c Tue Jan 7 11:03:57 2014 (r260389) @@ -324,7 +324,7 @@ icl_pdu_check_header_digest(struct icl_p } CTASSERT(sizeof(received_digest) == ISCSI_HEADER_DIGEST_SIZE); - memcpy(&received_digest, mtod(m, void *), ISCSI_HEADER_DIGEST_SIZE); + m_copydata(m, 0, ISCSI_HEADER_DIGEST_SIZE, (void *)&received_digest); m_freem(m); *availablep -= ISCSI_HEADER_DIGEST_SIZE; @@ -482,7 +482,7 @@ icl_pdu_check_data_digest(struct icl_pdu } CTASSERT(sizeof(received_digest) == ISCSI_DATA_DIGEST_SIZE); - memcpy(&received_digest, mtod(m, void *), ISCSI_DATA_DIGEST_SIZE); + m_copydata(m, 0, ISCSI_DATA_DIGEST_SIZE, (void *)&received_digest); m_freem(m); *availablep -= ISCSI_DATA_DIGEST_SIZE; From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 11:43:52 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 76D20CAE; Tue, 7 Jan 2014 11:43:52 +0000 (UTC) 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 62B9A1F4D; Tue, 7 Jan 2014 11:43:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s07BhqvX081441; Tue, 7 Jan 2014 11:43:52 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07BhqtV081440; Tue, 7 Jan 2014 11:43:52 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401071143.s07BhqtV081440@svn.freebsd.org> From: Alexander Motin Date: Tue, 7 Jan 2014 11:43:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260390 - head/sys/fs/nfsserver X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 11:43:52 -0000 Author: mav Date: Tue Jan 7 11:43:51 2014 New Revision: 260390 URL: http://svnweb.freebsd.org/changeset/base/260390 Log: Fix off-by-one error in r260229. Coverity CID: 1148955 Modified: head/sys/fs/nfsserver/nfs_nfsdcache.c Modified: head/sys/fs/nfsserver/nfs_nfsdcache.c ============================================================================== --- head/sys/fs/nfsserver/nfs_nfsdcache.c Tue Jan 7 11:03:57 2014 (r260389) +++ head/sys/fs/nfsserver/nfs_nfsdcache.c Tue Jan 7 11:43:51 2014 (r260390) @@ -884,7 +884,7 @@ nfsrc_trimcache(u_int64_t sockref, uint3 for (i = 0; i < HISTSIZE; i++) time_histo[i] = 0; i = 0; - lastslot = NFSRVCACHE_HASHSIZE; + lastslot = NFSRVCACHE_HASHSIZE - 1; } else { force = 0; if (NFSD_MONOSEC != tcp_lasttrim) { From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 13:09:36 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 44CCAEF2; Tue, 7 Jan 2014 13:09:36 +0000 (UTC) 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 318031618; Tue, 7 Jan 2014 13:09: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 s07D9aXY011580; Tue, 7 Jan 2014 13:09:36 GMT (envelope-from loos@svn.freebsd.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07D9ZOI011579; Tue, 7 Jan 2014 13:09:35 GMT (envelope-from loos@svn.freebsd.org) Message-Id: <201401071309.s07D9ZOI011579@svn.freebsd.org> From: Luiz Otavio O Souza Date: Tue, 7 Jan 2014 13:09:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260392 - head/sys/mips/conf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 13:09:36 -0000 Author: loos Date: Tue Jan 7 13:09:35 2014 New Revision: 260392 URL: http://svnweb.freebsd.org/changeset/base/260392 Log: Fix the geom mappings for WR1043ND. The uboot mapping is only 128KiB (0x20000) and not 2MiB (0x200000). Dynamically adjust kernel and rootfs mappings based on the geom_uncompress(4) magic. This makes the built images more reliable by accepting changes on kernel size transparently and matches the images built with zrouter and freebsd-wifi-build. Tested by: gjb Approved by: adrian (mentor) Obtained from: Zrouter Modified: head/sys/mips/conf/TP-WN1043ND.hints Modified: head/sys/mips/conf/TP-WN1043ND.hints ============================================================================== --- head/sys/mips/conf/TP-WN1043ND.hints Tue Jan 7 11:51:00 2014 (r260391) +++ head/sys/mips/conf/TP-WN1043ND.hints Tue Jan 7 13:09:35 2014 (r260392) @@ -45,18 +45,18 @@ hint.ath.0.eepromaddr=0x1fff1000 hint.map.0.at="flash/spi0" hint.map.0.start=0x00000000 -hint.map.0.end=0x000200000 +hint.map.0.end=0x00020000 hint.map.0.name="uboot" hint.map.0.readonly=1 hint.map.1.at="flash/spi0" hint.map.1.start=0x00020000 -hint.map.1.end=0x00220000 +hint.map.1.end="search:0x00100000:0x10000:.!/bin/sh" hint.map.1.name="kernel" hint.map.1.readonly=1 hint.map.2.at="flash/spi0" -hint.map.2.start=0x00220000 +hint.map.2.start="search:0x00100000:0x10000:.!/bin/sh" hint.map.2.end=0x007e0000 hint.map.2.name="rootfs" hint.map.2.readonly=1 From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 14:03:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 01B6EF40; Tue, 7 Jan 2014 14:03:43 +0000 (UTC) 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 E23541A58; Tue, 7 Jan 2014 14:03: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 s07E3gvc033464; Tue, 7 Jan 2014 14:03:42 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07E3gAe033463; Tue, 7 Jan 2014 14:03:42 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201401071403.s07E3gAe033463@svn.freebsd.org> From: Attilio Rao Date: Tue, 7 Jan 2014 14:03:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260393 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 14:03:43 -0000 Author: attilio Date: Tue Jan 7 14:03:42 2014 New Revision: 260393 URL: http://svnweb.freebsd.org/changeset/base/260393 Log: Use __predict_false() on sensitive lock paths as most of the times, when PMC-soft feature is not used the check will be false. Sponsored by: EMC / Isilon storage division Submitted by: Anton Rang Modified: head/sys/sys/pmckern.h Modified: head/sys/sys/pmckern.h ============================================================================== --- head/sys/sys/pmckern.h Tue Jan 7 13:09:35 2014 (r260392) +++ head/sys/sys/pmckern.h Tue Jan 7 14:03:42 2014 (r260393) @@ -110,7 +110,7 @@ struct pmckern_soft { #ifdef PMC_FAKE_TRAPFRAME #define PMC_SOFT_CALL(pr, mo, fu, na) \ do { \ - if (pmc_##pr##_##mo##_##fu##_##na.ps_running) { \ + if (__predict_false(pmc_##pr##_##mo##_##fu##_##na.ps_running)) { \ struct pmckern_soft ks; \ register_t intr; \ intr = intr_disable(); \ @@ -135,7 +135,7 @@ do { \ */ #define PMC_SOFT_CALL_TF(pr, mo, fu, na, tf) \ do { \ - if (pmc_##pr##_##mo##_##fu##_##na.ps_running) { \ + if (__predict_false(pmc_##pr##_##mo##_##fu##_##na.ps_running)) { \ struct pmckern_soft ks; \ register_t intr; \ intr = intr_disable(); \ From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 15:59:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BBE416D8; Tue, 7 Jan 2014 15:59:34 +0000 (UTC) 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 A767013F0; Tue, 7 Jan 2014 15:59: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 s07FxYMv075255; Tue, 7 Jan 2014 15:59:34 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07FxX16075251; Tue, 7 Jan 2014 15:59:33 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401071559.s07FxX16075251@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 7 Jan 2014 15:59:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260394 - in head/sys: dev/firewire net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 15:59:34 -0000 Author: melifaro Date: Tue Jan 7 15:59:33 2014 New Revision: 260394 URL: http://svnweb.freebsd.org/changeset/base/260394 Log: Teach every SIOCGIFSTATUS provider to fill in ifs->ascii anyway. Remove old bits of data concat for 'ascii' field. Remove special SIOCGIFSTATUS handling from if.c (which Coverity yells at). Reported by: Coverity Coverity CID: 1147174 MFC after: 2 weeks Modified: head/sys/dev/firewire/if_fwe.c head/sys/net/if.c head/sys/net/if_tap.c head/sys/net/if_tun.c Modified: head/sys/dev/firewire/if_fwe.c ============================================================================== --- head/sys/dev/firewire/if_fwe.c Tue Jan 7 14:03:42 2014 (r260393) +++ head/sys/dev/firewire/if_fwe.c Tue Jan 7 15:59:33 2014 (r260394) @@ -403,7 +403,7 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, { struct fwe_softc *fwe = ((struct fwe_eth_softc *)ifp->if_softc)->fwe; struct ifstat *ifs = NULL; - int s, error, len; + int s, error; switch (cmd) { case SIOCSIFFLAGS: @@ -434,12 +434,8 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, case SIOCGIFSTATUS: s = splimp(); ifs = (struct ifstat *)data; - len = strlen(ifs->ascii); - if (len < sizeof(ifs->ascii)) - snprintf(ifs->ascii + len, - sizeof(ifs->ascii) - len, - "\tch %d dma %d\n", - fwe->stream_ch, fwe->dma_ch); + snprintf(ifs->ascii, sizeof(ifs->ascii), + "\tch %d dma %d\n", fwe->stream_ch, fwe->dma_ch); splx(s); break; case SIOCSIFCAP: Modified: head/sys/net/if.c ============================================================================== --- head/sys/net/if.c Tue Jan 7 14:03:42 2014 (r260393) +++ head/sys/net/if.c Tue Jan 7 15:59:33 2014 (r260394) @@ -2088,7 +2088,6 @@ static int ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td) { struct ifreq *ifr; - struct ifstat *ifs; int error = 0; int new_flags, temp_flags; size_t namelen, onamelen; @@ -2425,9 +2424,6 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, break; case SIOCGIFSTATUS: - ifs = (struct ifstat *)data; - ifs->ascii[0] = '\0'; - case SIOCGIFPSRCADDR: case SIOCGIFPDSTADDR: case SIOCGIFMEDIA: Modified: head/sys/net/if_tap.c ============================================================================== --- head/sys/net/if_tap.c Tue Jan 7 14:03:42 2014 (r260393) +++ head/sys/net/if_tap.c Tue Jan 7 15:59:33 2014 (r260394) @@ -636,12 +636,12 @@ tapifioctl(struct ifnet *ifp, u_long cmd case SIOCGIFSTATUS: ifs = (struct ifstat *)data; - dummy = strlen(ifs->ascii); mtx_lock(&tp->tap_mtx); - if (tp->tap_pid != 0 && dummy < sizeof(ifs->ascii)) - snprintf(ifs->ascii + dummy, - sizeof(ifs->ascii) - dummy, + if (tp->tap_pid != 0) + snprintf(ifs->ascii, sizeof(ifs->ascii), "\tOpened by PID %d\n", tp->tap_pid); + else + ifs->ascii[0] = '\0'; mtx_unlock(&tp->tap_mtx); break; Modified: head/sys/net/if_tun.c ============================================================================== --- head/sys/net/if_tun.c Tue Jan 7 14:03:42 2014 (r260393) +++ head/sys/net/if_tun.c Tue Jan 7 15:59:33 2014 (r260394) @@ -546,8 +546,10 @@ tunifioctl(struct ifnet *ifp, u_long cmd ifs = (struct ifstat *)data; mtx_lock(&tp->tun_mtx); if (tp->tun_pid) - sprintf(ifs->ascii + strlen(ifs->ascii), + snprintf(ifs->ascii, sizeof(ifs->ascii), "\tOpened by PID %d\n", tp->tun_pid); + else + ifs->ascii[0] = '\0'; mtx_unlock(&tp->tun_mtx); break; case SIOCSIFADDR: From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 16:01:22 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AF6749C5; Tue, 7 Jan 2014 16:01:22 +0000 (UTC) Received: from mail.ipfw.ru (mail.ipfw.ru [IPv6:2a01:4f8:120:6141::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 72B191440; Tue, 7 Jan 2014 16:01:22 +0000 (UTC) Received: from v6.mpls.in ([2a02:978:2::5] helo=ws.su29.net) by mail.ipfw.ru with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76 (FreeBSD)) (envelope-from ) id 1W0VGI-000LnX-QO; Tue, 07 Jan 2014 15:55:58 +0400 Message-ID: <52CC24B6.2050009@FreeBSD.org> Date: Tue, 07 Jan 2014 20:00:54 +0400 From: "Alexander V. Chernikov" User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130728 Thunderbird/17.0.7 MIME-Version: 1.0 To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r260394 - in head/sys: dev/firewire net References: <201401071559.s07FxX16075251@svn.freebsd.org> In-Reply-To: <201401071559.s07FxX16075251@svn.freebsd.org> X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 16:01:22 -0000 On 07.01.2014 19:59, Alexander V. Chernikov wrote: > Author: melifaro > Date: Tue Jan 7 15:59:33 2014 > New Revision: 260394 > URL: http://svnweb.freebsd.org/changeset/base/260394 > > Log: > Teach every SIOCGIFSTATUS provider to fill in ifs->ascii anyway. > Remove old bits of data concat for 'ascii' field. > Remove special SIOCGIFSTATUS handling from if.c (which Coverity yells at). > > Reported by: Coverity > Coverity CID: 1147174 Actually this is CID 1017861. > MFC after: 2 weeks > > Modified: > head/sys/dev/firewire/if_fwe.c > head/sys/net/if.c > head/sys/net/if_tap.c > head/sys/net/if_tun.c > > Modified: head/sys/dev/firewire/if_fwe.c > ============================================================================== > --- head/sys/dev/firewire/if_fwe.c Tue Jan 7 14:03:42 2014 (r260393) > +++ head/sys/dev/firewire/if_fwe.c Tue Jan 7 15:59:33 2014 (r260394) > @@ -403,7 +403,7 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, > { > struct fwe_softc *fwe = ((struct fwe_eth_softc *)ifp->if_softc)->fwe; > struct ifstat *ifs = NULL; > - int s, error, len; > + int s, error; > > switch (cmd) { > case SIOCSIFFLAGS: > @@ -434,12 +434,8 @@ fwe_ioctl(struct ifnet *ifp, u_long cmd, > case SIOCGIFSTATUS: > s = splimp(); > ifs = (struct ifstat *)data; > - len = strlen(ifs->ascii); > - if (len < sizeof(ifs->ascii)) > - snprintf(ifs->ascii + len, > - sizeof(ifs->ascii) - len, > - "\tch %d dma %d\n", > - fwe->stream_ch, fwe->dma_ch); > + snprintf(ifs->ascii, sizeof(ifs->ascii), > + "\tch %d dma %d\n", fwe->stream_ch, fwe->dma_ch); > splx(s); > break; > case SIOCSIFCAP: > > Modified: head/sys/net/if.c > ============================================================================== > --- head/sys/net/if.c Tue Jan 7 14:03:42 2014 (r260393) > +++ head/sys/net/if.c Tue Jan 7 15:59:33 2014 (r260394) > @@ -2088,7 +2088,6 @@ static int > ifhwioctl(u_long cmd, struct ifnet *ifp, caddr_t data, struct thread *td) > { > struct ifreq *ifr; > - struct ifstat *ifs; > int error = 0; > int new_flags, temp_flags; > size_t namelen, onamelen; > @@ -2425,9 +2424,6 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, > break; > > case SIOCGIFSTATUS: > - ifs = (struct ifstat *)data; > - ifs->ascii[0] = '\0'; > - > case SIOCGIFPSRCADDR: > case SIOCGIFPDSTADDR: > case SIOCGIFMEDIA: > > Modified: head/sys/net/if_tap.c > ============================================================================== > --- head/sys/net/if_tap.c Tue Jan 7 14:03:42 2014 (r260393) > +++ head/sys/net/if_tap.c Tue Jan 7 15:59:33 2014 (r260394) > @@ -636,12 +636,12 @@ tapifioctl(struct ifnet *ifp, u_long cmd > > case SIOCGIFSTATUS: > ifs = (struct ifstat *)data; > - dummy = strlen(ifs->ascii); > mtx_lock(&tp->tap_mtx); > - if (tp->tap_pid != 0 && dummy < sizeof(ifs->ascii)) > - snprintf(ifs->ascii + dummy, > - sizeof(ifs->ascii) - dummy, > + if (tp->tap_pid != 0) > + snprintf(ifs->ascii, sizeof(ifs->ascii), > "\tOpened by PID %d\n", tp->tap_pid); > + else > + ifs->ascii[0] = '\0'; > mtx_unlock(&tp->tap_mtx); > break; > > > Modified: head/sys/net/if_tun.c > ============================================================================== > --- head/sys/net/if_tun.c Tue Jan 7 14:03:42 2014 (r260393) > +++ head/sys/net/if_tun.c Tue Jan 7 15:59:33 2014 (r260394) > @@ -546,8 +546,10 @@ tunifioctl(struct ifnet *ifp, u_long cmd > ifs = (struct ifstat *)data; > mtx_lock(&tp->tun_mtx); > if (tp->tun_pid) > - sprintf(ifs->ascii + strlen(ifs->ascii), > + snprintf(ifs->ascii, sizeof(ifs->ascii), > "\tOpened by PID %d\n", tp->tun_pid); > + else > + ifs->ascii[0] = '\0'; > mtx_unlock(&tp->tun_mtx); > break; > case SIOCSIFADDR: > From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 18:32:32 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C89EE28E; Tue, 7 Jan 2014 18:32:32 +0000 (UTC) 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 B2926120E; Tue, 7 Jan 2014 18:32: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 s07IWWIX035774; Tue, 7 Jan 2014 18:32:32 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07IWVgt035768; Tue, 7 Jan 2014 18:32:32 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401071832.s07IWVgt035768@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Tue, 7 Jan 2014 18:32:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260395 - in stable/10/contrib/gcc: . config X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 18:32:32 -0000 Author: pfg Date: Tue Jan 7 18:32:31 2014 New Revision: 260395 URL: http://svnweb.freebsd.org/changeset/base/260395 Log: MFC r259841 gcc: Add ability to generate DWARF pubtypes section if DEBUG_PUBTYPES_SECTION is defined. Obtained from: gcc 4.3 (rev. 118826; GPLv2) Modified: stable/10/contrib/gcc/ChangeLog.gcc43 stable/10/contrib/gcc/config/darwin.c stable/10/contrib/gcc/config/darwin.h stable/10/contrib/gcc/dwarf2out.c Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/gcc/ChangeLog.gcc43 ============================================================================== --- stable/10/contrib/gcc/ChangeLog.gcc43 Tue Jan 7 15:59:33 2014 (r260394) +++ stable/10/contrib/gcc/ChangeLog.gcc43 Tue Jan 7 18:32:31 2014 (r260395) @@ -555,6 +555,37 @@ (override_options): Add entries for Core2. (ix86_issue_rate): Add case for Core2. +2006-11-14 Caroline Tice (r118826) + + * dwarf2out.c (debug_pubtypes_section): New static global variable. + (pubname_entry): Add DEF_VEC_O and DEF_VEC_ALLOC_O statements for + this type. + (pubname_table): Redefine as a vector. + (pubtype_table): New static global variable, defined as a vector. + (pubname_table_allocated): Remove static global variable. + (pubname_table_in_use): Remove static global variable. + (PUBNAME_TABLE_INCREMENT): Remove constant. + (size_of_pubnames): Add parameter to deal with either pubnames or + pubtypes, and change code to deal with table being a vector. + (add_pubname): Change to deal with table being a vector. + (add_pubtype): New function. + (output_pubnames): Add parameter to deal with either pubnames or + pubtypes, and change code to deal with table being a vector. + (gen_array_type_die): Add call to add_pubtype. + (gen_enumeration_type_die): Add call to add_pubtype. + (gen_struct_or_union_type_die): Add call to add_pubtype. + (gen_subroutine_type_die): Add call to add_pubtype. + (gen_typedef_die): Add call to add_pubtype. + (dwarf2out_init): Add code to initialize pubname_table and + pubtype_table vectors; also initialize debug_pubtypes_section. + (prune_unused_types): Change to deal with pubnames being a vector. + (dwarf2out_finish): Change to deal with pubnames being a vector; add + pubnames table to call to output_pubnames; Add code to output pubtypes + table if DEBUG_PUBTYPES_SECTION is defined. + * config/darwin.c (darwin_file_start): Add DEBUG_PUBTYPES_SECTION to + debugnames. + * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable. + 2006-11-07 Eric Christopher (r118576) * libgcc2.c (__bswapdi2): Rename from bswapDI2. Modified: stable/10/contrib/gcc/config/darwin.c ============================================================================== --- stable/10/contrib/gcc/config/darwin.c Tue Jan 7 15:59:33 2014 (r260394) +++ stable/10/contrib/gcc/config/darwin.c Tue Jan 7 18:32:31 2014 (r260395) @@ -1517,6 +1517,7 @@ darwin_file_start (void) DEBUG_LINE_SECTION, DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION, + DEBUG_PUBTYPES_SECTION, DEBUG_STR_SECTION, DEBUG_RANGES_SECTION }; Modified: stable/10/contrib/gcc/config/darwin.h ============================================================================== --- stable/10/contrib/gcc/config/darwin.h Tue Jan 7 15:59:33 2014 (r260394) +++ stable/10/contrib/gcc/config/darwin.h Tue Jan 7 18:32:31 2014 (r260395) @@ -401,6 +401,7 @@ extern GTY(()) int darwin_ms_struct; #define DEBUG_LINE_SECTION "__DWARF,__debug_line,regular,debug" #define DEBUG_LOC_SECTION "__DWARF,__debug_loc,regular,debug" #define DEBUG_PUBNAMES_SECTION "__DWARF,__debug_pubnames,regular,debug" +#define DEBUG_PUBTYPES_SECTION "__DWARF,__debug_pubtypes,regular,debug" #define DEBUG_STR_SECTION "__DWARF,__debug_str,regular,debug" #define DEBUG_RANGES_SECTION "__DWARF,__debug_ranges,regular,debug" Modified: stable/10/contrib/gcc/dwarf2out.c ============================================================================== --- stable/10/contrib/gcc/dwarf2out.c Tue Jan 7 15:59:33 2014 (r260394) +++ stable/10/contrib/gcc/dwarf2out.c Tue Jan 7 18:32:31 2014 (r260395) @@ -156,6 +156,7 @@ static GTY(()) section *debug_macinfo_se static GTY(()) section *debug_line_section; static GTY(()) section *debug_loc_section; static GTY(()) section *debug_pubnames_section; +static GTY(()) section *debug_pubtypes_section; static GTY(()) section *debug_str_section; static GTY(()) section *debug_ranges_section; static GTY(()) section *debug_frame_section; @@ -3759,6 +3760,9 @@ typedef struct pubname_struct GTY(()) } pubname_entry; +DEF_VEC_O(pubname_entry); +DEF_VEC_ALLOC_O(pubname_entry, gc); + struct dw_ranges_struct GTY(()) { int block_num; @@ -3940,17 +3944,11 @@ static GTY(()) unsigned separate_line_in /* A pointer to the base of a table that contains a list of publicly accessible names. */ -static GTY ((length ("pubname_table_allocated"))) pubname_ref pubname_table; - -/* Number of elements currently allocated for pubname_table. */ -static GTY(()) unsigned pubname_table_allocated; - -/* Number of elements in pubname_table currently in use. */ -static GTY(()) unsigned pubname_table_in_use; +static GTY (()) VEC (pubname_entry, gc) * pubname_table; -/* Size (in elements) of increments by which we may expand the - pubname_table. */ -#define PUBNAME_TABLE_INCREMENT 64 +/* A pointer to the base of a table that contains a list of publicly + accessible types. */ +static GTY (()) VEC (pubname_entry, gc) * pubtype_table; /* Array of dies for which we should generate .debug_arange info. */ static GTY((length ("arange_table_allocated"))) dw_die_ref *arange_table; @@ -4115,7 +4113,7 @@ static void calc_die_sizes (dw_die_ref); static void mark_dies (dw_die_ref); static void unmark_dies (dw_die_ref); static void unmark_all_dies (dw_die_ref); -static unsigned long size_of_pubnames (void); +static unsigned long size_of_pubnames (VEC (pubname_entry,gc) *); static unsigned long size_of_aranges (void); static enum dwarf_form value_format (dw_attr_ref); static void output_value_format (dw_attr_ref); @@ -4126,7 +4124,8 @@ static void output_compilation_unit_head static void output_comp_unit (dw_die_ref, int); static const char *dwarf2_name (tree, int); static void add_pubname (tree, dw_die_ref); -static void output_pubnames (void); +static void add_pubtype (tree, dw_die_ref); +static void output_pubnames (VEC (pubname_entry,gc) *); static void add_arange (tree, dw_die_ref); static void output_aranges (void); static unsigned int add_ranges (tree); @@ -6750,21 +6749,22 @@ unmark_all_dies (dw_die_ref die) unmark_all_dies (AT_ref (a)); } -/* Return the size of the .debug_pubnames table generated for the - compilation unit. */ +/* Return the size of the .debug_pubnames or .debug_pubtypes table + generated for the compilation unit. */ static unsigned long -size_of_pubnames (void) +size_of_pubnames (VEC (pubname_entry, gc) * names) { unsigned long size; unsigned i; + pubname_ref p; size = DWARF_PUBNAMES_HEADER_SIZE; - for (i = 0; i < pubname_table_in_use; i++) - { - pubname_ref p = &pubname_table[i]; - size += DWARF_OFFSET_SIZE + strlen (p->name) + 1; - } + for (i = 0; VEC_iterate (pubname_entry, names, i, p); i++) + if (names != pubtype_table + || p->die->die_offset != 0 + || !flag_eliminate_unused_debug_types) + size += strlen (p->name) + DWARF_OFFSET_SIZE + 1; size += DWARF_OFFSET_SIZE; return size; @@ -7332,41 +7332,73 @@ dwarf2_name (tree decl, int scope) static void add_pubname (tree decl, dw_die_ref die) { - pubname_ref p; + pubname_entry e; if (! TREE_PUBLIC (decl)) return; - if (pubname_table_in_use == pubname_table_allocated) + e.die = die; + e.name = xstrdup (dwarf2_name (decl, 1)); + VEC_safe_push (pubname_entry, gc, pubname_table, &e); +} + +/* Add a new entry to .debug_pubtypes if appropriate. */ + +static void +add_pubtype (tree decl, dw_die_ref die) +{ + pubname_entry e; + + e.name = NULL; + if ((TREE_PUBLIC (decl) + || die->die_parent == comp_unit_die) + && (die->die_tag == DW_TAG_typedef || COMPLETE_TYPE_P (decl))) { - pubname_table_allocated += PUBNAME_TABLE_INCREMENT; - pubname_table - = ggc_realloc (pubname_table, - (pubname_table_allocated * sizeof (pubname_entry))); - memset (pubname_table + pubname_table_in_use, 0, - PUBNAME_TABLE_INCREMENT * sizeof (pubname_entry)); - } + e.die = die; + if (TYPE_P (decl)) + { + if (TYPE_NAME (decl)) + { + if (TREE_CODE (TYPE_NAME (decl)) == IDENTIFIER_NODE) + e.name = xstrdup ((const char *) IDENTIFIER_POINTER + (TYPE_NAME (decl))); + else if (TREE_CODE (TYPE_NAME (decl)) == TYPE_DECL + && DECL_NAME (TYPE_NAME (decl))) + e.name = xstrdup ((const char *) IDENTIFIER_POINTER + (DECL_NAME (TYPE_NAME (decl)))); + else + e.name = xstrdup ((const char *) get_AT_string (die, DW_AT_name)); + } + } + else + e.name = xstrdup (dwarf2_name (decl, 1)); - p = &pubname_table[pubname_table_in_use++]; - p->die = die; - p->name = xstrdup (dwarf2_name (decl, 1)); + /* If we don't have a name for the type, there's no point in adding + it to the table. */ + if (e.name && e.name[0] != '\0') + VEC_safe_push (pubname_entry, gc, pubtype_table, &e); + } } /* Output the public names table used to speed up access to externally - visible names. For now, only generate entries for externally - visible procedures. */ + visible names; or the public types table used to find type definitions. */ static void -output_pubnames (void) +output_pubnames (VEC (pubname_entry, gc) * names) { unsigned i; - unsigned long pubnames_length = size_of_pubnames (); + unsigned long pubnames_length = size_of_pubnames (names); + pubname_ref pub; if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4) dw2_asm_output_data (4, 0xffffffff, "Initial length escape value indicating 64-bit DWARF extension"); - dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, - "Length of Public Names Info"); + if (names == pubname_table) + dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, + "Length of Public Names Info"); + else + dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, + "Length of Public Type Names Info"); dw2_asm_output_data (2, DWARF_VERSION, "DWARF Version"); dw2_asm_output_offset (DWARF_OFFSET_SIZE, debug_info_section_label, debug_info_section, @@ -7374,17 +7406,21 @@ output_pubnames (void) dw2_asm_output_data (DWARF_OFFSET_SIZE, next_die_offset, "Compilation Unit Length"); - for (i = 0; i < pubname_table_in_use; i++) + for (i = 0; VEC_iterate (pubname_entry, names, i, pub); i++) { - pubname_ref pub = &pubname_table[i]; - - /* We shouldn't see pubnames for DIEs outside of the main CU. */ - gcc_assert (pub->die->die_mark); + /* We shouldn't see pubnames for DIEs outside of the main CU. */ + if (names == pubname_table) + gcc_assert (pub->die->die_mark); - dw2_asm_output_data (DWARF_OFFSET_SIZE, pub->die->die_offset, - "DIE offset"); + if (names != pubtype_table + || pub->die->die_offset != 0 + || !flag_eliminate_unused_debug_types) + { + dw2_asm_output_data (DWARF_OFFSET_SIZE, pub->die->die_offset, + "DIE offset"); - dw2_asm_output_nstring (pub->name, -1, "external name"); + dw2_asm_output_nstring (pub->name, -1, "external name"); + } } dw2_asm_output_data (DWARF_OFFSET_SIZE, 0, NULL); @@ -11298,6 +11334,9 @@ gen_array_type_die (tree type, dw_die_re #endif add_type_attribute (array_die, element_type, 0, 0, context_die); + + if (get_AT (array_die, DW_AT_name)) + add_pubtype (type, array_die); } #if 0 @@ -11433,6 +11472,9 @@ gen_enumeration_type_die (tree type, dw_ else add_AT_flag (type_die, DW_AT_declaration, 1); + if (get_AT (type_die, DW_AT_name)) + add_pubtype (type, type_die); + return type_die; } @@ -12553,6 +12595,9 @@ gen_struct_or_union_type_die (tree type, && ! decl_function_context (TYPE_STUB_DECL (type))) VEC_safe_push (tree, gc, incomplete_types, type); } + + if (get_AT (type_die, DW_AT_name)) + add_pubtype (type, type_die); } /* Generate a DIE for a subroutine _type_. */ @@ -12569,6 +12614,9 @@ gen_subroutine_type_die (tree type, dw_d add_prototyped_attribute (subr_die, type); add_type_attribute (subr_die, return_type, 0, 0, context_die); gen_formal_types_die (type, subr_die); + + if (get_AT (subr_die, DW_AT_name)) + add_pubtype (type, subr_die); } /* Generate a DIE for a type definition. */ @@ -12608,6 +12656,9 @@ gen_typedef_die (tree decl, dw_die_ref c if (DECL_ABSTRACT (decl)) equate_decl_number_to_die (decl, type_die); + + if (get_AT (type_die, DW_AT_name)) + add_pubtype (decl, type_die); } /* Generate a type description DIE. */ @@ -13932,6 +13983,10 @@ dwarf2out_init (const char *filename ATT /* Zero-th entry is allocated, but unused. */ line_info_table_in_use = 1; + /* Allocate the pubtypes and pubnames vectors. */ + pubname_table = VEC_alloc (pubname_entry, gc, 32); + pubtype_table = VEC_alloc (pubname_entry, gc, 32); + /* Generate the initial DIE for the .debug section. Note that the (string) value given in the DW_AT_name attribute of the DW_TAG_compile_unit DIE will (typically) be a relative pathname and that this pathname should be @@ -13958,6 +14013,10 @@ dwarf2out_init (const char *filename ATT SECTION_DEBUG, NULL); debug_pubnames_section = get_section (DEBUG_PUBNAMES_SECTION, SECTION_DEBUG, NULL); +#ifdef DEBUG_PUBTYPES_SECTION + debug_pubtypes_section = get_section (DEBUG_PUBTYPES_SECTION, + SECTION_DEBUG, NULL); +#endif debug_str_section = get_section (DEBUG_STR_SECTION, DEBUG_STR_SECTION_FLAGS, NULL); debug_ranges_section = get_section (DEBUG_RANGES_SECTION, @@ -14240,6 +14299,7 @@ prune_unused_types (void) { unsigned int i; limbo_die_node *node; + pubname_ref pub; #if ENABLE_ASSERT_CHECKING /* All the marks should already be clear. */ @@ -14255,8 +14315,8 @@ prune_unused_types (void) /* Also set the mark on nodes referenced from the pubname_table or arange_table. */ - for (i = 0; i < pubname_table_in_use; i++) - prune_unused_types_mark (pubname_table[i].die, 1); + for (i = 0; VEC_iterate (pubname_entry, pubname_table, i, pub); i++) + prune_unused_types_mark (pub->die, 1); for (i = 0; i < arange_table_in_use; i++) prune_unused_types_mark (arange_table[i], 1); @@ -14437,12 +14497,21 @@ dwarf2out_finish (const char *filename) output_abbrev_section (); /* Output public names table if necessary. */ - if (pubname_table_in_use) + if (!VEC_empty (pubname_entry, pubname_table)) { switch_to_section (debug_pubnames_section); - output_pubnames (); + output_pubnames (pubname_table); } +#ifdef DEBUG_PUBTYPES_SECTION + /* Output public types table if necessary. */ + if (!VEC_empty (pubname_entry, pubtype_table)) + { + switch_to_section (debug_pubtypes_section); + output_pubnames (pubtype_table); + } +#endif + /* Output the address range information. We only put functions in the arange table, so don't write it out if we don't have any. */ if (fde_table_in_use) From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 18:34:03 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id EE5B03D2; Tue, 7 Jan 2014 18:34:03 +0000 (UTC) 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 D8AE9121F; Tue, 7 Jan 2014 18: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 s07IY3Tw036030; Tue, 7 Jan 2014 18:34:03 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07IY3L3036025; Tue, 7 Jan 2014 18:34:03 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401071834.s07IY3L3036025@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Tue, 7 Jan 2014 18:34:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260396 - in stable/9/contrib/gcc: . config X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 18:34:04 -0000 Author: pfg Date: Tue Jan 7 18:34:02 2014 New Revision: 260396 URL: http://svnweb.freebsd.org/changeset/base/260396 Log: MFC r259841 gcc: Add ability to generate DWARF pubtypes section if DEBUG_PUBTYPES_SECTION is defined. Obtained from: gcc 4.3 (rev. 118826; GPLv2) Modified: stable/9/contrib/gcc/ChangeLog.gcc43 stable/9/contrib/gcc/config/darwin.c stable/9/contrib/gcc/config/darwin.h stable/9/contrib/gcc/dwarf2out.c Directory Properties: stable/9/ (props changed) stable/9/contrib/gcc/ (props changed) Modified: stable/9/contrib/gcc/ChangeLog.gcc43 ============================================================================== --- stable/9/contrib/gcc/ChangeLog.gcc43 Tue Jan 7 18:32:31 2014 (r260395) +++ stable/9/contrib/gcc/ChangeLog.gcc43 Tue Jan 7 18:34:02 2014 (r260396) @@ -526,6 +526,37 @@ (override_options): Add entries for Core2. (ix86_issue_rate): Add case for Core2. +2006-11-14 Caroline Tice (r118826) + + * dwarf2out.c (debug_pubtypes_section): New static global variable. + (pubname_entry): Add DEF_VEC_O and DEF_VEC_ALLOC_O statements for + this type. + (pubname_table): Redefine as a vector. + (pubtype_table): New static global variable, defined as a vector. + (pubname_table_allocated): Remove static global variable. + (pubname_table_in_use): Remove static global variable. + (PUBNAME_TABLE_INCREMENT): Remove constant. + (size_of_pubnames): Add parameter to deal with either pubnames or + pubtypes, and change code to deal with table being a vector. + (add_pubname): Change to deal with table being a vector. + (add_pubtype): New function. + (output_pubnames): Add parameter to deal with either pubnames or + pubtypes, and change code to deal with table being a vector. + (gen_array_type_die): Add call to add_pubtype. + (gen_enumeration_type_die): Add call to add_pubtype. + (gen_struct_or_union_type_die): Add call to add_pubtype. + (gen_subroutine_type_die): Add call to add_pubtype. + (gen_typedef_die): Add call to add_pubtype. + (dwarf2out_init): Add code to initialize pubname_table and + pubtype_table vectors; also initialize debug_pubtypes_section. + (prune_unused_types): Change to deal with pubnames being a vector. + (dwarf2out_finish): Change to deal with pubnames being a vector; add + pubnames table to call to output_pubnames; Add code to output pubtypes + table if DEBUG_PUBTYPES_SECTION is defined. + * config/darwin.c (darwin_file_start): Add DEBUG_PUBTYPES_SECTION to + debugnames. + * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable. + 2006-10-31 Geoffrey Keating (r118356) * c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on Modified: stable/9/contrib/gcc/config/darwin.c ============================================================================== --- stable/9/contrib/gcc/config/darwin.c Tue Jan 7 18:32:31 2014 (r260395) +++ stable/9/contrib/gcc/config/darwin.c Tue Jan 7 18:34:02 2014 (r260396) @@ -1517,6 +1517,7 @@ darwin_file_start (void) DEBUG_LINE_SECTION, DEBUG_LOC_SECTION, DEBUG_PUBNAMES_SECTION, + DEBUG_PUBTYPES_SECTION, DEBUG_STR_SECTION, DEBUG_RANGES_SECTION }; Modified: stable/9/contrib/gcc/config/darwin.h ============================================================================== --- stable/9/contrib/gcc/config/darwin.h Tue Jan 7 18:32:31 2014 (r260395) +++ stable/9/contrib/gcc/config/darwin.h Tue Jan 7 18:34:02 2014 (r260396) @@ -401,6 +401,7 @@ extern GTY(()) int darwin_ms_struct; #define DEBUG_LINE_SECTION "__DWARF,__debug_line,regular,debug" #define DEBUG_LOC_SECTION "__DWARF,__debug_loc,regular,debug" #define DEBUG_PUBNAMES_SECTION "__DWARF,__debug_pubnames,regular,debug" +#define DEBUG_PUBTYPES_SECTION "__DWARF,__debug_pubtypes,regular,debug" #define DEBUG_STR_SECTION "__DWARF,__debug_str,regular,debug" #define DEBUG_RANGES_SECTION "__DWARF,__debug_ranges,regular,debug" Modified: stable/9/contrib/gcc/dwarf2out.c ============================================================================== --- stable/9/contrib/gcc/dwarf2out.c Tue Jan 7 18:32:31 2014 (r260395) +++ stable/9/contrib/gcc/dwarf2out.c Tue Jan 7 18:34:02 2014 (r260396) @@ -156,6 +156,7 @@ static GTY(()) section *debug_macinfo_se static GTY(()) section *debug_line_section; static GTY(()) section *debug_loc_section; static GTY(()) section *debug_pubnames_section; +static GTY(()) section *debug_pubtypes_section; static GTY(()) section *debug_str_section; static GTY(()) section *debug_ranges_section; static GTY(()) section *debug_frame_section; @@ -3759,6 +3760,9 @@ typedef struct pubname_struct GTY(()) } pubname_entry; +DEF_VEC_O(pubname_entry); +DEF_VEC_ALLOC_O(pubname_entry, gc); + struct dw_ranges_struct GTY(()) { int block_num; @@ -3940,17 +3944,11 @@ static GTY(()) unsigned separate_line_in /* A pointer to the base of a table that contains a list of publicly accessible names. */ -static GTY ((length ("pubname_table_allocated"))) pubname_ref pubname_table; - -/* Number of elements currently allocated for pubname_table. */ -static GTY(()) unsigned pubname_table_allocated; - -/* Number of elements in pubname_table currently in use. */ -static GTY(()) unsigned pubname_table_in_use; +static GTY (()) VEC (pubname_entry, gc) * pubname_table; -/* Size (in elements) of increments by which we may expand the - pubname_table. */ -#define PUBNAME_TABLE_INCREMENT 64 +/* A pointer to the base of a table that contains a list of publicly + accessible types. */ +static GTY (()) VEC (pubname_entry, gc) * pubtype_table; /* Array of dies for which we should generate .debug_arange info. */ static GTY((length ("arange_table_allocated"))) dw_die_ref *arange_table; @@ -4115,7 +4113,7 @@ static void calc_die_sizes (dw_die_ref); static void mark_dies (dw_die_ref); static void unmark_dies (dw_die_ref); static void unmark_all_dies (dw_die_ref); -static unsigned long size_of_pubnames (void); +static unsigned long size_of_pubnames (VEC (pubname_entry,gc) *); static unsigned long size_of_aranges (void); static enum dwarf_form value_format (dw_attr_ref); static void output_value_format (dw_attr_ref); @@ -4126,7 +4124,8 @@ static void output_compilation_unit_head static void output_comp_unit (dw_die_ref, int); static const char *dwarf2_name (tree, int); static void add_pubname (tree, dw_die_ref); -static void output_pubnames (void); +static void add_pubtype (tree, dw_die_ref); +static void output_pubnames (VEC (pubname_entry,gc) *); static void add_arange (tree, dw_die_ref); static void output_aranges (void); static unsigned int add_ranges (tree); @@ -6750,21 +6749,22 @@ unmark_all_dies (dw_die_ref die) unmark_all_dies (AT_ref (a)); } -/* Return the size of the .debug_pubnames table generated for the - compilation unit. */ +/* Return the size of the .debug_pubnames or .debug_pubtypes table + generated for the compilation unit. */ static unsigned long -size_of_pubnames (void) +size_of_pubnames (VEC (pubname_entry, gc) * names) { unsigned long size; unsigned i; + pubname_ref p; size = DWARF_PUBNAMES_HEADER_SIZE; - for (i = 0; i < pubname_table_in_use; i++) - { - pubname_ref p = &pubname_table[i]; - size += DWARF_OFFSET_SIZE + strlen (p->name) + 1; - } + for (i = 0; VEC_iterate (pubname_entry, names, i, p); i++) + if (names != pubtype_table + || p->die->die_offset != 0 + || !flag_eliminate_unused_debug_types) + size += strlen (p->name) + DWARF_OFFSET_SIZE + 1; size += DWARF_OFFSET_SIZE; return size; @@ -7332,41 +7332,73 @@ dwarf2_name (tree decl, int scope) static void add_pubname (tree decl, dw_die_ref die) { - pubname_ref p; + pubname_entry e; if (! TREE_PUBLIC (decl)) return; - if (pubname_table_in_use == pubname_table_allocated) + e.die = die; + e.name = xstrdup (dwarf2_name (decl, 1)); + VEC_safe_push (pubname_entry, gc, pubname_table, &e); +} + +/* Add a new entry to .debug_pubtypes if appropriate. */ + +static void +add_pubtype (tree decl, dw_die_ref die) +{ + pubname_entry e; + + e.name = NULL; + if ((TREE_PUBLIC (decl) + || die->die_parent == comp_unit_die) + && (die->die_tag == DW_TAG_typedef || COMPLETE_TYPE_P (decl))) { - pubname_table_allocated += PUBNAME_TABLE_INCREMENT; - pubname_table - = ggc_realloc (pubname_table, - (pubname_table_allocated * sizeof (pubname_entry))); - memset (pubname_table + pubname_table_in_use, 0, - PUBNAME_TABLE_INCREMENT * sizeof (pubname_entry)); - } + e.die = die; + if (TYPE_P (decl)) + { + if (TYPE_NAME (decl)) + { + if (TREE_CODE (TYPE_NAME (decl)) == IDENTIFIER_NODE) + e.name = xstrdup ((const char *) IDENTIFIER_POINTER + (TYPE_NAME (decl))); + else if (TREE_CODE (TYPE_NAME (decl)) == TYPE_DECL + && DECL_NAME (TYPE_NAME (decl))) + e.name = xstrdup ((const char *) IDENTIFIER_POINTER + (DECL_NAME (TYPE_NAME (decl)))); + else + e.name = xstrdup ((const char *) get_AT_string (die, DW_AT_name)); + } + } + else + e.name = xstrdup (dwarf2_name (decl, 1)); - p = &pubname_table[pubname_table_in_use++]; - p->die = die; - p->name = xstrdup (dwarf2_name (decl, 1)); + /* If we don't have a name for the type, there's no point in adding + it to the table. */ + if (e.name && e.name[0] != '\0') + VEC_safe_push (pubname_entry, gc, pubtype_table, &e); + } } /* Output the public names table used to speed up access to externally - visible names. For now, only generate entries for externally - visible procedures. */ + visible names; or the public types table used to find type definitions. */ static void -output_pubnames (void) +output_pubnames (VEC (pubname_entry, gc) * names) { unsigned i; - unsigned long pubnames_length = size_of_pubnames (); + unsigned long pubnames_length = size_of_pubnames (names); + pubname_ref pub; if (DWARF_INITIAL_LENGTH_SIZE - DWARF_OFFSET_SIZE == 4) dw2_asm_output_data (4, 0xffffffff, "Initial length escape value indicating 64-bit DWARF extension"); - dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, - "Length of Public Names Info"); + if (names == pubname_table) + dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, + "Length of Public Names Info"); + else + dw2_asm_output_data (DWARF_OFFSET_SIZE, pubnames_length, + "Length of Public Type Names Info"); dw2_asm_output_data (2, DWARF_VERSION, "DWARF Version"); dw2_asm_output_offset (DWARF_OFFSET_SIZE, debug_info_section_label, debug_info_section, @@ -7374,17 +7406,21 @@ output_pubnames (void) dw2_asm_output_data (DWARF_OFFSET_SIZE, next_die_offset, "Compilation Unit Length"); - for (i = 0; i < pubname_table_in_use; i++) + for (i = 0; VEC_iterate (pubname_entry, names, i, pub); i++) { - pubname_ref pub = &pubname_table[i]; - - /* We shouldn't see pubnames for DIEs outside of the main CU. */ - gcc_assert (pub->die->die_mark); + /* We shouldn't see pubnames for DIEs outside of the main CU. */ + if (names == pubname_table) + gcc_assert (pub->die->die_mark); - dw2_asm_output_data (DWARF_OFFSET_SIZE, pub->die->die_offset, - "DIE offset"); + if (names != pubtype_table + || pub->die->die_offset != 0 + || !flag_eliminate_unused_debug_types) + { + dw2_asm_output_data (DWARF_OFFSET_SIZE, pub->die->die_offset, + "DIE offset"); - dw2_asm_output_nstring (pub->name, -1, "external name"); + dw2_asm_output_nstring (pub->name, -1, "external name"); + } } dw2_asm_output_data (DWARF_OFFSET_SIZE, 0, NULL); @@ -11298,6 +11334,9 @@ gen_array_type_die (tree type, dw_die_re #endif add_type_attribute (array_die, element_type, 0, 0, context_die); + + if (get_AT (array_die, DW_AT_name)) + add_pubtype (type, array_die); } #if 0 @@ -11433,6 +11472,9 @@ gen_enumeration_type_die (tree type, dw_ else add_AT_flag (type_die, DW_AT_declaration, 1); + if (get_AT (type_die, DW_AT_name)) + add_pubtype (type, type_die); + return type_die; } @@ -12553,6 +12595,9 @@ gen_struct_or_union_type_die (tree type, && ! decl_function_context (TYPE_STUB_DECL (type))) VEC_safe_push (tree, gc, incomplete_types, type); } + + if (get_AT (type_die, DW_AT_name)) + add_pubtype (type, type_die); } /* Generate a DIE for a subroutine _type_. */ @@ -12569,6 +12614,9 @@ gen_subroutine_type_die (tree type, dw_d add_prototyped_attribute (subr_die, type); add_type_attribute (subr_die, return_type, 0, 0, context_die); gen_formal_types_die (type, subr_die); + + if (get_AT (subr_die, DW_AT_name)) + add_pubtype (type, subr_die); } /* Generate a DIE for a type definition. */ @@ -12608,6 +12656,9 @@ gen_typedef_die (tree decl, dw_die_ref c if (DECL_ABSTRACT (decl)) equate_decl_number_to_die (decl, type_die); + + if (get_AT (type_die, DW_AT_name)) + add_pubtype (decl, type_die); } /* Generate a type description DIE. */ @@ -13932,6 +13983,10 @@ dwarf2out_init (const char *filename ATT /* Zero-th entry is allocated, but unused. */ line_info_table_in_use = 1; + /* Allocate the pubtypes and pubnames vectors. */ + pubname_table = VEC_alloc (pubname_entry, gc, 32); + pubtype_table = VEC_alloc (pubname_entry, gc, 32); + /* Generate the initial DIE for the .debug section. Note that the (string) value given in the DW_AT_name attribute of the DW_TAG_compile_unit DIE will (typically) be a relative pathname and that this pathname should be @@ -13958,6 +14013,10 @@ dwarf2out_init (const char *filename ATT SECTION_DEBUG, NULL); debug_pubnames_section = get_section (DEBUG_PUBNAMES_SECTION, SECTION_DEBUG, NULL); +#ifdef DEBUG_PUBTYPES_SECTION + debug_pubtypes_section = get_section (DEBUG_PUBTYPES_SECTION, + SECTION_DEBUG, NULL); +#endif debug_str_section = get_section (DEBUG_STR_SECTION, DEBUG_STR_SECTION_FLAGS, NULL); debug_ranges_section = get_section (DEBUG_RANGES_SECTION, @@ -14240,6 +14299,7 @@ prune_unused_types (void) { unsigned int i; limbo_die_node *node; + pubname_ref pub; #if ENABLE_ASSERT_CHECKING /* All the marks should already be clear. */ @@ -14255,8 +14315,8 @@ prune_unused_types (void) /* Also set the mark on nodes referenced from the pubname_table or arange_table. */ - for (i = 0; i < pubname_table_in_use; i++) - prune_unused_types_mark (pubname_table[i].die, 1); + for (i = 0; VEC_iterate (pubname_entry, pubname_table, i, pub); i++) + prune_unused_types_mark (pub->die, 1); for (i = 0; i < arange_table_in_use; i++) prune_unused_types_mark (arange_table[i], 1); @@ -14437,12 +14497,21 @@ dwarf2out_finish (const char *filename) output_abbrev_section (); /* Output public names table if necessary. */ - if (pubname_table_in_use) + if (!VEC_empty (pubname_entry, pubname_table)) { switch_to_section (debug_pubnames_section); - output_pubnames (); + output_pubnames (pubname_table); } +#ifdef DEBUG_PUBTYPES_SECTION + /* Output public types table if necessary. */ + if (!VEC_empty (pubname_entry, pubtype_table)) + { + switch_to_section (debug_pubtypes_section); + output_pubnames (pubtype_table); + } +#endif + /* Output the address range information. We only put functions in the arange table, so don't write it out if we don't have any. */ if (fde_table_in_use) From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 18:53:15 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0B9257F3; Tue, 7 Jan 2014 18:53:15 +0000 (UTC) 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 D02241365; Tue, 7 Jan 2014 18:53: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 s07IrEsE043535; Tue, 7 Jan 2014 18:53:14 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07IrEBR043534; Tue, 7 Jan 2014 18:53:14 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401071853.s07IrEBR043534@svn.freebsd.org> From: Neel Natu Date: Tue, 7 Jan 2014 18:53:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260397 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 18:53:15 -0000 Author: neel Date: Tue Jan 7 18:53:14 2014 New Revision: 260397 URL: http://svnweb.freebsd.org/changeset/base/260397 Log: Fix a bug introduced in r260167 related to VM-exit tracing. Keep a copy of the 'rip' and the 'exit_reason' and use that when calling vmx_exit_trace(). This is because both the 'rip' and 'exit_reason' can be changed by 'vmx_exit_process()' and can lead to very misleading traces. Modified: head/sys/amd64/vmm/intel/vmx.c Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Tue Jan 7 18:34:02 2014 (r260396) +++ head/sys/amd64/vmm/intel/vmx.c Tue Jan 7 18:53:14 2014 (r260397) @@ -1192,12 +1192,6 @@ vmx_exit_process(struct vmx *vmx, int vc handled = 0; vmxctx = &vmx->ctx[vcpu]; - /* Collect some information for VM exit processing */ - vmexit->rip = vmcs_guest_rip(); - vmexit->inst_length = vmexit_instruction_length(); - vmexit->u.vmx.exit_reason = vmcs_exit_reason(); - vmexit->u.vmx.exit_qualification = vmcs_exit_qualification(); - qual = vmexit->u.vmx.exit_qualification; reason = vmexit->u.vmx.exit_reason; vmexit->exitcode = VM_EXITCODE_BOGUS; @@ -1406,9 +1400,7 @@ vmx_exit_inst_error(struct vmxctx *vmxct ("vmx_exit_inst_error: invalid inst_fail_status %d", vmxctx->inst_fail_status)); - vmexit->rip = vmcs_guest_rip(); vmexit->inst_length = 0; - vmexit->exitcode = VM_EXITCODE_VMX; vmexit->u.vmx.status = vmxctx->inst_fail_status; vmexit->u.vmx.inst_error = vmcs_instruction_error(); @@ -1437,6 +1429,8 @@ vmx_run(void *arg, int vcpu, register_t struct vmcs *vmcs; struct vm_exit *vmexit; struct vlapic *vlapic; + uint64_t rip; + uint32_t exit_reason; vmx = arg; vmcs = &vmx->vmcs[vcpu]; @@ -1493,7 +1487,15 @@ vmx_run(void *arg, int vcpu, register_t vmx_inject_interrupts(vmx, vcpu, vlapic); vmx_run_trace(vmx, vcpu); rc = vmx_enter_guest(vmxctx, launched); + enable_intr(); + + /* Collect some information for VM exit processing */ + vmexit->rip = rip = vmcs_guest_rip(); + vmexit->inst_length = vmexit_instruction_length(); + vmexit->u.vmx.exit_reason = exit_reason = vmcs_exit_reason(); + vmexit->u.vmx.exit_qualification = vmcs_exit_qualification(); + if (rc == VMX_GUEST_VMEXIT) { launched = 1; handled = vmx_exit_process(vmx, vcpu, vmexit); @@ -1501,8 +1503,7 @@ vmx_run(void *arg, int vcpu, register_t handled = vmx_exit_inst_error(vmxctx, rc, vmexit); } - vmx_exit_trace(vmx, vcpu, vmexit->rip, - vmexit->u.vmx.exit_reason, handled); + vmx_exit_trace(vmx, vcpu, rip, exit_reason, handled); } while (handled); /* From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 19:00:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 92DD8BB8; Tue, 7 Jan 2014 19:00:40 +0000 (UTC) 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 7F7C113BB; Tue, 7 Jan 2014 19:00: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 s07J0eoQ046717; Tue, 7 Jan 2014 19:00:40 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07J0eqZ046716; Tue, 7 Jan 2014 19:00:40 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401071900.s07J0eqZ046716@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 7 Jan 2014 19:00:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260398 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 19:00:40 -0000 Author: melifaro Date: Tue Jan 7 19:00:40 2014 New Revision: 260398 URL: http://svnweb.freebsd.org/changeset/base/260398 Log: Remove dead code. Reported by: Coverity Coverity CID: 1018057 MFC after: 2 weeks Modified: head/sys/net/if.c Modified: head/sys/net/if.c ============================================================================== --- head/sys/net/if.c Tue Jan 7 18:53:14 2014 (r260397) +++ head/sys/net/if.c Tue Jan 7 19:00:40 2014 (r260398) @@ -283,8 +283,6 @@ retry: } /* Catch if_index overflow. */ - if (idx < 1) - return (ENOSPC); if (idx >= V_if_indexlim) { if_grow(); goto retry; From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 19:02:10 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 06EC6D08; Tue, 7 Jan 2014 19:02:10 +0000 (UTC) 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 DB0D41469; Tue, 7 Jan 2014 19:02: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 s07J297A047654; Tue, 7 Jan 2014 19:02:09 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07J283m047643; Tue, 7 Jan 2014 19:02:08 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401071902.s07J283m047643@svn.freebsd.org> From: Xin LI Date: Tue, 7 Jan 2014 19:02:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260399 - vendor-crypto/openssl/dist/ssl X-SVN-Group: vendor-crypto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 19:02:10 -0000 Author: delphij Date: Tue Jan 7 19:02:08 2014 New Revision: 260399 URL: http://svnweb.freebsd.org/changeset/base/260399 Log: Import vendor fixes: 197e0ea Fix for TLS record tampering bug. (CVE-2013-4353). 3462896 For DTLS we might need to retransmit messages from the previous session so keep a copy of write context in DTLS retransmission buffers instead of replacing it after sending CCS. (CVE-2013-6450). ca98926 When deciding whether to use TLS 1.2 PRF and record hash algorithms use the version number in the corresponding SSL_METHOD structure instead of the SSL structure. The SSL structure version is sometimes inaccurate. Note: OpenSSL 1.0.2 and later effectively do this already. (CVE-2013-6449). Modified: vendor-crypto/openssl/dist/ssl/d1_both.c vendor-crypto/openssl/dist/ssl/s3_both.c vendor-crypto/openssl/dist/ssl/s3_lib.c vendor-crypto/openssl/dist/ssl/ssl_locl.h vendor-crypto/openssl/dist/ssl/t1_enc.c Modified: vendor-crypto/openssl/dist/ssl/d1_both.c ============================================================================== --- vendor-crypto/openssl/dist/ssl/d1_both.c Tue Jan 7 19:00:40 2014 (r260398) +++ vendor-crypto/openssl/dist/ssl/d1_both.c Tue Jan 7 19:02:08 2014 (r260399) @@ -214,6 +214,12 @@ dtls1_hm_fragment_new(unsigned long frag static void dtls1_hm_fragment_free(hm_fragment *frag) { + + if (frag->msg_header.is_ccs) + { + EVP_CIPHER_CTX_free(frag->msg_header.saved_retransmit_state.enc_write_ctx); + EVP_MD_CTX_destroy(frag->msg_header.saved_retransmit_state.write_hash); + } if (frag->fragment) OPENSSL_free(frag->fragment); if (frag->reassembly) OPENSSL_free(frag->reassembly); OPENSSL_free(frag); Modified: vendor-crypto/openssl/dist/ssl/s3_both.c ============================================================================== --- vendor-crypto/openssl/dist/ssl/s3_both.c Tue Jan 7 19:00:40 2014 (r260398) +++ vendor-crypto/openssl/dist/ssl/s3_both.c Tue Jan 7 19:02:08 2014 (r260399) @@ -208,7 +208,11 @@ static void ssl3_take_mac(SSL *s) { const char *sender; int slen; - + /* If no new cipher setup return immediately: other functions will + * set the appropriate error. + */ + if (s->s3->tmp.new_cipher == NULL) + return; if (s->state & SSL_ST_CONNECT) { sender=s->method->ssl3_enc->server_finished_label; Modified: vendor-crypto/openssl/dist/ssl/s3_lib.c ============================================================================== --- vendor-crypto/openssl/dist/ssl/s3_lib.c Tue Jan 7 19:00:40 2014 (r260398) +++ vendor-crypto/openssl/dist/ssl/s3_lib.c Tue Jan 7 19:02:08 2014 (r260399) @@ -4274,7 +4274,7 @@ need to go to SSL_ST_ACCEPT. long ssl_get_algorithm2(SSL *s) { long alg2 = s->s3->tmp.new_cipher->algorithm2; - if (TLS1_get_version(s) >= TLS1_2_VERSION && + if (s->method->version == TLS1_2_VERSION && alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF)) return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256; return alg2; Modified: vendor-crypto/openssl/dist/ssl/ssl_locl.h ============================================================================== --- vendor-crypto/openssl/dist/ssl/ssl_locl.h Tue Jan 7 19:00:40 2014 (r260398) +++ vendor-crypto/openssl/dist/ssl/ssl_locl.h Tue Jan 7 19:02:08 2014 (r260399) @@ -621,6 +621,8 @@ extern SSL3_ENC_METHOD TLSv1_enc_data; extern SSL3_ENC_METHOD SSLv3_enc_data; extern SSL3_ENC_METHOD DTLSv1_enc_data; +#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) + #define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \ s_get_meth) \ const SSL_METHOD *func_name(void) \ Modified: vendor-crypto/openssl/dist/ssl/t1_enc.c ============================================================================== --- vendor-crypto/openssl/dist/ssl/t1_enc.c Tue Jan 7 19:00:40 2014 (r260398) +++ vendor-crypto/openssl/dist/ssl/t1_enc.c Tue Jan 7 19:02:08 2014 (r260399) @@ -414,15 +414,20 @@ int tls1_change_cipher_state(SSL *s, int s->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM; else s->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM; - if (s->enc_write_ctx != NULL) + if (s->enc_write_ctx != NULL && !SSL_IS_DTLS(s)) reuse_dd = 1; - else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) + else if ((s->enc_write_ctx=EVP_CIPHER_CTX_new()) == NULL) goto err; - else - /* make sure it's intialized in case we exit later with an error */ - EVP_CIPHER_CTX_init(s->enc_write_ctx); dd= s->enc_write_ctx; - mac_ctx = ssl_replace_hash(&s->write_hash,NULL); + if (SSL_IS_DTLS(s)) + { + mac_ctx = EVP_MD_CTX_create(); + if (!mac_ctx) + goto err; + s->write_hash = mac_ctx; + } + else + mac_ctx = ssl_replace_hash(&s->write_hash,NULL); #ifndef OPENSSL_NO_COMP if (s->compress != NULL) { From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 19:28:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 50F6CFD3; Tue, 7 Jan 2014 19:28:11 +0000 (UTC) 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 3C37815E1; Tue, 7 Jan 2014 19:28: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 s07JSBvP056103; Tue, 7 Jan 2014 19:28:11 GMT (envelope-from mjg@svn.freebsd.org) Received: (from mjg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07JSB2s056102; Tue, 7 Jan 2014 19:28:11 GMT (envelope-from mjg@svn.freebsd.org) Message-Id: <201401071928.s07JSB2s056102@svn.freebsd.org> From: Mateusz Guzik Date: Tue, 7 Jan 2014 19:28:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260400 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 19:28:11 -0000 Author: mjg Date: Tue Jan 7 19:28:10 2014 New Revision: 260400 URL: http://svnweb.freebsd.org/changeset/base/260400 Log: MFC r260232: Don't check for fd limits in fdgrowtable_exp. Callers do that already and additional check races with process decreasing limits and can result in not growing the table at all, which is currently not handled. Modified: stable/10/sys/kern/kern_descrip.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/kern_descrip.c ============================================================================== --- stable/10/sys/kern/kern_descrip.c Tue Jan 7 19:02:08 2014 (r260399) +++ stable/10/sys/kern/kern_descrip.c Tue Jan 7 19:28:10 2014 (r260400) @@ -1482,18 +1482,13 @@ filecaps_validate(const struct filecaps static void fdgrowtable_exp(struct filedesc *fdp, int nfd) { - int nfd1, maxfd; + int nfd1; FILEDESC_XLOCK_ASSERT(fdp); nfd1 = fdp->fd_nfiles * 2; if (nfd1 < nfd) nfd1 = nfd; - maxfd = getmaxfd(curproc); - if (maxfd < nfd1) - nfd1 = maxfd; - KASSERT(nfd <= nfd1, - ("too low nfd1 %d %d %d %d", nfd, fdp->fd_nfiles, maxfd, nfd1)); fdgrowtable(fdp, nfd1); } From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 19:33:18 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2195A2BA; Tue, 7 Jan 2014 19:33:18 +0000 (UTC) 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 0A1ED164F; Tue, 7 Jan 2014 19:33: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 s07JXI4h059416; Tue, 7 Jan 2014 19:33:18 GMT (envelope-from scottl@svn.freebsd.org) Received: (from scottl@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07JXHUh059411; Tue, 7 Jan 2014 19:33:17 GMT (envelope-from scottl@svn.freebsd.org) Message-Id: <201401071933.s07JXHUh059411@svn.freebsd.org> From: Scott Long Date: Tue, 7 Jan 2014 19:33:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260401 - in head: . sys/conf sys/dev/aic7xxx sys/modules/aic7xxx sys/modules/aic7xxx/ahc sys/modules/aic7xxx/ahc/ahc_eisa sys/modules/aic7xxx/ahc/ahc_isa sys/modules/aic7xxx/ahc/ahc_pc... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 19:33:18 -0000 Author: scottl Date: Tue Jan 7 19:33:17 2014 New Revision: 260401 URL: http://svnweb.freebsd.org/changeset/base/260401 Log: Remove aicasm as a build dependency. It made sense when the ahc and ahd drivers and their firmware were under active development, but those days have passed. The firmware now exists in pre-compiled form, no longer dependent on it's sources or on aicasm. If you wish to rebuild the firmware from source, the glue still exists under the 'make firmware' target in sys/modules/aic7xxx. This also fixes the problem introduced with r257777 et al with building kernels the old fashioned way in sys/$arch/compile/$CONFIG when the ahc/ahd drivers were included. Added: head/sys/dev/aic7xxx/aic79xx_reg.h (contents, props changed) head/sys/dev/aic7xxx/aic79xx_reg_print.c (contents, props changed) head/sys/dev/aic7xxx/aic79xx_seq.h (contents, props changed) head/sys/dev/aic7xxx/aic7xxx_reg.h (contents, props changed) head/sys/dev/aic7xxx/aic7xxx_reg_print.c (contents, props changed) head/sys/dev/aic7xxx/aic7xxx_seq.h (contents, props changed) Modified: head/Makefile.inc1 head/sys/conf/files head/sys/modules/aic7xxx/Makefile head/sys/modules/aic7xxx/ahc/Makefile head/sys/modules/aic7xxx/ahc/ahc_eisa/Makefile head/sys/modules/aic7xxx/ahc/ahc_isa/Makefile head/sys/modules/aic7xxx/ahc/ahc_pci/Makefile head/sys/modules/aic7xxx/ahd/Makefile Modified: head/Makefile.inc1 ============================================================================== --- head/Makefile.inc1 Tue Jan 7 19:28:10 2014 (r260400) +++ head/Makefile.inc1 Tue Jan 7 19:33:17 2014 (r260401) @@ -1369,15 +1369,6 @@ kernel-tools: .MAKE mkdir -p ${MAKEOBJDIRPREFIX}/usr mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \ -p ${MAKEOBJDIRPREFIX}/usr >/dev/null -.for _tool in \ - sys/dev/aic7xxx/aicasm - ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ - cd ${.CURDIR}/${_tool} && \ - ${MAKE} DIRPRFX=${_tool}/ obj && \ - ${MAKE} DIRPRFX=${_tool}/ depend && \ - ${MAKE} DIRPRFX=${_tool}/ all && \ - ${MAKE} DIRPRFX=${_tool}/ DESTDIR=${MAKEOBJDIRPREFIX} install -.endfor # # cross-tools: Build cross-building tools Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Tue Jan 7 19:28:10 2014 (r260400) +++ head/sys/conf/files Tue Jan 7 19:33:17 2014 (r260401) @@ -9,42 +9,6 @@ acpi_quirks.h optional acpi \ compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ no-obj no-implicit-rule before-depend \ clean "acpi_quirks.h" -aic7xxx_seq.h optional ahc \ - compile-with "aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h -p aic7xxx_reg_print.c -i $S/dev/aic7xxx/aic7xxx_osm.h $S/dev/aic7xxx/aic7xxx.seq" \ - no-obj no-implicit-rule before-depend local \ - clean "aic7xxx_seq.h" \ - dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h" -aic7xxx_reg.h optional ahc \ - compile-with "aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h -p aic7xxx_reg_print.c -i $S/dev/aic7xxx/aic7xxx_osm.h $S/dev/aic7xxx/aic7xxx.seq" \ - no-obj no-implicit-rule before-depend local \ - clean "aic7xxx_reg.h" \ - dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h" -aic7xxx_reg_print.c optional ahc \ - compile-with "aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h -p aic7xxx_reg_print.c -i $S/dev/aic7xxx/aic7xxx_osm.h $S/dev/aic7xxx/aic7xxx.seq" \ - no-obj no-implicit-rule local \ - clean "aic7xxx_reg_print.c" \ - dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h" -aic7xxx_reg_print.o optional ahc ahc_reg_pretty_print \ - compile-with "${NORMAL_C}" \ - no-implicit-rule local -aic79xx_seq.h optional ahd pci \ - compile-with "aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic79xx_seq.h -r aic79xx_reg.h -p aic79xx_reg_print.c -i $S/dev/aic7xxx/aic79xx_osm.h $S/dev/aic7xxx/aic79xx.seq" \ - no-obj no-implicit-rule before-depend local \ - clean "aic79xx_seq.h" \ - dependency "$S/dev/aic7xxx/aic79xx.{reg,seq} $S/cam/scsi/scsi_message.h" -aic79xx_reg.h optional ahd pci \ - compile-with "aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic79xx_seq.h -r aic79xx_reg.h -p aic79xx_reg_print.c -i $S/dev/aic7xxx/aic79xx_osm.h $S/dev/aic7xxx/aic79xx.seq" \ - no-obj no-implicit-rule before-depend local \ - clean "aic79xx_reg.h" \ - dependency "$S/dev/aic7xxx/aic79xx.{reg,seq} $S/cam/scsi/scsi_message.h" -aic79xx_reg_print.c optional ahd pci \ - compile-with "aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic79xx_seq.h -r aic79xx_reg.h -p aic79xx_reg_print.c -i $S/dev/aic7xxx/aic79xx_osm.h $S/dev/aic7xxx/aic79xx.seq" \ - no-obj no-implicit-rule local \ - clean "aic79xx_reg_print.c" \ - dependency "$S/dev/aic7xxx/aic79xx.{reg,seq} $S/cam/scsi/scsi_message.h" -aic79xx_reg_print.o optional ahd pci ahd_reg_pretty_print \ - compile-with "${NORMAL_C}" \ - no-implicit-rule local # # The 'fdt_dtb_file' target covers an actual DTB file name, which is derived # from the specified source (DTS) file: .dts -> .dtb @@ -667,10 +631,12 @@ dev/aic7xxx/aic7770.c optional ahc dev/aic7xxx/aic79xx.c optional ahd pci dev/aic7xxx/aic79xx_osm.c optional ahd pci dev/aic7xxx/aic79xx_pci.c optional ahd pci +dev/aic7xxx/aic79xx_reg_print.c optional ahd pci ahd_reg_pretty_print dev/aic7xxx/aic7xxx.c optional ahc dev/aic7xxx/aic7xxx_93cx6.c optional ahc dev/aic7xxx/aic7xxx_osm.c optional ahc dev/aic7xxx/aic7xxx_pci.c optional ahc pci +dev/aic7xxx/aic7xxx_reg_print.c optional ahc ahc_reg_pretty_print dev/alc/if_alc.c optional alc pci dev/ale/if_ale.c optional ale pci dev/altera/avgen/altera_avgen.c optional altera_avgen Added: head/sys/dev/aic7xxx/aic79xx_reg.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/aic7xxx/aic79xx_reg.h Tue Jan 7 19:33:17 2014 (r260401) @@ -0,0 +1,3826 @@ +/* + * DO NOT EDIT - This file is automatically generated + * from the following source files: + * + * $Id: //depot/aic7xxx/aic7xxx/aic79xx.seq#119 $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#76 $ + * + * $FreeBSD$ + */ +typedef int (ahd_reg_print_t)(u_int, u_int *, u_int); +typedef struct ahd_reg_parse_entry { + char *name; + uint8_t value; + uint8_t mask; +} ahd_reg_parse_entry_t; + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_mode_ptr_print; +#else +#define ahd_mode_ptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MODE_PTR", 0x00, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_intstat_print; +#else +#define ahd_intstat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "INTSTAT", 0x01, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_seqintcode_print; +#else +#define ahd_seqintcode_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SEQINTCODE", 0x02, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrint_print; +#else +#define ahd_clrint_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRINT", 0x03, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_error_print; +#else +#define ahd_error_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ERROR", 0x04, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrerr_print; +#else +#define ahd_clrerr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRERR", 0x04, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_hcntrl_print; +#else +#define ahd_hcntrl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "HCNTRL", 0x05, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_hnscb_qoff_print; +#else +#define ahd_hnscb_qoff_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "HNSCB_QOFF", 0x06, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_hescb_qoff_print; +#else +#define ahd_hescb_qoff_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "HESCB_QOFF", 0x08, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_hs_mailbox_print; +#else +#define ahd_hs_mailbox_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "HS_MAILBOX", 0x0b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_seqintstat_print; +#else +#define ahd_seqintstat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SEQINTSTAT", 0x0c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrseqintstat_print; +#else +#define ahd_clrseqintstat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRSEQINTSTAT", 0x0c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_swtimer_print; +#else +#define ahd_swtimer_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SWTIMER", 0x0e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_snscb_qoff_print; +#else +#define ahd_snscb_qoff_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SNSCB_QOFF", 0x10, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sescb_qoff_print; +#else +#define ahd_sescb_qoff_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SESCB_QOFF", 0x12, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sdscb_qoff_print; +#else +#define ahd_sdscb_qoff_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SDSCB_QOFF", 0x14, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_qoff_ctlsta_print; +#else +#define ahd_qoff_ctlsta_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "QOFF_CTLSTA", 0x16, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_intctl_print; +#else +#define ahd_intctl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "INTCTL", 0x18, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dfcntrl_print; +#else +#define ahd_dfcntrl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DFCNTRL", 0x19, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dscommand0_print; +#else +#define ahd_dscommand0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DSCOMMAND0", 0x19, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dfstatus_print; +#else +#define ahd_dfstatus_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DFSTATUS", 0x1a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sg_cache_shadow_print; +#else +#define ahd_sg_cache_shadow_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SG_CACHE_SHADOW", 0x1b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sg_cache_pre_print; +#else +#define ahd_sg_cache_pre_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SG_CACHE_PRE", 0x1b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_arbctl_print; +#else +#define ahd_arbctl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ARBCTL", 0x1b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqin_print; +#else +#define ahd_lqin_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQIN", 0x20, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_typeptr_print; +#else +#define ahd_typeptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "TYPEPTR", 0x20, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_tagptr_print; +#else +#define ahd_tagptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "TAGPTR", 0x21, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lunptr_print; +#else +#define ahd_lunptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LUNPTR", 0x22, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_datalenptr_print; +#else +#define ahd_datalenptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DATALENPTR", 0x23, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_statlenptr_print; +#else +#define ahd_statlenptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "STATLENPTR", 0x24, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_cmdlenptr_print; +#else +#define ahd_cmdlenptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CMDLENPTR", 0x25, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_attrptr_print; +#else +#define ahd_attrptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ATTRPTR", 0x26, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_flagptr_print; +#else +#define ahd_flagptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "FLAGPTR", 0x27, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_cmdptr_print; +#else +#define ahd_cmdptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CMDPTR", 0x28, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_qnextptr_print; +#else +#define ahd_qnextptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "QNEXTPTR", 0x29, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_idptr_print; +#else +#define ahd_idptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "IDPTR", 0x2a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_abrtbyteptr_print; +#else +#define ahd_abrtbyteptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ABRTBYTEPTR", 0x2b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_abrtbitptr_print; +#else +#define ahd_abrtbitptr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ABRTBITPTR", 0x2c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_maxcmdbytes_print; +#else +#define ahd_maxcmdbytes_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MAXCMDBYTES", 0x2d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_maxcmd2rcv_print; +#else +#define ahd_maxcmd2rcv_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MAXCMD2RCV", 0x2e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_shortthresh_print; +#else +#define ahd_shortthresh_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SHORTTHRESH", 0x2f, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lunlen_print; +#else +#define ahd_lunlen_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LUNLEN", 0x30, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_cdblimit_print; +#else +#define ahd_cdblimit_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CDBLIMIT", 0x31, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_maxcmd_print; +#else +#define ahd_maxcmd_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MAXCMD", 0x32, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_maxcmdcnt_print; +#else +#define ahd_maxcmdcnt_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MAXCMDCNT", 0x33, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqrsvd01_print; +#else +#define ahd_lqrsvd01_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQRSVD01", 0x34, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqrsvd16_print; +#else +#define ahd_lqrsvd16_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQRSVD16", 0x35, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqrsvd17_print; +#else +#define ahd_lqrsvd17_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQRSVD17", 0x36, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_cmdrsvd0_print; +#else +#define ahd_cmdrsvd0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CMDRSVD0", 0x37, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqctl0_print; +#else +#define ahd_lqctl0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQCTL0", 0x38, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqctl1_print; +#else +#define ahd_lqctl1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQCTL1", 0x38, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqctl2_print; +#else +#define ahd_lqctl2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQCTL2", 0x39, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsbist0_print; +#else +#define ahd_scsbist0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSBIST0", 0x39, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsiseq0_print; +#else +#define ahd_scsiseq0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSISEQ0", 0x3a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsbist1_print; +#else +#define ahd_scsbist1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSBIST1", 0x3a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsiseq1_print; +#else +#define ahd_scsiseq1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSISEQ1", 0x3b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_businitid_print; +#else +#define ahd_businitid_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "BUSINITID", 0x3c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sxfrctl0_print; +#else +#define ahd_sxfrctl0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SXFRCTL0", 0x3c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dlcount_print; +#else +#define ahd_dlcount_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DLCOUNT", 0x3c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sxfrctl1_print; +#else +#define ahd_sxfrctl1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SXFRCTL1", 0x3d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_bustargid_print; +#else +#define ahd_bustargid_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "BUSTARGID", 0x3e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sxfrctl2_print; +#else +#define ahd_sxfrctl2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SXFRCTL2", 0x3e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dffstat_print; +#else +#define ahd_dffstat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DFFSTAT", 0x3f, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsisigo_print; +#else +#define ahd_scsisigo_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSISIGO", 0x40, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_multargid_print; +#else +#define ahd_multargid_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MULTARGID", 0x40, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsisigi_print; +#else +#define ahd_scsisigi_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSISIGI", 0x41, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsiphase_print; +#else +#define ahd_scsiphase_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSIPHASE", 0x42, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsidat0_img_print; +#else +#define ahd_scsidat0_img_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSIDAT0_IMG", 0x43, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsidat_print; +#else +#define ahd_scsidat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSIDAT", 0x44, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsibus_print; +#else +#define ahd_scsibus_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSIBUS", 0x46, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_targidin_print; +#else +#define ahd_targidin_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "TARGIDIN", 0x48, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_selid_print; +#else +#define ahd_selid_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SELID", 0x49, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_optionmode_print; +#else +#define ahd_optionmode_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "OPTIONMODE", 0x4a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sblkctl_print; +#else +#define ahd_sblkctl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SBLKCTL", 0x4a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_simode0_print; +#else +#define ahd_simode0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SIMODE0", 0x4b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sstat0_print; +#else +#define ahd_sstat0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SSTAT0", 0x4b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrsint0_print; +#else +#define ahd_clrsint0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRSINT0", 0x4b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sstat1_print; +#else +#define ahd_sstat1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SSTAT1", 0x4c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrsint1_print; +#else +#define ahd_clrsint1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRSINT1", 0x4c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sstat2_print; +#else +#define ahd_sstat2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SSTAT2", 0x4d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrsint2_print; +#else +#define ahd_clrsint2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRSINT2", 0x4d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_simode2_print; +#else +#define ahd_simode2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SIMODE2", 0x4d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_perrdiag_print; +#else +#define ahd_perrdiag_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "PERRDIAG", 0x4e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqistate_print; +#else +#define ahd_lqistate_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQISTATE", 0x4e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_soffcnt_print; +#else +#define ahd_soffcnt_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SOFFCNT", 0x4f, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqostate_print; +#else +#define ahd_lqostate_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOSTATE", 0x4f, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqistat0_print; +#else +#define ahd_lqistat0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQISTAT0", 0x50, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrlqiint0_print; +#else +#define ahd_clrlqiint0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRLQIINT0", 0x50, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqimode0_print; +#else +#define ahd_lqimode0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQIMODE0", 0x50, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqistat1_print; +#else +#define ahd_lqistat1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQISTAT1", 0x51, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrlqiint1_print; +#else +#define ahd_clrlqiint1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRLQIINT1", 0x51, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqimode1_print; +#else +#define ahd_lqimode1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQIMODE1", 0x51, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqistat2_print; +#else +#define ahd_lqistat2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQISTAT2", 0x52, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_sstat3_print; +#else +#define ahd_sstat3_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SSTAT3", 0x53, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrsint3_print; +#else +#define ahd_clrsint3_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRSINT3", 0x53, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_simode3_print; +#else +#define ahd_simode3_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SIMODE3", 0x53, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqomode0_print; +#else +#define ahd_lqomode0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOMODE0", 0x54, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqostat0_print; +#else +#define ahd_lqostat0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOSTAT0", 0x54, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrlqoint0_print; +#else +#define ahd_clrlqoint0_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRLQOINT0", 0x54, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqomode1_print; +#else +#define ahd_lqomode1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOMODE1", 0x55, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqostat1_print; +#else +#define ahd_lqostat1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOSTAT1", 0x55, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrlqoint1_print; +#else +#define ahd_clrlqoint1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRLQOINT1", 0x55, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_os_space_cnt_print; +#else +#define ahd_os_space_cnt_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "OS_SPACE_CNT", 0x56, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqostat2_print; +#else +#define ahd_lqostat2_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOSTAT2", 0x56, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_simode1_print; +#else +#define ahd_simode1_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SIMODE1", 0x57, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_gsfifo_print; +#else +#define ahd_gsfifo_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "GSFIFO", 0x58, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dffsxfrctl_print; +#else +#define ahd_dffsxfrctl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DFFSXFRCTL", 0x5a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_nextscb_print; +#else +#define ahd_nextscb_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "NEXTSCB", 0x5a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lqoscsctl_print; +#else +#define ahd_lqoscsctl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LQOSCSCTL", 0x5a, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_seqintsrc_print; +#else +#define ahd_seqintsrc_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SEQINTSRC", 0x5b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_clrseqintsrc_print; +#else +#define ahd_clrseqintsrc_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CLRSEQINTSRC", 0x5b, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_currscb_print; +#else +#define ahd_currscb_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CURRSCB", 0x5c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_seqimode_print; +#else +#define ahd_seqimode_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SEQIMODE", 0x5c, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_mdffstat_print; +#else +#define ahd_mdffstat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "MDFFSTAT", 0x5d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_crccontrol_print; +#else +#define ahd_crccontrol_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "CRCCONTROL", 0x5d, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scsitest_print; +#else +#define ahd_scsitest_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SCSITEST", 0x5e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dfftag_print; +#else +#define ahd_dfftag_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DFFTAG", 0x5e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_lastscb_print; +#else +#define ahd_lastscb_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "LASTSCB", 0x5e, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_iopdnctl_print; +#else +#define ahd_iopdnctl_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "IOPDNCTL", 0x5f, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_negoaddr_print; +#else +#define ahd_negoaddr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "NEGOADDR", 0x60, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_shaddr_print; +#else +#define ahd_shaddr_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "SHADDR", 0x60, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_dgrpcrci_print; +#else +#define ahd_dgrpcrci_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "DGRPCRCI", 0x60, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_negperiod_print; +#else +#define ahd_negperiod_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "NEGPERIOD", 0x61, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_packcrci_print; +#else +#define ahd_packcrci_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "PACKCRCI", 0x62, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_negoffset_print; +#else +#define ahd_negoffset_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "NEGOFFSET", 0x62, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_negppropts_print; +#else +#define ahd_negppropts_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "NEGPPROPTS", 0x63, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_negconopts_print; +#else +#define ahd_negconopts_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "NEGCONOPTS", 0x64, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_annexcol_print; +#else +#define ahd_annexcol_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ANNEXCOL", 0x65, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_annexdat_print; +#else +#define ahd_annexdat_print(regvalue, cur_col, wrap) \ + ahd_print_register(NULL, 0, "ANNEXDAT", 0x66, regvalue, cur_col, wrap) +#endif + +#if AIC_DEBUG_REGISTERS +ahd_reg_print_t ahd_scschkn_print; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 19:46:18 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 780099AB; Tue, 7 Jan 2014 19:46:18 +0000 (UTC) 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 631F5173C; Tue, 7 Jan 2014 19:46: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 s07JkIO9063617; Tue, 7 Jan 2014 19:46:18 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07JkI6S063616; Tue, 7 Jan 2014 19:46:18 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201401071946.s07JkI6S063616@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Tue, 7 Jan 2014 19:46:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260402 - stable/10/sys/sys X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 19:46:18 -0000 Author: pjd Date: Tue Jan 7 19:46:17 2014 New Revision: 260402 URL: http://svnweb.freebsd.org/changeset/base/260402 Log: MFC r260290: Bring back the old size of the kinfo_file structure to preserve ABI. Keep only one uint64_t spare for further cap_rights_t expension. Add a comment clarifying that if the size of this structure changes, a new sysctl MIB has to be allocate for it and the old structure has to be returned by the old sysctl MIB. Requested by: re Modified: stable/10/sys/sys/user.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/sys/user.h ============================================================================== --- stable/10/sys/sys/user.h Tue Jan 7 19:33:17 2014 (r260401) +++ stable/10/sys/sys/user.h Tue Jan 7 19:46:17 2014 (r260402) @@ -320,7 +320,13 @@ struct kinfo_ofile { }; #if defined(__amd64__) || defined(__i386__) -#define KINFO_FILE_SIZE 1424 +/* + * This size should never be changed. If you really need to, you must provide + * backward ABI compatibility by allocating a new sysctl MIB that will return + * the new structure. The current structure has to be returned by the current + * sysctl MIB. See how it is done for the kinfo_ofile structure. + */ +#define KINFO_FILE_SIZE 1392 #endif struct kinfo_file { @@ -391,8 +397,7 @@ struct kinfo_file { uint16_t kf_pad1; /* Round to 32 bit alignment. */ int _kf_ispare0; /* Space for more stuff. */ cap_rights_t kf_cap_rights; /* Capability rights. */ - uint64_t _kf_cap_spare[3]; /* Space for future cap_rights_t. */ - int _kf_ispare[4]; /* Space for more stuff. */ + uint64_t _kf_cap_spare; /* Space for future cap_rights_t. */ /* Truncated before copyout in sysctl */ char kf_path[PATH_MAX]; /* Path to file, if any. */ }; From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 19:58:47 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 67021FD8; Tue, 7 Jan 2014 19:58:47 +0000 (UTC) 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 464831832; Tue, 7 Jan 2014 19:58: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 s07JwlpJ067844; Tue, 7 Jan 2014 19:58:47 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07JwkSC067839; Tue, 7 Jan 2014 19:58:46 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401071958.s07JwkSC067839@svn.freebsd.org> From: Xin LI Date: Tue, 7 Jan 2014 19:58:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260403 - head/crypto/openssl/ssl X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 19:58:47 -0000 Author: delphij Date: Tue Jan 7 19:58:45 2014 New Revision: 260403 URL: http://svnweb.freebsd.org/changeset/base/260403 Log: MFV r260399: Apply vendor commits: 197e0ea Fix for TLS record tampering bug. (CVE-2013-4353). 3462896 For DTLS we might need to retransmit messages from the previous session so keep a copy of write context in DTLS retransmission buffers instead of replacing it after sending CCS. (CVE-2013-6450). ca98926 When deciding whether to use TLS 1.2 PRF and record hash algorithms use the version number in the corresponding SSL_METHOD structure instead of the SSL structure. The SSL structure version is sometimes inaccurate. Note: OpenSSL 1.0.2 and later effectively do this already. (CVE-2013-6449). Security: CVE-2013-4353 Security: CVE-2013-6449 Security: CVE-2013-6450 Modified: head/crypto/openssl/ssl/d1_both.c head/crypto/openssl/ssl/s3_both.c head/crypto/openssl/ssl/s3_lib.c head/crypto/openssl/ssl/ssl_locl.h head/crypto/openssl/ssl/t1_enc.c Directory Properties: head/crypto/openssl/ (props changed) Modified: head/crypto/openssl/ssl/d1_both.c ============================================================================== --- head/crypto/openssl/ssl/d1_both.c Tue Jan 7 19:46:17 2014 (r260402) +++ head/crypto/openssl/ssl/d1_both.c Tue Jan 7 19:58:45 2014 (r260403) @@ -214,6 +214,12 @@ dtls1_hm_fragment_new(unsigned long frag static void dtls1_hm_fragment_free(hm_fragment *frag) { + + if (frag->msg_header.is_ccs) + { + EVP_CIPHER_CTX_free(frag->msg_header.saved_retransmit_state.enc_write_ctx); + EVP_MD_CTX_destroy(frag->msg_header.saved_retransmit_state.write_hash); + } if (frag->fragment) OPENSSL_free(frag->fragment); if (frag->reassembly) OPENSSL_free(frag->reassembly); OPENSSL_free(frag); Modified: head/crypto/openssl/ssl/s3_both.c ============================================================================== --- head/crypto/openssl/ssl/s3_both.c Tue Jan 7 19:46:17 2014 (r260402) +++ head/crypto/openssl/ssl/s3_both.c Tue Jan 7 19:58:45 2014 (r260403) @@ -208,7 +208,11 @@ static void ssl3_take_mac(SSL *s) { const char *sender; int slen; - + /* If no new cipher setup return immediately: other functions will + * set the appropriate error. + */ + if (s->s3->tmp.new_cipher == NULL) + return; if (s->state & SSL_ST_CONNECT) { sender=s->method->ssl3_enc->server_finished_label; Modified: head/crypto/openssl/ssl/s3_lib.c ============================================================================== --- head/crypto/openssl/ssl/s3_lib.c Tue Jan 7 19:46:17 2014 (r260402) +++ head/crypto/openssl/ssl/s3_lib.c Tue Jan 7 19:58:45 2014 (r260403) @@ -4274,7 +4274,7 @@ need to go to SSL_ST_ACCEPT. long ssl_get_algorithm2(SSL *s) { long alg2 = s->s3->tmp.new_cipher->algorithm2; - if (TLS1_get_version(s) >= TLS1_2_VERSION && + if (s->method->version == TLS1_2_VERSION && alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF)) return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256; return alg2; Modified: head/crypto/openssl/ssl/ssl_locl.h ============================================================================== --- head/crypto/openssl/ssl/ssl_locl.h Tue Jan 7 19:46:17 2014 (r260402) +++ head/crypto/openssl/ssl/ssl_locl.h Tue Jan 7 19:58:45 2014 (r260403) @@ -621,6 +621,8 @@ extern SSL3_ENC_METHOD TLSv1_enc_data; extern SSL3_ENC_METHOD SSLv3_enc_data; extern SSL3_ENC_METHOD DTLSv1_enc_data; +#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) + #define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \ s_get_meth) \ const SSL_METHOD *func_name(void) \ Modified: head/crypto/openssl/ssl/t1_enc.c ============================================================================== --- head/crypto/openssl/ssl/t1_enc.c Tue Jan 7 19:46:17 2014 (r260402) +++ head/crypto/openssl/ssl/t1_enc.c Tue Jan 7 19:58:45 2014 (r260403) @@ -414,15 +414,20 @@ int tls1_change_cipher_state(SSL *s, int s->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM; else s->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM; - if (s->enc_write_ctx != NULL) + if (s->enc_write_ctx != NULL && !SSL_IS_DTLS(s)) reuse_dd = 1; - else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) + else if ((s->enc_write_ctx=EVP_CIPHER_CTX_new()) == NULL) goto err; - else - /* make sure it's intialized in case we exit later with an error */ - EVP_CIPHER_CTX_init(s->enc_write_ctx); dd= s->enc_write_ctx; - mac_ctx = ssl_replace_hash(&s->write_hash,NULL); + if (SSL_IS_DTLS(s)) + { + mac_ctx = EVP_MD_CTX_create(); + if (!mac_ctx) + goto err; + s->write_hash = mac_ctx; + } + else + mac_ctx = ssl_replace_hash(&s->write_hash,NULL); #ifndef OPENSSL_NO_COMP if (s->compress != NULL) { From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 20:04:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8527221C; Tue, 7 Jan 2014 20:04:42 +0000 (UTC) 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 64D7718C1; Tue, 7 Jan 2014 20:04: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 s07K4gHv071625; Tue, 7 Jan 2014 20:04:42 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07K4fMq071619; Tue, 7 Jan 2014 20:04:41 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401072004.s07K4fMq071619@svn.freebsd.org> From: Xin LI Date: Tue, 7 Jan 2014 20:04:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260404 - stable/10/crypto/openssl/ssl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 20:04:42 -0000 Author: delphij Date: Tue Jan 7 20:04:41 2014 New Revision: 260404 URL: http://svnweb.freebsd.org/changeset/base/260404 Log: MFC r260403 (MFV r260399): Apply vendor commits: 197e0ea Fix for TLS record tampering bug. (CVE-2013-4353). 3462896 For DTLS we might need to retransmit messages from the previous session so keep a copy of write context in DTLS retransmission buffers instead of replacing it after sending CCS. (CVE-2013-6450). ca98926 When deciding whether to use TLS 1.2 PRF and record hash algorithms use the version number in the corresponding SSL_METHOD structure instead of the SSL structure. The SSL structure version is sometimes inaccurate. Note: OpenSSL 1.0.2 and later effectively do this already. (CVE-2013-6449). Security: CVE-2013-4353 Security: CVE-2013-6449 Security: CVE-2013-6450 Modified: stable/10/crypto/openssl/ssl/d1_both.c stable/10/crypto/openssl/ssl/s3_both.c stable/10/crypto/openssl/ssl/s3_lib.c stable/10/crypto/openssl/ssl/ssl_locl.h stable/10/crypto/openssl/ssl/t1_enc.c Directory Properties: stable/10/ (props changed) Modified: stable/10/crypto/openssl/ssl/d1_both.c ============================================================================== --- stable/10/crypto/openssl/ssl/d1_both.c Tue Jan 7 19:58:45 2014 (r260403) +++ stable/10/crypto/openssl/ssl/d1_both.c Tue Jan 7 20:04:41 2014 (r260404) @@ -214,6 +214,12 @@ dtls1_hm_fragment_new(unsigned long frag static void dtls1_hm_fragment_free(hm_fragment *frag) { + + if (frag->msg_header.is_ccs) + { + EVP_CIPHER_CTX_free(frag->msg_header.saved_retransmit_state.enc_write_ctx); + EVP_MD_CTX_destroy(frag->msg_header.saved_retransmit_state.write_hash); + } if (frag->fragment) OPENSSL_free(frag->fragment); if (frag->reassembly) OPENSSL_free(frag->reassembly); OPENSSL_free(frag); Modified: stable/10/crypto/openssl/ssl/s3_both.c ============================================================================== --- stable/10/crypto/openssl/ssl/s3_both.c Tue Jan 7 19:58:45 2014 (r260403) +++ stable/10/crypto/openssl/ssl/s3_both.c Tue Jan 7 20:04:41 2014 (r260404) @@ -208,7 +208,11 @@ static void ssl3_take_mac(SSL *s) { const char *sender; int slen; - + /* If no new cipher setup return immediately: other functions will + * set the appropriate error. + */ + if (s->s3->tmp.new_cipher == NULL) + return; if (s->state & SSL_ST_CONNECT) { sender=s->method->ssl3_enc->server_finished_label; Modified: stable/10/crypto/openssl/ssl/s3_lib.c ============================================================================== --- stable/10/crypto/openssl/ssl/s3_lib.c Tue Jan 7 19:58:45 2014 (r260403) +++ stable/10/crypto/openssl/ssl/s3_lib.c Tue Jan 7 20:04:41 2014 (r260404) @@ -4274,7 +4274,7 @@ need to go to SSL_ST_ACCEPT. long ssl_get_algorithm2(SSL *s) { long alg2 = s->s3->tmp.new_cipher->algorithm2; - if (TLS1_get_version(s) >= TLS1_2_VERSION && + if (s->method->version == TLS1_2_VERSION && alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF)) return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256; return alg2; Modified: stable/10/crypto/openssl/ssl/ssl_locl.h ============================================================================== --- stable/10/crypto/openssl/ssl/ssl_locl.h Tue Jan 7 19:58:45 2014 (r260403) +++ stable/10/crypto/openssl/ssl/ssl_locl.h Tue Jan 7 20:04:41 2014 (r260404) @@ -621,6 +621,8 @@ extern SSL3_ENC_METHOD TLSv1_enc_data; extern SSL3_ENC_METHOD SSLv3_enc_data; extern SSL3_ENC_METHOD DTLSv1_enc_data; +#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) + #define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \ s_get_meth) \ const SSL_METHOD *func_name(void) \ Modified: stable/10/crypto/openssl/ssl/t1_enc.c ============================================================================== --- stable/10/crypto/openssl/ssl/t1_enc.c Tue Jan 7 19:58:45 2014 (r260403) +++ stable/10/crypto/openssl/ssl/t1_enc.c Tue Jan 7 20:04:41 2014 (r260404) @@ -414,15 +414,20 @@ int tls1_change_cipher_state(SSL *s, int s->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM; else s->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM; - if (s->enc_write_ctx != NULL) + if (s->enc_write_ctx != NULL && !SSL_IS_DTLS(s)) reuse_dd = 1; - else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) + else if ((s->enc_write_ctx=EVP_CIPHER_CTX_new()) == NULL) goto err; - else - /* make sure it's intialized in case we exit later with an error */ - EVP_CIPHER_CTX_init(s->enc_write_ctx); dd= s->enc_write_ctx; - mac_ctx = ssl_replace_hash(&s->write_hash,NULL); + if (SSL_IS_DTLS(s)) + { + mac_ctx = EVP_MD_CTX_create(); + if (!mac_ctx) + goto err; + s->write_hash = mac_ctx; + } + else + mac_ctx = ssl_replace_hash(&s->write_hash,NULL); #ifndef OPENSSL_NO_COMP if (s->compress != NULL) { From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 20:06:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CF4ED35B; Tue, 7 Jan 2014 20:06:21 +0000 (UTC) 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 AF7C718CE; Tue, 7 Jan 2014 20:06: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 s07K6Lv0071945; Tue, 7 Jan 2014 20:06:21 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07K6KRW071937; Tue, 7 Jan 2014 20:06:20 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201401072006.s07K6KRW071937@svn.freebsd.org> From: Xin LI Date: Tue, 7 Jan 2014 20:06:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260405 - releng/10.0/crypto/openssl/ssl X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 20:06:21 -0000 Author: delphij Date: Tue Jan 7 20:06:20 2014 New Revision: 260405 URL: http://svnweb.freebsd.org/changeset/base/260405 Log: MFS r260404 (MFC r260403 (MFV r260399)): Apply vendor commits: 197e0ea Fix for TLS record tampering bug. (CVE-2013-4353). 3462896 For DTLS we might need to retransmit messages from the previous session so keep a copy of write context in DTLS retransmission buffers instead of replacing it after sending CCS. (CVE-2013-6450). ca98926 When deciding whether to use TLS 1.2 PRF and record hash algorithms use the version number in the corresponding SSL_METHOD structure instead of the SSL structure. The SSL structure version is sometimes inaccurate. Note: OpenSSL 1.0.2 and later effectively do this already. (CVE-2013-6449). Security: CVE-2013-4353 Security: CVE-2013-6449 Security: CVE-2013-6450 Approved by: re (gjb) Modified: releng/10.0/crypto/openssl/ssl/d1_both.c releng/10.0/crypto/openssl/ssl/s3_both.c releng/10.0/crypto/openssl/ssl/s3_lib.c releng/10.0/crypto/openssl/ssl/ssl_locl.h releng/10.0/crypto/openssl/ssl/t1_enc.c Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/crypto/openssl/ssl/d1_both.c ============================================================================== --- releng/10.0/crypto/openssl/ssl/d1_both.c Tue Jan 7 20:04:41 2014 (r260404) +++ releng/10.0/crypto/openssl/ssl/d1_both.c Tue Jan 7 20:06:20 2014 (r260405) @@ -214,6 +214,12 @@ dtls1_hm_fragment_new(unsigned long frag static void dtls1_hm_fragment_free(hm_fragment *frag) { + + if (frag->msg_header.is_ccs) + { + EVP_CIPHER_CTX_free(frag->msg_header.saved_retransmit_state.enc_write_ctx); + EVP_MD_CTX_destroy(frag->msg_header.saved_retransmit_state.write_hash); + } if (frag->fragment) OPENSSL_free(frag->fragment); if (frag->reassembly) OPENSSL_free(frag->reassembly); OPENSSL_free(frag); Modified: releng/10.0/crypto/openssl/ssl/s3_both.c ============================================================================== --- releng/10.0/crypto/openssl/ssl/s3_both.c Tue Jan 7 20:04:41 2014 (r260404) +++ releng/10.0/crypto/openssl/ssl/s3_both.c Tue Jan 7 20:06:20 2014 (r260405) @@ -208,7 +208,11 @@ static void ssl3_take_mac(SSL *s) { const char *sender; int slen; - + /* If no new cipher setup return immediately: other functions will + * set the appropriate error. + */ + if (s->s3->tmp.new_cipher == NULL) + return; if (s->state & SSL_ST_CONNECT) { sender=s->method->ssl3_enc->server_finished_label; Modified: releng/10.0/crypto/openssl/ssl/s3_lib.c ============================================================================== --- releng/10.0/crypto/openssl/ssl/s3_lib.c Tue Jan 7 20:04:41 2014 (r260404) +++ releng/10.0/crypto/openssl/ssl/s3_lib.c Tue Jan 7 20:06:20 2014 (r260405) @@ -4274,7 +4274,7 @@ need to go to SSL_ST_ACCEPT. long ssl_get_algorithm2(SSL *s) { long alg2 = s->s3->tmp.new_cipher->algorithm2; - if (TLS1_get_version(s) >= TLS1_2_VERSION && + if (s->method->version == TLS1_2_VERSION && alg2 == (SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF)) return SSL_HANDSHAKE_MAC_SHA256 | TLS1_PRF_SHA256; return alg2; Modified: releng/10.0/crypto/openssl/ssl/ssl_locl.h ============================================================================== --- releng/10.0/crypto/openssl/ssl/ssl_locl.h Tue Jan 7 20:04:41 2014 (r260404) +++ releng/10.0/crypto/openssl/ssl/ssl_locl.h Tue Jan 7 20:06:20 2014 (r260405) @@ -621,6 +621,8 @@ extern SSL3_ENC_METHOD TLSv1_enc_data; extern SSL3_ENC_METHOD SSLv3_enc_data; extern SSL3_ENC_METHOD DTLSv1_enc_data; +#define SSL_IS_DTLS(s) (s->method->version == DTLS1_VERSION) + #define IMPLEMENT_tls_meth_func(version, func_name, s_accept, s_connect, \ s_get_meth) \ const SSL_METHOD *func_name(void) \ Modified: releng/10.0/crypto/openssl/ssl/t1_enc.c ============================================================================== --- releng/10.0/crypto/openssl/ssl/t1_enc.c Tue Jan 7 20:04:41 2014 (r260404) +++ releng/10.0/crypto/openssl/ssl/t1_enc.c Tue Jan 7 20:06:20 2014 (r260405) @@ -414,15 +414,20 @@ int tls1_change_cipher_state(SSL *s, int s->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM; else s->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM; - if (s->enc_write_ctx != NULL) + if (s->enc_write_ctx != NULL && !SSL_IS_DTLS(s)) reuse_dd = 1; - else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) + else if ((s->enc_write_ctx=EVP_CIPHER_CTX_new()) == NULL) goto err; - else - /* make sure it's intialized in case we exit later with an error */ - EVP_CIPHER_CTX_init(s->enc_write_ctx); dd= s->enc_write_ctx; - mac_ctx = ssl_replace_hash(&s->write_hash,NULL); + if (SSL_IS_DTLS(s)) + { + mac_ctx = EVP_MD_CTX_create(); + if (!mac_ctx) + goto err; + s->write_hash = mac_ctx; + } + else + mac_ctx = ssl_replace_hash(&s->write_hash,NULL); #ifndef OPENSSL_NO_COMP if (s->compress != NULL) { From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 20:12:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D936F648; Tue, 7 Jan 2014 20:12:02 +0000 (UTC) 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 C5491197A; Tue, 7 Jan 2014 20:12: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 s07KC2L7075589; Tue, 7 Jan 2014 20:12:02 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07KC2g3075588; Tue, 7 Jan 2014 20:12:02 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201401072012.s07KC2g3075588@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Tue, 7 Jan 2014 20:12:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260406 - releng/10.0/sys/sys X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 20:12:02 -0000 Author: pjd Date: Tue Jan 7 20:12:02 2014 New Revision: 260406 URL: http://svnweb.freebsd.org/changeset/base/260406 Log: MFstable/10 r260402: Bring back the old size of the kinfo_file structure to preserve ABI. Keep only one uint64_t spare for further cap_rights_t expension. Add a comment clarifying that if the size of this structure changes, a new sysctl MIB has to be allocate for it and the old structure has to be returned by the old sysctl MIB. Requested by: re Approved by: re (gjb) Modified: releng/10.0/sys/sys/user.h Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/sys/sys/user.h ============================================================================== --- releng/10.0/sys/sys/user.h Tue Jan 7 20:06:20 2014 (r260405) +++ releng/10.0/sys/sys/user.h Tue Jan 7 20:12:02 2014 (r260406) @@ -320,7 +320,13 @@ struct kinfo_ofile { }; #if defined(__amd64__) || defined(__i386__) -#define KINFO_FILE_SIZE 1424 +/* + * This size should never be changed. If you really need to, you must provide + * backward ABI compatibility by allocating a new sysctl MIB that will return + * the new structure. The current structure has to be returned by the current + * sysctl MIB. See how it is done for the kinfo_ofile structure. + */ +#define KINFO_FILE_SIZE 1392 #endif struct kinfo_file { @@ -391,8 +397,7 @@ struct kinfo_file { uint16_t kf_pad1; /* Round to 32 bit alignment. */ int _kf_ispare0; /* Space for more stuff. */ cap_rights_t kf_cap_rights; /* Capability rights. */ - uint64_t _kf_cap_spare[3]; /* Space for future cap_rights_t. */ - int _kf_ispare[4]; /* Space for more stuff. */ + uint64_t _kf_cap_spare; /* Space for future cap_rights_t. */ /* Truncated before copyout in sysctl */ char kf_path[PATH_MAX]; /* Path to file, if any. */ }; From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 20:12:10 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C36D0769; Tue, 7 Jan 2014 20:12:10 +0000 (UTC) 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 A78B3197B; Tue, 7 Jan 2014 20:12: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 s07KCAwP075648; Tue, 7 Jan 2014 20:12:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07KCAQ8075647; Tue, 7 Jan 2014 20:12:10 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401072012.s07KCAQ8075647@svn.freebsd.org> From: Alexander Motin Date: Tue, 7 Jan 2014 20:12:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260407 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 20:12:10 -0000 Author: mav Date: Tue Jan 7 20:12:10 2014 New Revision: 260407 URL: http://svnweb.freebsd.org/changeset/base/260407 Log: Allow delete_method sysctl to be set to "DISABLE". Modified: head/sys/cam/scsi/scsi_da.c Modified: head/sys/cam/scsi/scsi_da.c ============================================================================== --- head/sys/cam/scsi/scsi_da.c Tue Jan 7 20:12:02 2014 (r260406) +++ head/sys/cam/scsi/scsi_da.c Tue Jan 7 20:12:10 2014 (r260407) @@ -1959,7 +1959,7 @@ dadeletemethodsysctl(SYSCTL_HANDLER_ARGS char buf[16]; const char *p; struct da_softc *softc; - int i, error, value; + int i, error, methods, value; softc = (struct da_softc *)arg1; @@ -1972,8 +1972,9 @@ dadeletemethodsysctl(SYSCTL_HANDLER_ARGS error = sysctl_handle_string(oidp, buf, sizeof(buf), req); if (error != 0 || req->newptr == NULL) return (error); + methods = softc->delete_available | (1 << DA_DELETE_DISABLE); for (i = 0; i <= DA_DELETE_MAX; i++) { - if (!(softc->delete_available & (1 << i)) || + if (!(methods & (1 << i)) || strcmp(buf, da_delete_method_names[i]) != 0) continue; dadeletemethodset(softc, i); From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 20:24:25 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BD48FA4A; Tue, 7 Jan 2014 20:24:25 +0000 (UTC) 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 A97A21A57; Tue, 7 Jan 2014 20:24: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 s07KOPs1079827; Tue, 7 Jan 2014 20:24:25 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07KOPxA079826; Tue, 7 Jan 2014 20:24:25 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401072024.s07KOPxA079826@svn.freebsd.org> From: Adrian Chadd Date: Tue, 7 Jan 2014 20:24:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260408 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 20:24:25 -0000 Author: adrian Date: Tue Jan 7 20:24:25 2014 New Revision: 260408 URL: http://svnweb.freebsd.org/changeset/base/260408 Log: Reserve an event type for the upcoming EVENT_SENDFILE and extend the event struct pointer union to allow for 'other' types. Sponsored by: Netflix, Inc. Modified: head/sys/sys/event.h Modified: head/sys/sys/event.h ============================================================================== --- head/sys/sys/event.h Tue Jan 7 20:12:10 2014 (r260407) +++ head/sys/sys/event.h Tue Jan 7 20:24:25 2014 (r260408) @@ -42,7 +42,8 @@ #define EVFILT_FS (-9) /* filesystem events */ #define EVFILT_LIO (-10) /* attached to lio requests */ #define EVFILT_USER (-11) /* User events */ -#define EVFILT_SYSCOUNT 11 +#define EVFILT_SENDFILE (-12) /* attached to sendfile requests */ +#define EVFILT_SYSCOUNT 12 #define EV_SET(kevp_, a, b, c, d, e, f) do { \ struct kevent *kevp = (kevp_); \ @@ -212,7 +213,8 @@ struct knote { struct file *p_fp; /* file data pointer */ struct proc *p_proc; /* proc pointer */ struct aiocblist *p_aio; /* AIO job pointer */ - struct aioliojob *p_lio; /* LIO job pointer */ + struct aioliojob *p_lio; /* LIO job pointer */ + void *p_v; /* generic other pointer */ } kn_ptr; struct filterops *kn_fop; void *kn_hook; From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 20:36:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 13F37E30; Tue, 7 Jan 2014 20:36:16 +0000 (UTC) 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 F41751B16; Tue, 7 Jan 2014 20:36: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 s07KaFHH083950; Tue, 7 Jan 2014 20:36:15 GMT (envelope-from mjg@svn.freebsd.org) Received: (from mjg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07KaF54083949; Tue, 7 Jan 2014 20:36:15 GMT (envelope-from mjg@svn.freebsd.org) Message-Id: <201401072036.s07KaF54083949@svn.freebsd.org> From: Mateusz Guzik Date: Tue, 7 Jan 2014 20:36:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260409 - releng/10.0/sys/kern X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 20:36:16 -0000 Author: mjg Date: Tue Jan 7 20:36:15 2014 New Revision: 260409 URL: http://svnweb.freebsd.org/changeset/base/260409 Log: MFC r260232: Don't check for fd limits in fdgrowtable_exp. Callers do that already and additional check races with process decreasing limits and can result in not growing the table at all, which is currently not handled. Approved by: re Modified: releng/10.0/sys/kern/kern_descrip.c Directory Properties: releng/10.0/ (props changed) Modified: releng/10.0/sys/kern/kern_descrip.c ============================================================================== --- releng/10.0/sys/kern/kern_descrip.c Tue Jan 7 20:24:25 2014 (r260408) +++ releng/10.0/sys/kern/kern_descrip.c Tue Jan 7 20:36:15 2014 (r260409) @@ -1482,18 +1482,13 @@ filecaps_validate(const struct filecaps static void fdgrowtable_exp(struct filedesc *fdp, int nfd) { - int nfd1, maxfd; + int nfd1; FILEDESC_XLOCK_ASSERT(fdp); nfd1 = fdp->fd_nfiles * 2; if (nfd1 < nfd) nfd1 = nfd; - maxfd = getmaxfd(curproc); - if (maxfd < nfd1) - nfd1 = maxfd; - KASSERT(nfd <= nfd1, - ("too low nfd1 %d %d %d %d", nfd, fdp->fd_nfiles, maxfd, nfd1)); fdgrowtable(fdp, nfd1); } From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 21:04:51 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 487C1704; Tue, 7 Jan 2014 21:04:51 +0000 (UTC) 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 339B71E32; Tue, 7 Jan 2014 21:04: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 s07L4pQS095415; Tue, 7 Jan 2014 21:04:51 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07L4ofj095408; Tue, 7 Jan 2014 21:04:50 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401072104.s07L4ofj095408@svn.freebsd.org> From: Neel Natu Date: Tue, 7 Jan 2014 21:04:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260410 - in head/sys/amd64/vmm: . intel io X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 21:04:51 -0000 Author: neel Date: Tue Jan 7 21:04:49 2014 New Revision: 260410 URL: http://svnweb.freebsd.org/changeset/base/260410 Log: Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by hardware. It is possible to turn this feature off and fall back to software emulation of the APIC by setting the tunable hw.vmm.vmx.use_apic_vid to 0. We now start handling two new types of VM-exits: APIC-access: This is a fault-like VM-exit and is triggered when the APIC register access is not accelerated (e.g. apic timer CCR). In response to this we do emulate the instruction that triggered the APIC-access exit. APIC-write: This is a trap-like VM-exit which does not require any instruction emulation but it does require the hypervisor to emulate the access to the specified register (e.g. icrlo register). Introduce 'vlapic_ops' which are function pointers to vector the various vlapic operations into processor-dependent code. The 'Virtual Interrupt Delivery' feature installs 'ops' for setting the IRR bits in the virtual APIC page and to return whether any interrupts are pending for this vcpu. Tested on an "Intel Xeon E5-2620 v2" courtesy of Allan Jude at ScaleEngine. Modified: head/sys/amd64/vmm/intel/vmcs.h head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/intel/vmx_controls.h head/sys/amd64/vmm/io/vlapic.c head/sys/amd64/vmm/io/vlapic_priv.h head/sys/amd64/vmm/vmm.c Modified: head/sys/amd64/vmm/intel/vmcs.h ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.h Tue Jan 7 20:36:15 2014 (r260409) +++ head/sys/amd64/vmm/intel/vmcs.h Tue Jan 7 21:04:49 2014 (r260410) @@ -107,6 +107,7 @@ vmcs_write(uint32_t encoding, uint64_t v #define VMCS_GUEST_GS_SELECTOR 0x0000080A #define VMCS_GUEST_LDTR_SELECTOR 0x0000080C #define VMCS_GUEST_TR_SELECTOR 0x0000080E +#define VMCS_GUEST_INTR_STATUS 0x00000810 /* 16-bit host-state fields */ #define VMCS_HOST_ES_SELECTOR 0x00000C00 @@ -129,6 +130,10 @@ vmcs_write(uint32_t encoding, uint64_t v #define VMCS_VIRTUAL_APIC 0x00002012 #define VMCS_APIC_ACCESS 0x00002014 #define VMCS_EPTP 0x0000201A +#define VMCS_EOI_EXIT0 0x0000201C +#define VMCS_EOI_EXIT1 0x0000201E +#define VMCS_EOI_EXIT2 0x00002020 +#define VMCS_EOI_EXIT3 0x00002022 /* 64-bit read-only fields */ #define VMCS_GUEST_PHYSICAL_ADDRESS 0x00002400 @@ -310,7 +315,7 @@ vmcs_write(uint32_t encoding, uint64_t v #define EXIT_REASON_PAUSE 40 #define EXIT_REASON_MCE 41 #define EXIT_REASON_TPR 43 -#define EXIT_REASON_APIC 44 +#define EXIT_REASON_APIC_ACCESS 44 #define EXIT_REASON_GDTR_IDTR 46 #define EXIT_REASON_LDTR_TR 47 #define EXIT_REASON_EPT_FAULT 48 @@ -321,6 +326,7 @@ vmcs_write(uint32_t encoding, uint64_t v #define EXIT_REASON_INVVPID 53 #define EXIT_REASON_WBINVD 54 #define EXIT_REASON_XSETBV 55 +#define EXIT_REASON_APIC_WRITE 56 /* * VMCS interrupt information fields @@ -360,4 +366,15 @@ vmcs_write(uint32_t encoding, uint64_t v #define EPT_VIOLATION_GLA_VALID (1UL << 7) #define EPT_VIOLATION_XLAT_VALID (1UL << 8) +/* + * Exit qualification for APIC-access VM exit + */ +#define APIC_ACCESS_OFFSET(qual) ((qual) & 0xFFF) +#define APIC_ACCESS_TYPE(qual) (((qual) >> 12) & 0xF) + +/* + * Exit qualification for APIC-write VM exit + */ +#define APIC_WRITE_OFFSET(qual) ((qual) & 0xFFF) + #endif Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Tue Jan 7 20:36:15 2014 (r260409) +++ head/sys/amd64/vmm/intel/vmx.c Tue Jan 7 21:04:49 2014 (r260410) @@ -166,12 +166,25 @@ static int cap_pause_exit; static int cap_unrestricted_guest; static int cap_monitor_trap; static int cap_invpcid; - + +static int virtual_interrupt_delivery; +SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, virtual_interrupt_delivery, CTLFLAG_RD, + &virtual_interrupt_delivery, 0, "APICv virtual interrupt delivery support"); + static struct unrhdr *vpid_unr; static u_int vpid_alloc_failed; SYSCTL_UINT(_hw_vmm_vmx, OID_AUTO, vpid_alloc_failed, CTLFLAG_RD, &vpid_alloc_failed, 0, NULL); +/* + * Use the last page below 4GB as the APIC access address. This address is + * occupied by the boot firmware so it is guaranteed that it will not conflict + * with a page in system memory. + */ +#define APIC_ACCESS_ADDRESS 0xFFFFF000 + +static void vmx_inject_pir(struct vlapic *vlapic); + #ifdef KTR static const char * exit_reason_to_str(int reason) @@ -261,8 +274,8 @@ exit_reason_to_str(int reason) return "mce"; case EXIT_REASON_TPR: return "tpr"; - case EXIT_REASON_APIC: - return "apic"; + case EXIT_REASON_APIC_ACCESS: + return "apic-access"; case EXIT_REASON_GDTR_IDTR: return "gdtridtr"; case EXIT_REASON_LDTR_TR: @@ -283,6 +296,8 @@ exit_reason_to_str(int reason) return "wbinvd"; case EXIT_REASON_XSETBV: return "xsetbv"; + case EXIT_REASON_APIC_WRITE: + return "apic-write"; default: snprintf(reasonbuf, sizeof(reasonbuf), "%d", reason); return (reasonbuf); @@ -461,9 +476,9 @@ vmx_restore(void) static int vmx_init(void) { - int error; + int error, use_tpr_shadow; uint64_t fixed0, fixed1, feature_control; - uint32_t tmp; + uint32_t tmp, procbased2_vid_bits; /* CPUID.1:ECX[bit 5] must be 1 for processor to support VMX */ if (!(cpu_feature2 & CPUID2_VMX)) { @@ -597,6 +612,31 @@ vmx_init(void) MSR_VMX_PROCBASED_CTLS2, PROCBASED2_ENABLE_INVPCID, 0, &tmp) == 0); + /* + * Check support for virtual interrupt delivery. + */ + procbased2_vid_bits = (PROCBASED2_VIRTUALIZE_APIC_ACCESSES | + PROCBASED2_VIRTUALIZE_X2APIC_MODE | + PROCBASED2_APIC_REGISTER_VIRTUALIZATION | + PROCBASED2_VIRTUAL_INTERRUPT_DELIVERY); + + use_tpr_shadow = (vmx_set_ctlreg(MSR_VMX_PROCBASED_CTLS, + MSR_VMX_TRUE_PROCBASED_CTLS, PROCBASED_USE_TPR_SHADOW, 0, + &tmp) == 0); + + error = vmx_set_ctlreg(MSR_VMX_PROCBASED_CTLS2, MSR_VMX_PROCBASED_CTLS2, + procbased2_vid_bits, 0, &tmp); + if (error == 0 && use_tpr_shadow) { + virtual_interrupt_delivery = 1; + TUNABLE_INT_FETCH("hw.vmm.vmx.use_apic_vid", + &virtual_interrupt_delivery); + } + + if (virtual_interrupt_delivery) { + procbased_ctls |= PROCBASED_USE_TPR_SHADOW; + procbased_ctls2 |= procbased2_vid_bits; + procbased_ctls2 &= ~PROCBASED2_VIRTUALIZE_X2APIC_MODE; + } /* Initialize EPT */ error = ept_init(); @@ -743,6 +783,13 @@ vmx_vminit(struct vm *vm, pmap_t pmap) vpid_alloc(vpid, VM_MAXCPU); + if (virtual_interrupt_delivery) { + error = vm_map_mmio(vm, DEFAULT_APIC_BASE, PAGE_SIZE, + APIC_ACCESS_ADDRESS); + /* XXX this should really return an error to the caller */ + KASSERT(error == 0, ("vm_map_mmio(apicbase) error %d", error)); + } + for (i = 0; i < VM_MAXCPU; i++) { vmcs = &vmx->vmcs[i]; vmcs->identifier = vmx_revision(); @@ -766,6 +813,15 @@ vmx_vminit(struct vm *vm, pmap_t pmap) error += vmwrite(VMCS_ENTRY_CTLS, entry_ctls); error += vmwrite(VMCS_MSR_BITMAP, vtophys(vmx->msr_bitmap)); error += vmwrite(VMCS_VPID, vpid[i]); + if (virtual_interrupt_delivery) { + error += vmwrite(VMCS_APIC_ACCESS, APIC_ACCESS_ADDRESS); + error += vmwrite(VMCS_VIRTUAL_APIC, + vtophys(&vmx->apic_page[i])); + error += vmwrite(VMCS_EOI_EXIT0, 0); + error += vmwrite(VMCS_EOI_EXIT1, 0); + error += vmwrite(VMCS_EOI_EXIT2, 0); + error += vmwrite(VMCS_EOI_EXIT3, 0); + } VMCLEAR(vmcs); KASSERT(error == 0, ("vmx_vminit: error customizing the vmcs")); @@ -988,6 +1044,11 @@ vmx_inject_interrupts(struct vmx *vmx, i if (vmx_inject_nmi(vmx, vcpu)) return; + if (virtual_interrupt_delivery) { + vmx_inject_pir(vlapic); + return; + } + /* Ask the local apic for a vector to inject */ if (!vlapic_pending_intr(vlapic, &vector)) return; @@ -1181,10 +1242,140 @@ ept_emulation_fault(uint64_t ept_qual) } static int +vmx_handle_apic_write(struct vlapic *vlapic, uint64_t qual) +{ + int error, handled, offset; + bool retu; + + if (!virtual_interrupt_delivery) + return (UNHANDLED); + + handled = 1; + offset = APIC_WRITE_OFFSET(qual); + switch (offset) { + case APIC_OFFSET_ID: + vlapic_id_write_handler(vlapic); + break; + case APIC_OFFSET_LDR: + vlapic_ldr_write_handler(vlapic); + break; + case APIC_OFFSET_DFR: + vlapic_dfr_write_handler(vlapic); + break; + case APIC_OFFSET_SVR: + vlapic_svr_write_handler(vlapic); + break; + case APIC_OFFSET_ESR: + vlapic_esr_write_handler(vlapic); + break; + case APIC_OFFSET_ICR_LOW: + retu = false; + error = vlapic_icrlo_write_handler(vlapic, &retu); + if (error != 0 || retu) + handled = 0; + break; + case APIC_OFFSET_CMCI_LVT: + case APIC_OFFSET_TIMER_LVT ... APIC_OFFSET_ERROR_LVT: + vlapic_lvt_write_handler(vlapic, offset); + break; + case APIC_OFFSET_TIMER_ICR: + vlapic_icrtmr_write_handler(vlapic); + break; + case APIC_OFFSET_TIMER_DCR: + vlapic_dcr_write_handler(vlapic); + break; + default: + handled = 0; + break; + } + return (handled); +} + +static bool +apic_access_fault(uint64_t gpa) +{ + + if (virtual_interrupt_delivery && + (gpa >= DEFAULT_APIC_BASE && gpa < DEFAULT_APIC_BASE + PAGE_SIZE)) + return (true); + else + return (false); +} + +static int +vmx_handle_apic_access(struct vmx *vmx, int vcpuid, struct vm_exit *vmexit) +{ + uint64_t qual; + int access_type, offset, allowed; + + if (!virtual_interrupt_delivery) + return (UNHANDLED); + + qual = vmexit->u.vmx.exit_qualification; + access_type = APIC_ACCESS_TYPE(qual); + offset = APIC_ACCESS_OFFSET(qual); + + allowed = 0; + if (access_type == 0) { + /* + * Read data access to the following registers is expected. + */ + switch (offset) { + case APIC_OFFSET_APR: + case APIC_OFFSET_PPR: + case APIC_OFFSET_RRR: + case APIC_OFFSET_CMCI_LVT: + case APIC_OFFSET_TIMER_CCR: + allowed = 1; + break; + default: + break; + } + } else if (access_type == 1) { + /* + * Write data access to the following registers is expected. + */ + switch (offset) { + case APIC_OFFSET_VER: + case APIC_OFFSET_APR: + case APIC_OFFSET_PPR: + case APIC_OFFSET_RRR: + case APIC_OFFSET_ISR0 ... APIC_OFFSET_ISR7: + case APIC_OFFSET_TMR0 ... APIC_OFFSET_TMR7: + case APIC_OFFSET_IRR0 ... APIC_OFFSET_IRR7: + case APIC_OFFSET_CMCI_LVT: + case APIC_OFFSET_TIMER_CCR: + allowed = 1; + break; + default: + break; + } + } + + if (allowed) { + vmexit->exitcode = VM_EXITCODE_INST_EMUL; + vmexit->u.inst_emul.gpa = DEFAULT_APIC_BASE + offset; + vmexit->u.inst_emul.gla = VIE_INVALID_GLA; + vmexit->u.inst_emul.cr3 = vmcs_guest_cr3(); + } + + /* + * Regardless of whether the APIC-access is allowed this handler + * always returns UNHANDLED: + * - if the access is allowed then it is handled by emulating the + * instruction that caused the VM-exit (outside the critical section) + * - if the access is not allowed then it will be converted to an + * exitcode of VM_EXITCODE_VMX and will be dealt with in userland. + */ + return (UNHANDLED); +} + +static int vmx_exit_process(struct vmx *vmx, int vcpu, struct vm_exit *vmexit) { int error, handled; struct vmxctx *vmxctx; + struct vlapic *vlapic; uint32_t eax, ecx, edx, idtvec_info, idtvec_err, reason; uint64_t qual, gpa; bool retu; @@ -1209,7 +1400,7 @@ vmx_exit_process(struct vmx *vmx, int vc switch (reason) { case EXIT_REASON_EPT_FAULT: case EXIT_REASON_EPT_MISCONFIG: - case EXIT_REASON_APIC: + case EXIT_REASON_APIC_ACCESS: case EXIT_REASON_TASK_SWITCH: case EXIT_REASON_EXCEPTION: idtvec_info = vmcs_idt_vectoring_info(); @@ -1331,7 +1522,7 @@ vmx_exit_process(struct vmx *vmx, int vc * this must be an instruction that accesses MMIO space. */ gpa = vmcs_gpa(); - if (vm_mem_allocated(vmx->vm, gpa)) { + if (vm_mem_allocated(vmx->vm, gpa) || apic_access_fault(gpa)) { vmexit->exitcode = VM_EXITCODE_PAGING; vmexit->u.paging.gpa = gpa; vmexit->u.paging.fault_type = ept_fault_type(qual); @@ -1342,6 +1533,18 @@ vmx_exit_process(struct vmx *vmx, int vc vmexit->u.inst_emul.cr3 = vmcs_guest_cr3(); } break; + case EXIT_REASON_APIC_ACCESS: + handled = vmx_handle_apic_access(vmx, vcpu, vmexit); + break; + case EXIT_REASON_APIC_WRITE: + /* + * APIC-write VM exit is trap-like so the %rip is already + * pointing to the next instruction. + */ + vmexit->inst_length = 0; + vlapic = vm_lapic(vmx->vm, vcpu); + handled = vmx_handle_apic_write(vlapic, qual); + break; default: vmm_stat_incr(vmx->vm, vcpu, VMEXIT_UNKNOWN, 1); break; @@ -1532,6 +1735,9 @@ vmx_vmcleanup(void *arg) int i, error; struct vmx *vmx = arg; + if (virtual_interrupt_delivery) + vm_unmap_mmio(vmx->vm, DEFAULT_APIC_BASE, PAGE_SIZE); + for (i = 0; i < VM_MAXCPU; i++) vpid_free(vmx->state[i].vpid); @@ -1895,6 +2101,195 @@ vmx_setcap(void *arg, int vcpu, int type return (retval); } +/* + * Posted Interrupt Descriptor (described in section 29.6 of the Intel SDM). + */ +struct pir_desc { + uint64_t pir[4]; + uint64_t pending; + uint64_t unused[3]; +} __aligned(64); +CTASSERT(sizeof(struct pir_desc) == 64); + +struct vlapic_vtx { + struct vlapic vlapic; + struct pir_desc pir_desc; +}; + +#define VMX_CTR_PIR(vm, vcpuid, pir_desc, notify, vector, level, msg) \ +do { \ + VCPU_CTR2(vm, vcpuid, msg " assert %s-triggered vector %d", \ + level ? "level" : "edge", vector); \ + VCPU_CTR1(vm, vcpuid, msg " pir0 0x%016lx", pir_desc->pir[0]); \ + VCPU_CTR1(vm, vcpuid, msg " pir1 0x%016lx", pir_desc->pir[1]); \ + VCPU_CTR1(vm, vcpuid, msg " pir2 0x%016lx", pir_desc->pir[2]); \ + VCPU_CTR1(vm, vcpuid, msg " pir3 0x%016lx", pir_desc->pir[3]); \ + VCPU_CTR1(vm, vcpuid, msg " notify: %s", notify ? "yes" : "no");\ +} while (0) + +/* + * vlapic->ops handlers that utilize the APICv hardware assist described in + * Chapter 29 of the Intel SDM. + */ +static int +vmx_set_intr_ready(struct vlapic *vlapic, int vector, bool level) +{ + struct vlapic_vtx *vlapic_vtx; + struct pir_desc *pir_desc; + uint64_t mask; + int idx, notify; + + /* + * XXX need to deal with level triggered interrupts + */ + vlapic_vtx = (struct vlapic_vtx *)vlapic; + pir_desc = &vlapic_vtx->pir_desc; + + /* + * Keep track of interrupt requests in the PIR descriptor. This is + * because the virtual APIC page pointed to by the VMCS cannot be + * modified if the vcpu is running. + */ + idx = vector / 64; + mask = 1UL << (vector % 64); + atomic_set_long(&pir_desc->pir[idx], mask); + notify = atomic_cmpset_long(&pir_desc->pending, 0, 1); + + VMX_CTR_PIR(vlapic->vm, vlapic->vcpuid, pir_desc, notify, vector, + level, "vmx_set_intr_ready"); + return (notify); +} + +static int +vmx_pending_intr(struct vlapic *vlapic, int *vecptr) +{ + struct vlapic_vtx *vlapic_vtx; + struct pir_desc *pir_desc; + struct LAPIC *lapic; + uint64_t pending, pirval; + uint32_t ppr, vpr; + int i; + + /* + * This function is only expected to be called from the 'HLT' exit + * handler which does not care about the vector that is pending. + */ + KASSERT(vecptr == NULL, ("vmx_pending_intr: vecptr must be NULL")); + + vlapic_vtx = (struct vlapic_vtx *)vlapic; + pir_desc = &vlapic_vtx->pir_desc; + + pending = atomic_load_acq_long(&pir_desc->pending); + if (!pending) + return (0); /* common case */ + + /* + * If there is an interrupt pending then it will be recognized only + * if its priority is greater than the processor priority. + * + * Special case: if the processor priority is zero then any pending + * interrupt will be recognized. + */ + lapic = vlapic->apic_page; + ppr = lapic->ppr & 0xf0; + if (ppr == 0) + return (1); + + VCPU_CTR1(vlapic->vm, vlapic->vcpuid, "HLT with non-zero PPR %d", + lapic->ppr); + + for (i = 3; i >= 0; i--) { + pirval = pir_desc->pir[i]; + if (pirval != 0) { + vpr = (i * 64 + flsl(pirval) - 1) & 0xf0; + return (vpr > ppr); + } + } + return (0); +} + +static void +vmx_intr_accepted(struct vlapic *vlapic, int vector) +{ + + panic("vmx_intr_accepted: not expected to be called"); +} + +/* + * Transfer the pending interrupts in the PIR descriptor to the IRR + * in the virtual APIC page. + */ +static void +vmx_inject_pir(struct vlapic *vlapic) +{ + struct vlapic_vtx *vlapic_vtx; + struct pir_desc *pir_desc; + struct LAPIC *lapic; + uint64_t val, pirval; + int rvi, pirbase; + uint16_t intr_status_old, intr_status_new; + + vlapic_vtx = (struct vlapic_vtx *)vlapic; + pir_desc = &vlapic_vtx->pir_desc; + if (atomic_cmpset_long(&pir_desc->pending, 1, 0) == 0) { + VCPU_CTR0(vlapic->vm, vlapic->vcpuid, "vmx_inject_pir: " + "no posted interrupt pending"); + return; + } + + pirval = 0; + lapic = vlapic->apic_page; + + val = atomic_readandclear_long(&pir_desc->pir[0]); + if (val != 0) { + lapic->irr0 |= val; + lapic->irr1 |= val >> 32; + pirbase = 0; + pirval = val; + } + + val = atomic_readandclear_long(&pir_desc->pir[1]); + if (val != 0) { + lapic->irr2 |= val; + lapic->irr3 |= val >> 32; + pirbase = 64; + pirval = val; + } + + val = atomic_readandclear_long(&pir_desc->pir[2]); + if (val != 0) { + lapic->irr4 |= val; + lapic->irr5 |= val >> 32; + pirbase = 128; + pirval = val; + } + + val = atomic_readandclear_long(&pir_desc->pir[3]); + if (val != 0) { + lapic->irr6 |= val; + lapic->irr7 |= val >> 32; + pirbase = 192; + pirval = val; + } + VLAPIC_CTR_IRR(vlapic, "vmx_inject_pir"); + + /* + * Update RVI so the processor can evaluate pending virtual + * interrupts on VM-entry. + */ + if (pirval != 0) { + rvi = pirbase + flsl(pirval) - 1; + intr_status_old = vmcs_read(VMCS_GUEST_INTR_STATUS); + intr_status_new = (intr_status_old & 0xFF00) | rvi; + if (intr_status_new > intr_status_old) { + vmcs_write(VMCS_GUEST_INTR_STATUS, intr_status_new); + VCPU_CTR2(vlapic->vm, vlapic->vcpuid, "vmx_inject_pir: " + "guest_intr_status changed from 0x%04x to 0x%04x", + intr_status_old, intr_status_new); + } + } +} + static struct vlapic * vmx_vlapic_init(void *arg, int vcpuid) { @@ -1903,11 +2298,17 @@ vmx_vlapic_init(void *arg, int vcpuid) vmx = arg; - vlapic = malloc(sizeof(struct vlapic), M_VLAPIC, M_WAITOK | M_ZERO); + vlapic = malloc(sizeof(struct vlapic_vtx), M_VLAPIC, M_WAITOK | M_ZERO); vlapic->vm = vmx->vm; vlapic->vcpuid = vcpuid; vlapic->apic_page = (struct LAPIC *)&vmx->apic_page[vcpuid]; + if (virtual_interrupt_delivery) { + vlapic->ops.set_intr_ready = vmx_set_intr_ready; + vlapic->ops.pending_intr = vmx_pending_intr; + vlapic->ops.intr_accepted = vmx_intr_accepted; + } + vlapic_init(vlapic); return (vlapic); Modified: head/sys/amd64/vmm/intel/vmx_controls.h ============================================================================== --- head/sys/amd64/vmm/intel/vmx_controls.h Tue Jan 7 20:36:15 2014 (r260409) +++ head/sys/amd64/vmm/intel/vmx_controls.h Tue Jan 7 21:04:49 2014 (r260410) @@ -34,6 +34,7 @@ #define PINBASED_NMI_EXITING (1 << 3) #define PINBASED_VIRTUAL_NMI (1 << 5) #define PINBASED_PREMPTION_TIMER (1 << 6) +#define PINBASED_POSTED_INTERRUPT (1 << 7) /* Primary Processor-Based VM-Execution Controls */ #define PROCBASED_INT_WINDOW_EXITING (1 << 2) @@ -59,16 +60,18 @@ #define PROCBASED_SECONDARY_CONTROLS (1U << 31) /* Secondary Processor-Based VM-Execution Controls */ -#define PROCBASED2_VIRTUALIZE_APIC (1 << 0) -#define PROCBASED2_ENABLE_EPT (1 << 1) -#define PROCBASED2_DESC_TABLE_EXITING (1 << 2) -#define PROCBASED2_ENABLE_RDTSCP (1 << 3) -#define PROCBASED2_VIRTUALIZE_X2APIC (1 << 4) -#define PROCBASED2_ENABLE_VPID (1 << 5) -#define PROCBASED2_WBINVD_EXITING (1 << 6) -#define PROCBASED2_UNRESTRICTED_GUEST (1 << 7) -#define PROCBASED2_PAUSE_LOOP_EXITING (1 << 10) -#define PROCBASED2_ENABLE_INVPCID (1 << 12) +#define PROCBASED2_VIRTUALIZE_APIC_ACCESSES (1 << 0) +#define PROCBASED2_ENABLE_EPT (1 << 1) +#define PROCBASED2_DESC_TABLE_EXITING (1 << 2) +#define PROCBASED2_ENABLE_RDTSCP (1 << 3) +#define PROCBASED2_VIRTUALIZE_X2APIC_MODE (1 << 4) +#define PROCBASED2_ENABLE_VPID (1 << 5) +#define PROCBASED2_WBINVD_EXITING (1 << 6) +#define PROCBASED2_UNRESTRICTED_GUEST (1 << 7) +#define PROCBASED2_APIC_REGISTER_VIRTUALIZATION (1 << 8) +#define PROCBASED2_VIRTUAL_INTERRUPT_DELIVERY (1 << 9) +#define PROCBASED2_PAUSE_LOOP_EXITING (1 << 10) +#define PROCBASED2_ENABLE_INVPCID (1 << 12) /* VM Exit Controls */ #define VM_EXIT_SAVE_DEBUG_CONTROLS (1 << 2) Modified: head/sys/amd64/vmm/io/vlapic.c ============================================================================== --- head/sys/amd64/vmm/io/vlapic.c Tue Jan 7 20:36:15 2014 (r260409) +++ head/sys/amd64/vmm/io/vlapic.c Tue Jan 7 21:04:49 2014 (r260410) @@ -54,43 +54,6 @@ __FBSDID("$FreeBSD$"); #include "vlapic_priv.h" #include "vioapic.h" -#define VLAPIC_CTR0(vlapic, format) \ - VCPU_CTR0((vlapic)->vm, (vlapic)->vcpuid, format) - -#define VLAPIC_CTR1(vlapic, format, p1) \ - VCPU_CTR1((vlapic)->vm, (vlapic)->vcpuid, format, p1) - -#define VLAPIC_CTR2(vlapic, format, p1, p2) \ - VCPU_CTR2((vlapic)->vm, (vlapic)->vcpuid, format, p1, p2) - -#define VLAPIC_CTR_IRR(vlapic, msg) \ -do { \ - uint32_t *irrptr = &(vlapic)->apic_page->irr0; \ - irrptr[0] = irrptr[0]; /* silence compiler */ \ - VLAPIC_CTR1((vlapic), msg " irr0 0x%08x", irrptr[0 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr1 0x%08x", irrptr[1 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr2 0x%08x", irrptr[2 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr3 0x%08x", irrptr[3 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr4 0x%08x", irrptr[4 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr5 0x%08x", irrptr[5 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr6 0x%08x", irrptr[6 << 2]); \ - VLAPIC_CTR1((vlapic), msg " irr7 0x%08x", irrptr[7 << 2]); \ -} while (0) - -#define VLAPIC_CTR_ISR(vlapic, msg) \ -do { \ - uint32_t *isrptr = &(vlapic)->apic_page->isr0; \ - isrptr[0] = isrptr[0]; /* silence compiler */ \ - VLAPIC_CTR1((vlapic), msg " isr0 0x%08x", isrptr[0 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr1 0x%08x", isrptr[1 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr2 0x%08x", isrptr[2 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr3 0x%08x", isrptr[3 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr4 0x%08x", isrptr[4 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr5 0x%08x", isrptr[5 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr6 0x%08x", isrptr[6 << 2]); \ - VLAPIC_CTR1((vlapic), msg " isr7 0x%08x", isrptr[7 << 2]); \ -} while (0) - #define PRIO(x) ((x) >> 4) #define VLAPIC_VERSION (16) @@ -312,6 +275,9 @@ vlapic_set_intr_ready(struct vlapic *vla return (1); } + if (vlapic->ops.set_intr_ready) + return ((*vlapic->ops.set_intr_ready)(vlapic, vector, level)); + idx = (vector / 32) * 4; mask = 1 << (vector % 32); @@ -1040,6 +1006,9 @@ vlapic_pending_intr(struct vlapic *vlapi int idx, i, bitpos, vector; uint32_t *irrptr, val; + if (vlapic->ops.pending_intr) + return ((*vlapic->ops.pending_intr)(vlapic, vecptr)); + irrptr = &lapic->irr0; /* @@ -1071,6 +1040,9 @@ vlapic_intr_accepted(struct vlapic *vlap uint32_t *irrptr, *isrptr; int idx, stk_top; + if (vlapic->ops.intr_accepted) + return ((*vlapic->ops.intr_accepted)(vlapic, vector)); + /* * clear the ready bit for vector being accepted in irr * and set the vector as in service in isr. @@ -1469,7 +1441,10 @@ vlapic_post_intr(struct vlapic *vlapic, * If neither of these features are available then fallback to * sending an IPI to 'hostcpu'. */ - ipi_cpu(hostcpu, vmm_ipinum); + if (vlapic->ops.post_intr) + (*vlapic->ops.post_intr)(vlapic, hostcpu); + else + ipi_cpu(hostcpu, vmm_ipinum); } bool Modified: head/sys/amd64/vmm/io/vlapic_priv.h ============================================================================== --- head/sys/amd64/vmm/io/vlapic_priv.h Tue Jan 7 20:36:15 2014 (r260409) +++ head/sys/amd64/vmm/io/vlapic_priv.h Tue Jan 7 21:04:49 2014 (r260410) @@ -82,6 +82,43 @@ #define APIC_OFFSET_TIMER_CCR 0x390 /* Timer's Current Count */ #define APIC_OFFSET_TIMER_DCR 0x3E0 /* Timer's Divide Configuration */ +#define VLAPIC_CTR0(vlapic, format) \ + VCPU_CTR0((vlapic)->vm, (vlapic)->vcpuid, format) + +#define VLAPIC_CTR1(vlapic, format, p1) \ + VCPU_CTR1((vlapic)->vm, (vlapic)->vcpuid, format, p1) + +#define VLAPIC_CTR2(vlapic, format, p1, p2) \ + VCPU_CTR2((vlapic)->vm, (vlapic)->vcpuid, format, p1, p2) + +#define VLAPIC_CTR_IRR(vlapic, msg) \ +do { \ + uint32_t *irrptr = &(vlapic)->apic_page->irr0; \ + irrptr[0] = irrptr[0]; /* silence compiler */ \ + VLAPIC_CTR1((vlapic), msg " irr0 0x%08x", irrptr[0 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr1 0x%08x", irrptr[1 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr2 0x%08x", irrptr[2 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr3 0x%08x", irrptr[3 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr4 0x%08x", irrptr[4 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr5 0x%08x", irrptr[5 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr6 0x%08x", irrptr[6 << 2]); \ + VLAPIC_CTR1((vlapic), msg " irr7 0x%08x", irrptr[7 << 2]); \ +} while (0) + +#define VLAPIC_CTR_ISR(vlapic, msg) \ +do { \ + uint32_t *isrptr = &(vlapic)->apic_page->isr0; \ + isrptr[0] = isrptr[0]; /* silence compiler */ \ + VLAPIC_CTR1((vlapic), msg " isr0 0x%08x", isrptr[0 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr1 0x%08x", isrptr[1 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr2 0x%08x", isrptr[2 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr3 0x%08x", isrptr[3 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr4 0x%08x", isrptr[4 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr5 0x%08x", isrptr[5 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr6 0x%08x", isrptr[6 << 2]); \ + VLAPIC_CTR1((vlapic), msg " isr7 0x%08x", isrptr[7 << 2]); \ +} while (0) + enum boot_state { BS_INIT, BS_SIPI, @@ -95,10 +132,20 @@ enum boot_state { #define VLAPIC_MAXLVT_INDEX APIC_LVT_CMCI +struct vlapic; + +struct vlapic_ops { + int (*set_intr_ready)(struct vlapic *vlapic, int vector, bool level); + int (*pending_intr)(struct vlapic *vlapic, int *vecptr); + void (*intr_accepted)(struct vlapic *vlapic, int vector); + void (*post_intr)(struct vlapic *vlapic, int hostcpu); +}; + struct vlapic { struct vm *vm; int vcpuid; struct LAPIC *apic_page; + struct vlapic_ops ops; uint32_t esr_pending; int esr_firing; Modified: head/sys/amd64/vmm/vmm.c ============================================================================== --- head/sys/amd64/vmm/vmm.c Tue Jan 7 20:36:15 2014 (r260409) +++ head/sys/amd64/vmm/vmm.c Tue Jan 7 21:04:49 2014 (r260410) @@ -321,6 +321,7 @@ vm_create(const char *name, struct vm ** vm = malloc(sizeof(struct vm), M_VM, M_WAITOK | M_ZERO); strcpy(vm->name, name); + vm->vmspace = vmspace; vm->cookie = VMINIT(vm, vmspace_pmap(vmspace)); vm->vioapic = vioapic_init(vm); vm->vhpet = vhpet_init(vm); @@ -331,7 +332,6 @@ vm_create(const char *name, struct vm ** } vm_activate_cpu(vm, BSP); - vm->vmspace = vmspace; *retvm = vm; return (0); From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 21:14:29 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 29D77C5F; Tue, 7 Jan 2014 21:14:29 +0000 (UTC) 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 1637C1F19; Tue, 7 Jan 2014 21:14: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 s07LES2k099579; Tue, 7 Jan 2014 21:14:28 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07LESBF099576; Tue, 7 Jan 2014 21:14:28 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401072114.s07LESBF099576@svn.freebsd.org> From: Luigi Rizzo Date: Tue, 7 Jan 2014 21:14:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260411 - head/sys/dev/netmap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 21:14:29 -0000 Author: luigi Date: Tue Jan 7 21:14:28 2014 New Revision: 260411 URL: http://svnweb.freebsd.org/changeset/base/260411 Log: fix use after free when releasing a netmap adapter. Submitted by: Giuseppe Lettieri Modified: head/sys/dev/netmap/netmap.c head/sys/dev/netmap/netmap_kern.h Modified: head/sys/dev/netmap/netmap.c ============================================================================== --- head/sys/dev/netmap/netmap.c Tue Jan 7 21:04:49 2014 (r260410) +++ head/sys/dev/netmap/netmap.c Tue Jan 7 21:14:28 2014 (r260411) @@ -2208,9 +2208,14 @@ netmap_detach(struct ifnet *ifp) NMG_LOCK(); netmap_disable_all_rings(ifp); - netmap_adapter_put(na); - na->ifp = NULL; - netmap_enable_all_rings(ifp); + if (!netmap_adapter_put(na)) { + /* someone is still using the adapter, + * tell them that the interface is gone + */ + na->ifp = NULL; + /* give them a chance to notice */ + netmap_enable_all_rings(ifp); + } NMG_UNLOCK(); } Modified: head/sys/dev/netmap/netmap_kern.h ============================================================================== --- head/sys/dev/netmap/netmap_kern.h Tue Jan 7 21:04:49 2014 (r260410) +++ head/sys/dev/netmap/netmap_kern.h Tue Jan 7 21:14:28 2014 (r260411) @@ -899,11 +899,11 @@ void __netmap_adapter_get(struct netmap_ int __netmap_adapter_put(struct netmap_adapter *na); #define netmap_adapter_put(na) \ - do { \ + ({ \ struct netmap_adapter *__na = na; \ D("putting %p:%s (%d)", __na, NM_IFPNAME(__na->ifp), __na->na_refcount); \ __netmap_adapter_put(__na); \ - } while (0) + }) #else /* !NM_DEBUG_PUTGET */ From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 21:23:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0EA4F204; Tue, 7 Jan 2014 21:23:43 +0000 (UTC) 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 E299E1FE1; Tue, 7 Jan 2014 21:23: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 s07LNgZu003375; Tue, 7 Jan 2014 21:23:42 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07LNg6g003372; Tue, 7 Jan 2014 21:23:42 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201401072123.s07LNg6g003372@svn.freebsd.org> From: Mikolaj Golub Date: Tue, 7 Jan 2014 21:23:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260412 - stable/10/usr.sbin/bsnmpd/modules/snmp_hast X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 21:23:43 -0000 Author: trociny Date: Tue Jan 7 21:23:41 2014 New Revision: 260412 URL: http://svnweb.freebsd.org/changeset/base/260412 Log: MFC r260049: Add mibs for hastd(1) queue stats. Modified: stable/10/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt ============================================================================== --- stable/10/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt Tue Jan 7 21:14:28 2014 (r260411) +++ stable/10/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt Tue Jan 7 21:23:41 2014 (r260412) @@ -60,6 +60,11 @@ begemotHast MODULE-IDENTITY REVISION "201307010000Z" DESCRIPTION "Added hastResourceWorkerPid." + REVISION "201312290000Z" + DESCRIPTION + "Added hastResourceLocalQueue, hastResourceSendQueue, + hastResourceRecvQueue, hastResourceDoneQueue, + hastResourceIdleQueue." ::= { begemot 220 } begemotHastObjects OBJECT IDENTIFIER ::= { begemotHast 1 } @@ -120,7 +125,12 @@ HastResourceEntry ::= SEQUENCE { hastResourceWriteErrors Counter64, hastResourceDeleteErrors Counter64, hastResourceFlushErrors Counter64, - hastResourceWorkerPid INTEGER + hastResourceWorkerPid INTEGER, + hastResourceLocalQueue UNSIGNED32, + hastResourceSendQueue UNSIGNED32, + hastResourceRecvQueue UNSIGNED32, + hastResourceDoneQueue UNSIGNED32, + hastResourceIdleQueue UNSIGNED32 } hastResourceIndex OBJECT-TYPE @@ -307,4 +317,46 @@ hastResourceWorkerPid OBJECT-TYPE "Worker process ID." ::= { hastResourceEntry 22 } +hastResourceLocalQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests to the local component." + ::= { hastResourceEntry 23 } + +hastResourceSendQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests to send to the remote + component." + ::= { hastResourceEntry 24 } + +hastResourceRecvQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests waiting for response + from the remote component." + ::= { hastResourceEntry 25 } + +hastResourceDoneQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of processed I/O requests to return to the kernel." + ::= { hastResourceEntry 26 } + +hastResourceIdleQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of request objects in the free bucket." + ::= { hastResourceEntry 27 } + END Modified: stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c ============================================================================== --- stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c Tue Jan 7 21:14:28 2014 (r260411) +++ stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c Tue Jan 7 21:23:41 2014 (r260412) @@ -79,6 +79,11 @@ struct hast_snmp_resource { uint64_t delete_errors; uint64_t flush_errors; pid_t workerpid; + uint32_t local_queue; + uint32_t send_queue; + uint32_t recv_queue; + uint32_t done_queue; + uint32_t idle_queue; }; static TAILQ_HEAD(, hast_snmp_resource) resources = @@ -345,6 +350,16 @@ update_resources(void) res->flush_errors = nv_get_uint64(nvout, "stat_flush_error%u", i); res->workerpid = nv_get_int32(nvout, "workerpid%u", i); + res->local_queue = + nv_get_uint64(nvout, "local_queue_size%u", i); + res->send_queue = + nv_get_uint64(nvout, "send_queue_size%u", i); + res->recv_queue = + nv_get_uint64(nvout, "recv_queue_size%u", i); + res->done_queue = + nv_get_uint64(nvout, "done_queue_size%u", i); + res->idle_queue = + nv_get_uint64(nvout, "idle_queue_size%u", i); TAILQ_INSERT_TAIL(&resources, res, link); } nv_free(nvout); @@ -503,6 +518,21 @@ op_hastResourceTable(struct snmp_context case LEAF_hastResourceWorkerPid: value->v.integer = res->workerpid; break; + case LEAF_hastResourceLocalQueue: + value->v.uint32 = res->local_queue; + break; + case LEAF_hastResourceSendQueue: + value->v.uint32 = res->send_queue; + break; + case LEAF_hastResourceRecvQueue: + value->v.uint32 = res->recv_queue; + break; + case LEAF_hastResourceDoneQueue: + value->v.uint32 = res->done_queue; + break; + case LEAF_hastResourceIdleQueue: + value->v.uint32 = res->idle_queue; + break; default: ret = SNMP_ERR_RES_UNAVAIL; break; Modified: stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def ============================================================================== --- stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Tue Jan 7 21:14:28 2014 (r260411) +++ stable/10/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Tue Jan 7 21:23:41 2014 (r260412) @@ -60,6 +60,11 @@ (20 hastResourceDeleteErrors COUNTER64 GET) (21 hastResourceFlushErrors COUNTER64 GET) (22 hastResourceWorkerPid INTEGER GET) + (23 hastResourceLocalQueue UNSIGNED32 GET) + (24 hastResourceSendQueue UNSIGNED32 GET) + (25 hastResourceRecvQueue UNSIGNED32 GET) + (26 hastResourceDoneQueue UNSIGNED32 GET) + (27 hastResourceIdleQueue UNSIGNED32 GET) ) ) ) From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 21:24:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 4C78A4D0; Tue, 7 Jan 2014 21:24:35 +0000 (UTC) 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 2C18F1FEF; Tue, 7 Jan 2014 21:24: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 s07LOZBj003510; Tue, 7 Jan 2014 21:24:35 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07LOYL9003505; Tue, 7 Jan 2014 21:24:34 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201401072124.s07LOYL9003505@svn.freebsd.org> From: Mikolaj Golub Date: Tue, 7 Jan 2014 21:24:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260413 - stable/9/usr.sbin/bsnmpd/modules/snmp_hast X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 21:24:35 -0000 Author: trociny Date: Tue Jan 7 21:24:34 2014 New Revision: 260413 URL: http://svnweb.freebsd.org/changeset/base/260413 Log: MFC r260049: Add mibs for hastd(1) queue stats. Modified: stable/9/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Directory Properties: stable/9/usr.sbin/bsnmpd/ (props changed) Modified: stable/9/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt ============================================================================== --- stable/9/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt Tue Jan 7 21:23:41 2014 (r260412) +++ stable/9/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt Tue Jan 7 21:24:34 2014 (r260413) @@ -60,6 +60,11 @@ begemotHast MODULE-IDENTITY REVISION "201307010000Z" DESCRIPTION "Added hastResourceWorkerPid." + REVISION "201312290000Z" + DESCRIPTION + "Added hastResourceLocalQueue, hastResourceSendQueue, + hastResourceRecvQueue, hastResourceDoneQueue, + hastResourceIdleQueue." ::= { begemot 220 } begemotHastObjects OBJECT IDENTIFIER ::= { begemotHast 1 } @@ -120,7 +125,12 @@ HastResourceEntry ::= SEQUENCE { hastResourceWriteErrors Counter64, hastResourceDeleteErrors Counter64, hastResourceFlushErrors Counter64, - hastResourceWorkerPid INTEGER + hastResourceWorkerPid INTEGER, + hastResourceLocalQueue UNSIGNED32, + hastResourceSendQueue UNSIGNED32, + hastResourceRecvQueue UNSIGNED32, + hastResourceDoneQueue UNSIGNED32, + hastResourceIdleQueue UNSIGNED32 } hastResourceIndex OBJECT-TYPE @@ -307,4 +317,46 @@ hastResourceWorkerPid OBJECT-TYPE "Worker process ID." ::= { hastResourceEntry 22 } +hastResourceLocalQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests to the local component." + ::= { hastResourceEntry 23 } + +hastResourceSendQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests to send to the remote + component." + ::= { hastResourceEntry 24 } + +hastResourceRecvQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests waiting for response + from the remote component." + ::= { hastResourceEntry 25 } + +hastResourceDoneQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of processed I/O requests to return to the kernel." + ::= { hastResourceEntry 26 } + +hastResourceIdleQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of request objects in the free bucket." + ::= { hastResourceEntry 27 } + END Modified: stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c ============================================================================== --- stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c Tue Jan 7 21:23:41 2014 (r260412) +++ stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c Tue Jan 7 21:24:34 2014 (r260413) @@ -79,6 +79,11 @@ struct hast_snmp_resource { uint64_t delete_errors; uint64_t flush_errors; pid_t workerpid; + uint32_t local_queue; + uint32_t send_queue; + uint32_t recv_queue; + uint32_t done_queue; + uint32_t idle_queue; }; static TAILQ_HEAD(, hast_snmp_resource) resources = @@ -345,6 +350,16 @@ update_resources(void) res->flush_errors = nv_get_uint64(nvout, "stat_flush_error%u", i); res->workerpid = nv_get_int32(nvout, "workerpid%u", i); + res->local_queue = + nv_get_uint64(nvout, "local_queue_size%u", i); + res->send_queue = + nv_get_uint64(nvout, "send_queue_size%u", i); + res->recv_queue = + nv_get_uint64(nvout, "recv_queue_size%u", i); + res->done_queue = + nv_get_uint64(nvout, "done_queue_size%u", i); + res->idle_queue = + nv_get_uint64(nvout, "idle_queue_size%u", i); TAILQ_INSERT_TAIL(&resources, res, link); } nv_free(nvout); @@ -503,6 +518,21 @@ op_hastResourceTable(struct snmp_context case LEAF_hastResourceWorkerPid: value->v.integer = res->workerpid; break; + case LEAF_hastResourceLocalQueue: + value->v.uint32 = res->local_queue; + break; + case LEAF_hastResourceSendQueue: + value->v.uint32 = res->send_queue; + break; + case LEAF_hastResourceRecvQueue: + value->v.uint32 = res->recv_queue; + break; + case LEAF_hastResourceDoneQueue: + value->v.uint32 = res->done_queue; + break; + case LEAF_hastResourceIdleQueue: + value->v.uint32 = res->idle_queue; + break; default: ret = SNMP_ERR_RES_UNAVAIL; break; Modified: stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def ============================================================================== --- stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Tue Jan 7 21:23:41 2014 (r260412) +++ stable/9/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Tue Jan 7 21:24:34 2014 (r260413) @@ -60,6 +60,11 @@ (20 hastResourceDeleteErrors COUNTER64 GET) (21 hastResourceFlushErrors COUNTER64 GET) (22 hastResourceWorkerPid INTEGER GET) + (23 hastResourceLocalQueue UNSIGNED32 GET) + (24 hastResourceSendQueue UNSIGNED32 GET) + (25 hastResourceRecvQueue UNSIGNED32 GET) + (26 hastResourceDoneQueue UNSIGNED32 GET) + (27 hastResourceIdleQueue UNSIGNED32 GET) ) ) ) From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 21:25:20 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id F0BBD608; Tue, 7 Jan 2014 21:25:19 +0000 (UTC) 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 D08B31FF8; Tue, 7 Jan 2014 21:25: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 s07LPJUv003683; Tue, 7 Jan 2014 21:25:19 GMT (envelope-from trociny@svn.freebsd.org) Received: (from trociny@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07LPJah003680; Tue, 7 Jan 2014 21:25:19 GMT (envelope-from trociny@svn.freebsd.org) Message-Id: <201401072125.s07LPJah003680@svn.freebsd.org> From: Mikolaj Golub Date: Tue, 7 Jan 2014 21:25:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260414 - stable/8/usr.sbin/bsnmpd/modules/snmp_hast X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 21:25:20 -0000 Author: trociny Date: Tue Jan 7 21:25:18 2014 New Revision: 260414 URL: http://svnweb.freebsd.org/changeset/base/260414 Log: MFC r260049: Add mibs for hastd(1) queue stats. Modified: stable/8/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Directory Properties: stable/8/usr.sbin/bsnmpd/ (props changed) Modified: stable/8/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt ============================================================================== --- stable/8/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt Tue Jan 7 21:24:34 2014 (r260413) +++ stable/8/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt Tue Jan 7 21:25:18 2014 (r260414) @@ -60,6 +60,11 @@ begemotHast MODULE-IDENTITY REVISION "201307010000Z" DESCRIPTION "Added hastResourceWorkerPid." + REVISION "201312290000Z" + DESCRIPTION + "Added hastResourceLocalQueue, hastResourceSendQueue, + hastResourceRecvQueue, hastResourceDoneQueue, + hastResourceIdleQueue." ::= { begemot 220 } begemotHastObjects OBJECT IDENTIFIER ::= { begemotHast 1 } @@ -120,7 +125,12 @@ HastResourceEntry ::= SEQUENCE { hastResourceWriteErrors Counter64, hastResourceDeleteErrors Counter64, hastResourceFlushErrors Counter64, - hastResourceWorkerPid INTEGER + hastResourceWorkerPid INTEGER, + hastResourceLocalQueue UNSIGNED32, + hastResourceSendQueue UNSIGNED32, + hastResourceRecvQueue UNSIGNED32, + hastResourceDoneQueue UNSIGNED32, + hastResourceIdleQueue UNSIGNED32 } hastResourceIndex OBJECT-TYPE @@ -307,4 +317,46 @@ hastResourceWorkerPid OBJECT-TYPE "Worker process ID." ::= { hastResourceEntry 22 } +hastResourceLocalQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests to the local component." + ::= { hastResourceEntry 23 } + +hastResourceSendQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests to send to the remote + component." + ::= { hastResourceEntry 24 } + +hastResourceRecvQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of outstanding I/O requests waiting for response + from the remote component." + ::= { hastResourceEntry 25 } + +hastResourceDoneQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of processed I/O requests to return to the kernel." + ::= { hastResourceEntry 26 } + +hastResourceIdleQueue OBJECT-TYPE + SYNTAX UNSIGNED32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of request objects in the free bucket." + ::= { hastResourceEntry 27 } + END Modified: stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c ============================================================================== --- stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c Tue Jan 7 21:24:34 2014 (r260413) +++ stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_snmp.c Tue Jan 7 21:25:18 2014 (r260414) @@ -79,6 +79,11 @@ struct hast_snmp_resource { uint64_t delete_errors; uint64_t flush_errors; pid_t workerpid; + uint32_t local_queue; + uint32_t send_queue; + uint32_t recv_queue; + uint32_t done_queue; + uint32_t idle_queue; }; static TAILQ_HEAD(, hast_snmp_resource) resources = @@ -345,6 +350,16 @@ update_resources(void) res->flush_errors = nv_get_uint64(nvout, "stat_flush_error%u", i); res->workerpid = nv_get_int32(nvout, "workerpid%u", i); + res->local_queue = + nv_get_uint64(nvout, "local_queue_size%u", i); + res->send_queue = + nv_get_uint64(nvout, "send_queue_size%u", i); + res->recv_queue = + nv_get_uint64(nvout, "recv_queue_size%u", i); + res->done_queue = + nv_get_uint64(nvout, "done_queue_size%u", i); + res->idle_queue = + nv_get_uint64(nvout, "idle_queue_size%u", i); TAILQ_INSERT_TAIL(&resources, res, link); } nv_free(nvout); @@ -503,6 +518,21 @@ op_hastResourceTable(struct snmp_context case LEAF_hastResourceWorkerPid: value->v.integer = res->workerpid; break; + case LEAF_hastResourceLocalQueue: + value->v.uint32 = res->local_queue; + break; + case LEAF_hastResourceSendQueue: + value->v.uint32 = res->send_queue; + break; + case LEAF_hastResourceRecvQueue: + value->v.uint32 = res->recv_queue; + break; + case LEAF_hastResourceDoneQueue: + value->v.uint32 = res->done_queue; + break; + case LEAF_hastResourceIdleQueue: + value->v.uint32 = res->idle_queue; + break; default: ret = SNMP_ERR_RES_UNAVAIL; break; Modified: stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def ============================================================================== --- stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Tue Jan 7 21:24:34 2014 (r260413) +++ stable/8/usr.sbin/bsnmpd/modules/snmp_hast/hast_tree.def Tue Jan 7 21:25:18 2014 (r260414) @@ -60,6 +60,11 @@ (20 hastResourceDeleteErrors COUNTER64 GET) (21 hastResourceFlushErrors COUNTER64 GET) (22 hastResourceWorkerPid INTEGER GET) + (23 hastResourceLocalQueue UNSIGNED32 GET) + (24 hastResourceSendQueue UNSIGNED32 GET) + (25 hastResourceRecvQueue UNSIGNED32 GET) + (26 hastResourceDoneQueue UNSIGNED32 GET) + (27 hastResourceIdleQueue UNSIGNED32 GET) ) ) ) From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 22:26:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0E6A0AB3; Tue, 7 Jan 2014 22:26:21 +0000 (UTC) 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 E3F091579; Tue, 7 Jan 2014 22:26: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 s07MQKFr026819; Tue, 7 Jan 2014 22:26:20 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07MQKqh026817; Tue, 7 Jan 2014 22:26:20 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201401072226.s07MQKqh026817@svn.freebsd.org> From: Eric Davis Date: Tue, 7 Jan 2014 22:26:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260415 - head/sys/dev/bxe X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 22:26:21 -0000 Author: edavis Date: Tue Jan 7 22:26:20 2014 New Revision: 260415 URL: http://svnweb.freebsd.org/changeset/base/260415 Log: defragment mbuf chains longer than hw segment limit before dropping Approved by: davidch Modified: head/sys/dev/bxe/bxe.c head/sys/dev/bxe/ecore_hsi.h Modified: head/sys/dev/bxe/bxe.c ============================================================================== --- head/sys/dev/bxe/bxe.c Tue Jan 7 21:25:18 2014 (r260414) +++ head/sys/dev/bxe/bxe.c Tue Jan 7 22:26:20 2014 (r260415) @@ -34,7 +34,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.76" +#define BXE_DRIVER_VERSION "1.78.77" #include "bxe.h" #include "ecore_sp.h" @@ -5501,10 +5501,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st fp->eth_q_stats.tx_window_violation_std++; } - /* XXX I don't like this, change to double copy packet */ + /* lets try to defragment this mbuf */ + fp->eth_q_stats.mbuf_defrag_attempts++; - /* no sense trying to defrag again, just drop the frame */ - rc = ENODEV; + m0 = m_defrag(*m_head, M_DONTWAIT); + if (m0 == NULL) { + fp->eth_q_stats.mbuf_defrag_failures++; + /* Ugh, just drop the frame... :( */ + rc = ENOBUFS; + } else { + /* defrag successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, + tx_buf->m_map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error) { + fp->eth_q_stats.tx_dma_mapping_failure++; + /* No sense in trying to defrag/copy chain, drop it. :( */ + rc = error; + } + + /* if the chain is still too long then drop it */ + if (__predict_false(nsegs > 12)) { + rc = ENODEV; + } + } } bxe_tx_encap_continue: Modified: head/sys/dev/bxe/ecore_hsi.h ============================================================================== --- head/sys/dev/bxe/ecore_hsi.h Tue Jan 7 21:25:18 2014 (r260414) +++ head/sys/dev/bxe/ecore_hsi.h Tue Jan 7 22:26:20 2014 (r260415) @@ -1305,6 +1305,13 @@ struct extended_dev_info_shared_cfg { #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_SHOW_MENU 0x00000000 #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_HIDE_MENU 0x00000200 + /* Overide PCIE revision ID when enabled the, + revision ID will set to B1=='0x11' */ + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_MASK 0x00000400 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_SHIFT 10 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_DISABLED 0x00000000 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_ENABLED 0x00000400 + /* Threshold in celcius for max continuous operation */ uint32_t temperature_report; /* 0x4014 */ #define EXTENDED_DEV_INFO_SHARED_CFG_TEMP_MCOT_MASK 0x0000007F From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 22:59:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id ECF1644A; Tue, 7 Jan 2014 22:59:33 +0000 (UTC) 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 CCFA817B5; Tue, 7 Jan 2014 22:59: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 s07MxXku038772; Tue, 7 Jan 2014 22:59:33 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07MxX35038770; Tue, 7 Jan 2014 22:59:33 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201401072259.s07MxX35038770@svn.freebsd.org> From: Eric Davis Date: Tue, 7 Jan 2014 22:59:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260416 - stable/10/sys/dev/bxe X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 22:59:34 -0000 Author: edavis Date: Tue Jan 7 22:59:33 2014 New Revision: 260416 URL: http://svnweb.freebsd.org/changeset/base/260416 Log: Merged r260415 from head. Approved by: davidch Modified: stable/10/sys/dev/bxe/bxe.c stable/10/sys/dev/bxe/ecore_hsi.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/bxe/bxe.c ============================================================================== --- stable/10/sys/dev/bxe/bxe.c Tue Jan 7 22:26:20 2014 (r260415) +++ stable/10/sys/dev/bxe/bxe.c Tue Jan 7 22:59:33 2014 (r260416) @@ -34,7 +34,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.76" +#define BXE_DRIVER_VERSION "1.78.77" #include "bxe.h" #include "ecore_sp.h" @@ -5501,10 +5501,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st fp->eth_q_stats.tx_window_violation_std++; } - /* XXX I don't like this, change to double copy packet */ + /* lets try to defragment this mbuf */ + fp->eth_q_stats.mbuf_defrag_attempts++; - /* no sense trying to defrag again, just drop the frame */ - rc = ENODEV; + m0 = m_defrag(*m_head, M_DONTWAIT); + if (m0 == NULL) { + fp->eth_q_stats.mbuf_defrag_failures++; + /* Ugh, just drop the frame... :( */ + rc = ENOBUFS; + } else { + /* defrag successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, + tx_buf->m_map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error) { + fp->eth_q_stats.tx_dma_mapping_failure++; + /* No sense in trying to defrag/copy chain, drop it. :( */ + rc = error; + } + + /* if the chain is still too long then drop it */ + if (__predict_false(nsegs > 12)) { + rc = ENODEV; + } + } } bxe_tx_encap_continue: Modified: stable/10/sys/dev/bxe/ecore_hsi.h ============================================================================== --- stable/10/sys/dev/bxe/ecore_hsi.h Tue Jan 7 22:26:20 2014 (r260415) +++ stable/10/sys/dev/bxe/ecore_hsi.h Tue Jan 7 22:59:33 2014 (r260416) @@ -1305,6 +1305,13 @@ struct extended_dev_info_shared_cfg { #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_SHOW_MENU 0x00000000 #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_HIDE_MENU 0x00000200 + /* Overide PCIE revision ID when enabled the, + revision ID will set to B1=='0x11' */ + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_MASK 0x00000400 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_SHIFT 10 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_DISABLED 0x00000000 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_ENABLED 0x00000400 + /* Threshold in celcius for max continuous operation */ uint32_t temperature_report; /* 0x4014 */ #define EXTENDED_DEV_INFO_SHARED_CFG_TEMP_MCOT_MASK 0x0000007F From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:00:59 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 495E1725; Tue, 7 Jan 2014 23:00:59 +0000 (UTC) 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 3568617FA; Tue, 7 Jan 2014 23:00: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 s07N0xEV040147; Tue, 7 Jan 2014 23:00:59 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N0x2b040145; Tue, 7 Jan 2014 23:00:59 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401072300.s07N0x2b040145@svn.freebsd.org> From: Peter Wemm Date: Tue, 7 Jan 2014 23:00:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260417 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:00:59 -0000 Author: peter Date: Tue Jan 7 23:00:58 2014 New Revision: 260417 URL: http://svnweb.freebsd.org/changeset/base/260417 Log: MFC r258821 - fix tcp simultaneous close PR: kern/99188 Modified: stable/10/sys/netinet/tcp_input.c Modified: stable/10/sys/netinet/tcp_input.c ============================================================================== --- stable/10/sys/netinet/tcp_input.c Tue Jan 7 22:59:33 2014 (r260416) +++ stable/10/sys/netinet/tcp_input.c Tue Jan 7 23:00:58 2014 (r260417) @@ -2429,13 +2429,15 @@ tcp_do_segment(struct mbuf *m, struct tc hhook_run_tcp_est_in(tp, th, &to); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd) { + if (tlen == 0 && tiwin == tp->snd_wnd && + !(thflags & TH_FIN)) { TCPSTAT_INC(tcps_rcvdupack); /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change), the ack is the biggest we've + * change and FIN isn't set), + * the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:01:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id EDDFC82D; Tue, 7 Jan 2014 23:01:05 +0000 (UTC) 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 C718817FB; Tue, 7 Jan 2014 23:01: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 s07N157q040229; Tue, 7 Jan 2014 23:01:05 GMT (envelope-from jmg@svn.freebsd.org) Received: (from jmg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N15iS040228; Tue, 7 Jan 2014 23:01:05 GMT (envelope-from jmg@svn.freebsd.org) Message-Id: <201401072301.s07N15iS040228@svn.freebsd.org> From: John-Mark Gurney Date: Tue, 7 Jan 2014 23:01:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260418 - head/lib/libnetgraph X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:01:06 -0000 Author: jmg Date: Tue Jan 7 23:01:05 2014 New Revision: 260418 URL: http://svnweb.freebsd.org/changeset/base/260418 Log: make sure that rbuf is aligned by making a union w/ the structure we need to access... access the struct through the union too... PR: 185165 Submitted by: Guy Yur MFC after: 1 week Modified: head/lib/libnetgraph/sock.c Modified: head/lib/libnetgraph/sock.c ============================================================================== --- head/lib/libnetgraph/sock.c Tue Jan 7 23:00:58 2014 (r260417) +++ head/lib/libnetgraph/sock.c Tue Jan 7 23:01:05 2014 (r260418) @@ -111,9 +111,12 @@ gotNode: /* Save node name */ strlcpy(namebuf, name, sizeof(namebuf)); } else if (dsp != NULL) { - u_char rbuf[sizeof(struct ng_mesg) + sizeof(struct nodeinfo)]; - struct ng_mesg *const resp = (struct ng_mesg *) rbuf; - struct nodeinfo *const ni = (struct nodeinfo *) resp->data; + union { + u_char rbuf[sizeof(struct ng_mesg) + + sizeof(struct nodeinfo)]; + struct ng_mesg res; + } res; + struct nodeinfo *const ni = (struct nodeinfo *) res.res.data; /* Find out the node ID */ if (NgSendMsg(cs, ".", NGM_GENERIC_COOKIE, @@ -123,7 +126,7 @@ gotNode: NGLOG("send nodeinfo"); goto errout; } - if (NgRecvMsg(cs, resp, sizeof(rbuf), NULL) < 0) { + if (NgRecvMsg(cs, &res.res, sizeof(res.rbuf), NULL) < 0) { errnosv = errno; if (_gNgDebugLevel >= 1) NGLOG("recv nodeinfo"); From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:01:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 87E189A5; Tue, 7 Jan 2014 23:01:34 +0000 (UTC) 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 73C17186B; Tue, 7 Jan 2014 23:01: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 s07N1YjM041921; Tue, 7 Jan 2014 23:01:34 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N1Yl3041920; Tue, 7 Jan 2014 23:01:34 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401072301.s07N1Yl3041920@svn.freebsd.org> From: Peter Wemm Date: Tue, 7 Jan 2014 23:01:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260419 - stable/9/sys/netinet X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:01:34 -0000 Author: peter Date: Tue Jan 7 23:01:33 2014 New Revision: 260419 URL: http://svnweb.freebsd.org/changeset/base/260419 Log: MFC r258821 - fix tcp simultaneous close PR: kern/99188 Modified: stable/9/sys/netinet/tcp_input.c Modified: stable/9/sys/netinet/tcp_input.c ============================================================================== --- stable/9/sys/netinet/tcp_input.c Tue Jan 7 23:01:05 2014 (r260418) +++ stable/9/sys/netinet/tcp_input.c Tue Jan 7 23:01:33 2014 (r260419) @@ -2407,13 +2407,15 @@ tcp_do_segment(struct mbuf *m, struct tc hhook_run_tcp_est_in(tp, th, &to); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd) { + if (tlen == 0 && tiwin == tp->snd_wnd && + !(thflags & TH_FIN)) { TCPSTAT_INC(tcps_rcvdupack); /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change), the ack is the biggest we've + * change and FIN isn't set), + * the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:02:14 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0381FAE4; Tue, 7 Jan 2014 23:02:14 +0000 (UTC) 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 E2FF21877; Tue, 7 Jan 2014 23:02: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 s07N2D8X042061; Tue, 7 Jan 2014 23:02:13 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N2Dsf042060; Tue, 7 Jan 2014 23:02:13 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401072302.s07N2Dsf042060@svn.freebsd.org> From: Peter Wemm Date: Tue, 7 Jan 2014 23:02:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260420 - stable/8/sys/netinet X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:02:14 -0000 Author: peter Date: Tue Jan 7 23:02:13 2014 New Revision: 260420 URL: http://svnweb.freebsd.org/changeset/base/260420 Log: MFC r258821 - fix tcp simultaneous close PR: kern/99188 Modified: stable/8/sys/netinet/tcp_input.c Modified: stable/8/sys/netinet/tcp_input.c ============================================================================== --- stable/8/sys/netinet/tcp_input.c Tue Jan 7 23:01:33 2014 (r260419) +++ stable/8/sys/netinet/tcp_input.c Tue Jan 7 23:02:13 2014 (r260420) @@ -2318,13 +2318,15 @@ tcp_do_segment(struct mbuf *m, struct tc hhook_run_tcp_est_in(tp, th, &to); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd) { + if (tlen == 0 && tiwin == tp->snd_wnd && + !(thflags & TH_FIN)) { TCPSTAT_INC(tcps_rcvdupack); /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change), the ack is the biggest we've + * change and FIN isn't set), + * the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:02:51 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 35BF0C20; Tue, 7 Jan 2014 23:02:51 +0000 (UTC) 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 21114187E; Tue, 7 Jan 2014 23:02: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 s07N2o3A042217; Tue, 7 Jan 2014 23:02:51 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N2o8E042216; Tue, 7 Jan 2014 23:02:50 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401072302.s07N2o8E042216@svn.freebsd.org> From: Peter Wemm Date: Tue, 7 Jan 2014 23:02:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r260421 - stable/7/sys/netinet X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:02:51 -0000 Author: peter Date: Tue Jan 7 23:02:50 2014 New Revision: 260421 URL: http://svnweb.freebsd.org/changeset/base/260421 Log: MFC r258821 - fix tcp simultaneous close PR: kern/99188 Modified: stable/7/sys/netinet/tcp_input.c Modified: stable/7/sys/netinet/tcp_input.c ============================================================================== --- stable/7/sys/netinet/tcp_input.c Tue Jan 7 23:02:13 2014 (r260420) +++ stable/7/sys/netinet/tcp_input.c Tue Jan 7 23:02:50 2014 (r260421) @@ -1751,13 +1751,15 @@ tcp_do_segment(struct mbuf *m, struct tc !TAILQ_EMPTY(&tp->snd_holes))) tcp_sack_doack(tp, &to, th->th_ack); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd) { + if (tlen == 0 && tiwin == tp->snd_wnd && + !(thflags & TH_FIN)) { tcpstat.tcps_rcvdupack++; /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change), the ack is the biggest we've + * change and FIN isn't set), + * the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:03:31 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 96D9CE64; Tue, 7 Jan 2014 23:03:31 +0000 (UTC) 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 81BAC1893; Tue, 7 Jan 2014 23:03: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 s07N3Vx8042443; Tue, 7 Jan 2014 23:03:31 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N3VPr042442; Tue, 7 Jan 2014 23:03:31 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401072303.s07N3VPr042442@svn.freebsd.org> From: Peter Wemm Date: Tue, 7 Jan 2014 23:03:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-6@freebsd.org Subject: svn commit: r260422 - stable/6/sys/netinet X-SVN-Group: stable-6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:03:31 -0000 Author: peter Date: Tue Jan 7 23:03:31 2014 New Revision: 260422 URL: http://svnweb.freebsd.org/changeset/base/260422 Log: MFC r258821 - fix tcp simultaneous close PR: kern/99188 Modified: stable/6/sys/netinet/tcp_input.c Modified: stable/6/sys/netinet/tcp_input.c ============================================================================== --- stable/6/sys/netinet/tcp_input.c Tue Jan 7 23:02:50 2014 (r260421) +++ stable/6/sys/netinet/tcp_input.c Tue Jan 7 23:03:31 2014 (r260422) @@ -1858,13 +1858,15 @@ trimthenstep6: (to.to_nsacks > 0 || !TAILQ_EMPTY(&tp->snd_holes))) tcp_sack_doack(tp, &to, th->th_ack); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd) { + if (tlen == 0 && tiwin == tp->snd_wnd && + !(thflags & TH_FIN)) { tcpstat.tcps_rcvdupack++; /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change), the ack is the biggest we've + * change and FIN isn't set), + * the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:04:06 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B8E02FA8; Tue, 7 Jan 2014 23:04:06 +0000 (UTC) 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 A42D4189D; Tue, 7 Jan 2014 23:04: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 s07N46Bg042561; Tue, 7 Jan 2014 23:04:06 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07N46V8042560; Tue, 7 Jan 2014 23:04:06 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401072304.s07N46V8042560@svn.freebsd.org> From: Peter Wemm Date: Tue, 7 Jan 2014 23:04:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-other@freebsd.org Subject: svn commit: r260423 - stable/4/sys/netinet X-SVN-Group: stable-other MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:04:06 -0000 Author: peter Date: Tue Jan 7 23:04:06 2014 New Revision: 260423 URL: http://svnweb.freebsd.org/changeset/base/260423 Log: MFC r258821 - fix tcp simultaneous close PR: kern/99188 Modified: stable/4/sys/netinet/tcp_input.c Modified: stable/4/sys/netinet/tcp_input.c ============================================================================== --- stable/4/sys/netinet/tcp_input.c Tue Jan 7 23:03:31 2014 (r260422) +++ stable/4/sys/netinet/tcp_input.c Tue Jan 7 23:04:06 2014 (r260423) @@ -1705,13 +1705,15 @@ trimthenstep6: case TCPS_TIME_WAIT: if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd) { + if (tlen == 0 && tiwin == tp->snd_wnd && + !(thflags & TH_FIN)) { tcpstat.tcps_rcvdupack++; /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change), the ack is the biggest we've + * change and FIN isn't set), + * the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:14:56 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E48D022F; Tue, 7 Jan 2014 23:14:55 +0000 (UTC) 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 C48A7195C; Tue, 7 Jan 2014 23:14: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 s07NEt9K047305; Tue, 7 Jan 2014 23:14:55 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07NEtRV047302; Tue, 7 Jan 2014 23:14:55 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201401072314.s07NEtRV047302@svn.freebsd.org> From: Eric Davis Date: Tue, 7 Jan 2014 23:14:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260424 - stable/8/sys/dev/bxe X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:14:56 -0000 Author: edavis Date: Tue Jan 7 23:14:55 2014 New Revision: 260424 URL: http://svnweb.freebsd.org/changeset/base/260424 Log: Merged r260415 from head. Approved by: davidcd Modified: stable/8/sys/dev/bxe/bxe.c stable/8/sys/dev/bxe/ecore_hsi.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) Modified: stable/8/sys/dev/bxe/bxe.c ============================================================================== --- stable/8/sys/dev/bxe/bxe.c Tue Jan 7 23:04:06 2014 (r260423) +++ stable/8/sys/dev/bxe/bxe.c Tue Jan 7 23:14:55 2014 (r260424) @@ -34,7 +34,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.76" +#define BXE_DRIVER_VERSION "1.78.77" #include "bxe.h" #include "ecore_sp.h" @@ -5509,10 +5509,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st fp->eth_q_stats.tx_window_violation_std++; } - /* XXX I don't like this, change to double copy packet */ + /* lets try to defragment this mbuf */ + fp->eth_q_stats.mbuf_defrag_attempts++; - /* no sense trying to defrag again, just drop the frame */ - rc = ENODEV; + m0 = m_defrag(*m_head, M_DONTWAIT); + if (m0 == NULL) { + fp->eth_q_stats.mbuf_defrag_failures++; + /* Ugh, just drop the frame... :( */ + rc = ENOBUFS; + } else { + /* defrag successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, + tx_buf->m_map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error) { + fp->eth_q_stats.tx_dma_mapping_failure++; + /* No sense in trying to defrag/copy chain, drop it. :( */ + rc = error; + } + + /* if the chain is still too long then drop it */ + if (__predict_false(nsegs > 12)) { + rc = ENODEV; + } + } } bxe_tx_encap_continue: Modified: stable/8/sys/dev/bxe/ecore_hsi.h ============================================================================== --- stable/8/sys/dev/bxe/ecore_hsi.h Tue Jan 7 23:04:06 2014 (r260423) +++ stable/8/sys/dev/bxe/ecore_hsi.h Tue Jan 7 23:14:55 2014 (r260424) @@ -1305,6 +1305,13 @@ struct extended_dev_info_shared_cfg { #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_SHOW_MENU 0x00000000 #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_HIDE_MENU 0x00000200 + /* Overide PCIE revision ID when enabled the, + revision ID will set to B1=='0x11' */ + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_MASK 0x00000400 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_SHIFT 10 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_DISABLED 0x00000000 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_ENABLED 0x00000400 + /* Threshold in celcius for max continuous operation */ uint32_t temperature_report; /* 0x4014 */ #define EXTENDED_DEV_INFO_SHARED_CFG_TEMP_MCOT_MASK 0x0000007F From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:20:22 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 329614A0; Tue, 7 Jan 2014 23:20:22 +0000 (UTC) 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 1390A199A; Tue, 7 Jan 2014 23:20: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 s07NKLin049176; Tue, 7 Jan 2014 23:20:21 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07NKL8Z049171; Tue, 7 Jan 2014 23:20:21 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201401072320.s07NKL8Z049171@svn.freebsd.org> From: Eric Davis Date: Tue, 7 Jan 2014 23:20:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260425 - stable/9/sys/dev/bxe X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:20:22 -0000 Author: edavis Date: Tue Jan 7 23:20:21 2014 New Revision: 260425 URL: http://svnweb.freebsd.org/changeset/base/260425 Log: Merged r260415 from head. Approved by: davidcd Modified: stable/9/sys/dev/bxe/bxe.c stable/9/sys/dev/bxe/ecore_hsi.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/bxe/bxe.c ============================================================================== --- stable/9/sys/dev/bxe/bxe.c Tue Jan 7 23:14:55 2014 (r260424) +++ stable/9/sys/dev/bxe/bxe.c Tue Jan 7 23:20:21 2014 (r260425) @@ -34,7 +34,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.76" +#define BXE_DRIVER_VERSION "1.78.77" #include "bxe.h" #include "ecore_sp.h" @@ -5509,10 +5509,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st fp->eth_q_stats.tx_window_violation_std++; } - /* XXX I don't like this, change to double copy packet */ + /* lets try to defragment this mbuf */ + fp->eth_q_stats.mbuf_defrag_attempts++; - /* no sense trying to defrag again, just drop the frame */ - rc = ENODEV; + m0 = m_defrag(*m_head, M_DONTWAIT); + if (m0 == NULL) { + fp->eth_q_stats.mbuf_defrag_failures++; + /* Ugh, just drop the frame... :( */ + rc = ENOBUFS; + } else { + /* defrag successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, + tx_buf->m_map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error) { + fp->eth_q_stats.tx_dma_mapping_failure++; + /* No sense in trying to defrag/copy chain, drop it. :( */ + rc = error; + } + + /* if the chain is still too long then drop it */ + if (__predict_false(nsegs > 12)) { + rc = ENODEV; + } + } } bxe_tx_encap_continue: Modified: stable/9/sys/dev/bxe/ecore_hsi.h ============================================================================== --- stable/9/sys/dev/bxe/ecore_hsi.h Tue Jan 7 23:14:55 2014 (r260424) +++ stable/9/sys/dev/bxe/ecore_hsi.h Tue Jan 7 23:20:21 2014 (r260425) @@ -1305,6 +1305,13 @@ struct extended_dev_info_shared_cfg { #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_SHOW_MENU 0x00000000 #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_HIDE_MENU 0x00000200 + /* Overide PCIE revision ID when enabled the, + revision ID will set to B1=='0x11' */ + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_MASK 0x00000400 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_SHIFT 10 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_DISABLED 0x00000000 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_ENABLED 0x00000400 + /* Threshold in celcius for max continuous operation */ uint32_t temperature_report; /* 0x4014 */ #define EXTENDED_DEV_INFO_SHARED_CFG_TEMP_MCOT_MASK 0x0000007F From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:50:03 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 42DB1408; Tue, 7 Jan 2014 23:50:03 +0000 (UTC) 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 2EB361D0E; Tue, 7 Jan 2014 23:50: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 s07No3MW064574; Tue, 7 Jan 2014 23:50:03 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07No2aa064570; Tue, 7 Jan 2014 23:50:02 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201401072350.s07No2aa064570@svn.freebsd.org> From: Michael Tuexen Date: Tue, 7 Jan 2014 23:50:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260426 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:50:03 -0000 Author: tuexen Date: Tue Jan 7 23:50:02 2014 New Revision: 260426 URL: http://svnweb.freebsd.org/changeset/base/260426 Log: MFC r259943: Address some warnings which showed up on the userland version. Modified: stable/10/sys/netinet/sctp_usrreq.c stable/10/sys/netinet/sctputil.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/sctp_usrreq.c ============================================================================== --- stable/10/sys/netinet/sctp_usrreq.c Tue Jan 7 23:20:21 2014 (r260425) +++ stable/10/sys/netinet/sctp_usrreq.c Tue Jan 7 23:50:02 2014 (r260426) @@ -2788,7 +2788,7 @@ flags_out: if (stcb) { /* simply copy out the sockaddr_storage... */ - int len; + size_t len; len = *optsize; if (len > stcb->asoc.primary_destination->ro._l_addr.sa.sa_len) Modified: stable/10/sys/netinet/sctputil.c ============================================================================== --- stable/10/sys/netinet/sctputil.c Tue Jan 7 23:20:21 2014 (r260425) +++ stable/10/sys/netinet/sctputil.c Tue Jan 7 23:50:02 2014 (r260426) @@ -5868,8 +5868,8 @@ get_more_data: goto release; } if ((uio->uio_resid == 0) || - ((in_eeor_mode) && (copied_so_far >= max(so->so_rcv.sb_lowat, 1))) - ) { + ((in_eeor_mode) && + (copied_so_far >= (uint32_t) max(so->so_rcv.sb_lowat, 1)))) { goto release; } /* From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:50:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 43EC5538; Tue, 7 Jan 2014 23:50:16 +0000 (UTC) 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 2459A1D11; Tue, 7 Jan 2014 23:50: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 s07NoGfc064897; Tue, 7 Jan 2014 23:50:16 GMT (envelope-from edavis@svn.freebsd.org) Received: (from edavis@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07NoFeb064895; Tue, 7 Jan 2014 23:50:15 GMT (envelope-from edavis@svn.freebsd.org) Message-Id: <201401072350.s07NoFeb064895@svn.freebsd.org> From: Eric Davis Date: Tue, 7 Jan 2014 23:50:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r260427 - stable/7/sys/dev/bxe X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:50:16 -0000 Author: edavis Date: Tue Jan 7 23:50:15 2014 New Revision: 260427 URL: http://svnweb.freebsd.org/changeset/base/260427 Log: Merged r260415 from head. Approved by: davidch Modified: stable/7/sys/dev/bxe/bxe.c stable/7/sys/dev/bxe/ecore_hsi.h Directory Properties: stable/7/sys/ (props changed) Modified: stable/7/sys/dev/bxe/bxe.c ============================================================================== --- stable/7/sys/dev/bxe/bxe.c Tue Jan 7 23:50:02 2014 (r260426) +++ stable/7/sys/dev/bxe/bxe.c Tue Jan 7 23:50:15 2014 (r260427) @@ -34,7 +34,7 @@ #include __FBSDID("$FreeBSD$"); -#define BXE_DRIVER_VERSION "1.78.76" +#define BXE_DRIVER_VERSION "1.78.77" #include "bxe.h" #include "ecore_sp.h" @@ -5511,10 +5511,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st fp->eth_q_stats.tx_window_violation_std++; } - /* XXX I don't like this, change to double copy packet */ + /* lets try to defragment this mbuf */ + fp->eth_q_stats.mbuf_defrag_attempts++; - /* no sense trying to defrag again, just drop the frame */ - rc = ENODEV; + m0 = m_defrag(*m_head, M_DONTWAIT); + if (m0 == NULL) { + fp->eth_q_stats.mbuf_defrag_failures++; + /* Ugh, just drop the frame... :( */ + rc = ENOBUFS; + } else { + /* defrag successful, try mapping again */ + *m_head = m0; + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, + tx_buf->m_map, m0, + segs, &nsegs, BUS_DMA_NOWAIT); + if (error) { + fp->eth_q_stats.tx_dma_mapping_failure++; + /* No sense in trying to defrag/copy chain, drop it. :( */ + rc = error; + } + + /* if the chain is still too long then drop it */ + if (__predict_false(nsegs > 12)) { + rc = ENODEV; + } + } } bxe_tx_encap_continue: Modified: stable/7/sys/dev/bxe/ecore_hsi.h ============================================================================== --- stable/7/sys/dev/bxe/ecore_hsi.h Tue Jan 7 23:50:02 2014 (r260426) +++ stable/7/sys/dev/bxe/ecore_hsi.h Tue Jan 7 23:50:15 2014 (r260427) @@ -1305,6 +1305,13 @@ struct extended_dev_info_shared_cfg { #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_SHOW_MENU 0x00000000 #define EXTENDED_DEV_INFO_SHARED_CFG_SRIOV_HIDE_MENU 0x00000200 + /* Overide PCIE revision ID when enabled the, + revision ID will set to B1=='0x11' */ + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_MASK 0x00000400 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_SHIFT 10 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_DISABLED 0x00000000 + #define EXTENDED_DEV_INFO_SHARED_CFG_OVR_REV_ID_ENABLED 0x00000400 + /* Threshold in celcius for max continuous operation */ uint32_t temperature_report; /* 0x4014 */ #define EXTENDED_DEV_INFO_SHARED_CFG_TEMP_MCOT_MASK 0x0000007F From owner-svn-src-all@FreeBSD.ORG Tue Jan 7 23:51:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 62929671; Tue, 7 Jan 2014 23:51:42 +0000 (UTC) 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 34AED1D70; Tue, 7 Jan 2014 23:51: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 s07NpgVN067351; Tue, 7 Jan 2014 23:51:42 GMT (envelope-from tuexen@svn.freebsd.org) Received: (from tuexen@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s07NpgsD067350; Tue, 7 Jan 2014 23:51:42 GMT (envelope-from tuexen@svn.freebsd.org) Message-Id: <201401072351.s07NpgsD067350@svn.freebsd.org> From: Michael Tuexen Date: Tue, 7 Jan 2014 23:51:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260428 - stable/10/lib/libc/net X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jan 2014 23:51:42 -0000 Author: tuexen Date: Tue Jan 7 23:51:41 2014 New Revision: 260428 URL: http://svnweb.freebsd.org/changeset/base/260428 Log: MFC r260257: Fix several bugs in sctp_bindx(): * Set errno to EAFNOSUPPORT if an address is provided which is neither AF_INET nor AF_INET6. * Don't modify the arguments. * Don't smash the stack when provided with a non-zero port. * Handle the case correctly where the first address provided is an IPv6 address. Modified: stable/10/lib/libc/net/sctp_sys_calls.c Directory Properties: stable/10/ (props changed) Modified: stable/10/lib/libc/net/sctp_sys_calls.c ============================================================================== --- stable/10/lib/libc/net/sctp_sys_calls.c Tue Jan 7 23:50:15 2014 (r260427) +++ stable/10/lib/libc/net/sctp_sys_calls.c Tue Jan 7 23:51:41 2014 (r260428) @@ -233,19 +233,11 @@ sctp_bindx(int sd, struct sockaddr *addr break; default: /* Invalid address family specified. */ - errno = EINVAL; + errno = EAFNOSUPPORT; return (-1); } sa = (struct sockaddr *)((caddr_t)sa + sa->sa_len); } - /* - * Now if there was a port mentioned, assure that the first address - * has that port to make sure it fails or succeeds correctly. - */ - if (sport) { - sin = (struct sockaddr_in *)sa; - sin->sin_port = sport; - } argsz = sizeof(struct sctp_getaddresses) + sizeof(struct sockaddr_storage); if ((gaddrs = (struct sctp_getaddresses *)malloc(argsz)) == NULL) { @@ -257,6 +249,23 @@ sctp_bindx(int sd, struct sockaddr *addr memset(gaddrs, 0, argsz); gaddrs->sget_assoc_id = 0; memcpy(gaddrs->addr, sa, sa->sa_len); + /* + * Now, if there was a port mentioned, assure that the first + * address has that port to make sure it fails or succeeds + * correctly. + */ + if ((i == 0) && (sport != 0)) { + switch (gaddrs->addr->sa_family) { + case AF_INET: + sin = (struct sockaddr_in *)gaddrs->addr; + sin->sin_port = sport; + break; + case AF_INET6: + sin6 = (struct sockaddr_in6 *)gaddrs->addr; + sin6->sin6_port = sport; + break; + } + } if (setsockopt(sd, IPPROTO_SCTP, flags, gaddrs, (socklen_t) argsz) != 0) { free(gaddrs); From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 01:06:32 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9702C7CF; Wed, 8 Jan 2014 01:06:32 +0000 (UTC) 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 8347412A0; Wed, 8 Jan 2014 01:06: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 s0816WUN095079; Wed, 8 Jan 2014 01:06:32 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0816Wru095078; Wed, 8 Jan 2014 01:06:32 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201401080106.s0816Wru095078@svn.freebsd.org> From: Pyun YongHyeon Date: Wed, 8 Jan 2014 01:06:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260429 - head/sys/dev/ale X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 01:06:32 -0000 Author: yongari Date: Wed Jan 8 01:06:32 2014 New Revision: 260429 URL: http://svnweb.freebsd.org/changeset/base/260429 Log: m_defrag(9) does not touch original mbuf chain when it can't allocate new mbuf. Free original mbuf chain when driver is not able to send the packet. Modified: head/sys/dev/ale/if_ale.c Modified: head/sys/dev/ale/if_ale.c ============================================================================== --- head/sys/dev/ale/if_ale.c Tue Jan 7 23:51:41 2014 (r260428) +++ head/sys/dev/ale/if_ale.c Wed Jan 8 01:06:32 2014 (r260429) @@ -1660,6 +1660,7 @@ ale_encap(struct ale_softc *sc, struct m (mtod(m, intptr_t) & 3) != 0) { m = m_defrag(*m_head, M_NOWAIT); if (m == NULL) { + m_freem(*m_head); *m_head = NULL; return (ENOBUFS); } From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 01:26:09 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E013CFF5; Wed, 8 Jan 2014 01:26:09 +0000 (UTC) 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 CBF721499; Wed, 8 Jan 2014 01:26: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 s081Q9pV003016; Wed, 8 Jan 2014 01:26:09 GMT (envelope-from gjb@svn.freebsd.org) Received: (from gjb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s081Q9a5003015; Wed, 8 Jan 2014 01:26:09 GMT (envelope-from gjb@svn.freebsd.org) Message-Id: <201401080126.s081Q9a5003015@svn.freebsd.org> From: Glen Barber Date: Wed, 8 Jan 2014 01:26:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r260430 - releng/10.0/sys/conf X-SVN-Group: releng MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 01:26:10 -0000 Author: gjb Date: Wed Jan 8 01:26:09 2014 New Revision: 260430 URL: http://svnweb.freebsd.org/changeset/base/260430 Log: Update releng/10.0/ to -RC5 as part of the 10.0-RELEASE cycle. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: releng/10.0/sys/conf/newvers.sh Modified: releng/10.0/sys/conf/newvers.sh ============================================================================== --- releng/10.0/sys/conf/newvers.sh Wed Jan 8 01:06:32 2014 (r260429) +++ releng/10.0/sys/conf/newvers.sh Wed Jan 8 01:26:09 2014 (r260430) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="10.0" -BRANCH="RC4" +BRANCH="RC5" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 02:31:36 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 062D4C85; Wed, 8 Jan 2014 02:31:36 +0000 (UTC) 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 E61CD1FF4; Wed, 8 Jan 2014 02:31: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 s082VZar029178; Wed, 8 Jan 2014 02:31:35 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s082VZv6029177; Wed, 8 Jan 2014 02:31:35 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201401080231.s082VZv6029177@svn.freebsd.org> From: Colin Percival Date: Wed, 8 Jan 2014 02:31:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260433 - stable/9/sys/kern X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 02:31:36 -0000 Author: cperciva Date: Wed Jan 8 02:31:35 2014 New Revision: 260433 URL: http://svnweb.freebsd.org/changeset/base/260433 Log: MFC r258893, r258956: Add a new sysctl / loader tunable kern.panic_reboot_wait_time which defaults to PANIC_REBOOT_WAIT_TIME (a long-existing kernel config setting). Use this now-variable value in place of the defined constant to control how long the system waits after a panic before rebooting. Modified: stable/9/sys/kern/kern_shutdown.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/kern/kern_shutdown.c ============================================================================== --- stable/9/sys/kern/kern_shutdown.c Wed Jan 8 02:30:24 2014 (r260432) +++ stable/9/sys/kern/kern_shutdown.c Wed Jan 8 02:31:35 2014 (r260433) @@ -87,6 +87,11 @@ __FBSDID("$FreeBSD$"); #ifndef PANIC_REBOOT_WAIT_TIME #define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */ #endif +static int panic_reboot_wait_time = PANIC_REBOOT_WAIT_TIME; +SYSCTL_INT(_kern, OID_AUTO, panic_reboot_wait_time, CTLFLAG_RW | CTLFLAG_TUN, + &panic_reboot_wait_time, 0, + "Seconds to wait before rebooting after a panic"); +TUNABLE_INT("kern.panic_reboot_wait_time", &panic_reboot_wait_time); /* * Note that stdarg.h and the ANSI style va_start macro is used for both @@ -487,12 +492,12 @@ shutdown_panic(void *junk, int howto) int loop; if (howto & RB_DUMP) { - if (PANIC_REBOOT_WAIT_TIME != 0) { - if (PANIC_REBOOT_WAIT_TIME != -1) { + if (panic_reboot_wait_time != 0) { + if (panic_reboot_wait_time != -1) { printf("Automatic reboot in %d seconds - " "press a key on the console to abort\n", - PANIC_REBOOT_WAIT_TIME); - for (loop = PANIC_REBOOT_WAIT_TIME * 10; + panic_reboot_wait_time); + for (loop = panic_reboot_wait_time * 10; loop > 0; --loop) { DELAY(1000 * 100); /* 1/10th second */ /* Did user type a key? */ From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:16:51 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8DDF9598; Wed, 8 Jan 2014 03:16:51 +0000 (UTC) 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 7A44E136C; Wed, 8 Jan 2014 03:16: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 s083GpQh046391; Wed, 8 Jan 2014 03:16:51 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083GpmQ046390; Wed, 8 Jan 2014 03:16:51 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401080316.s083GpmQ046390@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 03:16:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260436 - stable/8/sys/netinet X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:16:51 -0000 Author: peter Date: Wed Jan 8 03:16:50 2014 New Revision: 260436 URL: http://svnweb.freebsd.org/changeset/base/260436 Log: Revert MFC of r258821 - it was already handled by MFC of r239672. Pointy hat to: peter Modified: stable/8/sys/netinet/tcp_input.c Modified: stable/8/sys/netinet/tcp_input.c ============================================================================== --- stable/8/sys/netinet/tcp_input.c Wed Jan 8 03:16:36 2014 (r260435) +++ stable/8/sys/netinet/tcp_input.c Wed Jan 8 03:16:50 2014 (r260436) @@ -2318,15 +2318,13 @@ tcp_do_segment(struct mbuf *m, struct tc hhook_run_tcp_est_in(tp, th, &to); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd && - !(thflags & TH_FIN)) { + if (tlen == 0 && tiwin == tp->snd_wnd) { TCPSTAT_INC(tcps_rcvdupack); /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change and FIN isn't set), - * the ack is the biggest we've + * change), the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:16:36 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B7C954A8; Wed, 8 Jan 2014 03:16:36 +0000 (UTC) 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 A4083136A; Wed, 8 Jan 2014 03:16: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 s083GaLh046326; Wed, 8 Jan 2014 03:16:36 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083Ga0U046324; Wed, 8 Jan 2014 03:16:36 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401080316.s083Ga0U046324@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 03:16:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260435 - stable/9/sys/netinet X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:16:36 -0000 Author: peter Date: Wed Jan 8 03:16:36 2014 New Revision: 260435 URL: http://svnweb.freebsd.org/changeset/base/260435 Log: Revert MFC of r258821 - it was already handled by MFC of r239672. Pointy hat to: peter Modified: stable/9/sys/netinet/tcp_input.c Modified: stable/9/sys/netinet/tcp_input.c ============================================================================== --- stable/9/sys/netinet/tcp_input.c Wed Jan 8 03:16:21 2014 (r260434) +++ stable/9/sys/netinet/tcp_input.c Wed Jan 8 03:16:36 2014 (r260435) @@ -2407,15 +2407,13 @@ tcp_do_segment(struct mbuf *m, struct tc hhook_run_tcp_est_in(tp, th, &to); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd && - !(thflags & TH_FIN)) { + if (tlen == 0 && tiwin == tp->snd_wnd) { TCPSTAT_INC(tcps_rcvdupack); /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change and FIN isn't set), - * the ack is the biggest we've + * change), the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:40:26 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 371752BD; Wed, 8 Jan 2014 03:40:26 +0000 (UTC) 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 23AB71515; Wed, 8 Jan 2014 03:40: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 s083eQB1055723; Wed, 8 Jan 2014 03:40:26 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083eIDG054652; Wed, 8 Jan 2014 03:40:18 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401080340.s083eIDG054652@svn.freebsd.org> From: Ian Lepore Date: Wed, 8 Jan 2014 03:40:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260440 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:40:26 -0000 Author: ian Date: Wed Jan 8 03:40:18 2014 New Revision: 260440 URL: http://svnweb.freebsd.org/changeset/base/260440 Log: Add option USB_HOST_ALIGN to configs that contain 'device usb'. Setting this to the cache line size is required to avoid data corruption on armv4 and armv5, and improves performance on armv6, in both cases by avoiding partial cacheline flushes for USB IO. All these configs already exist in 10-stable. A few that don't (and thus can't be MFC'd yet) will be committed separately. Modified: head/sys/arm/conf/AC100 head/sys/arm/conf/ARMADAXP head/sys/arm/conf/ARNDALE head/sys/arm/conf/ATMEL head/sys/arm/conf/AVILA head/sys/arm/conf/BWCT head/sys/arm/conf/CAMBRIA head/sys/arm/conf/CNS11XXNAS head/sys/arm/conf/CUBIEBOARD head/sys/arm/conf/CUBIEBOARD2 head/sys/arm/conf/DB-78XXX head/sys/arm/conf/DB-88F5XXX head/sys/arm/conf/DB-88F6XXX head/sys/arm/conf/DIGI-CCWMX53 head/sys/arm/conf/EA3250 head/sys/arm/conf/EB9200 head/sys/arm/conf/EFIKA_MX head/sys/arm/conf/ETHERNUT5 head/sys/arm/conf/HL200 head/sys/arm/conf/HL201 head/sys/arm/conf/IMX53-QSB head/sys/arm/conf/KB920X head/sys/arm/conf/LN2410SBC head/sys/arm/conf/NSLU head/sys/arm/conf/PANDABOARD head/sys/arm/conf/QILA9G20 head/sys/arm/conf/RPI-B head/sys/arm/conf/SAM9260EK head/sys/arm/conf/SAM9G20EK head/sys/arm/conf/SAM9X25EK head/sys/arm/conf/SHEEVAPLUG head/sys/arm/conf/SN9G45 head/sys/arm/conf/TS7800 head/sys/arm/conf/ZEDBOARD Modified: head/sys/arm/conf/AC100 ============================================================================== --- head/sys/arm/conf/AC100 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/AC100 Wed Jan 8 03:40:18 2014 (r260440) @@ -66,6 +66,7 @@ device loop device md # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG # enable debug msgs #device usb #device ehci Modified: head/sys/arm/conf/ARMADAXP ============================================================================== --- head/sys/arm/conf/ARMADAXP Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/ARMADAXP Wed Jan 8 03:40:18 2014 (r260440) @@ -67,6 +67,7 @@ device loop device md # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device usb device ehci Modified: head/sys/arm/conf/ARNDALE ============================================================================== --- head/sys/arm/conf/ARNDALE Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/ARNDALE Wed Jan 8 03:40:18 2014 (r260440) @@ -94,6 +94,7 @@ device md device gpio # USB support +options USB_HOST_ALIGN=64 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG Modified: head/sys/arm/conf/ATMEL ============================================================================== --- head/sys/arm/conf/ATMEL Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/ATMEL Wed Jan 8 03:40:18 2014 (r260440) @@ -157,6 +157,7 @@ device uart # Multi-uart driver options ALT_BREAK_TO_DEBUGGER # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device ohci # OHCI USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/AVILA ============================================================================== --- head/sys/arm/conf/AVILA Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/AVILA Wed Jan 8 03:40:18 2014 (r260440) @@ -143,6 +143,7 @@ device ath_ar9160 device ath_ar9280 device usb +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG device ohci device ehci Modified: head/sys/arm/conf/BWCT ============================================================================== --- head/sys/arm/conf/BWCT Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/BWCT Wed Jan 8 03:40:18 2014 (r260440) @@ -104,6 +104,7 @@ device spibus device bpf # Berkeley packet filter #options USB_DEBUG +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #device ohci #device usb #device umass # Disks/Mass storage - Requires scbus and da Modified: head/sys/arm/conf/CAMBRIA ============================================================================== --- head/sys/arm/conf/CAMBRIA Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/CAMBRIA Wed Jan 8 03:40:18 2014 (r260440) @@ -136,6 +136,7 @@ options AH_SUPPORT_AR5416 # NB: for 11n device ath_hal # NB: 2 USB 2.0 ports standard +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb options USB_EHCI_BIG_ENDIAN_DESC # handle big-endian byte order #options USB_DEBUG Modified: head/sys/arm/conf/CNS11XXNAS ============================================================================== --- head/sys/arm/conf/CNS11XXNAS Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/CNS11XXNAS Wed Jan 8 03:40:18 2014 (r260440) @@ -106,6 +106,7 @@ device random # Entrop #options ARM_USE_SMALL_ALLOC device usb +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG device ohci device ehci Modified: head/sys/arm/conf/CUBIEBOARD ============================================================================== --- head/sys/arm/conf/CUBIEBOARD Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/CUBIEBOARD Wed Jan 8 03:40:18 2014 (r260440) @@ -106,6 +106,7 @@ device da # Direct Access (disks) device pass # USB support +options USB_HOST_ALIGN=64 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG Modified: head/sys/arm/conf/CUBIEBOARD2 ============================================================================== --- head/sys/arm/conf/CUBIEBOARD2 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/CUBIEBOARD2 Wed Jan 8 03:40:18 2014 (r260440) @@ -106,6 +106,7 @@ device da # Direct Access (disks) device pass # USB support +options USB_HOST_ALIGN=64 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG Modified: head/sys/arm/conf/DB-78XXX ============================================================================== --- head/sys/arm/conf/DB-78XXX Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/DB-78XXX Wed Jan 8 03:40:18 2014 (r260440) @@ -67,6 +67,7 @@ device e1000phy device bpf # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device usb device ehci Modified: head/sys/arm/conf/DB-88F5XXX ============================================================================== --- head/sys/arm/conf/DB-88F5XXX Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/DB-88F5XXX Wed Jan 8 03:40:18 2014 (r260440) @@ -73,6 +73,7 @@ device iicbus device ds133x # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device usb device ehci Modified: head/sys/arm/conf/DB-88F6XXX ============================================================================== --- head/sys/arm/conf/DB-88F6XXX Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/DB-88F6XXX Wed Jan 8 03:40:18 2014 (r260440) @@ -71,6 +71,7 @@ device crypto device cryptodev # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device usb device ehci Modified: head/sys/arm/conf/DIGI-CCWMX53 ============================================================================== --- head/sys/arm/conf/DIGI-CCWMX53 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/DIGI-CCWMX53 Wed Jan 8 03:40:18 2014 (r260440) @@ -134,6 +134,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device ehci # OHCI USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/EA3250 ============================================================================== --- head/sys/arm/conf/EA3250 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/EA3250 Wed Jan 8 03:40:18 2014 (r260440) @@ -65,6 +65,7 @@ device bpf device lpe # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG device usb device ohci Modified: head/sys/arm/conf/EB9200 ============================================================================== --- head/sys/arm/conf/EB9200 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/EB9200 Wed Jan 8 03:40:18 2014 (r260440) @@ -92,6 +92,7 @@ device icee device bpf # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device ohci # OHCI localbus->USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/EFIKA_MX ============================================================================== --- head/sys/arm/conf/EFIKA_MX Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/EFIKA_MX Wed Jan 8 03:40:18 2014 (r260440) @@ -130,6 +130,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG # enable debug msgs device ehci # OHCI USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/ETHERNUT5 ============================================================================== --- head/sys/arm/conf/ETHERNUT5 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/ETHERNUT5 Wed Jan 8 03:40:18 2014 (r260440) @@ -149,6 +149,7 @@ device uart # Multi-uart driver options ALT_BREAK_TO_DEBUGGER # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG # enable debug msgs device ohci # OHCI USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/HL200 ============================================================================== --- head/sys/arm/conf/HL200 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/HL200 Wed Jan 8 03:40:18 2014 (r260440) @@ -94,6 +94,7 @@ device icee device bpf # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device ohci # OHCI localbus->USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/HL201 ============================================================================== --- head/sys/arm/conf/HL201 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/HL201 Wed Jan 8 03:40:18 2014 (r260440) @@ -96,6 +96,7 @@ device icee device bpf # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #device ohci # OHCI localbus->USB interface device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices Modified: head/sys/arm/conf/IMX53-QSB ============================================================================== --- head/sys/arm/conf/IMX53-QSB Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/IMX53-QSB Wed Jan 8 03:40:18 2014 (r260440) @@ -133,6 +133,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG # enable debug msgs device ehci # OHCI USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/KB920X ============================================================================== --- head/sys/arm/conf/KB920X Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/KB920X Wed Jan 8 03:40:18 2014 (r260440) @@ -95,6 +95,7 @@ device icee device bpf # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device ohci # OHCI localbus->USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/LN2410SBC ============================================================================== --- head/sys/arm/conf/LN2410SBC Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/LN2410SBC Wed Jan 8 03:40:18 2014 (r260440) @@ -77,6 +77,7 @@ options WITNESS_SKIPSPIN #Don't run wit device md +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device usb device ohci Modified: head/sys/arm/conf/NSLU ============================================================================== --- head/sys/arm/conf/NSLU Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/NSLU Wed Jan 8 03:40:18 2014 (r260440) @@ -109,6 +109,7 @@ device random # Entropy device #options ARM_USE_SMALL_ALLOC device usb +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG device ohci device ehci Modified: head/sys/arm/conf/PANDABOARD ============================================================================== --- head/sys/arm/conf/PANDABOARD Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/PANDABOARD Wed Jan 8 03:40:18 2014 (r260440) @@ -112,6 +112,7 @@ device md device random # Entropy device # USB support +options USB_HOST_ALIGN=64 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG Modified: head/sys/arm/conf/QILA9G20 ============================================================================== --- head/sys/arm/conf/QILA9G20 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/QILA9G20 Wed Jan 8 03:40:18 2014 (r260440) @@ -119,6 +119,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device ohci # OHCI localbus->USB interface device usb # USB Bus (required) device umass # Disks/Mass storage - Requires scbus and da Modified: head/sys/arm/conf/RPI-B ============================================================================== --- head/sys/arm/conf/RPI-B Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/RPI-B Wed Jan 8 03:40:18 2014 (r260440) @@ -93,6 +93,7 @@ device md device random # Entropy device # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb options USB_DEBUG device dwcotg #DWC OTG controller Modified: head/sys/arm/conf/SAM9260EK ============================================================================== --- head/sys/arm/conf/SAM9260EK Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/SAM9260EK Wed Jan 8 03:40:18 2014 (r260440) @@ -157,6 +157,7 @@ device uart # Multi-uart driver options ALT_BREAK_TO_DEBUGGER # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #options USB_DEBUG # enable debug msgs device ohci # OHCI USB interface device usb # USB Bus (required) Modified: head/sys/arm/conf/SAM9G20EK ============================================================================== --- head/sys/arm/conf/SAM9G20EK Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/SAM9G20EK Wed Jan 8 03:40:18 2014 (r260440) @@ -119,6 +119,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device ohci # OHCI localbus->USB interface device usb # USB Bus (required) device umass # Disks/Mass storage - Requires scbus and da Modified: head/sys/arm/conf/SAM9X25EK ============================================================================== --- head/sys/arm/conf/SAM9X25EK Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/SAM9X25EK Wed Jan 8 03:40:18 2014 (r260440) @@ -121,6 +121,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. #device ohci # OHCI localbus->USB interface #device usb # USB Bus (required) #device umass # Disks/Mass storage - Requires scbus and da Modified: head/sys/arm/conf/SHEEVAPLUG ============================================================================== --- head/sys/arm/conf/SHEEVAPLUG Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/SHEEVAPLUG Wed Jan 8 03:40:18 2014 (r260440) @@ -65,6 +65,7 @@ device crypto device cryptodev # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. options USB_DEBUG # enable debug msgs device usb device ehci Modified: head/sys/arm/conf/SN9G45 ============================================================================== --- head/sys/arm/conf/SN9G45 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/SN9G45 Wed Jan 8 03:40:18 2014 (r260440) @@ -97,6 +97,7 @@ device cd # CD device pass # Passthrough device (direct SCSI access) # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device ohci # OHCI localbus->USB interface device usb # USB Bus (required) device umass # Disks/Mass storage - Requires scbus and da Modified: head/sys/arm/conf/TS7800 ============================================================================== --- head/sys/arm/conf/TS7800 Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/TS7800 Wed Jan 8 03:40:18 2014 (r260440) @@ -61,6 +61,7 @@ device bpf options HZ=1000 # USB +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb device ehci device umass Modified: head/sys/arm/conf/ZEDBOARD ============================================================================== --- head/sys/arm/conf/ZEDBOARD Wed Jan 8 03:22:42 2014 (r260439) +++ head/sys/arm/conf/ZEDBOARD Wed Jan 8 03:40:18 2014 (r260440) @@ -81,6 +81,7 @@ device sdhci # generic sdhci device bpf # Berkeley packet filter # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 02:19:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8E38B5CA; Wed, 8 Jan 2014 02:19:40 +0000 (UTC) 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 799C51F10; Wed, 8 Jan 2014 02:19: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 s082JevL022436; Wed, 8 Jan 2014 02:19:40 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s082JesG022435; Wed, 8 Jan 2014 02:19:40 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201401080219.s082JesG022435@svn.freebsd.org> From: Colin Percival Date: Wed, 8 Jan 2014 02:19:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260431 - stable/10/sys/kern X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 02:19:40 -0000 Author: cperciva Date: Wed Jan 8 02:19:39 2014 New Revision: 260431 URL: http://svnweb.freebsd.org/changeset/base/260431 Log: MFC r258893, r258956: Add a new sysctl / loader tunable kern.panic_reboot_wait_time which defaults to PANIC_REBOOT_WAIT_TIME (a long-existing kernel config setting). Use this now-variable value in place of the defined constant to control how long the system waits after a panic before rebooting. Modified: stable/10/sys/kern/kern_shutdown.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/kern/kern_shutdown.c ============================================================================== --- stable/10/sys/kern/kern_shutdown.c Wed Jan 8 01:26:09 2014 (r260430) +++ stable/10/sys/kern/kern_shutdown.c Wed Jan 8 02:19:39 2014 (r260431) @@ -89,6 +89,11 @@ __FBSDID("$FreeBSD$"); #ifndef PANIC_REBOOT_WAIT_TIME #define PANIC_REBOOT_WAIT_TIME 15 /* default to 15 seconds */ #endif +static int panic_reboot_wait_time = PANIC_REBOOT_WAIT_TIME; +SYSCTL_INT(_kern, OID_AUTO, panic_reboot_wait_time, CTLFLAG_RW | CTLFLAG_TUN, + &panic_reboot_wait_time, 0, + "Seconds to wait before rebooting after a panic"); +TUNABLE_INT("kern.panic_reboot_wait_time", &panic_reboot_wait_time); /* * Note that stdarg.h and the ANSI style va_start macro is used for both @@ -485,12 +490,12 @@ shutdown_panic(void *junk, int howto) int loop; if (howto & RB_DUMP) { - if (PANIC_REBOOT_WAIT_TIME != 0) { - if (PANIC_REBOOT_WAIT_TIME != -1) { + if (panic_reboot_wait_time != 0) { + if (panic_reboot_wait_time != -1) { printf("Automatic reboot in %d seconds - " "press a key on the console to abort\n", - PANIC_REBOOT_WAIT_TIME); - for (loop = PANIC_REBOOT_WAIT_TIME * 10; + panic_reboot_wait_time); + for (loop = panic_reboot_wait_time * 10; loop > 0; --loop) { DELAY(1000 * 100); /* 1/10th second */ /* Did user type a key? */ From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:16:22 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7C6023BA; Wed, 8 Jan 2014 03:16:22 +0000 (UTC) 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 6812E1369; Wed, 8 Jan 2014 03:16: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 s083GMM7046260; Wed, 8 Jan 2014 03:16:22 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083GMfF046259; Wed, 8 Jan 2014 03:16:22 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401080316.s083GMfF046259@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 03:16:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260434 - stable/10/sys/netinet X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:16:22 -0000 Author: peter Date: Wed Jan 8 03:16:21 2014 New Revision: 260434 URL: http://svnweb.freebsd.org/changeset/base/260434 Log: Revert MFC of r258821 - it was already handled by MFC of r239672. Pointy hat to: peter Modified: stable/10/sys/netinet/tcp_input.c Modified: stable/10/sys/netinet/tcp_input.c ============================================================================== --- stable/10/sys/netinet/tcp_input.c Wed Jan 8 02:31:35 2014 (r260433) +++ stable/10/sys/netinet/tcp_input.c Wed Jan 8 03:16:21 2014 (r260434) @@ -2429,15 +2429,13 @@ tcp_do_segment(struct mbuf *m, struct tc hhook_run_tcp_est_in(tp, th, &to); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd && - !(thflags & TH_FIN)) { + if (tlen == 0 && tiwin == tp->snd_wnd) { TCPSTAT_INC(tcps_rcvdupack); /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change and FIN isn't set), - * the ack is the biggest we've + * change), the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:22:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 339B4A95; Wed, 8 Jan 2014 03:22:43 +0000 (UTC) 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 1F5231438; Wed, 8 Jan 2014 03:22: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 s083MgJu049941; Wed, 8 Jan 2014 03:22:42 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083Mg7l049940; Wed, 8 Jan 2014 03:22:42 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401080322.s083Mg7l049940@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 03:22:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-other@freebsd.org Subject: svn commit: r260439 - stable/4/sys/netinet X-SVN-Group: stable-other MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:22:43 -0000 Author: peter Date: Wed Jan 8 03:22:42 2014 New Revision: 260439 URL: http://svnweb.freebsd.org/changeset/base/260439 Log: Revert MFC of r258821 Modified: stable/4/sys/netinet/tcp_input.c Modified: stable/4/sys/netinet/tcp_input.c ============================================================================== --- stable/4/sys/netinet/tcp_input.c Wed Jan 8 03:17:32 2014 (r260438) +++ stable/4/sys/netinet/tcp_input.c Wed Jan 8 03:22:42 2014 (r260439) @@ -1705,15 +1705,13 @@ trimthenstep6: case TCPS_TIME_WAIT: if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd && - !(thflags & TH_FIN)) { + if (tlen == 0 && tiwin == tp->snd_wnd) { tcpstat.tcps_rcvdupack++; /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change and FIN isn't set), - * the ack is the biggest we've + * change), the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 02:30:25 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 5DAFAB2E; Wed, 8 Jan 2014 02:30:25 +0000 (UTC) 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 476DA1F9B; Wed, 8 Jan 2014 02:30: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 s082UPaV026737; Wed, 8 Jan 2014 02:30:25 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s082UPrk026736; Wed, 8 Jan 2014 02:30:25 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201401080230.s082UPrk026736@svn.freebsd.org> From: Colin Percival Date: Wed, 8 Jan 2014 02:30:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260432 - stable/9/etc X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 02:30:25 -0000 Author: cperciva Date: Wed Jan 8 02:30:24 2014 New Revision: 260432 URL: http://svnweb.freebsd.org/changeset/base/260432 Log: MFC r258894: Make rc(8) re-source rc.conf upon receipt of SIGALRM. The rc system aggressively caches the contents of /etc/rc.conf in order to improve boot performance; this produces arguably astonishing (non-)results if /etc/rc.conf is modified during the boot process. This commit provides a mechanism for explicitly requesting that rc.conf be reloaded. Modified: stable/9/etc/rc Directory Properties: stable/9/etc/ (props changed) Modified: stable/9/etc/rc ============================================================================== --- stable/9/etc/rc Wed Jan 8 02:19:39 2014 (r260431) +++ stable/9/etc/rc Wed Jan 8 02:30:24 2014 (r260432) @@ -71,6 +71,11 @@ fi . /etc/rc.subr load_rc_config 'XXX' +# If we receive a SIGALRM, re-source /etc/rc.conf; this allows rc.d +# scripts to perform "boot-time configuration" including enabling and +# disabling rc.d scripts which appear later in the boot order. +trap "_rc_conf_loaded=false; load_rc_config 'XXX'" ALRM + skip="-s nostart" if [ `/sbin/sysctl -n security.jail.jailed` -eq 1 ]; then skip="$skip -s nojail" From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:17:33 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 4CB1A7A2; Wed, 8 Jan 2014 03:17:33 +0000 (UTC) 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 38D471377; Wed, 8 Jan 2014 03:17: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 s083HX4j046577; Wed, 8 Jan 2014 03:17:33 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083HWP3046576; Wed, 8 Jan 2014 03:17:32 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401080317.s083HWP3046576@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 03:17:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-6@freebsd.org Subject: svn commit: r260438 - stable/6/sys/netinet X-SVN-Group: stable-6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:17:33 -0000 Author: peter Date: Wed Jan 8 03:17:32 2014 New Revision: 260438 URL: http://svnweb.freebsd.org/changeset/base/260438 Log: Revert MFC of r258821 - it was already handled by MFC of r239672. Pointy hat to: peter Modified: stable/6/sys/netinet/tcp_input.c Modified: stable/6/sys/netinet/tcp_input.c ============================================================================== --- stable/6/sys/netinet/tcp_input.c Wed Jan 8 03:17:11 2014 (r260437) +++ stable/6/sys/netinet/tcp_input.c Wed Jan 8 03:17:32 2014 (r260438) @@ -1858,15 +1858,13 @@ trimthenstep6: (to.to_nsacks > 0 || !TAILQ_EMPTY(&tp->snd_holes))) tcp_sack_doack(tp, &to, th->th_ack); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd && - !(thflags & TH_FIN)) { + if (tlen == 0 && tiwin == tp->snd_wnd) { tcpstat.tcps_rcvdupack++; /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change and FIN isn't set), - * the ack is the biggest we've + * change), the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:17:12 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A1CC569A; Wed, 8 Jan 2014 03:17:12 +0000 (UTC) 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 8E17C1371; Wed, 8 Jan 2014 03:17:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s083HCRJ046499; Wed, 8 Jan 2014 03:17:12 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083HCfw046498; Wed, 8 Jan 2014 03:17:12 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401080317.s083HCfw046498@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 03:17:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r260437 - stable/7/sys/netinet X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:17:12 -0000 Author: peter Date: Wed Jan 8 03:17:11 2014 New Revision: 260437 URL: http://svnweb.freebsd.org/changeset/base/260437 Log: Revert MFC of r258821 - it was already handled by MFC of r239672. Pointy hat to: peter Modified: stable/7/sys/netinet/tcp_input.c Modified: stable/7/sys/netinet/tcp_input.c ============================================================================== --- stable/7/sys/netinet/tcp_input.c Wed Jan 8 03:16:50 2014 (r260436) +++ stable/7/sys/netinet/tcp_input.c Wed Jan 8 03:17:11 2014 (r260437) @@ -1751,15 +1751,13 @@ tcp_do_segment(struct mbuf *m, struct tc !TAILQ_EMPTY(&tp->snd_holes))) tcp_sack_doack(tp, &to, th->th_ack); if (SEQ_LEQ(th->th_ack, tp->snd_una)) { - if (tlen == 0 && tiwin == tp->snd_wnd && - !(thflags & TH_FIN)) { + if (tlen == 0 && tiwin == tp->snd_wnd) { tcpstat.tcps_rcvdupack++; /* * If we have outstanding data (other than * a window probe), this is a completely * duplicate ack (ie, window info didn't - * change and FIN isn't set), - * the ack is the biggest we've + * change), the ack is the biggest we've * seen and we've seen exactly our rexmt * threshhold of them, assume a packet * has been dropped and retransmit it. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 03:42:10 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6AEA7445; Wed, 8 Jan 2014 03:42:10 +0000 (UTC) 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 580771585; Wed, 8 Jan 2014 03:42: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 s083gA4f057175; Wed, 8 Jan 2014 03:42:10 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s083g9fX057173; Wed, 8 Jan 2014 03:42:09 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401080342.s083g9fX057173@svn.freebsd.org> From: Ian Lepore Date: Wed, 8 Jan 2014 03:42:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260441 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 03:42:10 -0000 Author: ian Date: Wed Jan 8 03:42:09 2014 New Revision: 260441 URL: http://svnweb.freebsd.org/changeset/base/260441 Log: Add option USB_HOST_ALIGN to configs that contain 'device usb'. Setting this to the cache line size is required to avoid data corruption on armv4 and armv5, and improves performance on armv6, in both cases by avoiding partial cacheline flushes for USB IO. Modified: head/sys/arm/conf/COSMIC head/sys/arm/conf/RADXA Modified: head/sys/arm/conf/COSMIC ============================================================================== --- head/sys/arm/conf/COSMIC Wed Jan 8 03:40:18 2014 (r260440) +++ head/sys/arm/conf/COSMIC Wed Jan 8 03:42:09 2014 (r260441) @@ -97,6 +97,7 @@ device md device gpio # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG Modified: head/sys/arm/conf/RADXA ============================================================================== --- head/sys/arm/conf/RADXA Wed Jan 8 03:40:18 2014 (r260440) +++ head/sys/arm/conf/RADXA Wed Jan 8 03:42:09 2014 (r260441) @@ -93,6 +93,7 @@ device da # Direct Access (disks) device pass # USB support +options USB_HOST_ALIGN=32 # Align usb buffers to cache line size. device usb options USB_DEBUG #options USB_REQ_DEBUG From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 04:19:48 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C96E289E; Wed, 8 Jan 2014 04:19:48 +0000 (UTC) Received: from smtpauth4.wiscmail.wisc.edu (wmauth4.doit.wisc.edu [144.92.197.145]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 951D717D1; Wed, 8 Jan 2014 04:19:48 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth4.wiscmail.wisc.edu by smtpauth4.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MZ200B00EC1GC00@smtpauth4.wiscmail.wisc.edu>; Tue, 07 Jan 2014 22:19:41 -0600 (CST) X-Spam-PmxInfo: Server=avs-4, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.8.41515, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) by smtpauth4.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MZ2009VFEOR6810@smtpauth4.wiscmail.wisc.edu>; Tue, 07 Jan 2014 22:19:41 -0600 (CST) Message-id: <52CCD1DA.7010008@freebsd.org> Date: Tue, 07 Jan 2014 23:19:38 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: Ian Lepore , src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r260440 - head/sys/arm/conf References: <201401080340.s083eIDG054652@svn.freebsd.org> In-reply-to: <201401080340.s083eIDG054652@svn.freebsd.org> X-Enigmail-Version: 1.6 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 04:19:48 -0000 On 01/07/14 22:40, Ian Lepore wrote: > Author: ian > Date: Wed Jan 8 03:40:18 2014 > New Revision: 260440 > URL: http://svnweb.freebsd.org/changeset/base/260440 > > Log: > Add option USB_HOST_ALIGN to configs that contain 'device usb'. Setting > this to the cache line size is required to avoid data corruption on armv4 > and armv5, and improves performance on armv6, in both cases by avoiding > partial cacheline flushes for USB IO. > > All these configs already exist in 10-stable. A few that don't (and > thus can't be MFC'd yet) will be committed separately. > There has to be -- and I do not mean this as a criticism of your patch -- a better solution to this problem than USB_HOST_ALIGN. Isn't busdma supposed to handle this kind of thing? Why is USB different? -Nathan From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 08:02:30 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CE26B919; Wed, 8 Jan 2014 08:02:30 +0000 (UTC) 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 B7EEB1B17; Wed, 8 Jan 2014 08:02: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 s0882Ud3054656; Wed, 8 Jan 2014 08:02:30 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0882RVO054637; Wed, 8 Jan 2014 08:02:27 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401080802.s0882RVO054637@svn.freebsd.org> From: Baptiste Daroussin Date: Wed, 8 Jan 2014 08:02:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260442 - in vendor/byacc/dist: . package package/debian test X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 08:02:30 -0000 Author: bapt Date: Wed Jan 8 08:02:27 2014 New Revision: 260442 URL: http://svnweb.freebsd.org/changeset/base/260442 Log: Import 2014-01-01 which allows to support bison's token-table and allows to build ntpd into vendor Modified: vendor/byacc/dist/CHANGES vendor/byacc/dist/VERSION vendor/byacc/dist/aclocal.m4 vendor/byacc/dist/config.guess vendor/byacc/dist/config.sub vendor/byacc/dist/configure vendor/byacc/dist/configure.in vendor/byacc/dist/defs.h vendor/byacc/dist/main.c vendor/byacc/dist/makefile.in vendor/byacc/dist/output.c vendor/byacc/dist/package/byacc.spec vendor/byacc/dist/package/debian/changelog vendor/byacc/dist/reader.c vendor/byacc/dist/skeleton.c vendor/byacc/dist/test/calc.tab.c vendor/byacc/dist/test/calc1.tab.c vendor/byacc/dist/test/calc2.tab.c vendor/byacc/dist/test/calc3.tab.c vendor/byacc/dist/test/code_calc.code.c vendor/byacc/dist/test/code_calc.tab.c vendor/byacc/dist/test/code_error.code.c vendor/byacc/dist/test/code_error.tab.c vendor/byacc/dist/test/error.tab.c vendor/byacc/dist/test/ftp.tab.c vendor/byacc/dist/test/grammar.tab.c vendor/byacc/dist/test/pure_calc.tab.c vendor/byacc/dist/test/pure_error.tab.c vendor/byacc/dist/test/quote_calc-s.tab.c vendor/byacc/dist/test/quote_calc.tab.c vendor/byacc/dist/test/quote_calc2-s.tab.c vendor/byacc/dist/test/quote_calc2.tab.c vendor/byacc/dist/test/quote_calc3-s.tab.c vendor/byacc/dist/test/quote_calc3.tab.c vendor/byacc/dist/test/quote_calc4-s.tab.c vendor/byacc/dist/test/quote_calc4.tab.c vendor/byacc/dist/yacc.1 Modified: vendor/byacc/dist/CHANGES ============================================================================== --- vendor/byacc/dist/CHANGES Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/CHANGES Wed Jan 8 08:02:27 2014 (r260442) @@ -1,3 +1,48 @@ +2014-01-01 Thomas E. Dickey + + * yacc.1: document %token-table, improve presentation of double-quotes + + * VERSION, package/byacc.spec, package/debian/changelog: bump + + * test/calc.tab.c, test/calc1.tab.c, test/calc2.tab.c, test/calc3.tab.c, test/code_calc.code.c, test/code_calc.tab.c, test/code_error.code.c, test/code_error.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c, test/pure_calc.tab.c, test/pure_error.tab.c, test/quote_calc-s.tab.c, test/quote_calc.tab.c, test/quote_calc2-s.tab.c, test/quote_calc2.tab.c, test/quote_calc3-s.tab.c, test/quote_calc3.tab.c, test/quote_calc4-s.tab.c, test/quote_calc4.tab.c: + regen + + * output.c, skeleton.c: + amend the last change so that yytname is #define'd as needed rather than + permanent - to avoid breaking cproto for instance. + +2014-01-01 Christos.Zoulas + + * output.c, defs.h, main.c, reader.c, skeleton.c: + changes to build ntpd using byacc: + - rename yyname[] to yytname[] + - add YYTRANSLATE() macro + - recognize bison's %token-table declaration + +2014-01-01 Thomas E. Dickey + + * configure: regen + + * yacc.1: s/EE/XE/ to work around groff bug on Debian 6 + + * makefile.in: use CF_MAKE_DOCS + + * aclocal.m4: add CF_MAKE_DOCS + + * configure.in: use CF_MAKE_DOCS + +2013-12-26 Thomas E. Dickey + + * config.guess: 2013-11-29 + +2013-11-19 Thomas E. Dickey + + * aclocal.m4: resync with my-autoconf (fixes for clang and mingw) + +2013-10-25 Thomas E. Dickey + + * config.sub: 2013-10-01 + 2013-09-25 Thomas E. Dickey * reader.c: fix two loop-limits found by clang 3.3 --analyze Modified: vendor/byacc/dist/VERSION ============================================================================== --- vendor/byacc/dist/VERSION Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/VERSION Wed Jan 8 08:02:27 2014 (r260442) @@ -1 +1 @@ -20130925 +20140101 Modified: vendor/byacc/dist/aclocal.m4 ============================================================================== --- vendor/byacc/dist/aclocal.m4 Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/aclocal.m4 Wed Jan 8 08:02:27 2014 (r260442) @@ -1,7 +1,7 @@ -dnl $Id: aclocal.m4,v 1.31 2013/09/25 23:15:41 tom Exp $ +dnl $Id: aclocal.m4,v 1.33 2014/01/01 14:08:07 tom Exp $ dnl Macros for byacc configure script (Thomas E. Dickey) dnl --------------------------------------------------------------------------- -dnl Copyright 2004-2012,2013 Thomas E. Dickey +dnl Copyright 2004-2013,2014 Thomas E. Dickey dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the @@ -232,7 +232,7 @@ if test ".$system_name" != ".$cf_cv_syst fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CLANG_COMPILER version: 1 updated: 2012/06/16 14:55:39 +dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35 dnl ----------------- dnl Check if the given compiler is really clang. clang's C driver defines dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does @@ -243,7 +243,7 @@ dnl ensure that it is not mistaken for g dnl the wrappers for gcc and g++ warnings. dnl dnl $1 = GCC (default) or GXX -dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $2 = CLANG_COMPILER (default) dnl $3 = CFLAGS (default) or CXXFLAGS AC_DEFUN([CF_CLANG_COMPILER],[ ifelse([$2],,CLANG_COMPILER,[$2])=no @@ -449,7 +449,7 @@ if test "$GCC" = yes ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 29 updated: 2012/06/16 14:55:39 +dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35 dnl --------------- dnl Check if the compiler supports useful warning options. There's a few that dnl we don't use, simply because they're too noisy: @@ -521,10 +521,14 @@ then EXTRA_CFLAGS= cf_warn_CONST="" test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= for cf_opt in W Wall \ Wbad-function-cast \ Wcast-align \ Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ Winline \ Wmissing-declarations \ Wmissing-prototypes \ @@ -532,7 +536,7 @@ then Wpointer-arith \ Wshadow \ Wstrict-prototypes \ - Wundef $cf_warn_CONST $1 + Wundef $cf_gcc_warnings $cf_warn_CONST $1 do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" if AC_TRY_EVAL(ac_compile); then @@ -634,6 +638,60 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147 - fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MAKE_DOCS version: 2 updated: 2013/01/02 20:04:08 +dnl ------------ +dnl $1 = name(s) to generate rules for +dnl $2 = suffix of corresponding manpages used as input. +define([CF_MAKE_DOCS],[ +test -z "$cf_make_docs" && cf_make_docs=0 + +cf_output=makefile +test -f "$cf_output" || cf_output=Makefile + +if test "$cf_make_docs" = 0 +then +cat >>$cf_output <<"CF_EOF" +################################################################################ +.SUFFIXES : .html .$2 .man .ps .pdf .txt + +.$2.html : + GROFF_NO_SGR=stupid [$](SHELL) -c "tbl [$]*.$2 | groff -P -o0 -I$*_ -Thtml -man" >[$]@ + +.$2.ps : + [$](SHELL) -c "tbl [$]*.$2 | groff -man" >[$]@ + +.$2.txt : + GROFF_NO_SGR=stupid [$](SHELL) -c "tbl [$]*.$2 | nroff -Tascii -man | col -bx" >[$]@ + +.ps.pdf : + ps2pdf [$]*.ps + +CF_EOF + cf_make_docs=1 +fi + +for cf_name in $1 +do +cat >>$cf_output </dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; Modified: vendor/byacc/dist/config.sub ============================================================================== --- vendor/byacc/dist/config.sub Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/config.sub Wed Jan 8 08:02:27 2014 (r260442) @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2013-09-05' +timestamp='2013-10-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -265,6 +265,7 @@ case $basic_machine in | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -381,6 +382,7 @@ case $basic_machine in | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ Modified: vendor/byacc/dist/configure ============================================================================== --- vendor/byacc/dist/configure Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/configure Wed Jan 8 08:02:27 2014 (r260442) @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 1.14 . +# From configure.in Revision: 1.15 . # Guess values for system-dependent variables and create Makefiles. # Generated by Autoconf 2.52.20121002. # @@ -2112,7 +2112,7 @@ else if test "$cross_compiling" = yes ; then case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw32*|*-uwin*) #(vi + *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi cf_cv_mixedcase=no ;; *) @@ -4191,10 +4191,14 @@ echo "$as_me: checking for $CC warning o EXTRA_CFLAGS= cf_warn_CONST="" test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= for cf_opt in W Wall \ Wbad-function-cast \ Wcast-align \ Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ Winline \ Wmissing-declarations \ Wmissing-prototypes \ @@ -4202,15 +4206,15 @@ echo "$as_me: checking for $CC warning o Wpointer-arith \ Wshadow \ Wstrict-prototypes \ - Wundef $cf_warn_CONST Wwrite-strings + Wundef $cf_gcc_warnings $cf_warn_CONST Wwrite-strings do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:4208: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:4212: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:4211: \$? = $ac_status" >&5 + echo "$as_me:4215: \$? = $ac_status" >&5 (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:4213: result: ... -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:4217: result: ... -$cf_opt" >&5 echo "${ECHO_T}... -$cf_opt" >&6 case $cf_opt in #(vi Wcast-qual) #(vi @@ -4221,7 +4225,7 @@ echo "${ECHO_T}... -$cf_opt" >&6 [34].*) test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 -echo "${as_me:-configure}:4224: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 +echo "${as_me:-configure}:4228: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 continue;; esac @@ -4231,7 +4235,7 @@ echo "${as_me:-configure}:4224: testing [12].*) test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 -echo "${as_me:-configure}:4234: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 +echo "${as_me:-configure}:4238: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 continue;; esac @@ -4247,7 +4251,7 @@ rm -rf conftest* fi fi -echo "$as_me:4250: checking if you want to see long compiling messages" >&5 +echo "$as_me:4254: checking if you want to see long compiling messages" >&5 echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6 # Check whether --enable-echo or --disable-echo was given. @@ -4281,10 +4285,10 @@ else ECHO_CC='' fi; -echo "$as_me:4284: result: $enableval" >&5 +echo "$as_me:4288: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 -echo "$as_me:4287: checking if you want to use dmalloc for testing" >&5 +echo "$as_me:4291: checking if you want to use dmalloc for testing" >&5 echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6 # Check whether --with-dmalloc or --without-dmalloc was given. @@ -4301,7 +4305,7 @@ EOF else with_dmalloc= fi; -echo "$as_me:4304: result: ${with_dmalloc:-no}" >&5 +echo "$as_me:4308: result: ${with_dmalloc:-no}" >&5 echo "${ECHO_T}${with_dmalloc:-no}" >&6 case .$with_cflags in #(vi @@ -4395,23 +4399,23 @@ fi esac if test "$with_dmalloc" = yes ; then - echo "$as_me:4398: checking for dmalloc.h" >&5 + echo "$as_me:4402: checking for dmalloc.h" >&5 echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 if test "${ac_cv_header_dmalloc_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4404 "configure" +#line 4408 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:4408: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:4412: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4414: \$? = $ac_status" >&5 + echo "$as_me:4418: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -4430,11 +4434,11 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:4433: result: $ac_cv_header_dmalloc_h" >&5 +echo "$as_me:4437: result: $ac_cv_header_dmalloc_h" >&5 echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 if test $ac_cv_header_dmalloc_h = yes; then -echo "$as_me:4437: checking for dmalloc_debug in -ldmalloc" >&5 +echo "$as_me:4441: checking for dmalloc_debug in -ldmalloc" >&5 echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6 if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4442,7 +4446,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldmalloc $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 4445 "configure" +#line 4449 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -4461,16 +4465,16 @@ dmalloc_debug (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4464: \"$ac_link\"") >&5 +if { (eval echo "$as_me:4468: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:4467: \$? = $ac_status" >&5 + echo "$as_me:4471: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4470: \"$ac_try\"") >&5 + { (eval echo "$as_me:4474: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:4473: \$? = $ac_status" >&5 + echo "$as_me:4477: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dmalloc_dmalloc_debug=yes else @@ -4481,7 +4485,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:4484: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 +echo "$as_me:4488: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6 if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then cat >>confdefs.h <&5 +echo "$as_me:4503: checking if you want to use dbmalloc for testing" >&5 echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6 # Check whether --with-dbmalloc or --without-dbmalloc was given. @@ -4513,7 +4517,7 @@ EOF else with_dbmalloc= fi; -echo "$as_me:4516: result: ${with_dbmalloc:-no}" >&5 +echo "$as_me:4520: result: ${with_dbmalloc:-no}" >&5 echo "${ECHO_T}${with_dbmalloc:-no}" >&6 case .$with_cflags in #(vi @@ -4607,23 +4611,23 @@ fi esac if test "$with_dbmalloc" = yes ; then - echo "$as_me:4610: checking for dbmalloc.h" >&5 + echo "$as_me:4614: checking for dbmalloc.h" >&5 echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6 if test "${ac_cv_header_dbmalloc_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4616 "configure" +#line 4620 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:4620: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:4624: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4626: \$? = $ac_status" >&5 + echo "$as_me:4630: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -4642,11 +4646,11 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:4645: result: $ac_cv_header_dbmalloc_h" >&5 +echo "$as_me:4649: result: $ac_cv_header_dbmalloc_h" >&5 echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6 if test $ac_cv_header_dbmalloc_h = yes; then -echo "$as_me:4649: checking for debug_malloc in -ldbmalloc" >&5 +echo "$as_me:4653: checking for debug_malloc in -ldbmalloc" >&5 echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6 if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4654,7 +4658,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldbmalloc $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 4657 "configure" +#line 4661 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -4673,16 +4677,16 @@ debug_malloc (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4676: \"$ac_link\"") >&5 +if { (eval echo "$as_me:4680: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:4679: \$? = $ac_status" >&5 + echo "$as_me:4683: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4682: \"$ac_try\"") >&5 + { (eval echo "$as_me:4686: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:4685: \$? = $ac_status" >&5 + echo "$as_me:4689: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dbmalloc_debug_malloc=yes else @@ -4693,7 +4697,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:4696: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 +echo "$as_me:4700: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6 if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then cat >>confdefs.h <&5 +echo "$as_me:4715: checking if you want to use valgrind for testing" >&5 echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6 # Check whether --with-valgrind or --without-valgrind was given. @@ -4725,7 +4729,7 @@ EOF else with_valgrind= fi; -echo "$as_me:4728: result: ${with_valgrind:-no}" >&5 +echo "$as_me:4732: result: ${with_valgrind:-no}" >&5 echo "${ECHO_T}${with_valgrind:-no}" >&6 case .$with_cflags in #(vi @@ -4818,7 +4822,7 @@ fi ;; esac -echo "$as_me:4821: checking if you want to perform memory-leak testing" >&5 +echo "$as_me:4825: checking if you want to perform memory-leak testing" >&5 echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6 # Check whether --enable-leaks or --disable-leaks was given. @@ -4828,7 +4832,7 @@ if test "${enable_leaks+set}" = set; the else : ${with_no_leaks:=no} fi; -echo "$as_me:4831: result: $with_no_leaks" >&5 +echo "$as_me:4835: result: $with_no_leaks" >&5 echo "${ECHO_T}$with_no_leaks" >&6 if test "$with_no_leaks" = yes ; then @@ -4924,7 +4928,7 @@ DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:4927: creating $CONFIG_STATUS" >&5 +{ echo "$as_me:4931: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL @@ -5097,7 +5101,7 @@ cat >>$CONFIG_STATUS <<\EOF echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header - { { echo "$as_me:5100: error: ambiguous option: $1 + { { echo "$as_me:5104: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} @@ -5116,7 +5120,7 @@ Try \`$0 --help' for more information." ac_need_defaults=false;; # This is an error. - -*) { { echo "$as_me:5119: error: unrecognized option: $1 + -*) { { echo "$as_me:5123: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} @@ -5153,7 +5157,7 @@ do # Handling of arguments. "makefile" ) CONFIG_FILES="$CONFIG_FILES makefile" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config_h.in" ;; - *) { { echo "$as_me:5156: error: invalid argument: $ac_config_target" >&5 + *) { { echo "$as_me:5160: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac @@ -5386,7 +5390,7 @@ done; } esac if test x"$ac_file" != x-; then - { echo "$as_me:5389: creating $ac_file" >&5 + { echo "$as_me:5393: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi @@ -5404,7 +5408,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:5407: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:5411: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -5417,7 +5421,7 @@ echo "$as_me: error: cannot find input f echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:5420: error: cannot find input file: $f" >&5 + { { echo "$as_me:5424: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -5433,7 +5437,7 @@ cat >>$CONFIG_STATUS <<\EOF if test -n "$ac_seen"; then ac_used=`grep '@datarootdir@' $ac_item` if test -z "$ac_used"; then - { echo "$as_me:5436: WARNING: datarootdir was used implicitly but not set: + { echo "$as_me:5440: WARNING: datarootdir was used implicitly but not set: $ac_seen" >&5 echo "$as_me: WARNING: datarootdir was used implicitly but not set: $ac_seen" >&2;} @@ -5442,7 +5446,7 @@ $ac_seen" >&2;} fi ac_seen=`grep '${datarootdir}' $ac_item` if test -n "$ac_seen"; then - { echo "$as_me:5445: WARNING: datarootdir was used explicitly but not set: + { echo "$as_me:5449: WARNING: datarootdir was used explicitly but not set: $ac_seen" >&5 echo "$as_me: WARNING: datarootdir was used explicitly but not set: $ac_seen" >&2;} @@ -5479,7 +5483,7 @@ s,@INSTALL@,$ac_INSTALL,;t t ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file` if test -z "$ac_init"; then ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'` - { echo "$as_me:5482: WARNING: Variable $ac_name is used but was not set: + { echo "$as_me:5486: WARNING: Variable $ac_name is used but was not set: $ac_seen" >&5 echo "$as_me: WARNING: Variable $ac_name is used but was not set: $ac_seen" >&2;} @@ -5490,7 +5494,7 @@ $ac_seen" >&2;} egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out if test -s $tmp/out; then ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out` - { echo "$as_me:5493: WARNING: Some variables may not be substituted: + { echo "$as_me:5497: WARNING: Some variables may not be substituted: $ac_seen" >&5 echo "$as_me: WARNING: Some variables may not be substituted: $ac_seen" >&2;} @@ -5539,7 +5543,7 @@ for ac_file in : $CONFIG_HEADERS; do tes * ) ac_file_in=$ac_file.in ;; esac - test x"$ac_file" != x- && { echo "$as_me:5542: creating $ac_file" >&5 + test x"$ac_file" != x- && { echo "$as_me:5546: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the @@ -5550,7 +5554,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:5553: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:5557: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -5563,7 +5567,7 @@ echo "$as_me: error: cannot find input f echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:5566: error: cannot find input file: $f" >&5 + { { echo "$as_me:5570: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -5681,7 +5685,7 @@ cat >>$CONFIG_STATUS <<\EOF rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:5684: $ac_file is unchanged" >&5 + { echo "$as_me:5688: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ @@ -5748,3 +5752,51 @@ if test "$no_create" != yes; then $ac_cs_success || { (exit 1); exit 1; } fi +test -z "$cf_make_docs" && cf_make_docs=0 + +cf_output=makefile +test -f "$cf_output" || cf_output=Makefile + +if test "$cf_make_docs" = 0 +then +cat >>$cf_output <<"CF_EOF" +################################################################################ +.SUFFIXES : .html .1 .man .ps .pdf .txt + +.1.html : + GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.1 | groff -P -o0 -Iyacc,1_ -Thtml -man" >$@ + +.1.ps : + $(SHELL) -c "tbl $*.1 | groff -man" >$@ + +.1.txt : + GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.1 | nroff -Tascii -man | col -bx" >$@ + +.ps.pdf : + ps2pdf $*.ps + +CF_EOF + cf_make_docs=1 +fi + +for cf_name in yacc +do +cat >>$cf_output < @@ -104,6 +104,7 @@ #define PARSE_PARAM 13 #define LEX_PARAM 14 #define POSIX_YACC 15 +#define TOKEN_TABLE 16 /* symbol classes */ @@ -248,6 +249,7 @@ extern int lineno; extern int outline; extern int exit_code; extern int pure_parser; +extern int token_table; extern const char *const banner[]; extern const char *const xdecls[]; Modified: vendor/byacc/dist/main.c ============================================================================== --- vendor/byacc/dist/main.c Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/main.c Wed Jan 8 08:02:27 2014 (r260442) @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.40 2012/09/29 13:11:00 Adrian.Bunk Exp $ */ +/* $Id: main.c,v 1.41 2014/01/01 14:23:27 Christos.Zoulas Exp $ */ #include #include /* for _exit() */ @@ -87,6 +87,7 @@ short *symbol_prec; char *symbol_assoc; int pure_parser; +int token_table; int exit_code; Value_t *ritem; Modified: vendor/byacc/dist/makefile.in ============================================================================== --- vendor/byacc/dist/makefile.in Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/makefile.in Wed Jan 8 08:02:27 2014 (r260442) @@ -1,4 +1,4 @@ -# $Id: makefile.in,v 1.18 2012/09/29 13:10:15 Adrian.Bunk Exp $ +# $Id: makefile.in,v 1.19 2014/01/01 14:09:43 tom Exp $ # # UNIX template-makefile for Berkeley Yacc @@ -100,7 +100,7 @@ uninstall: - rm -f $(mandir)/$(actual_man) ################################################################################ -.SUFFIXES : $o .i .html .$(manext) .cat .ps .pdf .txt +.SUFFIXES : $o .i .c$o: @RULE_CC@ @@ -110,21 +110,6 @@ uninstall: @RULE_CC@ @ECHO_CC@$(CPP) -C $(CPPFLAGS) $*.c >$@ -.$(manext).cat : - - nroff -man $(srcdir)/$(THIS).$(manext) >$@ - -.$(manext).html : - GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.$(manext) | groff -Thtml -man" >$@ - -.$(manext).ps : - $(SHELL) -c "tbl $*.$(manext) | groff -man" >$@ - -.$(manext).txt : - GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.$(manext) | nroff -Tascii -man | col -bx" >$@ - -.ps.pdf : - ps2pdf $*.ps - ################################################################################ $(THIS)$x : $(OBJS) @@ -133,27 +118,17 @@ $(THIS)$x : $(OBJS) mostlyclean : - rm -f core .nfs* *$o *.bak *.BAK *.out -clean : mostlyclean +clean :: mostlyclean - rm -f $(THIS)$x -distclean : clean +distclean :: clean - rm -f config.log config.cache config.status config.h makefile - - rm -f *.html *.cat *.pdf *.ps *.txt - cd test && rm -f test-* -realclean: distclean +realclean :: distclean - rm -f tags TAGS ################################################################################ -docs :: $(THIS).html \ - $(THIS).pdf \ - $(THIS).ps \ - $(THIS).txt -$(THIS).html : $(THIS).$(manext) -$(THIS).pdf : $(THIS).ps -$(THIS).ps : $(THIS).$(manext) -$(THIS).txt : $(THIS).$(manext) -################################################################################ check: $(THIS)$x $(SHELL) $(testdir)/run_test.sh $(testdir) Modified: vendor/byacc/dist/output.c ============================================================================== --- vendor/byacc/dist/output.c Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/output.c Wed Jan 8 08:02:27 2014 (r260442) @@ -1,4 +1,4 @@ -/* $Id: output.c,v 1.45 2013/03/05 00:29:17 tom Exp $ */ +/* $Id: output.c,v 1.47 2014/01/01 17:22:38 tom Exp $ */ #include "defs.h" @@ -921,23 +921,42 @@ output_debug(void) ++outline; fprintf(code_file, "#define YYMAXTOKEN %d\n", max); + fprintf(code_file, "#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? " + "(YYMAXTOKEN + 1) : (a))\n"); - symnam = TMALLOC(const char *, max + 1); + symnam = TMALLOC(const char *, max + 2); NO_SPACE(symnam); /* Note that it is not necessary to initialize the element */ /* symnam[max]. */ - for (i = 0; i < max; ++i) + for (i = 0; i <= max; ++i) symnam[i] = 0; for (i = ntokens - 1; i >= 2; --i) symnam[symbol_value[i]] = symbol_name[i]; symnam[0] = "end-of-file"; + symnam[max + 1] = "illegal-symbol"; - output_line("#if YYDEBUG"); + /* + * bison's yytname[] array is roughly the same as byacc's yyname[] array. + * The difference is that byacc does not predefine "$end", "$error" or + * "$undefined". + * + * If the grammar declares "%token-table", define symbol "yytname" so + * an application such as ntpd can build. + */ + if (token_table) + { + output_line("#undef yytname"); + output_line("#define yytname yyname"); + } + else + { + output_line("#if YYDEBUG"); + } start_str_table("name"); j = 80; - for (i = 0; i <= max; ++i) + for (i = 0; i <= max + 1; ++i) { if ((s = symnam[i]) != 0) { @@ -1058,6 +1077,8 @@ output_debug(void) end_table(); FREE(symnam); + if (token_table) + output_line("#if YYDEBUG"); start_str_table("rule"); for (i = 2; i < nrules; ++i) { Modified: vendor/byacc/dist/package/byacc.spec ============================================================================== --- vendor/byacc/dist/package/byacc.spec Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/package/byacc.spec Wed Jan 8 08:02:27 2014 (r260442) @@ -1,8 +1,8 @@ Summary: byacc - public domain Berkeley LALR Yacc parser generator %define AppProgram byacc -%define AppVersion 20130925 +%define AppVersion 20140101 %define UseProgram yacc -# $XTermId: byacc.spec,v 1.17 2013/09/25 22:41:54 tom Exp $ +# $XTermId: byacc.spec,v 1.18 2014/01/01 17:26:25 tom Exp $ Name: %{AppProgram} Version: %{AppVersion} Release: 1 Modified: vendor/byacc/dist/package/debian/changelog ============================================================================== --- vendor/byacc/dist/package/debian/changelog Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/package/debian/changelog Wed Jan 8 08:02:27 2014 (r260442) @@ -1,3 +1,9 @@ +byacc (20140101) unstable; urgency=low + + * yytname[] changes + + -- Thomas E. Dickey Wed, 01 Jan 2014 10:02:12 -0500 + byacc (20130925) unstable; urgency=low * increase default stack-size Modified: vendor/byacc/dist/reader.c ============================================================================== --- vendor/byacc/dist/reader.c Wed Jan 8 03:42:09 2014 (r260441) +++ vendor/byacc/dist/reader.c Wed Jan 8 08:02:27 2014 (r260442) @@ -1,4 +1,4 @@ -/* $Id: reader.c,v 1.37 2013/09/25 23:46:18 tom Exp $ */ +/* $Id: reader.c,v 1.38 2014/01/01 14:23:27 Christos.Zoulas Exp $ */ #include "defs.h" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 08:03:49 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 53B00A6E; Wed, 8 Jan 2014 08:03:49 +0000 (UTC) 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 263191B2B; Wed, 8 Jan 2014 08:03: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 s0883nTj054869; Wed, 8 Jan 2014 08:03:49 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0883n9C054868; Wed, 8 Jan 2014 08:03:49 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401080803.s0883n9C054868@svn.freebsd.org> From: Baptiste Daroussin Date: Wed, 8 Jan 2014 08:03:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r260443 - vendor/byacc/20140101 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 08:03:49 -0000 Author: bapt Date: Wed Jan 8 08:03:48 2014 New Revision: 260443 URL: http://svnweb.freebsd.org/changeset/base/260443 Log: Tag byacc 20140101 Added: vendor/byacc/20140101/ - copied from r260442, vendor/byacc/dist/ From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 08:07:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 61F9FCCA; Wed, 8 Jan 2014 08:07:05 +0000 (UTC) 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 4A9A51B63; Wed, 8 Jan 2014 08:07: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 s08875l3055456; Wed, 8 Jan 2014 08:07:05 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0886uIw055376; Wed, 8 Jan 2014 08:06:56 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201401080806.s0886uIw055376@svn.freebsd.org> From: Kevin Lo Date: Wed, 8 Jan 2014 08:06:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260444 - in head: contrib/libpcap share/man/man9 sys/dev/ath sys/dev/bwi sys/dev/bwn sys/dev/ipw sys/dev/iwi sys/dev/iwn sys/dev/malo sys/dev/mwl sys/dev/ral sys/dev/usb/wlan sys/dev/w... X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 08:07:05 -0000 Author: kevlo Date: Wed Jan 8 08:06:56 2014 New Revision: 260444 URL: http://svnweb.freebsd.org/changeset/base/260444 Log: Rename definition of IEEE80211_FC1_WEP to IEEE80211_FC1_PROTECTED. The origin of WEP comes from IEEE Std 802.11-1997 where it defines whether the frame body of MAC frame has been encrypted using WEP algorithm or not. IEEE Std. 802.11-2007 changes WEP to Protected Frame, indicates whether the frame is protected by a cryptographic encapsulation algorithm. Reviewed by: adrian, rpaulo Modified: head/contrib/libpcap/ieee80211.h head/share/man/man9/ieee80211_crypto.9 head/sys/dev/ath/if_ath_tx.c head/sys/dev/bwi/if_bwi.c head/sys/dev/bwn/if_bwn.c head/sys/dev/ipw/if_ipw.c head/sys/dev/iwi/if_iwi.c head/sys/dev/iwn/if_iwn.c head/sys/dev/malo/if_malo.c head/sys/dev/mwl/if_mwl.c head/sys/dev/ral/rt2560.c head/sys/dev/ral/rt2661.c head/sys/dev/ral/rt2860.c head/sys/dev/usb/wlan/if_rsu.c head/sys/dev/usb/wlan/if_rum.c head/sys/dev/usb/wlan/if_run.c head/sys/dev/usb/wlan/if_uath.c head/sys/dev/usb/wlan/if_upgt.c head/sys/dev/usb/wlan/if_ural.c head/sys/dev/usb/wlan/if_urtw.c head/sys/dev/usb/wlan/if_urtwn.c head/sys/dev/usb/wlan/if_zyd.c head/sys/dev/wi/if_wi.c head/sys/dev/wpi/if_wpi.c head/sys/net80211/ieee80211.h head/sys/net80211/ieee80211_adhoc.c head/sys/net80211/ieee80211_hostap.c head/sys/net80211/ieee80211_mesh.c head/sys/net80211/ieee80211_output.c head/sys/net80211/ieee80211_proto.c head/sys/net80211/ieee80211_sta.c head/sys/net80211/ieee80211_wds.c head/tools/tools/net80211/stumbler/stumbler.c head/tools/tools/net80211/w00t/ap/ap.c head/tools/tools/net80211/w00t/assoc/assoc.c head/tools/tools/net80211/w00t/expand/expand.c head/tools/tools/net80211/w00t/prga/prga.c head/tools/tools/net80211/w00t/redir/redir.c head/tools/tools/net80211/wesside/wesside/wesside.c head/tools/tools/net80211/wlaninject/wlaninject.c Modified: head/contrib/libpcap/ieee80211.h ============================================================================== --- head/contrib/libpcap/ieee80211.h Wed Jan 8 08:03:48 2014 (r260443) +++ head/contrib/libpcap/ieee80211.h Wed Jan 8 08:06:56 2014 (r260444) @@ -90,7 +90,7 @@ #define IEEE80211_FC1_RETRY 0x08 #define IEEE80211_FC1_PWR_MGT 0x10 #define IEEE80211_FC1_MORE_DATA 0x20 -#define IEEE80211_FC1_WEP 0x40 +#define IEEE80211_FC1_PROTECTED 0x40 #define IEEE80211_FC1_ORDER 0x80 #define IEEE80211_SEQ_FRAG_MASK 0x000f Modified: head/share/man/man9/ieee80211_crypto.9 ============================================================================== --- head/share/man/man9/ieee80211_crypto.9 Wed Jan 8 08:03:48 2014 (r260443) +++ head/share/man/man9/ieee80211_crypto.9 Wed Jan 8 08:06:56 2014 (r260444) @@ -236,7 +236,7 @@ For receive, drivers mark frames with th .Dv M_WEP mbuf flag to indicate the hardware has decrypted the payload. If frames have the -.Dv IEEE80211_FC1_WEP +.Dv IEEE80211_FC1_PROTECTED bit marked in their 802.11 header and are not tagged with .Dv M_WEP then decryption is done in software. Modified: head/sys/dev/ath/if_ath_tx.c ============================================================================== --- head/sys/dev/ath/if_ath_tx.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/ath/if_ath_tx.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1586,7 +1586,7 @@ ath_tx_normal_setup(struct ath_softc *sc ATH_TX_LOCK_ASSERT(sc); wh = mtod(m0, struct ieee80211_frame *); - iswep = wh->i_fc[1] & IEEE80211_FC1_WEP; + iswep = wh->i_fc[1] & IEEE80211_FC1_PROTECTED; ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); isfrag = m0->m_flags & M_FRAG; hdrlen = ieee80211_anyhdrsize(wh); @@ -2216,7 +2216,7 @@ ath_tx_raw_start(struct ath_softc *sc, s sc->sc_tx_th.wt_tsf = htole64(tsf); sc->sc_tx_th.wt_flags = sc->sc_hwmap[rix].txflags; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_WEP; if (m0->m_flags & M_FRAG) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_FRAG; Modified: head/sys/dev/bwi/if_bwi.c ============================================================================== --- head/sys/dev/bwi/if_bwi.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/bwi/if_bwi.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1396,7 +1396,7 @@ bwi_start_locked(struct ifnet *ifp) ni = (struct ieee80211_node *) m->m_pkthdr.rcvif; wh = mtod(m, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m); if (k == NULL) { ieee80211_free_node(ni); @@ -3001,7 +3001,7 @@ bwi_encap(struct bwi_softc *sc, int idx, */ if (ieee80211_radiotap_active_vap(vap)) { sc->sc_tx_th.wt_flags = 0; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_WEP; if (ieee80211_rate2phytype(sc->sc_rates, rate) == IEEE80211_T_DS && (ic->ic_flags & IEEE80211_F_SHPREAMBLE) && @@ -3184,7 +3184,7 @@ bwi_encap_raw(struct bwi_softc *sc, int if (ieee80211_radiotap_active_vap(vap)) { sc->sc_tx_th.wt_flags = 0; /* XXX IEEE80211_BPF_CRYPTO */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_WEP; if (params->ibp_flags & IEEE80211_BPF_SHORTPRE) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; @@ -3820,7 +3820,7 @@ bwi_rx_radiotap(struct bwi_softc *sc, st sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; wh = mtod(m, const struct ieee80211_frame_min *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_WEP; sc->sc_rx_th.wr_tsf = hdr->rxh_tsf; /* No endian convertion */ Modified: head/sys/dev/bwn/if_bwn.c ============================================================================== --- head/sys/dev/bwn/if_bwn.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/bwn/if_bwn.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1317,7 +1317,7 @@ bwn_start_locked(struct ifnet *ifp) } KASSERT(ni != NULL, ("%s:%d: fail", __func__, __LINE__)); wh = mtod(m, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m); if (k == NULL) { ieee80211_free_node(ni); @@ -9781,7 +9781,7 @@ bwn_set_txhdr(struct bwn_mac *mac, struc */ if (ieee80211_radiotap_active_vap(vap)) { sc->sc_tx_th.wt_flags = 0; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_WEP; if (isshort && (rate == BWN_CCK_RATE_2MB || rate == BWN_CCK_RATE_5MB || @@ -10320,7 +10320,7 @@ bwn_rx_radiotap(struct bwn_mac *mac, str sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; wh = mtod(m, const struct ieee80211_frame_min *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) sc->sc_rx_th.wr_flags |= IEEE80211_RADIOTAP_F_WEP; bwn_tsf_read(mac, &tsf); Modified: head/sys/dev/ipw/if_ipw.c ============================================================================== --- head/sys/dev/ipw/if_ipw.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/ipw/if_ipw.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1597,7 +1597,7 @@ ipw_tx_start(struct ifnet *ifp, struct m wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); @@ -1621,7 +1621,7 @@ ipw_tx_start(struct ifnet *ifp, struct m shdr->hdr.type = htole32(IPW_HDR_TYPE_SEND); shdr->hdr.subtype = 0; - shdr->hdr.encrypted = (wh->i_fc[1] & IEEE80211_FC1_WEP) ? 1 : 0; + shdr->hdr.encrypted = (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) ? 1 : 0; shdr->hdr.encrypt = 0; shdr->hdr.keyidx = 0; shdr->hdr.keysz = 0; Modified: head/sys/dev/iwi/if_iwi.c ============================================================================== --- head/sys/dev/iwi/if_iwi.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/iwi/if_iwi.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1846,7 +1846,7 @@ iwi_tx_start(struct ifnet *ifp, struct m } else staid = 0; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/iwn/if_iwn.c Wed Jan 8 08:06:56 2014 (r260444) @@ -4137,7 +4137,7 @@ iwn_tx_data(struct iwn_softc *sc, struct } /* Encrypt the frame if need be. */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { /* Retrieve key for TX. */ k = ieee80211_crypto_encap(ni, m); if (k == NULL) { Modified: head/sys/dev/malo/if_malo.c ============================================================================== --- head/sys/dev/malo/if_malo.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/malo/if_malo.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1102,7 +1102,7 @@ malo_tx_start(struct malo_softc *sc, str uint16_t qos; wh = mtod(m0, struct ieee80211_frame *); - iswep = wh->i_fc[1] & IEEE80211_FC1_WEP; + iswep = wh->i_fc[1] & IEEE80211_FC1_PROTECTED; ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); copyhdrlen = hdrlen = ieee80211_anyhdrsize(wh); pktlen = m0->m_pkthdr.len; Modified: head/sys/dev/mwl/if_mwl.c ============================================================================== --- head/sys/dev/mwl/if_mwl.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/mwl/if_mwl.c Wed Jan 8 08:06:56 2014 (r260444) @@ -2886,12 +2886,13 @@ mwl_rx_proc(void *arg, int npending) * upper layer to put a station in power save * (except when configured with MWL_HOST_PS_SUPPORT). */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) m->m_flags |= M_WEP; #ifdef MWL_HOST_PS_SUPPORT - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; #else - wh->i_fc[1] &= ~(IEEE80211_FC1_WEP | IEEE80211_FC1_PWR_MGT); + wh->i_fc[1] &= ~(IEEE80211_FC1_PROTECTED | + IEEE80211_FC1_PWR_MGT); #endif if (ieee80211_radiotap_active(ic)) { @@ -3205,7 +3206,7 @@ mwl_tx_start(struct mwl_softc *sc, struc #endif wh = mtod(m0, struct ieee80211_frame *); - iswep = wh->i_fc[1] & IEEE80211_FC1_WEP; + iswep = wh->i_fc[1] & IEEE80211_FC1_PROTECTED; ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); hdrlen = ieee80211_anyhdrsize(wh); copyhdrlen = hdrlen; Modified: head/sys/dev/ral/rt2560.c ============================================================================== --- head/sys/dev/ral/rt2560.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/ral/rt2560.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1558,7 +1558,7 @@ rt2560_tx_mgt(struct rt2560_softc *sc, s wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); @@ -1804,7 +1804,7 @@ rt2560_tx_data(struct rt2560_softc *sc, rate = ni->ni_txrate; } - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/ral/rt2661.c ============================================================================== --- head/sys/dev/ral/rt2661.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/ral/rt2661.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1319,7 +1319,7 @@ rt2661_tx_mgt(struct rt2661_softc *sc, s wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); @@ -1494,7 +1494,7 @@ rt2661_tx_data(struct rt2661_softc *sc, noack = cap->cap_wmeParams[ac].wmep_noackPolicy; } - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/ral/rt2860.c ============================================================================== --- head/sys/dev/ral/rt2860.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/ral/rt2860.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1285,9 +1285,9 @@ rt2860_rx_intr(struct rt2860_softc *sc) wh = mtod(m, struct ieee80211_frame *); #ifdef HW_CRYPTO - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { /* frame is decrypted by hardware */ - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } #endif @@ -1493,7 +1493,7 @@ rt2860_tx(struct rt2860_softc *sc, struc wh = mtod(m, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m); if (k == NULL) { m_freem(m); Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_rsu.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1670,7 +1670,7 @@ rsu_tx_start(struct rsu_softc *sc, struc wh = mtod(m0, struct ieee80211_frame *); type = wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { device_printf(sc->sc_dev, Modified: head/sys/dev/usb/wlan/if_rum.c ============================================================================== --- head/sys/dev/usb/wlan/if_rum.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_rum.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1121,7 +1121,7 @@ rum_tx_mgt(struct rum_softc *sc, struct sc->tx_nfree--; wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); @@ -1239,7 +1239,7 @@ rum_tx_data(struct rum_softc *sc, struct else rate = ni->ni_txrate; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_run.c Wed Jan 8 08:06:56 2014 (r260444) @@ -2807,8 +2807,8 @@ run_rx_frame(struct run_softc *sc, struc wh = mtod(m, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; m->m_flags |= M_WEP; } Modified: head/sys/dev/usb/wlan/if_uath.c ============================================================================== --- head/sys/dev/usb/wlan/if_uath.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_uath.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1626,7 +1626,7 @@ uath_tx_start(struct uath_softc *sc, str } wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/usb/wlan/if_upgt.c ============================================================================== --- head/sys/dev/usb/wlan/if_upgt.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_upgt.c Wed Jan 8 08:06:56 2014 (r260444) @@ -2223,7 +2223,7 @@ upgt_tx_start(struct upgt_softc *sc, str * Software crypto. */ wh = mtod(m, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m); if (k == NULL) { device_printf(sc->sc_dev, Modified: head/sys/dev/usb/wlan/if_ural.c ============================================================================== --- head/sys/dev/usb/wlan/if_ural.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_ural.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1120,7 +1120,7 @@ ural_tx_mgt(struct ural_softc *sc, struc tp = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)]; wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); @@ -1289,7 +1289,7 @@ ural_tx_data(struct ural_softc *sc, stru else rate = ni->ni_txrate; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtw.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_urtw.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1697,7 +1697,7 @@ urtw_tx_start(struct urtw_softc *sc, str /* * Software crypto. */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { device_printf(sc->sc_dev, Modified: head/sys/dev/usb/wlan/if_urtwn.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtwn.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_urtwn.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1600,7 +1600,7 @@ urtwn_tx_start(struct urtwn_softc *sc, s * Software crypto. */ wh = mtod(m0, struct ieee80211_frame *); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { device_printf(sc->sc_dev, Modified: head/sys/dev/usb/wlan/if_zyd.c ============================================================================== --- head/sys/dev/usb/wlan/if_zyd.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/usb/wlan/if_zyd.c Wed Jan 8 08:06:56 2014 (r260444) @@ -2507,7 +2507,7 @@ zyd_tx_start(struct zyd_softc *sc, struc } } - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); Modified: head/sys/dev/wi/if_wi.c ============================================================================== --- head/sys/dev/wi/if_wi.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/wi/if_wi.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1004,7 +1004,7 @@ wi_start_locked(struct ifnet *ifp) mtod(m0, const uint8_t *) + ieee80211_hdrsize(wh)); frmhdr.wi_ehdr.ether_type = llc->llc_snap.ether_type; frmhdr.wi_tx_ctl = htole16(WI_ENC_TX_802_11|WI_TXCNTL_TX_EX); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { ieee80211_free_node(ni); @@ -1107,7 +1107,7 @@ wi_raw_xmit(struct ieee80211_node *ni, s frmhdr.wi_tx_ctl = htole16(WI_ENC_TX_802_11|WI_TXCNTL_TX_EX); if (params && (params->ibp_flags & IEEE80211_BPF_NOACK)) frmhdr.wi_tx_ctl |= htole16(WI_TXCNTL_ALTRTRY); - if ((wh->i_fc[1] & IEEE80211_FC1_WEP) && + if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) && (!params || (params && (params->ibp_flags & IEEE80211_BPF_CRYPTO)))) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { Modified: head/sys/dev/wpi/if_wpi.c ============================================================================== --- head/sys/dev/wpi/if_wpi.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/dev/wpi/if_wpi.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1882,7 +1882,7 @@ wpi_tx_data(struct wpi_softc *sc, struct hdrlen = ieee80211_hdrsize(wh); ismcast = IEEE80211_IS_MULTICAST(wh->i_addr1); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { k = ieee80211_crypto_encap(ni, m0); if (k == NULL) { m_freem(m0); @@ -1951,7 +1951,7 @@ wpi_tx_data(struct wpi_softc *sc, struct tap->wt_flags = 0; tap->wt_rate = rate; tap->wt_hwqueue = ac; - if (wh->i_fc[1] & IEEE80211_FC1_WEP) + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) tap->wt_flags |= IEEE80211_RADIOTAP_F_WEP; ieee80211_radiotap_tx(vap, m0); Modified: head/sys/net80211/ieee80211.h ============================================================================== --- head/sys/net80211/ieee80211.h Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211.h Wed Jan 8 08:06:56 2014 (r260444) @@ -166,7 +166,7 @@ struct ieee80211_qosframe_addr4 { #define IEEE80211_FC1_RETRY 0x08 #define IEEE80211_FC1_PWR_MGT 0x10 #define IEEE80211_FC1_MORE_DATA 0x20 -#define IEEE80211_FC1_WEP 0x40 +#define IEEE80211_FC1_PROTECTED 0x40 #define IEEE80211_FC1_ORDER 0x80 #define IEEE80211_SEQ_FRAG_MASK 0x000f Modified: head/sys/net80211/ieee80211_adhoc.c ============================================================================== --- head/sys/net80211/ieee80211_adhoc.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_adhoc.c Wed Jan 8 08:06:56 2014 (r260444) @@ -475,7 +475,7 @@ adhoc_input(struct ieee80211_node *ni, s * crypto cipher modules used to do delayed update * of replay sequence numbers. */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if ((vap->iv_flags & IEEE80211_F_PRIVACY) == 0) { /* * Discard encrypted frames when privacy is off. @@ -493,7 +493,7 @@ adhoc_input(struct ieee80211_node *ni, s goto out; } wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } else { /* XXX M_WEP and IEEE80211_F_PRIVACY */ key = NULL; @@ -631,7 +631,7 @@ adhoc_input(struct ieee80211_node *ni, s ether_sprintf(wh->i_addr2), rssi); } #endif - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, wh, NULL, "%s", "WEP set but not permitted"); vap->iv_stats.is_rx_mgtdiscard++; /* XXX */ Modified: head/sys/net80211/ieee80211_hostap.c ============================================================================== --- head/sys/net80211/ieee80211_hostap.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_hostap.c Wed Jan 8 08:06:56 2014 (r260444) @@ -694,7 +694,7 @@ hostap_input(struct ieee80211_node *ni, * crypto cipher modules used to do delayed update * of replay sequence numbers. */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if ((vap->iv_flags & IEEE80211_F_PRIVACY) == 0) { /* * Discard encrypted frames when privacy is off. @@ -712,7 +712,7 @@ hostap_input(struct ieee80211_node *ni, goto out; } wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } else { /* XXX M_WEP and IEEE80211_F_PRIVACY */ key = NULL; @@ -856,7 +856,7 @@ hostap_input(struct ieee80211_node *ni, ether_sprintf(wh->i_addr2), rssi); } #endif - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if (subtype != IEEE80211_FC0_SUBTYPE_AUTH) { /* * Only shared key auth frames with a challenge @@ -884,7 +884,7 @@ hostap_input(struct ieee80211_node *ni, goto out; } wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } /* * Pass the packet to radiotap before calling iv_recv_mgmt(). Modified: head/sys/net80211/ieee80211_mesh.c ============================================================================== --- head/sys/net80211/ieee80211_mesh.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_mesh.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1825,7 +1825,7 @@ mesh_input(struct ieee80211_node *ni, st ether_sprintf(wh->i_addr2), rssi); } #endif - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, wh, NULL, "%s", "WEP set but not permitted"); vap->iv_stats.is_rx_mgtdiscard++; /* XXX */ Modified: head/sys/net80211/ieee80211_output.c ============================================================================== --- head/sys/net80211/ieee80211_output.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_output.c Wed Jan 8 08:06:56 2014 (r260444) @@ -772,7 +772,7 @@ ieee80211_mgmt_output(struct ieee80211_n if (params->ibp_flags & IEEE80211_BPF_CRYPTO) { IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_AUTH, wh->i_addr1, "encrypting frame (%s)", __func__); - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; } m->m_flags |= M_ENCAP; /* mark encapsulated */ @@ -1497,7 +1497,7 @@ ieee80211_encap(struct ieee80211vap *vap (vap->iv_opmode == IEEE80211_M_STA ? !IEEE80211_KEY_UNDEFINED(key) : !IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)))) { - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; if (!ieee80211_crypto_enmic(vap, key, m, txfrag)) { IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_OUTPUT, eh.ether_dhost, Modified: head/sys/net80211/ieee80211_proto.c ============================================================================== --- head/sys/net80211/ieee80211_proto.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_proto.c Wed Jan 8 08:06:56 2014 (r260444) @@ -448,7 +448,7 @@ ieee80211_dump_pkt(struct ieee80211com * printf(" QoS [TID %u%s]", qwh->i_qos[0] & IEEE80211_QOS_TID, qwh->i_qos[0] & IEEE80211_QOS_ACKPOLICY ? " ACM" : ""); } - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { int off; off = ieee80211_anyhdrspace(ic, wh); Modified: head/sys/net80211/ieee80211_sta.c ============================================================================== --- head/sys/net80211/ieee80211_sta.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_sta.c Wed Jan 8 08:06:56 2014 (r260444) @@ -728,7 +728,7 @@ sta_input(struct ieee80211_node *ni, str * crypto cipher modules used to do delayed update * of replay sequence numbers. */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if ((vap->iv_flags & IEEE80211_F_PRIVACY) == 0) { /* * Discard encrypted frames when privacy is off. @@ -746,7 +746,7 @@ sta_input(struct ieee80211_node *ni, str goto out; } wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } else { /* XXX M_WEP and IEEE80211_F_PRIVACY */ key = NULL; @@ -881,7 +881,7 @@ sta_input(struct ieee80211_node *ni, str ether_sprintf(wh->i_addr2), rssi); } #endif - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if (subtype != IEEE80211_FC0_SUBTYPE_AUTH) { /* * Only shared key auth frames with a challenge @@ -910,7 +910,7 @@ sta_input(struct ieee80211_node *ni, str goto out; } wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } vap->iv_recv_mgmt(ni, m, subtype, rssi, nf); goto out; Modified: head/sys/net80211/ieee80211_wds.c ============================================================================== --- head/sys/net80211/ieee80211_wds.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/sys/net80211/ieee80211_wds.c Wed Jan 8 08:06:56 2014 (r260444) @@ -557,7 +557,7 @@ wds_input(struct ieee80211_node *ni, str * crypto cipher modules used to do delayed update * of replay sequence numbers. */ - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if ((vap->iv_flags & IEEE80211_F_PRIVACY) == 0) { /* * Discard encrypted frames when privacy is off. @@ -575,7 +575,7 @@ wds_input(struct ieee80211_node *ni, str goto out; } wh = mtod(m, struct ieee80211_frame *); - wh->i_fc[1] &= ~IEEE80211_FC1_WEP; + wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; } else { /* XXX M_WEP and IEEE80211_F_PRIVACY */ key = NULL; @@ -709,7 +709,7 @@ wds_input(struct ieee80211_node *ni, str ether_sprintf(wh->i_addr2), rssi); } #endif - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { IEEE80211_DISCARD(vap, IEEE80211_MSG_INPUT, wh, NULL, "%s", "WEP set but not permitted"); vap->iv_stats.is_rx_mgtdiscard++; /* XXX */ Modified: head/tools/tools/net80211/stumbler/stumbler.c ============================================================================== --- head/tools/tools/net80211/stumbler/stumbler.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/stumbler/stumbler.c Wed Jan 8 08:06:56 2014 (r260444) @@ -711,7 +711,7 @@ int get_packet_info(struct ieee80211_fra else if (type == IEEE80211_FC0_TYPE_DATA && stype == IEEE80211_FC0_SUBTYPE_DATA) { - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { unsigned char* iv; node->wep = CRYPT_WEP; Modified: head/tools/tools/net80211/w00t/ap/ap.c ============================================================================== --- head/tools/tools/net80211/w00t/ap/ap.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/w00t/ap/ap.c Wed Jan 8 08:06:56 2014 (r260444) @@ -509,7 +509,7 @@ void read_real_data(struct params *p, st memcpy(dst, wh->i_addr3, 6); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if (!p->wep_len) { printf("Got wep but i aint wep\n"); return; @@ -737,7 +737,7 @@ void read_tap(struct params *p) wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[1] |= IEEE80211_FC1_DIR_FROMDS; if (p->wep_len) - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; /* LLC & SNAP */ ptr = (char*) (wh+1); Modified: head/tools/tools/net80211/w00t/assoc/assoc.c ============================================================================== --- head/tools/tools/net80211/w00t/assoc/assoc.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/w00t/assoc/assoc.c Wed Jan 8 08:06:56 2014 (r260444) @@ -368,7 +368,7 @@ void generic_process(struct ieee80211_fr ptr = (char*) (wh + 1); - if (wh->i_fc[1] & IEEE80211_FC1_WEP) { + if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { if (!p->wep_len) { char srca[3*6]; char dsta[3*6]; @@ -676,7 +676,7 @@ void read_tap(struct params *p) wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[1] |= IEEE80211_FC1_DIR_TODS; if (p->wep_len) - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; /* LLC & SNAP */ ptr = (char*) (wh+1); Modified: head/tools/tools/net80211/w00t/expand/expand.c ============================================================================== --- head/tools/tools/net80211/w00t/expand/expand.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/w00t/expand/expand.c Wed Jan 8 08:06:56 2014 (r260444) @@ -99,7 +99,7 @@ int wanted(struct params *p, struct ieee if (memcmp(bssid, p->ap, 6) != 0) return 0; - if (!(wh->i_fc[1] & IEEE80211_FC1_WEP)) { + if (!(wh->i_fc[1] & IEEE80211_FC1_PROTECTED)) { printf("Got non WEP packet...\n"); return 0; } @@ -197,7 +197,7 @@ void send_mcast(struct params *p, unsign wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_DATA; wh->i_fc[1] |= IEEE80211_FC1_DIR_TODS; - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; wh->i_dur[0] = 0x69; Modified: head/tools/tools/net80211/w00t/prga/prga.c ============================================================================== --- head/tools/tools/net80211/w00t/prga/prga.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/w00t/prga/prga.c Wed Jan 8 08:06:56 2014 (r260444) @@ -190,7 +190,7 @@ void get_prga(struct params *p) if (memcmp(p->ap, bssid, 6) != 0) return; - if (!(wh->i_fc[1] & IEEE80211_FC1_WEP)) { + if (!(wh->i_fc[1] & IEEE80211_FC1_PROTECTED)) { printf("Packet not WEP!\n"); return; } @@ -281,7 +281,7 @@ void send_frag(struct params *p) /* 802.11 */ wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_DATA; - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; wh->i_fc[1] |= IEEE80211_FC1_DIR_TODS; if (!last) wh->i_fc[1] |= IEEE80211_FC1_MORE_FRAG; @@ -527,7 +527,7 @@ void read_tap(struct params *p) wh = (struct ieee80211_frame*) p->packet; wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_DATA; - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; wh->i_fc[1] |= IEEE80211_FC1_DIR_TODS; wh->i_dur[0] = 0x69; Modified: head/tools/tools/net80211/w00t/redir/redir.c ============================================================================== --- head/tools/tools/net80211/w00t/redir/redir.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/w00t/redir/redir.c Wed Jan 8 08:06:56 2014 (r260444) @@ -140,7 +140,7 @@ int wanted(struct params *p, struct ieee if (memcmp(bssid, p->ap, 6) != 0) return 0; - if (!(wh->i_fc[1] & IEEE80211_FC1_WEP)) { + if (!(wh->i_fc[1] & IEEE80211_FC1_PROTECTED)) { printf("Got non WEP packet...\n"); return 0; } @@ -268,7 +268,7 @@ void send_header(struct params *p, struc wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_DATA; wh->i_fc[1] |= IEEE80211_FC1_DIR_TODS; - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; wh->i_fc[1] |= IEEE80211_FC1_MORE_FRAG; wh->i_dur[0] = 0x69; @@ -345,7 +345,7 @@ void send_data(struct params *p) wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; wh->i_fc[0] |= IEEE80211_FC0_SUBTYPE_DATA; wh->i_fc[1] |= IEEE80211_FC1_DIR_TODS; - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; wh->i_dur[0] = 0x69; Modified: head/tools/tools/net80211/wesside/wesside/wesside.c ============================================================================== --- head/tools/tools/net80211/wesside/wesside/wesside.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/wesside/wesside/wesside.c Wed Jan 8 08:06:56 2014 (r260444) @@ -1093,13 +1093,13 @@ void stuff_for_us(struct ieee80211_frame int dlen; dlen = len - sizeof(*wh) - 4 -4; - if (!( wh->i_fc[1] & IEEE80211_FC1_WEP)) { + if (!( wh->i_fc[1] & IEEE80211_FC1_PROTECTED)) { time_print("WARNING: Got NON wep packet from %s dlen %d stype=%x\n", mac2str(wh->i_addr2), dlen, stype); return; } - assert (wh->i_fc[1] & IEEE80211_FC1_WEP); + assert (wh->i_fc[1] & IEEE80211_FC1_PROTECTED); if ((dlen == 36 || dlen == PADDED_ARPLEN) && rtrmac == (unsigned char*) 1) { rtrmac = (unsigned char *) malloc(6); @@ -1577,7 +1577,8 @@ void stuff_for_net(struct ieee80211_fram } // wep data! - if ( (wh->i_fc[1] & IEEE80211_FC1_WEP) && dlen > (4+8+4)) { + if ( (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) && + dlen > (4+8+4)) { got_wep(wh, rd); } } @@ -1768,7 +1769,7 @@ void prepare_fragstate(struct frag_state fs->wh.i_fc[0] |= IEEE80211_FC0_TYPE_DATA; fs->wh.i_fc[1] |= IEEE80211_FC1_DIR_TODS | IEEE80211_FC1_MORE_FRAG | - IEEE80211_FC1_WEP; + IEEE80211_FC1_PROTECTED; memset(&fs->data[8+8+20], 0, pad); } @@ -1858,7 +1859,7 @@ void flood_inet(tx) { fill_basic(wh); wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; - wh->i_fc[1] |= IEEE80211_FC1_WEP | IEEE80211_FC1_DIR_TODS; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED | IEEE80211_FC1_DIR_TODS; memset(wh->i_addr3, 0xff, 6); body = (unsigned char*) wh + sizeof(*wh); @@ -1880,7 +1881,7 @@ void flood_inet(tx) { fill_basic(wh); wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; - wh->i_fc[1] |= IEEE80211_FC1_WEP | IEEE80211_FC1_DIR_TODS; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED | IEEE80211_FC1_DIR_TODS; memcpy(wh->i_addr3, rtrmac, 6); body = (unsigned char*) wh + sizeof(*wh); @@ -1975,7 +1976,7 @@ void send_arp(int tx, unsigned short op, fill_basic(wh); wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; - wh->i_fc[1] |= IEEE80211_FC1_WEP | IEEE80211_FC1_DIR_TODS; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED | IEEE80211_FC1_DIR_TODS; memset(wh->i_addr3, 0xff, 6); body = (unsigned char*) wh + sizeof(*wh); @@ -2254,7 +2255,7 @@ void read_tap() { fill_basic(wh); wh->i_fc[0] |= IEEE80211_FC0_TYPE_DATA; - wh->i_fc[1] |= IEEE80211_FC1_WEP | IEEE80211_FC1_DIR_TODS; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED | IEEE80211_FC1_DIR_TODS; memcpy(wh->i_addr2, eh->ether_shost, 6); memcpy(wh->i_addr3, eh->ether_dhost, 6); Modified: head/tools/tools/net80211/wlaninject/wlaninject.c ============================================================================== --- head/tools/tools/net80211/wlaninject/wlaninject.c Wed Jan 8 08:03:48 2014 (r260443) +++ head/tools/tools/net80211/wlaninject/wlaninject.c Wed Jan 8 08:06:56 2014 (r260444) @@ -600,7 +600,7 @@ int main(int argc, char *argv[]) break; case 'w': - wh->i_fc[1] |= IEEE80211_FC1_WEP; + wh->i_fc[1] |= IEEE80211_FC1_PROTECTED; break; case 'o': From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 08:08:25 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7B2F4E47; Wed, 8 Jan 2014 08:08:25 +0000 (UTC) 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 6551E1C7A; Wed, 8 Jan 2014 08:08: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 s0888P9o055702; Wed, 8 Jan 2014 08:08:25 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0888Mj6055679; Wed, 8 Jan 2014 08:08:22 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401080808.s0888Mj6055679@svn.freebsd.org> From: Baptiste Daroussin Date: Wed, 8 Jan 2014 08:08:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260445 - in head/contrib/byacc: . package package/debian test X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 08:08:25 -0000 Author: bapt Date: Wed Jan 8 08:08:22 2014 New Revision: 260445 URL: http://svnweb.freebsd.org/changeset/base/260445 Log: Import byacc 20140101 which imports %token-table from bison allowing to build ntpd Modified: head/contrib/byacc/CHANGES head/contrib/byacc/VERSION head/contrib/byacc/aclocal.m4 head/contrib/byacc/config.guess head/contrib/byacc/config.sub head/contrib/byacc/configure head/contrib/byacc/configure.in head/contrib/byacc/defs.h head/contrib/byacc/main.c head/contrib/byacc/makefile.in head/contrib/byacc/output.c head/contrib/byacc/package/byacc.spec head/contrib/byacc/package/debian/changelog head/contrib/byacc/reader.c head/contrib/byacc/skeleton.c head/contrib/byacc/test/calc.tab.c head/contrib/byacc/test/calc1.tab.c head/contrib/byacc/test/calc2.tab.c head/contrib/byacc/test/calc3.tab.c head/contrib/byacc/test/code_calc.code.c head/contrib/byacc/test/code_calc.tab.c head/contrib/byacc/test/code_error.code.c head/contrib/byacc/test/code_error.tab.c head/contrib/byacc/test/error.tab.c head/contrib/byacc/test/ftp.tab.c head/contrib/byacc/test/grammar.tab.c head/contrib/byacc/test/pure_calc.tab.c head/contrib/byacc/test/pure_error.tab.c head/contrib/byacc/test/quote_calc-s.tab.c head/contrib/byacc/test/quote_calc.tab.c head/contrib/byacc/test/quote_calc2-s.tab.c head/contrib/byacc/test/quote_calc2.tab.c head/contrib/byacc/test/quote_calc3-s.tab.c head/contrib/byacc/test/quote_calc3.tab.c head/contrib/byacc/test/quote_calc4-s.tab.c head/contrib/byacc/test/quote_calc4.tab.c head/contrib/byacc/yacc.1 Directory Properties: head/contrib/byacc/ (props changed) Modified: head/contrib/byacc/CHANGES ============================================================================== --- head/contrib/byacc/CHANGES Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/CHANGES Wed Jan 8 08:08:22 2014 (r260445) @@ -1,3 +1,48 @@ +2014-01-01 Thomas E. Dickey + + * yacc.1: document %token-table, improve presentation of double-quotes + + * VERSION, package/byacc.spec, package/debian/changelog: bump + + * test/calc.tab.c, test/calc1.tab.c, test/calc2.tab.c, test/calc3.tab.c, test/code_calc.code.c, test/code_calc.tab.c, test/code_error.code.c, test/code_error.tab.c, test/error.tab.c, test/ftp.tab.c, test/grammar.tab.c, test/pure_calc.tab.c, test/pure_error.tab.c, test/quote_calc-s.tab.c, test/quote_calc.tab.c, test/quote_calc2-s.tab.c, test/quote_calc2.tab.c, test/quote_calc3-s.tab.c, test/quote_calc3.tab.c, test/quote_calc4-s.tab.c, test/quote_calc4.tab.c: + regen + + * output.c, skeleton.c: + amend the last change so that yytname is #define'd as needed rather than + permanent - to avoid breaking cproto for instance. + +2014-01-01 Christos.Zoulas + + * output.c, defs.h, main.c, reader.c, skeleton.c: + changes to build ntpd using byacc: + - rename yyname[] to yytname[] + - add YYTRANSLATE() macro + - recognize bison's %token-table declaration + +2014-01-01 Thomas E. Dickey + + * configure: regen + + * yacc.1: s/EE/XE/ to work around groff bug on Debian 6 + + * makefile.in: use CF_MAKE_DOCS + + * aclocal.m4: add CF_MAKE_DOCS + + * configure.in: use CF_MAKE_DOCS + +2013-12-26 Thomas E. Dickey + + * config.guess: 2013-11-29 + +2013-11-19 Thomas E. Dickey + + * aclocal.m4: resync with my-autoconf (fixes for clang and mingw) + +2013-10-25 Thomas E. Dickey + + * config.sub: 2013-10-01 + 2013-09-25 Thomas E. Dickey * reader.c: fix two loop-limits found by clang 3.3 --analyze Modified: head/contrib/byacc/VERSION ============================================================================== --- head/contrib/byacc/VERSION Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/VERSION Wed Jan 8 08:08:22 2014 (r260445) @@ -1 +1 @@ -20130925 +20140101 Modified: head/contrib/byacc/aclocal.m4 ============================================================================== --- head/contrib/byacc/aclocal.m4 Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/aclocal.m4 Wed Jan 8 08:08:22 2014 (r260445) @@ -1,7 +1,7 @@ -dnl $Id: aclocal.m4,v 1.31 2013/09/25 23:15:41 tom Exp $ +dnl $Id: aclocal.m4,v 1.33 2014/01/01 14:08:07 tom Exp $ dnl Macros for byacc configure script (Thomas E. Dickey) dnl --------------------------------------------------------------------------- -dnl Copyright 2004-2012,2013 Thomas E. Dickey +dnl Copyright 2004-2013,2014 Thomas E. Dickey dnl dnl Permission is hereby granted, free of charge, to any person obtaining a dnl copy of this software and associated documentation files (the @@ -232,7 +232,7 @@ if test ".$system_name" != ".$cf_cv_syst fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_CLANG_COMPILER version: 1 updated: 2012/06/16 14:55:39 +dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35 dnl ----------------- dnl Check if the given compiler is really clang. clang's C driver defines dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does @@ -243,7 +243,7 @@ dnl ensure that it is not mistaken for g dnl the wrappers for gcc and g++ warnings. dnl dnl $1 = GCC (default) or GXX -dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $2 = CLANG_COMPILER (default) dnl $3 = CFLAGS (default) or CXXFLAGS AC_DEFUN([CF_CLANG_COMPILER],[ ifelse([$2],,CLANG_COMPILER,[$2])=no @@ -449,7 +449,7 @@ if test "$GCC" = yes ; then fi ])dnl dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 29 updated: 2012/06/16 14:55:39 +dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35 dnl --------------- dnl Check if the compiler supports useful warning options. There's a few that dnl we don't use, simply because they're too noisy: @@ -521,10 +521,14 @@ then EXTRA_CFLAGS= cf_warn_CONST="" test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= for cf_opt in W Wall \ Wbad-function-cast \ Wcast-align \ Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ Winline \ Wmissing-declarations \ Wmissing-prototypes \ @@ -532,7 +536,7 @@ then Wpointer-arith \ Wshadow \ Wstrict-prototypes \ - Wundef $cf_warn_CONST $1 + Wundef $cf_gcc_warnings $cf_warn_CONST $1 do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" if AC_TRY_EVAL(ac_compile); then @@ -634,6 +638,60 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147 - fi ])dnl dnl --------------------------------------------------------------------------- +dnl CF_MAKE_DOCS version: 2 updated: 2013/01/02 20:04:08 +dnl ------------ +dnl $1 = name(s) to generate rules for +dnl $2 = suffix of corresponding manpages used as input. +define([CF_MAKE_DOCS],[ +test -z "$cf_make_docs" && cf_make_docs=0 + +cf_output=makefile +test -f "$cf_output" || cf_output=Makefile + +if test "$cf_make_docs" = 0 +then +cat >>$cf_output <<"CF_EOF" +################################################################################ +.SUFFIXES : .html .$2 .man .ps .pdf .txt + +.$2.html : + GROFF_NO_SGR=stupid [$](SHELL) -c "tbl [$]*.$2 | groff -P -o0 -I$*_ -Thtml -man" >[$]@ + +.$2.ps : + [$](SHELL) -c "tbl [$]*.$2 | groff -man" >[$]@ + +.$2.txt : + GROFF_NO_SGR=stupid [$](SHELL) -c "tbl [$]*.$2 | nroff -Tascii -man | col -bx" >[$]@ + +.ps.pdf : + ps2pdf [$]*.ps + +CF_EOF + cf_make_docs=1 +fi + +for cf_name in $1 +do +cat >>$cf_output </dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; Modified: head/contrib/byacc/config.sub ============================================================================== --- head/contrib/byacc/config.sub Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/config.sub Wed Jan 8 08:08:22 2014 (r260445) @@ -2,7 +2,7 @@ # Configuration validation subroutine script. # Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2013-09-05' +timestamp='2013-10-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -265,6 +265,7 @@ case $basic_machine in | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -381,6 +382,7 @@ case $basic_machine in | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ Modified: head/contrib/byacc/configure ============================================================================== --- head/contrib/byacc/configure Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/configure Wed Jan 8 08:08:22 2014 (r260445) @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 1.14 . +# From configure.in Revision: 1.15 . # Guess values for system-dependent variables and create Makefiles. # Generated by Autoconf 2.52.20121002. # @@ -2112,7 +2112,7 @@ else if test "$cross_compiling" = yes ; then case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw32*|*-uwin*) #(vi + *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi cf_cv_mixedcase=no ;; *) @@ -4191,10 +4191,14 @@ echo "$as_me: checking for $CC warning o EXTRA_CFLAGS= cf_warn_CONST="" test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= for cf_opt in W Wall \ Wbad-function-cast \ Wcast-align \ Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ Winline \ Wmissing-declarations \ Wmissing-prototypes \ @@ -4202,15 +4206,15 @@ echo "$as_me: checking for $CC warning o Wpointer-arith \ Wshadow \ Wstrict-prototypes \ - Wundef $cf_warn_CONST Wwrite-strings + Wundef $cf_gcc_warnings $cf_warn_CONST Wwrite-strings do CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:4208: \"$ac_compile\"") >&5 + if { (eval echo "$as_me:4212: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? - echo "$as_me:4211: \$? = $ac_status" >&5 + echo "$as_me:4215: \$? = $ac_status" >&5 (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:4213: result: ... -$cf_opt" >&5 + test -n "$verbose" && echo "$as_me:4217: result: ... -$cf_opt" >&5 echo "${ECHO_T}... -$cf_opt" >&6 case $cf_opt in #(vi Wcast-qual) #(vi @@ -4221,7 +4225,7 @@ echo "${ECHO_T}... -$cf_opt" >&6 [34].*) test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 -echo "${as_me:-configure}:4224: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 +echo "${as_me:-configure}:4228: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 continue;; esac @@ -4231,7 +4235,7 @@ echo "${as_me:-configure}:4224: testing [12].*) test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 -echo "${as_me:-configure}:4234: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 +echo "${as_me:-configure}:4238: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 continue;; esac @@ -4247,7 +4251,7 @@ rm -rf conftest* fi fi -echo "$as_me:4250: checking if you want to see long compiling messages" >&5 +echo "$as_me:4254: checking if you want to see long compiling messages" >&5 echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6 # Check whether --enable-echo or --disable-echo was given. @@ -4281,10 +4285,10 @@ else ECHO_CC='' fi; -echo "$as_me:4284: result: $enableval" >&5 +echo "$as_me:4288: result: $enableval" >&5 echo "${ECHO_T}$enableval" >&6 -echo "$as_me:4287: checking if you want to use dmalloc for testing" >&5 +echo "$as_me:4291: checking if you want to use dmalloc for testing" >&5 echo $ECHO_N "checking if you want to use dmalloc for testing... $ECHO_C" >&6 # Check whether --with-dmalloc or --without-dmalloc was given. @@ -4301,7 +4305,7 @@ EOF else with_dmalloc= fi; -echo "$as_me:4304: result: ${with_dmalloc:-no}" >&5 +echo "$as_me:4308: result: ${with_dmalloc:-no}" >&5 echo "${ECHO_T}${with_dmalloc:-no}" >&6 case .$with_cflags in #(vi @@ -4395,23 +4399,23 @@ fi esac if test "$with_dmalloc" = yes ; then - echo "$as_me:4398: checking for dmalloc.h" >&5 + echo "$as_me:4402: checking for dmalloc.h" >&5 echo $ECHO_N "checking for dmalloc.h... $ECHO_C" >&6 if test "${ac_cv_header_dmalloc_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4404 "configure" +#line 4408 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:4408: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:4412: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4414: \$? = $ac_status" >&5 + echo "$as_me:4418: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -4430,11 +4434,11 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:4433: result: $ac_cv_header_dmalloc_h" >&5 +echo "$as_me:4437: result: $ac_cv_header_dmalloc_h" >&5 echo "${ECHO_T}$ac_cv_header_dmalloc_h" >&6 if test $ac_cv_header_dmalloc_h = yes; then -echo "$as_me:4437: checking for dmalloc_debug in -ldmalloc" >&5 +echo "$as_me:4441: checking for dmalloc_debug in -ldmalloc" >&5 echo $ECHO_N "checking for dmalloc_debug in -ldmalloc... $ECHO_C" >&6 if test "${ac_cv_lib_dmalloc_dmalloc_debug+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4442,7 +4446,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldmalloc $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 4445 "configure" +#line 4449 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -4461,16 +4465,16 @@ dmalloc_debug (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4464: \"$ac_link\"") >&5 +if { (eval echo "$as_me:4468: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:4467: \$? = $ac_status" >&5 + echo "$as_me:4471: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4470: \"$ac_try\"") >&5 + { (eval echo "$as_me:4474: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:4473: \$? = $ac_status" >&5 + echo "$as_me:4477: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dmalloc_dmalloc_debug=yes else @@ -4481,7 +4485,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:4484: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 +echo "$as_me:4488: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 echo "${ECHO_T}$ac_cv_lib_dmalloc_dmalloc_debug" >&6 if test $ac_cv_lib_dmalloc_dmalloc_debug = yes; then cat >>confdefs.h <&5 +echo "$as_me:4503: checking if you want to use dbmalloc for testing" >&5 echo $ECHO_N "checking if you want to use dbmalloc for testing... $ECHO_C" >&6 # Check whether --with-dbmalloc or --without-dbmalloc was given. @@ -4513,7 +4517,7 @@ EOF else with_dbmalloc= fi; -echo "$as_me:4516: result: ${with_dbmalloc:-no}" >&5 +echo "$as_me:4520: result: ${with_dbmalloc:-no}" >&5 echo "${ECHO_T}${with_dbmalloc:-no}" >&6 case .$with_cflags in #(vi @@ -4607,23 +4611,23 @@ fi esac if test "$with_dbmalloc" = yes ; then - echo "$as_me:4610: checking for dbmalloc.h" >&5 + echo "$as_me:4614: checking for dbmalloc.h" >&5 echo $ECHO_N "checking for dbmalloc.h... $ECHO_C" >&6 if test "${ac_cv_header_dbmalloc_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF -#line 4616 "configure" +#line 4620 "configure" #include "confdefs.h" #include _ACEOF -if { (eval echo "$as_me:4620: \"$ac_cpp conftest.$ac_ext\"") >&5 +if { (eval echo "$as_me:4624: \"$ac_cpp conftest.$ac_ext\"") >&5 (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ac_status=$? egrep -v '^ *\+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 - echo "$as_me:4626: \$? = $ac_status" >&5 + echo "$as_me:4630: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null; then if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag @@ -4642,11 +4646,11 @@ else fi rm -f conftest.err conftest.$ac_ext fi -echo "$as_me:4645: result: $ac_cv_header_dbmalloc_h" >&5 +echo "$as_me:4649: result: $ac_cv_header_dbmalloc_h" >&5 echo "${ECHO_T}$ac_cv_header_dbmalloc_h" >&6 if test $ac_cv_header_dbmalloc_h = yes; then -echo "$as_me:4649: checking for debug_malloc in -ldbmalloc" >&5 +echo "$as_me:4653: checking for debug_malloc in -ldbmalloc" >&5 echo $ECHO_N "checking for debug_malloc in -ldbmalloc... $ECHO_C" >&6 if test "${ac_cv_lib_dbmalloc_debug_malloc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -4654,7 +4658,7 @@ else ac_check_lib_save_LIBS=$LIBS LIBS="-ldbmalloc $LIBS" cat >conftest.$ac_ext <<_ACEOF -#line 4657 "configure" +#line 4661 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ @@ -4673,16 +4677,16 @@ debug_malloc (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4676: \"$ac_link\"") >&5 +if { (eval echo "$as_me:4680: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? - echo "$as_me:4679: \$? = $ac_status" >&5 + echo "$as_me:4683: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4682: \"$ac_try\"") >&5 + { (eval echo "$as_me:4686: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? - echo "$as_me:4685: \$? = $ac_status" >&5 + echo "$as_me:4689: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ac_cv_lib_dbmalloc_debug_malloc=yes else @@ -4693,7 +4697,7 @@ fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -echo "$as_me:4696: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 +echo "$as_me:4700: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5 echo "${ECHO_T}$ac_cv_lib_dbmalloc_debug_malloc" >&6 if test $ac_cv_lib_dbmalloc_debug_malloc = yes; then cat >>confdefs.h <&5 +echo "$as_me:4715: checking if you want to use valgrind for testing" >&5 echo $ECHO_N "checking if you want to use valgrind for testing... $ECHO_C" >&6 # Check whether --with-valgrind or --without-valgrind was given. @@ -4725,7 +4729,7 @@ EOF else with_valgrind= fi; -echo "$as_me:4728: result: ${with_valgrind:-no}" >&5 +echo "$as_me:4732: result: ${with_valgrind:-no}" >&5 echo "${ECHO_T}${with_valgrind:-no}" >&6 case .$with_cflags in #(vi @@ -4818,7 +4822,7 @@ fi ;; esac -echo "$as_me:4821: checking if you want to perform memory-leak testing" >&5 +echo "$as_me:4825: checking if you want to perform memory-leak testing" >&5 echo $ECHO_N "checking if you want to perform memory-leak testing... $ECHO_C" >&6 # Check whether --enable-leaks or --disable-leaks was given. @@ -4828,7 +4832,7 @@ if test "${enable_leaks+set}" = set; the else : ${with_no_leaks:=no} fi; -echo "$as_me:4831: result: $with_no_leaks" >&5 +echo "$as_me:4835: result: $with_no_leaks" >&5 echo "${ECHO_T}$with_no_leaks" >&6 if test "$with_no_leaks" = yes ; then @@ -4924,7 +4928,7 @@ DEFS=-DHAVE_CONFIG_H : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:4927: creating $CONFIG_STATUS" >&5 +{ echo "$as_me:4931: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL @@ -5097,7 +5101,7 @@ cat >>$CONFIG_STATUS <<\EOF echo "$ac_cs_version"; exit 0 ;; --he | --h) # Conflict between --help and --header - { { echo "$as_me:5100: error: ambiguous option: $1 + { { echo "$as_me:5104: error: ambiguous option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2;} @@ -5116,7 +5120,7 @@ Try \`$0 --help' for more information." ac_need_defaults=false;; # This is an error. - -*) { { echo "$as_me:5119: error: unrecognized option: $1 + -*) { { echo "$as_me:5123: error: unrecognized option: $1 Try \`$0 --help' for more information." >&5 echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2;} @@ -5153,7 +5157,7 @@ do # Handling of arguments. "makefile" ) CONFIG_FILES="$CONFIG_FILES makefile" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h:config_h.in" ;; - *) { { echo "$as_me:5156: error: invalid argument: $ac_config_target" >&5 + *) { { echo "$as_me:5160: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac @@ -5386,7 +5390,7 @@ done; } esac if test x"$ac_file" != x-; then - { echo "$as_me:5389: creating $ac_file" >&5 + { echo "$as_me:5393: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} rm -f "$ac_file" fi @@ -5404,7 +5408,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:5407: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:5411: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -5417,7 +5421,7 @@ echo "$as_me: error: cannot find input f echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:5420: error: cannot find input file: $f" >&5 + { { echo "$as_me:5424: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -5433,7 +5437,7 @@ cat >>$CONFIG_STATUS <<\EOF if test -n "$ac_seen"; then ac_used=`grep '@datarootdir@' $ac_item` if test -z "$ac_used"; then - { echo "$as_me:5436: WARNING: datarootdir was used implicitly but not set: + { echo "$as_me:5440: WARNING: datarootdir was used implicitly but not set: $ac_seen" >&5 echo "$as_me: WARNING: datarootdir was used implicitly but not set: $ac_seen" >&2;} @@ -5442,7 +5446,7 @@ $ac_seen" >&2;} fi ac_seen=`grep '${datarootdir}' $ac_item` if test -n "$ac_seen"; then - { echo "$as_me:5445: WARNING: datarootdir was used explicitly but not set: + { echo "$as_me:5449: WARNING: datarootdir was used explicitly but not set: $ac_seen" >&5 echo "$as_me: WARNING: datarootdir was used explicitly but not set: $ac_seen" >&2;} @@ -5479,7 +5483,7 @@ s,@INSTALL@,$ac_INSTALL,;t t ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file` if test -z "$ac_init"; then ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'` - { echo "$as_me:5482: WARNING: Variable $ac_name is used but was not set: + { echo "$as_me:5486: WARNING: Variable $ac_name is used but was not set: $ac_seen" >&5 echo "$as_me: WARNING: Variable $ac_name is used but was not set: $ac_seen" >&2;} @@ -5490,7 +5494,7 @@ $ac_seen" >&2;} egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out if test -s $tmp/out; then ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out` - { echo "$as_me:5493: WARNING: Some variables may not be substituted: + { echo "$as_me:5497: WARNING: Some variables may not be substituted: $ac_seen" >&5 echo "$as_me: WARNING: Some variables may not be substituted: $ac_seen" >&2;} @@ -5539,7 +5543,7 @@ for ac_file in : $CONFIG_HEADERS; do tes * ) ac_file_in=$ac_file.in ;; esac - test x"$ac_file" != x- && { echo "$as_me:5542: creating $ac_file" >&5 + test x"$ac_file" != x- && { echo "$as_me:5546: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} # First look for the input files in the build tree, otherwise in the @@ -5550,7 +5554,7 @@ echo "$as_me: creating $ac_file" >&6;} -) echo $tmp/stdin ;; [\\/$]*) # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:5553: error: cannot find input file: $f" >&5 + test -f "$f" || { { echo "$as_me:5557: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } echo $f;; @@ -5563,7 +5567,7 @@ echo "$as_me: error: cannot find input f echo $srcdir/$f else # /dev/null tree - { { echo "$as_me:5566: error: cannot find input file: $f" >&5 + { { echo "$as_me:5570: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } fi;; @@ -5681,7 +5685,7 @@ cat >>$CONFIG_STATUS <<\EOF rm -f $tmp/in if test x"$ac_file" != x-; then if cmp -s $ac_file $tmp/config.h 2>/dev/null; then - { echo "$as_me:5684: $ac_file is unchanged" >&5 + { echo "$as_me:5688: $ac_file is unchanged" >&5 echo "$as_me: $ac_file is unchanged" >&6;} else ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ @@ -5748,3 +5752,51 @@ if test "$no_create" != yes; then $ac_cs_success || { (exit 1); exit 1; } fi +test -z "$cf_make_docs" && cf_make_docs=0 + +cf_output=makefile +test -f "$cf_output" || cf_output=Makefile + +if test "$cf_make_docs" = 0 +then +cat >>$cf_output <<"CF_EOF" +################################################################################ +.SUFFIXES : .html .1 .man .ps .pdf .txt + +.1.html : + GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.1 | groff -P -o0 -Iyacc,1_ -Thtml -man" >$@ + +.1.ps : + $(SHELL) -c "tbl $*.1 | groff -man" >$@ + +.1.txt : + GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.1 | nroff -Tascii -man | col -bx" >$@ + +.ps.pdf : + ps2pdf $*.ps + +CF_EOF + cf_make_docs=1 +fi + +for cf_name in yacc +do +cat >>$cf_output < @@ -104,6 +104,7 @@ #define PARSE_PARAM 13 #define LEX_PARAM 14 #define POSIX_YACC 15 +#define TOKEN_TABLE 16 /* symbol classes */ @@ -248,6 +249,7 @@ extern int lineno; extern int outline; extern int exit_code; extern int pure_parser; +extern int token_table; extern const char *const banner[]; extern const char *const xdecls[]; Modified: head/contrib/byacc/main.c ============================================================================== --- head/contrib/byacc/main.c Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/main.c Wed Jan 8 08:08:22 2014 (r260445) @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.40 2012/09/29 13:11:00 Adrian.Bunk Exp $ */ +/* $Id: main.c,v 1.41 2014/01/01 14:23:27 Christos.Zoulas Exp $ */ #include #include /* for _exit() */ @@ -87,6 +87,7 @@ short *symbol_prec; char *symbol_assoc; int pure_parser; +int token_table; int exit_code; Value_t *ritem; Modified: head/contrib/byacc/makefile.in ============================================================================== --- head/contrib/byacc/makefile.in Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/makefile.in Wed Jan 8 08:08:22 2014 (r260445) @@ -1,4 +1,4 @@ -# $Id: makefile.in,v 1.18 2012/09/29 13:10:15 Adrian.Bunk Exp $ +# $Id: makefile.in,v 1.19 2014/01/01 14:09:43 tom Exp $ # # UNIX template-makefile for Berkeley Yacc @@ -100,7 +100,7 @@ uninstall: - rm -f $(mandir)/$(actual_man) ################################################################################ -.SUFFIXES : $o .i .html .$(manext) .cat .ps .pdf .txt +.SUFFIXES : $o .i .c$o: @RULE_CC@ @@ -110,21 +110,6 @@ uninstall: @RULE_CC@ @ECHO_CC@$(CPP) -C $(CPPFLAGS) $*.c >$@ -.$(manext).cat : - - nroff -man $(srcdir)/$(THIS).$(manext) >$@ - -.$(manext).html : - GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.$(manext) | groff -Thtml -man" >$@ - -.$(manext).ps : - $(SHELL) -c "tbl $*.$(manext) | groff -man" >$@ - -.$(manext).txt : - GROFF_NO_SGR=stupid $(SHELL) -c "tbl $*.$(manext) | nroff -Tascii -man | col -bx" >$@ - -.ps.pdf : - ps2pdf $*.ps - ################################################################################ $(THIS)$x : $(OBJS) @@ -133,27 +118,17 @@ $(THIS)$x : $(OBJS) mostlyclean : - rm -f core .nfs* *$o *.bak *.BAK *.out -clean : mostlyclean +clean :: mostlyclean - rm -f $(THIS)$x -distclean : clean +distclean :: clean - rm -f config.log config.cache config.status config.h makefile - - rm -f *.html *.cat *.pdf *.ps *.txt - cd test && rm -f test-* -realclean: distclean +realclean :: distclean - rm -f tags TAGS ################################################################################ -docs :: $(THIS).html \ - $(THIS).pdf \ - $(THIS).ps \ - $(THIS).txt -$(THIS).html : $(THIS).$(manext) -$(THIS).pdf : $(THIS).ps -$(THIS).ps : $(THIS).$(manext) -$(THIS).txt : $(THIS).$(manext) -################################################################################ check: $(THIS)$x $(SHELL) $(testdir)/run_test.sh $(testdir) Modified: head/contrib/byacc/output.c ============================================================================== --- head/contrib/byacc/output.c Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/output.c Wed Jan 8 08:08:22 2014 (r260445) @@ -1,4 +1,4 @@ -/* $Id: output.c,v 1.45 2013/03/05 00:29:17 tom Exp $ */ +/* $Id: output.c,v 1.47 2014/01/01 17:22:38 tom Exp $ */ #include "defs.h" @@ -921,23 +921,42 @@ output_debug(void) ++outline; fprintf(code_file, "#define YYMAXTOKEN %d\n", max); + fprintf(code_file, "#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? " + "(YYMAXTOKEN + 1) : (a))\n"); - symnam = TMALLOC(const char *, max + 1); + symnam = TMALLOC(const char *, max + 2); NO_SPACE(symnam); /* Note that it is not necessary to initialize the element */ /* symnam[max]. */ - for (i = 0; i < max; ++i) + for (i = 0; i <= max; ++i) symnam[i] = 0; for (i = ntokens - 1; i >= 2; --i) symnam[symbol_value[i]] = symbol_name[i]; symnam[0] = "end-of-file"; + symnam[max + 1] = "illegal-symbol"; - output_line("#if YYDEBUG"); + /* + * bison's yytname[] array is roughly the same as byacc's yyname[] array. + * The difference is that byacc does not predefine "$end", "$error" or + * "$undefined". + * + * If the grammar declares "%token-table", define symbol "yytname" so + * an application such as ntpd can build. + */ + if (token_table) + { + output_line("#undef yytname"); + output_line("#define yytname yyname"); + } + else + { + output_line("#if YYDEBUG"); + } start_str_table("name"); j = 80; - for (i = 0; i <= max; ++i) + for (i = 0; i <= max + 1; ++i) { if ((s = symnam[i]) != 0) { @@ -1058,6 +1077,8 @@ output_debug(void) end_table(); FREE(symnam); + if (token_table) + output_line("#if YYDEBUG"); start_str_table("rule"); for (i = 2; i < nrules; ++i) { Modified: head/contrib/byacc/package/byacc.spec ============================================================================== --- head/contrib/byacc/package/byacc.spec Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/package/byacc.spec Wed Jan 8 08:08:22 2014 (r260445) @@ -1,8 +1,8 @@ Summary: byacc - public domain Berkeley LALR Yacc parser generator %define AppProgram byacc -%define AppVersion 20130925 +%define AppVersion 20140101 %define UseProgram yacc -# $XTermId: byacc.spec,v 1.17 2013/09/25 22:41:54 tom Exp $ +# $XTermId: byacc.spec,v 1.18 2014/01/01 17:26:25 tom Exp $ Name: %{AppProgram} Version: %{AppVersion} Release: 1 Modified: head/contrib/byacc/package/debian/changelog ============================================================================== --- head/contrib/byacc/package/debian/changelog Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/package/debian/changelog Wed Jan 8 08:08:22 2014 (r260445) @@ -1,3 +1,9 @@ +byacc (20140101) unstable; urgency=low + + * yytname[] changes + + -- Thomas E. Dickey Wed, 01 Jan 2014 10:02:12 -0500 + byacc (20130925) unstable; urgency=low * increase default stack-size Modified: head/contrib/byacc/reader.c ============================================================================== --- head/contrib/byacc/reader.c Wed Jan 8 08:06:56 2014 (r260444) +++ head/contrib/byacc/reader.c Wed Jan 8 08:08:22 2014 (r260445) @@ -1,4 +1,4 @@ -/* $Id: reader.c,v 1.37 2013/09/25 23:46:18 tom Exp $ */ +/* $Id: reader.c,v 1.38 2014/01/01 14:23:27 Christos.Zoulas Exp $ */ #include "defs.h" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 08:37:31 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 576A6D74; Wed, 8 Jan 2014 08:37:31 +0000 (UTC) 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 43BC61F0A; Wed, 8 Jan 2014 08:37: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 s088bVVR067235; Wed, 8 Jan 2014 08:37:31 GMT (envelope-from remko@svn.freebsd.org) Received: (from remko@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s088bVDO067234; Wed, 8 Jan 2014 08:37:31 GMT (envelope-from remko@svn.freebsd.org) Message-Id: <201401080837.s088bVDO067234@svn.freebsd.org> From: Remko Lodder Date: Wed, 8 Jan 2014 08:37:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260446 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 08:37:31 -0000 Author: remko Date: Wed Jan 8 08:37:30 2014 New Revision: 260446 URL: http://svnweb.freebsd.org/changeset/base/260446 Log: virtio-block does not exist, the correct name is virtio-blk. PR: 185573 Submitted by: Allan Jude Facilitated by: Snow B.V. MFC after: 3 days Modified: head/usr.sbin/bhyve/bhyve.8 Modified: head/usr.sbin/bhyve/bhyve.8 ============================================================================== --- head/usr.sbin/bhyve/bhyve.8 Wed Jan 8 08:08:22 2014 (r260445) +++ head/usr.sbin/bhyve/bhyve.8 Wed Jan 8 08:37:30 2014 (r260446) @@ -120,7 +120,7 @@ emulation is identical but uses a PCI ve PCI pass-through device. .It Li virtio-net Virtio network interface. -.It Li virtio-block +.It Li virtio-blk Virtio block storage interface. .It Li ahci-cd AHCI controller attached to an ATAPI CD/DVD. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 09:33:17 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7CA4AE5A; Wed, 8 Jan 2014 09:33:17 +0000 (UTC) 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 68C1113C7; Wed, 8 Jan 2014 09:33: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 s089XHRP089964; Wed, 8 Jan 2014 09:33:17 GMT (envelope-from ganbold@svn.freebsd.org) Received: (from ganbold@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s089XHFf089962; Wed, 8 Jan 2014 09:33:17 GMT (envelope-from ganbold@svn.freebsd.org) Message-Id: <201401080933.s089XHFf089962@svn.freebsd.org> From: Ganbold Tsagaankhuu Date: Wed, 8 Jan 2014 09:33:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260447 - head/sys/boot/fdt/dts X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 09:33:17 -0000 Author: ganbold Date: Wed Jan 8 09:33:16 2014 New Revision: 260447 URL: http://svnweb.freebsd.org/changeset/base/260447 Log: Update dts files of Cubieboard1,2 to use 1GB memory. Whilst there, fix cpu config register address for Cubieboard2. Approved by: stas (mentor) Replaced: head/sys/boot/fdt/dts/cubieboard2.dts - copied, changed from r256656, head/sys/boot/fdt/dts/cubieboard2.dts Modified: head/sys/boot/fdt/dts/cubieboard.dts Modified: head/sys/boot/fdt/dts/cubieboard.dts ============================================================================== --- head/sys/boot/fdt/dts/cubieboard.dts Wed Jan 8 08:37:30 2014 (r260446) +++ head/sys/boot/fdt/dts/cubieboard.dts Wed Jan 8 09:33:16 2014 (r260447) @@ -38,7 +38,7 @@ memory { device_type = "memory"; - reg = < 0x40000000 0x20000000 >; /* 512MB RAM */ + reg = < 0x40000000 0x40000000 >; /* 1GB RAM */ }; aliases { Copied and modified: head/sys/boot/fdt/dts/cubieboard2.dts (from r256656, head/sys/boot/fdt/dts/cubieboard2.dts) ============================================================================== --- head/sys/boot/fdt/dts/cubieboard2.dts Thu Oct 17 00:07:21 2013 (r256656, copy source) +++ head/sys/boot/fdt/dts/cubieboard2.dts Wed Jan 8 09:33:16 2014 (r260447) @@ -38,7 +38,7 @@ memory { device_type = "memory"; - reg = < 0x40000000 0x20000000 >; /* 512MB RAM */ + reg = < 0x40000000 0x40000000 >; /* 1GB RAM */ }; aliases { @@ -61,7 +61,7 @@ #interrupt-cells = <1>; }; - cpu-cfg@01c20000 { + cpu-cfg@01c25c00 { compatible = "allwinner,sun7i-cpu-cfg"; #address-cells = <1>; #size-cells = <1>; From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 13:59:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D8844AD1; Wed, 8 Jan 2014 13:59:34 +0000 (UTC) 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 AB0ED1C7E; Wed, 8 Jan 2014 13:59: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 s08DxYhN099303; Wed, 8 Jan 2014 13:59:34 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08DxYaw099301; Wed, 8 Jan 2014 13:59:34 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201401081359.s08DxYaw099301@svn.freebsd.org> From: Gavin Atkinson Date: Wed, 8 Jan 2014 13:59:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260448 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 13:59:34 -0000 Author: gavin Date: Wed Jan 8 13:59:33 2014 New Revision: 260448 URL: http://svnweb.freebsd.org/changeset/base/260448 Log: Add support for the Intel Centrino Wireless-N 135 chipset. MFC after: 2 weeks Modified: head/sys/dev/iwn/if_iwn.c head/sys/dev/iwn/if_iwn_devid.h Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Wed Jan 8 09:33:16 2014 (r260447) +++ head/sys/dev/iwn/if_iwn.c Wed Jan 8 13:59:33 2014 (r260448) @@ -108,6 +108,8 @@ static const struct iwn_ident iwn_ident_ { 0x8086, IWN_DID_130_2, "Intel Centrino Wireless-N 130" }, { 0x8086, IWN_DID_100_1, "Intel Centrino Wireless-N 100" }, { 0x8086, IWN_DID_100_2, "Intel Centrino Wireless-N 100" }, + { 0x8086, IWN_DID_135_1, "Intel Centrino Wireless-N 135" }, + { 0x8086, IWN_DID_135_2, "Intel Centrino Wireless-N 135" }, { 0x8086, IWN_DID_4965_1, "Intel Wireless WiFi Link 4965" }, { 0x8086, IWN_DID_6x00_1, "Intel Centrino Ultimate-N 6300" }, { 0x8086, IWN_DID_6x00_2, "Intel Centrino Advanced-N 6200" }, @@ -966,6 +968,28 @@ iwn_config_specific(struct iwn_softc *sc } break; +/* 135 Series */ +/* XXX: This series will need adjustment for rate. + * see rx_with_siso_diversity in linux kernel + */ + case IWN_DID_135_1: + case IWN_DID_135_2: + switch(sc->subdevice_id) { + case IWN_SDID_135_1: + case IWN_SDID_135_2: + case IWN_SDID_135_3: + sc->limits = &iwn2030_sensitivity_limits; + sc->base_params = &iwn2030_base_params; + sc->fwname = "iwn135fw"; + break; + default: + device_printf(sc->sc_dev, "adapter type id : 0x%04x sub id :" + "0x%04x rev %d not supported (subdevice)\n", pid, + sc->subdevice_id,sc->hw_type); + return ENOTSUP; + } + break; + /* 2x00 Series */ case IWN_DID_2x00_1: case IWN_DID_2x00_2: Modified: head/sys/dev/iwn/if_iwn_devid.h ============================================================================== --- head/sys/dev/iwn/if_iwn_devid.h Wed Jan 8 09:33:16 2014 (r260447) +++ head/sys/dev/iwn/if_iwn_devid.h Wed Jan 8 13:59:33 2014 (r260448) @@ -228,6 +228,18 @@ /* * -------------------------------------------------------------------------- + * Device ID for 135 Series + * -------------------------------------------------------------------------- + */ +#define IWN_DID_135_1 0x0892 +#define IWN_DID_135_2 0x0893 +/* SubDevice ID */ +#define IWN_SDID_135_1 0x0062 +#define IWN_SDID_135_2 0x0262 +#define IWN_SDID_135_3 0x0462 + +/* + * -------------------------------------------------------------------------- * Device ID for 5x00 Series * -------------------------------------------------------------------------- */ From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 14:01:57 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 40BCDD99; Wed, 8 Jan 2014 14:01:57 +0000 (UTC) Received: from mail-gw12.york.ac.uk (mail-gw12.york.ac.uk [144.32.129.162]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0356C1CF9; Wed, 8 Jan 2014 14:01:56 +0000 (UTC) Received: from ury.york.ac.uk ([144.32.64.162]:26575) by mail-gw12.york.ac.uk with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1W0thd-0001Ul-5c; Wed, 08 Jan 2014 14:01:49 +0000 Date: Wed, 8 Jan 2014 14:01:48 +0000 (GMT) From: Gavin Atkinson X-X-Sender: gavin@ury.york.ac.uk To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r260448 - head/sys/dev/iwn In-Reply-To: <201401081359.s08DxYaw099301@svn.freebsd.org> Message-ID: References: <201401081359.s08DxYaw099301@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 14:01:57 -0000 On Wed, 8 Jan 2014, Gavin Atkinson wrote: > Author: gavin > Date: Wed Jan 8 13:59:33 2014 > New Revision: 260448 > URL: http://svnweb.freebsd.org/changeset/base/260448 > > Log: > Add support for the Intel Centrino Wireless-N 135 chipset. > > MFC after: 2 weeks Apologies. Reviewed by: adrian Gavin From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 14:36:36 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id F32F7949; Wed, 8 Jan 2014 14:36:35 +0000 (UTC) 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 DF7031F89; Wed, 8 Jan 2014 14:36: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 s08EaZ4c014980; Wed, 8 Jan 2014 14:36:35 GMT (envelope-from rmh@svn.freebsd.org) Received: (from rmh@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08EaZi3014979; Wed, 8 Jan 2014 14:36:35 GMT (envelope-from rmh@svn.freebsd.org) Message-Id: <201401081436.s08EaZi3014979@svn.freebsd.org> From: Robert Millan Date: Wed, 8 Jan 2014 14:36:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260449 - head/sys/dev/vt/hw/xboxfb X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 14:36:36 -0000 Author: rmh Date: Wed Jan 8 14:36:35 2014 New Revision: 260449 URL: http://svnweb.freebsd.org/changeset/base/260449 Log: Fix build of vt_xboxfb. Modified: head/sys/dev/vt/hw/xboxfb/xboxfb.c Modified: head/sys/dev/vt/hw/xboxfb/xboxfb.c ============================================================================== --- head/sys/dev/vt/hw/xboxfb/xboxfb.c Wed Jan 8 13:59:33 2014 (r260448) +++ head/sys/dev/vt/hw/xboxfb/xboxfb.c Wed Jan 8 14:36:35 2014 (r260449) @@ -187,7 +187,7 @@ xbox_init(struct vt_device *vd) if (!arch_i386_is_xbox) return (CN_DEAD); - sc->xbox_fb_tag = I386_BUS_SPACE_MEM; + sc->xbox_fb_tag = X86_BUS_SPACE_MEM; sc->xbox_fb_handle = PAGE_SIZE; vd->vd_width = VT_XBOX_WIDTH; From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 14:42:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2F212EA6; Wed, 8 Jan 2014 14:42:27 +0000 (UTC) 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 1B39510A1; Wed, 8 Jan 2014 14:42: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 s08EgQGT018361; Wed, 8 Jan 2014 14:42:26 GMT (envelope-from ray@svn.freebsd.org) Received: (from ray@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08EgQ9X018360; Wed, 8 Jan 2014 14:42:26 GMT (envelope-from ray@svn.freebsd.org) Message-Id: <201401081442.s08EgQ9X018360@svn.freebsd.org> From: Aleksandr Rybalko Date: Wed, 8 Jan 2014 14:42:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260450 - head/sys/dev/vt/hw/vga X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 14:42:27 -0000 Author: ray Date: Wed Jan 8 14:42:26 2014 New Revision: 260450 URL: http://svnweb.freebsd.org/changeset/base/260450 Log: Restore VGA mode on vt switch. It fix VESA mode left by Xorg on exit. Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/vt/hw/vga/vga.c Modified: head/sys/dev/vt/hw/vga/vga.c ============================================================================== --- head/sys/dev/vt/hw/vga/vga.c Wed Jan 8 14:36:35 2014 (r260449) +++ head/sys/dev/vt/hw/vga/vga.c Wed Jan 8 14:42:26 2014 (r260450) @@ -75,12 +75,14 @@ static vd_init_t vga_init; static vd_blank_t vga_blank; static vd_bitbltchr_t vga_bitbltchr; static vd_putchar_t vga_putchar; +static vd_postswitch_t vga_postswitch; static const struct vt_driver vt_vga_driver = { .vd_init = vga_init, .vd_blank = vga_blank, .vd_bitbltchr = vga_bitbltchr, .vd_putchar = vga_putchar, + .vd_postswitch = vga_postswitch, .vd_priority = VD_PRIORITY_GENERIC, }; @@ -602,3 +604,13 @@ vga_init(struct vt_device *vd) return (CN_INTERNAL); } + +static void +vga_postswitch(struct vt_device *vd) +{ + + /* Reinit VGA mode, to restore view after app which change mode. */ + vga_initialize(vd, (vd->vd_flags & VDF_TEXTMODE)); + /* Ask vt(9) to update chars on visible area. */ + vd->vd_flags |= VDF_INVALID; +} From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 15:12:09 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6F389A47; Wed, 8 Jan 2014 15:12:09 +0000 (UTC) Received: from smtp.dlink.ua (smtp.dlink.ua [193.138.187.146]) by mx1.freebsd.org (Postfix) with ESMTP id A4678130A; Wed, 8 Jan 2014 15:12:08 +0000 (UTC) Received: from terran (unknown [192.168.99.1]) (Authenticated sender: ray) by smtp.dlink.ua (Postfix) with ESMTPA id 4D1F7C4935; Wed, 8 Jan 2014 17:12:07 +0200 (EET) Date: Wed, 8 Jan 2014 17:14:07 +0200 From: Aleksandr Rybalko To: Nathan Whitehorn Subject: Re: svn commit: r259016 - in head/sys: conf dev/drm2 dev/drm2/i915 dev/drm2/radeon dev/fb dev/vt kern modules/drm2/i915kms modules/drm2/radeonkms sparc64/sparc64 sys teken Message-Id: <20140108171407.50135a65a9b767d61a73b186@freebsd.org> In-Reply-To: <52A65FC6.4000502@freebsd.org> References: <201312052238.rB5McsVN020719@svn.freebsd.org> <20131208153620.GA21278@alchemy.franken.de> <20131210022015.2a5a1ed3.ray@freebsd.org> <52A65FC6.4000502@freebsd.org> X-Mailer: Sylpheed 3.2.0 (GTK+ 2.24.6; amd64-portbld-freebsd9.0) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Marius Strobl X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 15:12:09 -0000 On Mon, 09 Dec 2013 18:26:46 -0600 Nathan Whitehorn wrote: > On 12/09/13 18:20, Aleksandr Rybalko wrote: > > On Sun, 8 Dec 2013 16:36:20 +0100 > > Marius Strobl wrote: > > > >> On Thu, Dec 05, 2013 at 10:38:54PM +0000, Aleksandr Rybalko wrote: > >>> Author: ray > >>> Date: Thu Dec 5 22:38:53 2013 > >>> New Revision: 259016 > >>> URL: http://svnweb.freebsd.org/changeset/base/259016 > >>> > >>> Log: > >>> Merge VT(9) project (a.k.a. newcons). > >>> > >>> Reviewed by: nwhitehorn > >>> MFC_to_10_after: re approval > >> Have you addressed any of the points raised in: > >> http://lists.freebsd.org/pipermail/freebsd-current/2013-October/045887.html > >> to get VT(9) at least en par with syscons(4) regarding being able to > >> use a hardware cursor, allowing different low-level console drivers > >> to compete for the same hardware etc. in the meantime? > >> > >> Marius > >> > > Hello Marius! > > > > Yes and No :) > > > > Lets make it as list with short items: > > 1. Making these drivers work as low-level console. > > 2. Drivers priority. > > 3. Using hardware acceleration. > > 4. Using the 12 x 22 gallant font. > > 5. Allowing Xorg to map the frame buffer. > > 6. (Part of 5) Other register banks as needed. > > 7. Allowing late attachment. > > > > Answers: > > 1. Works, I did testing on ARM board Efika MX with vt_fb_early driver. > > (Still have to discuss several things with arm@ guys, then commit) > > As I mentioned in my review, this particular code is a really weird > bug-filled copy of ofwfb.c, which already works as a low-level console > early in the boot process. TODO :) > > > 2. Works. F.e. amd64 start with vt_vga driver, then vt_kms driver > > override it as more specific. > > I think Marius meant having early-boot drivers bid amongst each other > for attachment.... Early-boot drivers selected on console driver bid rules. I see early drivers as something really special, because resource management is not ready at this stage and many device even is not able to get all required info to be initialized fully. So I prefer model with simple driver like vt_fb_early which is replaced later by full functional and allocated by kernel's resource management rules. > > > 3. Not used at all yet. > > > > 4. I like that font. If you want more "gallant" - I will help. Thanks > > to Ed, newcons support any font dimensions. > > > > 5. It works, but only for those drivers which attach dev/fb/fbd, via > > fbd devfs node (not accessible via vt(9) ioctls yet). > > Could you provide more detail about how this is supposed to work? X > doesn't map at offset 0 in general, and that means that 100% of X UMS > drivers are currently broken with newcons. I already done framebuffer info export and mmap support to ttyvX devices. Just xboxfb/ofwfb drivers is not ready yet. Phrase "100% of X UMS drivers" is totally incorrect :) PC like systems use direct access to video drivers, but not maps fb. Only ppc/sparc64 support mmaping of vt devices (at least before I start to work on Efika MX, now RPi and Efika MX here too). But found one more problem here :) Xorg with vesa driver left video in VESA mode on exit, so I add restore VGA mode for vt_vga driver on vt switch. Since I made framebuffer export works for all framebuffer provider it will be supported after small modifications to xorg-server port. x11-drivers/xf86-video-scfb already committed to ports tree (great thanks to Rene Ladan), but limited yet to not PC platforms, until xorg not ready. > > > 6. IMO better to put it into some drm emulation. > > > > 7. Works in many combination. ( > > start w/ vga, load kms; (kms replace vga) > > start w/o driver, load kms; > > preload kms, start w/ vga; (kms replace vga) > > preload kms, start w/o driver; (kms attached after drm node initialized) > > ) > > > > Have to put your list on Newcons's wiki page too. > > > > As I remember such long list of requirement you provide was based on > > expectation that I want to replace syscons right now :) > > But, for now we (me and x11 team) want to see it 10.0 as disabled by > > default (just like in HEAD now), so peoples who want to help with debug > > of new xorg and drm drivers will be able to see messages after KMS-xorg > > starts. > > > > Oh, looks like I forget what I have to say more. :) > > So it will be said later, when I will less sleepy. > > > > Anyway. Thanks a lot for your comments!!! > > > > WBW > > We should come up with a sunset plan for syscons, though. TBD > -Nathan Thanks a lot! WBW -- Aleksandr Rybalko From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 15:20:04 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8449CDBD; Wed, 8 Jan 2014 15:20:04 +0000 (UTC) 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 55A2E135A; Wed, 8 Jan 2014 15:20:03 +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 1W0uvF-00039U-7Z; Wed, 08 Jan 2014 15:19:57 +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 s08FJsLI030630; Wed, 8 Jan 2014 08:19:54 -0700 (MST) (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/BFoLYJN/ST1o39NIrjhJN Subject: Re: svn commit: r260440 - head/sys/arm/conf From: Ian Lepore To: Nathan Whitehorn In-Reply-To: <52CCD1DA.7010008@freebsd.org> References: <201401080340.s083eIDG054652@svn.freebsd.org> <52CCD1DA.7010008@freebsd.org> Content-Type: text/plain; charset="us-ascii" Date: Wed, 08 Jan 2014 08:19:54 -0700 Message-ID: <1389194394.1158.362.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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 15:20:04 -0000 On Tue, 2014-01-07 at 23:19 -0500, Nathan Whitehorn wrote: > On 01/07/14 22:40, Ian Lepore wrote: > > Author: ian > > Date: Wed Jan 8 03:40:18 2014 > > New Revision: 260440 > > URL: http://svnweb.freebsd.org/changeset/base/260440 > > > > Log: > > Add option USB_HOST_ALIGN to configs that contain 'device usb'. Setting > > this to the cache line size is required to avoid data corruption on armv4 > > and armv5, and improves performance on armv6, in both cases by avoiding > > partial cacheline flushes for USB IO. > > > > All these configs already exist in 10-stable. A few that don't (and > > thus can't be MFC'd yet) will be committed separately. > > > > There has to be -- and I do not mean this as a criticism of your patch > -- a better solution to this problem than USB_HOST_ALIGN. Isn't busdma > supposed to handle this kind of thing? Why is USB different? > -Nathan > USB is different because it doesn't follow the busdma rules. It allocates one large buffer, then sub-divides it internally into bits that are used for DMA IO and adjacent bits that are accessed by the cpu concurrently with the DMA. If it doesn't do that subdividing with an awareness of the cache line boundaries, it ends up with concurrent CPU and DMA access to data in the same cache line, and there's no way a software-assisted cache coherency scheme can reliably do busdma sync ops that don't corrupt either the CPU data or the DMA data. On armv6 we now automatically bounce IO that's not sized and aligned on cache line boundaries. The overhead for doing so is non-trivial, doubly so in the case of USB, because it's the only consumer of busdma in the system that requires that the offset-within-page for a bounced IO be the same as the offset in the original page (so a pool of small bounce buffers for small unligned IOs is not an option, it must allocate full bounce pages for every IO). It used to be (on armv4) that when you used the busdma alloc functions to allocate small DMA buffers (a few bytes) the implementation allocated entire pages, which is pretty inefficient and can add up to a lot of allocation overhead. That was cited as a reason not to change USB's "allocate big then subdivide" scheme. I wrote new busdma allocators that use UMA pools to efficiently handle small aligned buffers of both normal and uncachable (BUSDMA_COHERENT) memory, so that's not a roadblock anymore. (Arm uses the new allocator, mips never got converted.) So, since we keep getting reports on arm@ of data corruption that shows up as 32-byte chunks of bad data, and it costs real time and resources to try to debug each case, I figured we should just go with the fix that nobody likes but it actually works. -- Ian From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 15:48:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8EE5D88F; Wed, 8 Jan 2014 15:48:46 +0000 (UTC) Received: from smtpauth3.wiscmail.wisc.edu (wmauth3.doit.wisc.edu [144.92.197.226]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 537E41644; Wed, 8 Jan 2014 15:48:45 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MZ300300A8H5Q00@smtpauth3.wiscmail.wisc.edu>; Wed, 08 Jan 2014 09:48:38 -0600 (CST) X-Spam-PmxInfo: Server=avs-3, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.8.153914, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MZ300GLAAKXU820@smtpauth3.wiscmail.wisc.edu>; Wed, 08 Jan 2014 09:48:35 -0600 (CST) Message-id: <52CD7351.50704@freebsd.org> Date: Wed, 08 Jan 2014 10:48:33 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: Aleksandr Rybalko Subject: Re: svn commit: r259016 - in head/sys: conf dev/drm2 dev/drm2/i915 dev/drm2/radeon dev/fb dev/vt kern modules/drm2/i915kms modules/drm2/radeonkms sparc64/sparc64 sys teken References: <201312052238.rB5McsVN020719@svn.freebsd.org> <20131208153620.GA21278@alchemy.franken.de> <20131210022015.2a5a1ed3.ray@freebsd.org> <52A65FC6.4000502@freebsd.org> <20140108171407.50135a65a9b767d61a73b186@freebsd.org> In-reply-to: <20140108171407.50135a65a9b767d61a73b186@freebsd.org> X-Enigmail-Version: 1.6 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Marius Strobl X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 15:48:46 -0000 On 01/08/14 10:14, Aleksandr Rybalko wrote: > On Mon, 09 Dec 2013 18:26:46 -0600 > Nathan Whitehorn wrote: > >> On 12/09/13 18:20, Aleksandr Rybalko wrote: >>> On Sun, 8 Dec 2013 16:36:20 +0100 >>> Marius Strobl wrote: >>> >>>> On Thu, Dec 05, 2013 at 10:38:54PM +0000, Aleksandr Rybalko wrote: >>>>> Author: ray >>>>> Date: Thu Dec 5 22:38:53 2013 >>>>> New Revision: 259016 >>>>> URL: http://svnweb.freebsd.org/changeset/base/259016 >>>>> >>>>> Log: >>>>> Merge VT(9) project (a.k.a. newcons). >>>>> >>>>> Reviewed by: nwhitehorn >>>>> MFC_to_10_after: re approval >>>> Have you addressed any of the points raised in: >>>> http://lists.freebsd.org/pipermail/freebsd-current/2013-October/045887.html >>>> to get VT(9) at least en par with syscons(4) regarding being able to >>>> use a hardware cursor, allowing different low-level console drivers >>>> to compete for the same hardware etc. in the meantime? >>>> >>>> Marius >>>> >>> Hello Marius! >>> >>> Yes and No :) >>> >>> Lets make it as list with short items: >>> 1. Making these drivers work as low-level console. >>> 2. Drivers priority. >>> 3. Using hardware acceleration. >>> 4. Using the 12 x 22 gallant font. >>> 5. Allowing Xorg to map the frame buffer. >>> 6. (Part of 5) Other register banks as needed. >>> 7. Allowing late attachment. >>> >>> Answers: >>> 1. Works, I did testing on ARM board Efika MX with vt_fb_early driver. >>> (Still have to discuss several things with arm@ guys, then commit) >> As I mentioned in my review, this particular code is a really weird >> bug-filled copy of ofwfb.c, which already works as a low-level console >> early in the boot process. > TODO :) > >>> 2. Works. F.e. amd64 start with vt_vga driver, then vt_kms driver >>> override it as more specific. >> I think Marius meant having early-boot drivers bid amongst each other >> for attachment.... > Early-boot drivers selected on console driver bid rules. I see early > drivers as something really special, because resource management is not > ready at this stage and many device even is not able to get all > required info to be initialized fully. So I prefer model with simple > driver like vt_fb_early which is replaced later by full functional and > allocated by kernel's resource management rules. > > The issue is that your vt_early is not a panacea. It's a driver for one specific type of hardware (the Efika/RPI framebuffer, it looks like), no different than any other. What if you have multiple options for framebuffers? For example, on PowerPC, there are three graphics console drivers: wiifb, ps3fb, and ofwfb. wiifb is in its own kernel, which simplifies things, but ps3fb and ofwfb are both in GENERIC64 and have to bid against each other to attach. They need to do it before the MMU is even up, because otherwise there is no option for a console. sparc64 likewise has a variety of "early" console drivers in GENERIC. There needs to be a way to handle this; it's why the whole "early" FB concept is flawed. There's also nothing particularly "early" about these drivers: on both PPC and SPARC, they do attach in early boot, but nothing ever replaces them. They are around for the whole life of the system. -Nathan From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 15:50:12 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 1E5529EA; Wed, 8 Jan 2014 15:50:12 +0000 (UTC) Received: from smtpauth3.wiscmail.wisc.edu (wmauth3.doit.wisc.edu [144.92.197.226]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DC941164F; Wed, 8 Jan 2014 15:50:11 +0000 (UTC) MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII Received: from avs-daemon.smtpauth3.wiscmail.wisc.edu by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) id <0MZ300300ADYQ100@smtpauth3.wiscmail.wisc.edu>; Wed, 08 Jan 2014 09:50:10 -0600 (CST) X-Spam-PmxInfo: Server=avs-3, Version=6.0.3.2322014, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2014.1.8.153914, SenderIP=0.0.0.0 X-Spam-Report: AuthenticatedSender=yes, SenderIP=0.0.0.0 Received: from wanderer.tachypleus.net (pool-72-66-107-173.washdc.fios.verizon.net [72.66.107.173]) by smtpauth3.wiscmail.wisc.edu (Oracle Communications Messaging Server 7u4-27.01(7.0.4.27.0) 64bit (built Aug 30 2012)) with ESMTPSA id <0MZ300GMWANJU820@smtpauth3.wiscmail.wisc.edu>; Wed, 08 Jan 2014 09:50:09 -0600 (CST) Message-id: <52CD73AF.1030205@freebsd.org> Date: Wed, 08 Jan 2014 10:50:07 -0500 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 To: Ian Lepore Subject: Re: svn commit: r260440 - head/sys/arm/conf References: <201401080340.s083eIDG054652@svn.freebsd.org> <52CCD1DA.7010008@freebsd.org> <1389194394.1158.362.camel@revolution.hippie.lan> In-reply-to: <1389194394.1158.362.camel@revolution.hippie.lan> X-Enigmail-Version: 1.6 Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 15:50:12 -0000 On 01/08/14 10:19, Ian Lepore wrote: > On Tue, 2014-01-07 at 23:19 -0500, Nathan Whitehorn wrote: >> On 01/07/14 22:40, Ian Lepore wrote: >>> Author: ian >>> Date: Wed Jan 8 03:40:18 2014 >>> New Revision: 260440 >>> URL: http://svnweb.freebsd.org/changeset/base/260440 >>> >>> Log: >>> Add option USB_HOST_ALIGN to configs that contain 'device usb'. Setting >>> this to the cache line size is required to avoid data corruption on armv4 >>> and armv5, and improves performance on armv6, in both cases by avoiding >>> partial cacheline flushes for USB IO. >>> >>> All these configs already exist in 10-stable. A few that don't (and >>> thus can't be MFC'd yet) will be committed separately. >>> >> There has to be -- and I do not mean this as a criticism of your patch >> -- a better solution to this problem than USB_HOST_ALIGN. Isn't busdma >> supposed to handle this kind of thing? Why is USB different? >> -Nathan >> > USB is different because it doesn't follow the busdma rules. It > allocates one large buffer, then sub-divides it internally into bits > that are used for DMA IO and adjacent bits that are accessed by the cpu > concurrently with the DMA. If it doesn't do that subdividing with an > awareness of the cache line boundaries, it ends up with concurrent CPU > and DMA access to data in the same cache line, and there's no way a > software-assisted cache coherency scheme can reliably do busdma sync ops > that don't corrupt either the CPU data or the DMA data. > > On armv6 we now automatically bounce IO that's not sized and aligned on > cache line boundaries. The overhead for doing so is non-trivial, doubly > so in the case of USB, because it's the only consumer of busdma in the > system that requires that the offset-within-page for a bounced IO be the > same as the offset in the original page (so a pool of small bounce > buffers for small unligned IOs is not an option, it must allocate full > bounce pages for every IO). > > It used to be (on armv4) that when you used the busdma alloc functions > to allocate small DMA buffers (a few bytes) the implementation allocated > entire pages, which is pretty inefficient and can add up to a lot of > allocation overhead. That was cited as a reason not to change USB's > "allocate big then subdivide" scheme. I wrote new busdma allocators > that use UMA pools to efficiently handle small aligned buffers of both > normal and uncachable (BUSDMA_COHERENT) memory, so that's not a > roadblock anymore. (Arm uses the new allocator, mips never got > converted.) > > So, since we keep getting reports on arm@ of data corruption that shows > up as 32-byte chunks of bad data, and it costs real time and resources > to try to debug each case, I figured we should just go with the fix that > nobody likes but it actually works. > > -- Ian > > Thanks for the explanation, the debugging, and the fix. This seems like a straightforward bug in the USB stack. Can it be fixed, or are there architectural reasons why it is the way it is? -Nathan From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 19:33:17 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 412903D5; Wed, 8 Jan 2014 19:33:17 +0000 (UTC) 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 2BCA819B8; Wed, 8 Jan 2014 19:33: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 s08JXHTf031473; Wed, 8 Jan 2014 19:33:17 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08JXG9d031470; Wed, 8 Jan 2014 19:33:16 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401081933.s08JXG9d031470@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Wed, 8 Jan 2014 19:33:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260455 - in stable/10/contrib/gcc: . config/arm X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 19:33:17 -0000 Author: pfg Date: Wed Jan 8 19:33:16 2014 New Revision: 260455 URL: http://svnweb.freebsd.org/changeset/base/260455 Log: MFC r259873: gcc: small enhancements for the arm support. fixes GCC-PR target/31152 Obtained from: gcc 4.3 (rev. r118461, 125973: GPLv2) Modified: stable/10/contrib/gcc/ChangeLog.gcc43 stable/10/contrib/gcc/config/arm/arm.c stable/10/contrib/gcc/config/arm/arm.md Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/gcc/ChangeLog.gcc43 ============================================================================== --- stable/10/contrib/gcc/ChangeLog.gcc43 Wed Jan 8 18:16:40 2014 (r260454) +++ stable/10/contrib/gcc/ChangeLog.gcc43 Wed Jan 8 19:33:16 2014 (r260455) @@ -65,6 +65,12 @@ fvisibility-ms-compat. * c.opt (fvisibility-ms-compat): New. +2007-06-23 Richard Earnshaw (r125973) + + PR target/31152 + * arm.md (negscc): Match the correct operand for optimized LT0 test. + Remove optimization for GT. + 2007-06-05 Joerg Wunsch (r125346) PR preprocessor/23479 @@ -594,6 +600,14 @@ * config/i386/i386.md (bswapsi2): New. (bswapdi2): Ditto. +2006-11-03 Paul Brook (r118461) + + gcc/ + * config/arm/arm.c (arm_file_start): New function. + (TARGET_ASM_FILE_START): Define. + (arm_default_cpu): New variable. + (arm_override_options): Set arm_default_cpu. + 2006-10-31 Geoffrey Keating (r118360) * coverage.c (coverage_checksum_string): Update comment. Modified: stable/10/contrib/gcc/config/arm/arm.c ============================================================================== --- stable/10/contrib/gcc/config/arm/arm.c Wed Jan 8 18:16:40 2014 (r260454) +++ stable/10/contrib/gcc/config/arm/arm.c Wed Jan 8 19:33:16 2014 (r260455) @@ -154,6 +154,7 @@ static void arm_encode_section_info (tre #endif static void arm_file_end (void); +static void arm_file_start (void); #ifdef AOF_ASSEMBLER static void aof_globalize_label (FILE *, const char *); @@ -202,6 +203,9 @@ static bool arm_tls_symbol_p (rtx x); #undef TARGET_ATTRIBUTE_TABLE #define TARGET_ATTRIBUTE_TABLE arm_attribute_table +#undef TARGET_ASM_FILE_START +#define TARGET_ASM_FILE_START arm_file_start + #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END arm_file_end @@ -390,6 +394,9 @@ rtx arm_compare_op0, arm_compare_op1; /* The processor for which instructions should be scheduled. */ enum processor_type arm_tune = arm_none; +/* The default processor used if not overriden by commandline. */ +static enum processor_type arm_default_cpu = arm_none; + /* Which floating point model to use. */ enum arm_fp_model arm_fp_model; @@ -1020,8 +1027,9 @@ arm_override_options (void) insn_flags = sel->flags; } sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch); + arm_default_cpu = (enum processor_type) (sel - all_cores); if (arm_tune == arm_none) - arm_tune = (enum processor_type) (sel - all_cores); + arm_tune = arm_default_cpu; } /* The processor for which we should tune should now have been @@ -14458,6 +14466,105 @@ arm_asm_output_labelref (FILE *stream, c } static void +arm_file_start (void) +{ + int val; + + if (TARGET_BPABI) + { + const char *fpu_name; + if (arm_select[0].string) + asm_fprintf (asm_out_file, "\t.cpu %s\n", arm_select[0].string); + else if (arm_select[1].string) + asm_fprintf (asm_out_file, "\t.arch %s\n", arm_select[1].string); + else + asm_fprintf (asm_out_file, "\t.cpu %s\n", + all_cores[arm_default_cpu].name); + + if (TARGET_SOFT_FLOAT) + { + if (TARGET_VFP) + fpu_name = "softvfp"; + else + fpu_name = "softfpa"; + } + else + { + switch (arm_fpu_arch) + { + case FPUTYPE_FPA: + fpu_name = "fpa"; + break; + case FPUTYPE_FPA_EMU2: + fpu_name = "fpe2"; + break; + case FPUTYPE_FPA_EMU3: + fpu_name = "fpe3"; + break; + case FPUTYPE_MAVERICK: + fpu_name = "maverick"; + break; + case FPUTYPE_VFP: + if (TARGET_HARD_FLOAT) + asm_fprintf (asm_out_file, "\t.eabi_attribute 27, 3\n"); + if (TARGET_HARD_FLOAT_ABI) + asm_fprintf (asm_out_file, "\t.eabi_attribute 28, 1\n"); + fpu_name = "vfp"; + break; + default: + abort(); + } + } + asm_fprintf (asm_out_file, "\t.fpu %s\n", fpu_name); + + /* Some of these attributes only apply when the corresponding features + are used. However we don't have any easy way of figuring this out. + Conservatively record the setting that would have been used. */ + + /* Tag_ABI_PCS_wchar_t. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 18, %d\n", + (int)WCHAR_TYPE_SIZE / BITS_PER_UNIT); + + /* Tag_ABI_FP_rounding. */ + if (flag_rounding_math) + asm_fprintf (asm_out_file, "\t.eabi_attribute 19, 1\n"); + if (!flag_unsafe_math_optimizations) + { + /* Tag_ABI_FP_denomal. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 20, 1\n"); + /* Tag_ABI_FP_exceptions. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 21, 1\n"); + } + /* Tag_ABI_FP_user_exceptions. */ + if (flag_signaling_nans) + asm_fprintf (asm_out_file, "\t.eabi_attribute 22, 1\n"); + /* Tag_ABI_FP_number_model. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 23, %d\n", + flag_finite_math_only ? 1 : 3); + + /* Tag_ABI_align8_needed. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 24, 1\n"); + /* Tag_ABI_align8_preserved. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 25, 1\n"); + /* Tag_ABI_enum_size. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 26, %d\n", + flag_short_enums ? 1 : 2); + + /* Tag_ABI_optimization_goals. */ + if (optimize_size) + val = 4; + else if (optimize >= 2) + val = 2; + else if (optimize) + val = 1; + else + val = 6; + asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val); + } + default_file_start(); +} + +static void arm_file_end (void) { int regno; Modified: stable/10/contrib/gcc/config/arm/arm.md ============================================================================== --- stable/10/contrib/gcc/config/arm/arm.md Wed Jan 8 18:16:40 2014 (r260454) +++ stable/10/contrib/gcc/config/arm/arm.md Wed Jan 8 19:33:16 2014 (r260455) @@ -8841,15 +8841,12 @@ (clobber (reg:CC CC_REGNUM))] "TARGET_ARM" "* - if (GET_CODE (operands[3]) == LT && operands[3] == const0_rtx) + if (GET_CODE (operands[3]) == LT && operands[2] == const0_rtx) return \"mov\\t%0, %1, asr #31\"; if (GET_CODE (operands[3]) == NE) return \"subs\\t%0, %1, %2\;mvnne\\t%0, #0\"; - if (GET_CODE (operands[3]) == GT) - return \"subs\\t%0, %1, %2\;mvnne\\t%0, %0, asr #31\"; - output_asm_insn (\"cmp\\t%1, %2\", operands); output_asm_insn (\"mov%D3\\t%0, #0\", operands); return \"mvn%d3\\t%0, #0\"; From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 19:34:25 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0FB07527; Wed, 8 Jan 2014 19:34:25 +0000 (UTC) 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 EDF8419C8; Wed, 8 Jan 2014 19:34: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 s08JYO5J031623; Wed, 8 Jan 2014 19:34:24 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08JYOnb031620; Wed, 8 Jan 2014 19:34:24 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401081934.s08JYOnb031620@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Wed, 8 Jan 2014 19:34:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260456 - in stable/9/contrib/gcc: . config/arm X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 19:34:25 -0000 Author: pfg Date: Wed Jan 8 19:34:23 2014 New Revision: 260456 URL: http://svnweb.freebsd.org/changeset/base/260456 Log: MFC r259873: gcc: small enhancements for the arm support. fixes GCC-PR target/31152 Obtained from: gcc 4.3 (rev. r118461, 125973: GPLv2) Modified: stable/9/contrib/gcc/ChangeLog.gcc43 stable/9/contrib/gcc/config/arm/arm.c stable/9/contrib/gcc/config/arm/arm.md Directory Properties: stable/9/ (props changed) stable/9/contrib/gcc/ (props changed) Modified: stable/9/contrib/gcc/ChangeLog.gcc43 ============================================================================== --- stable/9/contrib/gcc/ChangeLog.gcc43 Wed Jan 8 19:33:16 2014 (r260455) +++ stable/9/contrib/gcc/ChangeLog.gcc43 Wed Jan 8 19:34:23 2014 (r260456) @@ -65,6 +65,12 @@ fvisibility-ms-compat. * c.opt (fvisibility-ms-compat): New. +2007-06-23 Richard Earnshaw (r125973) + + PR target/31152 + * arm.md (negscc): Match the correct operand for optimized LT0 test. + Remove optimization for GT. + 2007-06-05 Joerg Wunsch (r125346) PR preprocessor/23479 @@ -557,6 +563,14 @@ debugnames. * config/darwin.h (DEBUG_PUBTYPES_SECTION): Define new global variable. +2006-11-03 Paul Brook (r118461) + + gcc/ + * config/arm/arm.c (arm_file_start): New function. + (TARGET_ASM_FILE_START): Define. + (arm_default_cpu): New variable. + (arm_override_options): Set arm_default_cpu. + 2006-10-31 Geoffrey Keating (r118356) * c-decl.c (grokdeclarator): Don't set DECL_EXTERNAL on Modified: stable/9/contrib/gcc/config/arm/arm.c ============================================================================== --- stable/9/contrib/gcc/config/arm/arm.c Wed Jan 8 19:33:16 2014 (r260455) +++ stable/9/contrib/gcc/config/arm/arm.c Wed Jan 8 19:34:23 2014 (r260456) @@ -154,6 +154,7 @@ static void arm_encode_section_info (tre #endif static void arm_file_end (void); +static void arm_file_start (void); #ifdef AOF_ASSEMBLER static void aof_globalize_label (FILE *, const char *); @@ -202,6 +203,9 @@ static bool arm_tls_symbol_p (rtx x); #undef TARGET_ATTRIBUTE_TABLE #define TARGET_ATTRIBUTE_TABLE arm_attribute_table +#undef TARGET_ASM_FILE_START +#define TARGET_ASM_FILE_START arm_file_start + #undef TARGET_ASM_FILE_END #define TARGET_ASM_FILE_END arm_file_end @@ -390,6 +394,9 @@ rtx arm_compare_op0, arm_compare_op1; /* The processor for which instructions should be scheduled. */ enum processor_type arm_tune = arm_none; +/* The default processor used if not overriden by commandline. */ +static enum processor_type arm_default_cpu = arm_none; + /* Which floating point model to use. */ enum arm_fp_model arm_fp_model; @@ -1020,8 +1027,9 @@ arm_override_options (void) insn_flags = sel->flags; } sprintf (arm_arch_name, "__ARM_ARCH_%s__", sel->arch); + arm_default_cpu = (enum processor_type) (sel - all_cores); if (arm_tune == arm_none) - arm_tune = (enum processor_type) (sel - all_cores); + arm_tune = arm_default_cpu; } /* The processor for which we should tune should now have been @@ -14458,6 +14466,105 @@ arm_asm_output_labelref (FILE *stream, c } static void +arm_file_start (void) +{ + int val; + + if (TARGET_BPABI) + { + const char *fpu_name; + if (arm_select[0].string) + asm_fprintf (asm_out_file, "\t.cpu %s\n", arm_select[0].string); + else if (arm_select[1].string) + asm_fprintf (asm_out_file, "\t.arch %s\n", arm_select[1].string); + else + asm_fprintf (asm_out_file, "\t.cpu %s\n", + all_cores[arm_default_cpu].name); + + if (TARGET_SOFT_FLOAT) + { + if (TARGET_VFP) + fpu_name = "softvfp"; + else + fpu_name = "softfpa"; + } + else + { + switch (arm_fpu_arch) + { + case FPUTYPE_FPA: + fpu_name = "fpa"; + break; + case FPUTYPE_FPA_EMU2: + fpu_name = "fpe2"; + break; + case FPUTYPE_FPA_EMU3: + fpu_name = "fpe3"; + break; + case FPUTYPE_MAVERICK: + fpu_name = "maverick"; + break; + case FPUTYPE_VFP: + if (TARGET_HARD_FLOAT) + asm_fprintf (asm_out_file, "\t.eabi_attribute 27, 3\n"); + if (TARGET_HARD_FLOAT_ABI) + asm_fprintf (asm_out_file, "\t.eabi_attribute 28, 1\n"); + fpu_name = "vfp"; + break; + default: + abort(); + } + } + asm_fprintf (asm_out_file, "\t.fpu %s\n", fpu_name); + + /* Some of these attributes only apply when the corresponding features + are used. However we don't have any easy way of figuring this out. + Conservatively record the setting that would have been used. */ + + /* Tag_ABI_PCS_wchar_t. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 18, %d\n", + (int)WCHAR_TYPE_SIZE / BITS_PER_UNIT); + + /* Tag_ABI_FP_rounding. */ + if (flag_rounding_math) + asm_fprintf (asm_out_file, "\t.eabi_attribute 19, 1\n"); + if (!flag_unsafe_math_optimizations) + { + /* Tag_ABI_FP_denomal. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 20, 1\n"); + /* Tag_ABI_FP_exceptions. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 21, 1\n"); + } + /* Tag_ABI_FP_user_exceptions. */ + if (flag_signaling_nans) + asm_fprintf (asm_out_file, "\t.eabi_attribute 22, 1\n"); + /* Tag_ABI_FP_number_model. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 23, %d\n", + flag_finite_math_only ? 1 : 3); + + /* Tag_ABI_align8_needed. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 24, 1\n"); + /* Tag_ABI_align8_preserved. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 25, 1\n"); + /* Tag_ABI_enum_size. */ + asm_fprintf (asm_out_file, "\t.eabi_attribute 26, %d\n", + flag_short_enums ? 1 : 2); + + /* Tag_ABI_optimization_goals. */ + if (optimize_size) + val = 4; + else if (optimize >= 2) + val = 2; + else if (optimize) + val = 1; + else + val = 6; + asm_fprintf (asm_out_file, "\t.eabi_attribute 30, %d\n", val); + } + default_file_start(); +} + +static void arm_file_end (void) { int regno; Modified: stable/9/contrib/gcc/config/arm/arm.md ============================================================================== --- stable/9/contrib/gcc/config/arm/arm.md Wed Jan 8 19:33:16 2014 (r260455) +++ stable/9/contrib/gcc/config/arm/arm.md Wed Jan 8 19:34:23 2014 (r260456) @@ -8841,15 +8841,12 @@ (clobber (reg:CC CC_REGNUM))] "TARGET_ARM" "* - if (GET_CODE (operands[3]) == LT && operands[3] == const0_rtx) + if (GET_CODE (operands[3]) == LT && operands[2] == const0_rtx) return \"mov\\t%0, %1, asr #31\"; if (GET_CODE (operands[3]) == NE) return \"subs\\t%0, %1, %2\;mvnne\\t%0, #0\"; - if (GET_CODE (operands[3]) == GT) - return \"subs\\t%0, %1, %2\;mvnne\\t%0, %0, asr #31\"; - output_asm_insn (\"cmp\\t%1, %2\", operands); output_asm_insn (\"mov%D3\\t%0, #0\", operands); return \"mvn%d3\\t%0, #0\"; From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 21:00:08 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 207726AB; Wed, 8 Jan 2014 21:00:08 +0000 (UTC) Received: from mail-lb0-x236.google.com (mail-lb0-x236.google.com [IPv6:2a00:1450:4010:c04::236]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 182F11192; Wed, 8 Jan 2014 21:00:06 +0000 (UTC) Received: by mail-lb0-f182.google.com with SMTP id l4so1677936lbv.41 for ; Wed, 08 Jan 2014 13:00:05 -0800 (PST) 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=HGSo+OesOnan5Y3AAX4nbsrLAXnJPJkLKfeq2xB6CXs=; b=A8WlvrJur6SlzsEBbJJXUxHFZPA4Mf2W26lPxGjjkBwdoyBJJPWQGbcdX9u0NUaSww njCU1sJVJn/VzJE2QLQPeUTv2/C0BgmIPHOvDnxl8isnRKtljQMZGVc+JJoNUpCl2xSX z5Ef97lR2f+Iyw8E/Yua80wDFZCLuLaF8f8/KS4wZWcolUKika9tZ43uLs7Q12YMT+z5 I3gsQ00VxnIYWkpKPneDu7LnUjqY709cNUaHxQNw67QA8JLEHFW3suR9crky3ftlipkC fVC3qkMbn1/kbJrLjsflGrToD94rxJjq/z7kag9OsdXEp0mlwAY69kwTffsjowqNE9LP FNcw== MIME-Version: 1.0 X-Received: by 10.152.225.129 with SMTP id rk1mr6161935lac.74.1389214803638; Wed, 08 Jan 2014 13:00:03 -0800 (PST) Sender: crodr001@gmail.com Received: by 10.112.38.43 with HTTP; Wed, 8 Jan 2014 13:00:03 -0800 (PST) In-Reply-To: <201312280401.rBS415Uu081102@svn.freebsd.org> References: <201312280401.rBS415Uu081102@svn.freebsd.org> Date: Wed, 8 Jan 2014 13:00:03 -0800 X-Google-Sender-Auth: 2QEoWSL-_qtzqTgySLDQZtGZFfs Message-ID: Subject: Re: svn commit: r259998 - head/usr.sbin/bhyve From: Craig Rodrigues To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 21:00:08 -0000 On Fri, Dec 27, 2013 at 8:01 PM, John Baldwin wrote: > Author: jhb > Date: Sat Dec 28 04:01:05 2013 > New Revision: 259998 > URL: http://svnweb.freebsd.org/changeset/base/259998 > > Log: > Extend the ACPI power management support to wire a virtual power button > up > to SIGTERM when ACPI is enabled. Sending SIGTERM to the hypervisor when > an > ACPI-aware OS is running will now trigger a soft-off allowing for a > graceful > shutdown of the guest. > Please consider merging all your BHyve changes to stable/10 at some point if possible. They greatly improve the usability of BHyve. -- Craig From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 21:04:12 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CC5CC896; Wed, 8 Jan 2014 21:04:12 +0000 (UTC) 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 B66611202; Wed, 8 Jan 2014 21:04:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s08L4CXU066364; Wed, 8 Jan 2014 21:04:12 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08L4CfJ066363; Wed, 8 Jan 2014 21:04:12 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201401082104.s08L4CfJ066363@svn.freebsd.org> From: John Baldwin Date: Wed, 8 Jan 2014 21:04:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260457 - head/sys/x86/x86 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 21:04:13 -0000 Author: jhb Date: Wed Jan 8 21:04:12 2014 New Revision: 260457 URL: http://svnweb.freebsd.org/changeset/base/260457 Log: The changes in r233781 attempted to make logging during a machine check exception more readable. In practice they prevented all logging during a machine check exception on at least some systems. Specifically, when an uncorrected ECC error is detected in a DIMM on a Nehalem/Westmere class machine, all CPUs receive a machine check exception, but only CPUs on the same package as the memory controller for the erroring DIMM log an error. The CPUs on the other package would complete the scan of their machine check banks and panic before the first set of CPUs could log an error. The end result was a clearer display during the panic (no interleaved messages), but a crashdump without any useful info about the error that occurred. To handle this case, make all CPUs spin in the machine check handler once they have completed their scan of their machine check banks until at least one machine check error is logged. I tried using a DELAY() instead so that the CPUs would not potentially hang forever, but that was not reliable in testing. While here, don't clear MCIP from MSR_MCG_STATUS before invoking panic. Only clear it if the machine check handler does not panic and returns to the interrupted thread. Modified: head/sys/x86/x86/mca.c Modified: head/sys/x86/x86/mca.c ============================================================================== --- head/sys/x86/x86/mca.c Wed Jan 8 19:34:23 2014 (r260456) +++ head/sys/x86/x86/mca.c Wed Jan 8 21:04:12 2014 (r260457) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -84,7 +85,7 @@ struct mca_internal { static MALLOC_DEFINE(M_MCA, "MCA", "Machine Check Architecture"); -static int mca_count; /* Number of records stored. */ +static volatile int mca_count; /* Number of records stored. */ static int mca_banks; /* Number of per-CPU register banks. */ static SYSCTL_NODE(_hw, OID_AUTO, mca, CTLFLAG_RD, NULL, @@ -733,7 +734,8 @@ mca_setup(uint64_t mcg_cap) TASK_INIT(&mca_refill_task, 0, mca_refill, NULL); mca_fill_freelist(); SYSCTL_ADD_INT(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, - "count", CTLFLAG_RD, &mca_count, 0, "Record count"); + "count", CTLFLAG_RD, (int *)(uintptr_t)&mca_count, 0, + "Record count"); SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "interval", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, &mca_ticks, 0, sysctl_positive_int, "I", @@ -939,7 +941,7 @@ void mca_intr(void) { uint64_t mcg_status; - int recoverable; + int old_count, recoverable; if (!(cpu_feature & CPUID_MCA)) { /* @@ -953,15 +955,27 @@ mca_intr(void) } /* Scan the banks and check for any non-recoverable errors. */ + old_count = mca_count; recoverable = mca_scan(MCE); mcg_status = rdmsr(MSR_MCG_STATUS); if (!(mcg_status & MCG_STATUS_RIPV)) recoverable = 0; + if (!recoverable) { + /* + * Wait for at least one error to be logged before + * panic'ing. Some errors will assert a machine check + * on all CPUs, but only certain CPUs will find a valid + * bank to log. + */ + while (mca_count == old_count) + cpu_spinwait(); + + panic("Unrecoverable machine check exception"); + } + /* Clear MCIP. */ wrmsr(MSR_MCG_STATUS, mcg_status & ~MCG_STATUS_MCIP); - if (!recoverable) - panic("Unrecoverable machine check exception"); } #ifdef DEV_APIC From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 21:30:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6920A188; Wed, 8 Jan 2014 21:30:43 +0000 (UTC) Received: from mail-qe0-x231.google.com (mail-qe0-x231.google.com [IPv6:2607:f8b0:400d:c02::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id E60E213B7; Wed, 8 Jan 2014 21:30:42 +0000 (UTC) Received: by mail-qe0-f49.google.com with SMTP id w7so2370974qeb.8 for ; Wed, 08 Jan 2014 13:30:42 -0800 (PST) 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=v5qxQoONpipC6BcE+1qHoKrMR6rIEZwA0RenD32JxZM=; b=GMYiBTVKcai3D1SzZwVnHlKrUm7UQoMRZjAunthMao0Mt64EIwzLcDTpMBnhLbaGNs CjBCke1/iF9Lp2gfV9m6gcTqP4R8ri5ORbn8yw+qCY3rvVz3S/qARs8Myhv4R1vcOAFm EtknomKYFGuO7rhSLUlaZyDVQS+a2ONajTFpBCrvEbF9njhrM4LTzEJnVErzSIaLJSS1 JD4PIPf9OymAHNs4ry9fvePPH0qPS7YV14glQGTH5KSABnL7YUYEZNC7nQQjfMOwj2n9 aFV8ETvOEDlALQLAFufyIZH3LA82xnM3sSFfsPh43Zp0mi8AKJ+6DfApIxAjOxneNKu2 9Cug== MIME-Version: 1.0 X-Received: by 10.49.24.140 with SMTP id u12mr164265528qef.78.1389216641983; Wed, 08 Jan 2014 13:30:41 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Wed, 8 Jan 2014 13:30:41 -0800 (PST) In-Reply-To: References: <201401081359.s08DxYaw099301@svn.freebsd.org> Date: Wed, 8 Jan 2014 13:30:41 -0800 X-Google-Sender-Auth: n8T514OvnSQrGELszMTulFSQpdg Message-ID: Subject: Re: svn commit: r260448 - head/sys/dev/iwn From: Adrian Chadd To: Gavin Atkinson 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 21:30:43 -0000 Hi, So the RX diversity option here simply sets the number of RX streams to one, regardless of the hardware antenna configuration. We should ensure the driver is doing this for these NICs or it may end up making some stupid rate announcement and the peer may think it can send two-stream rates. -a On 8 January 2014 06:01, Gavin Atkinson wrote: > On Wed, 8 Jan 2014, Gavin Atkinson wrote: > >> Author: gavin >> Date: Wed Jan 8 13:59:33 2014 >> New Revision: 260448 >> URL: http://svnweb.freebsd.org/changeset/base/260448 >> >> Log: >> Add support for the Intel Centrino Wireless-N 135 chipset. >> >> MFC after: 2 weeks > > Apologies. Reviewed by: adrian > > Gavin From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 22:13:33 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AB7D1BED; Wed, 8 Jan 2014 22:13:33 +0000 (UTC) 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 970FA172B; Wed, 8 Jan 2014 22:13: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 s08MDXY5092531; Wed, 8 Jan 2014 22:13:33 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08MDWaO092524; Wed, 8 Jan 2014 22:13:32 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401082213.s08MDWaO092524@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Wed, 8 Jan 2014 22:13:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260458 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 22:13:33 -0000 Author: melifaro Date: Wed Jan 8 22:13:32 2014 New Revision: 260458 URL: http://svnweb.freebsd.org/changeset/base/260458 Log: Introduce IN6_MASK_ADDR() macro to unify various hand-rolled code to do IPv6 addr & mask in different places. MFC after: 2 weeks Modified: head/sys/netinet6/in6.c head/sys/netinet6/in6_ifattach.c head/sys/netinet6/in6_src.c head/sys/netinet6/in6_var.h head/sys/netinet6/nd6_rtr.c Modified: head/sys/netinet6/in6.c ============================================================================== --- head/sys/netinet6/in6.c Wed Jan 8 21:04:12 2014 (r260457) +++ head/sys/netinet6/in6.c Wed Jan 8 22:13:32 2014 (r260458) @@ -635,7 +635,6 @@ in6_control(struct socket *so, u_long cm case SIOCAIFADDR_IN6: { - int i; struct nd_prefixctl pr0; struct nd_prefix *pr; @@ -688,10 +687,9 @@ in6_control(struct socket *so, u_long cm } pr0.ndpr_prefix = ifra->ifra_addr; /* apply the mask for safety. */ - for (i = 0; i < 4; i++) { - pr0.ndpr_prefix.sin6_addr.s6_addr32[i] &= - ifra->ifra_prefixmask.sin6_addr.s6_addr32[i]; - } + IN6_MASK_ADDR(&pr0.ndpr_prefix.sin6_addr, + &ifra->ifra_prefixmask.sin6_addr); + /* * XXX: since we don't have an API to set prefix (not address) * lifetimes, we just use the same lifetimes as addresses. Modified: head/sys/netinet6/in6_ifattach.c ============================================================================== --- head/sys/netinet6/in6_ifattach.c Wed Jan 8 21:04:12 2014 (r260457) +++ head/sys/netinet6/in6_ifattach.c Wed Jan 8 22:13:32 2014 (r260458) @@ -455,7 +455,7 @@ in6_ifattach_linklocal(struct ifnet *ifp struct in6_ifaddr *ia; struct in6_aliasreq ifra; struct nd_prefixctl pr0; - int i, error; + int error; /* * configure link-local address. @@ -532,10 +532,7 @@ in6_ifattach_linklocal(struct ifnet *ifp pr0.ndpr_plen = in6_mask2len(&ifra.ifra_prefixmask.sin6_addr, NULL); pr0.ndpr_prefix = ifra.ifra_addr; /* apply the mask for safety. (nd6_prelist_add will apply it again) */ - for (i = 0; i < 4; i++) { - pr0.ndpr_prefix.sin6_addr.s6_addr32[i] &= - in6mask64.s6_addr32[i]; - } + IN6_MASK_ADDR(&pr0.ndpr_prefix.sin6_addr, &in6mask64); /* * Initialize parameters. The link-local prefix must always be * on-link, and its lifetimes never expire. Modified: head/sys/netinet6/in6_src.c ============================================================================== --- head/sys/netinet6/in6_src.c Wed Jan 8 21:04:12 2014 (r260457) +++ head/sys/netinet6/in6_src.c Wed Jan 8 22:13:32 2014 (r260458) @@ -995,7 +995,6 @@ in6_src_sysctl(SYSCTL_HANDLER_ARGS) int in6_src_ioctl(u_long cmd, caddr_t data) { - int i; struct in6_addrpolicy ent0; if (cmd != SIOCAADDRCTL_POLICY && cmd != SIOCDADDRCTL_POLICY) @@ -1009,10 +1008,7 @@ in6_src_ioctl(u_long cmd, caddr_t data) if (in6_mask2len(&ent0.addrmask.sin6_addr, NULL) < 0) return (EINVAL); /* clear trailing garbages (if any) of the prefix address. */ - for (i = 0; i < 4; i++) { - ent0.addr.sin6_addr.s6_addr32[i] &= - ent0.addrmask.sin6_addr.s6_addr32[i]; - } + IN6_MASK_ADDR(&ent0.addr.sin6_addr, &ent0.addrmask.sin6_addr); ent0.use = 0; switch (cmd) { Modified: head/sys/netinet6/in6_var.h ============================================================================== --- head/sys/netinet6/in6_var.h Wed Jan 8 21:04:12 2014 (r260457) +++ head/sys/netinet6/in6_var.h Wed Jan 8 22:13:32 2014 (r260458) @@ -409,6 +409,12 @@ struct in6_rrenumreq { (((d)->s6_addr32[1] ^ (a)->s6_addr32[1]) & (m)->s6_addr32[1]) == 0 && \ (((d)->s6_addr32[2] ^ (a)->s6_addr32[2]) & (m)->s6_addr32[2]) == 0 && \ (((d)->s6_addr32[3] ^ (a)->s6_addr32[3]) & (m)->s6_addr32[3]) == 0 ) +#define IN6_MASK_ADDR(a, m) do { \ + (a)->s6_addr32[0] &= (m)->s6_addr32[0]; \ + (a)->s6_addr32[1] &= (m)->s6_addr32[1]; \ + (a)->s6_addr32[2] &= (m)->s6_addr32[2]; \ + (a)->s6_addr32[3] &= (m)->s6_addr32[3]; \ +} while (0) #endif #define SIOCSIFADDR_IN6 _IOW('i', 12, struct in6_ifreq) Modified: head/sys/netinet6/nd6_rtr.c ============================================================================== --- head/sys/netinet6/nd6_rtr.c Wed Jan 8 21:04:12 2014 (r260457) +++ head/sys/netinet6/nd6_rtr.c Wed Jan 8 22:13:32 2014 (r260458) @@ -858,7 +858,6 @@ nd6_prelist_add(struct nd_prefixctl *pr, { struct nd_prefix *new = NULL; int error = 0; - int i; char ip6buf[INET6_ADDRSTRLEN]; new = (struct nd_prefix *)malloc(sizeof(*new), M_IP6NDP, M_NOWAIT); @@ -883,9 +882,7 @@ nd6_prelist_add(struct nd_prefixctl *pr, LIST_INIT(&new->ndpr_advrtrs); in6_prefixlen2mask(&new->ndpr_mask, new->ndpr_plen); /* make prefix in the canonical form */ - for (i = 0; i < 4; i++) - new->ndpr_prefix.sin6_addr.s6_addr32[i] &= - new->ndpr_mask.s6_addr32[i]; + IN6_MASK_ADDR(&new->ndpr_prefix.sin6_addr, &new->ndpr_mask); /* link ndpr_entry to nd_prefix list */ LIST_INSERT_HEAD(&V_nd_prefix, new, ndpr_entry); @@ -1843,10 +1840,7 @@ in6_ifadd(struct nd_prefixctl *pr, int m ifra.ifra_addr.sin6_len = sizeof(struct sockaddr_in6); /* prefix */ ifra.ifra_addr.sin6_addr = pr->ndpr_prefix.sin6_addr; - ifra.ifra_addr.sin6_addr.s6_addr32[0] &= mask.s6_addr32[0]; - ifra.ifra_addr.sin6_addr.s6_addr32[1] &= mask.s6_addr32[1]; - ifra.ifra_addr.sin6_addr.s6_addr32[2] &= mask.s6_addr32[2]; - ifra.ifra_addr.sin6_addr.s6_addr32[3] &= mask.s6_addr32[3]; + IN6_MASK_ADDR(&ifra.ifra_addr.sin6_addr, &mask); /* interface ID */ ifra.ifra_addr.sin6_addr.s6_addr32[0] |= @@ -1923,7 +1917,7 @@ in6_tmpifadd(const struct in6_ifaddr *ia struct ifnet *ifp = ia0->ia_ifa.ifa_ifp; struct in6_ifaddr *newia, *ia; struct in6_aliasreq ifra; - int i, error; + int error; int trylimit = 3; /* XXX: adhoc value */ int updateflags; u_int32_t randid[2]; @@ -1935,10 +1929,8 @@ in6_tmpifadd(const struct in6_ifaddr *ia /* copy prefix mask */ ifra.ifra_prefixmask = ia0->ia_prefixmask; /* clear the old IFID */ - for (i = 0; i < 4; i++) { - ifra.ifra_addr.sin6_addr.s6_addr32[i] &= - ifra.ifra_prefixmask.sin6_addr.s6_addr32[i]; - } + IN6_MASK_ADDR(&ifra.ifra_addr.sin6_addr, + &ifra.ifra_prefixmask.sin6_addr); again: if (in6_get_tmpifid(ifp, (u_int8_t *)randid, From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 22:37:18 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D85645D3; Wed, 8 Jan 2014 22:37:18 +0000 (UTC) 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 C5A2918CB; Wed, 8 Jan 2014 22:37: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 s08MbIbR000704; Wed, 8 Jan 2014 22:37:18 GMT (envelope-from peter@svn.freebsd.org) Received: (from peter@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08MbIgN000703; Wed, 8 Jan 2014 22:37:18 GMT (envelope-from peter@svn.freebsd.org) Message-Id: <201401082237.s08MbIgN000703@svn.freebsd.org> From: Peter Wemm Date: Wed, 8 Jan 2014 22:37:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260459 - head/sys/rpc X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 22:37:18 -0000 Author: peter Date: Wed Jan 8 22:37:18 2014 New Revision: 260459 URL: http://svnweb.freebsd.org/changeset/base/260459 Log: Don't expose svc_loss_reg / _unreg to userland as they're kernel-only additions from r260229 and the SVCPOOL type doesn't exist in userland. Modified: head/sys/rpc/svc.h Modified: head/sys/rpc/svc.h ============================================================================== --- head/sys/rpc/svc.h Wed Jan 8 22:13:32 2014 (r260458) +++ head/sys/rpc/svc.h Wed Jan 8 22:37:18 2014 (r260459) @@ -516,6 +516,7 @@ extern void svc_unreg(const rpcprog_t, c #endif __END_DECLS +#ifdef _KERNEL /* * Service connection loss registration * @@ -539,6 +540,7 @@ __END_DECLS __BEGIN_DECLS extern void svc_loss_unreg(SVCPOOL *, void (*)(SVCXPRT *)); __END_DECLS +#endif /* * Transport registration. From owner-svn-src-all@FreeBSD.ORG Wed Jan 8 23:09:03 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3AC92E30; Wed, 8 Jan 2014 23:09:03 +0000 (UTC) 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 268FD1AD0; Wed, 8 Jan 2014 23:09: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 s08N93h9012378; Wed, 8 Jan 2014 23:09:03 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s08N92Ij012375; Wed, 8 Jan 2014 23:09:02 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401082309.s08N92Ij012375@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Wed, 8 Jan 2014 23:09:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260460 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Jan 2014 23:09:03 -0000 Author: melifaro Date: Wed Jan 8 23:09:02 2014 New Revision: 260460 URL: http://svnweb.freebsd.org/changeset/base/260460 Log: Constanly use RT_ALL_FIBS everywhere instead of -1. MFC after: 2 weeks Modified: head/sys/net/route.c head/sys/net/route.h head/sys/net/rtsock.c Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Wed Jan 8 22:37:18 2014 (r260459) +++ head/sys/net/route.c Wed Jan 8 23:09:02 2014 (r260460) @@ -1498,7 +1498,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int fibnum = RT_DEFAULT_FIB; break; } - if (fibnum == -1) { + if (fibnum == RT_ALL_FIBS) { if (rt_add_addr_allfibs == 0 && cmd == (int)RTM_ADD) { startfib = endfib = curthread->td_proc->p_fibnum; } else { @@ -1702,7 +1702,7 @@ rtinit1(struct ifaddr *ifa, int cmd, int int rtinit_fib(struct ifaddr *ifa, int cmd, int flags) { - return (rtinit1(ifa, cmd, flags, -1)); + return (rtinit1(ifa, cmd, flags, RT_ALL_FIBS)); } #endif @@ -1726,7 +1726,7 @@ rtinit(struct ifaddr *ifa, int cmd, int case AF_INET6: case AF_INET: /* We do support multiple FIBs. */ - fib = -1; + fib = RT_ALL_FIBS; break; } return (rtinit1(ifa, cmd, flags, fib)); Modified: head/sys/net/route.h ============================================================================== --- head/sys/net/route.h Wed Jan 8 22:37:18 2014 (r260459) +++ head/sys/net/route.h Wed Jan 8 23:09:02 2014 (r260460) @@ -92,7 +92,8 @@ struct rt_metrics { #define RTTTOPRHZ(r) ((r) / (RTM_RTTUNIT / PR_SLOWHZ)) #define RT_DEFAULT_FIB 0 /* Explicitly mark fib=0 restricted cases */ -extern u_int rt_numfibs; /* number fo usable routing tables */ +#define RT_ALL_FIBS -1 /* Announce event for every fib */ +extern u_int rt_numfibs; /* number of usable routing tables */ /* * XXX kernel function pointer `rt_output' is visible to applications. */ Modified: head/sys/net/rtsock.c ============================================================================== --- head/sys/net/rtsock.c Wed Jan 8 22:37:18 2014 (r260459) +++ head/sys/net/rtsock.c Wed Jan 8 23:09:02 2014 (r260460) @@ -160,7 +160,6 @@ int (*carp_get_vhid_p)(struct ifaddr *); * notification to a socket bound to a particular FIB. */ #define RTS_FILTER_FIB M_PROTO8 -#define RTS_ALLFIBS -1 static struct { int ip_count; /* attached w/ AF_INET */ @@ -1288,7 +1287,7 @@ rt_missmsg_fib(int type, struct rt_addri if (m == NULL) return; - if (fibnum != RTS_ALLFIBS) { + if (fibnum != RT_ALL_FIBS) { KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: fibnum out " "of range 0 <= %d < %d", __func__, fibnum, rt_numfibs)); M_SETFIB(m, fibnum); @@ -1306,7 +1305,7 @@ void rt_missmsg(int type, struct rt_addrinfo *rtinfo, int flags, int error) { - rt_missmsg_fib(type, rtinfo, flags, error, RTS_ALLFIBS); + rt_missmsg_fib(type, rtinfo, flags, error, RT_ALL_FIBS); } /* @@ -1402,7 +1401,7 @@ rt_newaddrmsg_fib(int cmd, struct ifaddr rtm->rtm_errno = error; rtm->rtm_addrs = info.rti_addrs; } - if (fibnum != RTS_ALLFIBS) { + if (fibnum != RT_ALL_FIBS) { KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " "fibnum out of range 0 <= %d < %d", __func__, fibnum, rt_numfibs)); @@ -1417,7 +1416,7 @@ void rt_newaddrmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt) { - rt_newaddrmsg_fib(cmd, ifa, error, rt, RTS_ALLFIBS); + rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS); } /* @@ -1930,7 +1929,7 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS) if (namelen == 3) fib = req->td->td_proc->p_fibnum; else if (namelen == 4) - fib = (name[3] == -1) ? + fib = (name[3] == RT_ALL_FIBS) ? req->td->td_proc->p_fibnum : name[3]; else return ((namelen < 3) ? EISDIR : ENOTDIR); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 00:11:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id F2D10E67; Thu, 9 Jan 2014 00:11:15 +0000 (UTC) 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 D34021028; Thu, 9 Jan 2014 00:11:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s090BF5e037181; Thu, 9 Jan 2014 00:11:15 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s090BFgr037177; Thu, 9 Jan 2014 00:11:15 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401090011.s090BFgr037177@svn.freebsd.org> From: Adrian Chadd Date: Thu, 9 Jan 2014 00:11:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260461 - in head/sys: compat/freebsd32 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 00:11:16 -0000 Author: adrian Date: Thu Jan 9 00:11:14 2014 New Revision: 260461 URL: http://svnweb.freebsd.org/changeset/base/260461 Log: Refactor out the common sendfile code from the do_sendfile() and the compat32 sendfile syscall. Sponsored by: Netflix, Inc. Added: head/sys/sys/sf_base.h (contents, props changed) Modified: head/sys/compat/freebsd32/freebsd32_misc.c head/sys/kern/uipc_syscalls.c Modified: head/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- head/sys/compat/freebsd32/freebsd32_misc.c Wed Jan 8 23:09:02 2014 (r260460) +++ head/sys/compat/freebsd32/freebsd32_misc.c Thu Jan 9 00:11:14 2014 (r260461) @@ -86,6 +86,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #ifdef INET #include @@ -1651,8 +1652,6 @@ freebsd32_do_sendfile(struct thread *td, struct sf_hdtr hdtr; struct uio *hdr_uio, *trl_uio; struct iovec32 *iov32; - struct file *fp; - cap_rights_t rights; off_t offset; int error; off_t sbytes; @@ -1690,29 +1689,9 @@ freebsd32_do_sendfile(struct thread *td, } } - AUDIT_ARG_FD(uap->fd); + error = _do_sendfile(td, uap->fd, uap->s, uap->flags, compat, + offset, uap->nbytes, &sbytes, hdr_uio, trl_uio); - if ((error = fget_read(td, uap->fd, - cap_rights_init(&rights, CAP_PREAD), &fp)) != 0) { - goto out; - } - - /* - * If we need to wait for completion, initialise the sfsync - * state here. - */ - if (uap->flags & SF_SYNC) - sfs = sf_sync_alloc(uap->flags & SF_SYNC); - - error = fo_sendfile(fp, uap->s, hdr_uio, trl_uio, offset, - uap->nbytes, &sbytes, uap->flags, compat ? SFK_COMPAT : 0, - sfs, td); - if (sfs != NULL) { - sf_sync_syscall_wait(sfs); - sf_sync_free(sfs); - } - - fdrop(fp, td); if (uap->sbytes != NULL) copyout(&sbytes, uap->sbytes, sizeof(off_t)); Modified: head/sys/kern/uipc_syscalls.c ============================================================================== --- head/sys/kern/uipc_syscalls.c Wed Jan 8 23:09:02 2014 (r260460) +++ head/sys/kern/uipc_syscalls.c Thu Jan 9 00:11:14 2014 (r260461) @@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1988,51 +1989,23 @@ sys_sendfile(struct thread *td, struct s return (do_sendfile(td, uap, 0)); } -static int -do_sendfile(struct thread *td, struct sendfile_args *uap, int compat) +int +_do_sendfile(struct thread *td, int src_fd, int sock_fd, int flags, + int compat, off_t offset, size_t nbytes, off_t *sbytes, + struct uio *hdr_uio, struct uio *trl_uio) { - struct sf_hdtr hdtr; - struct uio *hdr_uio, *trl_uio; - struct file *fp; cap_rights_t rights; + struct sendfile_sync *sfs = NULL; + struct file *fp; int error; - off_t sbytes; - struct sendfile_sync *sfs; - /* - * File offset must be positive. If it goes beyond EOF - * we send only the header/trailer and no payload data. - */ - if (uap->offset < 0) - return (EINVAL); - - hdr_uio = trl_uio = NULL; - sfs = NULL; - - if (uap->hdtr != NULL) { - error = copyin(uap->hdtr, &hdtr, sizeof(hdtr)); - if (error != 0) - goto out; - if (hdtr.headers != NULL) { - error = copyinuio(hdtr.headers, hdtr.hdr_cnt, &hdr_uio); - if (error != 0) - goto out; - } - if (hdtr.trailers != NULL) { - error = copyinuio(hdtr.trailers, hdtr.trl_cnt, &trl_uio); - if (error != 0) - goto out; - - } - } - - AUDIT_ARG_FD(uap->fd); + AUDIT_ARG_FD(src_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, + if ((error = fget_read(td, src_fd, cap_rights_init(&rights, CAP_PREAD), &fp)) != 0) { goto out; } @@ -2041,11 +2014,11 @@ do_sendfile(struct thread *td, struct se * If we need to wait for completion, initialise the sfsync * state here. */ - if (uap->flags & SF_SYNC) - sfs = sf_sync_alloc(uap->flags & SF_SYNC); + if (flags & SF_SYNC) + sfs = sf_sync_alloc(flags & SF_SYNC); - error = fo_sendfile(fp, uap->s, hdr_uio, trl_uio, uap->offset, - uap->nbytes, &sbytes, uap->flags, compat ? SFK_COMPAT : 0, sfs, td); + error = fo_sendfile(fp, sock_fd, hdr_uio, trl_uio, offset, + nbytes, sbytes, flags, compat ? SFK_COMPAT : 0, sfs, td); /* * If appropriate, do the wait and free here. @@ -2062,6 +2035,46 @@ do_sendfile(struct thread *td, struct se */ fdrop(fp, td); +out: + return (error); +} + +static int +do_sendfile(struct thread *td, struct sendfile_args *uap, int compat) +{ + struct sf_hdtr hdtr; + struct uio *hdr_uio, *trl_uio; + int error; + off_t sbytes; + + /* + * File offset must be positive. If it goes beyond EOF + * we send only the header/trailer and no payload data. + */ + if (uap->offset < 0) + return (EINVAL); + + hdr_uio = trl_uio = NULL; + + if (uap->hdtr != NULL) { + error = copyin(uap->hdtr, &hdtr, sizeof(hdtr)); + if (error != 0) + goto out; + if (hdtr.headers != NULL) { + error = copyinuio(hdtr.headers, hdtr.hdr_cnt, &hdr_uio); + if (error != 0) + goto out; + } + if (hdtr.trailers != NULL) { + error = copyinuio(hdtr.trailers, hdtr.trl_cnt, &trl_uio); + if (error != 0) + goto out; + } + } + + error = _do_sendfile(td, uap->fd, uap->s, uap->flags, compat, + uap->offset, uap->nbytes, &sbytes, hdr_uio, trl_uio); + if (uap->sbytes != NULL) { copyout(&sbytes, uap->sbytes, sizeof(off_t)); } Added: head/sys/sys/sf_base.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/sys/sf_base.h Thu Jan 9 00:11:14 2014 (r260461) @@ -0,0 +1,36 @@ +/*- + * Copyright (c) 2013 Adrian Chadd + * 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 _SYS_SF_BASE_H_ +#define _SYS_SF_BASE_H_ + +extern int _do_sendfile(struct thread *, int src_fd, int sock_fd, int flags, + int compat, off_t offset, size_t nbytes, off_t *sbytes, + struct uio *hdr_uio, struct uio *trl_uio); + +#endif /* _SYS_SF_BASE_H_ */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 00:13:51 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AB3B316C; Thu, 9 Jan 2014 00:13:51 +0000 (UTC) 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 15F971070; Thu, 9 Jan 2014 00:13:50 +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 s090DfmE089349 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 9 Jan 2014 04:13:41 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s090DfE0089348; Thu, 9 Jan 2014 04:13:41 +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, 9 Jan 2014 04:13:41 +0400 From: Gleb Smirnoff To: Bryan Venteicher Subject: Re: svn commit: r260224 - head/sys/netinet Message-ID: <20140109001341.GK71033@FreeBSD.org> References: <201401031103.s03B3CAf013123@svn.freebsd.org> <20140106065314.GB1372@michelle.cdnetworks.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.22 (2013-10-16) Cc: pyunyh@gmail.com, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 00:13:51 -0000 Bryan, On Mon, Jan 06, 2014 at 09:09:45AM -0600, Bryan Venteicher wrote: B> > On Fri, Jan 03, 2014 at 11:03:12AM +0000, Gleb Smirnoff wrote: B> > > Author: glebius B> > > Date: Fri Jan 3 11:03:12 2014 B> > > New Revision: 260224 B> > > URL: http://svnweb.freebsd.org/changeset/base/260224 B> > > B> > > Log: B> > > Make failure of ifpromisc() a non-fatal error. This makes it possible B> > to B> > > run carp(4) on vtnet(4). B> > > B> > B> > vtnet(4) is the only device that doesn't correctly support B> > promiscuous mode? I don't know details of vtnet(4) but it seems B> > it's not hard to mimic promiscuous mode. I'm not sure why the B> > driver returns ENOTSUP to user land given that vtnet(4) defaults B> > to promiscuous mode for backwards compatibility. It also does B> > not handle multicast filter configuration when VTNET_FLAG_CTRL_RX B> > flag is not set. If vtnet(4) does not support multicast filter, B> > it shouldn't announce IFF_MULTICAST. I wonder how vtnet(4) can work B> > with carp(4) given that its multicast handling is ignored. B> > B> B> I've talked to Gleb off-list about this. I intent to remove the default to B> promiscuous mode hack. Previous versions of the specification had a B> footnote about this, but it has since been removed. Note that both promisc B> and multicast likely require some host configuration on the B> tap/bridge/physical interfaces as well. B> B> I'll look at the multicast handling. If carp(4) already works with bhyve, B> we might want to add a minimalist control virtqueue support to bhyve. If you decide that vtnet(4) should provide promiscuous mode (or pretend to), and implement that, and carp(4) runs okay, then feel free to back out r260224. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 00:26:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 72F10714; Thu, 9 Jan 2014 00:26:42 +0000 (UTC) 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 D325B1169; Thu, 9 Jan 2014 00:26:41 +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 s090Qd9j089400 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 9 Jan 2014 04:26:39 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s090Qdcv089399; Thu, 9 Jan 2014 04:26:39 +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, 9 Jan 2014 04:26:39 +0400 From: Gleb Smirnoff To: Eric Davis Subject: Re: svn commit: r260415 - head/sys/dev/bxe Message-ID: <20140109002639.GL71033@FreeBSD.org> References: <201401072226.s07MQKqh026817@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401072226.s07MQKqh026817@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 00:26:42 -0000 Eric, On Tue, Jan 07, 2014 at 10:26:20PM +0000, Eric Davis wrote: E> Author: edavis E> Date: Tue Jan 7 22:26:20 2014 E> New Revision: 260415 E> URL: http://svnweb.freebsd.org/changeset/base/260415 E> E> Log: E> defragment mbuf chains longer than hw segment limit before dropping E> E> Approved by: davidch E> E> Modified: E> head/sys/dev/bxe/bxe.c E> head/sys/dev/bxe/ecore_hsi.h E> E> Modified: head/sys/dev/bxe/bxe.c E> ============================================================================== E> --- head/sys/dev/bxe/bxe.c Tue Jan 7 21:25:18 2014 (r260414) E> +++ head/sys/dev/bxe/bxe.c Tue Jan 7 22:26:20 2014 (r260415) E> @@ -34,7 +34,7 @@ E> #include E> __FBSDID("$FreeBSD$"); E> E> -#define BXE_DRIVER_VERSION "1.78.76" E> +#define BXE_DRIVER_VERSION "1.78.77" E> E> #include "bxe.h" E> #include "ecore_sp.h" E> @@ -5501,10 +5501,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st E> fp->eth_q_stats.tx_window_violation_std++; E> } E> E> - /* XXX I don't like this, change to double copy packet */ E> + /* lets try to defragment this mbuf */ E> + fp->eth_q_stats.mbuf_defrag_attempts++; E> E> - /* no sense trying to defrag again, just drop the frame */ E> - rc = ENODEV; E> + m0 = m_defrag(*m_head, M_DONTWAIT); It is already more than a decade as M_DONTWAIT shouldn't be used. Generic malloc(9) flag of M_NOWAIT should be used. I wonder, why did you use it in new code? Is that just through habit, or do we still got somewhere outdated piece of documentation? E> + if (m0 == NULL) { E> + fp->eth_q_stats.mbuf_defrag_failures++; E> + /* Ugh, just drop the frame... :( */ E> + rc = ENOBUFS; E> + } else { E> + /* defrag successful, try mapping again */ E> + *m_head = m0; E> + error = bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, E> + tx_buf->m_map, m0, E> + segs, &nsegs, BUS_DMA_NOWAIT); E> + if (error) { E> + fp->eth_q_stats.tx_dma_mapping_failure++; E> + /* No sense in trying to defrag/copy chain, drop it. :( */ E> + rc = error; E> + } E> + E> + /* if the chain is still too long then drop it */ E> + if (__predict_false(nsegs > 12)) { E> + rc = ENODEV; E> + } E> + } E> } -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 00:27:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7C19A886; Thu, 9 Jan 2014 00:27:42 +0000 (UTC) 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 F00CF1173; Thu, 9 Jan 2014 00:27:41 +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 s090Re2g089416 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 9 Jan 2014 04:27:40 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s090RePl089415; Thu, 9 Jan 2014 04:27:40 +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, 9 Jan 2014 04:27:40 +0400 From: Gleb Smirnoff To: Eric Davis Subject: Re: svn commit: r260416 - stable/10/sys/dev/bxe Message-ID: <20140109002740.GM71033@FreeBSD.org> References: <201401072259.s07MxX35038770@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401072259.s07MxX35038770@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 00:27:42 -0000 Eric, On Tue, Jan 07, 2014 at 10:59:33PM +0000, Eric Davis wrote: E> Author: edavis E> Date: Tue Jan 7 22:59:33 2014 E> New Revision: 260416 E> URL: http://svnweb.freebsd.org/changeset/base/260416 E> E> Log: E> Merged r260415 from head. E> E> Approved by: davidch We have policy in FreeBSD that minimum period between initial commit and MFC is at least 3 days. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 00:56:43 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3C6CEEFD; Thu, 9 Jan 2014 00:56:43 +0000 (UTC) Received: from mail-gw3-out.broadcom.com (mail-gw3-out.broadcom.com [216.31.210.64]) by mx1.freebsd.org (Postfix) with ESMTP id EEF091375; Thu, 9 Jan 2014 00:56:42 +0000 (UTC) X-IronPort-AV: E=Sophos;i="4.95,627,1384329600"; d="scan'208";a="8111639" Received: from irvexchcas08.broadcom.com (HELO IRVEXCHCAS08.corp.ad.broadcom.com) ([10.9.208.57]) by mail-gw3-out.broadcom.com with ESMTP; 08 Jan 2014 17:01:14 -0800 Received: from IRVEXCHSMTP2.corp.ad.broadcom.com (10.9.207.52) by IRVEXCHCAS08.corp.ad.broadcom.com (10.9.208.57) with Microsoft SMTP Server (TLS) id 14.1.438.0; Wed, 8 Jan 2014 16:56:35 -0800 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP2.corp.ad.broadcom.com (10.9.207.52) with Microsoft SMTP Server id 14.1.438.0; Wed, 8 Jan 2014 16:56:35 -0800 Received: from localhost (dhcp-10-12-137-51.irv.broadcom.com [10.12.137.51]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id C50A1246A7; Wed, 8 Jan 2014 16:56:35 -0800 (PST) Date: Wed, 8 Jan 2014 16:56:35 -0800 From: Eric Davis To: Gleb Smirnoff Subject: Re: svn commit: r260416 - stable/10/sys/dev/bxe Message-ID: <20140109005635.GA8780@broadcom.com> References: <201401072259.s07MxX35038770@svn.freebsd.org> <20140109002740.GM71033@FreeBSD.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="PEIAKu/WMn1b1Hv9" Content-Disposition: inline In-Reply-To: <20140109002740.GM71033@FreeBSD.org> User-Agent: Mutt/1.5.21 (2012-12-30) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-10@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: Eric Davis List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 00:56:43 -0000 --PEIAKu/WMn1b1Hv9 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jan 09, 2014 at 04:27:40AM +0400, Gleb Smirnoff wrote: > Eric, >=20 > On Tue, Jan 07, 2014 at 10:59:33PM +0000, Eric Davis wrote: > E> Author: edavis > E> Date: Tue Jan 7 22:59:33 2014 > E> New Revision: 260416 > E> URL: http://svnweb.freebsd.org/changeset/base/260416 > E>=20 > E> Log: > E> Merged r260415 from head. > E> =20 > E> Approved by: davidch >=20 > We have policy in FreeBSD that minimum period between initial > commit and MFC is at least 3 days. >=20 > --=20 > Totus tuus, Glebius. Hi Gleb, Yes, I know that now after I've been told by multiple people. :-) Thanks, - e --PEIAKu/WMn1b1Hv9 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAEBAgAGBQJSzfPDAAoJEPUt8GDsVYPdyD0IAIKkpe2kSq9+WcTYBLG8y8Ox bWa8718snJ1Zd4pY6YI6vZBlirLBEj3166XyT7FrNi2fnxoYj3eL5xDb54aj4k99 6eryk+Vh6bvnxjvwdB9WgqhSsi/78dpM46GDS1f29apRploqMpCpyd3xqIC9100Q PoJyKnhmAl3hS73FC+3J6BxxtTu+YA8iuWn9QOimZZogAWDCT8ayzU3kmJw6ew1Z 5LkrFkHighK6JAyJDjr/wEMh657HFsff9VvWoGOlUJPCuBTshh8SJ3PPZGPNDlK9 W2kJspUG2wb3wB7oD+b0KwWalnuvDs5mFijG46MkeCujzmeB+NaKClMgwuOxZDY= =bP8f -----END PGP SIGNATURE----- --PEIAKu/WMn1b1Hv9-- From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 00:59:04 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 351F8104; Thu, 9 Jan 2014 00:59:04 +0000 (UTC) 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 210861386; Thu, 9 Jan 2014 00:59: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 s090x3lh054827; Thu, 9 Jan 2014 00:59:03 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s090x3vX054826; Thu, 9 Jan 2014 00:59:03 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201401090059.s090x3vX054826@svn.freebsd.org> From: Gleb Smirnoff Date: Thu, 9 Jan 2014 00:59:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260462 - head/sys/dev/netmap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 00:59:04 -0000 Author: glebius Date: Thu Jan 9 00:59:03 2014 New Revision: 260462 URL: http://svnweb.freebsd.org/changeset/base/260462 Log: Fix build with VIMAGE. Modified: head/sys/dev/netmap/netmap.c Modified: head/sys/dev/netmap/netmap.c ============================================================================== --- head/sys/dev/netmap/netmap.c Thu Jan 9 00:11:14 2014 (r260461) +++ head/sys/dev/netmap/netmap.c Thu Jan 9 00:59:03 2014 (r260462) @@ -145,6 +145,8 @@ ports attached to the switch) #include /* sockaddrs */ #include #include +#include +#include #include #include #include /* BIOCIMMEDIATE */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 01:04:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id EA20E2D6; Thu, 9 Jan 2014 01:04:40 +0000 (UTC) Received: from mail-gw1-out.broadcom.com (mail-gw1-out.broadcom.com [216.31.210.62]) by mx1.freebsd.org (Postfix) with ESMTP id B253B1450; Thu, 9 Jan 2014 01:04:40 +0000 (UTC) X-IronPort-AV: E=Sophos;i="4.95,627,1384329600"; d="scan'208";a="8477598" Received: from irvexchcas06.broadcom.com (HELO IRVEXCHCAS06.corp.ad.broadcom.com) ([10.9.208.53]) by mail-gw1-out.broadcom.com with ESMTP; 08 Jan 2014 17:16:24 -0800 Received: from IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) by IRVEXCHCAS06.corp.ad.broadcom.com (10.9.208.53) with Microsoft SMTP Server (TLS) id 14.1.438.0; Wed, 8 Jan 2014 17:04:34 -0800 Received: from mail-irva-13.broadcom.com (10.10.10.20) by IRVEXCHSMTP1.corp.ad.broadcom.com (10.9.207.51) with Microsoft SMTP Server id 14.1.438.0; Wed, 8 Jan 2014 17:04:33 -0800 Received: from localhost (dhcp-10-12-137-51.irv.broadcom.com [10.12.137.51]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id 0A043246C4; Wed, 8 Jan 2014 17:04:31 -0800 (PST) Date: Wed, 8 Jan 2014 17:04:31 -0800 From: Eric Davis To: Gleb Smirnoff Subject: Re: svn commit: r260415 - head/sys/dev/bxe Message-ID: <20140109010430.GB8780@broadcom.com> References: <201401072226.s07MQKqh026817@svn.freebsd.org> <20140109002639.GL71033@FreeBSD.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="FkmkrVfFsRoUs1wW" Content-Disposition: inline In-Reply-To: <20140109002639.GL71033@FreeBSD.org> User-Agent: Mutt/1.5.21 (2012-12-30) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list Reply-To: Eric Davis List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 01:04:41 -0000 --FkmkrVfFsRoUs1wW Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Jan 09, 2014 at 04:26:39AM +0400, Gleb Smirnoff wrote: > Eric, >=20 > On Tue, Jan 07, 2014 at 10:26:20PM +0000, Eric Davis wrote: > E> Author: edavis > E> Date: Tue Jan 7 22:26:20 2014 > E> New Revision: 260415 > E> URL: http://svnweb.freebsd.org/changeset/base/260415 > E>=20 > E> Log: > E> defragment mbuf chains longer than hw segment limit before dropping > E> =20 > E> Approved by: davidch > E>=20 > E> Modified: > E> head/sys/dev/bxe/bxe.c > E> head/sys/dev/bxe/ecore_hsi.h > E>=20 > E> Modified: head/sys/dev/bxe/bxe.c > E> =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 > E> --- head/sys/dev/bxe/bxe.c Tue Jan 7 21:25:18 2014 (r260414) > E> +++ head/sys/dev/bxe/bxe.c Tue Jan 7 22:26:20 2014 (r260415) > E> @@ -34,7 +34,7 @@ > E> #include > E> __FBSDID("$FreeBSD$"); > E> =20 > E> -#define BXE_DRIVER_VERSION "1.78.76" > E> +#define BXE_DRIVER_VERSION "1.78.77" > E> =20 > E> #include "bxe.h" > E> #include "ecore_sp.h" > E> @@ -5501,10 +5501,31 @@ bxe_tx_encap(struct bxe_fastpath *fp, st > E> fp->eth_q_stats.tx_window_violation_std++; > E> } > E> =20 > E> - /* XXX I don't like this, change to double copy packet */ > E> + /* lets try to defragment this mbuf */ > E> + fp->eth_q_stats.mbuf_defrag_attempts++; > E> =20 > E> - /* no sense trying to defrag again, just drop the frame */ > E> - rc =3D ENODEV; > E> + m0 =3D m_defrag(*m_head, M_DONTWAIT); >=20 > It is already more than a decade as M_DONTWAIT shouldn't be used. Generic > malloc(9) flag of M_NOWAIT should be used. >=20 > I wonder, why did you use it in new code? Is that just through habit, > or do we still got somewhere outdated piece of documentation? I did not know that. The new bxe driver did leverage some code from the older one and this block is definitely a copy-paste-and-tweak. I'll be sure to update those defines and make sure only M_WAITOK and M_NOWAIT is used by the driver. FWIW, I see there are a couple other drivers under head/sys/dev that are still using M_DONTWAIT as well. - e > E> + if (m0 =3D=3D NULL) { > E> + fp->eth_q_stats.mbuf_defrag_failures++; > E> + /* Ugh, just drop the frame... :( */ > E> + rc =3D ENOBUFS; > E> + } else { > E> + /* defrag successful, try mapping again */ > E> + *m_head =3D m0; > E> + error =3D bus_dmamap_load_mbuf_sg(fp->tx_mbuf_tag, > E> + tx_buf->m_map, m0, > E> + segs, &nsegs, BUS_DMA_NOW= AIT); > E> + if (error) { > E> + fp->eth_q_stats.tx_dma_mapping_failure++; > E> + /* No sense in trying to defrag/copy chain, drop it. = :( */ > E> + rc =3D error; > E> + } > E> + > E> + /* if the chain is still too long then drop it */ > E> + if (__predict_false(nsegs > 12)) { > E> + rc =3D ENODEV; > E> + } > E> + } > E> } >=20 > --=20 > Totus tuus, Glebius. --FkmkrVfFsRoUs1wW Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQEcBAEBAgAGBQJSzfWeAAoJEPUt8GDsVYPdxYIIAMcoGuF47LRPxLg03Ah2z6tD gXfKSOpRZsPBEZ53jzVFD9KSxJsA/+9QWT7WMrCVlClzfMFFVRv7eLvVstPC5vd1 vY1J7n1PqdqZVJPE5xf1sP4RhRRFROZrA3mRAG+Y4PnQF9dZIOmq+EVB4AzrajkH m/QBpTjl3TPwUq1dCRe4XxTJeVkx4k1edHLoUl6bgWBBxQe3zShTh5lFYu0mn+0t 01sjqTwxynWX9fkS8RCs9gXNLWSPss3KbC1pVDVEA6AyyYNd6ZHEXB72DlqjKLgU 15jExgxvXlH5l5EklcfxT5m+Eunh2VOlhdsE0+v2np+RSTNzaB0mMIGKBfM42ug= =0lVb -----END PGP SIGNATURE----- --FkmkrVfFsRoUs1wW-- From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 01:19:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 64E86A76; Thu, 9 Jan 2014 01:19:27 +0000 (UTC) Received: from mail-wi0-x236.google.com (mail-wi0-x236.google.com [IPv6:2a00:1450:400c:c05::236]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8020E1583; Thu, 9 Jan 2014 01:19:26 +0000 (UTC) Received: by mail-wi0-f182.google.com with SMTP id en1so2852492wid.15 for ; Wed, 08 Jan 2014 17:19:24 -0800 (PST) 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=CSuVxaP15tiEcfeAvFAdjsyJax92VyDfvUmd7q9oM5o=; b=uPxSAGkszzONXGeP13NSUA502elnyA+5xdLkdaZdBW4FTC27PVO3opgvP2nZH8BbCH c3Dxmf0DlWXEK5OU3TpU6EMlWDgq4nT3VYYukNgyBS0nOJMkFXBcTL3hxhw406kz9wlg zK3Sea1w5EsqrV5gCNe1j8tLEfAkeBZHqVW/bIVeoS8NHEZbeeYL/CoIhtoNfaENbnfC ozbROt+0CSCRw6htkE03ycgiUPENRJeFnPoc7TOCxOdRaNk5NJysQFVsSGS0JZ0YaXG9 VJ7ZSgUjif5kryKstaXp3FkpYtD4qMhLPIdd0v07g0kQf7QDJezTxSlb6sPSHcTQGcBm hcXw== MIME-Version: 1.0 X-Received: by 10.194.10.103 with SMTP id h7mr254923wjb.62.1389230364918; Wed, 08 Jan 2014 17:19:24 -0800 (PST) Sender: zbodek@gmail.com Received: by 10.217.112.65 with HTTP; Wed, 8 Jan 2014 17:19:24 -0800 (PST) In-Reply-To: <201312221751.rBMHpYpj059326@svn.freebsd.org> References: <201312221751.rBMHpYpj059326@svn.freebsd.org> Date: Thu, 9 Jan 2014 02:19:24 +0100 X-Google-Sender-Auth: kILYwNtuCMgBSzTS0fLnD371AdE Message-ID: Subject: Re: svn commit: r259730 - in head: gnu/lib/csu gnu/lib/libgcc gnu/lib/libstdc++ gnu/lib/libsupc++ lib/atf/libatf-c/tests share/mk sys/conf tools/tools/ath/athstats tools/tools/net80211/wlanstats usr.bi... From: Zbigniew Bodek To: Dimitry Andric 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 01:19:27 -0000 2013/12/22 Dimitry Andric : > Author: dim > Date: Sun Dec 22 17:51:33 2013 > New Revision: 259730 > URL: http://svnweb.freebsd.org/changeset/base/259730 > > Log: > To avoid having to explicitly test COMPILER_TYPE for setting > clang-specific or gcc-specific flags, introduce the following new > variables for use in Makefiles: > > CFLAGS.clang > CFLAGS.gcc > CXXFLAGS.clang > CXXFLAGS.gcc > > In bsd.sys.mk, these get appended to the regular CFLAGS or CXXFLAGS for > the right compiler. > > MFC after: 1 week > > Modified: > head/gnu/lib/csu/Makefile > head/gnu/lib/libgcc/Makefile > head/gnu/lib/libstdc++/Makefile > head/gnu/lib/libsupc++/Makefile > head/lib/atf/libatf-c/tests/Makefile > head/share/mk/bsd.sys.mk > head/sys/conf/Makefile.arm > head/tools/tools/ath/athstats/Makefile > head/tools/tools/net80211/wlanstats/Makefile > head/usr.bin/mkcsmapper/Makefile.inc > Hello Dimitry. It appears that this change broke backtrace on ARM. Now only last stack frame can be displayed in bt. However I don't have any fix or suggestion. Best regards zbb From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 01:48:34 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C02FF47B; Thu, 9 Jan 2014 01:48:34 +0000 (UTC) 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 ACCF91795; Thu, 9 Jan 2014 01:48: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 s091mYdR073574; Thu, 9 Jan 2014 01:48:34 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s091mYZx073572; Thu, 9 Jan 2014 01:48:34 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201401090148.s091mYZx073572@svn.freebsd.org> From: Kevin Lo Date: Thu, 9 Jan 2014 01:48:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260463 - head/sys/dev/usb/wlan X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 01:48:34 -0000 Author: kevlo Date: Thu Jan 9 01:48:33 2014 New Revision: 260463 URL: http://svnweb.freebsd.org/changeset/base/260463 Log: Replace deprecated M_DONTWAIT with M_NOWAIT. Modified: head/sys/dev/usb/wlan/if_rsu.c head/sys/dev/usb/wlan/if_urtwn.c Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Thu Jan 9 00:59:03 2014 (r260462) +++ head/sys/dev/usb/wlan/if_rsu.c Thu Jan 9 01:48:33 2014 (r260463) @@ -1145,11 +1145,11 @@ rsu_event_survey(struct rsu_softc *sc, u pktlen = sizeof(*wh) + le32toh(bss->ieslen); if (__predict_false(pktlen > MCLBYTES)) return; - MGETHDR(m, M_DONTWAIT, MT_DATA); + MGETHDR(m, M_NOWAIT, MT_DATA); if (__predict_false(m == NULL)) return; if (pktlen > MHLEN) { - MCLGET(m, M_DONTWAIT); + MCLGET(m, M_NOWAIT); if (!(m->m_flags & M_EXT)) { m_free(m); return; @@ -1358,13 +1358,13 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", pktlen, rate, infosz, *rssi); - MGETHDR(m, M_DONTWAIT, MT_DATA); + MGETHDR(m, M_NOWAIT, MT_DATA); if (__predict_false(m == NULL)) { ifp->if_ierrors++; return NULL; } if (pktlen > MHLEN) { - MCLGET(m, M_DONTWAIT); + MCLGET(m, M_NOWAIT); if (__predict_false(!(m->m_flags & M_EXT))) { ifp->if_ierrors++; m_freem(m); Modified: head/sys/dev/usb/wlan/if_urtwn.c ============================================================================== --- head/sys/dev/usb/wlan/if_urtwn.c Thu Jan 9 00:59:03 2014 (r260462) +++ head/sys/dev/usb/wlan/if_urtwn.c Thu Jan 9 01:48:33 2014 (r260463) @@ -625,7 +625,7 @@ urtwn_rx_frame(struct urtwn_softc *sc, u rssi = URTWN_RSSI(rssi); } - m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR); + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); if (m == NULL) { device_printf(sc->sc_dev, "could not create RX mbuf\n"); return (NULL); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 03:24:37 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 3163D86D; Thu, 9 Jan 2014 03:24:37 +0000 (UTC) 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 1CCFA10E5; Thu, 9 Jan 2014 03:24: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 s093Oa6t013685; Thu, 9 Jan 2014 03:24:36 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s093OaDQ013684; Thu, 9 Jan 2014 03:24:36 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201401090324.s093OaDQ013684@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 9 Jan 2014 03:24:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260464 - stable/10/sys/amd64/amd64 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 03:24:37 -0000 Author: kib Date: Thu Jan 9 03:24:36 2014 New Revision: 260464 URL: http://svnweb.freebsd.org/changeset/base/260464 Log: MFC r260204: Assert that accounting for the pmap resident pages does not underflow. Modified: stable/10/sys/amd64/amd64/pmap.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/amd64/pmap.c ============================================================================== --- stable/10/sys/amd64/amd64/pmap.c Thu Jan 9 01:48:33 2014 (r260463) +++ stable/10/sys/amd64/amd64/pmap.c Thu Jan 9 03:24:36 2014 (r260464) @@ -608,6 +608,9 @@ pmap_resident_count_dec(pmap_t pmap, int { PMAP_LOCK_ASSERT(pmap, MA_OWNED); + KASSERT(pmap->pm_stats.resident_count >= count, + ("pmap %p resident count underflow %ld %d", pmap, + pmap->pm_stats.resident_count, count)); pmap->pm_stats.resident_count -= count; } From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 03:25:08 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9F7BE9A0; Thu, 9 Jan 2014 03:25:08 +0000 (UTC) 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 8B2F210E9; Thu, 9 Jan 2014 03:25: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 s093P8JO013806; Thu, 9 Jan 2014 03:25:08 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s093P89G013805; Thu, 9 Jan 2014 03:25:08 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201401090325.s093P89G013805@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 9 Jan 2014 03:25:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260465 - stable/9/sys/amd64/amd64 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 03:25:08 -0000 Author: kib Date: Thu Jan 9 03:25:08 2014 New Revision: 260465 URL: http://svnweb.freebsd.org/changeset/base/260465 Log: MFC r260204: Assert that accounting for the pmap resident pages does not underflow. Modified: stable/9/sys/amd64/amd64/pmap.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/amd64/amd64/pmap.c ============================================================================== --- stable/9/sys/amd64/amd64/pmap.c Thu Jan 9 03:24:36 2014 (r260464) +++ stable/9/sys/amd64/amd64/pmap.c Thu Jan 9 03:25:08 2014 (r260465) @@ -479,6 +479,9 @@ pmap_resident_count_dec(pmap_t pmap, int { PMAP_LOCK_ASSERT(pmap, MA_OWNED); + KASSERT(pmap->pm_stats.resident_count >= count, + ("pmap %p resident count underflow %ld %d", pmap, + pmap->pm_stats.resident_count, count)); pmap->pm_stats.resident_count -= count; } From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 03:25:57 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 25CCAAD6; Thu, 9 Jan 2014 03:25:57 +0000 (UTC) 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 10C6110EF; Thu, 9 Jan 2014 03:25: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 s093PuA9013927; Thu, 9 Jan 2014 03:25:56 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s093PsiI013913; Thu, 9 Jan 2014 03:25:54 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401090325.s093PsiI013913@svn.freebsd.org> From: Neel Natu Date: Thu, 9 Jan 2014 03:25:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260466 - in head/sys/amd64: include vmm vmm/amd vmm/intel vmm/io X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 03:25:57 -0000 Author: neel Date: Thu Jan 9 03:25:54 2014 New Revision: 260466 URL: http://svnweb.freebsd.org/changeset/base/260466 Log: Don't expose 'vmm_ipinum' as a global. Modified: head/sys/amd64/include/vmm.h head/sys/amd64/vmm/amd/amdv.c head/sys/amd64/vmm/intel/ept.c head/sys/amd64/vmm/intel/ept.h head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/io/vlapic.c head/sys/amd64/vmm/io/vlapic.h head/sys/amd64/vmm/vmm.c head/sys/amd64/vmm/vmm_ipi.c head/sys/amd64/vmm/vmm_ipi.h Modified: head/sys/amd64/include/vmm.h ============================================================================== --- head/sys/amd64/include/vmm.h Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/include/vmm.h Thu Jan 9 03:25:54 2014 (r260466) @@ -47,7 +47,7 @@ struct pmap; enum x2apic_state; -typedef int (*vmm_init_func_t)(void); +typedef int (*vmm_init_func_t)(int ipinum); typedef int (*vmm_cleanup_func_t)(void); typedef void (*vmm_resume_func_t)(void); typedef void * (*vmi_init_func_t)(struct vm *vm, struct pmap *pmap); Modified: head/sys/amd64/vmm/amd/amdv.c ============================================================================== --- head/sys/amd64/vmm/amd/amdv.c Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/amd/amdv.c Thu Jan 9 03:25:54 2014 (r260466) @@ -38,7 +38,7 @@ __FBSDID("$FreeBSD$"); #include "io/iommu.h" static int -amdv_init(void) +amdv_init(int ipinum) { printf("amdv_init: not implemented\n"); Modified: head/sys/amd64/vmm/intel/ept.c ============================================================================== --- head/sys/amd64/vmm/intel/ept.c Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/intel/ept.c Thu Jan 9 03:25:54 2014 (r260466) @@ -77,7 +77,7 @@ SYSCTL_INT(_hw_vmm_ept, OID_AUTO, pmap_f &ept_pmap_flags, 0, NULL); int -ept_init(void) +ept_init(int ipinum) { int use_hw_ad_bits, use_superpages, use_exec_only; uint64_t cap; @@ -99,7 +99,7 @@ ept_init(void) !INVEPT_ALL_TYPES_SUPPORTED(cap)) return (EINVAL); - ept_pmap_flags = vmm_ipinum & PMAP_NESTED_IPIMASK; + ept_pmap_flags = ipinum & PMAP_NESTED_IPIMASK; use_superpages = 1; TUNABLE_INT_FETCH("hw.vmm.ept.use_superpages", &use_superpages); Modified: head/sys/amd64/vmm/intel/ept.h ============================================================================== --- head/sys/amd64/vmm/intel/ept.h Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/intel/ept.h Thu Jan 9 03:25:54 2014 (r260466) @@ -31,7 +31,7 @@ struct vmx; -int ept_init(void); +int ept_init(int ipinum); void ept_invalidate_mappings(u_long eptp); struct vmspace *ept_vmspace_alloc(vm_offset_t min, vm_offset_t max); void ept_vmspace_free(struct vmspace *vmspace); Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/intel/vmx.c Thu Jan 9 03:25:54 2014 (r260466) @@ -474,7 +474,7 @@ vmx_restore(void) } static int -vmx_init(void) +vmx_init(int ipinum) { int error, use_tpr_shadow; uint64_t fixed0, fixed1, feature_control; @@ -639,7 +639,7 @@ vmx_init(void) } /* Initialize EPT */ - error = ept_init(); + error = ept_init(ipinum); if (error) { printf("vmx_init: ept initialization failed (%d)\n", error); return (error); Modified: head/sys/amd64/vmm/io/vlapic.c ============================================================================== --- head/sys/amd64/vmm/io/vlapic.c Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/io/vlapic.c Thu Jan 9 03:25:54 2014 (r260466) @@ -1430,7 +1430,7 @@ vlapic_deliver_intr(struct vm *vm, bool } void -vlapic_post_intr(struct vlapic *vlapic, int hostcpu) +vlapic_post_intr(struct vlapic *vlapic, int hostcpu, int ipinum) { /* * Post an interrupt to the vcpu currently running on 'hostcpu'. @@ -1444,7 +1444,7 @@ vlapic_post_intr(struct vlapic *vlapic, if (vlapic->ops.post_intr) (*vlapic->ops.post_intr)(vlapic, hostcpu); else - ipi_cpu(hostcpu, vmm_ipinum); + ipi_cpu(hostcpu, ipinum); } bool Modified: head/sys/amd64/vmm/io/vlapic.h ============================================================================== --- head/sys/amd64/vmm/io/vlapic.h Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/io/vlapic.h Thu Jan 9 03:25:54 2014 (r260466) @@ -65,9 +65,9 @@ int vlapic_set_intr_ready(struct vlapic /* * Post an interrupt to the vcpu running on 'hostcpu'. This will use a * hardware assist if available (e.g. Posted Interrupt) or fall back to - * sending an IPI to interrupt the 'hostcpu'. + * sending an 'ipinum' to interrupt the 'hostcpu'. */ -void vlapic_post_intr(struct vlapic *vlapic, int hostcpu); +void vlapic_post_intr(struct vlapic *vlapic, int hostcpu, int ipinum); void vlapic_set_error(struct vlapic *vlapic, uint32_t mask); void vlapic_fire_cmci(struct vlapic *vlapic); Modified: head/sys/amd64/vmm/vmm.c ============================================================================== --- head/sys/amd64/vmm/vmm.c Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/vmm.c Thu Jan 9 03:25:54 2014 (r260466) @@ -130,7 +130,7 @@ struct vm { static int vmm_initialized; static struct vmm_ops *ops; -#define VMM_INIT() (ops != NULL ? (*ops->init)() : 0) +#define VMM_INIT(num) (ops != NULL ? (*ops->init)(num) : 0) #define VMM_CLEANUP() (ops != NULL ? (*ops->cleanup)() : 0) #define VMM_RESUME() (ops != NULL ? (*ops->resume)() : 0) @@ -170,6 +170,12 @@ CTASSERT(VMM_MSR_NUM <= 64); /* msr_mask /* statistics */ static VMM_STAT(VCPU_TOTAL_RUNTIME, "vcpu total runtime"); +SYSCTL_NODE(_hw, OID_AUTO, vmm, CTLFLAG_RW, NULL, NULL); + +static int vmm_ipinum; +SYSCTL_INT(_hw_vmm, OID_AUTO, ipinum, CTLFLAG_RD, &vmm_ipinum, 0, + "IPI vector used for vcpu notifications"); + static void vcpu_cleanup(struct vm *vm, int i) { @@ -222,7 +228,10 @@ vmm_init(void) int error; vmm_host_state_init(); - vmm_ipi_init(); + + vmm_ipinum = vmm_ipi_alloc(); + if (vmm_ipinum == 0) + vmm_ipinum = IPI_AST; error = vmm_mem_init(); if (error) @@ -238,7 +247,7 @@ vmm_init(void) vmm_msr_init(); vmm_resume_p = vmm_resume; - return (VMM_INIT()); + return (VMM_INIT(vmm_ipinum)); } static int @@ -259,7 +268,8 @@ vmm_handler(module_t mod, int what, void if (error == 0) { vmm_resume_p = NULL; iommu_cleanup(); - vmm_ipi_cleanup(); + if (vmm_ipinum != IPI_AST) + vmm_ipi_free(vmm_ipinum); error = VMM_CLEANUP(); /* * Something bad happened - prevent new @@ -294,8 +304,6 @@ static moduledata_t vmm_kmod = { DECLARE_MODULE(vmm, vmm_kmod, SI_SUB_SMP + 1, SI_ORDER_ANY); MODULE_VERSION(vmm, 1); -SYSCTL_NODE(_hw, OID_AUTO, vmm, CTLFLAG_RW, NULL, NULL); - int vm_create(const char *name, struct vm **retvm) { @@ -1379,7 +1387,8 @@ vcpu_notify_event(struct vm *vm, int vcp panic("invalid vcpu state %d", vcpu->state); if (hostcpu != curcpu) { if (lapic_intr) - vlapic_post_intr(vcpu->vlapic, hostcpu); + vlapic_post_intr(vcpu->vlapic, hostcpu, + vmm_ipinum); else ipi_cpu(hostcpu, vmm_ipinum); } Modified: head/sys/amd64/vmm/vmm_ipi.c ============================================================================== --- head/sys/amd64/vmm/vmm_ipi.c Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/vmm_ipi.c Thu Jan 9 03:25:54 2014 (r260466) @@ -44,15 +44,10 @@ __FBSDID("$FreeBSD$"); extern inthand_t IDTVEC(rsvd), IDTVEC(justreturn); -/* - * The default is to use the IPI_AST to interrupt a vcpu. - */ -int vmm_ipinum = IPI_AST; - CTASSERT(APIC_SPURIOUS_INT == 255); -void -vmm_ipi_init(void) +int +vmm_ipi_alloc(void) { int idx; uintptr_t func; @@ -72,22 +67,27 @@ vmm_ipi_init(void) ip = &idt[idx]; func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); if (func == (uintptr_t)&IDTVEC(rsvd)) { - vmm_ipinum = idx; - setidt(vmm_ipinum, IDTVEC(justreturn), SDT_SYSIGT, + setidt(idx , IDTVEC(justreturn), SDT_SYSIGT, SEL_KPL, 0); - break; + return (idx); } } - - if (vmm_ipinum != IPI_AST && bootverbose) { - printf("vmm_ipi_init: installing ipi handler to interrupt " - "vcpus at vector %d\n", vmm_ipinum); - } + return (0); } void -vmm_ipi_cleanup(void) +vmm_ipi_free(int ipinum) { - if (vmm_ipinum != IPI_AST) - setidt(vmm_ipinum, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); + uintptr_t func; + struct gate_descriptor *ip; + + KASSERT(ipinum >= APIC_IPI_INTS && ipinum < APIC_SPURIOUS_INT, + ("invalid ipi %d", ipinum)); + + ip = &idt[ipinum]; + func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset); + KASSERT(func == (uintptr_t)&IDTVEC(justreturn), + ("invalid ipi %d", ipinum)); + + setidt(ipinum, IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); } Modified: head/sys/amd64/vmm/vmm_ipi.h ============================================================================== --- head/sys/amd64/vmm/vmm_ipi.h Thu Jan 9 03:25:08 2014 (r260465) +++ head/sys/amd64/vmm/vmm_ipi.h Thu Jan 9 03:25:54 2014 (r260466) @@ -29,11 +29,7 @@ #ifndef _VMM_IPI_H_ #define _VMM_IPI_H_ -struct vm; - -extern int vmm_ipinum; - -void vmm_ipi_init(void); -void vmm_ipi_cleanup(void); +int vmm_ipi_alloc(void); +void vmm_ipi_free(int num); #endif From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 03:32:04 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8F552C6B; Thu, 9 Jan 2014 03:32:04 +0000 (UTC) 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 5F9D51171; Thu, 9 Jan 2014 03:32: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 s093W4F9017208; Thu, 9 Jan 2014 03:32:04 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s093W4VV017207; Thu, 9 Jan 2014 03:32:04 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201401090332.s093W4VV017207@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 9 Jan 2014 03:32:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260467 - stable/10/sys/amd64/amd64 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 03:32:04 -0000 Author: kib Date: Thu Jan 9 03:32:03 2014 New Revision: 260467 URL: http://svnweb.freebsd.org/changeset/base/260467 Log: MFC r260205: Update the description for pmap_remove_pages() to match the modern times. Assert that the pmap passed to pmap_remove_pages() is only active on current CPU. Modified: stable/10/sys/amd64/amd64/pmap.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/amd64/amd64/pmap.c ============================================================================== --- stable/10/sys/amd64/amd64/pmap.c Thu Jan 9 03:25:54 2014 (r260466) +++ stable/10/sys/amd64/amd64/pmap.c Thu Jan 9 03:32:03 2014 (r260467) @@ -5124,12 +5124,20 @@ pmap_page_is_mapped(vm_page_t m) } /* - * Remove all pages from specified address space - * this aids process exit speeds. Also, this code - * is special cased for current process only, but - * can have the more generic (and slightly slower) - * mode enabled. This is much faster than pmap_remove - * in the case of running down an entire address space. + * Destroy all managed, non-wired mappings in the given user-space + * pmap. This pmap cannot be active on any processor besides the + * caller. + * + * This function cannot be applied to the kernel pmap. Moreover, it + * is not intended for general use. It is only to be used during + * process termination. Consequently, it can be implemented in ways + * that make it faster than pmap_remove(). First, it can more quickly + * destroy mappings by iterating over the pmap's collection of PV + * entries, rather than searching the page table. Second, it doesn't + * have to test and clear the page table entries atomically, because + * no processor is currently accessing the user address space. In + * particular, a page table entry's dirty bit won't change state once + * this function starts. */ void pmap_remove_pages(pmap_t pmap) @@ -5149,10 +5157,24 @@ pmap_remove_pages(pmap_t pmap) boolean_t superpage; vm_paddr_t pa; - if (pmap != PCPU_GET(curpmap)) { - printf("warning: pmap_remove_pages called with non-current pmap\n"); - return; + /* + * Assert that the given pmap is only active on the current + * CPU. Unfortunately, we cannot block another CPU from + * activating the pmap while this function is executing. + */ + KASSERT(pmap == PCPU_GET(curpmap), ("non-current pmap %p", pmap)); +#ifdef INVARIANTS + { + cpuset_t other_cpus; + + other_cpus = all_cpus; + critical_enter(); + CPU_CLR(PCPU_GET(cpuid), &other_cpus); + CPU_AND(&other_cpus, &pmap->pm_active); + critical_exit(); + KASSERT(CPU_EMPTY(&other_cpus), ("pmap active %p", pmap)); } +#endif lock = NULL; PG_M = pmap_modified_bit(pmap); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 03:33:12 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D5BD3DEB; Thu, 9 Jan 2014 03:33:12 +0000 (UTC) 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 A7AFD117C; Thu, 9 Jan 2014 03:33:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s093XCkv017408; Thu, 9 Jan 2014 03:33:12 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s093XCXr017407; Thu, 9 Jan 2014 03:33:12 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201401090333.s093XCXr017407@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 9 Jan 2014 03:33:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260468 - stable/9/sys/amd64/amd64 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 03:33:12 -0000 Author: kib Date: Thu Jan 9 03:33:12 2014 New Revision: 260468 URL: http://svnweb.freebsd.org/changeset/base/260468 Log: MFC r260205: Update the description for pmap_remove_pages() to match the modern times. Assert that the pmap passed to pmap_remove_pages() is only active on current CPU. Modified: stable/9/sys/amd64/amd64/pmap.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/amd64/amd64/pmap.c ============================================================================== --- stable/9/sys/amd64/amd64/pmap.c Thu Jan 9 03:32:03 2014 (r260467) +++ stable/9/sys/amd64/amd64/pmap.c Thu Jan 9 03:33:12 2014 (r260468) @@ -4386,12 +4386,20 @@ pmap_page_is_mapped(vm_page_t m) } /* - * Remove all pages from specified address space - * this aids process exit speeds. Also, this code - * is special cased for current process only, but - * can have the more generic (and slightly slower) - * mode enabled. This is much faster than pmap_remove - * in the case of running down an entire address space. + * Destroy all managed, non-wired mappings in the given user-space + * pmap. This pmap cannot be active on any processor besides the + * caller. + * + * This function cannot be applied to the kernel pmap. Moreover, it + * is not intended for general use. It is only to be used during + * process termination. Consequently, it can be implemented in ways + * that make it faster than pmap_remove(). First, it can more quickly + * destroy mappings by iterating over the pmap's collection of PV + * entries, rather than searching the page table. Second, it doesn't + * have to test and clear the page table entries atomically, because + * no processor is currently accessing the user address space. In + * particular, a page table entry's dirty bit won't change state once + * this function starts. */ void pmap_remove_pages(pmap_t pmap) @@ -4408,10 +4416,25 @@ pmap_remove_pages(pmap_t pmap) uint64_t inuse, bitmask; int allfree, field, freed, idx; - if (pmap != PCPU_GET(curpmap)) { - printf("warning: pmap_remove_pages called with non-current pmap\n"); - return; + /* + * Assert that the given pmap is only active on the current + * CPU. Unfortunately, we cannot block another CPU from + * activating the pmap while this function is executing. + */ + KASSERT(pmap == PCPU_GET(curpmap), ("non-current pmap %p", pmap)); +#ifdef INVARIANTS + { + cpuset_t other_cpus; + + other_cpus = all_cpus; + critical_enter(); + CPU_CLR(PCPU_GET(cpuid), &other_cpus); + CPU_AND(&other_cpus, &pmap->pm_active); + critical_exit(); + KASSERT(CPU_EMPTY(&other_cpus), ("pmap active %p", pmap)); } +#endif + lock = NULL; rw_rlock(&pvh_global_lock); PMAP_LOCK(pmap); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 07:17:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B083393; Thu, 9 Jan 2014 07:17:21 +0000 (UTC) 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 9C44014C6; Thu, 9 Jan 2014 07:17: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 s097HLVb000102; Thu, 9 Jan 2014 07:17:21 GMT (envelope-from grehan@svn.freebsd.org) Received: (from grehan@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s097HLbU000101; Thu, 9 Jan 2014 07:17:21 GMT (envelope-from grehan@svn.freebsd.org) Message-Id: <201401090717.s097HLbU000101@svn.freebsd.org> From: Peter Grehan Date: Thu, 9 Jan 2014 07:17:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260469 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 07:17:21 -0000 Author: grehan Date: Thu Jan 9 07:17:21 2014 New Revision: 260469 URL: http://svnweb.freebsd.org/changeset/base/260469 Log: Fix issue with the virtio descriptor region being truncated if it was above 4GB. This was seen with CentOS 6.5 guests with large RAM, since the block drivers are loaded late in the boot sequence and end up allocating descriptor memory from high addresses. Reported by: Michael Dexter MFC after: 3 days Modified: head/usr.sbin/bhyve/virtio.c Modified: head/usr.sbin/bhyve/virtio.c ============================================================================== --- head/usr.sbin/bhyve/virtio.c Thu Jan 9 03:33:12 2014 (r260468) +++ head/usr.sbin/bhyve/virtio.c Thu Jan 9 07:17:21 2014 (r260469) @@ -160,7 +160,7 @@ vi_vq_init(struct virtio_softc *vs, uint vq = &vs->vs_queues[vs->vs_curq]; vq->vq_pfn = pfn; - phys = pfn << VRING_PFN; + phys = (uint64_t)pfn << VRING_PFN; size = vring_size(vq->vq_qsize); base = paddr_guest2host(vs->vs_pi->pi_vmctx, phys, size); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 08:55:15 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A91D8548; Thu, 9 Jan 2014 08:55:15 +0000 (UTC) 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 12EE81CA6; Thu, 9 Jan 2014 08:55:14 +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 s098tCs0091374 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 9 Jan 2014 12:55:12 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s098tCmJ091373; Thu, 9 Jan 2014 12:55:12 +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, 9 Jan 2014 12:55:12 +0400 From: Gleb Smirnoff To: Kevin Lo Subject: Re: svn commit: r260463 - head/sys/dev/usb/wlan Message-ID: <20140109085512.GN71033@FreeBSD.org> References: <201401090148.s091mYZx073572@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401090148.s091mYZx073572@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 08:55:15 -0000 On Thu, Jan 09, 2014 at 01:48:34AM +0000, Kevin Lo wrote: K> Author: kevlo K> Date: Thu Jan 9 01:48:33 2014 K> New Revision: 260463 K> URL: http://svnweb.freebsd.org/changeset/base/260463 K> K> Log: K> Replace deprecated M_DONTWAIT with M_NOWAIT. K> K> Modified: K> head/sys/dev/usb/wlan/if_rsu.c K> head/sys/dev/usb/wlan/if_urtwn.c K> K> Modified: head/sys/dev/usb/wlan/if_rsu.c K> ============================================================================== K> --- head/sys/dev/usb/wlan/if_rsu.c Thu Jan 9 00:59:03 2014 (r260462) K> +++ head/sys/dev/usb/wlan/if_rsu.c Thu Jan 9 01:48:33 2014 (r260463) K> @@ -1145,11 +1145,11 @@ rsu_event_survey(struct rsu_softc *sc, u K> pktlen = sizeof(*wh) + le32toh(bss->ieslen); K> if (__predict_false(pktlen > MCLBYTES)) K> return; K> - MGETHDR(m, M_DONTWAIT, MT_DATA); K> + MGETHDR(m, M_NOWAIT, MT_DATA); K> if (__predict_false(m == NULL)) K> return; K> if (pktlen > MHLEN) { K> - MCLGET(m, M_DONTWAIT); K> + MCLGET(m, M_NOWAIT); K> if (!(m->m_flags & M_EXT)) { K> m_free(m); K> return; K> @@ -1358,13 +1358,13 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 K> DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", K> pktlen, rate, infosz, *rssi); K> K> - MGETHDR(m, M_DONTWAIT, MT_DATA); K> + MGETHDR(m, M_NOWAIT, MT_DATA); K> if (__predict_false(m == NULL)) { K> ifp->if_ierrors++; K> return NULL; K> } K> if (pktlen > MHLEN) { K> - MCLGET(m, M_DONTWAIT); K> + MCLGET(m, M_NOWAIT); K> if (__predict_false(!(m->m_flags & M_EXT))) { K> ifp->if_ierrors++; K> m_freem(m); Thanks! The macros MGETHDR, MCLGET should also be converted to functions. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 09:19:59 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B8FD2EA3; Thu, 9 Jan 2014 09:19:59 +0000 (UTC) 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 A5A1C1E9F; Thu, 9 Jan 2014 09:19: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 s099JxLc049050; Thu, 9 Jan 2014 09:19:59 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s099JxdI049049; Thu, 9 Jan 2014 09:19:59 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201401090919.s099JxdI049049@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Thu, 9 Jan 2014 09:19:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260471 - head/sbin/casperd X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 09:19:59 -0000 Author: pjd Date: Thu Jan 9 09:19:59 2014 New Revision: 260471 URL: http://svnweb.freebsd.org/changeset/base/260471 Log: Always create /var/run/casper with correct permissions and don't depend on the calling process' umask. Submitted by: Mikhail Modified: head/sbin/casperd/casperd.c Modified: head/sbin/casperd/casperd.c ============================================================================== --- head/sbin/casperd/casperd.c Thu Jan 9 09:16:35 2014 (r260470) +++ head/sbin/casperd/casperd.c Thu Jan 9 09:19:59 2014 (r260471) @@ -541,6 +541,7 @@ main_loop(const char *sockpath, struct p struct casper_service *casserv; struct service_connection *sconn, *sconntmp; int lsock, sock, maxfd, ret; + mode_t oldumask; lsock = socket(AF_UNIX, SOCK_STREAM, 0); if (lsock == -1) @@ -554,8 +555,10 @@ main_loop(const char *sockpath, struct p sizeof(sun.sun_path)); sun.sun_len = SUN_LEN(&sun); + oldumask = umask(S_IXUSR | S_IXGRP | S_IXOTH); if (bind(lsock, (struct sockaddr *)&sun, sizeof(sun)) == -1) pjdlog_exit(1, "Unable to bind to %s", sockpath); + (void)umask(oldumask); if (listen(lsock, 8) == -1) pjdlog_exit(1, "Unable to listen on %s", sockpath); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 10:40:37 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 490CA7B; Thu, 9 Jan 2014 10:40:37 +0000 (UTC) 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 34D7215E0; Thu, 9 Jan 2014 10:40: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 s09AebAh082135; Thu, 9 Jan 2014 10:40:37 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09AeboK082120; Thu, 9 Jan 2014 10:40:37 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401091040.s09AeboK082120@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Thu, 9 Jan 2014 10:40:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260472 - head/sbin/route X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 10:40:37 -0000 Author: melifaro Date: Thu Jan 9 10:40:36 2014 New Revision: 260472 URL: http://svnweb.freebsd.org/changeset/base/260472 Log: Do some more sanity checks in route(8): require netmask to have the same address family as destination. Found by: jmg MFC after: 2 weeks Modified: head/sbin/route/route.c Modified: head/sbin/route/route.c ============================================================================== --- head/sbin/route/route.c Thu Jan 9 09:19:59 2014 (r260471) +++ head/sbin/route/route.c Thu Jan 9 10:40:36 2014 (r260472) @@ -958,11 +958,18 @@ newroute(int argc, char **argv) } } + /* Do some sanity checks on resulting request */ if (so[RTAX_DST].ss_len == 0) { warnx("destination parameter required"); usage(NULL); } + if (so[RTAX_NETMASK].ss_len != 0 && + so[RTAX_DST].ss_family != so[RTAX_NETMASK].ss_family) { + warnx("destination and netmask family need to be the same"); + usage(NULL); + } + if (nrflags & F_FORCEHOST) { nrflags |= F_ISHOST; #ifdef INET6 From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 10:44:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CEC062F9; Thu, 9 Jan 2014 10:44:27 +0000 (UTC) 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 B9A88160E; Thu, 9 Jan 2014 10:44: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 s09AiRfM083491; Thu, 9 Jan 2014 10:44:27 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09AiRZ7083490; Thu, 9 Jan 2014 10:44:27 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091044.s09AiRZ7083490@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 10:44:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260473 - stable/10/sys/x86/cpufreq X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 10:44:27 -0000 Author: mav Date: Thu Jan 9 10:44:27 2014 New Revision: 260473 URL: http://svnweb.freebsd.org/changeset/base/260473 Log: MFC r259197: Do not DELAY() for P-state transition unless we want to see the result. Intel manual says: "If a transition is already in progress, transition to a new value will subsequently take effect. Reads of IA32_PERF_CTL determine the last targeted operating point." So seems it should be fine to just trigger wanted transition and go. Linux does the same. Modified: stable/10/sys/x86/cpufreq/est.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/x86/cpufreq/est.c ============================================================================== --- stable/10/sys/x86/cpufreq/est.c Thu Jan 9 10:40:36 2014 (r260472) +++ stable/10/sys/x86/cpufreq/est.c Thu Jan 9 10:44:27 2014 (r260473) @@ -1288,10 +1288,9 @@ est_set_id16(device_t dev, uint16_t id16 msr = (msr & ~0xffff) | id16; wrmsr(MSR_PERF_CTL, msr); - /* Wait a short while for the new setting. XXX Is this necessary? */ - DELAY(EST_TRANS_LAT); - if (need_check) { + /* Wait a short while and read the new status. */ + DELAY(EST_TRANS_LAT); est_get_id16(&new_id16); if (new_id16 != id16) { if (bootverbose) From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 10:45:38 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 77E06453; Thu, 9 Jan 2014 10:45:38 +0000 (UTC) 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 618CA1624; Thu, 9 Jan 2014 10:45: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 s09AjcVD083702; Thu, 9 Jan 2014 10:45:38 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09AjcFi083701; Thu, 9 Jan 2014 10:45:38 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091045.s09AjcFi083701@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 10:45:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260474 - stable/9/sys/x86/cpufreq X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 10:45:38 -0000 Author: mav Date: Thu Jan 9 10:45:37 2014 New Revision: 260474 URL: http://svnweb.freebsd.org/changeset/base/260474 Log: MFC r259197: Do not DELAY() for P-state transition unless we want to see the result. Intel manual says: "If a transition is already in progress, transition to a new value will subsequently take effect. Reads of IA32_PERF_CTL determine the last targeted operating point." So seems it should be fine to just trigger wanted transition and go. Linux does the same. Modified: stable/9/sys/x86/cpufreq/est.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) Modified: stable/9/sys/x86/cpufreq/est.c ============================================================================== --- stable/9/sys/x86/cpufreq/est.c Thu Jan 9 10:44:27 2014 (r260473) +++ stable/9/sys/x86/cpufreq/est.c Thu Jan 9 10:45:37 2014 (r260474) @@ -1288,10 +1288,9 @@ est_set_id16(device_t dev, uint16_t id16 msr = (msr & ~0xffff) | id16; wrmsr(MSR_PERF_CTL, msr); - /* Wait a short while for the new setting. XXX Is this necessary? */ - DELAY(EST_TRANS_LAT); - if (need_check) { + /* Wait a short while and read the new status. */ + DELAY(EST_TRANS_LAT); est_get_id16(&new_id16); if (new_id16 != id16) { if (bootverbose) From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 10:49:15 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7F44A5E6; Thu, 9 Jan 2014 10:49:15 +0000 (UTC) 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 6AD1A164D; Thu, 9 Jan 2014 10:49: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 s09AnFFx084178; Thu, 9 Jan 2014 10:49:15 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09AnF9Z084176; Thu, 9 Jan 2014 10:49:15 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091049.s09AnF9Z084176@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 10:49:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260475 - in stable/10/sys/cam: ata scsi X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 10:49:15 -0000 Author: mav Date: Thu Jan 9 10:49:14 2014 New Revision: 260475 URL: http://svnweb.freebsd.org/changeset/base/260475 Log: MFC r256547 (by smh): Added 4K quirks for Corsair Neutron GTX SSD's Modified: stable/10/sys/cam/ata/ata_da.c stable/10/sys/cam/scsi/scsi_da.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ata/ata_da.c ============================================================================== --- stable/10/sys/cam/ata/ata_da.c Thu Jan 9 10:45:37 2014 (r260474) +++ stable/10/sys/cam/ata/ata_da.c Thu Jan 9 10:49:14 2014 (r260475) @@ -291,6 +291,14 @@ static struct ada_quirk_entry ada_quirk_ }, { /* + * Corsair Neutron GTX SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "Corsair Neutron GTX*", "*" }, + /*quirks*/ADA_Q_4K + }, + { + /* * Corsair Force GT SSDs * 4k optimised & trim only works in 4k requests + 4k aligned */ Modified: stable/10/sys/cam/scsi/scsi_da.c ============================================================================== --- stable/10/sys/cam/scsi/scsi_da.c Thu Jan 9 10:45:37 2014 (r260474) +++ stable/10/sys/cam/scsi/scsi_da.c Thu Jan 9 10:49:14 2014 (r260475) @@ -947,6 +947,14 @@ static struct da_quirk_entry da_quirk_ta { T_DIRECT, SIP_MEDIA_FIXED, "ATA", "Corsair Force 3*", "*" }, /*quirks*/DA_Q_4K }, + { + /* + * Corsair Neutron GTX SSDs + * 4k optimised & trim only works in 4k requests + 4k aligned + */ + { T_DIRECT, SIP_MEDIA_FIXED, "*", "Corsair Neutron GTX*", "*" }, + /*quirks*/DA_Q_4K + }, { /* * Corsair Force GT SSDs From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 10:50:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 13C2977D; Thu, 9 Jan 2014 10:50:21 +0000 (UTC) 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 F3D191660; Thu, 9 Jan 2014 10:50: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 s09AoKpV084402; Thu, 9 Jan 2014 10:50:20 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09AoKEw084401; Thu, 9 Jan 2014 10:50:20 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091050.s09AoKEw084401@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 10:50:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260476 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 10:50:21 -0000 Author: mav Date: Thu Jan 9 10:50:20 2014 New Revision: 260476 URL: http://svnweb.freebsd.org/changeset/base/260476 Log: MFC r256995: Remove 128KB bzero() call done for every block I/O data buffer. Modified: stable/10/sys/cam/ctl/ctl_backend_block.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl_backend_block.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_backend_block.c Thu Jan 9 10:49:14 2014 (r260475) +++ stable/10/sys/cam/ctl/ctl_backend_block.c Thu Jan 9 10:50:20 2014 (r260476) @@ -1607,18 +1607,6 @@ ctl_be_block_open(struct ctl_be_block_so } static int -ctl_be_block_mem_ctor(void *mem, int size, void *arg, int flags) -{ - return (0); -} - -static void -ctl_be_block_mem_dtor(void *mem, int size, void *arg) -{ - bzero(mem, size); -} - -static int ctl_be_block_create(struct ctl_be_block_softc *softc, struct ctl_lun_req *req) { struct ctl_be_block_lun *be_lun; @@ -1646,8 +1634,7 @@ ctl_be_block_create(struct ctl_be_block_ mtx_init(&be_lun->lock, be_lun->lunname, NULL, MTX_DEF); be_lun->lun_zone = uma_zcreate(be_lun->lunname, MAXPHYS, - ctl_be_block_mem_ctor, ctl_be_block_mem_dtor, NULL, NULL, - /*align*/ 0, /*flags*/0); + NULL, NULL, NULL, NULL, /*align*/ 0, /*flags*/0); if (be_lun->lun_zone == NULL) { snprintf(req->error_str, sizeof(req->error_str), From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 10:59:32 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id EE5A29C6; Thu, 9 Jan 2014 10:59:32 +0000 (UTC) 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 CE03E1721; Thu, 9 Jan 2014 10:59: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 s09AxWkM087899; Thu, 9 Jan 2014 10:59:32 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09AxW7B087896; Thu, 9 Jan 2014 10:59:32 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091059.s09AxW7B087896@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 10:59:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260477 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 10:59:33 -0000 Author: mav Date: Thu Jan 9 10:59:31 2014 New Revision: 260477 URL: http://svnweb.freebsd.org/changeset/base/260477 Log: MFC r257946: Introduce seperate mutex lock to protect protect CTL I/O pools, slightly reducing global CTL lock scope and congestion. While there, simplify CTL I/O pools KPI, hiding implementation details. Modified: stable/10/sys/cam/ctl/ctl.c stable/10/sys/cam/ctl/ctl_frontend.c stable/10/sys/cam/ctl/ctl_private.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl.c ============================================================================== --- stable/10/sys/cam/ctl/ctl.c Thu Jan 9 10:50:20 2014 (r260476) +++ stable/10/sys/cam/ctl/ctl.c Thu Jan 9 10:59:31 2014 (r260477) @@ -360,7 +360,6 @@ static union ctl_io *ctl_malloc_io(ctl_i int can_wait); static void ctl_kfree_io(union ctl_io *io); #endif /* unused */ -static void ctl_free_io_internal(union ctl_io *io, int have_lock); static int ctl_alloc_lun(struct ctl_softc *ctl_softc, struct ctl_lun *lun, struct ctl_be_lun *be_lun, struct ctl_id target_id); static int ctl_free_lun(struct ctl_lun *lun); @@ -998,6 +997,7 @@ ctl_init(void) "Report no lun possible for invalid LUNs"); mtx_init(&softc->ctl_lock, "CTL mutex", NULL, MTX_DEF); + mtx_init(&softc->pool_lock, "CTL pool mutex", NULL, MTX_DEF); softc->open_count = 0; /* @@ -1057,7 +1057,7 @@ ctl_init(void) CTL_POOL_ENTRIES_EMERGENCY, &emergency_pool) != 0) { printf("ctl: can't allocate %d entry emergency pool, " "exiting\n", CTL_POOL_ENTRIES_EMERGENCY); - ctl_pool_free(softc, internal_pool); + ctl_pool_free(internal_pool); return (ENOMEM); } @@ -1066,8 +1066,8 @@ ctl_init(void) { printf("ctl: can't allocate %d entry other SC pool, " "exiting\n", CTL_POOL_ENTRIES_OTHER_SC); - ctl_pool_free(softc, internal_pool); - ctl_pool_free(softc, emergency_pool); + ctl_pool_free(internal_pool); + ctl_pool_free(emergency_pool); return (ENOMEM); } @@ -1075,12 +1075,6 @@ 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 * just let the user allocate LUNs as he sees fit. @@ -1097,10 +1091,10 @@ ctl_init(void) 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); + ctl_pool_free(internal_pool); + ctl_pool_free(emergency_pool); + ctl_pool_free(other_pool); return (error); } if (bootverbose) @@ -1154,7 +1148,7 @@ ctl_shutdown(void) { struct ctl_softc *softc; struct ctl_lun *lun, *next_lun; - struct ctl_io_pool *pool, *next_pool; + struct ctl_io_pool *pool; softc = (struct ctl_softc *)control_softc; @@ -1171,6 +1165,8 @@ ctl_shutdown(void) ctl_free_lun(lun); } + mtx_unlock(&softc->ctl_lock); + /* * This will rip the rug out from under any FETDs or anyone else * that has a pool allocated. Since we increment our module @@ -1179,18 +1175,14 @@ ctl_shutdown(void) * able to unload the CTL module until client modules have * successfully unloaded. */ - for (pool = STAILQ_FIRST(&softc->io_pools); pool != NULL; - pool = next_pool) { - next_pool = STAILQ_NEXT(pool, links); - ctl_pool_free(softc, pool); - } - - mtx_unlock(&softc->ctl_lock); + while ((pool = STAILQ_FIRST(&softc->io_pools)) != NULL) + ctl_pool_free(pool); #if 0 ctl_shutdown_thread(softc->work_thread); #endif + mtx_destroy(&softc->pool_lock); mtx_destroy(&softc->ctl_lock); destroy_dev(softc->dev); @@ -3367,11 +3359,12 @@ ctl_pool_create(struct ctl_softc *ctl_so pool->type = pool_type; pool->ctl_softc = ctl_softc; - mtx_lock(&ctl_softc->ctl_lock); + mtx_lock(&ctl_softc->pool_lock); pool->id = ctl_softc->cur_pool_id++; - mtx_unlock(&ctl_softc->ctl_lock); + mtx_unlock(&ctl_softc->pool_lock); pool->flags = CTL_POOL_FLAG_NONE; + pool->refcount = 1; /* Reference for validity. */ STAILQ_INIT(&pool->free_queue); /* @@ -3407,7 +3400,7 @@ ctl_pool_create(struct ctl_softc *ctl_so free(pool, M_CTL); goto bailout; } - mtx_lock(&ctl_softc->ctl_lock); + mtx_lock(&ctl_softc->pool_lock); ctl_softc->num_pools++; STAILQ_INSERT_TAIL(&ctl_softc->io_pools, pool, links); /* @@ -3426,7 +3419,7 @@ ctl_pool_create(struct ctl_softc *ctl_so MOD_INC_USE_COUNT; #endif - mtx_unlock(&ctl_softc->ctl_lock); + mtx_unlock(&ctl_softc->pool_lock); *npool = pool; @@ -3435,14 +3428,11 @@ bailout: return (retval); } -int +static int ctl_pool_acquire(struct ctl_io_pool *pool) { - mtx_assert(&control_softc->ctl_lock, MA_OWNED); - - if (pool == NULL) - return (-EINVAL); + mtx_assert(&pool->ctl_softc->pool_lock, MA_OWNED); if (pool->flags & CTL_POOL_FLAG_INVALID) return (-EINVAL); @@ -3452,51 +3442,21 @@ ctl_pool_acquire(struct ctl_io_pool *poo return (0); } -int -ctl_pool_invalidate(struct ctl_io_pool *pool) -{ - - mtx_assert(&control_softc->ctl_lock, MA_OWNED); - - if (pool == NULL) - return (-EINVAL); - - pool->flags |= CTL_POOL_FLAG_INVALID; - - return (0); -} - -int +static void ctl_pool_release(struct ctl_io_pool *pool) { + struct ctl_softc *ctl_softc = pool->ctl_softc; + union ctl_io *io; - mtx_assert(&control_softc->ctl_lock, MA_OWNED); - - if (pool == NULL) - return (-EINVAL); - - if ((--pool->refcount == 0) - && (pool->flags & CTL_POOL_FLAG_INVALID)) { - ctl_pool_free(pool->ctl_softc, pool); - } - - return (0); -} - -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->pool_lock, MA_OWNED); - mtx_assert(&ctl_softc->ctl_lock, MA_OWNED); + if (--pool->refcount != 0) + return; - 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, - links); - STAILQ_REMOVE(&pool->free_queue, &cur_io->io_hdr, ctl_io_hdr, + while ((io = (union ctl_io *)STAILQ_FIRST(&pool->free_queue)) != NULL) { + STAILQ_REMOVE(&pool->free_queue, &io->io_hdr, ctl_io_hdr, links); - free(cur_io, M_CTL); + free(io, M_CTL); } STAILQ_REMOVE(&ctl_softc->io_pools, pool, ctl_io_pool, links); @@ -3515,6 +3475,21 @@ ctl_pool_free(struct ctl_softc *ctl_soft free(pool, M_CTL); } +void +ctl_pool_free(struct ctl_io_pool *pool) +{ + struct ctl_softc *ctl_softc; + + if (pool == NULL) + return; + + ctl_softc = pool->ctl_softc; + mtx_lock(&ctl_softc->pool_lock); + pool->flags |= CTL_POOL_FLAG_INVALID; + ctl_pool_release(pool); + mtx_unlock(&ctl_softc->pool_lock); +} + /* * This routine does not block (except for spinlocks of course). * It tries to allocate a ctl_io union from the caller's pool as quickly as @@ -3539,7 +3514,7 @@ ctl_alloc_io(void *pool_ref) ctl_softc = pool->ctl_softc; - mtx_lock(&ctl_softc->ctl_lock); + mtx_lock(&ctl_softc->pool_lock); /* * First, try to get the io structure from the user's pool. */ @@ -3549,7 +3524,7 @@ ctl_alloc_io(void *pool_ref) STAILQ_REMOVE_HEAD(&pool->free_queue, links); pool->total_allocated++; pool->free_ctl_io--; - mtx_unlock(&ctl_softc->ctl_lock); + mtx_unlock(&ctl_softc->pool_lock); return (io); } else ctl_pool_release(pool); @@ -3572,14 +3547,14 @@ ctl_alloc_io(void *pool_ref) STAILQ_REMOVE_HEAD(&npool->free_queue, links); npool->total_allocated++; npool->free_ctl_io--; - mtx_unlock(&ctl_softc->ctl_lock); + mtx_unlock(&ctl_softc->pool_lock); return (io); } else ctl_pool_release(npool); } /* Drop the spinlock before we malloc */ - mtx_unlock(&ctl_softc->ctl_lock); + mtx_unlock(&ctl_softc->pool_lock); /* * The emergency pool (if it exists) didn't have one, so try an @@ -3592,7 +3567,7 @@ ctl_alloc_io(void *pool_ref) * ctl_io to its list when it gets freed. */ if (emergency_pool != NULL) { - mtx_lock(&ctl_softc->ctl_lock); + mtx_lock(&ctl_softc->pool_lock); if (ctl_pool_acquire(emergency_pool) == 0) { io->io_hdr.pool = emergency_pool; emergency_pool->total_ctl_io++; @@ -3604,7 +3579,7 @@ ctl_alloc_io(void *pool_ref) */ emergency_pool->total_allocated++; } - mtx_unlock(&ctl_softc->ctl_lock); + mtx_unlock(&ctl_softc->pool_lock); } else io->io_hdr.pool = NULL; } @@ -3612,8 +3587,8 @@ ctl_alloc_io(void *pool_ref) return (io); } -static void -ctl_free_io_internal(union ctl_io *io, int have_lock) +void +ctl_free_io(union ctl_io *io) { if (io == NULL) return; @@ -3634,8 +3609,7 @@ ctl_free_io_internal(union ctl_io *io, i pool = (struct ctl_io_pool *)io->io_hdr.pool; - if (have_lock == 0) - mtx_lock(&pool->ctl_softc->ctl_lock); + mtx_lock(&pool->ctl_softc->pool_lock); #if 0 save_flags(xflags); @@ -3672,8 +3646,7 @@ ctl_free_io_internal(union ctl_io *io, i pool->total_freed++; pool->free_ctl_io++; ctl_pool_release(pool); - if (have_lock == 0) - mtx_unlock(&pool->ctl_softc->ctl_lock); + mtx_unlock(&pool->ctl_softc->pool_lock); } else { /* * Otherwise, just free it. We probably malloced it and @@ -3685,12 +3658,6 @@ ctl_free_io_internal(union ctl_io *io, i } void -ctl_free_io(union ctl_io *io) -{ - ctl_free_io_internal(io, /*have_lock*/ 0); -} - -void ctl_zero_io(union ctl_io *io) { void *pool_ref; @@ -4496,7 +4463,7 @@ ctl_free_lun(struct ctl_lun *lun) io = next_io) { next_io = (union ctl_io *)TAILQ_NEXT(&io->io_hdr, ooa_links); TAILQ_REMOVE(&lun->ooa_queue, &io->io_hdr, ooa_links); - ctl_free_io_internal(io, /*have_lock*/ 1); + ctl_free_io(io); } softc->num_luns--; @@ -10211,7 +10178,7 @@ ctl_failover(void) TAILQ_REMOVE(&lun->ooa_queue, &io->io_hdr, ooa_links); - ctl_free_io_internal(io, 1); + ctl_free_io(io); } } @@ -10227,7 +10194,7 @@ ctl_failover(void) &io->io_hdr, ooa_links); - ctl_free_io_internal(io, 1); + ctl_free_io(io); } } ctl_check_blocked(lun); @@ -11118,7 +11085,7 @@ ctl_run_task_queue(struct ctl_softc *ctl io->taskio.tag_num : io->scsiio.tag_num); STAILQ_REMOVE(&ctl_softc->task_queue, &io->io_hdr, ctl_io_hdr, links); - ctl_free_io_internal(io, 1); + ctl_free_io(io); break; } } @@ -11215,7 +11182,7 @@ ctl_handle_isc(union ctl_io *io) break; } if (free_io) - ctl_free_io_internal(io, 0); + ctl_free_io(io); } @@ -12363,7 +12330,7 @@ ctl_process_done(union ctl_io *io, int h case CTL_IO_TASK: ctl_io_error_print(io, NULL); if (io->io_hdr.flags & CTL_FLAG_FROM_OTHER_SC) - ctl_free_io_internal(io, /*have_lock*/ 0); + ctl_free_io(io); else fe_done(io); return (CTL_RETVAL_COMPLETE); @@ -12682,7 +12649,7 @@ ctl_process_done(union ctl_io *io, int h /* XXX do something here */ } - ctl_free_io_internal(io, /*have_lock*/ 0); + ctl_free_io(io); } else fe_done(io); Modified: stable/10/sys/cam/ctl/ctl_frontend.c ============================================================================== --- stable/10/sys/cam/ctl/ctl_frontend.c Thu Jan 9 10:50:20 2014 (r260476) +++ stable/10/sys/cam/ctl/ctl_frontend.c Thu Jan 9 10:59:31 2014 (r260477) @@ -114,7 +114,6 @@ ctl_frontend_register(struct ctl_fronten fe->targ_port = port_num + (master_shelf!=0 ? 0 : CTL_MAX_PORTS); fe->max_initiators = CTL_MAX_INIT_PER_PORT; STAILQ_INSERT_TAIL(&control_softc->fe_list, fe, links); - ctl_pool_acquire(pool); control_softc->ctl_ports[port_num] = fe; mtx_unlock(&control_softc->ctl_lock); @@ -141,10 +140,6 @@ ctl_frontend_deregister(struct ctl_front } mtx_lock(&control_softc->ctl_lock); - - ctl_pool_invalidate(pool); - ctl_pool_release(pool); - STAILQ_REMOVE(&control_softc->fe_list, fe, ctl_frontend, links); control_softc->num_frontends--; port_num = (fe->targ_port < CTL_MAX_PORTS) ? fe->targ_port : @@ -152,6 +147,9 @@ ctl_frontend_deregister(struct ctl_front ctl_clear_mask(&control_softc->ctl_port_mask, port_num); control_softc->ctl_ports[port_num] = NULL; mtx_unlock(&control_softc->ctl_lock); + + ctl_pool_free(pool); + bailout: return (retval); } Modified: stable/10/sys/cam/ctl/ctl_private.h ============================================================================== --- stable/10/sys/cam/ctl/ctl_private.h Thu Jan 9 10:50:20 2014 (r260476) +++ stable/10/sys/cam/ctl/ctl_private.h Thu Jan 9 10:59:31 2014 (r260477) @@ -448,6 +448,7 @@ struct ctl_softc { struct ctl_frontend *ctl_ports[CTL_MAX_PORTS]; uint32_t num_backends; STAILQ_HEAD(, ctl_backend_driver) be_list; + struct mtx pool_lock; uint32_t num_pools; uint32_t cur_pool_id; STAILQ_HEAD(, ctl_io_pool) io_pools; @@ -462,10 +463,7 @@ extern struct ctl_cmd_entry ctl_cmd_tabl uint32_t ctl_get_initindex(struct ctl_nexus *nexus); int ctl_pool_create(struct ctl_softc *ctl_softc, ctl_pool_type pool_type, uint32_t total_ctl_io, struct ctl_io_pool **npool); -int ctl_pool_acquire(struct ctl_io_pool *pool); -int ctl_pool_invalidate(struct ctl_io_pool *pool); -int ctl_pool_release(struct ctl_io_pool *pool); -void ctl_pool_free(struct ctl_softc *ctl_softc, struct ctl_io_pool *pool); +void ctl_pool_free(struct ctl_io_pool *pool); int ctl_scsi_release(struct ctl_scsiio *ctsio); int ctl_scsi_reserve(struct ctl_scsiio *ctsio); int ctl_start_stop(struct ctl_scsiio *ctsio); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 11:11:48 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0524EE2E; Thu, 9 Jan 2014 11:11:48 +0000 (UTC) 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 E414D1897; Thu, 9 Jan 2014 11:11: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 s09BBl2u095032; Thu, 9 Jan 2014 11:11:47 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09BBlR3095030; Thu, 9 Jan 2014 11:11:47 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091111.s09BBlR3095030@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 11:11:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260478 - stable/10/sys/geom/multipath X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 11:11:48 -0000 Author: mav Date: Thu Jan 9 11:11:47 2014 New Revision: 260478 URL: http://svnweb.freebsd.org/changeset/base/260478 Log: MFC r258220, r258251: Implement automatic live resize support for GEOM MULTIPATH class. In "manual" mode just automatically resize provider in any direction. In "automatic" mode allow growth (with new metadata write); in case of shrinking check if there is already valid metadata found at the new location. This should allow easy transparent recovery if first resize was done by mistake. While there, unify metadata write code and fix minor memory leak. Modified: stable/10/sys/geom/multipath/g_multipath.c stable/10/sys/geom/multipath/g_multipath.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/geom/multipath/g_multipath.c ============================================================================== --- stable/10/sys/geom/multipath/g_multipath.c Thu Jan 9 10:59:31 2014 (r260477) +++ stable/10/sys/geom/multipath/g_multipath.c Thu Jan 9 11:11:47 2014 (r260478) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2011 Alexander Motin + * Copyright (c) 2011-2013 Alexander Motin * Copyright (c) 2006-2007 Matthew Jacob * All rights reserved. * @@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -66,7 +67,13 @@ static enum { static struct bio_queue_head gmtbq; static struct mtx gmtbq_mtx; +static int g_multipath_read_metadata(struct g_consumer *cp, + struct g_multipath_metadata *md); +static int g_multipath_write_metadata(struct g_consumer *cp, + struct g_multipath_metadata *md); + static void g_multipath_orphan(struct g_consumer *); +static void g_multipath_resize(struct g_consumer *); static void g_multipath_start(struct bio *); static void g_multipath_done(struct bio *); static void g_multipath_done_error(struct bio *); @@ -237,6 +244,79 @@ g_multipath_orphan(struct g_consumer *cp } static void +g_multipath_resize(struct g_consumer *cp) +{ + struct g_multipath_softc *sc; + struct g_geom *gp; + struct g_consumer *cp1; + struct g_provider *pp; + struct g_multipath_metadata md; + off_t size, psize, ssize; + int error; + + g_topology_assert(); + + gp = cp->geom; + pp = cp->provider; + sc = gp->softc; + + if (sc->sc_stopping) + return; + + if (pp->mediasize < sc->sc_size) { + size = pp->mediasize; + ssize = pp->sectorsize; + } else { + size = ssize = OFF_MAX; + mtx_lock(&sc->sc_mtx); + LIST_FOREACH(cp1, &gp->consumer, consumer) { + pp = cp1->provider; + if (pp == NULL) + continue; + if (pp->mediasize < size) { + size = pp->mediasize; + ssize = pp->sectorsize; + } + } + mtx_unlock(&sc->sc_mtx); + if (size == OFF_MAX || size == sc->sc_size) + return; + } + psize = size - ((sc->sc_uuid[0] != 0) ? ssize : 0); + printf("GEOM_MULTIPATH: %s size changed from %jd to %jd\n", + sc->sc_name, sc->sc_pp->mediasize, psize); + if (sc->sc_uuid[0] != 0 && size < sc->sc_size) { + error = g_multipath_read_metadata(cp, &md); + if (error || + (strcmp(md.md_magic, G_MULTIPATH_MAGIC) != 0) || + (memcmp(md.md_uuid, sc->sc_uuid, sizeof(sc->sc_uuid)) != 0) || + (strcmp(md.md_name, sc->sc_name) != 0) || + (md.md_size != 0 && md.md_size != size) || + (md.md_sectorsize != 0 && md.md_sectorsize != ssize)) { + g_multipath_destroy(gp); + return; + } + } + sc->sc_size = size; + g_resize_provider(sc->sc_pp, psize); + + if (sc->sc_uuid[0] != 0) { + pp = cp->provider; + strlcpy(md.md_magic, G_MULTIPATH_MAGIC, sizeof(md.md_magic)); + memcpy(md.md_uuid, sc->sc_uuid, sizeof (sc->sc_uuid)); + strlcpy(md.md_name, sc->sc_name, sizeof(md.md_name)); + md.md_version = G_MULTIPATH_VERSION; + md.md_size = size; + md.md_sectorsize = ssize; + md.md_active_active = sc->sc_active_active; + error = g_multipath_write_metadata(cp, &md); + if (error != 0) + printf("GEOM_MULTIPATH: Can't update metadata on %s " + "(%d)\n", pp->name, error); + } +} + +static void g_multipath_start(struct bio *bp) { struct g_multipath_softc *sc; @@ -435,9 +515,11 @@ g_multipath_create(struct g_class *mp, s memcpy(sc->sc_uuid, md->md_uuid, sizeof (sc->sc_uuid)); memcpy(sc->sc_name, md->md_name, sizeof (sc->sc_name)); sc->sc_active_active = md->md_active_active; + sc->sc_size = md->md_size; gp->softc = sc; gp->start = g_multipath_start; gp->orphan = g_multipath_orphan; + gp->resize = g_multipath_resize; gp->access = g_multipath_access; gp->dumpconf = g_multipath_dumpconf; @@ -514,18 +596,17 @@ g_multipath_add_disk(struct g_geom *gp, g_destroy_consumer(cp); return (error); } - if (sc->sc_pp != NULL && sc->sc_pp->mediasize == 0) { - sc->sc_pp->mediasize = pp->mediasize - + if (sc->sc_size == 0) { + sc->sc_size = pp->mediasize - ((sc->sc_uuid[0] != 0) ? pp->sectorsize : 0); + sc->sc_pp->mediasize = sc->sc_size; sc->sc_pp->sectorsize = pp->sectorsize; } - if (sc->sc_pp != NULL && - sc->sc_pp->stripesize == 0 && sc->sc_pp->stripeoffset == 0) { + if (sc->sc_pp->stripesize == 0 && sc->sc_pp->stripeoffset == 0) { sc->sc_pp->stripesize = pp->stripesize; sc->sc_pp->stripeoffset = pp->stripeoffset; } - if (sc->sc_pp != NULL) - sc->sc_pp->flags |= pp->flags & G_PF_ACCEPT_UNMAPPED; + sc->sc_pp->flags |= pp->flags & G_PF_ACCEPT_UNMAPPED; mtx_lock(&sc->sc_mtx); cp->index = 0; sc->sc_ndisks++; @@ -556,10 +637,8 @@ g_multipath_destroy(struct g_geom *gp) sc->sc_stopping = 1; } if (sc->sc_opened != 0) { - if (sc->sc_pp != NULL) { - g_wither_provider(sc->sc_pp, ENXIO); - sc->sc_pp = NULL; - } + g_wither_provider(sc->sc_pp, ENXIO); + sc->sc_pp = NULL; return (EINPROGRESS); } LIST_FOREACH_SAFE(cp, &gp->consumer, consumer, cp1) { @@ -668,6 +747,30 @@ g_multipath_read_metadata(struct g_consu return (0); } +static int +g_multipath_write_metadata(struct g_consumer *cp, + struct g_multipath_metadata *md) +{ + struct g_provider *pp; + u_char *buf; + int error; + + g_topology_assert(); + error = g_access(cp, 1, 1, 1); + if (error != 0) + return (error); + pp = cp->provider; + g_topology_unlock(); + buf = g_malloc(pp->sectorsize, M_WAITOK | M_ZERO); + multipath_metadata_encode(md, buf); + error = g_write_data(cp, pp->mediasize - pp->sectorsize, + buf, pp->sectorsize); + g_topology_lock(); + g_access(cp, -1, -1, -1); + g_free(buf); + return (error); +} + static struct g_geom * g_multipath_taste(struct g_class *mp, struct g_provider *pp, int flags __unused) { @@ -837,7 +940,7 @@ g_multipath_ctl_add_name(struct gctl_req return; } } - if (sc->sc_pp != NULL && sc->sc_pp->mediasize != 0 && + if (sc->sc_pp->mediasize != 0 && sc->sc_pp->mediasize + (sc->sc_uuid[0] != 0 ? pp->sectorsize : 0) != pp->mediasize) { gctl_error(req, "Providers size mismatch %jd != %jd", @@ -846,7 +949,7 @@ g_multipath_ctl_add_name(struct gctl_req (intmax_t) pp->mediasize); return; } - if (sc->sc_pp != NULL && sc->sc_pp->sectorsize != 0 && + if (sc->sc_pp->sectorsize != 0 && sc->sc_pp->sectorsize != pp->sectorsize) { gctl_error(req, "Providers sectorsize mismatch %u != %u", sc->sc_pp->sectorsize, pp->sectorsize); @@ -1030,7 +1133,6 @@ g_multipath_ctl_configure(struct gctl_re struct g_multipath_metadata md; const char *name; int error, *val; - void *buf; g_topology_assert(); @@ -1057,13 +1159,6 @@ g_multipath_ctl_configure(struct gctl_re if (sc->sc_uuid[0] != 0 && sc->sc_active != NULL) { cp = sc->sc_active; pp = cp->provider; - error = g_access(cp, 1, 1, 1); - if (error != 0) { - gctl_error(req, "Can't open %s (%d)", pp->name, error); - return; - } - g_topology_unlock(); - buf = g_malloc(pp->sectorsize, M_WAITOK | M_ZERO); strlcpy(md.md_magic, G_MULTIPATH_MAGIC, sizeof(md.md_magic)); memcpy(md.md_uuid, sc->sc_uuid, sizeof (sc->sc_uuid)); strlcpy(md.md_name, name, sizeof(md.md_name)); @@ -1071,11 +1166,7 @@ g_multipath_ctl_configure(struct gctl_re md.md_size = pp->mediasize; md.md_sectorsize = pp->sectorsize; md.md_active_active = sc->sc_active_active; - multipath_metadata_encode(&md, buf); - error = g_write_data(cp, pp->mediasize - pp->sectorsize, - buf, pp->sectorsize); - g_topology_lock(); - g_access(cp, -1, -1, -1); + error = g_multipath_write_metadata(cp, &md); if (error != 0) gctl_error(req, "Can't update metadata on %s (%d)", pp->name, error); Modified: stable/10/sys/geom/multipath/g_multipath.h ============================================================================== --- stable/10/sys/geom/multipath/g_multipath.h Thu Jan 9 10:59:31 2014 (r260477) +++ stable/10/sys/geom/multipath/g_multipath.h Thu Jan 9 11:11:47 2014 (r260478) @@ -48,6 +48,7 @@ struct g_multipath_softc { struct mtx sc_mtx; char sc_name[16]; char sc_uuid[40]; + off_t sc_size; int sc_opened; int sc_stopping; int sc_ndisks; From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 11:13:04 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id DBC1310A; Thu, 9 Jan 2014 11:13:04 +0000 (UTC) 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 BCC5918B4; Thu, 9 Jan 2014 11:13: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 s09BD47U095277; Thu, 9 Jan 2014 11:13:04 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09BD4NU095274; Thu, 9 Jan 2014 11:13:04 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091113.s09BD4NU095274@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 11:13:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260479 - stable/10/sys/geom X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 11:13:04 -0000 Author: mav Date: Thu Jan 9 11:13:03 2014 New Revision: 260479 URL: http://svnweb.freebsd.org/changeset/base/260479 Log: MFC r258683: Escape special XML chars, returned by some devices, confusing XML parsers. Modified: stable/10/sys/geom/geom_disk.c stable/10/sys/geom/geom_dump.c stable/10/sys/geom/geom_int.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/geom/geom_disk.c ============================================================================== --- stable/10/sys/geom/geom_disk.c Thu Jan 9 11:11:47 2014 (r260478) +++ stable/10/sys/geom/geom_disk.c Thu Jan 9 11:13:03 2014 (r260479) @@ -485,26 +485,36 @@ g_disk_dumpconf(struct sbuf *sb, const c bp->bio_length = DISK_IDENT_SIZE; bp->bio_data = buf; res = dp->d_getattr(bp); - sbuf_printf(sb, "%s%s\n", indent, + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", res == 0 ? buf: dp->d_ident); + sbuf_printf(sb, "\n"); bp->bio_attribute = "GEOM::lunid"; bp->bio_length = DISK_IDENT_SIZE; bp->bio_data = buf; - if (dp->d_getattr(bp) == 0) - sbuf_printf(sb, "%s%s\n", - indent, buf); + if (dp->d_getattr(bp) == 0) { + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", buf); + sbuf_printf(sb, "\n"); + } bp->bio_attribute = "GEOM::lunname"; bp->bio_length = DISK_IDENT_SIZE; bp->bio_data = buf; - if (dp->d_getattr(bp) == 0) - sbuf_printf(sb, "%s%s\n", - indent, buf); + if (dp->d_getattr(bp) == 0) { + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", buf); + sbuf_printf(sb, "\n"); + } g_destroy_bio(bp); g_free(buf); - } else - sbuf_printf(sb, "%s%s\n", indent, - dp->d_ident); - sbuf_printf(sb, "%s%s\n", indent, dp->d_descr); + } else { + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", dp->d_ident); + sbuf_printf(sb, "\n"); + } + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", dp->d_descr); + sbuf_printf(sb, "\n"); } } Modified: stable/10/sys/geom/geom_dump.c ============================================================================== --- stable/10/sys/geom/geom_dump.c Thu Jan 9 11:11:47 2014 (r260478) +++ stable/10/sys/geom/geom_dump.c Thu Jan 9 11:13:03 2014 (r260479) @@ -154,25 +154,28 @@ g_conftxt(void *p, int flag) } -static void -g_conf_print_escaped(struct sbuf *sb, const char *fmt, const char *str) +void +g_conf_printf_escaped(struct sbuf *sb, const char *fmt, ...) { struct sbuf *s; const u_char *c; + va_list ap; s = sbuf_new_auto(); + va_start(ap, fmt); + sbuf_vprintf(s, fmt, ap); + va_end(ap); + sbuf_finish(s); - for (c = str; *c != '\0'; c++) { + for (c = sbuf_data(s); *c != '\0'; c++) { if (*c == '&' || *c == '<' || *c == '>' || *c == '\'' || *c == '"' || *c > 0x7e) - sbuf_printf(s, "&#x%X;", *c); + sbuf_printf(sb, "&#x%X;", *c); else if (*c == '\t' || *c == '\n' || *c == '\r' || *c > 0x1f) - sbuf_putc(s, *c); + sbuf_putc(sb, *c); else - sbuf_putc(s, '?'); + sbuf_putc(sb, '?'); } - sbuf_finish(s); - sbuf_printf(sb, fmt, sbuf_data(s)); sbuf_delete(s); } @@ -204,7 +207,9 @@ g_conf_provider(struct sbuf *sb, struct sbuf_printf(sb, "\t \n", pp->geom); sbuf_printf(sb, "\t r%dw%de%d\n", pp->acr, pp->acw, pp->ace); - g_conf_print_escaped(sb, "\t %s\n", pp->name); + sbuf_printf(sb, "\t "); + g_conf_printf_escaped(sb, "%s", pp->name); + sbuf_printf(sb, "\n"); sbuf_printf(sb, "\t %jd\n", (intmax_t)pp->mediasize); sbuf_printf(sb, "\t %u\n", pp->sectorsize); @@ -229,7 +234,9 @@ g_conf_geom(struct sbuf *sb, struct g_ge sbuf_printf(sb, " \n", gp); sbuf_printf(sb, " \n", gp->class); - g_conf_print_escaped(sb, " %s\n", gp->name); + sbuf_printf(sb, " "); + g_conf_printf_escaped(sb, "%s", gp->name); + sbuf_printf(sb, "\n"); sbuf_printf(sb, " %d\n", gp->rank); if (gp->flags & G_GEOM_WITHER) sbuf_printf(sb, " \n"); @@ -258,7 +265,9 @@ g_conf_class(struct sbuf *sb, struct g_c struct g_geom *gp2; sbuf_printf(sb, " \n", mp); - g_conf_print_escaped(sb, " %s\n", mp->name); + sbuf_printf(sb, " "); + g_conf_printf_escaped(sb, "%s", mp->name); + sbuf_printf(sb, "\n"); LIST_FOREACH(gp2, &mp->geom, geom) { if (gp != NULL && gp != gp2) continue; Modified: stable/10/sys/geom/geom_int.h ============================================================================== --- stable/10/sys/geom/geom_int.h Thu Jan 9 11:11:47 2014 (r260478) +++ stable/10/sys/geom/geom_int.h Thu Jan 9 11:13:03 2014 (r260479) @@ -57,6 +57,7 @@ extern int g_debugflags; /* geom_dump.c */ void g_confxml(void *, int flag); void g_conf_specific(struct sbuf *sb, struct g_class *mp, struct g_geom *gp, struct g_provider *pp, struct g_consumer *cp); +void g_conf_printf_escaped(struct sbuf *sb, const char *fmt, ...); void g_confdot(void *, int flag); void g_conftxt(void *, int flag); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 11:15:06 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 25C653A6; Thu, 9 Jan 2014 11:15:06 +0000 (UTC) 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 EDCDB18DC; Thu, 9 Jan 2014 11:15: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 s09BF55t095642; Thu, 9 Jan 2014 11:15:05 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09BF5WO095637; Thu, 9 Jan 2014 11:15:05 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091115.s09BF5WO095637@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 11:15:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260480 - stable/9/sys/geom X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 11:15:06 -0000 Author: mav Date: Thu Jan 9 11:15:05 2014 New Revision: 260480 URL: http://svnweb.freebsd.org/changeset/base/260480 Log: MFC r258683: Escape special XML chars, returned by some devices, confusing XML parsers. Modified: stable/9/sys/geom/geom_disk.c stable/9/sys/geom/geom_dump.c stable/9/sys/geom/geom_int.h Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) Modified: stable/9/sys/geom/geom_disk.c ============================================================================== --- stable/9/sys/geom/geom_disk.c Thu Jan 9 11:13:03 2014 (r260479) +++ stable/9/sys/geom/geom_disk.c Thu Jan 9 11:15:05 2014 (r260480) @@ -458,26 +458,36 @@ g_disk_dumpconf(struct sbuf *sb, const c bp->bio_length = DISK_IDENT_SIZE; bp->bio_data = buf; res = dp->d_getattr(bp); - sbuf_printf(sb, "%s%s\n", indent, + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", res == 0 ? buf: dp->d_ident); + sbuf_printf(sb, "\n"); bp->bio_attribute = "GEOM::lunid"; bp->bio_length = DISK_IDENT_SIZE; bp->bio_data = buf; - if (dp->d_getattr(bp) == 0) - sbuf_printf(sb, "%s%s\n", - indent, buf); + if (dp->d_getattr(bp) == 0) { + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", buf); + sbuf_printf(sb, "\n"); + } bp->bio_attribute = "GEOM::lunname"; bp->bio_length = DISK_IDENT_SIZE; bp->bio_data = buf; - if (dp->d_getattr(bp) == 0) - sbuf_printf(sb, "%s%s\n", - indent, buf); + if (dp->d_getattr(bp) == 0) { + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", buf); + sbuf_printf(sb, "\n"); + } g_destroy_bio(bp); g_free(buf); - } else - sbuf_printf(sb, "%s%s\n", indent, - dp->d_ident); - sbuf_printf(sb, "%s%s\n", indent, dp->d_descr); + } else { + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", dp->d_ident); + sbuf_printf(sb, "\n"); + } + sbuf_printf(sb, "%s", indent); + g_conf_printf_escaped(sb, "%s", dp->d_descr); + sbuf_printf(sb, "\n"); } } Modified: stable/9/sys/geom/geom_dump.c ============================================================================== --- stable/9/sys/geom/geom_dump.c Thu Jan 9 11:13:03 2014 (r260479) +++ stable/9/sys/geom/geom_dump.c Thu Jan 9 11:15:05 2014 (r260480) @@ -153,25 +153,28 @@ g_conftxt(void *p, int flag) } -static void -g_conf_print_escaped(struct sbuf *sb, const char *fmt, const char *str) +void +g_conf_printf_escaped(struct sbuf *sb, const char *fmt, ...) { struct sbuf *s; const u_char *c; + va_list ap; s = sbuf_new_auto(); + va_start(ap, fmt); + sbuf_vprintf(s, fmt, ap); + va_end(ap); + sbuf_finish(s); - for (c = str; *c != '\0'; c++) { + for (c = sbuf_data(s); *c != '\0'; c++) { if (*c == '&' || *c == '<' || *c == '>' || *c == '\'' || *c == '"' || *c > 0x7e) - sbuf_printf(s, "&#x%X;", *c); + sbuf_printf(sb, "&#x%X;", *c); else if (*c == '\t' || *c == '\n' || *c == '\r' || *c > 0x1f) - sbuf_putc(s, *c); + sbuf_putc(sb, *c); else - sbuf_putc(s, '?'); + sbuf_putc(sb, '?'); } - sbuf_finish(s); - sbuf_printf(sb, fmt, sbuf_data(s)); sbuf_delete(s); } @@ -203,7 +206,9 @@ g_conf_provider(struct sbuf *sb, struct sbuf_printf(sb, "\t \n", pp->geom); sbuf_printf(sb, "\t r%dw%de%d\n", pp->acr, pp->acw, pp->ace); - g_conf_print_escaped(sb, "\t %s\n", pp->name); + sbuf_printf(sb, "\t "); + g_conf_printf_escaped(sb, "%s", pp->name); + sbuf_printf(sb, "\n"); sbuf_printf(sb, "\t %jd\n", (intmax_t)pp->mediasize); sbuf_printf(sb, "\t %u\n", pp->sectorsize); @@ -228,7 +233,9 @@ g_conf_geom(struct sbuf *sb, struct g_ge sbuf_printf(sb, " \n", gp); sbuf_printf(sb, " \n", gp->class); - g_conf_print_escaped(sb, " %s\n", gp->name); + sbuf_printf(sb, " "); + g_conf_printf_escaped(sb, "%s", gp->name); + sbuf_printf(sb, "\n"); sbuf_printf(sb, " %d\n", gp->rank); if (gp->flags & G_GEOM_WITHER) sbuf_printf(sb, " \n"); @@ -257,7 +264,9 @@ g_conf_class(struct sbuf *sb, struct g_c struct g_geom *gp2; sbuf_printf(sb, " \n", mp); - g_conf_print_escaped(sb, " %s\n", mp->name); + sbuf_printf(sb, " "); + g_conf_printf_escaped(sb, "%s", mp->name); + sbuf_printf(sb, "\n"); LIST_FOREACH(gp2, &mp->geom, geom) { if (gp != NULL && gp != gp2) continue; Modified: stable/9/sys/geom/geom_int.h ============================================================================== --- stable/9/sys/geom/geom_int.h Thu Jan 9 11:13:03 2014 (r260479) +++ stable/9/sys/geom/geom_int.h Thu Jan 9 11:15:05 2014 (r260480) @@ -54,6 +54,7 @@ extern int g_debugflags; /* geom_dump.c */ void g_confxml(void *, int flag); void g_conf_specific(struct sbuf *sb, struct g_class *mp, struct g_geom *gp, struct g_provider *pp, struct g_consumer *cp); +void g_conf_printf_escaped(struct sbuf *sb, const char *fmt, ...); void g_confdot(void *, int flag); void g_conftxt(void *, int flag); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 11:58:49 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E28E3E6; Thu, 9 Jan 2014 11:58:49 +0000 (UTC) Received: from tensor.andric.com (tensor.andric.com [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 9A80F1D07; Thu, 9 Jan 2014 11:58:49 +0000 (UTC) Received: from [192.168.2.2] (unknown [77.243.161.229]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id 3B42E5C43; Thu, 9 Jan 2014 12:58:44 +0100 (CET) Content-Type: multipart/signed; boundary="Apple-Mail=_C8256D0E-D1F7-47B3-BB0E-41D33723874A"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r259730 - in head: gnu/lib/csu gnu/lib/libgcc gnu/lib/libstdc++ gnu/lib/libsupc++ lib/atf/libatf-c/tests share/mk sys/conf tools/tools/ath/athstats tools/tools/net80211/wlanstats usr.bi... From: Dimitry Andric In-Reply-To: Date: Thu, 9 Jan 2014 12:58:31 +0100 Message-Id: <7BAB80DB-AD2E-427A-AB9F-2E1A3F0DFE8C@FreeBSD.org> References: <201312221751.rBMHpYpj059326@svn.freebsd.org> To: Zbigniew Bodek X-Mailer: Apple Mail (2.1827) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 11:58:50 -0000 --Apple-Mail=_C8256D0E-D1F7-47B3-BB0E-41D33723874A Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=iso-8859-1 On 09 Jan 2014, at 02:19, Zbigniew Bodek wrote: > 2013/12/22 Dimitry Andric : ... >> Modified: >> head/gnu/lib/csu/Makefile >> head/gnu/lib/libgcc/Makefile >> head/gnu/lib/libstdc++/Makefile >> head/gnu/lib/libsupc++/Makefile >> head/lib/atf/libatf-c/tests/Makefile >> head/share/mk/bsd.sys.mk >> head/sys/conf/Makefile.arm >> head/tools/tools/ath/athstats/Makefile >> head/tools/tools/net80211/wlanstats/Makefile >> head/usr.bin/mkcsmapper/Makefile.inc > > It appears that this change broke backtrace on ARM. > Now only last stack frame can be displayed in bt. > However I don't have any fix or suggestion. Can you please try reverting each of these Makefiles individually, and check when the problem disappears? The only effective change caused by this commit is that some CFLAGS might appear in a different order. It might be possible that one of the Makefiles involved is overly sensitive to this. My first guess would be gnu/lib/csu, and after that gnu/lib/libgcc. -Dimitry --Apple-Mail=_C8256D0E-D1F7-47B3-BB0E-41D33723874A Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) iEYEARECAAYFAlLOjusACgkQsF6jCi4glqMLFQCgtlbNgrhhHPd7KMlWuUWhx8uZ 1eQAnixly2U3A0EPcHJ8WXXzR9VUF10z =2vVP -----END PGP SIGNATURE----- --Apple-Mail=_C8256D0E-D1F7-47B3-BB0E-41D33723874A-- From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 14:58:07 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 55761C77; Thu, 9 Jan 2014 14:58:07 +0000 (UTC) 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 409F51D54; Thu, 9 Jan 2014 14:58: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 s09Ew7ZQ081213; Thu, 9 Jan 2014 14:58:07 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09Ew7eb081212; Thu, 9 Jan 2014 14:58:07 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401091458.s09Ew7eb081212@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Thu, 9 Jan 2014 14:58:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260481 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 14:58:07 -0000 Author: ae Date: Thu Jan 9 14:58:06 2014 New Revision: 260481 URL: http://svnweb.freebsd.org/changeset/base/260481 Log: Add MRT6_DLOG() macro for debugging. Reduce number of MRT6DEBUG ifdefs and fix some broken format strings. MFC after: 1 week Sponsored by: Yandex LLC Modified: head/sys/netinet6/ip6_mroute.c Modified: head/sys/netinet6/ip6_mroute.c ============================================================================== --- head/sys/netinet6/ip6_mroute.c Thu Jan 9 11:15:05 2014 (r260480) +++ head/sys/netinet6/ip6_mroute.c Thu Jan 9 14:58:06 2014 (r260481) @@ -221,6 +221,14 @@ static VNET_DEFINE(u_int, mrt6debug) = 0 #define DEBUG_XMIT 0x10 #define DEBUG_REG 0x20 #define DEBUG_PIM 0x40 +#define DEBUG_ERR 0x80 +#define DEBUG_ANY 0x7f +#define MRT6_DLOG(m, fmt, ...) \ + if (V_mrt6debug & (m)) \ + log(((m) & DEBUG_ERR) ? LOG_ERR: LOG_DEBUG, \ + "%s: " fmt "\n", __func__, ##__VA_ARGS__) +#else +#define MRT6_DLOG(m, fmt, ...) #endif static void expire_upcalls(void *); @@ -526,12 +534,8 @@ static int ip6_mrouter_init(struct socket *so, int v, int cmd) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, - "ip6_mrouter_init: so_type = %d, pr_protocol = %d\n", - so->so_type, so->so_proto->pr_protocol); -#endif + MRT6_DLOG(DEBUG_ANY, "so_type = %d, pr_protocol = %d", + so->so_type, so->so_proto->pr_protocol); if (so->so_type != SOCK_RAW || so->so_proto->pr_protocol != IPPROTO_ICMPV6) @@ -560,11 +564,7 @@ ip6_mrouter_init(struct socket *so, int expire_upcalls, NULL); MROUTER6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "ip6_mrouter_init\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "finished"); return (0); } @@ -642,11 +642,7 @@ X_ip6_mrouter_done(void) V_ip6_mrouter_ver = 0; MROUTER6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "ip6_mrouter_done\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "finished"); return (0); } @@ -727,14 +723,8 @@ add_m6if(struct mif6ctl *mifcp) nummifs = mifcp->mif6c_mifi + 1; MIF6_UNLOCK(); - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, - "add_mif #%d, phyint %s\n", - mifcp->mif6c_mifi, - ifp->if_xname); -#endif + MRT6_DLOG(DEBUG_ANY, "mif #%d, phyint %s", mifcp->mif6c_mifi, + if_name(ifp)); return (0); } @@ -777,11 +767,7 @@ del_m6if_locked(mifi_t *mifip) if (mif6table[mifi - 1].m6_ifp) break; nummifs = mifi; - -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_DEBUG, "del_m6if %d, nummifs %d\n", *mifip, nummifs); -#endif + MRT6_DLOG(DEBUG_ANY, "mif %d, nummifs %d", *mifip, nummifs); return (0); } @@ -817,15 +803,10 @@ add_m6fc(struct mf6cctl *mfccp) /* If an entry already exists, just update the fields */ if (rt) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) { - log(LOG_DEBUG, - "add_m6fc no upcall h %d o %s g %s p %x\n", - ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent); - } -#endif + MRT6_DLOG(DEBUG_MFC, "no upcall o %s g %s p %x", + ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent); rt->mf6c_parent = mfccp->mf6cc_parent; rt->mf6c_ifset = mfccp->mf6cc_ifset; @@ -856,16 +837,12 @@ add_m6fc(struct mf6cctl *mfccp) &mfccp->mf6cc_mcastgrp.sin6_addr), mfccp->mf6cc_parent, rt->mf6c_stall); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) - log(LOG_DEBUG, - "add_m6fc o %s g %s p %x dbg %x\n", - ip6_sprintf(ip6bufo, - &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, - &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent, rt->mf6c_stall); -#endif + MRT6_DLOG(DEBUG_MFC, "o %s g %s p %x dbg %p", + ip6_sprintf(ip6bufo, + &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, + &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent, rt->mf6c_stall); rt->mf6c_origin = mfccp->mf6cc_origin; rt->mf6c_mcastgrp = mfccp->mf6cc_mcastgrp; @@ -898,15 +875,10 @@ add_m6fc(struct mf6cctl *mfccp) * It is possible that an entry is being inserted without an upcall */ if (nstl == 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) - log(LOG_DEBUG, - "add_mfc no upcall h %d o %s g %s p %x\n", - hash, - ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), - mfccp->mf6cc_parent); -#endif + MRT6_DLOG(DEBUG_MFC, "no upcall h %lu o %s g %s p %x", hash, + ip6_sprintf(ip6bufo, &mfccp->mf6cc_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfccp->mf6cc_mcastgrp.sin6_addr), + mfccp->mf6cc_parent); for (rt = mf6ctable[hash]; rt; rt = rt->mf6c_next) { @@ -992,6 +964,9 @@ collate(struct timeval *t) static int del_m6fc(struct mf6cctl *mfccp) { +#ifdef MRT6DEBUG + char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; +#endif struct sockaddr_in6 origin; struct sockaddr_in6 mcastgrp; struct mf6c *rt; @@ -1002,14 +977,9 @@ del_m6fc(struct mf6cctl *mfccp) mcastgrp = mfccp->mf6cc_mcastgrp; hash = MF6CHASH(origin.sin6_addr, mcastgrp.sin6_addr); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_MFC) { - char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; - log(LOG_DEBUG,"del_m6fc orig %s mcastgrp %s\n", - ip6_sprintf(ip6bufo, &origin.sin6_addr), - ip6_sprintf(ip6bufg, &mcastgrp.sin6_addr)); - } -#endif + MRT6_DLOG(DEBUG_MFC, "orig %s mcastgrp %s", + ip6_sprintf(ip6bufo, &origin.sin6_addr), + ip6_sprintf(ip6bufg, &mcastgrp.sin6_addr)); MFC6_LOCK(); @@ -1080,13 +1050,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru mifi_t mifi; char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, "ip6_mforward: src %s, dst %s, ifindex %d\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst), - ifp->if_index); -#endif + MRT6_DLOG(DEBUG_FORWARD, "src %s, dst %s, ifindex %d", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst), ifp->if_index); /* * Don't forward a packet with Hop limit of zero or one, @@ -1148,12 +1114,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru #endif /* UPCALL_TIMING */ MRT6STAT_INC(mrt6s_no_route); -#ifdef MRT6DEBUG - if (V_mrt6debug & (DEBUG_FORWARD | DEBUG_MFC)) - log(LOG_DEBUG, "ip6_mforward: no rte s %s g %s\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); -#endif + MRT6_DLOG(DEBUG_FORWARD | DEBUG_MFC, "no rte s %s g %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); /* * Allocate mbufs early so that we don't do extra work if we @@ -1249,11 +1212,8 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru return (EINVAL); } -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, - "getting the iif info in the kernel\n"); -#endif + MRT6_DLOG(DEBUG_FORWARD, + "getting the iif info in the kernel"); for (mifp = mif6table, mifi = 0; mifi < nummifs && mifp->m6_ifp != ifp; @@ -1339,6 +1299,9 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru static void expire_upcalls(void *unused) { +#ifdef MRT6DEBUG + char ip6bufo[INET6_ADDRSTRLEN], ip6bufg[INET6_ADDRSTRLEN]; +#endif struct rtdetq *rte; struct mf6c *mfc, **nptr; u_long i; @@ -1358,15 +1321,9 @@ expire_upcalls(void *unused) if (rte != NULL && mfc->mf6c_expire != 0 && --mfc->mf6c_expire == 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_EXPIRE) { - char ip6bufo[INET6_ADDRSTRLEN]; - char ip6bufg[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, "expire_upcalls: expiring (%s %s)\n", - ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr), - ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr)); - } -#endif + MRT6_DLOG(DEBUG_EXPIRE, "expiring (%s %s)", + ip6_sprintf(ip6bufo, &mfc->mf6c_origin.sin6_addr), + ip6_sprintf(ip6bufg, &mfc->mf6c_mcastgrp.sin6_addr)); /* * drop all the packets * free the mbuf with the pkt, if, timing info @@ -1426,13 +1383,9 @@ ip6_mdq(struct mbuf *m, struct ifnet *if mifi = rt->mf6c_parent; if ((mifi >= nummifs) || (mif6table[mifi].m6_ifp != ifp)) { /* came in the wrong interface */ -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_FORWARD) - log(LOG_DEBUG, - "wrong if: ifid %d mifi %d mififid %x\n", - ifp->if_index, mifi, - mif6table[mifi].m6_ifp->if_index); -#endif + MRT6_DLOG(DEBUG_FORWARD, + "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, + mifi, mif6table[mifi].m6_ifp->if_index); MRT6STAT_INC(mrt6s_wrong_if); rt->mf6c_wrong_if++; /* @@ -1509,10 +1462,8 @@ ip6_mdq(struct mbuf *m, struct ifnet *if MRT6STAT_INC(mrt6s_upcalls); if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_WARNING, "mdq, ip6_mrouter socket queue full\n"); -#endif + MRT6_DLOG(DEBUG_ANY, + "ip6_mrouter socket queue full"); MRT6STAT_INC(mrt6s_upq_sockfull); return (ENOBUFS); } /* if socket Q full */ @@ -1576,6 +1527,9 @@ ip6_mdq(struct mbuf *m, struct ifnet *if static void phyint_send(struct ip6_hdr *ip6, struct mif6 *mifp, struct mbuf *m) { +#ifdef MRT6DEBUG + char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#endif struct mbuf *mb_copy; struct ifnet *ifp = mifp->m6_ifp; int error = 0; @@ -1613,11 +1567,8 @@ phyint_send(struct ip6_hdr *ip6, struct error = ip6_output(mb_copy, NULL, NULL, IPV6_FORWARDING, &im6o, NULL, NULL); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) - log(LOG_DEBUG, "phyint_send on mif %d err %d\n", - mifp - mif6table, error); -#endif + MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", + (uint16_t)(mifp - mif6table), error); return; } @@ -1656,11 +1607,8 @@ phyint_send(struct ip6_hdr *ip6, struct m_clrprotoflags(m); /* Avoid confusing lower layers. */ error = (*ifp->if_output)(ifp, mb_copy, (struct sockaddr *)&dst6, NULL); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) - log(LOG_DEBUG, "phyint_send on mif %d err %d\n", - mifp - mif6table, error); -#endif + MRT6_DLOG(DEBUG_XMIT, "mif %u err %d", + (uint16_t)(mifp - mif6table), error); } else { /* * pMTU discovery is intentionally disabled by default, since @@ -1670,19 +1618,11 @@ phyint_send(struct ip6_hdr *ip6, struct if (V_ip6_mcast_pmtu) icmp6_error(mb_copy, ICMP6_PACKET_TOO_BIG, 0, linkmtu); else { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_XMIT) { - char ip6bufs[INET6_ADDRSTRLEN]; - char ip6bufd[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, - "phyint_send: packet too big on %s o %s " - "g %s size %d(discarded)\n", - if_name(ifp), - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst), - mb_copy->m_pkthdr.len); - } -#endif /* MRT6DEBUG */ + MRT6_DLOG(DEBUG_XMIT, " packet too big on %s o %s " + "g %s size %d (discarded)", if_name(ifp), + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst), + mb_copy->m_pkthdr.len); m_freem(mb_copy); /* simply discard the packet */ } } @@ -1691,19 +1631,17 @@ phyint_send(struct ip6_hdr *ip6, struct static int register_send(struct ip6_hdr *ip6, struct mif6 *mif, struct mbuf *m) { +#ifdef MRT6DEBUG + char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#endif struct mbuf *mm; int i, len = m->m_pkthdr.len; static struct sockaddr_in6 sin6 = { sizeof(sin6), AF_INET6 }; struct mrt6msg *im6; -#ifdef MRT6DEBUG - if (V_mrt6debug) { - char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; - log(LOG_DEBUG, "** IPv6 register_send **\n src %s dst %s\n", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); - } -#endif + MRT6_DLOG(DEBUG_ANY, "src %s dst %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); PIM6STAT_INC(pim6s_snd_registers); /* Make a copy of the packet to send to the user level process. */ @@ -1741,11 +1679,7 @@ register_send(struct ip6_hdr *ip6, struc MRT6STAT_INC(mrt6s_upcalls); if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { -#ifdef MRT6DEBUG - if (V_mrt6debug) - log(LOG_WARNING, - "register_send: ip6_mrouter socket queue full\n"); -#endif + MRT6_DLOG(DEBUG_ANY, "ip6_mrouter socket queue full"); MRT6STAT_INC(mrt6s_upq_sockfull); return (ENOBUFS); } @@ -1797,10 +1731,7 @@ pim6_input(struct mbuf **mp, int *offp, */ if (pimlen < PIM_MINLEN) { PIM6STAT_INC(pim6s_rcv_tooshort); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG,"pim6_input: PIM packet too short\n"); -#endif + MRT6_DLOG(DEBUG_PIM, "PIM packet too short"); m_freem(m); return (IPPROTO_DONE); } @@ -1850,11 +1781,7 @@ pim6_input(struct mbuf **mp, int *offp, if (in6_cksum(m, IPPROTO_PIM, off, cksumlen)) { PIM6STAT_INC(pim6s_rcv_badsum); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: invalid checksum\n"); -#endif + MRT6_DLOG(DEBUG_PIM, "invalid checksum"); m_freem(m); return (IPPROTO_DONE); } @@ -1864,11 +1791,9 @@ pim6_input(struct mbuf **mp, int *offp, /* PIM version check */ if (pim->pim_ver != PIM_VERSION) { PIM6STAT_INC(pim6s_rcv_badversion); -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: incorrect version %d, expecting %d\n", + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, + "incorrect version %d, expecting %d", pim->pim_ver, PIM_VERSION); -#endif m_freem(m); return (IPPROTO_DONE); } @@ -1892,12 +1817,8 @@ pim6_input(struct mbuf **mp, int *offp, PIM6STAT_INC(pim6s_rcv_registers); if ((reg_mif_num >= nummifs) || (reg_mif_num == (mifi_t) -1)) { -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: register mif not set: %d\n", - reg_mif_num); -#endif + MRT6_DLOG(DEBUG_PIM, "register mif not set: %d", + reg_mif_num); m_freem(m); return (IPPROTO_DONE); } @@ -1913,35 +1834,25 @@ pim6_input(struct mbuf **mp, int *offp, if (pimlen < PIM6_REG_MINLEN) { PIM6STAT_INC(pim6s_rcv_tooshort); PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: register packet size too " - "small %d from %s\n", + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, "register packet " + "size too small %d from %s", pimlen, ip6_sprintf(ip6bufs, &ip6->ip6_src)); -#endif m_freem(m); return (IPPROTO_DONE); } eip6 = (struct ip6_hdr *) (reghdr + 1); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input[register], eip6: %s -> %s, " - "eip6 plen %d\n", - ip6_sprintf(ip6bufs, &eip6->ip6_src), - ip6_sprintf(ip6bufd, &eip6->ip6_dst), - ntohs(eip6->ip6_plen)); -#endif + MRT6_DLOG(DEBUG_PIM, "eip6: %s -> %s, eip6 plen %d", + ip6_sprintf(ip6bufs, &eip6->ip6_src), + ip6_sprintf(ip6bufd, &eip6->ip6_dst), + ntohs(eip6->ip6_plen)); /* verify the version number of the inner packet */ if ((eip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) { PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - log(LOG_DEBUG, "pim6_input: invalid IP version (%d) " - "of the inner packet\n", + MRT6_DLOG(DEBUG_ANY, "invalid IP version (%d) " + "of the inner packet", (eip6->ip6_vfc & IPV6_VERSION)); -#endif m_freem(m); return (IPPROTO_NONE); } @@ -1949,13 +1860,9 @@ pim6_input(struct mbuf **mp, int *offp, /* verify the inner packet is destined to a mcast group */ if (!IN6_IS_ADDR_MULTICAST(&eip6->ip6_dst)) { PIM6STAT_INC(pim6s_rcv_badregisters); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) - log(LOG_DEBUG, - "pim6_input: inner packet of register " - "is not multicast %s\n", - ip6_sprintf(ip6bufd, &eip6->ip6_dst)); -#endif + MRT6_DLOG(DEBUG_PIM, "inner packet of register " + "is not multicast %s", + ip6_sprintf(ip6bufd, &eip6->ip6_dst)); m_freem(m); return (IPPROTO_DONE); } @@ -1965,11 +1872,8 @@ pim6_input(struct mbuf **mp, int *offp, */ mcp = m_copy(m, 0, off + PIM6_REG_MINLEN); if (mcp == NULL) { -#ifdef MRT6DEBUG - log(LOG_ERR, - "pim6_input: pim register: " - "could not copy register head\n"); -#endif + MRT6_DLOG(DEBUG_ANY | DEBUG_ERR, "pim register: " + "could not copy register head"); m_freem(m); return (IPPROTO_DONE); } @@ -1978,16 +1882,10 @@ pim6_input(struct mbuf **mp, int *offp, * forward the inner ip6 packet; point m_data at the inner ip6. */ m_adj(m, off + PIM_MINLEN); -#ifdef MRT6DEBUG - if (V_mrt6debug & DEBUG_PIM) { - log(LOG_DEBUG, - "pim6_input: forwarding decapsulated register: " - "src %s, dst %s, mif %d\n", - ip6_sprintf(ip6bufs, &eip6->ip6_src), - ip6_sprintf(ip6bufd, &eip6->ip6_dst), - reg_mif_num); - } -#endif + MRT6_DLOG(DEBUG_PIM, "forwarding decapsulated register: " + "src %s, dst %s, mif %d", + ip6_sprintf(ip6bufs, &eip6->ip6_src), + ip6_sprintf(ip6bufd, &eip6->ip6_dst), reg_mif_num); rc = if_simloop(mif6table[reg_mif_num].m6_ifp, m, dst.sin6_family, 0); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:02:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A6E2F6E; Thu, 9 Jan 2014 15:02:35 +0000 (UTC) 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 7349E1DEF; Thu, 9 Jan 2014 15:02:34 +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 1W1H7y-000FXT-2j; Thu, 09 Jan 2014 15:02:34 +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 s09F2Va5031747; Thu, 9 Jan 2014 08:02:31 -0700 (MST) (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/5xV9mBdQPhEKd+p4VjOML Subject: Re: svn commit: r259730 - in head: gnu/lib/csu gnu/lib/libgcc gnu/lib/libstdc++ gnu/lib/libsupc++ lib/atf/libatf-c/tests share/mk sys/conf tools/tools/ath/athstats tools/tools/net80211/wlanstats usr.bi... From: Ian Lepore To: Dimitry Andric In-Reply-To: <7BAB80DB-AD2E-427A-AB9F-2E1A3F0DFE8C@FreeBSD.org> References: <201312221751.rBMHpYpj059326@svn.freebsd.org> <7BAB80DB-AD2E-427A-AB9F-2E1A3F0DFE8C@FreeBSD.org> Content-Type: text/plain; charset="us-ascii" Date: Thu, 09 Jan 2014 08:02:31 -0700 Message-ID: <1389279751.1158.426.camel@revolution.hippie.lan> Mime-Version: 1.0 X-Mailer: Evolution 2.32.1 FreeBSD GNOME Team Port Content-Transfer-Encoding: 7bit Cc: Zbigniew Bodek , svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:02:35 -0000 On Thu, 2014-01-09 at 12:58 +0100, Dimitry Andric wrote: > On 09 Jan 2014, at 02:19, Zbigniew Bodek wrote: > > 2013/12/22 Dimitry Andric : > ... > >> Modified: > >> head/gnu/lib/csu/Makefile > >> head/gnu/lib/libgcc/Makefile > >> head/gnu/lib/libstdc++/Makefile > >> head/gnu/lib/libsupc++/Makefile > >> head/lib/atf/libatf-c/tests/Makefile > >> head/share/mk/bsd.sys.mk > >> head/sys/conf/Makefile.arm > >> head/tools/tools/ath/athstats/Makefile > >> head/tools/tools/net80211/wlanstats/Makefile > >> head/usr.bin/mkcsmapper/Makefile.inc > > > > It appears that this change broke backtrace on ARM. > > Now only last stack frame can be displayed in bt. > > However I don't have any fix or suggestion. > > Can you please try reverting each of these Makefiles individually, and > check when the problem disappears? The only effective change caused by > this commit is that some CFLAGS might appear in a different order. > > It might be possible that one of the Makefiles involved is overly > sensitive to this. My first guess would be gnu/lib/csu, and after that > gnu/lib/libgcc. > > -Dimitry > The difference is the compile flags. For example, when building the kernel at r259729: cc -c -O -pipe -std=c99 -g -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 -nostdinc -I. -I/local/build/staging/freebsd/imx53/src/sys -I/local/build/staging/freebsd/imx53/src/sys/contrib/altq -I/local/build/staging/freebsd/imx53/src/sys/contrib/libfdt -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -funwind-tables -mllvm -arm-enable-ehabi -ffreestanding -Werror /local/build/staging/freebsd/imx53/src/sys/arm/arm/trap.c At r259730: cc -c -O -pipe -std=c99 -g -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 -nostdinc -I. -I/local/build/staging/freebsd/imx53/src/sys -I/local/build/staging/freebsd/imx53/src/sys/contrib/altq -I/local/build/staging/freebsd/imx53/src/sys/contrib/libfdt -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -funwind-tables -ffreestanding -Werror /local/build/staging/freebsd/imx53/src/sys/arm/arm/trap.c The difference is that the -mllvm and -arm-enable-ehabi flags are missing. -- Ian From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:31:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8DAACE56; Thu, 9 Jan 2014 15:31:45 +0000 (UTC) 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 5FA3110BF; Thu, 9 Jan 2014 15:31: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 s09FVj0r096429; Thu, 9 Jan 2014 15:31:45 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09FVjuc096428; Thu, 9 Jan 2014 15:31:45 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401091531.s09FVjuc096428@svn.freebsd.org> From: Adrian Chadd Date: Thu, 9 Jan 2014 15:31:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260482 - head/sys/netgraph/bluetooth/drivers/ubt X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:31:45 -0000 Author: adrian Date: Thu Jan 9 15:31:44 2014 New Revision: 260482 URL: http://svnweb.freebsd.org/changeset/base/260482 Log: Be much more specific (and correct) about the device id matching. These device IDs have an AR3012 bluetooth device that shows up with bcdDevice=1 when it doesn't have the firmware loaded, and bcdDevice=2 when it's ready to speak full HCI. Tested: * AR5B225 PCIe - AR9485 + AR3012 Modified: head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c Modified: head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c ============================================================================== --- head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c Thu Jan 9 14:58:06 2014 (r260481) +++ head/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c Thu Jan 9 15:31:44 2014 (r260482) @@ -399,26 +399,26 @@ static const STRUCT_USB_HOST_ID ubt_igno { USB_VPI(0x03f0, 0x311d, 0) }, /* Atheros 3012 with sflash firmware */ - { USB_VPI(0x0cf3, 0x3004, 0) }, - { USB_VPI(0x0cf3, 0x311d, 0) }, - { USB_VPI(0x13d3, 0x3375, 0) }, - { USB_VPI(0x04ca, 0x3005, 0) }, - { USB_VPI(0x04ca, 0x3006, 0) }, - { USB_VPI(0x04ca, 0x3008, 0) }, - { USB_VPI(0x13d3, 0x3362, 0) }, - { USB_VPI(0x0cf3, 0xe004, 0) }, - { USB_VPI(0x0930, 0x0219, 0) }, - { USB_VPI(0x0489, 0xe057, 0) }, - { USB_VPI(0x13d3, 0x3393, 0) }, - { USB_VPI(0x0489, 0xe04e, 0) }, - { USB_VPI(0x0489, 0xe056, 0) }, + { USB_VPI(0x0cf3, 0x3004, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0cf3, 0x311d, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x13d3, 0x3375, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x04ca, 0x3005, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x04ca, 0x3006, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x04ca, 0x3008, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x13d3, 0x3362, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0cf3, 0xe004, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0930, 0x0219, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0489, 0xe057, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x13d3, 0x3393, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0489, 0xe04e, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0489, 0xe056, 0), USB_DEV_BCD_LTEQ(1) }, /* Atheros AR5BBU12 with sflash firmware */ - { USB_VPI(0x0489, 0xe02c, 0) }, + { USB_VPI(0x0489, 0xe02c, 0), USB_DEV_BCD_LTEQ(1) }, /* Atheros AR5BBU12 with sflash firmware */ - { USB_VPI(0x0489, 0xe03c, 0) }, - { USB_VPI(0x0489, 0xe036, 0) }, + { USB_VPI(0x0489, 0xe03c, 0), USB_DEV_BCD_LTEQ(1) }, + { USB_VPI(0x0489, 0xe036, 0), USB_DEV_BCD_LTEQ(1) }, }; /* List of supported bluetooth devices */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:34:23 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C926AFE7; Thu, 9 Jan 2014 15:34:23 +0000 (UTC) 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 B600D10E4; Thu, 9 Jan 2014 15:34: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 s09FYNGH096796; Thu, 9 Jan 2014 15:34:23 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09FYNQO096795; Thu, 9 Jan 2014 15:34:23 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401091534.s09FYNQO096795@svn.freebsd.org> From: Baptiste Daroussin Date: Thu, 9 Jan 2014 15:34:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260483 - head/sbin/kldload X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:34:23 -0000 Author: bapt Date: Thu Jan 9 15:34:23 2014 New Revision: 260483 URL: http://svnweb.freebsd.org/changeset/base/260483 Log: Import error message shown to the user when trying to load a module that is already loaded or compiled withing the kernel MFC after: 1 week Modified: head/sbin/kldload/kldload.c Modified: head/sbin/kldload/kldload.c ============================================================================== --- head/sbin/kldload/kldload.c Thu Jan 9 15:31:44 2014 (r260482) +++ head/sbin/kldload/kldload.c Thu Jan 9 15:34:23 2014 (r260483) @@ -181,8 +181,14 @@ main(int argc, char** argv) printf("%s is already " "loaded\n", argv[0]); } else { - warn("can't load %s", argv[0]); - errors++; + if (errno == EEXIST) { + warnx("can't load %s: module " + "already loaded or " + "in kernel", argv[0]); + } else { + warn("can't load %s", argv[0]); + errors++; + } } } else { if (verbose) From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:35:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B09F11B8; Thu, 9 Jan 2014 15:35:35 +0000 (UTC) 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 9C80610EE; Thu, 9 Jan 2014 15:35: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 s09FZZX1096980; Thu, 9 Jan 2014 15:35:35 GMT (envelope-from bapt@svn.freebsd.org) Received: (from bapt@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09FZZiX096979; Thu, 9 Jan 2014 15:35:35 GMT (envelope-from bapt@svn.freebsd.org) Message-Id: <201401091535.s09FZZiX096979@svn.freebsd.org> From: Baptiste Daroussin Date: Thu, 9 Jan 2014 15:35:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260484 - head/sbin/kldload X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:35:35 -0000 Author: bapt Date: Thu Jan 9 15:35:35 2014 New Revision: 260484 URL: http://svnweb.freebsd.org/changeset/base/260484 Log: Fix error counting Modified: head/sbin/kldload/kldload.c Modified: head/sbin/kldload/kldload.c ============================================================================== --- head/sbin/kldload/kldload.c Thu Jan 9 15:34:23 2014 (r260483) +++ head/sbin/kldload/kldload.c Thu Jan 9 15:35:35 2014 (r260484) @@ -181,14 +181,13 @@ main(int argc, char** argv) printf("%s is already " "loaded\n", argv[0]); } else { - if (errno == EEXIST) { + if (errno == EEXIST) warnx("can't load %s: module " "already loaded or " "in kernel", argv[0]); - } else { + else warn("can't load %s", argv[0]); - errors++; - } + errors++; } } else { if (verbose) From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:38:29 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 87A9B345; Thu, 9 Jan 2014 15:38:29 +0000 (UTC) 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 68D8D1113; Thu, 9 Jan 2014 15:38: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 s09FcTCn097298; Thu, 9 Jan 2014 15:38:29 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09FcTNM097296; Thu, 9 Jan 2014 15:38:29 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401091538.s09FcTNM097296@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Thu, 9 Jan 2014 15:38:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260485 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:38:29 -0000 Author: ae Date: Thu Jan 9 15:38:28 2014 New Revision: 260485 URL: http://svnweb.freebsd.org/changeset/base/260485 Log: Remove extra nesting from X_ip6_mforward() function. Also remove disabled definitions from ip6_mroute.h. PR: 185148 Sponsored by: Yandex LLC Modified: head/sys/netinet6/ip6_mroute.c head/sys/netinet6/ip6_mroute.h Modified: head/sys/netinet6/ip6_mroute.c ============================================================================== --- head/sys/netinet6/ip6_mroute.c Thu Jan 9 15:35:35 2014 (r260484) +++ head/sys/netinet6/ip6_mroute.c Thu Jan 9 15:38:28 2014 (r260485) @@ -1044,11 +1044,19 @@ socket_send(struct socket *s, struct mbu int X_ip6_mforward(struct ip6_hdr *ip6, struct ifnet *ifp, struct mbuf *m) { + struct rtdetq *rte; + struct mbuf *mb0; struct mf6c *rt; struct mif6 *mifp; struct mbuf *mm; + u_long hash; mifi_t mifi; char ip6bufs[INET6_ADDRSTRLEN], ip6bufd[INET6_ADDRSTRLEN]; +#ifdef UPCALL_TIMING + struct timeval tp; + + GET_TIME(tp); +#endif /* UPCALL_TIMING */ MRT6_DLOG(DEBUG_FORWARD, "src %s, dst %s, ifindex %d", ip6_sprintf(ip6bufs, &ip6->ip6_src), @@ -1096,200 +1104,178 @@ X_ip6_mforward(struct ip6_hdr *ip6, stru if (rt) { MFC6_UNLOCK(); return (ip6_mdq(m, ifp, rt)); - } else { - /* - * If we don't have a route for packet's origin, - * Make a copy of the packet & - * send message to routing daemon - */ + } - struct mbuf *mb0; - struct rtdetq *rte; - u_long hash; -/* int i, npkts;*/ -#ifdef UPCALL_TIMING - struct timeval tp; + /* + * If we don't have a route for packet's origin, + * Make a copy of the packet & send message to routing daemon. + */ + MRT6STAT_INC(mrt6s_no_route); + MRT6_DLOG(DEBUG_FORWARD | DEBUG_MFC, "no rte s %s g %s", + ip6_sprintf(ip6bufs, &ip6->ip6_src), + ip6_sprintf(ip6bufd, &ip6->ip6_dst)); - GET_TIME(tp); -#endif /* UPCALL_TIMING */ + /* + * Allocate mbufs early so that we don't do extra work if we + * are just going to fail anyway. + */ + rte = (struct rtdetq *)malloc(sizeof(*rte), M_MRTABLE6, M_NOWAIT); + if (rte == NULL) { + MFC6_UNLOCK(); + return (ENOBUFS); + } + mb0 = m_copy(m, 0, M_COPYALL); + /* + * Pullup packet header if needed before storing it, + * as other references may modify it in the meantime. + */ + if (mb0 && (M_HASCL(mb0) || mb0->m_len < sizeof(struct ip6_hdr))) + mb0 = m_pullup(mb0, sizeof(struct ip6_hdr)); + if (mb0 == NULL) { + free(rte, M_MRTABLE6); + MFC6_UNLOCK(); + return (ENOBUFS); + } - MRT6STAT_INC(mrt6s_no_route); - MRT6_DLOG(DEBUG_FORWARD | DEBUG_MFC, "no rte s %s g %s", - ip6_sprintf(ip6bufs, &ip6->ip6_src), - ip6_sprintf(ip6bufd, &ip6->ip6_dst)); + /* is there an upcall waiting for this packet? */ + hash = MF6CHASH(ip6->ip6_src, ip6->ip6_dst); + for (rt = mf6ctable[hash]; rt; rt = rt->mf6c_next) { + if (IN6_ARE_ADDR_EQUAL(&ip6->ip6_src, + &rt->mf6c_origin.sin6_addr) && + IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, + &rt->mf6c_mcastgrp.sin6_addr) && (rt->mf6c_stall != NULL)) + break; + } - /* - * Allocate mbufs early so that we don't do extra work if we - * are just going to fail anyway. - */ - rte = (struct rtdetq *)malloc(sizeof(*rte), M_MRTABLE6, - M_NOWAIT); - if (rte == NULL) { + if (rt == NULL) { + struct mrt6msg *im; +#ifdef MRT6_OINIT + struct omrt6msg *oim; +#endif + /* no upcall, so make a new entry */ + rt = (struct mf6c *)malloc(sizeof(*rt), M_MRTABLE6, M_NOWAIT); + if (rt == NULL) { + free(rte, M_MRTABLE6); + m_freem(mb0); MFC6_UNLOCK(); return (ENOBUFS); } - mb0 = m_copy(m, 0, M_COPYALL); /* - * Pullup packet header if needed before storing it, - * as other references may modify it in the meantime. + * Make a copy of the header to send to the user + * level process */ - if (mb0 && - (M_HASCL(mb0) || mb0->m_len < sizeof(struct ip6_hdr))) - mb0 = m_pullup(mb0, sizeof(struct ip6_hdr)); - if (mb0 == NULL) { + mm = m_copy(mb0, 0, sizeof(struct ip6_hdr)); + if (mm == NULL) { free(rte, M_MRTABLE6); + m_freem(mb0); + free(rt, M_MRTABLE6); MFC6_UNLOCK(); return (ENOBUFS); } - /* is there an upcall waiting for this packet? */ - hash = MF6CHASH(ip6->ip6_src, ip6->ip6_dst); - for (rt = mf6ctable[hash]; rt; rt = rt->mf6c_next) { - if (IN6_ARE_ADDR_EQUAL(&ip6->ip6_src, - &rt->mf6c_origin.sin6_addr) && - IN6_ARE_ADDR_EQUAL(&ip6->ip6_dst, - &rt->mf6c_mcastgrp.sin6_addr) && - (rt->mf6c_stall != NULL)) - break; - } - - if (rt == NULL) { - struct mrt6msg *im; -#ifdef MRT6_OINIT - struct omrt6msg *oim; -#endif - - /* no upcall, so make a new entry */ - rt = (struct mf6c *)malloc(sizeof(*rt), M_MRTABLE6, - M_NOWAIT); - if (rt == NULL) { - free(rte, M_MRTABLE6); - m_freem(mb0); - MFC6_UNLOCK(); - return (ENOBUFS); - } - /* - * Make a copy of the header to send to the user - * level process - */ - mm = m_copy(mb0, 0, sizeof(struct ip6_hdr)); - - if (mm == NULL) { - free(rte, M_MRTABLE6); - m_freem(mb0); - free(rt, M_MRTABLE6); - MFC6_UNLOCK(); - return (ENOBUFS); - } - - /* - * Send message to routing daemon - */ - sin6.sin6_addr = ip6->ip6_src; - - im = NULL; + /* + * Send message to routing daemon + */ + sin6.sin6_addr = ip6->ip6_src; + im = NULL; #ifdef MRT6_OINIT - oim = NULL; + oim = NULL; #endif - switch (V_ip6_mrouter_ver) { + switch (V_ip6_mrouter_ver) { #ifdef MRT6_OINIT - case MRT6_OINIT: - oim = mtod(mm, struct omrt6msg *); - oim->im6_msgtype = MRT6MSG_NOCACHE; - oim->im6_mbz = 0; - break; -#endif - case MRT6_INIT: - im = mtod(mm, struct mrt6msg *); - im->im6_msgtype = MRT6MSG_NOCACHE; - im->im6_mbz = 0; - break; - default: - free(rte, M_MRTABLE6); - m_freem(mb0); - free(rt, M_MRTABLE6); - MFC6_UNLOCK(); - return (EINVAL); - } - - MRT6_DLOG(DEBUG_FORWARD, - "getting the iif info in the kernel"); + case MRT6_OINIT: + oim = mtod(mm, struct omrt6msg *); + oim->im6_msgtype = MRT6MSG_NOCACHE; + oim->im6_mbz = 0; + break; +#endif + case MRT6_INIT: + im = mtod(mm, struct mrt6msg *); + im->im6_msgtype = MRT6MSG_NOCACHE; + im->im6_mbz = 0; + break; + default: + free(rte, M_MRTABLE6); + m_freem(mb0); + free(rt, M_MRTABLE6); + MFC6_UNLOCK(); + return (EINVAL); + } - for (mifp = mif6table, mifi = 0; - mifi < nummifs && mifp->m6_ifp != ifp; - mifp++, mifi++) + MRT6_DLOG(DEBUG_FORWARD, "getting the iif info in the kernel"); + for (mifp = mif6table, mifi = 0; + mifi < nummifs && mifp->m6_ifp != ifp; mifp++, mifi++) ; - switch (V_ip6_mrouter_ver) { + switch (V_ip6_mrouter_ver) { #ifdef MRT6_OINIT - case MRT6_OINIT: - oim->im6_mif = mifi; - break; -#endif - case MRT6_INIT: - im->im6_mif = mifi; - break; - } + case MRT6_OINIT: + oim->im6_mif = mifi; + break; +#endif + case MRT6_INIT: + im->im6_mif = mifi; + break; + } + + if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { + log(LOG_WARNING, "ip6_mforward: ip6_mrouter " + "socket queue full\n"); + MRT6STAT_INC(mrt6s_upq_sockfull); + free(rte, M_MRTABLE6); + m_freem(mb0); + free(rt, M_MRTABLE6); + MFC6_UNLOCK(); + return (ENOBUFS); + } + + MRT6STAT_INC(mrt6s_upcalls); - if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { - log(LOG_WARNING, "ip6_mforward: ip6_mrouter " - "socket queue full\n"); - MRT6STAT_INC(mrt6s_upq_sockfull); + /* insert new entry at head of hash chain */ + bzero(rt, sizeof(*rt)); + rt->mf6c_origin.sin6_family = AF_INET6; + rt->mf6c_origin.sin6_len = sizeof(struct sockaddr_in6); + rt->mf6c_origin.sin6_addr = ip6->ip6_src; + rt->mf6c_mcastgrp.sin6_family = AF_INET6; + rt->mf6c_mcastgrp.sin6_len = sizeof(struct sockaddr_in6); + rt->mf6c_mcastgrp.sin6_addr = ip6->ip6_dst; + rt->mf6c_expire = UPCALL_EXPIRE; + n6expire[hash]++; + rt->mf6c_parent = MF6C_INCOMPLETE_PARENT; + + /* link into table */ + rt->mf6c_next = mf6ctable[hash]; + mf6ctable[hash] = rt; + /* Add this entry to the end of the queue */ + rt->mf6c_stall = rte; + } else { + /* determine if q has overflowed */ + struct rtdetq **p; + int npkts = 0; + + for (p = &rt->mf6c_stall; *p != NULL; p = &(*p)->next) + if (++npkts > MAX_UPQ6) { + MRT6STAT_INC(mrt6s_upq_ovflw); free(rte, M_MRTABLE6); m_freem(mb0); - free(rt, M_MRTABLE6); MFC6_UNLOCK(); - return (ENOBUFS); + return (0); } - MRT6STAT_INC(mrt6s_upcalls); - - /* insert new entry at head of hash chain */ - bzero(rt, sizeof(*rt)); - rt->mf6c_origin.sin6_family = AF_INET6; - rt->mf6c_origin.sin6_len = sizeof(struct sockaddr_in6); - rt->mf6c_origin.sin6_addr = ip6->ip6_src; - rt->mf6c_mcastgrp.sin6_family = AF_INET6; - rt->mf6c_mcastgrp.sin6_len = sizeof(struct sockaddr_in6); - rt->mf6c_mcastgrp.sin6_addr = ip6->ip6_dst; - rt->mf6c_expire = UPCALL_EXPIRE; - n6expire[hash]++; - rt->mf6c_parent = MF6C_INCOMPLETE_PARENT; - - /* link into table */ - rt->mf6c_next = mf6ctable[hash]; - mf6ctable[hash] = rt; - /* Add this entry to the end of the queue */ - rt->mf6c_stall = rte; - } else { - /* determine if q has overflowed */ - struct rtdetq **p; - int npkts = 0; - - for (p = &rt->mf6c_stall; *p != NULL; p = &(*p)->next) - if (++npkts > MAX_UPQ6) { - MRT6STAT_INC(mrt6s_upq_ovflw); - free(rte, M_MRTABLE6); - m_freem(mb0); - MFC6_UNLOCK(); - return (0); - } - - /* Add this entry to the end of the queue */ - *p = rte; - } + /* Add this entry to the end of the queue */ + *p = rte; + } - rte->next = NULL; - rte->m = mb0; - rte->ifp = ifp; + rte->next = NULL; + rte->m = mb0; + rte->ifp = ifp; #ifdef UPCALL_TIMING - rte->t = tp; + rte->t = tp; #endif /* UPCALL_TIMING */ - MFC6_UNLOCK(); + MFC6_UNLOCK(); - return (0); - } + return (0); } /* Modified: head/sys/netinet6/ip6_mroute.h ============================================================================== --- head/sys/netinet6/ip6_mroute.h Thu Jan 9 15:35:35 2014 (r260484) +++ head/sys/netinet6/ip6_mroute.h Thu Jan 9 15:38:28 2014 (r260485) @@ -145,11 +145,6 @@ struct mrt6stat { struct omrt6msg { u_long unused1; u_char im6_msgtype; /* what type of message */ -#if 0 -#define MRT6MSG_NOCACHE 1 -#define MRT6MSG_WRONGMIF 2 -#define MRT6MSG_WHOLEPKT 3 /* used for user level encap*/ -#endif u_char im6_mbz; /* must be zero */ u_char im6_mif; /* mif rec'd on */ u_char unused2; @@ -199,7 +194,7 @@ struct sioc_mif_req6 { u_quad_t obytes; /* Output byte count on mif */ }; -#if defined(_KERNEL) || defined(KERNEL) +#ifdef _KERNEL /* * The kernel's multicast-interface structure. */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:55:55 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C7A6FAEE; Thu, 9 Jan 2014 15:55:55 +0000 (UTC) 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 B3A761272; Thu, 9 Jan 2014 15:55: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 s09Fttav004939; Thu, 9 Jan 2014 15:55:55 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09Fttju004938; Thu, 9 Jan 2014 15:55:55 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401091555.s09Fttju004938@svn.freebsd.org> From: Alexander Motin Date: Thu, 9 Jan 2014 15:55:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260486 - head/etc/defaults X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:55:55 -0000 Author: mav Date: Thu Jan 9 15:55:55 2014 New Revision: 260486 URL: http://svnweb.freebsd.org/changeset/base/260486 Log: Remove very low default limit of 4 nfsd threads. nfsd's own default is 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... days. Modified: head/etc/defaults/rc.conf Modified: head/etc/defaults/rc.conf ============================================================================== --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 (r260485) +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 (r260486) @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is a nfs_access_cache="60" # Client cache timeout in seconds nfs_server_enable="NO" # This host is an NFS server (or NO). oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). mountd_enable="NO" # Run mountd (or NO). mountd_flags="-r" # Flags to mountd (if NFS server enabled). weak_mountd_authentication="NO" # Allow non-root mount requests to be served. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 15:57:08 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 89D5EC49; Thu, 9 Jan 2014 15:57:08 +0000 (UTC) Received: from mail-qc0-x22b.google.com (mail-qc0-x22b.google.com [IPv6:2607:f8b0:400d:c01::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 13F811287; Thu, 9 Jan 2014 15:57:08 +0000 (UTC) Received: by mail-qc0-f171.google.com with SMTP id n7so1265115qcx.16 for ; Thu, 09 Jan 2014 07:57:07 -0800 (PST) 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=IxQnWPtLD3hRd1a3XF6YBD5bCWEt6L2ahXqY1rkfRg4=; b=0CrGFQ3X0JJUpy/OtE42/7kw6ugGkIz6pJv/ITvJ5thS9jys6k+VZrxp7dLNR5llfh 45lIsTlKaOUhKl0gtKvWDayavHa1zj5ndTxCkyAtmZb4XRUgrzF6wu4Y3c7BW8qv0UKW ECr6AYD//WFkt3RL+cDp6fhsKhmVQ20eW5Nnaq6mvmFrMSG2P8RszVhHkhyOKBg29Fqd 9ZkIBfc7D+9umFn4hjwpKMK0PWCpyacJkpfxSqNPLiflUw1NpKfQUlwGs72NSDOKklzK Td7RpBOWkzBSOZMO9IaIbv10f57qUjGnmzLUYyrgCMA35WsRLfSKkkzkjMjcQV0S+ObH ammg== MIME-Version: 1.0 X-Received: by 10.49.24.211 with SMTP id w19mr8982738qef.9.1389283027019; Thu, 09 Jan 2014 07:57:07 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Thu, 9 Jan 2014 07:57:06 -0800 (PST) In-Reply-To: <201401091555.s09Fttju004938@svn.freebsd.org> References: <201401091555.s09Fttju004938@svn.freebsd.org> Date: Thu, 9 Jan 2014 07:57:06 -0800 X-Google-Sender-Auth: 4FTy3HYHDgATZY7I9LLkRJ4rs6k Message-ID: Subject: Re: svn commit: r260486 - head/etc/defaults From: Adrian Chadd 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 15:57:08 -0000 .. so with say, 128 core boxes showing up, is this really a good default? -a On 9 January 2014 07:55, Alexander Motin wrote: > Author: mav > Date: Thu Jan 9 15:55:55 2014 > New Revision: 260486 > URL: http://svnweb.freebsd.org/changeset/base/260486 > > Log: > Remove very low default limit of 4 nfsd threads. nfsd's own default is > 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... days. > > Modified: > head/etc/defaults/rc.conf > > Modified: head/etc/defaults/rc.conf > ============================================================================== > --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 (r260485) > +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 (r260486) > @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is a > nfs_access_cache="60" # Client cache timeout in seconds > nfs_server_enable="NO" # This host is an NFS server (or NO). > oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). > -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). > +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). > mountd_enable="NO" # Run mountd (or NO). > mountd_flags="-r" # Flags to mountd (if NFS server enabled). > weak_mountd_authentication="NO" # Allow non-root mount requests to be served. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 16:00:36 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A6508DB8; Thu, 9 Jan 2014 16:00:36 +0000 (UTC) Received: from mail-wi0-x235.google.com (mail-wi0-x235.google.com [IPv6:2a00:1450:400c:c05::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C09BC12A7; Thu, 9 Jan 2014 16:00:35 +0000 (UTC) Received: by mail-wi0-f181.google.com with SMTP id hq4so3669544wib.2 for ; Thu, 09 Jan 2014 08:00:34 -0800 (PST) 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=EbgrflZdDkeJ/ebHeofWIGn51SZj4ZMbJlRKHDBSqzQ=; b=Xwa4e1jXpWvWAdMhdoua1JbaiBruNNaTsfc1EzcX1ObQ5l0Lgc5woOyNxOwbANiO76 vfDyHtetK1CqLWS+CisK2DinPRx4iWIqFP0hox9l3a6Xg27ZobPqIvkUjj8xmRmZogFb +TsJkzIvi7WfZReCsAzqqi/z00NsMn8Qi3EYPofoDGYPa61WR90iWV7um/hfvi8G+A4n +iRIT949YQ7vg+ojFXPSGuJUfUpaC4yCh4WN8Jtiy8m7okCOyFZAOaHl2iYDjbIQFuX/ 6eDn3GG3tP537LpT1im5HpO0tYUZnwgM2kCXnUr6W+95VOJUnqyuiskZGRGMxMpUXeG1 zV3g== X-Received: by 10.194.6.42 with SMTP id x10mr3622537wjx.17.1389283234236; Thu, 09 Jan 2014 08:00:34 -0800 (PST) Received: from mavbook.mavhome.dp.ua ([134.249.139.101]) by mx.google.com with ESMTPSA id uq2sm1898720wjc.5.2014.01.09.08.00.32 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 09 Jan 2014 08:00:33 -0800 (PST) Sender: Alexander Motin Message-ID: <52CEC79F.2090708@FreeBSD.org> Date: Thu, 09 Jan 2014 18:00:31 +0200 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Adrian Chadd Subject: Re: svn commit: r260486 - head/etc/defaults References: <201401091555.s09Fttju004938@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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 16:00:36 -0000 On 09.01.2014 17:57, Adrian Chadd wrote: > .. so with say, 128 core boxes showing up, is this really a good default? And what is the price? 16K+ of KVA per thread for thread stack, etc? 4 threads is probably much worse default there. May be nfsd's default could be tuned, but obviously it should not be hardcoded value. > On 9 January 2014 07:55, Alexander Motin wrote: >> Author: mav >> Date: Thu Jan 9 15:55:55 2014 >> New Revision: 260486 >> URL: http://svnweb.freebsd.org/changeset/base/260486 >> >> Log: >> Remove very low default limit of 4 nfsd threads. nfsd's own default is >> 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... days. >> >> Modified: >> head/etc/defaults/rc.conf >> >> Modified: head/etc/defaults/rc.conf >> ============================================================================== >> --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 (r260485) >> +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 (r260486) >> @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is a >> nfs_access_cache="60" # Client cache timeout in seconds >> nfs_server_enable="NO" # This host is an NFS server (or NO). >> oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). >> -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). >> +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). >> mountd_enable="NO" # Run mountd (or NO). >> mountd_flags="-r" # Flags to mountd (if NFS server enabled). >> weak_mountd_authentication="NO" # Allow non-root mount requests to be served. -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 16:18:31 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 14BB139D; Thu, 9 Jan 2014 16:18:31 +0000 (UTC) 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 9044F1478; Thu, 9 Jan 2014 16:18:30 +0000 (UTC) Received: by mail-qc0-f172.google.com with SMTP id c9so1292629qcz.31 for ; Thu, 09 Jan 2014 08:18:29 -0800 (PST) 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=2SwdR2aEdqtfBGt/QlWBrpOqRiiJebZdm6nKeJHTTGU=; b=e4//9ebIyLBcKMxHtMDTAxjpk70Zaye3wPKxiGzm8Cd+476qSa2SggnWscb+GxL2kk mm2NrSsVC4vXRehyuqMdBFeOv+znxHUlMDwA19E7Knmm//PMC8qI426cpybDLmzzonu0 aO+YqpXd108UgSkJRmOSluGlBwFcNHBoQNIR/fWvZCtFkdSKooRqpWpOhVCcuTqy4s/V 7VOvJ9yhelyewepCeGP2cai/d6FWI3utnWUq8ky1n5IKvtMWR8pwSwFCYrACPE+KtXqt Wz0r0x1Je7UT4TqShorVGgcAvLLlhnTJQZPEF5nL/ZVLaXP6qfY6F08BXxKwCX/rBzxt vnUA== MIME-Version: 1.0 X-Received: by 10.49.30.197 with SMTP id u5mr9086432qeh.33.1389284309729; Thu, 09 Jan 2014 08:18:29 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Thu, 9 Jan 2014 08:18:29 -0800 (PST) In-Reply-To: <52CEC79F.2090708@FreeBSD.org> References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@FreeBSD.org> Date: Thu, 9 Jan 2014 08:18:29 -0800 X-Google-Sender-Auth: WO5k4vjspmIhRPaq63wMyC2rts0 Message-ID: Subject: Re: svn commit: r260486 - head/etc/defaults From: Adrian Chadd 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 16:18:31 -0000 Hi, Depends if you're thinking locally or globally. Locally - for nfs? not a big deal. Globally - NFS, ZFS, GELI, geom/cam, NIC, etc.. suddenly your machine could default to having a couple thousand worker threads just for a HBA and a 10GE NIC. That's a little nuts. -a On 9 January 2014 08:00, Alexander Motin wrote: > On 09.01.2014 17:57, Adrian Chadd wrote: >> >> .. so with say, 128 core boxes showing up, is this really a good default? > > > And what is the price? 16K+ of KVA per thread for thread stack, etc? 4 > threads is probably much worse default there. May be nfsd's default could be > tuned, but obviously it should not be hardcoded value. > > >> On 9 January 2014 07:55, Alexander Motin wrote: >>> >>> Author: mav >>> Date: Thu Jan 9 15:55:55 2014 >>> New Revision: 260486 >>> URL: http://svnweb.freebsd.org/changeset/base/260486 >>> >>> Log: >>> Remove very low default limit of 4 nfsd threads. nfsd's own default >>> is >>> 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... days. >>> >>> Modified: >>> head/etc/defaults/rc.conf >>> >>> Modified: head/etc/defaults/rc.conf >>> >>> ============================================================================== >>> --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 (r260485) >>> +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 (r260486) >>> @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is a >>> nfs_access_cache="60" # Client cache timeout in seconds >>> nfs_server_enable="NO" # This host is an NFS server (or NO). >>> oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). >>> -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). >>> +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). >>> mountd_enable="NO" # Run mountd (or NO). >>> mountd_flags="-r" # Flags to mountd (if NFS server >>> enabled). >>> weak_mountd_authentication="NO" # Allow non-root mount requests >>> to be served. > > > > -- > Alexander Motin From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 16:29:16 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (unknown [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 ESMTPS id 924A4832; Thu, 9 Jan 2014 16:29:16 +0000 (UTC) Received: from mail-ee0-x231.google.com (mail-ee0-x231.google.com [IPv6:2a00:1450:4013:c00::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A8F0115B0; Thu, 9 Jan 2014 16:29:15 +0000 (UTC) Received: by mail-ee0-f49.google.com with SMTP id c41so1433907eek.22 for ; Thu, 09 Jan 2014 08:29:14 -0800 (PST) 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=VtScv1xC/ct4Ybenh8jN2f8FdGjl5HOmK7tj2sOSV9A=; b=upxFD8IrPr9K42h9YYzIhSSE2KLWtMVJs0xm3NNLbz9n9KkIjyUpWpEmBjHliuUh9Z xWYe/Ht/4BZIDOlvdiCOBToIOmR3B6uvOscST85RHNWqKrHLfP/LPmSGfHVfQRM9MWqk LefiNmNcxVhZZtJTH5vlQBw7y+APgMNBtHisP0cNQwOFMMhiHBwO77jdD6GWATJNwaNv IRFAdn/rBg9sxbOEsue2RTjDCe4J82vTBgZElVgiIRGu0RwyknP25+secbDBiiZ2yUAh 97/YRjQLBxMufxA968voKh14+l68umjildTORt5Z3Aa4AAhkbUjPV42GONxhb9gVa20r 9PPg== X-Received: by 10.15.24.72 with SMTP id i48mr4299765eeu.74.1389284954017; Thu, 09 Jan 2014 08:29:14 -0800 (PST) Received: from mavbook.mavhome.dp.ua ([134.249.139.101]) by mx.google.com with ESMTPSA id 7sm6902961eee.12.2014.01.09.08.29.12 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 09 Jan 2014 08:29:13 -0800 (PST) Sender: Alexander Motin Message-ID: <52CECE57.4040002@FreeBSD.org> Date: Thu, 09 Jan 2014 18:29:11 +0200 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Adrian Chadd Subject: Re: svn commit: r260486 - head/etc/defaults References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 16:29:16 -0000 On 09.01.2014 18:18, Adrian Chadd wrote: > Depends if you're thinking locally or globally. > > Locally - for nfs? not a big deal. > > Globally - NFS, ZFS, GELI, geom/cam, NIC, etc.. suddenly your machine > could default to having a couple thousand worker threads just for a > HBA and a 10GE NIC. That's a little nuts. So, what is your point? Each NFS thread (unlike GEOM or CAM) executes only _one_ request at a time. Would you like your 128-core/many-spindle system executed only 4 synchronous requests at a time? > On 9 January 2014 08:00, Alexander Motin wrote: >> On 09.01.2014 17:57, Adrian Chadd wrote: >>> >>> .. so with say, 128 core boxes showing up, is this really a good default? >> >> >> And what is the price? 16K+ of KVA per thread for thread stack, etc? 4 >> threads is probably much worse default there. May be nfsd's default could be >> tuned, but obviously it should not be hardcoded value. >> >> >>> On 9 January 2014 07:55, Alexander Motin wrote: >>>> >>>> Author: mav >>>> Date: Thu Jan 9 15:55:55 2014 >>>> New Revision: 260486 >>>> URL: http://svnweb.freebsd.org/changeset/base/260486 >>>> >>>> Log: >>>> Remove very low default limit of 4 nfsd threads. nfsd's own default >>>> is >>>> 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... days. >>>> >>>> Modified: >>>> head/etc/defaults/rc.conf >>>> >>>> Modified: head/etc/defaults/rc.conf >>>> >>>> ============================================================================== >>>> --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 (r260485) >>>> +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 (r260486) >>>> @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is a >>>> nfs_access_cache="60" # Client cache timeout in seconds >>>> nfs_server_enable="NO" # This host is an NFS server (or NO). >>>> oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). >>>> -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). >>>> +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). >>>> mountd_enable="NO" # Run mountd (or NO). >>>> mountd_flags="-r" # Flags to mountd (if NFS server >>>> enabled). >>>> weak_mountd_authentication="NO" # Allow non-root mount requests >>>> to be served. >> >> >> >> -- >> Alexander Motin -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 17:14:14 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 28972930; Thu, 9 Jan 2014 17:14:14 +0000 (UTC) Received: from mail-qa0-x236.google.com (mail-qa0-x236.google.com [IPv6:2607:f8b0:400d:c00::236]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A060619FB; Thu, 9 Jan 2014 17:14:13 +0000 (UTC) Received: by mail-qa0-f54.google.com with SMTP id j7so3185806qaq.27 for ; Thu, 09 Jan 2014 09:14:12 -0800 (PST) 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=WgsO8JR1rGiZD3TuWx9+AoIbB/RlqAHN0E2aRf3bUSk=; b=kERYs+l6IZ6z5GfsUD4PmC4C6FEvVJH3YUYIREM45JTnd9703duvCM1JIr4chNdWpJ n4TxISRbAtlGVu18JF2OV/YhIMb75LN2cbLPZZS+uqghz2rblUaSyrBiR7+Zzo5ULL6h BhWqqmS9CC89o3vQZSWPc3XmcEUA2G8KBRFQFWKguyfRDt2PphzlXOMxjfo5HPiD3m4i e8lxT/kBn5nS12TN3PWn39KyyPRge/T4eqyYedHS111LEt9PR617ErA4O+rURZ/xRnFn rgu/630YVfHlJMNZAzwFeMXc8W+K+K1bdH6LmkMTLp8rdrVKHNrj+nD9IprRyXuCR4b7 NvIg== MIME-Version: 1.0 X-Received: by 10.49.76.66 with SMTP id i2mr9460328qew.35.1389287652695; Thu, 09 Jan 2014 09:14:12 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Thu, 9 Jan 2014 09:14:12 -0800 (PST) Received: by 10.224.52.8 with HTTP; Thu, 9 Jan 2014 09:14:12 -0800 (PST) In-Reply-To: <52CECE57.4040002@FreeBSD.org> References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@FreeBSD.org> <52CECE57.4040002@FreeBSD.org> Date: Thu, 9 Jan 2014 09:14:12 -0800 X-Google-Sender-Auth: K61sgPz6tACkdEJ4bXtI_J6IhJ8 Message-ID: Subject: Re: svn commit: r260486 - head/etc/defaults From: Adrian Chadd To: Alexander Motin Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.17 Cc: "svn-src-head@freebsd.org" , svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 17:14:14 -0000 If it's one request per nfsd then we should likely scale it separate to ncpu. Otherwise the default for two or core boxes may not be enough. Adrian On Jan 9, 2014 11:29 AM, "Alexander Motin" wrote: > On 09.01.2014 18:18, Adrian Chadd wrote: > >> Depends if you're thinking locally or globally. >> >> Locally - for nfs? not a big deal. >> >> Globally - NFS, ZFS, GELI, geom/cam, NIC, etc.. suddenly your machine >> could default to having a couple thousand worker threads just for a >> HBA and a 10GE NIC. That's a little nuts. >> > > So, what is your point? Each NFS thread (unlike GEOM or CAM) executes only > _one_ request at a time. Would you like your 128-core/many-spindle system > executed only 4 synchronous requests at a time? > > On 9 January 2014 08:00, Alexander Motin wrote: >> >>> On 09.01.2014 17:57, Adrian Chadd wrote: >>> >>>> >>>> .. so with say, 128 core boxes showing up, is this really a good >>>> default? >>>> >>> >>> >>> And what is the price? 16K+ of KVA per thread for thread stack, etc? 4 >>> threads is probably much worse default there. May be nfsd's default >>> could be >>> tuned, but obviously it should not be hardcoded value. >>> >>> >>> On 9 January 2014 07:55, Alexander Motin wrote: >>>> >>>>> >>>>> Author: mav >>>>> Date: Thu Jan 9 15:55:55 2014 >>>>> New Revision: 260486 >>>>> URL: http://svnweb.freebsd.org/changeset/base/260486 >>>>> >>>>> Log: >>>>> Remove very low default limit of 4 nfsd threads. nfsd's own >>>>> default >>>>> is >>>>> 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... >>>>> days. >>>>> >>>>> Modified: >>>>> head/etc/defaults/rc.conf >>>>> >>>>> Modified: head/etc/defaults/rc.conf >>>>> >>>>> ============================================================ >>>>> ================== >>>>> --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 >>>>> (r260485) >>>>> +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 >>>>> (r260486) >>>>> @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is >>>>> a >>>>> nfs_access_cache="60" # Client cache timeout in seconds >>>>> nfs_server_enable="NO" # This host is an NFS server (or NO). >>>>> oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). >>>>> -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). >>>>> +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). >>>>> mountd_enable="NO" # Run mountd (or NO). >>>>> mountd_flags="-r" # Flags to mountd (if NFS server >>>>> enabled). >>>>> weak_mountd_authentication="NO" # Allow non-root mount >>>>> requests >>>>> to be served. >>>>> >>>> >>> >>> >>> -- >>> Alexander Motin >>> >> > > -- > Alexander Motin > From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 18:13:26 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AD4709A2; Thu, 9 Jan 2014 18:13:26 +0000 (UTC) Received: from svn.freebsd.org (unknown [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 8E4E91F57; Thu, 9 Jan 2014 18: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 s09IDQY0058188; Thu, 9 Jan 2014 18:13:26 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09IDPlU058184; Thu, 9 Jan 2014 18:13:25 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401091813.s09IDPlU058184@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Thu, 9 Jan 2014 18:13:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260488 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 18:13:26 -0000 Author: melifaro Date: Thu Jan 9 18:13:25 2014 New Revision: 260488 URL: http://svnweb.freebsd.org/changeset/base/260488 Log: Split rt_newaddrmsg_fib() into two different functions. Adding/deleting interface addresses involves access to 3 different subsystems, int different parts of code. Each call can fail, so reporting successful operation by rtsock in the middle of the process error-prone. Further split routing notification API and actual rtsock calls via creating public-available rt_addrmsg() / rt_routemsg() functions with "private" rtsock_* backend. MFC after: 2 weeks Modified: head/sys/net/route.c head/sys/net/route.h head/sys/net/rtsock.c Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Thu Jan 9 17:27:00 2014 (r260487) +++ head/sys/net/route.c Thu Jan 9 18:13:25 2014 (r260488) @@ -37,6 +37,7 @@ #include "opt_inet.h" #include "opt_inet6.h" #include "opt_route.h" +#include "opt_sctp.h" #include "opt_mrouting.h" #include "opt_mpath.h" @@ -52,6 +53,7 @@ #include #include #include +#include #include #include @@ -86,6 +88,13 @@ #define RT_NUMFIBS 1 #endif +#if defined(INET) || defined(INET6) +#ifdef SCTP +extern void sctp_addr_change(struct ifaddr *ifa, int cmd); +#endif /* SCTP */ +#endif + + /* This is read-only.. */ u_int rt_numfibs = RT_NUMFIBS; SYSCTL_UINT(_net, OID_AUTO, fibs, CTLFLAG_RD, &rt_numfibs, 0, ""); @@ -118,7 +127,8 @@ VNET_DEFINE(int, rttrash); /* routes no /* compare two sockaddr structures */ -#define sa_equal(a1, a2) (bcmp((a1), (a2), (a1)->sa_len) == 0) +#define sa_equal(a1, a2) (((a1)->sa_len == (a2)->sa_len) && \ + (bcmp((a1), (a2), (a1)->sa_len) == 0)) /* * Convert a 'struct radix_node *' to a 'struct rtentry *'. @@ -1731,3 +1741,99 @@ rtinit(struct ifaddr *ifa, int cmd, int } return (rtinit1(ifa, cmd, flags, fib)); } + +/* + * Announce interface address arrival/withdraw + * Returns 0 on success. + */ +int +rt_addrmsg(int cmd, struct ifaddr *ifa, int fibnum) +{ + + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, + ("unexpected cmd %u", cmd)); + + if (fibnum != RT_ALL_FIBS) { + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " + "fibnum out of range 0 <= %d < %d", __func__, + fibnum, rt_numfibs)); + } + + return (rtsock_addrmsg(cmd, ifa, fibnum)); +} + + +/* + * Announce route addition/removal + * Users of this function MUST validate input data BEFORE calling. + * However we have to be able to handle invalid data: + * if some userland app sends us "invalid" route message (invalid mask, + * no dst, wrokg address families, etc...) we need to pass it back + * to app (and any other rtsock consumers) with rtm_errno field set to + * non-zero value. + * Returns 0 on success. + */ +int +rt_routemsg(int cmd, struct ifnet *ifp, int error, struct rtentry *rt, + int fibnum) +{ + + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, + ("unexpected cmd %u", cmd)); + + if (fibnum != RT_ALL_FIBS) { + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " + "fibnum out of range 0 <= %d < %d", __func__, + fibnum, rt_numfibs)); + } + + KASSERT(rt_key(rt) != NULL, (":%s: rt_key must be supplied", __func__)); + + return (rtsock_routemsg(cmd, ifp, error, rt, fibnum)); +} + +void +rt_newaddrmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt) +{ + + rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS); +} + +/* + * This is called to generate messages from the routing socket + * indicating a network interface has had addresses associated with it. + */ +void +rt_newaddrmsg_fib(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt, + int fibnum) +{ + + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, + ("unexpected cmd %u", cmd)); + if (fibnum != RT_ALL_FIBS) { + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " + "fibnum out of range 0 <= %d < %d", __func__, + fibnum, rt_numfibs)); + } + +#if defined(INET) || defined(INET6) +#ifdef SCTP + /* + * notify the SCTP stack + * this will only get called when an address is added/deleted + * XXX pass the ifaddr struct instead if ifa->ifa_addr... + */ + sctp_addr_change(ifa, cmd); +#endif /* SCTP */ +#endif + if (cmd == RTM_ADD) { + rt_addrmsg(cmd, ifa, fibnum); + if (rt != NULL) + rt_routemsg(cmd, ifa->ifa_ifp, error, rt, fibnum); + } else { + if (rt != NULL) + rt_routemsg(cmd, ifa->ifa_ifp, error, rt, fibnum); + rt_addrmsg(cmd, ifa, fibnum); + } +} + Modified: head/sys/net/route.h ============================================================================== --- head/sys/net/route.h Thu Jan 9 17:27:00 2014 (r260487) +++ head/sys/net/route.h Thu Jan 9 18:13:25 2014 (r260488) @@ -369,10 +369,15 @@ void rt_missmsg(int, struct rt_addrinfo void rt_missmsg_fib(int, struct rt_addrinfo *, int, int, int); void rt_newaddrmsg(int, struct ifaddr *, int, struct rtentry *); void rt_newaddrmsg_fib(int, struct ifaddr *, int, struct rtentry *, int); +int rt_addrmsg(int, struct ifaddr *, int); +int rt_routemsg(int, struct ifnet *ifp, int, struct rtentry *, int); void rt_newmaddrmsg(int, struct ifmultiaddr *); int rt_setgate(struct rtentry *, struct sockaddr *, struct sockaddr *); void rt_maskedcopy(struct sockaddr *, struct sockaddr *, struct sockaddr *); +int rtsock_addrmsg(int, struct ifaddr *, int); +int rtsock_routemsg(int, struct ifnet *ifp, int, struct rtentry *, int); + /* * Note the following locking behavior: * Modified: head/sys/net/rtsock.c ============================================================================== --- head/sys/net/rtsock.c Thu Jan 9 17:27:00 2014 (r260487) +++ head/sys/net/rtsock.c Thu Jan 9 18:13:25 2014 (r260488) @@ -30,7 +30,6 @@ * $FreeBSD$ */ #include "opt_compat.h" -#include "opt_sctp.h" #include "opt_mpath.h" #include "opt_inet.h" #include "opt_inet6.h" @@ -70,12 +69,6 @@ #include #endif -#if defined(INET) || defined(INET6) -#ifdef SCTP -extern void sctp_addr_change(struct ifaddr *ifa, int cmd); -#endif /* SCTP */ -#endif - #ifdef COMPAT_FREEBSD32 #include #include @@ -1334,91 +1327,95 @@ rt_ifmsg(struct ifnet *ifp) } /* - * This is called to generate messages from the routing socket - * indicating a network interface has had addresses associated with it. - * if we ever reverse the logic and replace messages TO the routing - * socket indicate a request to configure interfaces, then it will - * be unnecessary as the routing socket will automatically generate - * copies of it. + * Announce interface address arrival/withdraw. + * Please do not call directly, use rt_addrmsg(). + * Assume input data to be valid. + * Returns 0 on success. */ -void -rt_newaddrmsg_fib(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt, - int fibnum) +int +rtsock_addrmsg(int cmd, struct ifaddr *ifa, int fibnum) { struct rt_addrinfo info; - struct sockaddr *sa = NULL; - int pass; - struct mbuf *m = NULL; + struct sockaddr *sa; + int ncmd; + struct mbuf *m; + struct ifa_msghdr *ifam; struct ifnet *ifp = ifa->ifa_ifp; - KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, - ("unexpected cmd %u", cmd)); -#if defined(INET) || defined(INET6) -#ifdef SCTP - /* - * notify the SCTP stack - * this will only get called when an address is added/deleted - * XXX pass the ifaddr struct instead if ifa->ifa_addr... - */ - sctp_addr_change(ifa, cmd); -#endif /* SCTP */ -#endif if (route_cb.any_count == 0) - return; - for (pass = 1; pass < 3; pass++) { - bzero((caddr_t)&info, sizeof(info)); - if ((cmd == RTM_ADD && pass == 1) || - (cmd == RTM_DELETE && pass == 2)) { - struct ifa_msghdr *ifam; - int ncmd = cmd == RTM_ADD ? RTM_NEWADDR : RTM_DELADDR; + return (0); - info.rti_info[RTAX_IFA] = sa = ifa->ifa_addr; - info.rti_info[RTAX_IFP] = ifp->if_addr->ifa_addr; - info.rti_info[RTAX_NETMASK] = ifa->ifa_netmask; - info.rti_info[RTAX_BRD] = ifa->ifa_dstaddr; - if ((m = rt_msg1(ncmd, &info)) == NULL) - continue; - ifam = mtod(m, struct ifa_msghdr *); - ifam->ifam_index = ifp->if_index; - ifam->ifam_metric = ifa->ifa_metric; - ifam->ifam_flags = ifa->ifa_flags; - ifam->ifam_addrs = info.rti_addrs; - } - if ((cmd == RTM_ADD && pass == 2) || - (cmd == RTM_DELETE && pass == 1)) { - struct rt_msghdr *rtm; + ncmd = cmd == RTM_ADD ? RTM_NEWADDR : RTM_DELADDR; - if (rt == NULL) - continue; - info.rti_info[RTAX_NETMASK] = rt_mask(rt); - info.rti_info[RTAX_DST] = sa = rt_key(rt); - info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; - if ((m = rt_msg1(cmd, &info)) == NULL) - continue; - rtm = mtod(m, struct rt_msghdr *); - rtm->rtm_index = ifp->if_index; - rtm->rtm_flags |= rt->rt_flags; - rtm->rtm_errno = error; - rtm->rtm_addrs = info.rti_addrs; - } - if (fibnum != RT_ALL_FIBS) { - KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " - "fibnum out of range 0 <= %d < %d", __func__, - fibnum, rt_numfibs)); - M_SETFIB(m, fibnum); - m->m_flags |= RTS_FILTER_FIB; - } - rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC); + bzero((caddr_t)&info, sizeof(info)); + info.rti_info[RTAX_IFA] = sa = ifa->ifa_addr; + info.rti_info[RTAX_IFP] = ifp->if_addr->ifa_addr; + info.rti_info[RTAX_NETMASK] = ifa->ifa_netmask; + info.rti_info[RTAX_BRD] = ifa->ifa_dstaddr; + if ((m = rt_msg1(ncmd, &info)) == NULL) + return (ENOBUFS); + ifam = mtod(m, struct ifa_msghdr *); + ifam->ifam_index = ifp->if_index; + ifam->ifam_metric = ifa->ifa_metric; + ifam->ifam_flags = ifa->ifa_flags; + ifam->ifam_addrs = info.rti_addrs; + + if (fibnum != RT_ALL_FIBS) { + M_SETFIB(m, fibnum); + m->m_flags |= RTS_FILTER_FIB; } + + rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC); + + return (0); } -void -rt_newaddrmsg(int cmd, struct ifaddr *ifa, int error, struct rtentry *rt) +/* + * Announce route addition/removal. + * Please do not call directly, use rt_routemsg(). + * Note that @rt data MAY be inconsistent/invalid: + * if some userland app sends us "invalid" route message (invalid mask, + * no dst, wrong address families, etc...) we need to pass it back + * to app (and any other rtsock consumers) with rtm_errno field set to + * non-zero value. + * + * Returns 0 on success. + */ +int +rtsock_routemsg(int cmd, struct ifnet *ifp, int error, struct rtentry *rt, + int fibnum) { + struct rt_addrinfo info; + struct sockaddr *sa; + struct mbuf *m; + struct rt_msghdr *rtm; - rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS); + if (route_cb.any_count == 0) + return (0); + + bzero((caddr_t)&info, sizeof(info)); + info.rti_info[RTAX_NETMASK] = rt_mask(rt); + info.rti_info[RTAX_DST] = sa = rt_key(rt); + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; + if ((m = rt_msg1(cmd, &info)) == NULL) + return (ENOBUFS); + rtm = mtod(m, struct rt_msghdr *); + rtm->rtm_index = ifp->if_index; + rtm->rtm_flags |= rt->rt_flags; + rtm->rtm_errno = error; + rtm->rtm_addrs = info.rti_addrs; + + if (fibnum != RT_ALL_FIBS) { + M_SETFIB(m, fibnum); + m->m_flags |= RTS_FILTER_FIB; + } + + rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC); + + return (0); } + /* * This is the analogue to the rt_newaddrmsg which performs the same * function but for multicast group memberhips. This is easier since From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 18:28:59 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A5059F64; Thu, 9 Jan 2014 18:28:59 +0000 (UTC) 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 84F40109A; Thu, 9 Jan 2014 18:28: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 s09ISxB9062560; Thu, 9 Jan 2014 18:28:59 GMT (envelope-from loos@svn.freebsd.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09ISwhM062556; Thu, 9 Jan 2014 18:28:58 GMT (envelope-from loos@svn.freebsd.org) Message-Id: <201401091828.s09ISwhM062556@svn.freebsd.org> From: Luiz Otavio O Souza Date: Thu, 9 Jan 2014 18:28:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260489 - in stable/10/sys: conf dev/spibus X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 18:28:59 -0000 Author: loos Date: Thu Jan 9 18:28:58 2014 New Revision: 260489 URL: http://svnweb.freebsd.org/changeset/base/260489 Log: MFC r257064: Add an OFW SPI compatible bus. Fix the spibus probe to return BUS_PROBE_GENERIC and not BUS_PROBE_SPECIFIC (0) so the OFW SPI bus can attach when enabled. Export the spibus devclass_t and driver_t declarations. Submitted by: ray Approved by: adrian (mentor) Added: stable/10/sys/dev/spibus/ofw_spibus.c - copied unchanged from r257064, head/sys/dev/spibus/ofw_spibus.c Modified: stable/10/sys/conf/files stable/10/sys/dev/spibus/spibus.c stable/10/sys/dev/spibus/spibusvar.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Thu Jan 9 18:13:25 2014 (r260488) +++ stable/10/sys/conf/files Thu Jan 9 18:28:58 2014 (r260489) @@ -2175,6 +2175,7 @@ dev/sound/midi/mpu_if.m optional sound dev/sound/midi/mpufoi_if.m optional sound dev/sound/midi/sequencer.c optional sound dev/sound/midi/synth_if.m optional sound +dev/spibus/ofw_spibus.c optional fdt spibus dev/spibus/spibus.c optional spibus \ dependency "spibus_if.h" dev/spibus/spibus_if.m optional spibus Copied: stable/10/sys/dev/spibus/ofw_spibus.c (from r257064, head/sys/dev/spibus/ofw_spibus.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/10/sys/dev/spibus/ofw_spibus.c Thu Jan 9 18:28:58 2014 (r260489, copy of r257064, head/sys/dev/spibus/ofw_spibus.c) @@ -0,0 +1,192 @@ +/*- + * Copyright (c) 2009, Nathan Whitehorn + * Copyright (c) 2013 The FreeBSD Foundation + * All rights reserved. + * + * 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 unmodified, 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 ``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 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 +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "spibus_if.h" + +struct ofw_spibus_devinfo { + struct spibus_ivar opd_dinfo; + struct ofw_bus_devinfo opd_obdinfo; +}; + +/* Methods */ +static device_probe_t ofw_spibus_probe; +static device_attach_t ofw_spibus_attach; +static device_t ofw_spibus_add_child(device_t dev, u_int order, + const char *name, int unit); +static const struct ofw_bus_devinfo *ofw_spibus_get_devinfo(device_t bus, + device_t dev); + +static int +ofw_spibus_probe(device_t dev) +{ + + if (ofw_bus_get_node(dev) == -1) + return (ENXIO); + device_set_desc(dev, "OFW SPI bus"); + + return (0); +} + +static int +ofw_spibus_attach(device_t dev) +{ + struct spibus_softc *sc = device_get_softc(dev); + struct ofw_spibus_devinfo *dinfo; + phandle_t child; + pcell_t paddr; + device_t childdev; + + sc->dev = dev; + + bus_generic_probe(dev); + bus_enumerate_hinted_children(dev); + + /* + * Attach those children represented in the device tree. + */ + for (child = OF_child(ofw_bus_get_node(dev)); child != 0; + child = OF_peer(child)) { + /* + * Try to get the CS number first from the spi-chipselect + * property, then try the reg property. + */ + if (OF_getencprop(child, "spi-chipselect", &paddr, + sizeof(paddr)) == -1) { + if (OF_getencprop(child, "reg", &paddr, + sizeof(paddr)) == -1) + continue; + } + + /* + * Now set up the SPI and OFW bus layer devinfo and add it + * to the bus. + */ + dinfo = malloc(sizeof(struct ofw_spibus_devinfo), M_DEVBUF, + M_NOWAIT | M_ZERO); + if (dinfo == NULL) + continue; + dinfo->opd_dinfo.cs = paddr; + if (ofw_bus_gen_setup_devinfo(&dinfo->opd_obdinfo, child) != + 0) { + free(dinfo, M_DEVBUF); + continue; + } + childdev = device_add_child(dev, NULL, -1); + device_set_ivars(childdev, dinfo); + } + + return (bus_generic_attach(dev)); +} + +static device_t +ofw_spibus_add_child(device_t dev, u_int order, const char *name, int unit) +{ + device_t child; + struct ofw_spibus_devinfo *devi; + + child = device_add_child_ordered(dev, order, name, unit); + if (child == NULL) + return (child); + devi = malloc(sizeof(struct ofw_spibus_devinfo), M_DEVBUF, + M_NOWAIT | M_ZERO); + if (devi == NULL) { + device_delete_child(dev, child); + return (0); + } + + /* + * NULL all the OFW-related parts of the ivars for non-OFW + * children. + */ + devi->opd_obdinfo.obd_node = -1; + devi->opd_obdinfo.obd_name = NULL; + devi->opd_obdinfo.obd_compat = NULL; + devi->opd_obdinfo.obd_type = NULL; + devi->opd_obdinfo.obd_model = NULL; + + device_set_ivars(child, devi); + + return (child); +} + +static const struct ofw_bus_devinfo * +ofw_spibus_get_devinfo(device_t bus, device_t dev) +{ + struct ofw_spibus_devinfo *dinfo; + + dinfo = device_get_ivars(dev); + return (&dinfo->opd_obdinfo); +} + +static device_method_t ofw_spibus_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ofw_spibus_probe), + DEVMETHOD(device_attach, ofw_spibus_attach), + + /* Bus interface */ + DEVMETHOD(bus_child_pnpinfo_str, ofw_bus_gen_child_pnpinfo_str), + DEVMETHOD(bus_add_child, ofw_spibus_add_child), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_devinfo, ofw_spibus_get_devinfo), + DEVMETHOD(ofw_bus_get_compat, ofw_bus_gen_get_compat), + DEVMETHOD(ofw_bus_get_model, ofw_bus_gen_get_model), + DEVMETHOD(ofw_bus_get_name, ofw_bus_gen_get_name), + DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node), + DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type), + + DEVMETHOD_END +}; + +static devclass_t ofwspibus_devclass; + +DEFINE_CLASS_1(spibus, ofw_spibus_driver, ofw_spibus_methods, + sizeof(struct spibus_softc), spibus_driver); +DRIVER_MODULE(ofw_spibus, spi, ofw_spibus_driver, ofwspibus_devclass, 0, 0); +MODULE_VERSION(ofw_spibus, 1); +MODULE_DEPEND(ofw_spibus, spibus, 1, 1, 1); Modified: stable/10/sys/dev/spibus/spibus.c ============================================================================== --- stable/10/sys/dev/spibus/spibus.c Thu Jan 9 18:13:25 2014 (r260488) +++ stable/10/sys/dev/spibus/spibus.c Thu Jan 9 18:28:58 2014 (r260489) @@ -23,7 +23,7 @@ static int spibus_probe(device_t dev) { device_set_desc(dev, "spibus bus"); - return (0); + return (BUS_PROBE_GENERIC); } static int @@ -185,7 +185,7 @@ static device_method_t spibus_methods[] DEVMETHOD_END }; -static driver_t spibus_driver = { +driver_t spibus_driver = { "spibus", spibus_methods, sizeof(struct spibus_softc) Modified: stable/10/sys/dev/spibus/spibusvar.h ============================================================================== --- stable/10/sys/dev/spibus/spibusvar.h Thu Jan 9 18:13:25 2014 (r260488) +++ stable/10/sys/dev/spibus/spibusvar.h Thu Jan 9 18:28:58 2014 (r260489) @@ -26,3 +26,6 @@ spibus_get_ ## A(device_t dev, T *t) } SPIBUS_ACCESSOR(cs, CS, uint32_t) + +extern driver_t spibus_driver; +extern devclass_t spibus_devclass; From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 18:51:58 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BC6D7A20; Thu, 9 Jan 2014 18:51:58 +0000 (UTC) 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 9CCF812DA; Thu, 9 Jan 2014 18:51: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 s09Ipwog072945; Thu, 9 Jan 2014 18:51:58 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09Ipws7072943; Thu, 9 Jan 2014 18:51:58 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401091851.s09Ipws7072943@svn.freebsd.org> From: Ian Lepore Date: Thu, 9 Jan 2014 18:51:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260490 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 18:51:58 -0000 Author: ian Date: Thu Jan 9 18:51:57 2014 New Revision: 260490 URL: http://svnweb.freebsd.org/changeset/base/260490 Log: Add a function to print the contents of the static device mapping table, and invoke it for bootverbose logging, and also from a new DDB command, "show devmap". Also tweak the format string for the bootverbose output of physical memory chunks to get the leading zeros in the hex values. Modified: head/sys/arm/arm/devmap.c head/sys/arm/arm/machdep.c Modified: head/sys/arm/arm/devmap.c ============================================================================== --- head/sys/arm/arm/devmap.c Thu Jan 9 18:28:58 2014 (r260489) +++ head/sys/arm/arm/devmap.c Thu Jan 9 18:51:57 2014 (r260490) @@ -31,6 +31,8 @@ __FBSDID("$FreeBSD$"); * Routines for mapping device memory. */ +#include "opt_ddb.h" + #include #include #include @@ -54,6 +56,36 @@ static u_int akva_devmap_idx; static vm_offset_t akva_devmap_vaddr = ARM_VECTORS_HIGH; /* + * Print the contents of the static mapping table using the provided printf-like + * output function (which will be either printf or db_printf). + */ +static void +devmap_dump_table(int (*prfunc)(const char *, ...)) +{ + const struct arm_devmap_entry *pd; + + if (devmap_table == NULL || devmap_table[0].pd_size == 0) { + prfunc("No static device mappings.\n"); + return; + } + + prfunc("Static device mappings:\n"); + for (pd = devmap_table; pd->pd_size != 0; ++pd) { + prfunc(" 0x%08x - 0x%08x mapped at VA 0x%08x\n", + pd->pd_pa, pd->pd_pa + pd->pd_size - 1, pd->pd_va); + } +} + +/* + * Print the contents of the static mapping table. Used for bootverbose. + */ +void +arm_devmap_print_table() +{ + devmap_dump_table(printf); +} + +/* * Return the "last" kva address used by the registered devmap table. It's * actually the lowest address used by the static mappings, i.e., the address of * the first unusable byte of KVA. @@ -266,3 +298,13 @@ pmap_unmapdev(vm_offset_t va, vm_size_t kva_free(va, origsize); } +#ifdef DDB +#include + +DB_SHOW_COMMAND(devmap, db_show_devmap) +{ + devmap_dump_table(db_printf); +} + +#endif /* DDB */ + Modified: head/sys/arm/arm/machdep.c ============================================================================== --- head/sys/arm/arm/machdep.c Thu Jan 9 18:28:58 2014 (r260489) +++ head/sys/arm/arm/machdep.c Thu Jan 9 18:51:57 2014 (r260490) @@ -379,10 +379,10 @@ cpu_startup(void *dummy) vm_paddr_t size; size = phys_avail[indx + 1] - phys_avail[indx]; - printf("%#08jx - %#08jx, %ju bytes (%ju pages)\n", + printf(" 0x%08jx - 0x%08jx, %ju KBytes (%ju pages)\n", (uintmax_t)phys_avail[indx], (uintmax_t)phys_avail[indx + 1] - 1, - (uintmax_t)size, (uintmax_t)size / PAGE_SIZE); + (uintmax_t)size / 1024, (uintmax_t)size / PAGE_SIZE); } } @@ -392,6 +392,9 @@ cpu_startup(void *dummy) (uintmax_t)ptoa(cnt.v_free_count), (uintmax_t)ptoa(cnt.v_free_count) / 1048576); + if (bootverbose) + arm_devmap_print_table(); + bufinit(); vm_pager_bufferinit(); pcb->un_32.pcb32_und_sp = (u_int)thread0.td_kstack + From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 18:53:22 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6A546CD9; Thu, 9 Jan 2014 18:53:22 +0000 (UTC) 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 579931305; Thu, 9 Jan 2014 18:53: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 s09IrMjw073145; Thu, 9 Jan 2014 18:53:22 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09IrMOZ073143; Thu, 9 Jan 2014 18:53:22 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401091853.s09IrMOZ073143@svn.freebsd.org> From: Julio Merino Date: Thu, 9 Jan 2014 18:53:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260491 - head/contrib/atf/atf-c++/detail X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 18:53:22 -0000 Author: jmmv Date: Thu Jan 9 18:53:21 2014 New Revision: 260491 URL: http://svnweb.freebsd.org/changeset/base/260491 Log: Use .cpp as the extension for temporary C++ files. Using a .c extension for a C++ file raises the following warning, which breaks our header file tests if the compiler is using -Werror as well: c++: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated Obtained from: atf (git 3104010c2849330440cc0ce108ff341913433339) MFC after: 3 days Modified: head/contrib/atf/atf-c++/detail/test_helpers.cpp Modified: head/contrib/atf/atf-c++/detail/test_helpers.cpp ============================================================================== --- head/contrib/atf/atf-c++/detail/test_helpers.cpp Thu Jan 9 18:51:57 2014 (r260490) +++ head/contrib/atf/atf-c++/detail/test_helpers.cpp Thu Jan 9 18:53:21 2014 (r260491) @@ -67,14 +67,14 @@ build_check_cxx_o(const atf::tests::tc& void header_check(const char *hdrname) { - std::ofstream srcfile("test.c"); + std::ofstream srcfile("test.cpp"); ATF_REQUIRE(srcfile); srcfile << "#include <" << hdrname << ">\n"; srcfile.close(); const std::string failmsg = std::string("Header check failed; ") + hdrname + " is not self-contained"; - build_check_cxx_o_aux(atf::fs::path("test.c"), failmsg.c_str(), true); + build_check_cxx_o_aux(atf::fs::path("test.cpp"), failmsg.c_str(), true); } atf::fs::path From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 20:06:15 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 51D0F2F2; Thu, 9 Jan 2014 20:06:15 +0000 (UTC) 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 3E4881908; Thu, 9 Jan 2014 20:06: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 s09K6FRX000316; Thu, 9 Jan 2014 20:06:15 GMT (envelope-from lme@svn.freebsd.org) Received: (from lme@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09K6F4t000315; Thu, 9 Jan 2014 20:06:15 GMT (envelope-from lme@svn.freebsd.org) Message-Id: <201401092006.s09K6F4t000315@svn.freebsd.org> From: Lars Engels Date: Thu, 9 Jan 2014 20:06:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260492 - head/sbin/geom/class/part X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 20:06:15 -0000 Author: lme (ports committer) Date: Thu Jan 9 20:06:14 2014 New Revision: 260492 URL: http://svnweb.freebsd.org/changeset/base/260492 Log: Check if the given argument to 'gpart add' is actually a geom device and give a hint to use 'gpart create' before trying to add a partition. Approved by: pjd Modified: head/sbin/geom/class/part/geom_part.c (contents, props changed) Modified: head/sbin/geom/class/part/geom_part.c ============================================================================== --- head/sbin/geom/class/part/geom_part.c Thu Jan 9 18:53:21 2014 (r260491) +++ head/sbin/geom/class/part/geom_part.c Thu Jan 9 20:06:14 2014 (r260492) @@ -454,8 +454,19 @@ gpart_autofill(struct gctl_req *req) if (s == NULL) abort(); gp = find_geom(cp, s); - if (gp == NULL) - errx(EXIT_FAILURE, "No such geom: %s.", s); + if (gp == NULL) { + if (g_device_path(s) == NULL) { + errx(EXIT_FAILURE, "No such geom %s.", s); + } else { + /* + * We don't free memory allocated by g_device_path() as + * we are about to exit. + */ + errx(EXIT_FAILURE, + "No partitioning scheme found on geom %s. Create one first using 'gpart create'.", + s); + } + } pp = LIST_FIRST(&gp->lg_consumer)->lg_provider; if (pp == NULL) errx(EXIT_FAILURE, "Provider for geom %s not found.", s); From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 20:46:57 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 006E22DA; Thu, 9 Jan 2014 20:46:56 +0000 (UTC) Received: from h2.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AE0701D3F; Thu, 9 Jan 2014 20:46:56 +0000 (UTC) Received: from h2.funkthat.com (localhost [127.0.0.1]) by h2.funkthat.com (8.14.3/8.14.3) with ESMTP id s09KktqS056606 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 9 Jan 2014 12:46:56 -0800 (PST) (envelope-from jmg@h2.funkthat.com) Received: (from jmg@localhost) by h2.funkthat.com (8.14.3/8.14.3/Submit) id s09KktSq056605; Thu, 9 Jan 2014 12:46:55 -0800 (PST) (envelope-from jmg) Date: Thu, 9 Jan 2014 12:46:55 -0800 From: John-Mark Gurney To: "Andrey V. Elsukov" Subject: Re: svn commit: r260485 - head/sys/netinet6 Message-ID: <20140109204655.GH46596@funkthat.com> References: <201401091538.s09FcTNM097296@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401091538.s09FcTNM097296@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 7.2-RELEASE i386 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (h2.funkthat.com [127.0.0.1]); Thu, 09 Jan 2014 12:46:56 -0800 (PST) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 20:46:57 -0000 Andrey V. Elsukov wrote this message on Thu, Jan 09, 2014 at 15:38 +0000: > Author: ae > Date: Thu Jan 9 15:38:28 2014 > New Revision: 260485 > URL: http://svnweb.freebsd.org/changeset/base/260485 > > Log: > Remove extra nesting from X_ip6_mforward() function. > Also remove disabled definitions from ip6_mroute.h. [...] > Modified: head/sys/netinet6/ip6_mroute.h > ============================================================================== > --- head/sys/netinet6/ip6_mroute.h Thu Jan 9 15:35:35 2014 (r260484) > +++ head/sys/netinet6/ip6_mroute.h Thu Jan 9 15:38:28 2014 (r260485) > @@ -145,11 +145,6 @@ struct mrt6stat { > struct omrt6msg { > u_long unused1; > u_char im6_msgtype; /* what type of message */ > -#if 0 > -#define MRT6MSG_NOCACHE 1 > -#define MRT6MSG_WRONGMIF 2 > -#define MRT6MSG_WHOLEPKT 3 /* used for user level encap*/ > -#endif > u_char im6_mbz; /* must be zero */ > u_char im6_mif; /* mif rec'd on */ > u_char unused2; > @@ -199,7 +194,7 @@ struct sioc_mif_req6 { > u_quad_t obytes; /* Output byte count on mif */ > }; > > -#if defined(_KERNEL) || defined(KERNEL) > +#ifdef _KERNEL > /* > * The kernel's multicast-interface structure. > */ This last change broken netstat... netstat defines KERNEL to get these structures... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 20:57:19 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D408B6E7; Thu, 9 Jan 2014 20:57:19 +0000 (UTC) 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 C048C1DFD; Thu, 9 Jan 2014 20:57: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 s09KvJPF019618; Thu, 9 Jan 2014 20:57:19 GMT (envelope-from ian@svn.freebsd.org) Received: (from ian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09KvJHu019617; Thu, 9 Jan 2014 20:57:19 GMT (envelope-from ian@svn.freebsd.org) Message-Id: <201401092057.s09KvJHu019617@svn.freebsd.org> From: Ian Lepore Date: Thu, 9 Jan 2014 20:57:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260493 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 20:57:19 -0000 Author: ian Date: Thu Jan 9 20:57:19 2014 New Revision: 260493 URL: http://svnweb.freebsd.org/changeset/base/260493 Log: Add a prototype for the new arm_devmap_print_table(). This should have been part of r260490. Modified: head/sys/arm/include/devmap.h Modified: head/sys/arm/include/devmap.h ============================================================================== --- head/sys/arm/include/devmap.h Thu Jan 9 20:06:14 2014 (r260492) +++ head/sys/arm/include/devmap.h Thu Jan 9 20:57:19 2014 (r260493) @@ -87,4 +87,7 @@ void arm_devmap_bootstrap(vm_offset_t _l void * arm_devmap_ptov(vm_paddr_t _pa, vm_size_t _sz); vm_paddr_t arm_devmap_vtop(void * _va, vm_size_t _sz); +/* Print the static mapping table; used for bootverbose output. */ +void arm_devmap_print_table(void); + #endif From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 22:16:31 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 04F5AE6D; Thu, 9 Jan 2014 22:16:31 +0000 (UTC) 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 E52A81503; Thu, 9 Jan 2014 22:16: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 s09MGUD4063051; Thu, 9 Jan 2014 22:16:30 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09MGUpe063050; Thu, 9 Jan 2014 22:16:30 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401092216.s09MGUpe063050@svn.freebsd.org> From: Dimitry Andric Date: Thu, 9 Jan 2014 22:16:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260494 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 22:16:31 -0000 Author: dim Date: Thu Jan 9 22:16:30 2014 New Revision: 260494 URL: http://svnweb.freebsd.org/changeset/base/260494 Log: Fix a braino with r259730: we cannot currently use CFLAGS.gcc or CFLAGS.clang in sys/conf/Makefile.arm, since the main kernel build does not use . So revert that particular change for now. Pointy hat to: me Noticed by: zbb MFC after: 3 days X-MFC-With: r259730 Modified: head/sys/conf/Makefile.arm Modified: head/sys/conf/Makefile.arm ============================================================================== --- head/sys/conf/Makefile.arm Thu Jan 9 20:57:19 2014 (r260493) +++ head/sys/conf/Makefile.arm Thu Jan 9 22:16:30 2014 (r260494) @@ -39,16 +39,20 @@ SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/ldscri STRIP_FLAGS = -S .endif -CFLAGS.gcc += -mno-thumb-interwork +.if ${COMPILER_TYPE} != "clang" +CFLAGS += -mno-thumb-interwork +.endif .if empty(DDB_ENABLED) -.if defined(WITHOUT_ARM_EABI) -CFLAGS.gcc += -mno-apcs-frame +.if defined(WITHOUT_ARM_EABI) && ${COMPILER_TYPE} != "clang" +CFLAGS += -mno-apcs-frame .endif .elif !defined(WITHOUT_ARM_EABI) CFLAGS += -funwind-tables +.if ${COMPILER_TYPE} == "clang" # clang requires us to tell it to emit assembly with unwind information -CFLAGS.clang += -mllvm -arm-enable-ehabi +CFLAGS += -mllvm -arm-enable-ehabi +.endif .endif SYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader ${LDFLAGS} \ From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 22:19:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id DD11A154; Thu, 9 Jan 2014 22:19:27 +0000 (UTC) Received: from tensor.andric.com (tensor.andric.com [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 925B21526; Thu, 9 Jan 2014 22:19:27 +0000 (UTC) Received: from [IPv6:2001:7b8:3a7::14e6:6c82:73d5:e684] (unknown [IPv6:2001:7b8:3a7:0:14e6:6c82:73d5:e684]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id AC1D15C43; Thu, 9 Jan 2014 23:19:21 +0100 (CET) Content-Type: multipart/signed; boundary="Apple-Mail=_893C138D-4F99-441B-B574-BEBA743166ED"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: svn commit: r259730 - in head: gnu/lib/csu gnu/lib/libgcc gnu/lib/libstdc++ gnu/lib/libsupc++ lib/atf/libatf-c/tests share/mk sys/conf tools/tools/ath/athstats tools/tools/net80211/wlanstats usr.bi... From: Dimitry Andric In-Reply-To: <1389279751.1158.426.camel@revolution.hippie.lan> Date: Thu, 9 Jan 2014 23:19:11 +0100 Message-Id: References: <201312221751.rBMHpYpj059326@svn.freebsd.org> <7BAB80DB-AD2E-427A-AB9F-2E1A3F0DFE8C@FreeBSD.org> <1389279751.1158.426.camel@revolution.hippie.lan> To: Ian Lepore X-Mailer: Apple Mail (2.1827) Cc: Zbigniew Bodek , svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 22:19:27 -0000 --Apple-Mail=_893C138D-4F99-441B-B574-BEBA743166ED Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii On 09 Jan 2014, at 16:02, Ian Lepore wrote: ... > At r259730: > > cc -c -O -pipe -std=c99 -g -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 -nostdinc -I. > -I/local/build/staging/freebsd/imx53/src/sys > -I/local/build/staging/freebsd/imx53/src/sys/contrib/altq > -I/local/build/staging/freebsd/imx53/src/sys/contrib/libfdt -D_KERNEL > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -funwind-tables > -ffreestanding > -Werror /local/build/staging/freebsd/imx53/src/sys/arm/arm/trap.c > > The difference is that the -mllvm and -arm-enable-ehabi flags are > missing. Aha, this was a nasty mistake, sorry. The main kernel builds do not include bsd.sys.mk, so CFLAGS.clang and CFLAGS.gcc do not work there at the moment. Fixed in r260494. -Dimitry --Apple-Mail=_893C138D-4F99-441B-B574-BEBA743166ED Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.22 (Darwin) iEYEARECAAYFAlLPIGMACgkQsF6jCi4glqMVpACg+vbRdk4BbjUQeUSr1SiECofL nq4Anj+T568wAcwrTP2cKYov8166MFIg =/J7m -----END PGP SIGNATURE----- --Apple-Mail=_893C138D-4F99-441B-B574-BEBA743166ED-- From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 22:40:56 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 07EB87EE; Thu, 9 Jan 2014 22:40:56 +0000 (UTC) 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 DC9D61701; Thu, 9 Jan 2014 22:40: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 s09MetSB073890; Thu, 9 Jan 2014 22:40:55 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09MerwF073876; Thu, 9 Jan 2014 22:40:53 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401092240.s09MerwF073876@svn.freebsd.org> From: Dimitry Andric Date: Thu, 9 Jan 2014 22:40:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260495 - in stable: 10/share/mk 10/sys/conf 10/sys/modules/drm2/radeonkms 10/sys/modules/ibcore 10/sys/modules/ipoib 10/sys/modules/mlx4 10/sys/modules/mlx4ib 10/sys/modules/mlxen 10/s... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 22:40:56 -0000 Author: dim Date: Thu Jan 9 22:40:51 2014 New Revision: 260495 URL: http://svnweb.freebsd.org/changeset/base/260495 Log: MFC r260102: Similar to r260020, only use -fms-extensions with gcc, for all other modules which require this flag to compile. Use a GCC_MS_EXTENSIONS variable, defined in kern.pre.mk, which can be used to easily supply the flag (or not), depending on the compiler type. MFC r260322: In addition to r260102, also define GCC_MS_EXTENSIONS in bsd.sys.mk, since kernel module builds do not use kern.pre.mk. Modified: stable/10/share/mk/bsd.sys.mk stable/10/sys/conf/kern.pre.mk stable/10/sys/modules/drm2/radeonkms/Makefile stable/10/sys/modules/ibcore/Makefile stable/10/sys/modules/ipoib/Makefile stable/10/sys/modules/mlx4/Makefile stable/10/sys/modules/mlx4ib/Makefile stable/10/sys/modules/mlxen/Makefile stable/10/sys/modules/mthca/Makefile stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile stable/10/sys/ofed/drivers/net/mlx4/Makefile Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/9/share/mk/bsd.sys.mk (contents, props changed) stable/9/sys/conf/kern.pre.mk stable/9/sys/modules/mlx4/Makefile stable/9/sys/modules/mlx4ib/Makefile stable/9/sys/modules/mlxen/Makefile stable/9/sys/modules/mthca/Makefile Directory Properties: stable/9/share/mk/ (props changed) stable/9/sys/ (props changed) Modified: stable/10/share/mk/bsd.sys.mk ============================================================================== --- stable/10/share/mk/bsd.sys.mk Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/share/mk/bsd.sys.mk Thu Jan 9 22:40:51 2014 (r260495) @@ -123,6 +123,7 @@ CFLAGS+= -Qunused-arguments CFLAGS+= ${CFLAGS.clang} CXXFLAGS+= ${CXXFLAGS.clang} .else # !CLANG +GCC_MS_EXTENSIONS= -fms-extensions CFLAGS+= ${CFLAGS.gcc} CXXFLAGS+= ${CXXFLAGS.gcc} .endif # CLANG Modified: stable/10/sys/conf/kern.pre.mk ============================================================================== --- stable/10/sys/conf/kern.pre.mk Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/conf/kern.pre.mk Thu Jan 9 22:40:51 2014 (r260495) @@ -99,6 +99,8 @@ ASM_CFLAGS= -x assembler-with-cpp -DLOCO .if ${COMPILER_TYPE} == "clang" CLANG_NO_IAS= -no-integrated-as +.else +GCC_MS_EXTENSIONS= -fms-extensions .endif .if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 @@ -157,7 +159,7 @@ NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLA # Infiniband C flags. Correct include paths and omit errors that linux # does not honor. OFEDINCLUDES= -I$S/ofed/include/ -OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} OFEDCFLAGS= ${CFLAGS:N-I*} ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR} OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF} OFED_C= ${OFED_C_NOIMP} ${.IMPSRC} Modified: stable/10/sys/modules/drm2/radeonkms/Makefile ============================================================================== --- stable/10/sys/modules/drm2/radeonkms/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/drm2/radeonkms/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -103,9 +103,6 @@ SRCS += \ iicbus_if.h \ pci_if.h -CFLAGS += -I${.CURDIR}/../../../dev/drm2/radeon -.if ${COMPILER_TYPE} == "gcc" -CFLAGS += -fms-extensions -.endif +CFLAGS += -I${.CURDIR}/../../../dev/drm2/radeon ${GCC_MS_EXTENSIONS} .include Modified: stable/10/sys/modules/ibcore/Makefile ============================================================================== --- stable/10/sys/modules/ibcore/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/ibcore/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -20,7 +20,7 @@ CFLAGS+= -DINET6 -DINET -DOFED .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} CWARNFLAGS.cm.c= -Wno-unused-function CWARNFLAGS+= ${CWARNFLAGS.${.IMPSRC:T}} Modified: stable/10/sys/modules/ipoib/Makefile ============================================================================== --- stable/10/sys/modules/ipoib/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/ipoib/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/10/sys/modules/mlx4/Makefile ============================================================================== --- stable/10/sys/modules/mlx4/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/mlx4/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -27,7 +27,6 @@ opt_inet6.h: .include CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions CWARNFLAGS.mcg.c= -Wno-unused CWARNFLAGS+= ${CWARNFLAGS.${.IMPSRC:T}} Modified: stable/10/sys/modules/mlx4ib/Makefile ============================================================================== --- stable/10/sys/modules/mlx4ib/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/mlx4ib/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -31,4 +31,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/10/sys/modules/mlxen/Makefile ============================================================================== --- stable/10/sys/modules/mlxen/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/mlxen/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -25,4 +25,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/10/sys/modules/mthca/Makefile ============================================================================== --- stable/10/sys/modules/mthca/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/modules/mthca/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile ============================================================================== --- stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/10/sys/ofed/drivers/net/mlx4/Makefile ============================================================================== --- stable/10/sys/ofed/drivers/net/mlx4/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/10/sys/ofed/drivers/net/mlx4/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -30,5 +30,5 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 22:40:53 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 830BF7ED; Thu, 9 Jan 2014 22:40:53 +0000 (UTC) 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 6330A1700; Thu, 9 Jan 2014 22:40: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 s09Merfw073871; Thu, 9 Jan 2014 22:40:53 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09MeqJE073865; Thu, 9 Jan 2014 22:40:52 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401092240.s09MeqJE073865@svn.freebsd.org> From: Dimitry Andric Date: Thu, 9 Jan 2014 22:40:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260495 - in stable: 10/share/mk 10/sys/conf 10/sys/modules/drm2/radeonkms 10/sys/modules/ibcore 10/sys/modules/ipoib 10/sys/modules/mlx4 10/sys/modules/mlx4ib 10/sys/modules/mlxen 10/s... X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 22:40:53 -0000 Author: dim Date: Thu Jan 9 22:40:51 2014 New Revision: 260495 URL: http://svnweb.freebsd.org/changeset/base/260495 Log: MFC r260102: Similar to r260020, only use -fms-extensions with gcc, for all other modules which require this flag to compile. Use a GCC_MS_EXTENSIONS variable, defined in kern.pre.mk, which can be used to easily supply the flag (or not), depending on the compiler type. MFC r260322: In addition to r260102, also define GCC_MS_EXTENSIONS in bsd.sys.mk, since kernel module builds do not use kern.pre.mk. Modified: stable/9/share/mk/bsd.sys.mk (contents, props changed) stable/9/sys/conf/kern.pre.mk stable/9/sys/modules/mlx4/Makefile stable/9/sys/modules/mlx4ib/Makefile stable/9/sys/modules/mlxen/Makefile stable/9/sys/modules/mthca/Makefile Directory Properties: stable/9/share/mk/ (props changed) stable/9/sys/ (props changed) Changes in other areas also in this revision: Modified: stable/10/share/mk/bsd.sys.mk stable/10/sys/conf/kern.pre.mk stable/10/sys/modules/drm2/radeonkms/Makefile stable/10/sys/modules/ibcore/Makefile stable/10/sys/modules/ipoib/Makefile stable/10/sys/modules/mlx4/Makefile stable/10/sys/modules/mlx4ib/Makefile stable/10/sys/modules/mlxen/Makefile stable/10/sys/modules/mthca/Makefile stable/10/sys/ofed/drivers/infiniband/hw/mlx4/Makefile stable/10/sys/ofed/drivers/net/mlx4/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/9/share/mk/bsd.sys.mk ============================================================================== --- stable/9/share/mk/bsd.sys.mk Thu Jan 9 22:16:30 2014 (r260494) +++ stable/9/share/mk/bsd.sys.mk Thu Jan 9 22:40:51 2014 (r260495) @@ -119,6 +119,7 @@ CFLAGS+= -Qunused-arguments CFLAGS+= ${CFLAGS.clang} CXXFLAGS+= ${CXXFLAGS.clang} .else # !CLANG +GCC_MS_EXTENSIONS= -fms-extensions CFLAGS+= ${CFLAGS.gcc} CXXFLAGS+= ${CXXFLAGS.gcc} .endif # CLANG Modified: stable/9/sys/conf/kern.pre.mk ============================================================================== --- stable/9/sys/conf/kern.pre.mk Thu Jan 9 22:16:30 2014 (r260494) +++ stable/9/sys/conf/kern.pre.mk Thu Jan 9 22:40:51 2014 (r260495) @@ -106,6 +106,8 @@ ASM_CFLAGS= -x assembler-with-cpp -DLOCO .if ${COMPILER_TYPE} == "clang" CLANG_NO_IAS= -no-integrated-as +.else +GCC_MS_EXTENSIONS= -fms-extensions .endif .if defined(PROFLEVEL) && ${PROFLEVEL} >= 1 @@ -157,7 +159,7 @@ NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLA # Infiniband C flags. Correct include paths and omit errors that linux # does not honor. OFEDINCLUDES= -I$S/ofed/include/ -OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +OFEDNOERR= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} OFEDCFLAGS= ${CFLAGS:N-I*} ${OFEDINCLUDES} ${CFLAGS:M-I*} ${OFEDNOERR} OFED_C_NOIMP= ${CC} -c -o ${.TARGET} ${OFEDCFLAGS} ${WERROR} ${PROF} OFED_C= ${OFED_C_NOIMP} ${.IMPSRC} Modified: stable/9/sys/modules/mlx4/Makefile ============================================================================== --- stable/9/sys/modules/mlx4/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/9/sys/modules/mlx4/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -26,4 +26,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/9/sys/modules/mlx4ib/Makefile ============================================================================== --- stable/9/sys/modules/mlx4ib/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/9/sys/modules/mlx4ib/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -24,4 +24,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/9/sys/modules/mlxen/Makefile ============================================================================== --- stable/9/sys/modules/mlxen/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/9/sys/modules/mlxen/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -25,4 +25,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} Modified: stable/9/sys/modules/mthca/Makefile ============================================================================== --- stable/9/sys/modules/mthca/Makefile Thu Jan 9 22:16:30 2014 (r260494) +++ stable/9/sys/modules/mthca/Makefile Thu Jan 9 22:40:51 2014 (r260495) @@ -28,4 +28,4 @@ opt_inet6.h: .include -CFLAGS+= -Wno-cast-qual -Wno-pointer-arith -fms-extensions +CFLAGS+= -Wno-cast-qual -Wno-pointer-arith ${GCC_MS_EXTENSIONS} From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 22:41:18 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BD450B04; Thu, 9 Jan 2014 22:41:18 +0000 (UTC) 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 A9B9C1706; Thu, 9 Jan 2014 22:41: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 s09MfI9X074085; Thu, 9 Jan 2014 22:41:18 GMT (envelope-from jmg@svn.freebsd.org) Received: (from jmg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09MfI3A074084; Thu, 9 Jan 2014 22:41:18 GMT (envelope-from jmg@svn.freebsd.org) Message-Id: <201401092241.s09MfI3A074084@svn.freebsd.org> From: John-Mark Gurney Date: Thu, 9 Jan 2014 22:41:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260496 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 22:41:18 -0000 Author: jmg Date: Thu Jan 9 22:41:18 2014 New Revision: 260496 URL: http://svnweb.freebsd.org/changeset/base/260496 Log: revert part of r260485 which changes how part of the header gets included.. netstat uses -DKERNEL=1 to get these parts and breaks the build w/o it... melifaro@ says that ae@ is probably asleep, and the PR doesn't have this part of the patch... Probably a local change got in by accident.. PR: 185148 Pointy hat to: ae@ Modified: head/sys/netinet6/ip6_mroute.h Modified: head/sys/netinet6/ip6_mroute.h ============================================================================== --- head/sys/netinet6/ip6_mroute.h Thu Jan 9 22:40:51 2014 (r260495) +++ head/sys/netinet6/ip6_mroute.h Thu Jan 9 22:41:18 2014 (r260496) @@ -194,7 +194,7 @@ struct sioc_mif_req6 { u_quad_t obytes; /* Output byte count on mif */ }; -#ifdef _KERNEL +#if defined(_KERNEL) || defined(KERNEL) /* * The kernel's multicast-interface structure. */ From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 23:09:06 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9C07A4F7; Thu, 9 Jan 2014 23:09:06 +0000 (UTC) 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 6B5BC18D5; Thu, 9 Jan 2014 23: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 s09N96vU082982; Thu, 9 Jan 2014 23:09:06 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09N92TW082950; Thu, 9 Jan 2014 23:09:02 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401092309.s09N92TW082950@svn.freebsd.org> From: Dimitry Andric Date: Thu, 9 Jan 2014 23:09:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260497 - in stable: 10/lib/libiconv 10/lib/libiconv_modules/BIG5 10/lib/libiconv_modules/EUC 10/lib/libiconv_modules/EUCTW 10/lib/libiconv_modules/GBK2K 10/lib/libiconv_modules/ISO2022... X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 23:09:06 -0000 Author: dim Date: Thu Jan 9 23:08:56 2014 New Revision: 260497 URL: http://svnweb.freebsd.org/changeset/base/260497 Log: MFC r260334: Split the last gcc-specific flags off into CFLAGS.gcc. This also removes the need to use -Qunused-arguments for clang throughout the tree. MFC r260369: Apply band-aid for 32-bit compat libs failures after r260334: put back -Qunused-arguments for clang for now, until I can figure out a way to make it unneeded in all scenarios. Sorry about the breakage. Modified: stable/10/lib/libiconv/Makefile stable/10/lib/libiconv_modules/BIG5/Makefile stable/10/lib/libiconv_modules/EUC/Makefile stable/10/lib/libiconv_modules/EUCTW/Makefile stable/10/lib/libiconv_modules/GBK2K/Makefile stable/10/lib/libiconv_modules/ISO2022/Makefile stable/10/lib/libiconv_modules/JOHAB/Makefile stable/10/lib/libiconv_modules/UES/Makefile stable/10/lib/libiconv_modules/UTF1632/Makefile stable/10/lib/libiconv_modules/UTF7/Makefile stable/10/lib/libiconv_modules/iconv_std/Makefile stable/10/lib/libiconv_modules/mapper_parallel/Makefile stable/10/lib/libiconv_modules/mapper_serial/Makefile stable/10/lib/libiconv_modules/mapper_std/Makefile stable/10/lib/libiconv_modules/mapper_zone/Makefile stable/10/sys/boot/i386/boot2/Makefile stable/10/sys/boot/i386/gptboot/Makefile stable/10/sys/boot/i386/gptzfsboot/Makefile stable/10/sys/boot/i386/zfsboot/Makefile stable/10/sys/boot/pc98/boot2/Makefile stable/10/usr.sbin/mfiutil/Makefile Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/9/lib/libiconv/Makefile stable/9/lib/libiconv_modules/BIG5/Makefile stable/9/lib/libiconv_modules/EUC/Makefile stable/9/lib/libiconv_modules/EUCTW/Makefile stable/9/lib/libiconv_modules/GBK2K/Makefile stable/9/lib/libiconv_modules/ISO2022/Makefile stable/9/lib/libiconv_modules/JOHAB/Makefile stable/9/lib/libiconv_modules/UES/Makefile stable/9/lib/libiconv_modules/UTF1632/Makefile stable/9/lib/libiconv_modules/UTF7/Makefile stable/9/lib/libiconv_modules/iconv_std/Makefile stable/9/lib/libiconv_modules/mapper_parallel/Makefile stable/9/lib/libiconv_modules/mapper_serial/Makefile stable/9/lib/libiconv_modules/mapper_std/Makefile stable/9/lib/libiconv_modules/mapper_zone/Makefile stable/9/sys/boot/i386/boot2/Makefile stable/9/sys/boot/i386/gptboot/Makefile stable/9/sys/boot/i386/gptzfsboot/Makefile stable/9/sys/boot/i386/zfsboot/Makefile stable/9/sys/boot/pc98/boot2/Makefile stable/9/usr.sbin/mfiutil/Makefile Directory Properties: stable/9/lib/libiconv_modules/ (props changed) stable/9/share/mk/ (props changed) stable/9/share/mk/bsd.sys.mk (props changed) stable/9/sys/ (props changed) stable/9/sys/boot/i386/gptboot/ (props changed) stable/9/usr.sbin/mfiutil/ (props changed) Modified: stable/10/lib/libiconv/Makefile ============================================================================== --- stable/10/lib/libiconv/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -19,6 +19,7 @@ SRCS= citrus_bcs.c citrus_bcs_strtol.c c citrus_module.c citrus_none.c citrus_pivot_factory.c \ citrus_prop.c citrus_stdenc.c iconv.c -CFLAGS+= --param max-inline-insns-single=128 -I ${.CURDIR}/../../include -I${.CURDIR}/../libc/include +CFLAGS.gcc+= --param max-inline-insns-single=128 +CFLAGS+= -I ${.CURDIR}/../../include -I${.CURDIR}/../libc/include .include Modified: stable/10/lib/libiconv_modules/BIG5/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/BIG5/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/BIG5/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= BIG5 SRCS+= citrus_big5.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/EUC/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/EUC/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/EUC/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= EUC SRCS+= citrus_euc.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/EUCTW/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/EUCTW/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/EUCTW/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= EUCTW SRCS+= citrus_euctw.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/GBK2K/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/GBK2K/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/GBK2K/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= GBK2K SRCS+= citrus_gbk2k.c -CFLAGS+= --param max-inline-insns-single=16 +CFLAGS.gcc+= --param max-inline-insns-single=16 .include Modified: stable/10/lib/libiconv_modules/ISO2022/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/ISO2022/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/ISO2022/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= ISO2022 SRCS+= citrus_iso2022.c -CFLAGS+= --param max-inline-insns-single=128 +CFLAGS.gcc+= --param max-inline-insns-single=128 .include Modified: stable/10/lib/libiconv_modules/JOHAB/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/JOHAB/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/JOHAB/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= JOHAB SRCS+= citrus_johab.c -CFLAGS+= --param max-inline-insns-single=16 +CFLAGS.gcc+= --param max-inline-insns-single=16 .include Modified: stable/10/lib/libiconv_modules/UES/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/UES/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/UES/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= UES SRCS+= citrus_ues.c -CFLAGS+= --param max-inline-insns-single=64 +CFLAGS.gcc+= --param max-inline-insns-single=64 .include Modified: stable/10/lib/libiconv_modules/UTF1632/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/UTF1632/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/UTF1632/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= UTF1632 SRCS+= citrus_utf1632.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/UTF7/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/UTF7/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/UTF7/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= UTF7 SRCS+= citrus_utf7.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/iconv_std/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/iconv_std/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/iconv_std/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= iconv_std SRCS+= citrus_iconv_std.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/mapper_parallel/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/mapper_parallel/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/mapper_parallel/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -4,6 +4,6 @@ SHLIB= mapper_parallel SRCS+= citrus_mapper_serial.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/mapper_serial/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/mapper_serial/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/mapper_serial/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= mapper_serial SRCS+= citrus_mapper_serial.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/10/lib/libiconv_modules/mapper_std/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/mapper_std/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/mapper_std/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= mapper_std SRCS+= citrus_mapper_std.c -CFLAGS+= --param max-inline-insns-single=8 +CFLAGS.gcc+= --param max-inline-insns-single=8 .include Modified: stable/10/lib/libiconv_modules/mapper_zone/Makefile ============================================================================== --- stable/10/lib/libiconv_modules/mapper_zone/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/lib/libiconv_modules/mapper_zone/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= mapper_zone SRCS+= citrus_mapper_zone.c -CFLAGS+= --param max-inline-insns-single=8 +CFLAGS.gcc+= --param max-inline-insns-single=8 .include Modified: stable/10/sys/boot/i386/boot2/Makefile ============================================================================== --- stable/10/sys/boot/i386/boot2/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/sys/boot/i386/boot2/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -37,12 +37,13 @@ CFLAGS= -Os \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 \ + -Winline \ ${CLANG_OPT_SMALL} CFLAGS.gcc+= -fno-guess-branch-probability \ -fno-unit-at-a-time \ -mno-align-long-strings \ + --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/10/sys/boot/i386/gptboot/Makefile ============================================================================== --- stable/10/sys/boot/i386/gptboot/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/sys/boot/i386/gptboot/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -35,7 +35,9 @@ CFLAGS= -DBOOTPROG=\"gptboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/10/sys/boot/i386/gptzfsboot/Makefile ============================================================================== --- stable/10/sys/boot/i386/gptzfsboot/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/sys/boot/i386/gptzfsboot/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -32,7 +32,9 @@ CFLAGS= -DBOOTPROG=\"gptzfsboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/10/sys/boot/i386/zfsboot/Makefile ============================================================================== --- stable/10/sys/boot/i386/zfsboot/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/sys/boot/i386/zfsboot/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -29,7 +29,9 @@ CFLAGS= -DBOOTPROG=\"zfsboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/10/sys/boot/pc98/boot2/Makefile ============================================================================== --- stable/10/sys/boot/pc98/boot2/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/sys/boot/pc98/boot2/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -42,7 +42,9 @@ CFLAGS= -Os \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 # Set machine type to PC98_SYSTEM_PARAMETER #CFLAGS+= -DSET_MACHINE_TYPE Modified: stable/10/usr.sbin/mfiutil/Makefile ============================================================================== --- stable/10/usr.sbin/mfiutil/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/10/usr.sbin/mfiutil/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -5,7 +5,7 @@ SRCS= mfiutil.c mfi_bbu.c mfi_cmd.c mfi_ mfi_flash.c mfi_patrol.c mfi_show.c mfi_volume.c mfi_foreign.c MAN8= mfiutil.8 -CFLAGS+= -fno-builtin-strftime +CFLAGS.gcc+= -fno-builtin-strftime DPADD= ${LIBUTIL} LDADD= -lutil From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 23:09:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 002B34F3; Thu, 9 Jan 2014 23:09:01 +0000 (UTC) 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 C509B18D2; Thu, 9 Jan 2014 23:09: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 s09N91gj082944; Thu, 9 Jan 2014 23:09:01 GMT (envelope-from dim@svn.freebsd.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09N8vQb082899; Thu, 9 Jan 2014 23:08:57 GMT (envelope-from dim@svn.freebsd.org) Message-Id: <201401092308.s09N8vQb082899@svn.freebsd.org> From: Dimitry Andric Date: Thu, 9 Jan 2014 23:08:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260497 - in stable: 10/lib/libiconv 10/lib/libiconv_modules/BIG5 10/lib/libiconv_modules/EUC 10/lib/libiconv_modules/EUCTW 10/lib/libiconv_modules/GBK2K 10/lib/libiconv_modules/ISO2022... X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 23:09:02 -0000 Author: dim Date: Thu Jan 9 23:08:56 2014 New Revision: 260497 URL: http://svnweb.freebsd.org/changeset/base/260497 Log: MFC r260334: Split the last gcc-specific flags off into CFLAGS.gcc. This also removes the need to use -Qunused-arguments for clang throughout the tree. MFC r260369: Apply band-aid for 32-bit compat libs failures after r260334: put back -Qunused-arguments for clang for now, until I can figure out a way to make it unneeded in all scenarios. Sorry about the breakage. Modified: stable/9/lib/libiconv/Makefile stable/9/lib/libiconv_modules/BIG5/Makefile stable/9/lib/libiconv_modules/EUC/Makefile stable/9/lib/libiconv_modules/EUCTW/Makefile stable/9/lib/libiconv_modules/GBK2K/Makefile stable/9/lib/libiconv_modules/ISO2022/Makefile stable/9/lib/libiconv_modules/JOHAB/Makefile stable/9/lib/libiconv_modules/UES/Makefile stable/9/lib/libiconv_modules/UTF1632/Makefile stable/9/lib/libiconv_modules/UTF7/Makefile stable/9/lib/libiconv_modules/iconv_std/Makefile stable/9/lib/libiconv_modules/mapper_parallel/Makefile stable/9/lib/libiconv_modules/mapper_serial/Makefile stable/9/lib/libiconv_modules/mapper_std/Makefile stable/9/lib/libiconv_modules/mapper_zone/Makefile stable/9/sys/boot/i386/boot2/Makefile stable/9/sys/boot/i386/gptboot/Makefile stable/9/sys/boot/i386/gptzfsboot/Makefile stable/9/sys/boot/i386/zfsboot/Makefile stable/9/sys/boot/pc98/boot2/Makefile stable/9/usr.sbin/mfiutil/Makefile Directory Properties: stable/9/lib/libiconv_modules/ (props changed) stable/9/share/mk/ (props changed) stable/9/share/mk/bsd.sys.mk (props changed) stable/9/sys/ (props changed) stable/9/sys/boot/i386/gptboot/ (props changed) stable/9/usr.sbin/mfiutil/ (props changed) Changes in other areas also in this revision: Modified: stable/10/lib/libiconv/Makefile stable/10/lib/libiconv_modules/BIG5/Makefile stable/10/lib/libiconv_modules/EUC/Makefile stable/10/lib/libiconv_modules/EUCTW/Makefile stable/10/lib/libiconv_modules/GBK2K/Makefile stable/10/lib/libiconv_modules/ISO2022/Makefile stable/10/lib/libiconv_modules/JOHAB/Makefile stable/10/lib/libiconv_modules/UES/Makefile stable/10/lib/libiconv_modules/UTF1632/Makefile stable/10/lib/libiconv_modules/UTF7/Makefile stable/10/lib/libiconv_modules/iconv_std/Makefile stable/10/lib/libiconv_modules/mapper_parallel/Makefile stable/10/lib/libiconv_modules/mapper_serial/Makefile stable/10/lib/libiconv_modules/mapper_std/Makefile stable/10/lib/libiconv_modules/mapper_zone/Makefile stable/10/sys/boot/i386/boot2/Makefile stable/10/sys/boot/i386/gptboot/Makefile stable/10/sys/boot/i386/gptzfsboot/Makefile stable/10/sys/boot/i386/zfsboot/Makefile stable/10/sys/boot/pc98/boot2/Makefile stable/10/usr.sbin/mfiutil/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/9/lib/libiconv/Makefile ============================================================================== --- stable/9/lib/libiconv/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -19,6 +19,7 @@ SRCS= citrus_bcs.c citrus_bcs_strtol.c c citrus_module.c citrus_none.c citrus_pivot_factory.c \ citrus_prop.c citrus_stdenc.c iconv.c -CFLAGS+= --param max-inline-insns-single=128 -I ${.CURDIR}/../../include -I${.CURDIR}/../libc/include +CFLAGS.gcc+= --param max-inline-insns-single=128 +CFLAGS+= -I ${.CURDIR}/../../include -I${.CURDIR}/../libc/include .include Modified: stable/9/lib/libiconv_modules/BIG5/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/BIG5/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/BIG5/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= BIG5 SRCS+= citrus_big5.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/EUC/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/EUC/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/EUC/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= EUC SRCS+= citrus_euc.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/EUCTW/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/EUCTW/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/EUCTW/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= EUCTW SRCS+= citrus_euctw.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/GBK2K/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/GBK2K/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/GBK2K/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= GBK2K SRCS+= citrus_gbk2k.c -CFLAGS+= --param max-inline-insns-single=16 +CFLAGS.gcc+= --param max-inline-insns-single=16 .include Modified: stable/9/lib/libiconv_modules/ISO2022/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/ISO2022/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/ISO2022/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= ISO2022 SRCS+= citrus_iso2022.c -CFLAGS+= --param max-inline-insns-single=128 +CFLAGS.gcc+= --param max-inline-insns-single=128 .include Modified: stable/9/lib/libiconv_modules/JOHAB/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/JOHAB/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/JOHAB/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= JOHAB SRCS+= citrus_johab.c -CFLAGS+= --param max-inline-insns-single=16 +CFLAGS.gcc+= --param max-inline-insns-single=16 .include Modified: stable/9/lib/libiconv_modules/UES/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/UES/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/UES/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= UES SRCS+= citrus_ues.c -CFLAGS+= --param max-inline-insns-single=64 +CFLAGS.gcc+= --param max-inline-insns-single=64 .include Modified: stable/9/lib/libiconv_modules/UTF1632/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/UTF1632/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/UTF1632/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= UTF1632 SRCS+= citrus_utf1632.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/UTF7/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/UTF7/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/UTF7/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= UTF7 SRCS+= citrus_utf7.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/iconv_std/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/iconv_std/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/iconv_std/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= iconv_std SRCS+= citrus_iconv_std.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/mapper_parallel/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/mapper_parallel/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/mapper_parallel/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -4,6 +4,6 @@ SHLIB= mapper_parallel SRCS+= citrus_mapper_serial.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/mapper_serial/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/mapper_serial/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/mapper_serial/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= mapper_serial SRCS+= citrus_mapper_serial.c -CFLAGS+= --param max-inline-insns-single=32 +CFLAGS.gcc+= --param max-inline-insns-single=32 .include Modified: stable/9/lib/libiconv_modules/mapper_std/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/mapper_std/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/mapper_std/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= mapper_std SRCS+= citrus_mapper_std.c -CFLAGS+= --param max-inline-insns-single=8 +CFLAGS.gcc+= --param max-inline-insns-single=8 .include Modified: stable/9/lib/libiconv_modules/mapper_zone/Makefile ============================================================================== --- stable/9/lib/libiconv_modules/mapper_zone/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/lib/libiconv_modules/mapper_zone/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -2,6 +2,6 @@ SHLIB= mapper_zone SRCS+= citrus_mapper_zone.c -CFLAGS+= --param max-inline-insns-single=8 +CFLAGS.gcc+= --param max-inline-insns-single=8 .include Modified: stable/9/sys/boot/i386/boot2/Makefile ============================================================================== --- stable/9/sys/boot/i386/boot2/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/sys/boot/i386/boot2/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -37,12 +37,13 @@ CFLAGS= -Os \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 \ + -Winline \ ${CLANG_OPT_SMALL} CFLAGS.gcc+= -fno-guess-branch-probability \ -fno-unit-at-a-time \ -mno-align-long-strings \ + --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/9/sys/boot/i386/gptboot/Makefile ============================================================================== --- stable/9/sys/boot/i386/gptboot/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/sys/boot/i386/gptboot/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -35,7 +35,9 @@ CFLAGS= -DBOOTPROG=\"gptboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/9/sys/boot/i386/gptzfsboot/Makefile ============================================================================== --- stable/9/sys/boot/i386/gptzfsboot/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/sys/boot/i386/gptzfsboot/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -32,7 +32,9 @@ CFLAGS= -DBOOTPROG=\"gptzfsboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/9/sys/boot/i386/zfsboot/Makefile ============================================================================== --- stable/9/sys/boot/i386/zfsboot/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/sys/boot/i386/zfsboot/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -29,7 +29,9 @@ CFLAGS= -DBOOTPROG=\"zfsboot\" \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 LD_FLAGS=-static -N --gc-sections Modified: stable/9/sys/boot/pc98/boot2/Makefile ============================================================================== --- stable/9/sys/boot/pc98/boot2/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/sys/boot/pc98/boot2/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -42,7 +42,9 @@ CFLAGS= -Os \ -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ - -Winline --param max-inline-insns-single=100 + -Winline + +CFLAGS.gcc+= --param max-inline-insns-single=100 # Set machine type to PC98_SYSTEM_PARAMETER #CFLAGS+= -DSET_MACHINE_TYPE Modified: stable/9/usr.sbin/mfiutil/Makefile ============================================================================== --- stable/9/usr.sbin/mfiutil/Makefile Thu Jan 9 22:41:18 2014 (r260496) +++ stable/9/usr.sbin/mfiutil/Makefile Thu Jan 9 23:08:56 2014 (r260497) @@ -5,7 +5,7 @@ SRCS= mfiutil.c mfi_bbu.c mfi_cmd.c mfi_ mfi_flash.c mfi_patrol.c mfi_show.c mfi_volume.c mfi_foreign.c MAN8= mfiutil.8 -CFLAGS+= -fno-builtin-strftime +CFLAGS.gcc+= -fno-builtin-strftime DPADD= ${LIBUTIL} LDADD= -lutil From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 23:26:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D1FF8BFC; Thu, 9 Jan 2014 23:26:45 +0000 (UTC) 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 A29A71A2D; Thu, 9 Jan 2014 23:26:45 +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 1W1Ozs-000BRn-6B; Thu, 09 Jan 2014 23:26:44 +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 s09NQfgK032121; Thu, 9 Jan 2014 16:26:41 -0700 (MST) (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/Tr/BwvyIKSYSfL48xN33j Subject: Re: svn commit: r260494 - head/sys/conf From: Ian Lepore To: Dimitry Andric In-Reply-To: <201401092216.s09MGUpe063050@svn.freebsd.org> References: <201401092216.s09MGUpe063050@svn.freebsd.org> Content-Type: text/plain; charset="us-ascii" Date: Thu, 09 Jan 2014 16:26:41 -0700 Message-ID: <1389310001.1158.434.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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 23:26:45 -0000 On Thu, 2014-01-09 at 22:16 +0000, Dimitry Andric wrote: > Author: dim > Date: Thu Jan 9 22:16:30 2014 > New Revision: 260494 > URL: http://svnweb.freebsd.org/changeset/base/260494 > > Log: > Fix a braino with r259730: we cannot currently use CFLAGS.gcc or > CFLAGS.clang in sys/conf/Makefile.arm, since the main kernel build does > not use . So revert that particular change for now. > > Pointy hat to: me > Noticed by: zbb > MFC after: 3 days > X-MFC-With: r259730 > > Modified: > head/sys/conf/Makefile.arm > > Modified: head/sys/conf/Makefile.arm > ============================================================================== > --- head/sys/conf/Makefile.arm Thu Jan 9 20:57:19 2014 (r260493) > +++ head/sys/conf/Makefile.arm Thu Jan 9 22:16:30 2014 (r260494) > @@ -39,16 +39,20 @@ SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/ldscri > STRIP_FLAGS = -S > .endif > > -CFLAGS.gcc += -mno-thumb-interwork > +.if ${COMPILER_TYPE} != "clang" > +CFLAGS += -mno-thumb-interwork > +.endif > > .if empty(DDB_ENABLED) > -.if defined(WITHOUT_ARM_EABI) > -CFLAGS.gcc += -mno-apcs-frame > +.if defined(WITHOUT_ARM_EABI) && ${COMPILER_TYPE} != "clang" > +CFLAGS += -mno-apcs-frame > .endif > .elif !defined(WITHOUT_ARM_EABI) > CFLAGS += -funwind-tables > +.if ${COMPILER_TYPE} == "clang" > # clang requires us to tell it to emit assembly with unwind information > -CFLAGS.clang += -mllvm -arm-enable-ehabi > +CFLAGS += -mllvm -arm-enable-ehabi > +.endif > .endif > > SYSTEM_LD_ = ${LD} -Bdynamic -T ldscript.$M.noheader ${LDFLAGS} \ That fixed it, now we can get backtraces in DDB again. Thanks. -- Ian From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 23:51:48 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7B5A56E1; Thu, 9 Jan 2014 23:51:48 +0000 (UTC) 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 6744E1D3C; Thu, 9 Jan 2014 23:51: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 s09NpmOQ001060; Thu, 9 Jan 2014 23:51:48 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09NpmX8001059; Thu, 9 Jan 2014 23:51:48 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201401092351.s09NpmX8001059@svn.freebsd.org> From: Warren Block Date: Thu, 9 Jan 2014 23:51:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260498 - stable/10/contrib/diff/man X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 23:51:48 -0000 Author: wblock (doc committer) Date: Thu Jan 9 23:51:47 2014 New Revision: 260498 URL: http://svnweb.freebsd.org/changeset/base/260498 Log: MFC r260358 Fix a cut and paste error. Modified: stable/10/contrib/diff/man/diff3.1 Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/diff/man/diff3.1 ============================================================================== --- stable/10/contrib/diff/man/diff3.1 Thu Jan 9 23:08:56 2014 (r260497) +++ stable/10/contrib/diff/man/diff3.1 Thu Jan 9 23:51:47 2014 (r260498) @@ -73,6 +73,6 @@ and .B diff3 programs are properly installed at your site, the command .IP -.B info diff +.B info diff3 .PP should give you access to the complete manual. From owner-svn-src-all@FreeBSD.ORG Thu Jan 9 23:52:56 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 20CF4BB6; Thu, 9 Jan 2014 23:52:56 +0000 (UTC) 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 0A6791D79; Thu, 9 Jan 2014 23:52: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 s09NqtSZ001290; Thu, 9 Jan 2014 23:52:55 GMT (envelope-from wblock@svn.freebsd.org) Received: (from wblock@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s09NqtTb001289; Thu, 9 Jan 2014 23:52:55 GMT (envelope-from wblock@svn.freebsd.org) Message-Id: <201401092352.s09NqtTb001289@svn.freebsd.org> From: Warren Block Date: Thu, 9 Jan 2014 23:52:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260499 - stable/9/contrib/diff/man X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jan 2014 23:52:56 -0000 Author: wblock (doc committer) Date: Thu Jan 9 23:52:55 2014 New Revision: 260499 URL: http://svnweb.freebsd.org/changeset/base/260499 Log: MFC r260358 Fix a cut and paste error. Modified: stable/9/contrib/diff/man/diff3.1 Directory Properties: stable/9/contrib/diff/ (props changed) Modified: stable/9/contrib/diff/man/diff3.1 ============================================================================== --- stable/9/contrib/diff/man/diff3.1 Thu Jan 9 23:51:47 2014 (r260498) +++ stable/9/contrib/diff/man/diff3.1 Thu Jan 9 23:52:55 2014 (r260499) @@ -73,6 +73,6 @@ and .B diff3 programs are properly installed at your site, the command .IP -.B info diff +.B info diff3 .PP should give you access to the complete manual. From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 01:17:06 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B0EBBBFE; Fri, 10 Jan 2014 01:17:06 +0000 (UTC) Received: from cain.gsoft.com.au (cain.gsoft.com.au [203.31.81.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1126E1348; Fri, 10 Jan 2014 01:17:05 +0000 (UTC) Received: from ur.gsoft.com.au (Ur.gsoft.com.au [203.31.81.34]) (authenticated bits=0) by cain.gsoft.com.au (8.14.4/8.14.3) with ESMTP id s0A0oLVa060161 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 10 Jan 2014 11:20:27 +1030 (CST) (envelope-from doconnor@gsoft.com.au) Subject: Re: svn commit: r260486 - head/etc/defaults Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Content-Type: multipart/signed; boundary="Apple-Mail=_82F713E1-4AF2-4247-9998-3385936F2F0A"; protocol="application/pgp-signature"; micalg=pgp-sha1 From: "Daniel O'Connor" In-Reply-To: Date: Fri, 10 Jan 2014 11:20:21 +1030 Message-Id: <778358F1-6063-408F-9DEB-5B1CD76C370C@gsoft.com.au> References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@FreeBSD.org> To: Adrian Chadd X-Mailer: Apple Mail (2.1827) X-Spam-Score: -3.551 () ALL_TRUSTED,BAYES_00,RP_MATCHES_RCVD X-Scanned-By: MIMEDefang 2.67 on 203.31.81.10 Cc: "svn-src-head@freebsd.org" , Alexander Motin , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 01:17:06 -0000 --Apple-Mail=_82F713E1-4AF2-4247-9998-3385936F2F0A Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii On 10 Jan 2014, at 2:48, Adrian Chadd wrote: > Depends if you're thinking locally or globally. > > Locally - for nfs? not a big deal. > > Globally - NFS, ZFS, GELI, geom/cam, NIC, etc.. suddenly your machine > could default to having a couple thousand worker threads just for a > HBA and a 10GE NIC. That's a little nuts. > Most of those aren't paid unless you actually enable the thing in question. Same with this change, if you aren't using NFS you don't pay the cost. -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C --Apple-Mail=_82F713E1-4AF2-4247-9998-3385936F2F0A Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iD8DBQFSz0PN5ZPcIHs/zowRAuOvAJ9Gsvi+paC02Yv27pArBV8YBQL89ACdHoLP PG7raD2Dsx95SDaPXiN38ks= =1tYX -----END PGP SIGNATURE----- --Apple-Mail=_82F713E1-4AF2-4247-9998-3385936F2F0A-- From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 01:58:19 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D06083B7; Fri, 10 Jan 2014 01:58:19 +0000 (UTC) Received: from mail-qc0-x231.google.com (mail-qc0-x231.google.com [IPv6:2607:f8b0:400d:c01::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3EE151634; Fri, 10 Jan 2014 01:58:19 +0000 (UTC) Received: by mail-qc0-f177.google.com with SMTP id m20so3411517qcx.8 for ; Thu, 09 Jan 2014 17:58:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-type; bh=v05ozqKsmzZoDFKkQzITL0TNA2QCSMpNc2FzdPtU5kM=; b=RJNtWlme1UoTTM/66YhBVSen9ENbFvtk/+PGJkhyYc6zzMLZcrVocnkXBF1bLF/Puw NcBni7Wg/sSX37dbx3ki9gu6WLkqgh7xh/M/MGQswZuPouz/NVC5Cgl9d+nXi/tdIm96 KcW8PjdYpATjUcHHLaLb7nq4z6G7iugfh7c1mqsb6i0+OSFcwV4N+q/lEU7B8BHspkKE Ee3avuqsLU3or5jrqGbTrBZV9YaC83cEgpCLVXY8TjpLfsScuVlhKnBbouF+gCPgz8hz jjomfn/PWL2U2QEROSRk08U568DY44jzY/mIFDks2RD9DuADGiaLnQCy7gG7Wdi4Xz2Q pUSg== X-Received: by 10.229.179.69 with SMTP id bp5mr1762981qcb.17.1389319097824; Thu, 09 Jan 2014 17:58:17 -0800 (PST) Received: from kan.dyndns.org (c-24-63-226-98.hsd1.ma.comcast.net. [24.63.226.98]) by mx.google.com with ESMTPSA id o5sm10372659qeg.2.2014.01.09.17.58.15 for (version=SSLv3 cipher=RC4-SHA bits=128/128); Thu, 09 Jan 2014 17:58:16 -0800 (PST) Date: Thu, 9 Jan 2014 20:58:08 -0500 From: Alexander Kabaev To: Alexander Motin Subject: Re: svn commit: r260486 - head/etc/defaults Message-ID: <20140109205808.1d734036@kan.dyndns.org> In-Reply-To: <52CECE57.4040002@FreeBSD.org> References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@FreeBSD.org> <52CECE57.4040002@FreeBSD.org> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.22; amd64-portbld-freebsd11.0) MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; boundary="Sig_/JJ5utv9UIqr4DQbroZ/XxbK"; protocol="application/pgp-signature" Cc: "svn-src-head@freebsd.org" , Adrian Chadd , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 01:58:19 -0000 --Sig_/JJ5utv9UIqr4DQbroZ/XxbK Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Thu, 09 Jan 2014 18:29:11 +0200 Alexander Motin wrote: > On 09.01.2014 18:18, Adrian Chadd wrote: > > Depends if you're thinking locally or globally. > > > > Locally - for nfs? not a big deal. > > > > Globally - NFS, ZFS, GELI, geom/cam, NIC, etc.. suddenly your > > machine could default to having a couple thousand worker threads > > just for a HBA and a 10GE NIC. That's a little nuts. >=20 > So, what is your point? Each NFS thread (unlike GEOM or CAM) executes=20 > only _one_ request at a time. Would you like your > 128-core/many-spindle system executed only 4 synchronous requests at > a time? >=20 I certainly do not want to have 8 * ncpu threads hanging around. While said extra CPUs were all but forced on me by Intel innovators, my NFS workloads hardly did scale at the same pace over the same time period. --=20 Alexander Kabaev --Sig_/JJ5utv9UIqr4DQbroZ/XxbK Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (FreeBSD) iD8DBQFSz1O2Q6z1jMm+XZYRAhd6AJ9FsbEyAmuhswm+Du3HgfHVY+GqFwCfSvWF M9YfIsdc+b9bTy6cDhY2M1w= =wqyJ -----END PGP SIGNATURE----- --Sig_/JJ5utv9UIqr4DQbroZ/XxbK-- From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 02:47:20 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CC9B630E; Fri, 10 Jan 2014 02:47:20 +0000 (UTC) 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 B8CE81A16; Fri, 10 Jan 2014 02:47: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 s0A2lKVN066889; Fri, 10 Jan 2014 02:47:20 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0A2lK9q066888; Fri, 10 Jan 2014 02:47:20 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201401100247.s0A2lK9q066888@svn.freebsd.org> From: Kevin Lo Date: Fri, 10 Jan 2014 02:47:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260501 - head/sys/dev/usb/wlan X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 02:47:20 -0000 Author: kevlo Date: Fri Jan 10 02:47:20 2014 New Revision: 260501 URL: http://svnweb.freebsd.org/changeset/base/260501 Log: Use m_getcl() instead of MGETHDR/MCLGET macros. Suggested by: glebius Modified: head/sys/dev/usb/wlan/if_rsu.c Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 01:44:34 2014 (r260500) +++ head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 02:47:20 2014 (r260501) @@ -1145,16 +1145,9 @@ rsu_event_survey(struct rsu_softc *sc, u pktlen = sizeof(*wh) + le32toh(bss->ieslen); if (__predict_false(pktlen > MCLBYTES)) return; - MGETHDR(m, M_NOWAIT, MT_DATA); + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); if (__predict_false(m == NULL)) return; - if (pktlen > MHLEN) { - MCLGET(m, M_NOWAIT); - if (!(m->m_flags & M_EXT)) { - m_free(m); - return; - } - } wh = mtod(m, struct ieee80211_frame *); wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_BEACON; @@ -1358,19 +1351,11 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", pktlen, rate, infosz, *rssi); - MGETHDR(m, M_NOWAIT, MT_DATA); + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); if (__predict_false(m == NULL)) { ifp->if_ierrors++; return NULL; } - if (pktlen > MHLEN) { - MCLGET(m, M_NOWAIT); - if (__predict_false(!(m->m_flags & M_EXT))) { - ifp->if_ierrors++; - m_freem(m); - return NULL; - } - } /* Finalize mbuf. */ m->m_pkthdr.rcvif = ifp; /* Hardware does Rx TCP checksum offload. */ From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 02:48:37 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AC8B044F; Fri, 10 Jan 2014 02:48:37 +0000 (UTC) Received: from ns.kevlo.org (220-135-115-6.HINET-IP.hinet.net [220.135.115.6]) (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 55A0C1A1E; Fri, 10 Jan 2014 02:48:36 +0000 (UTC) Received: from srg.kevlo.org (mail.kevlo.org [220.135.115.6]) by ns.kevlo.org (8.14.6/8.14.6) with ESMTP id s0A2mMiO018932; Fri, 10 Jan 2014 10:48:24 +0800 (CST) (envelope-from kevlo@FreeBSD.org) Message-ID: <52CF5F79.1070308@FreeBSD.org> Date: Fri, 10 Jan 2014 10:48:25 +0800 From: Kevin Lo User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Gleb Smirnoff Subject: Re: svn commit: r260463 - head/sys/dev/usb/wlan References: <201401090148.s091mYZx073572@svn.freebsd.org> <20140109085512.GN71033@FreeBSD.org> In-Reply-To: <20140109085512.GN71033@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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 02:48:37 -0000 On 2014/01/09 16:55, Gleb Smirnoff wrote: > On Thu, Jan 09, 2014 at 01:48:34AM +0000, Kevin Lo wrote: > K> Author: kevlo > K> Date: Thu Jan 9 01:48:33 2014 > K> New Revision: 260463 > K> URL: http://svnweb.freebsd.org/changeset/base/260463 > K> > K> Log: > K> Replace deprecated M_DONTWAIT with M_NOWAIT. > K> > K> Modified: > K> head/sys/dev/usb/wlan/if_rsu.c > K> head/sys/dev/usb/wlan/if_urtwn.c > K> > K> Modified: head/sys/dev/usb/wlan/if_rsu.c > K> ============================================================================== > K> --- head/sys/dev/usb/wlan/if_rsu.c Thu Jan 9 00:59:03 2014 (r260462) > K> +++ head/sys/dev/usb/wlan/if_rsu.c Thu Jan 9 01:48:33 2014 (r260463) > K> @@ -1145,11 +1145,11 @@ rsu_event_survey(struct rsu_softc *sc, u > K> pktlen = sizeof(*wh) + le32toh(bss->ieslen); > K> if (__predict_false(pktlen > MCLBYTES)) > K> return; > K> - MGETHDR(m, M_DONTWAIT, MT_DATA); > K> + MGETHDR(m, M_NOWAIT, MT_DATA); > K> if (__predict_false(m == NULL)) > K> return; > K> if (pktlen > MHLEN) { > K> - MCLGET(m, M_DONTWAIT); > K> + MCLGET(m, M_NOWAIT); > K> if (!(m->m_flags & M_EXT)) { > K> m_free(m); > K> return; > K> @@ -1358,13 +1358,13 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 > K> DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", > K> pktlen, rate, infosz, *rssi); > K> > K> - MGETHDR(m, M_DONTWAIT, MT_DATA); > K> + MGETHDR(m, M_NOWAIT, MT_DATA); > K> if (__predict_false(m == NULL)) { > K> ifp->if_ierrors++; > K> return NULL; > K> } > K> if (pktlen > MHLEN) { > K> - MCLGET(m, M_DONTWAIT); > K> + MCLGET(m, M_NOWAIT); > K> if (__predict_false(!(m->m_flags & M_EXT))) { > K> ifp->if_ierrors++; > K> m_freem(m); > > Thanks! > > The macros MGETHDR, MCLGET should also be converted to functions. Fixed in r260501. Thanks. Kevin From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 03:08:09 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2EDD0D9E; Fri, 10 Jan 2014 03:08:09 +0000 (UTC) Received: from mail109.syd.optusnet.com.au (mail109.syd.optusnet.com.au [211.29.132.80]) by mx1.freebsd.org (Postfix) with ESMTP id B28231CFC; Fri, 10 Jan 2014 03:08:08 +0000 (UTC) Received: from c122-106-144-87.carlnfd1.nsw.optusnet.com.au (c122-106-144-87.carlnfd1.nsw.optusnet.com.au [122.106.144.87]) by mail109.syd.optusnet.com.au (Postfix) with ESMTPS id 357ADD616D3; Fri, 10 Jan 2014 14:07:58 +1100 (EST) Date: Fri, 10 Jan 2014 14:07:57 +1100 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Dimitry Andric Subject: Re: svn commit: r259730 - in head: gnu/lib/csu gnu/lib/libgcc gnu/lib/libstdc++ gnu/lib/libsupc++ lib/atf/libatf-c/tests share/mk sys/conf tools/tools/ath/athstats tools/tools/net80211/wlanstats usr.bi... In-Reply-To: Message-ID: <20140110132845.W935@besplex.bde.org> References: <201312221751.rBMHpYpj059326@svn.freebsd.org> <7BAB80DB-AD2E-427A-AB9F-2E1A3F0DFE8C@FreeBSD.org> <1389279751.1158.426.camel@revolution.hippie.lan> 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=bpB1Wiqi c=1 sm=1 tr=0 a=p/w0leo876FR0WNmYI1KeA==:117 a=PO7r1zJSAAAA:8 a=OnJtn-i5wDAA:10 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=KAlrzZ-J0aMA:10 a=6I5d2MoRAAAA:8 a=JxsaJ2YE-OGrro_P9XYA:9 a=CjuIK1q_8ugA:10 a=SV7veod9ZcQA:10 Cc: Zbigniew Bodek , svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Ian Lepore X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 03:08:09 -0000 On Thu, 9 Jan 2014, Dimitry Andric wrote: > On 09 Jan 2014, at 16:02, Ian Lepore wrote: > ... >> At r259730: >> >> cc -c -O -pipe -std=c99 -g -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 -nostdinc -I. >> -I/local/build/staging/freebsd/imx53/src/sys >> -I/local/build/staging/freebsd/imx53/src/sys/contrib/altq >> -I/local/build/staging/freebsd/imx53/src/sys/contrib/libfdt -D_KERNEL >> -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -funwind-tables >> -ffreestanding >> -Werror /local/build/staging/freebsd/imx53/src/sys/arm/arm/trap.c >> >> The difference is that the -mllvm and -arm-enable-ehabi flags are >> missing. > > Aha, this was a nasty mistake, sorry. The main kernel builds do not > include bsd.sys.mk, so CFLAGS.clang and CFLAGS.gcc do not work there at > the moment. Fixed in r260494. It is a bug for kernel builds to include anything in /usr/share/mk, since this gives a dependency on the host environment. This bug is very old, but not too bad for files that should rarely change, e.g., sys.mk. It it is very bad for critical variations of CFLAGS. The old bug has been expanded exponentially by namespace pollution in environment files. Old versions of conf/*.mk have only the following includes: kern.post.mk:.include "kern.mk" kmod.mk:.include kmod.mk:.include kmod.mk:.include kmod.mk:.include kmod.mk:.include "kern.mk" This shows that the old bug was only in kmod.mk and in nested pollution in sys.mk. It used to be in kern.post.mk, when that included bsd.kern.mk instead of kern.mk. This was fixed for new sources by moving bsd.kern.mk to kern.mk in the kernel source tree, but collaterally enlarged for old sources by removing bsd.kern.mk from the host source tree (thus, old kernel sources no longer compiled with new hosts, even if nothing in *kern.mk changed). The other includes here shouldn't cause any problems since they shouldn't do anything that depends on the host environment including the compiler. conf/*.mk now has the following includes: kern.post.mk:.include "kern.mk" kern.pre.mk:.include kern.pre.mk:.include kmod.mk:.include kmod.mk:.include kmod.mk:.include kmod.mk:.include kmod.mk:.include kmod.mk:.include "kern.mk" bsd.sys.mk still isn't explicitly here. For modules, it is included by bsd.kmod.mk. The layering for *kmod.mk is backwards: - modules Makefiles include bsd.kmod.mk from the host environment - bsd.kmod.mk guesses the system directory and includes conf/kmod.mk from there - conf/kmod.mk then includes other files from the host environment, as above - bsd.kmod.mk then includes bsd.sys.mk from the host environment. This bug is old. I think you just copied the bug from bsd.kmod.mk so that it affects kernel builds too. Bruce From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 06:53:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BF1E64D7; Fri, 10 Jan 2014 06:53:46 +0000 (UTC) Received: from people.fsn.hu (people.fsn.hu [195.228.252.137]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DD5C01CF7; Fri, 10 Jan 2014 06:53:44 +0000 (UTC) Received: by people.fsn.hu (Postfix, from userid 1001) id DF80D128B5A5; Fri, 10 Jan 2014 07:47:12 +0100 (CET) X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.3 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MF-ACE0E1EA [pR: 17.8463] X-CRM114-CacheID: sfid-20140110_07471_50FD818E X-CRM114-Status: Good ( pR: 17.8463 ) X-DSPAM-Result: Whitelisted X-DSPAM-Processed: Fri Jan 10 07:47:12 2014 X-DSPAM-Confidence: 0.9984 X-DSPAM-Probability: 0.0000 X-DSPAM-Signature: 52cf9770784442092537317 X-DSPAM-Factors: 27, From*Attila Nagy , 0.00010, Subject*commit, 0.00026, Revision, 0.00026, New+Revision, 0.00037, Subject*svn, 0.00046, Subject*svn+commit, 0.00047, >+On, 0.00049, to+>, 0.00098, Author, 0.00109, wrote+>>, 0.00115, conf, 0.00125, conf, 0.00125, Modified, 0.00133, Modified, 0.00133, Log, 0.00153, #+This, 0.00176, #+This, 0.00176, cache, 0.00176, wrote+>, 0.00189, wrote+>, 0.00189, >+>>, 0.00255, >>+>, 0.00263, Url*//svnweb, 0.00263, In-Reply-To*mail.gmail.com>, 0.00289, timeout, 0.00292, References*mail.gmail.com>, 0.00297, X-Spambayes-Classification: ham; 0.00 Received: from japan.t-online.private (japan.t-online.co.hu [195.228.243.99]) by people.fsn.hu (Postfix) with ESMTPSA id 4195E128B595; Fri, 10 Jan 2014 07:47:10 +0100 (CET) Message-ID: <52CF976A.3070501@fsn.hu> Date: Fri, 10 Jan 2014 07:47:06 +0100 From: Attila Nagy MIME-Version: 1.0 To: Adrian Chadd , Alexander Motin Subject: Re: svn commit: r260486 - head/etc/defaults References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@FreeBSD.org> <52CECE57.4040002@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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 06:53:46 -0000 We have 2 and 4 hw.ncpu NFS servers with 70+ disks, so there may be cases, where even the default maximum of 256 threads is not enough to feed the -otherwise slow- disks. I guess the real solution here is to change the nfsd worker model to async. (adapting to top poster) On 01/09/14 18:14, Adrian Chadd wrote: > If it's one request per nfsd then we should likely scale it separate to > ncpu. Otherwise the default for two or core boxes may not be enough. > > Adrian > On Jan 9, 2014 11:29 AM, "Alexander Motin" wrote: > >> On 09.01.2014 18:18, Adrian Chadd wrote: >> >>> Depends if you're thinking locally or globally. >>> >>> Locally - for nfs? not a big deal. >>> >>> Globally - NFS, ZFS, GELI, geom/cam, NIC, etc.. suddenly your machine >>> could default to having a couple thousand worker threads just for a >>> HBA and a 10GE NIC. That's a little nuts. >>> >> So, what is your point? Each NFS thread (unlike GEOM or CAM) executes only >> _one_ request at a time. Would you like your 128-core/many-spindle system >> executed only 4 synchronous requests at a time? >> >> On 9 January 2014 08:00, Alexander Motin wrote: >>>> On 09.01.2014 17:57, Adrian Chadd wrote: >>>> >>>>> .. so with say, 128 core boxes showing up, is this really a good >>>>> default? >>>>> >>>> >>>> And what is the price? 16K+ of KVA per thread for thread stack, etc? 4 >>>> threads is probably much worse default there. May be nfsd's default >>>> could be >>>> tuned, but obviously it should not be hardcoded value. >>>> >>>> >>>> On 9 January 2014 07:55, Alexander Motin wrote: >>>>>> Author: mav >>>>>> Date: Thu Jan 9 15:55:55 2014 >>>>>> New Revision: 260486 >>>>>> URL: http://svnweb.freebsd.org/changeset/base/260486 >>>>>> >>>>>> Log: >>>>>> Remove very low default limit of 4 nfsd threads. nfsd's own >>>>>> default >>>>>> is >>>>>> 8 * hw.ncpu, that sounds more appropriate for these SMP/NCQ/... >>>>>> days. >>>>>> >>>>>> Modified: >>>>>> head/etc/defaults/rc.conf >>>>>> >>>>>> Modified: head/etc/defaults/rc.conf >>>>>> >>>>>> ============================================================ >>>>>> ================== >>>>>> --- head/etc/defaults/rc.conf Thu Jan 9 15:38:28 2014 >>>>>> (r260485) >>>>>> +++ head/etc/defaults/rc.conf Thu Jan 9 15:55:55 2014 >>>>>> (r260486) >>>>>> @@ -311,7 +311,7 @@ nfs_client_enable="NO" # This host is >>>>>> a >>>>>> nfs_access_cache="60" # Client cache timeout in seconds >>>>>> nfs_server_enable="NO" # This host is an NFS server (or NO). >>>>>> oldnfs_server_enable="NO" # Run the old NFS server (YES/NO). >>>>>> -nfs_server_flags="-u -t -n 4" # Flags to nfsd (if enabled). >>>>>> +nfs_server_flags="-u -t" # Flags to nfsd (if enabled). >>>>>> mountd_enable="NO" # Run mountd (or NO). >>>>>> mountd_flags="-r" # Flags to mountd (if NFS server >>>>>> enabled). >>>>>> weak_mountd_authentication="NO" # Allow non-root mount >>>>>> requests >>>>>> to be served. >>>>>> >>>> >>>> -- >>>> Alexander Motin >>>> >> -- >> Alexander Motin >> > _______________________________________________ > svn-src-all@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/svn-src-all > To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 07:43:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 1AC4E1A0; Fri, 10 Jan 2014 07:43:42 +0000 (UTC) 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 EF5F0107E; Fri, 10 Jan 2014 07:43: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 s0A7hfNn080439; Fri, 10 Jan 2014 07:43:41 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0A7hfXQ080431; Fri, 10 Jan 2014 07:43:41 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401100743.s0A7hfXQ080431@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 10 Jan 2014 07:43:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260502 - in stable/10: sbin/geom/class/mirror sys/geom/mirror X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 07:43:42 -0000 Author: ae Date: Fri Jan 10 07:43:40 2014 New Revision: 260502 URL: http://svnweb.freebsd.org/changeset/base/260502 Log: MFC r258357: Add "resize" verb to gmirror(8) and such functionality to geom_mirror(4). Now it is easy to expand the size of the mirror when all its components are replaced. Also add g_resize method to geom_mirror class. It will write updated metadata to new last sector, when parent provider is resized. Modified: stable/10/sbin/geom/class/mirror/geom_mirror.c stable/10/sbin/geom/class/mirror/gmirror.8 stable/10/sys/geom/mirror/g_mirror.c stable/10/sys/geom/mirror/g_mirror_ctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sbin/geom/class/mirror/geom_mirror.c ============================================================================== --- stable/10/sbin/geom/class/mirror/geom_mirror.c Fri Jan 10 02:47:20 2014 (r260501) +++ stable/10/sbin/geom/class/mirror/geom_mirror.c Fri Jan 10 07:43:40 2014 (r260502) @@ -28,6 +28,7 @@ __FBSDID("$FreeBSD$"); #include +#include #include #include #include @@ -53,6 +54,7 @@ static void mirror_activate(struct gctl_ static void mirror_clear(struct gctl_req *req); static void mirror_dump(struct gctl_req *req); static void mirror_label(struct gctl_req *req); +static void mirror_resize(struct gctl_req *req, unsigned flags); struct g_command class_commands[] = { { "activate", G_FLAG_VERBOSE, mirror_main, G_NULL_OPTS, @@ -112,6 +114,13 @@ struct g_command class_commands[] = { { "remove", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, "[-v] name prov ..." }, + { "resize", G_FLAG_VERBOSE, mirror_resize, + { + { 's', "size", "*", G_TYPE_STRING }, + G_OPT_SENTINEL + }, + "[-s size] [-v] name" + }, { "stop", G_FLAG_VERBOSE, NULL, { { 'f', "force", NULL, G_TYPE_BOOL }, @@ -376,3 +385,96 @@ mirror_activate(struct gctl_req *req) printf("Provider %s activated.\n", path); } } + +static struct gclass * +find_class(struct gmesh *mesh, const char *name) +{ + struct gclass *classp; + + LIST_FOREACH(classp, &mesh->lg_class, lg_class) { + if (strcmp(classp->lg_name, name) == 0) + return (classp); + } + return (NULL); +} + +static struct ggeom * +find_geom(struct gclass *classp, const char *name) +{ + struct ggeom *gp; + + LIST_FOREACH(gp, &classp->lg_geom, lg_geom) { + if (strcmp(gp->lg_name, name) == 0) + return (gp); + } + return (NULL); +} + +static void +mirror_resize(struct gctl_req *req, unsigned flags __unused) +{ + struct gmesh mesh; + struct gclass *classp; + struct ggeom *gp; + struct gprovider *pp; + struct gconsumer *cp; + off_t size; + int error, nargs; + const char *name; + char ssize[30]; + + nargs = gctl_get_int(req, "nargs"); + if (nargs < 1) { + gctl_error(req, "Too few arguments."); + return; + } + error = geom_gettree(&mesh); + if (error) + errc(EXIT_FAILURE, error, "Cannot get GEOM tree"); + name = gctl_get_ascii(req, "class"); + if (name == NULL) + abort(); + classp = find_class(&mesh, name); + if (classp == NULL) + errx(EXIT_FAILURE, "Class %s not found.", name); + name = gctl_get_ascii(req, "arg0"); + if (name == NULL) + abort(); + gp = find_geom(classp, name); + if (gp == NULL) + errx(EXIT_FAILURE, "No such geom: %s.", name); + pp = LIST_FIRST(&gp->lg_provider); + if (pp == NULL) + errx(EXIT_FAILURE, "Provider of geom %s not found.", name); + size = pp->lg_mediasize; + name = gctl_get_ascii(req, "size"); + if (name == NULL) + errx(EXIT_FAILURE, "The size is not specified."); + if (*name == '*') { +#define CSZ(c) ((c)->lg_provider->lg_mediasize - \ + (c)->lg_provider->lg_sectorsize) + /* Find the maximum possible size */ + LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) { + if (CSZ(cp) > size) + size = CSZ(cp); + } + LIST_FOREACH(cp, &gp->lg_consumer, lg_consumer) { + if (CSZ(cp) < size) + size = CSZ(cp); + } +#undef CSZ + if (size == pp->lg_mediasize) + errx(EXIT_FAILURE, + "Cannot expand provider %s\n", + pp->lg_name); + } else { + error = g_parse_lba(name, pp->lg_sectorsize, &size); + if (error) + errc(EXIT_FAILURE, error, "Invalid size param"); + size *= pp->lg_sectorsize; + } + snprintf(ssize, sizeof(ssize), "%ju", (uintmax_t)size); + gctl_change_param(req, "size", -1, ssize); + geom_deletetree(&mesh); + gctl_issue(req); +} Modified: stable/10/sbin/geom/class/mirror/gmirror.8 ============================================================================== --- stable/10/sbin/geom/class/mirror/gmirror.8 Fri Jan 10 02:47:20 2014 (r260501) +++ stable/10/sbin/geom/class/mirror/gmirror.8 Fri Jan 10 07:43:40 2014 (r260502) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 8, 2009 +.Dd November 20, 2013 .Dt GMIRROR 8 .Os .Sh NAME @@ -60,6 +60,11 @@ .Ar name .Ar prov ... .Nm +.Cm resize +.Op Fl v +.Op Fl s Ar size +.Ar name +.Nm .Cm insert .Op Fl hiv .Op Fl p Ar priority @@ -193,6 +198,16 @@ balance algorithm. Rebuild the given mirror components forcibly. If autosynchronization was not turned off for the given device, this command should be unnecessary. +.It Cm resize +Change the size of the given mirror. +.Pp +Additional options include: +.Bl -tag -width ".Fl s Ar size" +.It Fl s Ar size +New size of the mirror is expressed in logical block numbers. +This option can be omitted, then it will be automatically calculated to +maximum available size. +.El .It Cm insert Add the given component(s) to the existing mirror. .Pp Modified: stable/10/sys/geom/mirror/g_mirror.c ============================================================================== --- stable/10/sys/geom/mirror/g_mirror.c Fri Jan 10 02:47:20 2014 (r260501) +++ stable/10/sys/geom/mirror/g_mirror.c Fri Jan 10 07:43:40 2014 (r260502) @@ -87,6 +87,7 @@ static int g_mirror_shutdown = 0; static int g_mirror_destroy_geom(struct gctl_req *req, struct g_class *mp, struct g_geom *gp); static g_taste_t g_mirror_taste; +static g_resize_t g_mirror_resize; static void g_mirror_init(struct g_class *mp); static void g_mirror_fini(struct g_class *mp); @@ -97,7 +98,8 @@ struct g_class g_mirror_class = { .taste = g_mirror_taste, .destroy_geom = g_mirror_destroy_geom, .init = g_mirror_init, - .fini = g_mirror_fini + .fini = g_mirror_fini, + .resize = g_mirror_resize }; @@ -640,9 +642,17 @@ g_mirror_write_metadata(struct g_mirror_ length = cp->provider->sectorsize; offset = cp->provider->mediasize - length; sector = malloc((size_t)length, M_MIRROR, M_WAITOK | M_ZERO); - if (md != NULL) - mirror_metadata_encode(md, sector); - error = g_write_data(cp, offset, sector, length); + if (md != NULL) { + /* + * Handle the case, when the size of parent provider reduced. + */ + if (offset < md->md_mediasize) + error = ENOSPC; + else + mirror_metadata_encode(md, sector); + } + if (error == 0) + error = g_write_data(cp, offset, sector, length); free(sector, M_MIRROR); if (error != 0) { if ((disk->d_flags & G_MIRROR_DISK_FLAG_BROKEN) == 0) { @@ -1323,7 +1333,7 @@ g_mirror_sync_request(struct bio *bp) } G_MIRROR_LOGREQ(3, bp, "Synchronization request finished."); sync = &disk->d_sync; - if (sync->ds_offset == sc->sc_mediasize || + if (sync->ds_offset >= sc->sc_mediasize || sync->ds_consumer == NULL || (sc->sc_flags & G_MIRROR_DEVICE_FLAG_DESTROY) != 0) { /* Don't send more synchronization requests. */ @@ -2717,12 +2727,14 @@ g_mirror_check_metadata(struct g_mirror_ "md_balance", pp->name, sc->sc_name); return (EINVAL); } +#if 0 if (md->md_mediasize != sc->sc_mediasize) { G_MIRROR_DEBUG(1, "Invalid '%s' field on disk %s (device %s), skipping.", "md_mediasize", pp->name, sc->sc_name); return (EINVAL); } +#endif if (sc->sc_mediasize > pp->mediasize) { G_MIRROR_DEBUG(1, "Invalid size of disk %s (device %s), skipping.", pp->name, @@ -3115,6 +3127,22 @@ g_mirror_taste(struct g_class *mp, struc return (gp); } +static void +g_mirror_resize(struct g_consumer *cp) +{ + struct g_mirror_disk *disk; + + g_topology_assert(); + g_trace(G_T_TOPOLOGY, "%s(%s)", __func__, cp->provider->name); + + disk = cp->private; + if (disk == NULL) + return; + g_topology_unlock(); + g_mirror_update_metadata(disk); + g_topology_lock(); +} + static int g_mirror_destroy_geom(struct gctl_req *req __unused, struct g_class *mp __unused, struct g_geom *gp) Modified: stable/10/sys/geom/mirror/g_mirror_ctl.c ============================================================================== --- stable/10/sys/geom/mirror/g_mirror_ctl.c Fri Jan 10 02:47:20 2014 (r260501) +++ stable/10/sys/geom/mirror/g_mirror_ctl.c Fri Jan 10 07:43:40 2014 (r260502) @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -40,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -617,6 +619,75 @@ g_mirror_ctl_remove(struct gctl_req *req } static void +g_mirror_ctl_resize(struct gctl_req *req, struct g_class *mp) +{ + struct g_mirror_softc *sc; + struct g_mirror_disk *disk; + uint64_t mediasize; + const char *name, *s; + char *x; + int *nargs; + + nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs)); + if (nargs == NULL) { + gctl_error(req, "No '%s' argument.", "nargs"); + return; + } + if (*nargs != 1) { + gctl_error(req, "Missing device."); + return; + } + name = gctl_get_asciiparam(req, "arg0"); + if (name == NULL) { + gctl_error(req, "No 'arg%u' argument.", 0); + return; + } + s = gctl_get_asciiparam(req, "size"); + if (s == NULL) { + gctl_error(req, "No '%s' argument.", "size"); + return; + } + mediasize = strtouq(s, &x, 0); + if (*x != '\0' || mediasize == 0) { + gctl_error(req, "Invalid '%s' argument.", "size"); + return; + } + sc = g_mirror_find_device(mp, name); + if (sc == NULL) { + gctl_error(req, "No such device: %s.", name); + return; + } + /* Deny shrinking of an opened provider */ + if ((g_debugflags & 16) == 0 && (sc->sc_provider->acr > 0 || + sc->sc_provider->acw > 0 || sc->sc_provider->ace > 0)) { + if (sc->sc_mediasize > mediasize) { + gctl_error(req, "Device %s is busy.", + sc->sc_provider->name); + sx_xunlock(&sc->sc_lock); + return; + } + } + LIST_FOREACH(disk, &sc->sc_disks, d_next) { + if (mediasize > disk->d_consumer->provider->mediasize - + disk->d_consumer->provider->sectorsize) { + gctl_error(req, "Provider %s is too small.", + disk->d_name); + sx_xunlock(&sc->sc_lock); + return; + } + } + /* Update the size. */ + sc->sc_mediasize = mediasize; + LIST_FOREACH(disk, &sc->sc_disks, d_next) { + g_mirror_update_metadata(disk); + } + g_topology_lock(); + g_resize_provider(sc->sc_provider, mediasize); + g_topology_unlock(); + sx_xunlock(&sc->sc_lock); +} + +static void g_mirror_ctl_deactivate(struct gctl_req *req, struct g_class *mp) { struct g_mirror_softc *sc; @@ -793,6 +864,8 @@ g_mirror_config(struct gctl_req *req, st g_mirror_ctl_insert(req, mp); else if (strcmp(verb, "remove") == 0) g_mirror_ctl_remove(req, mp); + else if (strcmp(verb, "resize") == 0) + g_mirror_ctl_resize(req, mp); else if (strcmp(verb, "deactivate") == 0) g_mirror_ctl_deactivate(req, mp); else if (strcmp(verb, "forget") == 0) From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 07:48:37 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C767149E; Fri, 10 Jan 2014 07:48:37 +0000 (UTC) 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 B12E510B2; Fri, 10 Jan 2014 07:48: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 s0A7mbW1081051; Fri, 10 Jan 2014 07:48:37 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0A7ma51081044; Fri, 10 Jan 2014 07:48:36 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401100748.s0A7ma51081044@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 10 Jan 2014 07:48:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260503 - in stable/10: sbin/geom/class/mirror sys/geom/mirror X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 07:48:38 -0000 Author: ae Date: Fri Jan 10 07:48:36 2014 New Revision: 260503 URL: http://svnweb.freebsd.org/changeset/base/260503 Log: MFC r259634: Prevent users from deactivating the last component of a mirror. MFC r259929: Add an ability to stop gmirror and clear its metadata in one command. This fixes the problem, when gmirror starts again just after stop. The problem occurs when gmirror's component has geom label with equal size. E.g. gpt and gptid have the same size as partition, diskid has the same size as entire disk. When gmirror's geom has been destroyed, glabel creates its providers and this initiate retaste. Now "gmirror destroy" command is available. It destroys geom and also erases gmirror's metadata. PR: 184985 Modified: stable/10/sbin/geom/class/mirror/geom_mirror.c stable/10/sbin/geom/class/mirror/gmirror.8 stable/10/sys/geom/mirror/g_mirror.c stable/10/sys/geom/mirror/g_mirror.h stable/10/sys/geom/mirror/g_mirror_ctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sbin/geom/class/mirror/geom_mirror.c ============================================================================== --- stable/10/sbin/geom/class/mirror/geom_mirror.c Fri Jan 10 07:43:40 2014 (r260502) +++ stable/10/sbin/geom/class/mirror/geom_mirror.c Fri Jan 10 07:48:36 2014 (r260503) @@ -82,6 +82,13 @@ struct g_command class_commands[] = { { "deactivate", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, "[-v] name prov ..." }, + { "destroy", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_BOOL }, + G_OPT_SENTINEL + }, + "[-fv] name ..." + }, { "dump", 0, mirror_main, G_NULL_OPTS, "prov ..." }, Modified: stable/10/sbin/geom/class/mirror/gmirror.8 ============================================================================== --- stable/10/sbin/geom/class/mirror/gmirror.8 Fri Jan 10 07:43:40 2014 (r260502) +++ stable/10/sbin/geom/class/mirror/gmirror.8 Fri Jan 10 07:48:36 2014 (r260503) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 20, 2013 +.Dd December 27, 2013 .Dt GMIRROR 8 .Os .Sh NAME @@ -86,6 +86,10 @@ .Ar name .Ar prov ... .Nm +.Cm destroy +.Op Fl fv +.Ar name ... +.Nm .Cm forget .Op Fl v .Ar name ... @@ -227,6 +231,14 @@ Activate the given component(s), which w .It Cm deactivate Mark the given component(s) as inactive, so it will not be automatically connected to the mirror. +.It Cm destroy +Stop the given mirror and clear metadata on all its components. +.Pp +Additional options include: +.Bl -tag -width ".Fl f" +.It Fl f +Stop the given mirror even if it is opened. +.El .It Cm forget Forget about components which are not connected. This command is useful when a disk has failed and cannot be reconnected, preventing the Modified: stable/10/sys/geom/mirror/g_mirror.c ============================================================================== --- stable/10/sys/geom/mirror/g_mirror.c Fri Jan 10 07:43:40 2014 (r260502) +++ stable/10/sys/geom/mirror/g_mirror.c Fri Jan 10 07:48:36 2014 (r260503) @@ -642,7 +642,8 @@ g_mirror_write_metadata(struct g_mirror_ length = cp->provider->sectorsize; offset = cp->provider->mediasize - length; sector = malloc((size_t)length, M_MIRROR, M_WAITOK | M_ZERO); - if (md != NULL) { + if (md != NULL && + (sc->sc_flags & G_MIRROR_DEVICE_FLAG_WIPE) == 0) { /* * Handle the case, when the size of parent provider reduced. */ @@ -749,7 +750,8 @@ g_mirror_update_metadata(struct g_mirror sc = disk->d_softc; sx_assert(&sc->sc_lock, SX_LOCKED); - g_mirror_fill_metadata(sc, disk, &md); + if ((sc->sc_flags & G_MIRROR_DEVICE_FLAG_WIPE) == 0) + g_mirror_fill_metadata(sc, disk, &md); error = g_mirror_write_metadata(disk, &md); if (error == 0) { G_MIRROR_DEBUG(2, "Metadata on %s updated.", Modified: stable/10/sys/geom/mirror/g_mirror.h ============================================================================== --- stable/10/sys/geom/mirror/g_mirror.h Fri Jan 10 07:43:40 2014 (r260502) +++ stable/10/sys/geom/mirror/g_mirror.h Fri Jan 10 07:48:36 2014 (r260503) @@ -160,6 +160,7 @@ struct g_mirror_event { #define G_MIRROR_DEVICE_FLAG_WAIT 0x0200000000000000ULL #define G_MIRROR_DEVICE_FLAG_DESTROYING 0x0400000000000000ULL #define G_MIRROR_DEVICE_FLAG_TASTING 0x0800000000000000ULL +#define G_MIRROR_DEVICE_FLAG_WIPE 0x1000000000000000ULL #define G_MIRROR_DEVICE_STATE_STARTING 0 #define G_MIRROR_DEVICE_STATE_RUNNING 1 Modified: stable/10/sys/geom/mirror/g_mirror_ctl.c ============================================================================== --- stable/10/sys/geom/mirror/g_mirror_ctl.c Fri Jan 10 07:43:40 2014 (r260502) +++ stable/10/sys/geom/mirror/g_mirror_ctl.c Fri Jan 10 07:48:36 2014 (r260503) @@ -695,7 +695,7 @@ g_mirror_ctl_deactivate(struct gctl_req const char *name; char param[16]; int *nargs; - u_int i; + u_int i, active; nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs)); if (nargs == NULL) { @@ -716,6 +716,7 @@ g_mirror_ctl_deactivate(struct gctl_req gctl_error(req, "No such device: %s.", name); return; } + active = g_mirror_ndisks(sc, G_MIRROR_DISK_STATE_ACTIVE); for (i = 1; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); name = gctl_get_asciiparam(req, param); @@ -728,6 +729,16 @@ g_mirror_ctl_deactivate(struct gctl_req gctl_error(req, "No such provider: %s.", name); continue; } + if (disk->d_state == G_MIRROR_DISK_STATE_ACTIVE) { + if (active > 1) + active--; + else { + gctl_error(req, "%s: Can't deactivate the " + "last ACTIVE component %s.", + sc->sc_geom->name, name); + continue; + } + } disk->d_flags |= G_MIRROR_DISK_FLAG_INACTIVE; disk->d_flags &= ~G_MIRROR_DISK_FLAG_FORCE_SYNC; g_mirror_update_metadata(disk); @@ -786,7 +797,7 @@ g_mirror_ctl_forget(struct gctl_req *req } static void -g_mirror_ctl_stop(struct gctl_req *req, struct g_class *mp) +g_mirror_ctl_stop(struct gctl_req *req, struct g_class *mp, int wipe) { struct g_mirror_softc *sc; int *force, *nargs, error; @@ -827,10 +838,14 @@ g_mirror_ctl_stop(struct gctl_req *req, return; } g_cancel_event(sc); + if (wipe) + sc->sc_flags |= G_MIRROR_DEVICE_FLAG_WIPE; error = g_mirror_destroy(sc, how); if (error != 0) { gctl_error(req, "Cannot destroy device %s (error=%d).", sc->sc_geom->name, error); + if (wipe) + sc->sc_flags &= ~G_MIRROR_DEVICE_FLAG_WIPE; sx_xunlock(&sc->sc_lock); return; } @@ -871,7 +886,9 @@ g_mirror_config(struct gctl_req *req, st else if (strcmp(verb, "forget") == 0) g_mirror_ctl_forget(req, mp); else if (strcmp(verb, "stop") == 0) - g_mirror_ctl_stop(req, mp); + g_mirror_ctl_stop(req, mp, 0); + else if (strcmp(verb, "destroy") == 0) + g_mirror_ctl_stop(req, mp, 1); else gctl_error(req, "Unknown verb."); g_topology_lock(); From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 09:45:29 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 98B6DCEE; Fri, 10 Jan 2014 09:45:29 +0000 (UTC) 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 794EB19D2; Fri, 10 Jan 2014 09:45: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 s0A9jTBZ028501; Fri, 10 Jan 2014 09:45:29 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0A9jSUk028492; Fri, 10 Jan 2014 09:45:28 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401100945.s0A9jSUk028492@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 10 Jan 2014 09:45:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260504 - in stable/10/sys: netinet netinet6 X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 09:45:29 -0000 Author: ae Date: Fri Jan 10 09:45:28 2014 New Revision: 260504 URL: http://svnweb.freebsd.org/changeset/base/260504 Log: MFC r260151 (by adrian): Use an RLOCK here instead of an RWLOCK - matching all the other calls to lla_lookup(). This drastically reduces the very high lock contention when doing parallel TCP throughput tests (> 1024 sockets) with IPv6. MFC r260187: lla_lookup() does modification only when LLE_CREATE is specified. Thus we can use IF_AFDATA_RLOCK() instead of IF_AFDATA_LOCK() when doing lla_lookup() without LLE_CREATE flag. MFC r260217: Add IF_AFDATA_WLOCK_ASSERT() in case lla_lookup() is called with LLE_CREATE flag. Modified: stable/10/sys/netinet/if_ether.c stable/10/sys/netinet/in.c stable/10/sys/netinet6/in6.c stable/10/sys/netinet6/nd6.c stable/10/sys/netinet6/nd6_nbr.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/netinet/if_ether.c ============================================================================== --- stable/10/sys/netinet/if_ether.c Fri Jan 10 07:48:36 2014 (r260503) +++ stable/10/sys/netinet/if_ether.c Fri Jan 10 09:45:28 2014 (r260504) @@ -153,10 +153,10 @@ arp_ifscrub(struct ifnet *ifp, uint32_t addr4.sin_len = sizeof(addr4); addr4.sin_family = AF_INET; addr4.sin_addr.s_addr = addr; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); lla_lookup(LLTABLE(ifp), (LLE_DELETE | LLE_IFADDR), (struct sockaddr *)&addr4); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); } #endif @@ -805,9 +805,9 @@ reply: struct llentry *lle = NULL; sin.sin_addr = itaddr; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); lle = lla_lookup(LLTABLE(ifp), 0, (struct sockaddr *)&sin); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if ((lle != NULL) && (lle->la_flags & LLE_PUB)) { (void)memcpy(ar_tha(ah), ar_sha(ah), ah->ar_hln); Modified: stable/10/sys/netinet/in.c ============================================================================== --- stable/10/sys/netinet/in.c Fri Jan 10 07:48:36 2014 (r260503) +++ stable/10/sys/netinet/in.c Fri Jan 10 09:45:28 2014 (r260504) @@ -1435,6 +1435,7 @@ in_lltable_lookup(struct lltable *llt, u #endif if (!(flags & LLE_CREATE)) return (NULL); + IF_AFDATA_WLOCK_ASSERT(ifp); /* * A route that covers the given address must have * been installed 1st because we are doing a resolution, Modified: stable/10/sys/netinet6/in6.c ============================================================================== --- stable/10/sys/netinet6/in6.c Fri Jan 10 07:48:36 2014 (r260503) +++ stable/10/sys/netinet6/in6.c Fri Jan 10 09:45:28 2014 (r260504) @@ -2627,6 +2627,7 @@ in6_lltable_lookup(struct lltable *llt, if (lle == NULL) { if (!(flags & LLE_CREATE)) return (NULL); + IF_AFDATA_WLOCK_ASSERT(ifp); /* * A route that covers the given address must have * been installed 1st because we are doing a resolution, Modified: stable/10/sys/netinet6/nd6.c ============================================================================== --- stable/10/sys/netinet6/nd6.c Fri Jan 10 07:48:36 2014 (r260503) +++ stable/10/sys/netinet6/nd6.c Fri Jan 10 09:45:28 2014 (r260504) @@ -1146,9 +1146,9 @@ nd6_nud_hint(struct rtentry *rt, struct return; ifp = rt->rt_ifp; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = nd6_lookup(dst6, ND6_EXCLUSIVE, NULL); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if (ln == NULL) return; @@ -1574,16 +1574,16 @@ nd6_cache_lladdr(struct ifnet *ifp, stru * description on it in NS section (RFC 2461 7.2.3). */ flags = lladdr ? ND6_EXCLUSIVE : 0; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = nd6_lookup(from, flags, ifp); - + IF_AFDATA_RUNLOCK(ifp); if (ln == NULL) { flags |= ND6_EXCLUSIVE; + IF_AFDATA_LOCK(ifp); ln = nd6_lookup(from, flags | ND6_CREATE, ifp); IF_AFDATA_UNLOCK(ifp); is_newentry = 1; } else { - IF_AFDATA_UNLOCK(ifp); /* do nothing if static ndp is set */ if (ln->la_flags & LLE_STATIC) { static_route = 1; @@ -1891,9 +1891,9 @@ nd6_output_lle(struct ifnet *ifp, struct flags = ((m != NULL) || (lle != NULL)) ? LLE_EXCLUSIVE : 0; if (ln == NULL) { retry: - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = lla_lookup(LLTABLE6(ifp), flags, (struct sockaddr *)dst); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if ((ln == NULL) && nd6_is_addr_neighbor(dst, ifp)) { /* * Since nd6_is_addr_neighbor() internally calls nd6_lookup(), Modified: stable/10/sys/netinet6/nd6_nbr.c ============================================================================== --- stable/10/sys/netinet6/nd6_nbr.c Fri Jan 10 07:48:36 2014 (r260503) +++ stable/10/sys/netinet6/nd6_nbr.c Fri Jan 10 09:45:28 2014 (r260504) @@ -736,9 +736,9 @@ nd6_na_input(struct mbuf *m, int off, in * If no neighbor cache entry is found, NA SHOULD silently be * discarded. */ - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = nd6_lookup(&taddr6, LLE_EXCLUSIVE, ifp); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if (ln == NULL) { goto freeit; } From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 10:14:52 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7D08F44A; Fri, 10 Jan 2014 10:14:52 +0000 (UTC) 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 160121CE7; Fri, 10 Jan 2014 10:14:51 +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 s0AAEgQV033425 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 10 Jan 2014 14:14:42 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s0AAEg0d033424; Fri, 10 Jan 2014 14:14:42 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Fri, 10 Jan 2014 14:14:42 +0400 From: Gleb Smirnoff To: "Alexander V. Chernikov" Subject: Re: svn commit: r260488 - head/sys/net Message-ID: <20140110101442.GB73147@FreeBSD.org> References: <201401091813.s09IDPlU058184@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401091813.s09IDPlU058184@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 10:14:52 -0000 Alexander, some nitpicking: On Thu, Jan 09, 2014 at 06:13:25PM +0000, Alexander V. Chernikov wrote: A> @@ -52,6 +53,7 @@ A> #include A> #include A> #include A> +#include A> A> #include A> #include A> @@ -86,6 +88,13 @@ A> #define RT_NUMFIBS 1 A> #endif A> A> +#if defined(INET) || defined(INET6) A> +#ifdef SCTP A> +extern void sctp_addr_change(struct ifaddr *ifa, int cmd); A> +#endif /* SCTP */ A> +#endif A> + A> + Can be simplified to one liner: #if (defined(INET) || defined(INET6)) && defined(SCTP) Same stands for same ifdef down below in code. And extra empty line shouldn't have been added. A> + A> +/* A> + * Announce interface address arrival/withdraw A> + * Returns 0 on success. A> + */ A> +int A> +rt_addrmsg(int cmd, struct ifaddr *ifa, int fibnum) A> +{ A> + A> + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, A> + ("unexpected cmd %u", cmd)); A> + A> + if (fibnum != RT_ALL_FIBS) { A> + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " A> + "fibnum out of range 0 <= %d < %d", __func__, A> + fibnum, rt_numfibs)); A> + } A> + A> + return (rtsock_addrmsg(cmd, ifa, fibnum)); A> +} Second KASSERT together with if clause can be simplified to: KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), ... Same simplification can be done in rt_routemsg() and rt_newaddrmsg_fib(). A> + A> +/* A> + * Announce route addition/removal A> + * Users of this function MUST validate input data BEFORE calling. A> + * However we have to be able to handle invalid data: A> + * if some userland app sends us "invalid" route message (invalid mask, A> + * no dst, wrokg address families, etc...) we need to pass it back ^ typo A> + * to app (and any other rtsock consumers) with rtm_errno field set to A> + * non-zero value. A> + * Returns 0 on success. A> + */ A> +int A> +rtsock_routemsg(int cmd, struct ifnet *ifp, int error, struct rtentry *rt, A> + int fibnum) A> { A> + struct rt_addrinfo info; A> + struct sockaddr *sa; A> + struct mbuf *m; A> + struct rt_msghdr *rtm; A> A> - rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS); A> + if (route_cb.any_count == 0) A> + return (0); A> + A> + bzero((caddr_t)&info, sizeof(info)); A> + info.rti_info[RTAX_NETMASK] = rt_mask(rt); A> + info.rti_info[RTAX_DST] = sa = rt_key(rt); A> + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; A> + if ((m = rt_msg1(cmd, &info)) == NULL) A> + return (ENOBUFS); A> + rtm = mtod(m, struct rt_msghdr *); A> + rtm->rtm_index = ifp->if_index; A> + rtm->rtm_flags |= rt->rt_flags; A> + rtm->rtm_errno = error; A> + rtm->rtm_addrs = info.rti_addrs; A> + A> + if (fibnum != RT_ALL_FIBS) { A> + M_SETFIB(m, fibnum); A> + m->m_flags |= RTS_FILTER_FIB; A> + } A> + A> + rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC); A> + A> + return (0); A> } A> A> + Why extra line here? A> /* A> * This is the analogue to the rt_newaddrmsg which performs the same A> * function but for multicast group memberhips. This is easier since -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 10:20:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 5FF8A5E3; Fri, 10 Jan 2014 10:20:35 +0000 (UTC) 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 BF3461D0F; Fri, 10 Jan 2014 10:20:33 +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 s0AAKWLK033447 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 10 Jan 2014 14:20:32 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s0AAKW1D033446; Fri, 10 Jan 2014 14:20:32 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Fri, 10 Jan 2014 14:20:32 +0400 From: Gleb Smirnoff To: Kevin Lo Subject: Re: svn commit: r260501 - head/sys/dev/usb/wlan Message-ID: <20140110102032.GC73147@FreeBSD.org> References: <201401100247.s0A2lK9q066888@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201401100247.s0A2lK9q066888@svn.freebsd.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 10:20:35 -0000 Kevin, On Fri, Jan 10, 2014 at 02:47:20AM +0000, Kevin Lo wrote: K> Author: kevlo K> Date: Fri Jan 10 02:47:20 2014 K> New Revision: 260501 K> URL: http://svnweb.freebsd.org/changeset/base/260501 K> K> Log: K> Use m_getcl() instead of MGETHDR/MCLGET macros. K> K> Suggested by: glebius K> K> Modified: K> head/sys/dev/usb/wlan/if_rsu.c K> K> Modified: head/sys/dev/usb/wlan/if_rsu.c K> ============================================================================== K> --- head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 01:44:34 2014 (r260500) K> +++ head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 02:47:20 2014 (r260501) K> @@ -1145,16 +1145,9 @@ rsu_event_survey(struct rsu_softc *sc, u K> pktlen = sizeof(*wh) + le32toh(bss->ieslen); K> if (__predict_false(pktlen > MCLBYTES)) K> return; K> - MGETHDR(m, M_NOWAIT, MT_DATA); K> + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); K> if (__predict_false(m == NULL)) K> return; K> - if (pktlen > MHLEN) { K> - MCLGET(m, M_NOWAIT); K> - if (!(m->m_flags & M_EXT)) { K> - m_free(m); K> - return; K> - } K> - } K> wh = mtod(m, struct ieee80211_frame *); K> wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | K> IEEE80211_FC0_SUBTYPE_BEACON; K> @@ -1358,19 +1351,11 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 K> DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", K> pktlen, rate, infosz, *rssi); K> K> - MGETHDR(m, M_NOWAIT, MT_DATA); K> + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); K> if (__predict_false(m == NULL)) { K> ifp->if_ierrors++; K> return NULL; K> } K> - if (pktlen > MHLEN) { K> - MCLGET(m, M_NOWAIT); K> - if (__predict_false(!(m->m_flags & M_EXT))) { K> - ifp->if_ierrors++; K> - m_freem(m); K> - return NULL; K> - } K> - } K> /* Finalize mbuf. */ K> m->m_pkthdr.rcvif = ifp; K> /* Hardware does Rx TCP checksum offload. */ Sorry, but the correct code would be: if (pktlen > MHLEN) m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); else m = m_gethdr(M_NOWAIT, MT_DATA); if (__predict_false(m == NULL)) { ifp->if_ierrors++; return NULL; } Alternatively, you can use: m = m_get2(pktlen, M_NOWAIT, MT_DATA, M_PKTHDR); if (__predict_false(m == NULL)) { ifp->if_ierrors++; return NULL; } With committed code we are wasting memory for small packets. -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 10:36:15 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id BE23DB62; Fri, 10 Jan 2014 10:36:15 +0000 (UTC) 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 9DAAF1E77; Fri, 10 Jan 2014 10:36: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 s0AAaFFP047761; Fri, 10 Jan 2014 10:36:15 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AAaFC7047759; Fri, 10 Jan 2014 10:36:15 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401101036.s0AAaFC7047759@svn.freebsd.org> From: Julio Merino Date: Fri, 10 Jan 2014 10:36:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260505 - in head: . share/mk X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 10:36:15 -0000 Author: jmmv Date: Fri Jan 10 10:36:14 2014 New Revision: 260505 URL: http://svnweb.freebsd.org/changeset/base/260505 Log: Allow tests to provide a Kyuafile when they relied on auto-generation. When generating a Kyuafile in the KYUAFILE=auto case, use a filename that is unlikely to clash with the filename used by explicitly-provided Kyuafiles. This allows a Makefile to set KYUAFILE=yes and provide a Kyuafile in the same directory when such Makefile was previously relying on KYUAFILE=auto. Fixes issues with new Kyuafiles not being picked up in NO_CLEAN builds (although manual intervention is required once, unfortunately, as described in UPDATING). Reviewed by: sjg MFC after: 1 week Modified: head/UPDATING head/share/mk/bsd.test.mk Modified: head/UPDATING ============================================================================== --- head/UPDATING Fri Jan 10 09:45:28 2014 (r260504) +++ head/UPDATING Fri Jan 10 10:36:14 2014 (r260505) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20140110: + If a Makefile in a tests/ directory was auto-generating a Kyuafile + instead of providing an explicit one, this would prevent such + Makefile from providing its own Kyuafile in the future during + NO_CLEAN builds. This has been fixed in the Makefiles but manual + intervention is needed to clean an objdir if you use NO_CLEAN: + # find /usr/obj -name Kyuafile | xargs rm -f + 20131213: The behavior of gss_pseudo_random() for the krb5 mechanism has changed, for applications requesting a longer random string Modified: head/share/mk/bsd.test.mk ============================================================================== --- head/share/mk/bsd.test.mk Fri Jan 10 09:45:28 2014 (r260504) +++ head/share/mk/bsd.test.mk Fri Jan 10 10:36:14 2014 (r260505) @@ -79,14 +79,20 @@ WITHOUT_MAN=yes PROG_VARS+= BINDIR PROGS_TARGETS+= install -.if ${KYUAFILE:tl} != "no" +.if ${KYUAFILE:tl} == "yes" FILES+= Kyuafile FILESDIR_Kyuafile= ${TESTSDIR} -.if ${KYUAFILE:tl} == "auto" -CLEANFILES+= Kyuafile Kyuafile.tmp +CLEANFILES+= Kyuafile.auto Kyuafile.auto.tmp +.elif ${KYUAFILE:tl} == "auto" +FILES+= Kyuafile.auto +FILESDIR_Kyuafile.auto= ${TESTSDIR} +FILESNAME_Kyuafile.auto= Kyuafile -Kyuafile: Makefile +CLEANFILES+= Kyuafile.auto Kyuafile.auto.tmp + +.NOPATH: Kyuafile.auto +Kyuafile.auto: Makefile @{ \ echo '-- Automatically generated by bsd.test.mk.'; \ echo; \ @@ -94,16 +100,15 @@ Kyuafile: Makefile echo; \ echo 'test_suite("${TESTSUITE}")'; \ echo; \ - } >Kyuafile.tmp + } >Kyuafile.auto.tmp .for _T in ${_TESTS} @echo "${TEST_INTERFACE.${_T}}_test_program{name=\"${_T}\"}" \ - >>Kyuafile.tmp + >>Kyuafile.auto.tmp .endfor .for _T in ${TESTS_SUBDIRS:N.WAIT} - @echo "include(\"${_T}/Kyuafile\")" >>Kyuafile.tmp + @echo "include(\"${_T}/Kyuafile\")" >>Kyuafile.auto.tmp .endfor - @mv Kyuafile.tmp Kyuafile -.endif + @mv Kyuafile.auto.tmp Kyuafile.auto .endif KYUA?= ${KYUA_PREFIX}/bin/kyua From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 10:39:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 56A46CC5; Fri, 10 Jan 2014 10:39:02 +0000 (UTC) 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 289AE1E8B; Fri, 10 Jan 2014 10:39: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 s0AAd2qQ048084; Fri, 10 Jan 2014 10:39:02 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AAd1bE048076; Fri, 10 Jan 2014 10:39:01 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401101039.s0AAd1bE048076@svn.freebsd.org> From: Julio Merino Date: Fri, 10 Jan 2014 10:39:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260506 - in head/bin: sh/tests test/tests X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 10:39:02 -0000 Author: jmmv Date: Fri Jan 10 10:39:01 2014 New Revision: 260506 URL: http://svnweb.freebsd.org/changeset/base/260506 Log: Run the sh(1) and test(1) tests as unprivileged. One of the tests for test(1) fails and some of the tests for sh(1) are silently bypassed when running as root. To fix these tests and ensure they all run, mark the test programs for sh(1) and test(1) as requiring an unprivileged user. (This should and will be the default in Kyua but isn't yet.) MFC after: 1 week Added: head/bin/sh/tests/Kyuafile (contents, props changed) head/bin/test/tests/Kyuafile (contents, props changed) Modified: head/bin/sh/tests/Makefile head/bin/test/tests/Makefile Added: head/bin/sh/tests/Kyuafile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/bin/sh/tests/Kyuafile Fri Jan 10 10:39:01 2014 (r260506) @@ -0,0 +1,12 @@ +-- $FreeBSD$ + +syntax(2) + +test_suite("FreeBSD") + +-- Some tests in here are silently not run when the tests are executed as +-- root. Explicitly tell Kyua to drop privileges. +-- +-- TODO(jmmv): Kyua needs to do this by default, not only when explicitly +-- requested. See https://code.google.com/p/kyua/issues/detail?id=6 +tap_test_program{name="legacy_test", required_user="unprivileged"} Modified: head/bin/sh/tests/Makefile ============================================================================== --- head/bin/sh/tests/Makefile Fri Jan 10 10:36:14 2014 (r260505) +++ head/bin/sh/tests/Makefile Fri Jan 10 10:39:01 2014 (r260506) @@ -3,6 +3,7 @@ .include TESTSDIR= ${TESTSBASE}/bin/sh +KYUAFILE= yes TAP_TESTS_SH= legacy_test TAP_TESTS_SH_SED_legacy_test= -e 's,__SH__,/bin/sh,g' Added: head/bin/test/tests/Kyuafile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/bin/test/tests/Kyuafile Fri Jan 10 10:39:01 2014 (r260506) @@ -0,0 +1,12 @@ +-- $FreeBSD$ + +syntax(2) + +test_suite("FreeBSD") + +-- Some tests in here are silently not run when the tests are executed as +-- root. Explicitly tell Kyua to drop privileges. +-- +-- TODO(jmmv): Kyua needs to do this by default, not only when explicitly +-- requested. See https://code.google.com/p/kyua/issues/detail?id=6 +tap_test_program{name="legacy_test", required_user="unprivileged"} Modified: head/bin/test/tests/Makefile ============================================================================== --- head/bin/test/tests/Makefile Fri Jan 10 10:36:14 2014 (r260505) +++ head/bin/test/tests/Makefile Fri Jan 10 10:39:01 2014 (r260506) @@ -3,6 +3,7 @@ .include TESTSDIR= ${TESTSBASE}/bin/test +KYUAFILE= yes TAP_TESTS_SH= legacy_test From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 11:21:28 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id C16BD4B7; Fri, 10 Jan 2014 11:21:28 +0000 (UTC) Received: from mail110.syd.optusnet.com.au (mail110.syd.optusnet.com.au [211.29.132.97]) by mx1.freebsd.org (Postfix) with ESMTP id 6A27B122B; Fri, 10 Jan 2014 11:21:28 +0000 (UTC) Received: from c122-106-144-87.carlnfd1.nsw.optusnet.com.au (c122-106-144-87.carlnfd1.nsw.optusnet.com.au [122.106.144.87]) by mail110.syd.optusnet.com.au (Postfix) with ESMTPS id 7A633780678; Fri, 10 Jan 2014 22:21:18 +1100 (EST) Date: Fri, 10 Jan 2014 22:21:17 +1100 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Gleb Smirnoff Subject: Re: svn commit: r260488 - head/sys/net In-Reply-To: <20140110101442.GB73147@FreeBSD.org> Message-ID: <20140110215002.F2219@besplex.bde.org> References: <201401091813.s09IDPlU058184@svn.freebsd.org> <20140110101442.GB73147@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=HZAtEE08 c=1 sm=1 tr=0 a=p/w0leo876FR0WNmYI1KeA==:117 a=PO7r1zJSAAAA:8 a=eMIcmV_oiccA:10 a=kj9zAlcOel0A:10 a=JzwRw_2MAAAA:8 a=N3VrZbfzcpQA:10 a=mmTdQZTImtcw-5-rgbgA:9 a=LxpqiRVzYvIhZ244:21 a=SfjsROqbNFa2OhEC:21 a=CjuIK1q_8ugA:10 Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, "Alexander V. Chernikov" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 11:21:28 -0000 On Fri, 10 Jan 2014, Gleb Smirnoff wrote: > Alexander, > > some nitpicking: Some more: > > On Thu, Jan 09, 2014 at 06:13:25PM +0000, Alexander V. Chernikov wrote: > A> @@ -52,6 +53,7 @@ > A> #include > A> #include > A> #include > A> +#include Further unsorting of an unsorted list by adding to the end of it. > A> > A> #include > A> #include > A> @@ -86,6 +88,13 @@ > A> #define RT_NUMFIBS 1 > A> #endif > A> > A> +#if defined(INET) || defined(INET6) > A> +#ifdef SCTP > A> +extern void sctp_addr_change(struct ifaddr *ifa, int cmd); Redundant extern. This was redundant even for 1978 K&R, though it may have been needed for some non-C compilers, and for styles that want to emphasize that things are extern. KNF is not such a style. Parameter names in prototypes. style(9) and actual style are very inconsistent about this. The nearby style should be copied. This file (route,c) is old so it probably doesn't use parameter names in prototypes. It used to forward-declare a couple of static functions, and it didn't use parameter names in them. These functions went away. Now it still has some static functions, but doesn't forward-declare any of them (another style bug). > A> +#endif /* SCTP */ Excessive commenting of endifs. style(9) has very detailed rules on comments on endifs. > A> +#endif Inconsistent excessive commenting of endifs (not excessive here). > A> + > A> + > > Can be simplified to one liner: > > #if (defined(INET) || defined(INET6)) && defined(SCTP) > > Same stands for same ifdef down below in code. > > And extra empty line shouldn't have been added. > > A> + > A> +/* > A> + * Announce interface address arrival/withdraw Missing punctuation. > A> + * Returns 0 on success. > A> + */ > A> +int > A> +rt_addrmsg(int cmd, struct ifaddr *ifa, int fibnum) > A> +{ > A> + > A> + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, > A> + ("unexpected cmd %u", cmd)); Non-KNF continuation indentation (1 tab instead of 4 spaces). Type mismatch (unsigned format, int arg). > A> + Extra blank line. > A> + if (fibnum != RT_ALL_FIBS) { > A> + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " Obfuscation of comment by splitting it in the middle. Doesn't even reduce the amount of line-splittling. > A> + "fibnum out of range 0 <= %d < %d", __func__, KNF continuation indentation now (not a style bug). Obfuscation of function name using __func__. > A> + fibnum, rt_numfibs)); Non-KNF continuation indentation (5 spaces instead of 4). > A> + } > A> + Extra blank line. > A> + return (rtsock_addrmsg(cmd, ifa, fibnum)); > A> +} > > Second KASSERT together with if clause can be simplified to: > > KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), ... > > Same simplification can be done in rt_routemsg() and rt_newaddrmsg_fib(). > > A> + > A> +/* > A> + * Announce route addition/removal Missing punctuation. > A> + * Users of this function MUST validate input data BEFORE calling. > A> + * However we have to be able to handle invalid data: > A> + * if some userland app sends us "invalid" route message (invalid mask, > A> + * no dst, wrokg address families, etc...) we need to pass it back > ^ > typo > > A> + * to app (and any other rtsock consumers) with rtm_errno field set to > A> + * non-zero value. > A> + * Returns 0 on success. > A> + */ Multi-line comments don't look like the above. See style(9) for how they look. > > A> +int > A> +rtsock_routemsg(int cmd, struct ifnet *ifp, int error, struct rtentry *rt, > A> + int fibnum) > A> { > A> + struct rt_addrinfo info; > A> + struct sockaddr *sa; > A> + struct mbuf *m; > A> + struct rt_msghdr *rtm; Minor disorder. > A> > A> - rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS); > A> + if (route_cb.any_count == 0) > A> + return (0); > A> + Extra blank line. > A> + bzero((caddr_t)&info, sizeof(info)); > A> + info.rti_info[RTAX_NETMASK] = rt_mask(rt); > A> + info.rti_info[RTAX_DST] = sa = rt_key(rt); > A> + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; > A> + if ((m = rt_msg1(cmd, &info)) == NULL) > A> + return (ENOBUFS); > A> + rtm = mtod(m, struct rt_msghdr *); > A> + rtm->rtm_index = ifp->if_index; > A> + rtm->rtm_flags |= rt->rt_flags; > A> + rtm->rtm_errno = error; > A> + rtm->rtm_addrs = info.rti_addrs; > A> + Extra blank line. > A> + if (fibnum != RT_ALL_FIBS) { > A> + M_SETFIB(m, fibnum); > A> + m->m_flags |= RTS_FILTER_FIB; > A> + } > A> + Extra blank line. > A> + rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC); > A> + Extra blank line. > A> + return (0); > A> } > A> > A> + > > Why extra line here? Sticky return key ;). indent -sob will remove all the extra blank lines in the above, but will also remove some that shouldn't be removed. I like to use blank lines within functions only before blocks preceded by a comment. indent -sob removes even these. > > A> /* > A> * This is the analogue to the rt_newaddrmsg which performs the same > A> * function but for multicast group memberhips. This is easier since Example in old code of how block comments look. They are "filled so they look like real paragraphs", with sentence breaks of 2 spaces. Bruce From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 11:23:40 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 095DA7FE; Fri, 10 Jan 2014 11:23:40 +0000 (UTC) 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 82D0A127C; Fri, 10 Jan 2014 11:23:38 +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 s0ABNaFw001604 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Fri, 10 Jan 2014 15:23:36 +0400 (MSK) (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by cell.glebius.int.ru (8.14.7/8.14.7/Submit) id s0ABNahv001603; Fri, 10 Jan 2014 15:23:36 +0400 (MSK) (envelope-from glebius@FreeBSD.org) X-Authentication-Warning: cell.glebius.int.ru: glebius set sender to glebius@FreeBSD.org using -f Date: Fri, 10 Jan 2014 15:23:36 +0400 From: Gleb Smirnoff To: Bruce Evans Subject: Re: svn commit: r260488 - head/sys/net Message-ID: <20140110112336.GA1513@FreeBSD.org> References: <201401091813.s09IDPlU058184@svn.freebsd.org> <20140110101442.GB73147@FreeBSD.org> <20140110215002.F2219@besplex.bde.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140110215002.F2219@besplex.bde.org> User-Agent: Mutt/1.5.22 (2013-10-16) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, "Alexander V. Chernikov" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 11:23:40 -0000 On Fri, Jan 10, 2014 at 10:21:17PM +1100, Bruce Evans wrote: B> > On Thu, Jan 09, 2014 at 06:13:25PM +0000, Alexander V. Chernikov wrote: B> > A> @@ -52,6 +53,7 @@ B> > A> #include B> > A> #include B> > A> #include B> > A> +#include B> B> Further unsorting of an unsorted list by adding to the end of it. kdb.h isn't needed at all for this change, is it? -- Totus tuus, Glebius. From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 12:09:39 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CD055173; Fri, 10 Jan 2014 12:09:39 +0000 (UTC) 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 B741A15F8; Fri, 10 Jan 2014 12:09: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 s0AC9d4w082049; Fri, 10 Jan 2014 12:09:39 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AC9cwJ082044; Fri, 10 Jan 2014 12:09:38 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401101209.s0AC9cwJ082044@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 10 Jan 2014 12:09:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260507 - in stable/9: sbin/geom/class/mirror sys/geom/mirror X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 12:09:40 -0000 Author: ae Date: Fri Jan 10 12:09:38 2014 New Revision: 260507 URL: http://svnweb.freebsd.org/changeset/base/260507 Log: MFC r259634: Prevent users from deactivating the last component of a mirror. MFC r259929: Add an ability to stop gmirror and clear its metadata in one command. This fixes the problem, when gmirror starts again just after stop. The problem occurs when gmirror's component has geom label with equal size. E.g. gpt and gptid have the same size as partition, diskid has the same size as entire disk. When gmirror's geom has been destroyed, glabel creates its providers and this initiate retaste. Now "gmirror destroy" command is available. It destroys geom and also erases gmirror's metadata. PR: 184985 Modified: stable/9/sbin/geom/class/mirror/geom_mirror.c stable/9/sbin/geom/class/mirror/gmirror.8 stable/9/sys/geom/mirror/g_mirror.c stable/9/sys/geom/mirror/g_mirror.h stable/9/sys/geom/mirror/g_mirror_ctl.c Directory Properties: stable/9/sbin/geom/class/mirror/ (props changed) stable/9/sys/ (props changed) Modified: stable/9/sbin/geom/class/mirror/geom_mirror.c ============================================================================== --- stable/9/sbin/geom/class/mirror/geom_mirror.c Fri Jan 10 10:39:01 2014 (r260506) +++ stable/9/sbin/geom/class/mirror/geom_mirror.c Fri Jan 10 12:09:38 2014 (r260507) @@ -80,6 +80,13 @@ struct g_command class_commands[] = { { "deactivate", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, "[-v] name prov ..." }, + { "destroy", G_FLAG_VERBOSE, NULL, + { + { 'f', "force", NULL, G_TYPE_BOOL }, + G_OPT_SENTINEL + }, + "[-fv] name ..." + }, { "dump", 0, mirror_main, G_NULL_OPTS, "prov ..." }, Modified: stable/9/sbin/geom/class/mirror/gmirror.8 ============================================================================== --- stable/9/sbin/geom/class/mirror/gmirror.8 Fri Jan 10 10:39:01 2014 (r260506) +++ stable/9/sbin/geom/class/mirror/gmirror.8 Fri Jan 10 12:09:38 2014 (r260507) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 8, 2009 +.Dd December 27, 2013 .Dt GMIRROR 8 .Os .Sh NAME @@ -81,6 +81,10 @@ .Ar name .Ar prov ... .Nm +.Cm destroy +.Op Fl fv +.Ar name ... +.Nm .Cm forget .Op Fl v .Ar name ... @@ -212,6 +216,14 @@ Activate the given component(s), which w .It Cm deactivate Mark the given component(s) as inactive, so it will not be automatically connected to the mirror. +.It Cm destroy +Stop the given mirror and clear metadata on all its components. +.Pp +Additional options include: +.Bl -tag -width ".Fl f" +.It Fl f +Stop the given mirror even if it is opened. +.El .It Cm forget Forget about components which are not connected. This command is useful when a disk has failed and cannot be reconnected, preventing the Modified: stable/9/sys/geom/mirror/g_mirror.c ============================================================================== --- stable/9/sys/geom/mirror/g_mirror.c Fri Jan 10 10:39:01 2014 (r260506) +++ stable/9/sys/geom/mirror/g_mirror.c Fri Jan 10 12:09:38 2014 (r260507) @@ -638,7 +638,8 @@ g_mirror_write_metadata(struct g_mirror_ length = cp->provider->sectorsize; offset = cp->provider->mediasize - length; sector = malloc((size_t)length, M_MIRROR, M_WAITOK | M_ZERO); - if (md != NULL) + if (md != NULL && + (sc->sc_flags & G_MIRROR_DEVICE_FLAG_WIPE) == 0) mirror_metadata_encode(md, sector); error = g_write_data(cp, offset, sector, length); free(sector, M_MIRROR); @@ -737,7 +738,8 @@ g_mirror_update_metadata(struct g_mirror sc = disk->d_softc; sx_assert(&sc->sc_lock, SX_LOCKED); - g_mirror_fill_metadata(sc, disk, &md); + if ((sc->sc_flags & G_MIRROR_DEVICE_FLAG_WIPE) == 0) + g_mirror_fill_metadata(sc, disk, &md); error = g_mirror_write_metadata(disk, &md); if (error == 0) { G_MIRROR_DEBUG(2, "Metadata on %s updated.", Modified: stable/9/sys/geom/mirror/g_mirror.h ============================================================================== --- stable/9/sys/geom/mirror/g_mirror.h Fri Jan 10 10:39:01 2014 (r260506) +++ stable/9/sys/geom/mirror/g_mirror.h Fri Jan 10 12:09:38 2014 (r260507) @@ -160,6 +160,7 @@ struct g_mirror_event { #define G_MIRROR_DEVICE_FLAG_WAIT 0x0200000000000000ULL #define G_MIRROR_DEVICE_FLAG_DESTROYING 0x0400000000000000ULL #define G_MIRROR_DEVICE_FLAG_TASTING 0x0800000000000000ULL +#define G_MIRROR_DEVICE_FLAG_WIPE 0x1000000000000000ULL #define G_MIRROR_DEVICE_STATE_STARTING 0 #define G_MIRROR_DEVICE_STATE_RUNNING 1 Modified: stable/9/sys/geom/mirror/g_mirror_ctl.c ============================================================================== --- stable/9/sys/geom/mirror/g_mirror_ctl.c Fri Jan 10 10:39:01 2014 (r260506) +++ stable/9/sys/geom/mirror/g_mirror_ctl.c Fri Jan 10 12:09:38 2014 (r260507) @@ -624,7 +624,7 @@ g_mirror_ctl_deactivate(struct gctl_req const char *name; char param[16]; int *nargs; - u_int i; + u_int i, active; nargs = gctl_get_paraml(req, "nargs", sizeof(*nargs)); if (nargs == NULL) { @@ -645,6 +645,7 @@ g_mirror_ctl_deactivate(struct gctl_req gctl_error(req, "No such device: %s.", name); return; } + active = g_mirror_ndisks(sc, G_MIRROR_DISK_STATE_ACTIVE); for (i = 1; i < (u_int)*nargs; i++) { snprintf(param, sizeof(param), "arg%u", i); name = gctl_get_asciiparam(req, param); @@ -657,6 +658,16 @@ g_mirror_ctl_deactivate(struct gctl_req gctl_error(req, "No such provider: %s.", name); continue; } + if (disk->d_state == G_MIRROR_DISK_STATE_ACTIVE) { + if (active > 1) + active--; + else { + gctl_error(req, "%s: Can't deactivate the " + "last ACTIVE component %s.", + sc->sc_geom->name, name); + continue; + } + } disk->d_flags |= G_MIRROR_DISK_FLAG_INACTIVE; disk->d_flags &= ~G_MIRROR_DISK_FLAG_FORCE_SYNC; g_mirror_update_metadata(disk); @@ -715,7 +726,7 @@ g_mirror_ctl_forget(struct gctl_req *req } static void -g_mirror_ctl_stop(struct gctl_req *req, struct g_class *mp) +g_mirror_ctl_stop(struct gctl_req *req, struct g_class *mp, int wipe) { struct g_mirror_softc *sc; int *force, *nargs, error; @@ -756,10 +767,14 @@ g_mirror_ctl_stop(struct gctl_req *req, return; } g_cancel_event(sc); + if (wipe) + sc->sc_flags |= G_MIRROR_DEVICE_FLAG_WIPE; error = g_mirror_destroy(sc, how); if (error != 0) { gctl_error(req, "Cannot destroy device %s (error=%d).", sc->sc_geom->name, error); + if (wipe) + sc->sc_flags &= ~G_MIRROR_DEVICE_FLAG_WIPE; sx_xunlock(&sc->sc_lock); return; } @@ -798,7 +813,9 @@ g_mirror_config(struct gctl_req *req, st else if (strcmp(verb, "forget") == 0) g_mirror_ctl_forget(req, mp); else if (strcmp(verb, "stop") == 0) - g_mirror_ctl_stop(req, mp); + g_mirror_ctl_stop(req, mp, 0); + else if (strcmp(verb, "destroy") == 0) + g_mirror_ctl_stop(req, mp, 1); else gctl_error(req, "Unknown verb."); g_topology_lock(); From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 12:13:57 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2D21B2CA; Fri, 10 Jan 2014 12:13:57 +0000 (UTC) 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 186991660; Fri, 10 Jan 2014 12: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 s0ACDuTJ085423; Fri, 10 Jan 2014 12:13:56 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ACDunV085406; Fri, 10 Jan 2014 12:13:56 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401101213.s0ACDunV085406@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Fri, 10 Jan 2014 12:13:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260508 - in head/sys: net netinet X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 12:13:57 -0000 Author: melifaro Date: Fri Jan 10 12:13:55 2014 New Revision: 260508 URL: http://svnweb.freebsd.org/changeset/base/260508 Log: Simplify inet alias handling code: if we're adding/removing alias which has the same prefix as some other alias on the same interface, use newly-added rt_addrmsg() instead of hand-rolled in_addralias_rtmsg(). This eliminates the following rtsock messages: Pinned RTM_ADD for prefix (for alias addition). Pinned RTM_DELETE for prefix (for alias withdrawal). Example (got 10.0.0.1/24 on vlan4, playing with 10.0.0.2/24): before commit, addition: got message of size 116 on Fri Jan 10 14:13:15 2014 RTM_NEWADDR: address being added to iface: len 116, metric 0, flags: sockaddrs: 255.255.255.0 vlan4:8.0.27.c5.29.d4 10.0.0.2 10.0.0.255 got message of size 192 on Fri Jan 10 14:13:15 2014 RTM_ADD: Add Route: len 192, pid: 0, seq 0, errno 0, flags: locks: inits: sockaddrs: 10.0.0.0 10.0.0.2 (255) ffff ffff ff after commit, addition: got message of size 116 on Fri Jan 10 13:56:26 2014 RTM_NEWADDR: address being added to iface: len 116, metric 0, flags: sockaddrs: 255.255.255.0 vlan4:8.0.27.c5.29.d4 14.0.0.2 14.0.0.255 before commit, wihdrawal: got message of size 192 on Fri Jan 10 13:58:59 2014 RTM_DELETE: Delete Route: len 192, pid: 0, seq 0, errno 0, flags: locks: inits: sockaddrs: 10.0.0.0 10.0.0.2 (255) ffff ffff ff got message of size 116 on Fri Jan 10 13:58:59 2014 RTM_DELADDR: address being removed from iface: len 116, metric 0, flags: sockaddrs: 255.255.255.0 vlan4:8.0.27.c5.29.d4 10.0.0.2 10.0.0.255 adter commit, withdrawal: got message of size 116 on Fri Jan 10 14:14:11 2014 RTM_DELADDR: address being removed from iface: len 116, metric 0, flags: sockaddrs: 255.255.255.0 vlan4:8.0.27.c5.29.d4 10.0.0.2 10.0.0.255 Sending both RTM_ADD/RTM_DELETE messages to rtsock is completely wrong (and requires some hacks to keep prefix in route table on RTM_DELETE). I've tested this change with quagga (no change) and bird (*). bird alias handling is already broken in *BSD sysdep code, so nothing changes here, too. I'm going to MFC this change if there will be no complains about behavior change. While here, fix some style(9) bugs introduced by r260488 (pointed by glebius and bde). Sponsored by: Yandex LLC MFC after: 4 weeks Modified: head/sys/net/route.c head/sys/net/route.h head/sys/net/rtsock.c head/sys/netinet/in.c Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Fri Jan 10 12:09:38 2014 (r260507) +++ head/sys/net/route.c Fri Jan 10 12:13:55 2014 (r260508) @@ -53,7 +53,6 @@ #include #include #include -#include #include #include @@ -1751,24 +1750,20 @@ rt_addrmsg(int cmd, struct ifaddr *ifa, { KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, - ("unexpected cmd %u", cmd)); + ("unexpected cmd %d", cmd)); - if (fibnum != RT_ALL_FIBS) { - KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " - "fibnum out of range 0 <= %d < %d", __func__, - fibnum, rt_numfibs)); - } + KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), + ("%s: fib out of range 0 <=%d<%d", __func__, fibnum, rt_numfibs)); return (rtsock_addrmsg(cmd, ifa, fibnum)); } - /* - * Announce route addition/removal + * Announce route addition/removal. * Users of this function MUST validate input data BEFORE calling. * However we have to be able to handle invalid data: * if some userland app sends us "invalid" route message (invalid mask, - * no dst, wrokg address families, etc...) we need to pass it back + * no dst, wrong address families, etc...) we need to pass it back * to app (and any other rtsock consumers) with rtm_errno field set to * non-zero value. * Returns 0 on success. @@ -1779,13 +1774,10 @@ rt_routemsg(int cmd, struct ifnet *ifp, { KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, - ("unexpected cmd %u", cmd)); + ("unexpected cmd %d", cmd)); - if (fibnum != RT_ALL_FIBS) { - KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " - "fibnum out of range 0 <= %d < %d", __func__, - fibnum, rt_numfibs)); - } + KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), + ("%s: fib out of range 0 <=%d<%d", __func__, fibnum, rt_numfibs)); KASSERT(rt_key(rt) != NULL, (":%s: rt_key must be supplied", __func__)); @@ -1810,11 +1802,8 @@ rt_newaddrmsg_fib(int cmd, struct ifaddr KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, ("unexpected cmd %u", cmd)); - if (fibnum != RT_ALL_FIBS) { - KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " - "fibnum out of range 0 <= %d < %d", __func__, - fibnum, rt_numfibs)); - } + KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), + ("%s: fib out of range 0 <=%d<%d", __func__, fibnum, rt_numfibs)); #if defined(INET) || defined(INET6) #ifdef SCTP Modified: head/sys/net/route.h ============================================================================== --- head/sys/net/route.h Fri Jan 10 12:09:38 2014 (r260507) +++ head/sys/net/route.h Fri Jan 10 12:13:55 2014 (r260508) @@ -94,6 +94,7 @@ struct rt_metrics { #define RT_DEFAULT_FIB 0 /* Explicitly mark fib=0 restricted cases */ #define RT_ALL_FIBS -1 /* Announce event for every fib */ extern u_int rt_numfibs; /* number of usable routing tables */ +extern u_int rt_add_addr_allfibs; /* Announce interfaces to all fibs */ /* * XXX kernel function pointer `rt_output' is visible to applications. */ Modified: head/sys/net/rtsock.c ============================================================================== --- head/sys/net/rtsock.c Fri Jan 10 12:09:38 2014 (r260507) +++ head/sys/net/rtsock.c Fri Jan 10 12:13:55 2014 (r260508) @@ -1415,7 +1415,6 @@ rtsock_routemsg(int cmd, struct ifnet *i return (0); } - /* * This is the analogue to the rt_newaddrmsg which performs the same * function but for multicast group memberhips. This is easier since Modified: head/sys/netinet/in.c ============================================================================== --- head/sys/netinet/in.c Fri Jan 10 12:09:38 2014 (r260507) +++ head/sys/netinet/in.c Fri Jan 10 12:13:55 2014 (r260508) @@ -610,45 +610,6 @@ in_difaddr_ioctl(caddr_t data, struct if ? RTF_HOST : 0) /* - * Generate a routing message when inserting or deleting - * an interface address alias. - */ -static void in_addralias_rtmsg(int cmd, struct in_addr *prefix, - struct in_ifaddr *target) -{ - struct route pfx_ro; - struct sockaddr_in *pfx_addr; - struct rtentry msg_rt; - - /* QL: XXX - * This is a bit questionable because there is no - * additional route entry added/deleted for an address - * alias. Therefore this route report is inaccurate. - */ - bzero(&pfx_ro, sizeof(pfx_ro)); - pfx_addr = (struct sockaddr_in *)(&pfx_ro.ro_dst); - pfx_addr->sin_len = sizeof(*pfx_addr); - pfx_addr->sin_family = AF_INET; - pfx_addr->sin_addr = *prefix; - rtalloc_ign_fib(&pfx_ro, 0, 0); - if (pfx_ro.ro_rt != NULL) { - msg_rt = *pfx_ro.ro_rt; - - /* QL: XXX - * Point the gateway to the new interface - * address as if a new prefix route entry has - * been added through the new address alias. - * All other parts of the rtentry is accurate, - * e.g., rt_key, rt_mask, rt_ifp etc. - */ - msg_rt.rt_gateway = (struct sockaddr *)&target->ia_addr; - rt_newaddrmsg(cmd, (struct ifaddr *)target, 0, &msg_rt); - RTFREE(pfx_ro.ro_rt); - } - return; -} - -/* * Check if we have a route for the given prefix already or add one accordingly. */ int @@ -656,7 +617,7 @@ in_addprefix(struct in_ifaddr *target, i { struct in_ifaddr *ia; struct in_addr prefix, mask, p, m; - int error; + int error, fibnum; if ((flags & RTF_HOST) != 0) { prefix = target->ia_dstaddr.sin_addr; @@ -667,6 +628,8 @@ in_addprefix(struct in_ifaddr *target, i prefix.s_addr &= mask.s_addr; } + fibnum = rt_add_addr_allfibs ? RT_ALL_FIBS : target->ia_ifp->if_fib; + IN_IFADDR_RLOCK(); TAILQ_FOREACH(ia, &V_in_ifaddrhead, ia_link) { if (rtinitflags(ia)) { @@ -701,7 +664,7 @@ in_addprefix(struct in_ifaddr *target, i IN_IFADDR_RUNLOCK(); return (EEXIST); } else { - in_addralias_rtmsg(RTM_ADD, &prefix, target); + rt_addrmsg(RTM_ADD, &target->ia_ifa, fibnum); IN_IFADDR_RUNLOCK(); return (0); } @@ -728,9 +691,11 @@ in_scrubprefix(struct in_ifaddr *target, { struct in_ifaddr *ia; struct in_addr prefix, mask, p, m; - int error = 0; + int error = 0, fibnum; struct sockaddr_in prefix0, mask0; + fibnum = rt_add_addr_allfibs ? RT_ALL_FIBS : target->ia_ifp->if_fib; + /* * Remove the loopback route to the interface address. */ @@ -766,7 +731,7 @@ in_scrubprefix(struct in_ifaddr *target, } if ((target->ia_flags & IFA_ROUTE) == 0) { - in_addralias_rtmsg(RTM_DELETE, &prefix, target); + rt_addrmsg(RTM_DELETE, &target->ia_ifa, fibnum); return (0); } From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 12:18:07 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0372F6EA; Fri, 10 Jan 2014 12:18:07 +0000 (UTC) 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 E2A7D16A1; Fri, 10 Jan 2014 12:18: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 s0ACI6jg086070; Fri, 10 Jan 2014 12:18:06 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ACI6rU086062; Fri, 10 Jan 2014 12:18:06 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401101218.s0ACI6rU086062@svn.freebsd.org> From: Alexander Motin Date: Fri, 10 Jan 2014 12:18:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260509 - in head: sbin/camcontrol sys/cam 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 12:18:07 -0000 Author: mav Date: Fri Jan 10 12:18:05 2014 New Revision: 260509 URL: http://svnweb.freebsd.org/changeset/base/260509 Log: Replace several instances of -1 with appropriate CAM_*_WILDCARD and types. It was equal before r259397, but for good or bad, not any more for LUNs. This change fixes at least CAM debugging. Modified: head/sbin/camcontrol/camcontrol.c head/sys/cam/cam_debug.h head/sys/cam/cam_xpt.c head/sys/cam/scsi/scsi_low.c Modified: head/sbin/camcontrol/camcontrol.c ============================================================================== --- head/sbin/camcontrol/camcontrol.c Fri Jan 10 12:13:55 2014 (r260508) +++ head/sbin/camcontrol/camcontrol.c Fri Jan 10 12:18:05 2014 (r260509) @@ -264,11 +264,12 @@ static int scsiinquiry(struct cam_device static int scsiserial(struct cam_device *device, int retry_count, int timeout); static int camxferrate(struct cam_device *device); #endif /* MINIMALISTIC */ -static int parse_btl(char *tstr, int *bus, int *target, int *lun, - cam_argmask *arglst); +static int parse_btl(char *tstr, path_id_t *bus, target_id_t *target, + lun_id_t *lun, cam_argmask *arglst); static int dorescan_or_reset(int argc, char **argv, int rescan); -static int rescan_or_reset_bus(int bus, int rescan); -static int scanlun_or_reset_dev(int bus, int target, int lun, int scan); +static int rescan_or_reset_bus(path_id_t bus, int rescan); +static int scanlun_or_reset_dev(path_id_t bus, target_id_t target, + lun_id_t lun, int scan); #ifndef MINIMALISTIC static int readdefects(struct cam_device *device, int argc, char **argv, char *combinedopt, int retry_count, int timeout); @@ -3019,7 +3020,8 @@ atasecurity(struct cam_device *device, i * Returns the number of parsed components, or 0. */ static int -parse_btl(char *tstr, int *bus, int *target, int *lun, cam_argmask *arglst) +parse_btl(char *tstr, path_id_t *bus, target_id_t *target, lun_id_t *lun, + cam_argmask *arglst) { char *tmpstr; int convs = 0; @@ -3055,7 +3057,9 @@ dorescan_or_reset(int argc, char **argv, static const char must[] = "you must specify \"all\", a bus, or a bus:target:lun to %s"; int rv, error = 0; - int bus = -1, target = -1, lun = -1; + path_id_t bus = CAM_BUS_WILDCARD; + target_id_t target = CAM_TARGET_WILDCARD; + lun_id_t lun = CAM_LUN_WILDCARD; char *tstr; if (argc < 3) { @@ -3087,7 +3091,7 @@ dorescan_or_reset(int argc, char **argv, } static int -rescan_or_reset_bus(int bus, int rescan) +rescan_or_reset_bus(path_id_t bus, int rescan) { union ccb ccb, matchccb; int fd, retval; @@ -3101,7 +3105,7 @@ rescan_or_reset_bus(int bus, int rescan) return(1); } - if (bus != -1) { + if (bus != CAM_BUS_WILDCARD) { ccb.ccb_h.func_code = rescan ? XPT_SCAN_BUS : XPT_RESET_BUS; ccb.ccb_h.path_id = bus; ccb.ccb_h.target_id = CAM_TARGET_WILDCARD; @@ -3201,7 +3205,7 @@ rescan_or_reset_bus(int bus, int rescan) * We don't want to rescan or reset the xpt bus. * See above. */ - if ((int)bus_result->path_id == -1) + if (bus_result->path_id == CAM_XPT_PATH_ID) continue; ccb.ccb_h.func_code = rescan ? XPT_SCAN_BUS : @@ -3254,7 +3258,7 @@ bailout: } static int -scanlun_or_reset_dev(int bus, int target, int lun, int scan) +scanlun_or_reset_dev(path_id_t bus, target_id_t target, lun_id_t lun, int scan) { union ccb ccb; struct cam_device *device; @@ -3262,18 +3266,18 @@ scanlun_or_reset_dev(int bus, int target device = NULL; - if (bus < 0) { + if (bus == CAM_BUS_WILDCARD) { warnx("invalid bus number %d", bus); return(1); } - if (target < 0) { + if (target == CAM_TARGET_WILDCARD) { warnx("invalid target number %d", target); return(1); } - if (lun < 0) { - warnx("invalid lun number %d", lun); + if (lun == CAM_LUN_WILDCARD) { + warnx("invalid lun number %jx", (uintmax_t)lun); return(1); } @@ -3331,12 +3335,12 @@ scanlun_or_reset_dev(int bus, int target if (((ccb.ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP) || ((!scan) && ((ccb.ccb_h.status & CAM_STATUS_MASK) == CAM_BDR_SENT))) { - fprintf(stdout, "%s of %d:%d:%d was successful\n", - scan? "Re-scan" : "Reset", bus, target, lun); + fprintf(stdout, "%s of %d:%d:%jx was successful\n", + scan? "Re-scan" : "Reset", bus, target, (uintmax_t)lun); return(0); } else { - fprintf(stdout, "%s of %d:%d:%d returned error %#x\n", - scan? "Re-scan" : "Reset", bus, target, lun, + fprintf(stdout, "%s of %d:%d:%jx returned error %#x\n", + scan? "Re-scan" : "Reset", bus, target, (uintmax_t)lun, ccb.ccb_h.status & CAM_STATUS_MASK); return(1); } @@ -4218,7 +4222,9 @@ static int camdebug(int argc, char **argv, char *combinedopt) { int c, fd; - int bus = -1, target = -1, lun = -1; + path_id_t bus = CAM_BUS_WILDCARD; + target_id_t target = CAM_TARGET_WILDCARD; + lun_id_t lun = CAM_LUN_WILDCARD; char *tstr, *tmpstr = NULL; union ccb ccb; int error = 0; @@ -4338,8 +4344,8 @@ camdebug(int argc, char **argv, char *co } else { fprintf(stderr, "Debugging enabled for " - "%d:%d:%d\n", - bus, target, lun); + "%d:%d:%jx\n", + bus, target, (uintmax_t)lun); } } } @@ -7986,7 +7992,9 @@ main(int argc, char **argv) int error = 0, optstart = 2; int devopen = 1; #ifndef MINIMALISTIC - int bus, target, lun; + path_id_t bus; + target_id_t target; + lun_id_t lun; #endif /* MINIMALISTIC */ cmdlist = CAM_CMD_NONE; Modified: head/sys/cam/cam_debug.h ============================================================================== --- head/sys/cam/cam_debug.h Fri Jan 10 12:13:55 2014 (r260508) +++ head/sys/cam/cam_debug.h Fri Jan 10 12:18:05 2014 (r260509) @@ -61,13 +61,13 @@ typedef enum { #endif #ifndef CAM_DEBUG_BUS -#define CAM_DEBUG_BUS (-1) +#define CAM_DEBUG_BUS CAM_BUS_WILDCARD #endif #ifndef CAM_DEBUG_TARGET -#define CAM_DEBUG_TARGET (-1) +#define CAM_DEBUG_TARGET CAM_TARGET_WILDCARD #endif #ifndef CAM_DEBUG_LUN -#define CAM_DEBUG_LUN (-1) +#define CAM_DEBUG_LUN CAM_LUN_WILDCARD #endif #ifndef CAM_DEBUG_DELAY Modified: head/sys/cam/cam_xpt.c ============================================================================== --- head/sys/cam/cam_xpt.c Fri Jan 10 12:13:55 2014 (r260508) +++ head/sys/cam/cam_xpt.c Fri Jan 10 12:18:05 2014 (r260509) @@ -1992,13 +1992,15 @@ xptplistperiphfunc(struct cam_periph *pe cdm->matches[j].result.periph_result.target_id = periph->path->target->target_id; else - cdm->matches[j].result.periph_result.target_id = -1; + cdm->matches[j].result.periph_result.target_id = + CAM_TARGET_WILDCARD; if (periph->path->device) cdm->matches[j].result.periph_result.target_lun = periph->path->device->lun_id; else - cdm->matches[j].result.periph_result.target_lun = -1; + cdm->matches[j].result.periph_result.target_lun = + CAM_LUN_WILDCARD; cdm->matches[j].result.periph_result.unit_number = periph->unit_number; Modified: head/sys/cam/scsi/scsi_low.c ============================================================================== --- head/sys/cam/scsi/scsi_low.c Fri Jan 10 12:13:55 2014 (r260508) +++ head/sys/cam/scsi/scsi_low.c Fri Jan 10 12:18:05 2014 (r260509) @@ -4232,7 +4232,7 @@ scsi_low_print(slp, ti) if (ti != NULL) { u_int flags = 0, maxnqio = 0, nqio = 0; - int lun = -1; + int lun = CAM_LUN_WILDCARD; if (li != NULL) { From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 12:20:32 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7DA918BE; Fri, 10 Jan 2014 12:20:32 +0000 (UTC) Received: from mail.ipfw.ru (mail.ipfw.ru [IPv6:2a01:4f8:120:6141::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3F47A1718; Fri, 10 Jan 2014 12:20:32 +0000 (UTC) Received: from [2a02:6b8:0:401:222:4dff:fe50:cd2f] (helo=ptichko.yndx.net) by mail.ipfw.ru with esmtpsa (TLSv1:CAMELLIA256-SHA:256) (Exim 4.76 (FreeBSD)) (envelope-from ) id 1W1XF6-000Nk6-V4; Fri, 10 Jan 2014 12:15:01 +0400 Message-ID: <52CFE4D4.8080700@FreeBSD.org> Date: Fri, 10 Jan 2014 16:17:24 +0400 From: "Alexander V. Chernikov" User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: Gleb Smirnoff Subject: Re: svn commit: r260488 - head/sys/net References: <201401091813.s09IDPlU058184@svn.freebsd.org> <20140110101442.GB73147@FreeBSD.org> In-Reply-To: <20140110101442.GB73147@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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 12:20:32 -0000 On 10.01.2014 14:14, Gleb Smirnoff wrote: > Alexander, > > some nitpicking: > > On Thu, Jan 09, 2014 at 06:13:25PM +0000, Alexander V. Chernikov wrote: > A> @@ -52,6 +53,7 @@ > A> #include > A> #include > A> #include > A> +#include > A> > A> #include > A> #include > A> @@ -86,6 +88,13 @@ > A> #define RT_NUMFIBS 1 > A> #endif > A> > A> +#if defined(INET) || defined(INET6) > A> +#ifdef SCTP > A> +extern void sctp_addr_change(struct ifaddr *ifa, int cmd); > A> +#endif /* SCTP */ > A> +#endif > A> + > A> + > > Can be simplified to one liner: > > #if (defined(INET) || defined(INET6)) && defined(SCTP) > > Same stands for same ifdef down below in code. > > And extra empty line shouldn't have been added. This actually needs to be removed from here and converted to be ifaddr_event consumer. > > A> + > A> +/* > A> + * Announce interface address arrival/withdraw > A> + * Returns 0 on success. > A> + */ > A> +int > A> +rt_addrmsg(int cmd, struct ifaddr *ifa, int fibnum) > A> +{ > A> + > A> + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE, > A> + ("unexpected cmd %u", cmd)); > A> + > A> + if (fibnum != RT_ALL_FIBS) { > A> + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: " > A> + "fibnum out of range 0 <= %d < %d", __func__, > A> + fibnum, rt_numfibs)); > A> + } > A> + > A> + return (rtsock_addrmsg(cmd, ifa, fibnum)); > A> +} > > Second KASSERT together with if clause can be simplified to: > > KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), ... > > Same simplification can be done in rt_routemsg() and rt_newaddrmsg_fib(). Yes, thanks. > > A> + > A> +/* > A> + * Announce route addition/removal > A> + * Users of this function MUST validate input data BEFORE calling. > A> + * However we have to be able to handle invalid data: > A> + * if some userland app sends us "invalid" route message (invalid mask, > A> + * no dst, wrokg address families, etc...) we need to pass it back > ^ > typo Fixed. > > A> + * to app (and any other rtsock consumers) with rtm_errno field set to > A> + * non-zero value. > A> + * Returns 0 on success. > A> + */ > > A> +int > A> +rtsock_routemsg(int cmd, struct ifnet *ifp, int error, struct rtentry *rt, > A> + int fibnum) > A> { > A> + struct rt_addrinfo info; > A> + struct sockaddr *sa; > A> + struct mbuf *m; > A> + struct rt_msghdr *rtm; > A> > A> - rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS); > A> + if (route_cb.any_count == 0) > A> + return (0); > A> + > A> + bzero((caddr_t)&info, sizeof(info)); > A> + info.rti_info[RTAX_NETMASK] = rt_mask(rt); > A> + info.rti_info[RTAX_DST] = sa = rt_key(rt); > A> + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway; > A> + if ((m = rt_msg1(cmd, &info)) == NULL) > A> + return (ENOBUFS); > A> + rtm = mtod(m, struct rt_msghdr *); > A> + rtm->rtm_index = ifp->if_index; > A> + rtm->rtm_flags |= rt->rt_flags; > A> + rtm->rtm_errno = error; > A> + rtm->rtm_addrs = info.rti_addrs; > A> + > A> + if (fibnum != RT_ALL_FIBS) { > A> + M_SETFIB(m, fibnum); > A> + m->m_flags |= RTS_FILTER_FIB; > A> + } > A> + > A> + rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC); > A> + > A> + return (0); > A> } > A> > A> + > > Why extra line here? Fixed. > > A> /* > A> * This is the analogue to the rt_newaddrmsg which performs the same > A> * function but for multicast group memberhips. This is easier since > From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 12:22:51 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 53D5FA17; Fri, 10 Jan 2014 12:22:51 +0000 (UTC) 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 348491733; Fri, 10 Jan 2014 12:22: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 s0ACMpKJ089234; Fri, 10 Jan 2014 12:22:51 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ACMo27089229; Fri, 10 Jan 2014 12:22:50 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401101222.s0ACMo27089229@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 10 Jan 2014 12:22:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260510 - in stable/9/sys: netinet netinet6 X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 12:22:51 -0000 Author: ae Date: Fri Jan 10 12:22:49 2014 New Revision: 260510 URL: http://svnweb.freebsd.org/changeset/base/260510 Log: MFC r260151 (by adrian): Use an RLOCK here instead of an RWLOCK - matching all the other calls to lla_lookup(). This drastically reduces the very high lock contention when doing parallel TCP throughput tests (> 1024 sockets) with IPv6. MFC r260187: lla_lookup() does modification only when LLE_CREATE is specified. Thus we can use IF_AFDATA_RLOCK() instead of IF_AFDATA_LOCK() when doing lla_lookup() without LLE_CREATE flag. MFC r260217: Add IF_AFDATA_WLOCK_ASSERT() in case lla_lookup() is called with LLE_CREATE flag. Modified: stable/9/sys/netinet/if_ether.c stable/9/sys/netinet/in.c stable/9/sys/netinet6/in6.c stable/9/sys/netinet6/nd6.c stable/9/sys/netinet6/nd6_nbr.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/netinet/if_ether.c ============================================================================== --- stable/9/sys/netinet/if_ether.c Fri Jan 10 12:18:05 2014 (r260509) +++ stable/9/sys/netinet/if_ether.c Fri Jan 10 12:22:49 2014 (r260510) @@ -154,10 +154,10 @@ arp_ifscrub(struct ifnet *ifp, uint32_t addr4.sin_len = sizeof(addr4); addr4.sin_family = AF_INET; addr4.sin_addr.s_addr = addr; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); lla_lookup(LLTABLE(ifp), (LLE_DELETE | LLE_IFADDR), (struct sockaddr *)&addr4); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); } #endif @@ -790,9 +790,9 @@ reply: struct llentry *lle = NULL; sin.sin_addr = itaddr; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); lle = lla_lookup(LLTABLE(ifp), 0, (struct sockaddr *)&sin); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if ((lle != NULL) && (lle->la_flags & LLE_PUB)) { (void)memcpy(ar_tha(ah), ar_sha(ah), ah->ar_hln); Modified: stable/9/sys/netinet/in.c ============================================================================== --- stable/9/sys/netinet/in.c Fri Jan 10 12:18:05 2014 (r260509) +++ stable/9/sys/netinet/in.c Fri Jan 10 12:22:49 2014 (r260510) @@ -1499,6 +1499,7 @@ in_lltable_lookup(struct lltable *llt, u #endif if (!(flags & LLE_CREATE)) return (NULL); + IF_AFDATA_WLOCK_ASSERT(ifp); /* * A route that covers the given address must have * been installed 1st because we are doing a resolution, Modified: stable/9/sys/netinet6/in6.c ============================================================================== --- stable/9/sys/netinet6/in6.c Fri Jan 10 12:18:05 2014 (r260509) +++ stable/9/sys/netinet6/in6.c Fri Jan 10 12:22:49 2014 (r260510) @@ -2603,6 +2603,7 @@ in6_lltable_lookup(struct lltable *llt, if (lle == NULL) { if (!(flags & LLE_CREATE)) return (NULL); + IF_AFDATA_WLOCK_ASSERT(ifp); /* * A route that covers the given address must have * been installed 1st because we are doing a resolution, Modified: stable/9/sys/netinet6/nd6.c ============================================================================== --- stable/9/sys/netinet6/nd6.c Fri Jan 10 12:18:05 2014 (r260509) +++ stable/9/sys/netinet6/nd6.c Fri Jan 10 12:22:49 2014 (r260510) @@ -1154,9 +1154,9 @@ nd6_nud_hint(struct rtentry *rt, struct return; ifp = rt->rt_ifp; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = nd6_lookup(dst6, ND6_EXCLUSIVE, NULL); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if (ln == NULL) return; @@ -1583,16 +1583,16 @@ nd6_cache_lladdr(struct ifnet *ifp, stru * description on it in NS section (RFC 2461 7.2.3). */ flags = lladdr ? ND6_EXCLUSIVE : 0; - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = nd6_lookup(from, flags, ifp); - + IF_AFDATA_RUNLOCK(ifp); if (ln == NULL) { flags |= ND6_EXCLUSIVE; + IF_AFDATA_LOCK(ifp); ln = nd6_lookup(from, flags | ND6_CREATE, ifp); IF_AFDATA_UNLOCK(ifp); is_newentry = 1; } else { - IF_AFDATA_UNLOCK(ifp); /* do nothing if static ndp is set */ if (ln->la_flags & LLE_STATIC) { static_route = 1; @@ -1898,9 +1898,9 @@ nd6_output_lle(struct ifnet *ifp, struct flags = ((m != NULL) || (lle != NULL)) ? LLE_EXCLUSIVE : 0; if (ln == NULL) { retry: - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = lla_lookup(LLTABLE6(ifp), flags, (struct sockaddr *)dst); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if ((ln == NULL) && nd6_is_addr_neighbor(dst, ifp)) { /* * Since nd6_is_addr_neighbor() internally calls nd6_lookup(), Modified: stable/9/sys/netinet6/nd6_nbr.c ============================================================================== --- stable/9/sys/netinet6/nd6_nbr.c Fri Jan 10 12:18:05 2014 (r260509) +++ stable/9/sys/netinet6/nd6_nbr.c Fri Jan 10 12:22:49 2014 (r260510) @@ -734,9 +734,9 @@ nd6_na_input(struct mbuf *m, int off, in * If no neighbor cache entry is found, NA SHOULD silently be * discarded. */ - IF_AFDATA_LOCK(ifp); + IF_AFDATA_RLOCK(ifp); ln = nd6_lookup(&taddr6, LLE_EXCLUSIVE, ifp); - IF_AFDATA_UNLOCK(ifp); + IF_AFDATA_RUNLOCK(ifp); if (ln == NULL) { goto freeit; } From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 12:33:29 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 1F116C84; Fri, 10 Jan 2014 12:33:29 +0000 (UTC) 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 F3D59181E; Fri, 10 Jan 2014 12: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 s0ACXSXY093011; Fri, 10 Jan 2014 12:33:28 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ACXS7E093009; Fri, 10 Jan 2014 12:33:28 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201401101233.s0ACXS7E093009@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Fri, 10 Jan 2014 12:33:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260511 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 12:33:29 -0000 Author: ae Date: Fri Jan 10 12:33:28 2014 New Revision: 260511 URL: http://svnweb.freebsd.org/changeset/base/260511 Log: Mechanically replace direct accessing to if_xname to using if_name() macro. Modified: head/sys/netinet6/in6_mcast.c head/sys/netinet6/mld6.c Modified: head/sys/netinet6/in6_mcast.c ============================================================================== --- head/sys/netinet6/in6_mcast.c Fri Jan 10 12:22:49 2014 (r260510) +++ head/sys/netinet6/in6_mcast.c Fri Jan 10 12:33:28 2014 (r260511) @@ -1184,7 +1184,7 @@ in6_mc_join_locked(struct ifnet *ifp, co IN6_MULTI_LOCK_ASSERT(); CTR4(KTR_MLD, "%s: join %s on %p(%s))", __func__, - ip6_sprintf(ip6tbuf, mcaddr), ifp, ifp->if_xname); + ip6_sprintf(ip6tbuf, mcaddr), ifp, if_name(ifp)); error = 0; inm = NULL; @@ -1275,7 +1275,7 @@ in6_mc_leave_locked(struct in6_multi *in CTR5(KTR_MLD, "%s: leave inm %p, %s/%s, imf %p", __func__, inm, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - (in6m_is_ifp_detached(inm) ? "null" : inm->in6m_ifp->if_xname), + (in6m_is_ifp_detached(inm) ? "null" : if_name(inm->in6m_ifp)), imf); /* @@ -2808,7 +2808,7 @@ in6m_print(const struct in6_multi *inm) printf("addr %s ifp %p(%s) ifma %p\n", ip6_sprintf(ip6tbuf, &inm->in6m_addr), inm->in6m_ifp, - inm->in6m_ifp->if_xname, + if_name(inm->in6m_ifp), inm->in6m_ifma); printf("timer %u state %s refcount %u scq.len %u\n", inm->in6m_timer, Modified: head/sys/netinet6/mld6.c ============================================================================== --- head/sys/netinet6/mld6.c Fri Jan 10 12:22:49 2014 (r260510) +++ head/sys/netinet6/mld6.c Fri Jan 10 12:33:28 2014 (r260511) @@ -465,7 +465,7 @@ mld_domifattach(struct ifnet *ifp) struct mld_ifinfo *mli; CTR3(KTR_MLD, "%s: called for ifp %p(%s)", - __func__, ifp, ifp->if_xname); + __func__, ifp, if_name(ifp)); MLD_LOCK(); @@ -512,7 +512,7 @@ mli_alloc_locked(/*const*/ struct ifnet LIST_INSERT_HEAD(&V_mli_head, mli, mli_link); CTR2(KTR_MLD, "allocate mld_ifinfo for ifp %p(%s)", - ifp, ifp->if_xname); + ifp, if_name(ifp)); out: return (mli); @@ -537,7 +537,7 @@ mld_ifdetach(struct ifnet *ifp) struct in6_multi *inm, *tinm; CTR3(KTR_MLD, "%s: called for ifp %p(%s)", __func__, ifp, - ifp->if_xname); + if_name(ifp)); IN6_MULTI_LOCK_ASSERT(); MLD_LOCK(); @@ -578,7 +578,7 @@ mld_domifdetach(struct ifnet *ifp) { CTR3(KTR_MLD, "%s: called for ifp %p(%s)", - __func__, ifp, ifp->if_xname); + __func__, ifp, if_name(ifp)); MLD_LOCK(); mli_delete_locked(ifp); @@ -591,7 +591,7 @@ mli_delete_locked(const struct ifnet *if struct mld_ifinfo *mli, *tmli; CTR3(KTR_MLD, "%s: freeing mld_ifinfo for ifp %p(%s)", - __func__, ifp, ifp->if_xname); + __func__, ifp, if_name(ifp)); MLD_LOCK_ASSERT(); @@ -642,7 +642,7 @@ mld_v1_input_query(struct ifnet *ifp, co if (!mld_v1enable) { CTR3(KTR_MLD, "ignore v1 query %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &mld->mld_addr), - ifp, ifp->if_xname); + ifp, if_name(ifp)); return (0); } @@ -653,7 +653,7 @@ mld_v1_input_query(struct ifnet *ifp, co if (!IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_src)) { CTR3(KTR_MLD, "ignore v1 query src %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &ip6->ip6_src), - ifp, ifp->if_xname); + ifp, if_name(ifp)); return (0); } @@ -702,7 +702,7 @@ mld_v1_input_query(struct ifnet *ifp, co * interface, kick the report timer. */ CTR2(KTR_MLD, "process v1 general query on ifp %p(%s)", - ifp, ifp->if_xname); + ifp, if_name(ifp)); TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { if (ifma->ifma_addr->sa_family != AF_INET6 || ifma->ifma_protospec == NULL) @@ -720,7 +720,7 @@ mld_v1_input_query(struct ifnet *ifp, co if (inm != NULL) { CTR3(KTR_MLD, "process v1 query %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &mld->mld_addr), - ifp, ifp->if_xname); + ifp, if_name(ifp)); mld_v1_update_group(inm, timer); } /* XXX Clear embedded scope ID as userland won't expect it. */ @@ -758,7 +758,7 @@ mld_v1_update_group(struct in6_multi *in CTR4(KTR_MLD, "%s: %s/%s timer=%d", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname, timer); + if_name(inm->in6m_ifp), timer); IN6_MULTI_LOCK_ASSERT(); @@ -825,11 +825,11 @@ mld_v2_input_query(struct ifnet *ifp, co if (!IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_src)) { CTR3(KTR_MLD, "ignore v1 query src %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &ip6->ip6_src), - ifp, ifp->if_xname); + ifp, if_name(ifp)); return (0); } - CTR2(KTR_MLD, "input v2 query on ifp %p(%s)", ifp, ifp->if_xname); + CTR2(KTR_MLD, "input v2 query on ifp %p(%s)", ifp, if_name(ifp)); mld = (struct mldv2_query *)(mtod(m, uint8_t *) + off); @@ -918,7 +918,7 @@ mld_v2_input_query(struct ifnet *ifp, co * Otherwise, reset the interface timer. */ CTR2(KTR_MLD, "process v2 general query on ifp %p(%s)", - ifp, ifp->if_xname); + ifp, if_name(ifp)); if (mli->mli_v2_timer == 0 || mli->mli_v2_timer >= timer) { mli->mli_v2_timer = MLD_RANDOM_DELAY(timer); V_interface_timers_running6 = 1; @@ -948,7 +948,7 @@ mld_v2_input_query(struct ifnet *ifp, co } } CTR2(KTR_MLD, "process v2 group query on ifp %p(%s)", - ifp, ifp->if_xname); + ifp, if_name(ifp)); /* * If there is a pending General Query response * scheduled sooner than the selected delay, no @@ -1105,7 +1105,7 @@ mld_v1_input_report(struct ifnet *ifp, c if (!mld_v1enable) { CTR3(KTR_MLD, "ignore v1 report %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &mld->mld_addr), - ifp, ifp->if_xname); + ifp, if_name(ifp)); return (0); } @@ -1121,7 +1121,7 @@ mld_v1_input_report(struct ifnet *ifp, c if (!IN6_IS_SCOPE_LINKLOCAL(&src) && !IN6_IS_ADDR_UNSPECIFIED(&src)) { CTR3(KTR_MLD, "ignore v1 query src %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &ip6->ip6_src), - ifp, ifp->if_xname); + ifp, if_name(ifp)); return (EINVAL); } @@ -1135,7 +1135,7 @@ mld_v1_input_report(struct ifnet *ifp, c !IN6_ARE_ADDR_EQUAL(&mld->mld_addr, &dst)) { CTR3(KTR_MLD, "ignore v1 query dst %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &ip6->ip6_dst), - ifp, ifp->if_xname); + ifp, if_name(ifp)); return (EINVAL); } @@ -1160,7 +1160,7 @@ mld_v1_input_report(struct ifnet *ifp, c ifa_free(&ia->ia_ifa); CTR3(KTR_MLD, "process v1 report %s on ifp %p(%s)", - ip6_sprintf(ip6tbuf, &mld->mld_addr), ifp, ifp->if_xname); + ip6_sprintf(ip6tbuf, &mld->mld_addr), ifp, if_name(ifp)); /* * Embed scope ID of receiving interface in MLD query for lookup @@ -1207,7 +1207,7 @@ mld_v1_input_report(struct ifnet *ifp, c CTR3(KTR_MLD, "report suppressed for %s on ifp %p(%s)", ip6_sprintf(ip6tbuf, &mld->mld_addr), - ifp, ifp->if_xname); + ifp, if_name(ifp)); case MLD_LAZY_MEMBER: inm->in6m_state = MLD_LAZY_MEMBER; break; @@ -1600,7 +1600,7 @@ mld_v2_process_group_timers(struct mld_i in6m_commit(inm); CTR3(KTR_MLD, "%s: T1 -> T0 for %s/%s", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname); + if_name(inm->in6m_ifp)); /* * If we are leaving the group for good, make sure @@ -1632,7 +1632,7 @@ mld_set_version(struct mld_ifinfo *mli, MLD_LOCK_ASSERT(); CTR4(KTR_MLD, "%s: switching to v%d on ifp %p(%s)", __func__, - version, mli->mli_ifp, mli->mli_ifp->if_xname); + version, mli->mli_ifp, if_name(mli->mli_ifp)); if (version == MLD_VERSION_1) { /* @@ -1662,7 +1662,7 @@ mld_v2_cancel_link_timers(struct mld_ifi struct in6_multi *inm, *tinm; CTR3(KTR_MLD, "%s: cancel v2 timers on ifp %p(%s)", __func__, - mli->mli_ifp, mli->mli_ifp->if_xname); + mli->mli_ifp, if_name(mli->mli_ifp)); IN6_MULTI_LOCK_ASSERT(); MLD_LOCK_ASSERT(); @@ -1776,7 +1776,7 @@ mld_v1_process_querier_timers(struct mld CTR5(KTR_MLD, "%s: transition from v%d -> v%d on %p(%s)", __func__, mli->mli_version, MLD_VERSION_2, - mli->mli_ifp, mli->mli_ifp->if_xname); + mli->mli_ifp, if_name(mli->mli_ifp)); mli->mli_version = MLD_VERSION_2; } } @@ -1961,7 +1961,7 @@ mld_initial_join(struct in6_multi *inm, CTR4(KTR_MLD, "%s: initial join %s on ifp %p(%s)", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp, inm->in6m_ifp->if_xname); + inm->in6m_ifp, if_name(inm->in6m_ifp)); error = 0; syncstates = 1; @@ -2087,7 +2087,7 @@ mld_initial_join(struct in6_multi *inm, in6m_commit(inm); CTR3(KTR_MLD, "%s: T1 -> T0 for %s/%s", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname); + if_name(inm->in6m_ifp)); } return (error); @@ -2107,7 +2107,7 @@ mld_handle_state_change(struct in6_multi CTR4(KTR_MLD, "%s: state change for %s on ifp %p(%s)", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp, inm->in6m_ifp->if_xname); + inm->in6m_ifp, if_name(inm->in6m_ifp)); ifp = inm->in6m_ifp; @@ -2129,7 +2129,7 @@ mld_handle_state_change(struct in6_multi in6m_commit(inm); CTR3(KTR_MLD, "%s: T1 -> T0 for %s/%s", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname); + if_name(inm->in6m_ifp)); return (0); } @@ -2172,7 +2172,7 @@ mld_final_leave(struct in6_multi *inm, s CTR4(KTR_MLD, "%s: final leave %s on ifp %p(%s)", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp, inm->in6m_ifp->if_xname); + inm->in6m_ifp, if_name(inm->in6m_ifp)); IN6_MULTI_LOCK_ASSERT(); MLD_LOCK_ASSERT(); @@ -2212,7 +2212,7 @@ mld_final_leave(struct in6_multi *inm, s CTR4(KTR_MLD, "%s: Leaving %s/%s with %d " "pending retransmissions.", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname, inm->in6m_scrv); + if_name(inm->in6m_ifp), inm->in6m_scrv); if (inm->in6m_scrv == 0) { inm->in6m_state = MLD_NOT_MEMBER; inm->in6m_sctimer = 0; @@ -2247,10 +2247,10 @@ mld_final_leave(struct in6_multi *inm, s in6m_commit(inm); CTR3(KTR_MLD, "%s: T1 -> T0 for %s/%s", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname); + if_name(inm->in6m_ifp)); inm->in6m_st[1].iss_fmode = MCAST_UNDEFINED; CTR3(KTR_MLD, "%s: T1 now MCAST_UNDEFINED for %p/%s", - __func__, &inm->in6m_addr, inm->in6m_ifp->if_xname); + __func__, &inm->in6m_addr, if_name(inm->in6m_ifp)); } } @@ -2402,7 +2402,7 @@ mld_v2_enqueue_group_record(struct ifque if (type == MLD_DO_NOTHING) { CTR3(KTR_MLD, "%s: nothing to do for %s/%s", __func__, ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname); + if_name(inm->in6m_ifp)); return (0); } @@ -2418,7 +2418,7 @@ mld_v2_enqueue_group_record(struct ifque CTR4(KTR_MLD, "%s: queueing %s for %s/%s", __func__, mld_rec_type_to_str(type), ip6_sprintf(ip6tbuf, &inm->in6m_addr), - inm->in6m_ifp->if_xname); + if_name(inm->in6m_ifp)); /* * Check if we have a packet in the tail of the queue for this From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 14:47:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2C0FDD61; Fri, 10 Jan 2014 14:47:21 +0000 (UTC) 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 1714411FE; Fri, 10 Jan 2014 14:47: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 s0AElKoW043840; Fri, 10 Jan 2014 14:47:20 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AElKFT043839; Fri, 10 Jan 2014 14:47:20 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201401101447.s0AElKFT043839@svn.freebsd.org> From: Kevin Lo Date: Fri, 10 Jan 2014 14:47:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260513 - head/sys/dev/usb/wlan X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 14:47:21 -0000 Author: kevlo Date: Fri Jan 10 14:47:20 2014 New Revision: 260513 URL: http://svnweb.freebsd.org/changeset/base/260513 Log: Use m_get2() instead of m_getcl(). Spotted by: glebius Modified: head/sys/dev/usb/wlan/if_rsu.c Modified: head/sys/dev/usb/wlan/if_rsu.c ============================================================================== --- head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 13:08:21 2014 (r260512) +++ head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 14:47:20 2014 (r260513) @@ -1145,7 +1145,7 @@ rsu_event_survey(struct rsu_softc *sc, u pktlen = sizeof(*wh) + le32toh(bss->ieslen); if (__predict_false(pktlen > MCLBYTES)) return; - m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); + m = m_get2(pktlen, M_NOWAIT, MT_DATA, M_PKTHDR); if (__predict_false(m == NULL)) return; wh = mtod(m, struct ieee80211_frame *); @@ -1351,7 +1351,7 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", pktlen, rate, infosz, *rssi); - m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); + m = m_get2(pktlen, M_NOWAIT, MT_DATA, M_PKTHDR); if (__predict_false(m == NULL)) { ifp->if_ierrors++; return NULL; From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 14:49:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 71643EA9; Fri, 10 Jan 2014 14:49:46 +0000 (UTC) Received: from ns.kevlo.org (220-135-115-6.HINET-IP.hinet.net [220.135.115.6]) (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 F3B8A1208; Fri, 10 Jan 2014 14:49:45 +0000 (UTC) Received: from srg.kevlo.org (mail.kevlo.org [220.135.115.6]) by ns.kevlo.org (8.14.6/8.14.6) with ESMTP id s0AEnclQ022766; Fri, 10 Jan 2014 22:49:39 +0800 (CST) (envelope-from kevlo@FreeBSD.org) Message-ID: <52D00886.9090603@FreeBSD.org> Date: Fri, 10 Jan 2014 22:49:42 +0800 From: Kevin Lo User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Gleb Smirnoff Subject: Re: svn commit: r260501 - head/sys/dev/usb/wlan References: <201401100247.s0A2lK9q066888@svn.freebsd.org> <20140110102032.GC73147@FreeBSD.org> In-Reply-To: <20140110102032.GC73147@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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 14:49:46 -0000 On 2014/01/10 18:20, Gleb Smirnoff wrote: > Kevin, > > On Fri, Jan 10, 2014 at 02:47:20AM +0000, Kevin Lo wrote: > K> Author: kevlo > K> Date: Fri Jan 10 02:47:20 2014 > K> New Revision: 260501 > K> URL: http://svnweb.freebsd.org/changeset/base/260501 > K> > K> Log: > K> Use m_getcl() instead of MGETHDR/MCLGET macros. > K> > K> Suggested by: glebius > K> > K> Modified: > K> head/sys/dev/usb/wlan/if_rsu.c > K> > K> Modified: head/sys/dev/usb/wlan/if_rsu.c > K> ============================================================================== > K> --- head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 01:44:34 2014 (r260500) > K> +++ head/sys/dev/usb/wlan/if_rsu.c Fri Jan 10 02:47:20 2014 (r260501) > K> @@ -1145,16 +1145,9 @@ rsu_event_survey(struct rsu_softc *sc, u > K> pktlen = sizeof(*wh) + le32toh(bss->ieslen); > K> if (__predict_false(pktlen > MCLBYTES)) > K> return; > K> - MGETHDR(m, M_NOWAIT, MT_DATA); > K> + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); > K> if (__predict_false(m == NULL)) > K> return; > K> - if (pktlen > MHLEN) { > K> - MCLGET(m, M_NOWAIT); > K> - if (!(m->m_flags & M_EXT)) { > K> - m_free(m); > K> - return; > K> - } > K> - } > K> wh = mtod(m, struct ieee80211_frame *); > K> wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | > K> IEEE80211_FC0_SUBTYPE_BEACON; > K> @@ -1358,19 +1351,11 @@ rsu_rx_frame(struct rsu_softc *sc, uint8 > K> DPRINTFN(5, "Rx frame len=%d rate=%d infosz=%d rssi=%d\n", > K> pktlen, rate, infosz, *rssi); > K> > K> - MGETHDR(m, M_NOWAIT, MT_DATA); > K> + m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); > K> if (__predict_false(m == NULL)) { > K> ifp->if_ierrors++; > K> return NULL; > K> } > K> - if (pktlen > MHLEN) { > K> - MCLGET(m, M_NOWAIT); > K> - if (__predict_false(!(m->m_flags & M_EXT))) { > K> - ifp->if_ierrors++; > K> - m_freem(m); > K> - return NULL; > K> - } > K> - } > K> /* Finalize mbuf. */ > K> m->m_pkthdr.rcvif = ifp; > K> /* Hardware does Rx TCP checksum offload. */ > > Sorry, but the correct code would be: > > if (pktlen > MHLEN) > m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR); > else > m = m_gethdr(M_NOWAIT, MT_DATA); > if (__predict_false(m == NULL)) { > ifp->if_ierrors++; > return NULL; > } > > Alternatively, you can use: > > m = m_get2(pktlen, M_NOWAIT, MT_DATA, M_PKTHDR); > if (__predict_false(m == NULL)) { > ifp->if_ierrors++; > return NULL; > } > > With committed code we are wasting memory for small packets. > Fixed. Thanks for pointing that out! Seems like I was not clear headed. I thought I used m_get2 but apparently not. Kevin From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 16:00:28 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 34CBCF6A; Fri, 10 Jan 2014 16:00:28 +0000 (UTC) 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 2125B1739; Fri, 10 Jan 2014 16:00: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 s0AG0SwA072762; Fri, 10 Jan 2014 16:00:28 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AG0RIl072761; Fri, 10 Jan 2014 16:00:27 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401101600.s0AG0RIl072761@svn.freebsd.org> From: Luigi Rizzo Date: Fri, 10 Jan 2014 16:00:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260515 - head/sys/dev/netmap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 16:00:28 -0000 Author: luigi Date: Fri Jan 10 16:00:27 2014 New Revision: 260515 URL: http://svnweb.freebsd.org/changeset/base/260515 Log: sync with our internal repo - small change in debugging messages Modified: head/sys/dev/netmap/netmap_mem2.c Modified: head/sys/dev/netmap/netmap_mem2.c ============================================================================== --- head/sys/dev/netmap/netmap_mem2.c Fri Jan 10 14:56:37 2014 (r260514) +++ head/sys/dev/netmap/netmap_mem2.c Fri Jan 10 16:00:27 2014 (r260515) @@ -957,7 +957,7 @@ netmap_mem_rings_create(struct netmap_ad D("Cannot allocate tx_ring"); goto cleanup; } - ND("txring[%d] at %p ofs %d", i, ring); + ND("txring at %p", ring); kring->ring = ring; *(uint32_t *)(uintptr_t)&ring->num_slots = ndesc; *(int64_t *)(uintptr_t)&ring->buf_ofs = @@ -987,8 +987,7 @@ netmap_mem_rings_create(struct netmap_ad D("Cannot allocate rx_ring"); goto cleanup; } - ND("rxring at %p ofs %d", ring); - + ND("rxring at %p", ring); kring->ring = ring; *(uint32_t *)(uintptr_t)&ring->num_slots = ndesc; *(int64_t *)(uintptr_t)&ring->buf_ofs = @@ -1002,7 +1001,7 @@ netmap_mem_rings_create(struct netmap_ad ring->tail = kring->rtail; *(int *)(uintptr_t)&ring->nr_buf_size = NETMAP_BDG_BUF_SIZE(na->nm_mem); - ND("initializing slots for rxring[%d]", i); + ND("initializing slots for rxring %p", ring); if (netmap_new_bufs(na->nm_mem, ring->slot, ndesc)) { D("Cannot allocate buffers for rx_ring"); goto cleanup; From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 16:01:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 51029153; Fri, 10 Jan 2014 16:01:45 +0000 (UTC) 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 3D13E1799; Fri, 10 Jan 2014 16:01: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 s0AG1jYa073497; Fri, 10 Jan 2014 16:01:45 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AG1jtC073496; Fri, 10 Jan 2014 16:01:45 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401101601.s0AG1jtC073496@svn.freebsd.org> From: Luigi Rizzo Date: Fri, 10 Jan 2014 16:01:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260516 - head/sys/dev/netmap X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 16:01:45 -0000 Author: luigi Date: Fri Jan 10 16:01:44 2014 New Revision: 260516 URL: http://svnweb.freebsd.org/changeset/base/260516 Log: Fix netmap emulation when NICs attached to a VALE switch have a different number of tx and rx rings Submitted by: Vincenzo Maffione Modified: head/sys/dev/netmap/netmap_vale.c Modified: head/sys/dev/netmap/netmap_vale.c ============================================================================== --- head/sys/dev/netmap/netmap_vale.c Fri Jan 10 16:00:27 2014 (r260515) +++ head/sys/dev/netmap/netmap_vale.c Fri Jan 10 16:01:44 2014 (r260516) @@ -1835,12 +1835,15 @@ netmap_bwrap_register(struct netmap_adap hostna->up.na_lut_objtotal = na->na_lut_objtotal; } - /* cross-link the netmap rings */ - for (i = 0; i <= na->num_tx_rings; i++) { + /* cross-link the netmap rings + * The original number of rings comes from hwna, + * rx rings on one side equals tx rings on the other. + */ + for (i = 0; i <= na->num_rx_rings; i++) { hwna->tx_rings[i].nkr_num_slots = na->rx_rings[i].nkr_num_slots; hwna->tx_rings[i].ring = na->rx_rings[i].ring; } - for (i = 0; i <= na->num_rx_rings; i++) { + for (i = 0; i <= na->num_tx_rings; i++) { hwna->rx_rings[i].nkr_num_slots = na->tx_rings[i].nkr_num_slots; hwna->rx_rings[i].ring = na->tx_rings[i].ring; } From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 16:57:00 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 1AB75F2C; Fri, 10 Jan 2014 16:57:00 +0000 (UTC) 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 E036E1B6C; Fri, 10 Jan 2014 16:56: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 s0AGux1G093546; Fri, 10 Jan 2014 16:56:59 GMT (envelope-from asomers@svn.freebsd.org) Received: (from asomers@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AGuxNV093545; Fri, 10 Jan 2014 16:56:59 GMT (envelope-from asomers@svn.freebsd.org) Message-Id: <201401101656.s0AGuxNV093545@svn.freebsd.org> From: Alan Somers Date: Fri, 10 Jan 2014 16:56:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260517 - stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 16:57:00 -0000 Author: asomers Date: Fri Jan 10 16:56:59 2014 New Revision: 260517 URL: http://svnweb.freebsd.org/changeset/base/260517 Log: MFC 259240 sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c When a da or ada device dissappears, outstanding IOs fail with ENXIO, not EIO. The check for EIO was probably copied from Illumos, where that is indeed the correct errno. Without this change, pulling a busy drive from a zpool would usually turn it into UNAVAIL, even though pulling an idle drive would turn it into REMOVED. With this change, it is REMOVED every time. Also, vdev_geom_io_intr shouldn't do zfs_post_remove, because that results in devd getting two resource.fs.zfs.removed events. The comment said that the event had to be sent directly instead of through the async removal thread because "the DE engine is using this information to discard prevoius I/O errors". However, the fact that vdev_geom_io_intr was never actually sending the events until now, and that vdev_geom_orphan never sent them at all, and that vdev_geom_orphan usually gets called about 2 seconds after the actual removal, means that FreeBSD's userland can cope with a late event just fine. Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Jan 10 16:01:44 2014 (r260516) +++ stable/10/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Jan 10 16:56:59 2014 (r260517) @@ -735,20 +735,12 @@ vdev_geom_io_intr(struct bio *bp) */ vd->vdev_notrim = B_TRUE; } - if (zio->io_error == EIO && !vd->vdev_remove_wanted) { + if (zio->io_error == ENXIO && !vd->vdev_remove_wanted) { /* * If provider's error is set we assume it is being * removed. */ if (bp->bio_to->error != 0) { - /* - * We post the resource as soon as possible, instead of - * when the async removal actually happens, because the - * DE is using this information to discard previous I/O - * errors. - */ - /* XXX: zfs_post_remove() can sleep. */ - zfs_post_remove(zio->io_spa, vd); vd->vdev_remove_wanted = B_TRUE; spa_async_request(zio->io_spa, SPA_ASYNC_REMOVE); } else if (!vd->vdev_delayed_close) { From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 17:30:37 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 919D8BA2; Fri, 10 Jan 2014 17:30:37 +0000 (UTC) Received: from mail-qa0-x22f.google.com (mail-qa0-x22f.google.com [IPv6:2607:f8b0:400d:c00::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 199EF1EF9; Fri, 10 Jan 2014 17:30:37 +0000 (UTC) Received: by mail-qa0-f47.google.com with SMTP id j5so99076qaq.34 for ; Fri, 10 Jan 2014 09:30:36 -0800 (PST) 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=YKyuqL0DILaUb75ihm+3+L8fqNPptxNPXvrXsszXgcg=; b=LxFxby+ViWUhtMRo733eZ/SsjaUK49sgXsdS/AiCXz4lsfPqwH4N8BjtG/bcfxNt+t SzGYxBVXaNLD2y872ndOV2IyD0VSsS5a7OADL72hhrMNgt5FJjvoD6VA4PGLs7Co1IFy RKk7LH9UbTThX506KKoKljicMxfijT3EB3G+eWAufcZiy7z2TAZsKOv1iaAnmCVAegKj M7jcfmAFZrsZxKKeEO//y68vjO/ptR1B4fuxWmnaHUxoJw1h6gMWEy+qot6FRQgdoNYO 4uxTXNrCEmAL0BopDjgc7w4as4xs4fPLtc+Plnyl8PxkwszPhZxkqIyRuqcyCraObiRB BSHA== MIME-Version: 1.0 X-Received: by 10.224.13.141 with SMTP id c13mr9724650qaa.76.1389375036320; Fri, 10 Jan 2014 09:30:36 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Fri, 10 Jan 2014 09:30:36 -0800 (PST) In-Reply-To: <52CF976A.3070501@fsn.hu> References: <201401091555.s09Fttju004938@svn.freebsd.org> <52CEC79F.2090708@FreeBSD.org> <52CECE57.4040002@FreeBSD.org> <52CF976A.3070501@fsn.hu> Date: Fri, 10 Jan 2014 09:30:36 -0800 X-Google-Sender-Auth: 9lGu8ki-77Pd97yHwoHasdDac8E Message-ID: Subject: Re: svn commit: r260486 - head/etc/defaults From: Adrian Chadd To: Attila Nagy Content-Type: text/plain; charset=ISO-8859-1 Cc: "svn-src-head@freebsd.org" , Alexander Motin , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 17:30:37 -0000 On 9 January 2014 22:47, Attila Nagy wrote: > We have 2 and 4 hw.ncpu NFS servers with 70+ disks, so there may be cases, > where even the default maximum of 256 threads is not enough to feed the > -otherwise slow- disks. > I guess the real solution here is to change the nfsd worker model to async. > > (adapting to top poster) I think there's some work going on to migrate the UFS code to expose a fully async strategy routine. Once that's done an async nfsd becomes much, much more doable. -a From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 17:31:03 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E24D5CDB; Fri, 10 Jan 2014 17:31:03 +0000 (UTC) Received: from mail-qa0-x231.google.com (mail-qa0-x231.google.com [IPv6:2607:f8b0:400d:c00::231]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5A4161EFF; Fri, 10 Jan 2014 17:31:03 +0000 (UTC) Received: by mail-qa0-f49.google.com with SMTP id w8so2976475qac.36 for ; Fri, 10 Jan 2014 09:31:02 -0800 (PST) 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=Ehl5DHuFCJDXDHYhPSfY6rZhCmXXvSbnQb2eR1uW5+g=; b=Ul3SEv47fEgN9a75Rqw7+0i4eB+afbXV9E7wl16jAhqEewo6aUurJhXASrz0jjpAYp BZqkGTAeR2CrrQndI2mVAb1GIU/aBCjz5HugPSwaLFjfPIoIOLlIIFNgddK7OVHcyEpQ pJZZ9Qy7qR3bkwJYZBFAlnM9szfUwCC7sMdE0ZUMKRHpYpAfa5SxV6+eL540jmCoSl2m cMFnFi1SwoN3MJAyt03ldwENu0bMjCFBJwcWRrm7tIzCv8OtSondoIc3YW8qi97rKzI9 WMUxOPxfImCS2B/dx98tx2giQWPHUI/QBiZhyNMqwixqrPblW1rqRiYjLDnKGLykYM7d kbGw== MIME-Version: 1.0 X-Received: by 10.49.24.19 with SMTP id q19mr9729420qef.17.1389375061026; Fri, 10 Jan 2014 09:31:01 -0800 (PST) Sender: adrian.chadd@gmail.com Received: by 10.224.52.8 with HTTP; Fri, 10 Jan 2014 09:31:00 -0800 (PST) In-Reply-To: <201401100945.s0A9jSUk028492@svn.freebsd.org> References: <201401100945.s0A9jSUk028492@svn.freebsd.org> Date: Fri, 10 Jan 2014 09:31:00 -0800 X-Google-Sender-Auth: qj9FY0e9wjRsMiCEgA57BezYW_s Message-ID: Subject: Re: svn commit: r260504 - in stable/10/sys: netinet netinet6 From: Adrian Chadd To: "Andrey V. Elsukov" Content-Type: text/plain; charset=ISO-8859-1 Cc: svn-src-stable@freebsd.org, "svn-src-all@freebsd.org" , "src-committers@freebsd.org" , svn-src-stable-10@freebsd.org X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 17:31:04 -0000 Hah, thanks for beating me to the MFC. :) -a On 10 January 2014 01:45, Andrey V. Elsukov wrote: > Author: ae > Date: Fri Jan 10 09:45:28 2014 > New Revision: 260504 > URL: http://svnweb.freebsd.org/changeset/base/260504 > > Log: > MFC r260151 (by adrian): > Use an RLOCK here instead of an RWLOCK - matching all the other calls > to lla_lookup(). > > This drastically reduces the very high lock contention when doing parallel > TCP throughput tests (> 1024 sockets) with IPv6. > > MFC r260187: > lla_lookup() does modification only when LLE_CREATE is specified. > Thus we can use IF_AFDATA_RLOCK() instead of IF_AFDATA_LOCK() when doing > lla_lookup() without LLE_CREATE flag. > > MFC r260217: > Add IF_AFDATA_WLOCK_ASSERT() in case lla_lookup() is called with > LLE_CREATE flag. > > Modified: > stable/10/sys/netinet/if_ether.c > stable/10/sys/netinet/in.c > stable/10/sys/netinet6/in6.c > stable/10/sys/netinet6/nd6.c > stable/10/sys/netinet6/nd6_nbr.c > Directory Properties: > stable/10/ (props changed) > > Modified: stable/10/sys/netinet/if_ether.c > ============================================================================== > --- stable/10/sys/netinet/if_ether.c Fri Jan 10 07:48:36 2014 (r260503) > +++ stable/10/sys/netinet/if_ether.c Fri Jan 10 09:45:28 2014 (r260504) > @@ -153,10 +153,10 @@ arp_ifscrub(struct ifnet *ifp, uint32_t > addr4.sin_len = sizeof(addr4); > addr4.sin_family = AF_INET; > addr4.sin_addr.s_addr = addr; > - IF_AFDATA_LOCK(ifp); > + IF_AFDATA_RLOCK(ifp); > lla_lookup(LLTABLE(ifp), (LLE_DELETE | LLE_IFADDR), > (struct sockaddr *)&addr4); > - IF_AFDATA_UNLOCK(ifp); > + IF_AFDATA_RUNLOCK(ifp); > } > #endif > > @@ -805,9 +805,9 @@ reply: > struct llentry *lle = NULL; > > sin.sin_addr = itaddr; > - IF_AFDATA_LOCK(ifp); > + IF_AFDATA_RLOCK(ifp); > lle = lla_lookup(LLTABLE(ifp), 0, (struct sockaddr *)&sin); > - IF_AFDATA_UNLOCK(ifp); > + IF_AFDATA_RUNLOCK(ifp); > > if ((lle != NULL) && (lle->la_flags & LLE_PUB)) { > (void)memcpy(ar_tha(ah), ar_sha(ah), ah->ar_hln); > > Modified: stable/10/sys/netinet/in.c > ============================================================================== > --- stable/10/sys/netinet/in.c Fri Jan 10 07:48:36 2014 (r260503) > +++ stable/10/sys/netinet/in.c Fri Jan 10 09:45:28 2014 (r260504) > @@ -1435,6 +1435,7 @@ in_lltable_lookup(struct lltable *llt, u > #endif > if (!(flags & LLE_CREATE)) > return (NULL); > + IF_AFDATA_WLOCK_ASSERT(ifp); > /* > * A route that covers the given address must have > * been installed 1st because we are doing a resolution, > > Modified: stable/10/sys/netinet6/in6.c > ============================================================================== > --- stable/10/sys/netinet6/in6.c Fri Jan 10 07:48:36 2014 (r260503) > +++ stable/10/sys/netinet6/in6.c Fri Jan 10 09:45:28 2014 (r260504) > @@ -2627,6 +2627,7 @@ in6_lltable_lookup(struct lltable *llt, > if (lle == NULL) { > if (!(flags & LLE_CREATE)) > return (NULL); > + IF_AFDATA_WLOCK_ASSERT(ifp); > /* > * A route that covers the given address must have > * been installed 1st because we are doing a resolution, > > Modified: stable/10/sys/netinet6/nd6.c > ============================================================================== > --- stable/10/sys/netinet6/nd6.c Fri Jan 10 07:48:36 2014 (r260503) > +++ stable/10/sys/netinet6/nd6.c Fri Jan 10 09:45:28 2014 (r260504) > @@ -1146,9 +1146,9 @@ nd6_nud_hint(struct rtentry *rt, struct > return; > > ifp = rt->rt_ifp; > - IF_AFDATA_LOCK(ifp); > + IF_AFDATA_RLOCK(ifp); > ln = nd6_lookup(dst6, ND6_EXCLUSIVE, NULL); > - IF_AFDATA_UNLOCK(ifp); > + IF_AFDATA_RUNLOCK(ifp); > if (ln == NULL) > return; > > @@ -1574,16 +1574,16 @@ nd6_cache_lladdr(struct ifnet *ifp, stru > * description on it in NS section (RFC 2461 7.2.3). > */ > flags = lladdr ? ND6_EXCLUSIVE : 0; > - IF_AFDATA_LOCK(ifp); > + IF_AFDATA_RLOCK(ifp); > ln = nd6_lookup(from, flags, ifp); > - > + IF_AFDATA_RUNLOCK(ifp); > if (ln == NULL) { > flags |= ND6_EXCLUSIVE; > + IF_AFDATA_LOCK(ifp); > ln = nd6_lookup(from, flags | ND6_CREATE, ifp); > IF_AFDATA_UNLOCK(ifp); > is_newentry = 1; > } else { > - IF_AFDATA_UNLOCK(ifp); > /* do nothing if static ndp is set */ > if (ln->la_flags & LLE_STATIC) { > static_route = 1; > @@ -1891,9 +1891,9 @@ nd6_output_lle(struct ifnet *ifp, struct > flags = ((m != NULL) || (lle != NULL)) ? LLE_EXCLUSIVE : 0; > if (ln == NULL) { > retry: > - IF_AFDATA_LOCK(ifp); > + IF_AFDATA_RLOCK(ifp); > ln = lla_lookup(LLTABLE6(ifp), flags, (struct sockaddr *)dst); > - IF_AFDATA_UNLOCK(ifp); > + IF_AFDATA_RUNLOCK(ifp); > if ((ln == NULL) && nd6_is_addr_neighbor(dst, ifp)) { > /* > * Since nd6_is_addr_neighbor() internally calls nd6_lookup(), > > Modified: stable/10/sys/netinet6/nd6_nbr.c > ============================================================================== > --- stable/10/sys/netinet6/nd6_nbr.c Fri Jan 10 07:48:36 2014 (r260503) > +++ stable/10/sys/netinet6/nd6_nbr.c Fri Jan 10 09:45:28 2014 (r260504) > @@ -736,9 +736,9 @@ nd6_na_input(struct mbuf *m, int off, in > * If no neighbor cache entry is found, NA SHOULD silently be > * discarded. > */ > - IF_AFDATA_LOCK(ifp); > + IF_AFDATA_RLOCK(ifp); > ln = nd6_lookup(&taddr6, LLE_EXCLUSIVE, ifp); > - IF_AFDATA_UNLOCK(ifp); > + IF_AFDATA_RUNLOCK(ifp); > if (ln == NULL) { > goto freeit; > } From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 17:40:30 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AA3F4F85; Fri, 10 Jan 2014 17:40:30 +0000 (UTC) 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 7C6881F9A; Fri, 10 Jan 2014 17:40: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 s0AHeUVX010182; Fri, 10 Jan 2014 17:40:30 GMT (envelope-from asomers@svn.freebsd.org) Received: (from asomers@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AHeUmL010180; Fri, 10 Jan 2014 17:40:30 GMT (envelope-from asomers@svn.freebsd.org) Message-Id: <201401101740.s0AHeUmL010180@svn.freebsd.org> From: Alan Somers Date: Fri, 10 Jan 2014 17:40:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260518 - stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 17:40:30 -0000 Author: asomers Date: Fri Jan 10 17:40:29 2014 New Revision: 260518 URL: http://svnweb.freebsd.org/changeset/base/260518 Log: MFC 259240 sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c When a da or ada device dissappears, outstanding IOs fail with ENXIO, not EIO. The check for EIO was probably copied from Illumos, where that is indeed the correct errno. Without this change, pulling a busy drive from a zpool would usually turn it into UNAVAIL, even though pulling an idle drive would turn it into REMOVED. With this change, it is REMOVED every time. Also, vdev_geom_io_intr shouldn't do zfs_post_remove, because that results in devd getting two resource.fs.zfs.removed events. The comment said that the event had to be sent directly instead of through the async removal thread because "the DE engine is using this information to discard prevoius I/O errors". However, the fact that vdev_geom_io_intr was never actually sending the events until now, and that vdev_geom_orphan never sent them at all, and that vdev_geom_orphan usually gets called about 2 seconds after the actual removal, means that FreeBSD's userland can cope with a late event just fine. Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Directory Properties: stable/9/ (props changed) stable/9/sys/ (props changed) stable/9/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Jan 10 16:56:59 2014 (r260517) +++ stable/9/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Fri Jan 10 17:40:29 2014 (r260518) @@ -724,20 +724,12 @@ vdev_geom_io_intr(struct bio *bp) */ vd->vdev_notrim = B_TRUE; } - if (zio->io_error == EIO && !vd->vdev_remove_wanted) { + if (zio->io_error == ENXIO && !vd->vdev_remove_wanted) { /* * If provider's error is set we assume it is being * removed. */ if (bp->bio_to->error != 0) { - /* - * We post the resource as soon as possible, instead of - * when the async removal actually happens, because the - * DE is using this information to discard previous I/O - * errors. - */ - /* XXX: zfs_post_remove() can sleep. */ - zfs_post_remove(zio->io_spa, vd); vd->vdev_remove_wanted = B_TRUE; spa_async_request(zio->io_spa, SPA_ASYNC_REMOVE); } else if (!vd->vdev_delayed_close) { From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 17:56:24 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A8C1731F; Fri, 10 Jan 2014 17:56:24 +0000 (UTC) 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 9490C10A2; Fri, 10 Jan 2014 17:56: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 s0AHuO2c017064; Fri, 10 Jan 2014 17:56:24 GMT (envelope-from asomers@svn.freebsd.org) Received: (from asomers@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AHuOTm017062; Fri, 10 Jan 2014 17:56:24 GMT (envelope-from asomers@svn.freebsd.org) Message-Id: <201401101756.s0AHuOTm017062@svn.freebsd.org> From: Alan Somers Date: Fri, 10 Jan 2014 17:56:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260519 - in stable/10: etc sbin/devd X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 17:56:24 -0000 Author: asomers Date: Fri Jan 10 17:56:23 2014 New Revision: 260519 URL: http://svnweb.freebsd.org/changeset/base/260519 Log: MFC 259339 sbin/devd/devd.cc Increase the size of devd's client socket's send buffer from the default (8k) to 128k. This prevents clients from getting POLLHUPped during event storms. For example, during zpool creation, the kernel emits a resource.fs.zfs.statechange event for every vdev in the pool. A 128k buffer is large enough to hold the statechange events for a pool with nearly 800 drives. MFC 259362 sbin/devd/devd.cc Promoting the SIGINFO handler's log message from LOG_INFO to LOG_NOTICE, and promoting the "Processing event ..." message from LOG_DEBUG to LOG_INFO. Setting the logfile to LOG_NOTICE with this change will have the same result as setting it to LOG_INFO without this change. Setting it to LOG_INFO with this change will include the useful "Processing event ..." messages that were previously at LOG_DEBUG, without including useless messages like "Pushing table". The intent of this change is that one can log "Processing event ..." without logging "Pushing table" and related messages that are sent for every event. The number of lines actually logged is reduced by about 75% by making this change and setting syslog to LOG_INFO vs setting syslog to LOG_DEBUG. etc/syslog.conf Changing the recommended loglevel to notice instead of info. Modified: stable/10/etc/syslog.conf stable/10/sbin/devd/devd.cc Directory Properties: stable/10/ (props changed) Modified: stable/10/etc/syslog.conf ============================================================================== --- stable/10/etc/syslog.conf Fri Jan 10 17:40:29 2014 (r260518) +++ stable/10/etc/syslog.conf Fri Jan 10 17:56:23 2014 (r260519) @@ -30,7 +30,7 @@ cron.* /var/log/cron # news.notice /var/log/news/news.notice # Uncomment this if you wish to see messages produced by devd # !devd -# *.>=info /var/log/devd.log +# *.>=notice /var/log/devd.log !ppp *.* /var/log/ppp.log !* Modified: stable/10/sbin/devd/devd.cc ============================================================================== --- stable/10/sbin/devd/devd.cc Fri Jan 10 17:40:29 2014 (r260518) +++ stable/10/sbin/devd/devd.cc Fri Jan 10 17:56:23 2014 (r260519) @@ -104,6 +104,19 @@ __FBSDID("$FreeBSD$"); #define CF "/etc/devd.conf" #define SYSCTL "hw.bus.devctl_disable" +/* + * Since the client socket is nonblocking, we must increase its send buffer to + * handle brief event storms. On FreeBSD, AF_UNIX sockets don't have a receive + * buffer, so the client can't increate the buffersize by itself. + * + * For example, when creating a ZFS pool, devd emits one 165 character + * resource.fs.zfs.statechange message for each vdev in the pool. A 64k + * buffer has enough space for almost 400 drives, which would be very large but + * not impossibly large pool. A 128k buffer has enough space for 794 drives, + * which is more than can fit in a rack with modern technology. + */ +#define CLIENT_BUFSIZE 131072 + using namespace std; extern FILE *yyin; @@ -759,7 +772,7 @@ process_event(char *buffer) char *sp; sp = buffer + 1; - devdlog(LOG_DEBUG, "Processing event '%s'\n", buffer); + devdlog(LOG_INFO, "Processing event '%s'\n", buffer); type = *buffer++; cfg.push_var_table(); // No match doesn't have a device, and the format is a little @@ -892,6 +905,7 @@ void new_client(int fd) { int s; + int sndbuf_size; /* * First go reap any zombie clients, then accept the connection, and @@ -901,10 +915,15 @@ new_client(int fd) check_clients(); s = accept(fd, NULL, NULL); if (s != -1) { + sndbuf_size = CLIENT_BUFSIZE; + if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, &sndbuf_size, + sizeof(sndbuf_size))) + err(1, "setsockopt"); shutdown(s, SHUT_RD); clients.push_back(s); ++num_clients; - } + } else + err(1, "accept"); } static void @@ -970,7 +989,7 @@ event_loop(void) } rv = select(max_fd, &fds, NULL, NULL, &tv); if (got_siginfo) { - devdlog(LOG_INFO, "Events received so far=%u\n", + devdlog(LOG_NOTICE, "Events received so far=%u\n", total_events); got_siginfo = 0; } From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 18:14:16 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6307B77C; Fri, 10 Jan 2014 18:14:16 +0000 (UTC) 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 34A56121B; Fri, 10 Jan 2014 18:14: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 s0AIEGUj025082; Fri, 10 Jan 2014 18:14:16 GMT (envelope-from asomers@svn.freebsd.org) Received: (from asomers@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AIEGYC025081; Fri, 10 Jan 2014 18:14:16 GMT (envelope-from asomers@svn.freebsd.org) Message-Id: <201401101814.s0AIEGYC025081@svn.freebsd.org> From: Alan Somers Date: Fri, 10 Jan 2014 18:14:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260520 - stable/9/sbin/devd X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 18:14:16 -0000 Author: asomers Date: Fri Jan 10 18:14:15 2014 New Revision: 260520 URL: http://svnweb.freebsd.org/changeset/base/260520 Log: MFC 259339 sbin/devd/devd.cc Increase the size of devd's client socket's send buffer from the default (8k) to 128k. This prevents clients from getting POLLHUPped during event storms. For example, during zpool creation, the kernel emits a resource.fs.zfs.statechange event for every vdev in the pool. A 128k buffer is large enough to hold the statechange events for a pool with nearly 800 drives. Modified: stable/9/sbin/devd/devd.cc Directory Properties: stable/9/ (props changed) stable/9/sbin/ (props changed) stable/9/sbin/devd/ (props changed) Modified: stable/9/sbin/devd/devd.cc ============================================================================== --- stable/9/sbin/devd/devd.cc Fri Jan 10 17:56:23 2014 (r260519) +++ stable/9/sbin/devd/devd.cc Fri Jan 10 18:14:15 2014 (r260520) @@ -101,6 +101,19 @@ __FBSDID("$FreeBSD$"); #define CF "/etc/devd.conf" #define SYSCTL "hw.bus.devctl_disable" +/* + * Since the client socket is nonblocking, we must increase its send buffer to + * handle brief event storms. On FreeBSD, AF_UNIX sockets don't have a receive + * buffer, so the client can't increate the buffersize by itself. + * + * For example, when creating a ZFS pool, devd emits one 165 character + * resource.fs.zfs.statechange message for each vdev in the pool. A 64k + * buffer has enough space for almost 400 drives, which would be very large but + * not impossibly large pool. A 128k buffer has enough space for 794 drives, + * which is more than can fit in a rack with modern technology. + */ +#define CLIENT_BUFSIZE 131072 + using namespace std; extern FILE *yyin; @@ -880,6 +893,7 @@ void new_client(int fd) { int s; + int sndbuf_size; /* * First go reap any zombie clients, then accept the connection, and @@ -889,10 +903,15 @@ new_client(int fd) check_clients(); s = accept(fd, NULL, NULL); if (s != -1) { + sndbuf_size = CLIENT_BUFSIZE; + if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, &sndbuf_size, + sizeof(sndbuf_size))) + err(1, "setsockopt"); shutdown(s, SHUT_RD); clients.push_back(s); ++num_clients; - } + } else + err(1, "accept"); } static void From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 19:21:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B67A0AB0; Fri, 10 Jan 2014 19:21:46 +0000 (UTC) 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 A37701785; Fri, 10 Jan 2014 19:21: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 s0AJLkVk051179; Fri, 10 Jan 2014 19:21:46 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AJLkBc051178; Fri, 10 Jan 2014 19:21:46 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401101921.s0AJLkBc051178@svn.freebsd.org> From: Alexander Motin Date: Fri, 10 Jan 2014 19:21:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260521 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 19:21:46 -0000 Author: mav Date: Fri Jan 10 19:21:46 2014 New Revision: 260521 URL: http://svnweb.freebsd.org/changeset/base/260521 Log: Remove not applicable PI_SDTR_ABLE and PI_WIDE_16 hba_inquiry flags to make CAM to not try negotiate unsupported settings and suppress warnings. While there, enable command queuing on pass-through devices, announced in hba_inquiry, but disabled. Even though queue size is very small, It seems working well enough. Reviewed by: scottl MFC after: 2 weeks Modified: head/sys/dev/mfi/mfi_cam.c Modified: head/sys/dev/mfi/mfi_cam.c ============================================================================== --- head/sys/dev/mfi/mfi_cam.c Fri Jan 10 18:14:15 2014 (r260520) +++ head/sys/dev/mfi/mfi_cam.c Fri Jan 10 19:21:46 2014 (r260521) @@ -216,7 +216,7 @@ mfip_cam_action(struct cam_sim *sim, uni struct ccb_pathinq *cpi = &ccb->cpi; cpi->version_num = 1; - cpi->hba_inquiry = PI_SDTR_ABLE|PI_TAG_ABLE|PI_WIDE_16; + cpi->hba_inquiry = PI_TAG_ABLE; cpi->target_sprt = 0; cpi->hba_misc = PIM_NOBUSRESET|PIM_SEQSCAN; cpi->hba_eng_cnt = 0; @@ -244,6 +244,8 @@ mfip_cam_action(struct cam_sim *sim, uni break; case XPT_GET_TRAN_SETTINGS: { + struct ccb_trans_settings_scsi *scsi = + &ccb->cts.proto_specific.scsi; struct ccb_trans_settings_sas *sas = &ccb->cts.xport_specific.sas; @@ -252,6 +254,9 @@ mfip_cam_action(struct cam_sim *sim, uni ccb->cts.transport = XPORT_SAS; ccb->cts.transport_version = 0; + scsi->valid = CTS_SCSI_VALID_TQ; + scsi->flags = CTS_SCSI_FLAGS_TAG_ENB; + sas->valid &= ~CTS_SAS_VALID_SPEED; sas->bitrate = 150000; From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 19:41:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id EC505DF1; Fri, 10 Jan 2014 19:41:01 +0000 (UTC) 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 D86C91897; Fri, 10 Jan 2014 19:41: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 s0AJf1tQ058169; Fri, 10 Jan 2014 19:41:01 GMT (envelope-from loos@svn.freebsd.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AJf1Vc058167; Fri, 10 Jan 2014 19:41:01 GMT (envelope-from loos@svn.freebsd.org) Message-Id: <201401101941.s0AJf1Vc058167@svn.freebsd.org> From: Luiz Otavio O Souza Date: Fri, 10 Jan 2014 19:41:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260522 - head/share/man/man4 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 19:41:02 -0000 Author: loos Date: Fri Jan 10 19:41:01 2014 New Revision: 260522 URL: http://svnweb.freebsd.org/changeset/base/260522 Log: Add the manual page for geom_uncompress(4). Approved by: adrian (mentor) Added: head/share/man/man4/geom_uncompress.4 (contents, props changed) Modified: head/share/man/man4/Makefile Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Fri Jan 10 19:21:46 2014 (r260521) +++ head/share/man/man4/Makefile Fri Jan 10 19:41:01 2014 (r260522) @@ -153,6 +153,7 @@ MAN= aac.4 \ geom_fox.4 \ geom_linux_lvm.4 \ geom_map.4 \ + geom_uncompress.4 \ geom_uzip.4 \ gif.4 \ gpib.4 \ Added: head/share/man/man4/geom_uncompress.4 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man4/geom_uncompress.4 Fri Jan 10 19:41:01 2014 (r260522) @@ -0,0 +1,107 @@ +.\" Copyright (c) 2014, Luiz Otavio O Souza +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd January 9, 2014 +.Dt GEOM_UNCOMPRESS 4 +.Os +.Sh NAME +.Nm geom_uncompress +.Nd "GEOM based compressed disk images" +.Sh SYNOPSIS +To compile this driver into the kernel, place the following line in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "options GEOM_UNCOMPRESS" +.Ed +.Pp +Alternatively, to load the driver as a module at boot time, place the +following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +geom_uncompress_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +framework provides support for compressed read only disk images. +This allows significant storage savings at the expense of a little CPU +time on each read. +Data written in the GEOM label area allows +.Nm +to detect compressed images which have been created with +.Xr mkulzma 8 +or +.Xr mkuzip 8 +and presented to the kernel as a logical disk device via +.Xr md 4 . +.Nm +creates a unique +.Pa md#.uncompress +device for each image. +.Pp +The +.Nm +device is subsequently used by the +.Fx +kernel to access the disk images. +The +.Nm +driver does not allow write operations to the underlying disk image. +To check which +.Xr md 4 +devices match a given +.Nm +device: +.Bd -literal -offset indent +# geom uncompress list +Geom name: md0.uncompress +Providers: +1. Name: md0.uncompress + Mediasize: 52428800 (50M) + Sectorsize: 512 + Mode: r1w0e0 +Consumers: +1. Name: md0 + Mediasize: 20864000 (20M) + Sectorsize: 512 + Mode: r1w0e0 +.Ed +.Sh SEE ALSO +.Xr GEOM 4 , +.Xr md 4 , +.Xr geom 8 , +.Xr mkulzma 8 , +.Xr mkuzip 8 +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An "Maxim Sobolev" Aq sobomax@FreeBSD.org +and +.An "Aleksandr Rybalko" Aq ray@FreeBSD.org . +This manual page was written by +.An "Luiz Otavio O Souza" Aq loos@FreeBSD.org . From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 20:29:47 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id B894450C; Fri, 10 Jan 2014 20:29:47 +0000 (UTC) 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 8A7E61CF0; Fri, 10 Jan 2014 20:29: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 s0AKTlPK074788; Fri, 10 Jan 2014 20:29:47 GMT (envelope-from loos@svn.freebsd.org) Received: (from loos@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AKTk7V074783; Fri, 10 Jan 2014 20:29:46 GMT (envelope-from loos@svn.freebsd.org) Message-Id: <201401102029.s0AKTk7V074783@svn.freebsd.org> From: Luiz Otavio O Souza Date: Fri, 10 Jan 2014 20:29:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260523 - in head/sys: geom/uncompress modules/geom modules/geom/geom_uncompress X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 20:29:47 -0000 Author: loos Date: Fri Jan 10 20:29:46 2014 New Revision: 260523 URL: http://svnweb.freebsd.org/changeset/base/260523 Log: Build the geom_uncompress(4) module by default. Fix geom_uncompress(4) module loading. Don't link zlib.c (which is a module itself) directly. The built module was verified and used to read a few mkulzma(8) images on amd64 to validate some of the informations on the manual page. While here, don't overwrite CFLAGS. Reviewed by: ray Approved by: adrian (mentor) Modified: head/sys/geom/uncompress/g_uncompress.c head/sys/modules/geom/Makefile head/sys/modules/geom/geom_uncompress/Makefile Modified: head/sys/geom/uncompress/g_uncompress.c ============================================================================== --- head/sys/geom/uncompress/g_uncompress.c Fri Jan 10 19:41:01 2014 (r260522) +++ head/sys/geom/uncompress/g_uncompress.c Fri Jan 10 20:29:46 2014 (r260523) @@ -664,4 +664,4 @@ static struct g_class g_uncompress_class }; DECLARE_GEOM_CLASS(g_uncompress_class, g_uncompress); - +MODULE_DEPEND(g_uncompress, zlib, 1, 1, 1); Modified: head/sys/modules/geom/Makefile ============================================================================== --- head/sys/modules/geom/Makefile Fri Jan 10 19:41:01 2014 (r260522) +++ head/sys/modules/geom/Makefile Fri Jan 10 20:29:46 2014 (r260523) @@ -24,6 +24,7 @@ SUBDIR= geom_bde \ geom_shsec \ geom_stripe \ geom_sunlabel \ + geom_uncompress \ geom_uzip \ geom_vinum \ geom_virstor \ Modified: head/sys/modules/geom/geom_uncompress/Makefile ============================================================================== --- head/sys/modules/geom/geom_uncompress/Makefile Fri Jan 10 19:41:01 2014 (r260522) +++ head/sys/modules/geom/geom_uncompress/Makefile Fri Jan 10 20:29:46 2014 (r260523) @@ -7,11 +7,11 @@ ${.CURDIR}/../../../net KMOD= geom_uncompress -CFLAGS= -I${.CURDIR}/../../../geom/uncompress/ \ +CFLAGS+= -I${.CURDIR}/../../../geom/uncompress/ \ -I${.CURDIR}/../../../contrib/xz-embedded/freebsd \ -I${.CURDIR}/../../../contrib/xz-embedded/linux/lib/xz/ SRCS= g_uncompress.c xz_crc32.c xz_dec_bcj.c xz_dec_lzma2.c xz_dec_stream.c \ - xz_malloc.c zlib.c + xz_malloc.c SRCS+= xz.h xz_config.h xz_lzma2.h xz_malloc.h xz_private.h xz_stream.h zlib.h .include From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 23:08:19 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9D447771; Fri, 10 Jan 2014 23:08:19 +0000 (UTC) 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 7E6491910; Fri, 10 Jan 2014 23:08: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 s0AN8Jf0036244; Fri, 10 Jan 2014 23:08:19 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0AN8I4G036239; Fri, 10 Jan 2014 23:08:18 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401102308.s0AN8I4G036239@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Fri, 10 Jan 2014 23:08:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260524 - in head: sbin/route 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 23:08:19 -0000 Author: melifaro Date: Fri Jan 10 23:08:18 2014 New Revision: 260524 URL: http://svnweb.freebsd.org/changeset/base/260524 Log: Add -4/-6 shorthand for -finet/-finet6 in route(8) and netstat(8). MFC after: 2 weeks Modified: head/sbin/route/keywords head/sbin/route/route.8 head/sbin/route/route.c head/usr.bin/netstat/main.c head/usr.bin/netstat/netstat.1 Modified: head/sbin/route/keywords ============================================================================== --- head/sbin/route/keywords Fri Jan 10 20:29:46 2014 (r260523) +++ head/sbin/route/keywords Fri Jan 10 23:08:18 2014 (r260524) @@ -1,6 +1,8 @@ # @(#)keywords 8.2 (Berkeley) 3/19/94 # $FreeBSD$ +4 +6 add atalk blackhole Modified: head/sbin/route/route.8 ============================================================================== --- head/sbin/route/route.8 Fri Jan 10 20:29:46 2014 (r260523) +++ head/sbin/route/route.8 Fri Jan 10 23:08:18 2014 (r260524) @@ -62,6 +62,14 @@ programmatic interface discussed in .Pp The following options are available: .Bl -tag -width indent +.It Fl 4 +Specify +.Cm inet +address family as family hint for subcommands. +.It Fl 6 +Specify +.Cm inet +address family as family hint for subcommands. .It Fl d Run in debug-only mode, i.e., do not actually modify the routing table. .It Fl n @@ -138,10 +146,20 @@ When the address family may is specified .Fl xns , .Fl atalk , .Fl inet6 , +.Fl 6, +.Fl inet, or -.Fl inet +.Fl 4 modifiers, only routes having destinations with addresses in the -delineated family will be deleted. +delineated family will be deleted. Additionally, +.Fl 4 +or +.Fl 6 +can be used as aliases for +.Fl inet +and +.Fl inet6 +modifiers. When a .Fl fib option is specified, the operation will be applied to Modified: head/sbin/route/route.c ============================================================================== --- head/sbin/route/route.c Fri Jan 10 20:29:46 2014 (r260523) +++ head/sbin/route/route.c Fri Jan 10 23:08:18 2014 (r260524) @@ -154,7 +154,7 @@ usage(const char *cp) { if (cp != NULL) warnx("bad keyword: %s", cp); - errx(EX_USAGE, "usage: route [-dnqtv] command [[modifiers] args]"); + errx(EX_USAGE, "usage: route [-46dnqtv] command [[modifiers] args]"); /* NOTREACHED */ } @@ -167,8 +167,24 @@ main(int argc, char **argv) if (argc < 2) usage(NULL); - while ((ch = getopt(argc, argv, "nqdtv")) != -1) + while ((ch = getopt(argc, argv, "46nqdtv")) != -1) switch(ch) { + case '4': +#ifdef INET + af = AF_INET; + aflen = sizeof(struct sockaddr_in); +#else + errx(1, "IPv4 support is not compiled in"); +#endif + break; + case '6': +#ifdef INET6 + af = AF_INET6; + aflen = sizeof(struct sockaddr_in6); +#else + errx(1, "IPv6 support is not compiled in"); +#endif + break; case 'n': nflag = 1; break; @@ -382,11 +398,13 @@ flushroutes(int argc, char *argv[]) usage(*argv); switch (keyword(*argv + 1)) { #ifdef INET + case K_4: case K_INET: af = AF_INET; break; #endif #ifdef INET6 + case K_6: case K_INET6: af = AF_INET6; break; @@ -807,12 +825,14 @@ newroute(int argc, char **argv) aflen = sizeof(struct sockaddr_dl); break; #ifdef INET + case K_4: case K_INET: af = AF_INET; aflen = sizeof(struct sockaddr_in); break; #endif #ifdef INET6 + case K_6: case K_INET6: af = AF_INET6; aflen = sizeof(struct sockaddr_in6); Modified: head/usr.bin/netstat/main.c ============================================================================== --- head/usr.bin/netstat/main.c Fri Jan 10 20:29:46 2014 (r260523) +++ head/usr.bin/netstat/main.c Fri Jan 10 23:08:18 2014 (r260524) @@ -350,9 +350,23 @@ main(int argc, char *argv[]) af = AF_UNSPEC; - while ((ch = getopt(argc, argv, "AaBbdF:f:ghI:iLlM:mN:np:Qq:rSTsuWw:xz")) + while ((ch = getopt(argc, argv, "46AaBbdF:f:ghI:iLlM:mN:np:Qq:rSTsuWw:xz")) != -1) switch(ch) { + case '4': +#ifdef INET + af = AF_INET; +#else + errx(1, "IPv4 support is not compiled in"); +#endif + break; + case '6': +#ifdef INET6 + af = AF_INET6; +#else + errx(1, "IPv6 support is not compiled in"); +#endif + break; case 'A': Aflag = 1; break; @@ -836,21 +850,21 @@ static void usage(void) { (void)fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", -"usage: netstat [-AaLnSTWx] [-f protocol_family | -p protocol]\n" +"usage: netstat [-46AaLnSTWx] [-f protocol_family | -p protocol]\n" " [-M core] [-N system]", -" netstat -i | -I interface [-abdhnW] [-f address_family]\n" +" netstat -i | -I interface [-46abdhnW] [-f address_family]\n" " [-M core] [-N system]", -" netstat -w wait [-I interface] [-d] [-M core] [-N system] [-q howmany]", -" netstat -s [-s] [-z] [-f protocol_family | -p protocol]\n" +" netstat -w wait [-I interface] [-46d] [-M core] [-N system] [-q howmany]", +" netstat -s [-s] [-46z] [-f protocol_family | -p protocol]\n" " [-M core] [-N system]", -" netstat -i | -I interface -s [-f protocol_family | -p protocol]\n" +" netstat -i | -I interface [-46s] [-f protocol_family | -p protocol]\n" " [-M core] [-N system]", " netstat -m [-M core] [-N system]", " netstat -B [-I interface]", -" netstat -r [-AanW] [-f address_family] [-M core] [-N system]", +" netstat -r [-46AanW] [-f address_family] [-M core] [-N system]", " netstat -rs [-s] [-M core] [-N system]", -" netstat -g [-W] [-f address_family] [-M core] [-N system]", -" netstat -gs [-s] [-f address_family] [-M core] [-N system]", +" netstat -g [-46W] [-f address_family] [-M core] [-N system]", +" netstat -gs [-46s] [-f address_family] [-M core] [-N system]", " netstat -Q"); exit(1); } Modified: head/usr.bin/netstat/netstat.1 ============================================================================== --- head/usr.bin/netstat/netstat.1 Fri Jan 10 20:29:46 2014 (r260523) +++ head/usr.bin/netstat/netstat.1 Fri Jan 10 23:08:18 2014 (r260524) @@ -45,7 +45,7 @@ depending on the options for the informa .It Xo .Bk -words .Nm -.Op Fl AaLnSTWx +.Op Fl 46AaLnSTWx .Op Fl f Ar protocol_family | Fl p Ar protocol .Op Fl M Ar core .Op Fl N Ar system @@ -92,7 +92,7 @@ retransmits, out-of-order packets receiv .Bk -words .Nm .Fl i | I Ar interface -.Op Fl abdhnW +.Op Fl 46abdhnW .Op Fl f Ar address_family .Ek .Xc @@ -153,7 +153,7 @@ is also present, show the number of drop .Bk -words .Nm .Fl s Op Fl s -.Op Fl z +.Op Fl 46z .Op Fl f Ar protocol_family | Fl p Ar protocol .Op Fl M Ar core .Op Fl N Ar system @@ -174,6 +174,7 @@ is also present, reset statistic counter .Bk -words .Nm .Fl i | I Ar interface Fl s +.Op Fl 46 .Op Fl f Ar protocol_family | Fl p Ar protocol .Op Fl M Ar core .Op Fl N Ar system @@ -214,7 +215,7 @@ states. .Bk -words .Nm .Fl r -.Op Fl AanW +.Op Fl 46AanW .Op Fl F Ar fibnum .Op Fl f Ar address_family .Op Fl M Ar core @@ -276,7 +277,7 @@ is repeated, counters with a value of ze .Bk -words .Nm .Fl g -.Op Fl W +.Op Fl 46W .Op Fl f Ar address_family .Op Fl M Ar core .Op Fl N Ar system @@ -295,7 +296,7 @@ address families. .Bk -words .Nm .Fl gs -.Op Fl s +.Op Fl 46s .Op Fl f Ar address_family .Op Fl M Ar core .Op Fl N Ar system @@ -324,6 +325,14 @@ The flags field shows available ISR hand .Pp Some options have the general meaning: .Bl -tag -width flag +.It Fl 4 +Is shorthand for +.Fl f +.Ar inet +.It Fl 6 +Is shorthand for +.Fl f +.Ar inet6 .It Fl f Ar address_family , Fl p Ar protocol Limit display to those records of the specified From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 23:38:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 4B22FAC0; Fri, 10 Jan 2014 23:38:35 +0000 (UTC) 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 2B4561AE1; Fri, 10 Jan 2014 23:38: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 s0ANcZWU047593; Fri, 10 Jan 2014 23:38:35 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ANcX15047582; Fri, 10 Jan 2014 23:38:33 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401102338.s0ANcX15047582@svn.freebsd.org> From: Julio Merino Date: Fri, 10 Jan 2014 23:38:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260525 - in head: etc/mtree lib/atf/libatf-c++/tests lib/atf/libatf-c++/tests/detail lib/atf/libatf-c/tests lib/atf/libatf-c/tests/detail 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 23:38:35 -0000 Author: jmmv Date: Fri Jan 10 23:38:33 2014 New Revision: 260525 URL: http://svnweb.freebsd.org/changeset/base/260525 Log: Respect the original layout of the atf-{c,c++} tests. Put test programs for internal modules into a 'detail' subdirectory of the libatf-c and libatf-c++ test directories, just as the upstream distribution does. This is necessary because the tests assume such layout to find the process_helper program, and currently fail because of this divergence. MFC after: 1 week Added: head/lib/atf/libatf-c++/tests/Makefile.inc (contents, props changed) head/lib/atf/libatf-c++/tests/detail/ head/lib/atf/libatf-c++/tests/detail/Makefile (contents, props changed) head/lib/atf/libatf-c/tests/Makefile.inc (contents, props changed) head/lib/atf/libatf-c/tests/detail/ head/lib/atf/libatf-c/tests/detail/Makefile (contents, props changed) Modified: head/etc/mtree/BSD.tests.dist head/lib/atf/libatf-c++/tests/Makefile head/lib/atf/libatf-c/tests/Makefile head/tools/build/mk/OptionalObsoleteFiles.inc Modified: head/etc/mtree/BSD.tests.dist ============================================================================== --- head/etc/mtree/BSD.tests.dist Fri Jan 10 23:08:18 2014 (r260524) +++ head/etc/mtree/BSD.tests.dist Fri Jan 10 23:38:33 2014 (r260525) @@ -49,8 +49,12 @@ lib atf libatf-c + detail + .. .. libatf-c++ + detail + .. .. test-programs .. Modified: head/lib/atf/libatf-c++/tests/Makefile ============================================================================== --- head/lib/atf/libatf-c++/tests/Makefile Fri Jan 10 23:08:18 2014 (r260524) +++ head/lib/atf/libatf-c++/tests/Makefile Fri Jan 10 23:38:33 2014 (r260525) @@ -3,6 +3,7 @@ .include TESTSDIR= ${TESTSBASE}/lib/atf/libatf-c++ +TESTS_SUBDIRS= detail ATF= ${.CURDIR:H:H:H:H}/contrib/atf .PATH: ${ATF}/atf-c++ @@ -14,7 +15,6 @@ FILESDIR= ${TESTSDIR} FILES= macros_hpp_test.cpp FILES+= unused_test.cpp -# Tests in atf-c++. .for _T in atf_c++_test \ build_test \ check_test \ @@ -28,20 +28,4 @@ SRCS.${_T}= ${_T}.cpp test_helpers.cpp ATF_TESTS_SH= pkg_config_test -# Tests in atf-c++/detail. - -.for _T in application_test \ - env_test \ - exceptions_test \ - expand_test \ - fs_test \ - parser_test \ - process_test \ - sanity_test \ - text_test \ - ui_test -ATF_TESTS_CXX+= ${_T} -SRCS.${_T}= ${_T}.cpp test_helpers.cpp -.endfor - .include Added: head/lib/atf/libatf-c++/tests/Makefile.inc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/atf/libatf-c++/tests/Makefile.inc Fri Jan 10 23:38:33 2014 (r260525) @@ -0,0 +1,3 @@ +# $FreeBSD$ + +.include "../Makefile.inc" Added: head/lib/atf/libatf-c++/tests/detail/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/atf/libatf-c++/tests/detail/Makefile Fri Jan 10 23:38:33 2014 (r260525) @@ -0,0 +1,26 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/lib/atf/libatf-c++/detail + +ATF= ${.CURDIR:H:H:H:H:H}/contrib/atf +.PATH: ${ATF}/atf-c++/detail + +CFLAGS+= -I${ATF} + +.for _T in application_test \ + env_test \ + exceptions_test \ + expand_test \ + fs_test \ + parser_test \ + process_test \ + sanity_test \ + text_test \ + ui_test +ATF_TESTS_CXX+= ${_T} +SRCS.${_T}= ${_T}.cpp test_helpers.cpp +.endfor + +.include Modified: head/lib/atf/libatf-c/tests/Makefile ============================================================================== --- head/lib/atf/libatf-c/tests/Makefile Fri Jan 10 23:08:18 2014 (r260524) +++ head/lib/atf/libatf-c/tests/Makefile Fri Jan 10 23:38:33 2014 (r260525) @@ -3,6 +3,7 @@ .include TESTSDIR= ${TESTSBASE}/lib/atf/libatf-c +TESTS_SUBDIRS= detail ATF= ${.CURDIR:H:H:H:H}/contrib/atf .PATH: ${ATF}/atf-c @@ -19,8 +20,6 @@ FILESDIR= ${TESTSDIR} FILES= macros_h_test.c FILES+= unused_test.c -# Tests in atf-c. - .for _T in atf_c_test \ build_test \ check_test \ @@ -36,24 +35,4 @@ SRCS.${_T}= ${_T}.c test_helpers.c ATF_TESTS_SH= pkg_config_test -# Tests in atf-c/detail. - -.for _T in dynstr_test \ - env_test \ - fs_test \ - list_test \ - map_test \ - process_test \ - sanity_test \ - text_test \ - user_test -ATF_TESTS_C+= ${_T} -SRCS.${_T}= ${_T}.c test_helpers.c -.endfor - -PROGS+= process_helpers -SRCS.process_helpers= process_helpers.c -MAN.process_helpers= # defined -BINDIR.process_helpers= ${TESTSDIR} - .include Added: head/lib/atf/libatf-c/tests/Makefile.inc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/atf/libatf-c/tests/Makefile.inc Fri Jan 10 23:38:33 2014 (r260525) @@ -0,0 +1,3 @@ +# $FreeBSD$ + +.include "../Makefile.inc" Added: head/lib/atf/libatf-c/tests/detail/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/lib/atf/libatf-c/tests/detail/Makefile Fri Jan 10 23:38:33 2014 (r260525) @@ -0,0 +1,30 @@ +# $FreeBSD$ + +.include + +TESTSDIR= ${TESTSBASE}/lib/atf/libatf-c/detail + +ATF= ${.CURDIR:H:H:H:H:H}/contrib/atf +.PATH: ${ATF}/atf-c/detail + +CFLAGS+= -I${ATF} + +.for _T in dynstr_test \ + env_test \ + fs_test \ + list_test \ + map_test \ + process_test \ + sanity_test \ + text_test \ + user_test +ATF_TESTS_C+= ${_T} +SRCS.${_T}= ${_T}.c test_helpers.c +.endfor + +PROGS+= process_helpers +SRCS.process_helpers= process_helpers.c +MAN.process_helpers= # defined +BINDIR.process_helpers= ${TESTSDIR} + +.include Modified: head/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jan 10 23:08:18 2014 (r260524) +++ head/tools/build/mk/OptionalObsoleteFiles.inc Fri Jan 10 23:38:33 2014 (r260525) @@ -4066,6 +4066,26 @@ OLD_FILES+=usr/share/man/man8/telnetd.8. .if ${MK_TESTS} == yes OLD_FILES+=usr/tests/lib/atf/libatf-c/test_helpers_test OLD_FILES+=usr/tests/lib/atf/test-programs/fork_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/application_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/env_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/exceptions_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/expand_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/fs_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/parser_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/process_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/sanity_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/text_test +OLD_FILES+=usr/tests/lib/atf/libatf-c++/ui_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/dynstr_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/env_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/fs_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/list_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/map_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/process_helpers +OLD_FILES+=usr/tests/lib/atf/libatf-c/process_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/sanity_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/text_test +OLD_FILES+=usr/tests/lib/atf/libatf-c/user_test .else # ATF libraries. OLD_FILES+=usr/bin/atf-sh From owner-svn-src-all@FreeBSD.ORG Fri Jan 10 23:41:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0D267C25; Fri, 10 Jan 2014 23:41:02 +0000 (UTC) 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 E22571B4E; Fri, 10 Jan 2014 23:41: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 s0ANf1hn048479; Fri, 10 Jan 2014 23:41:01 GMT (envelope-from jmmv@svn.freebsd.org) Received: (from jmmv@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0ANf1Bi048476; Fri, 10 Jan 2014 23:41:01 GMT (envelope-from jmmv@svn.freebsd.org) Message-Id: <201401102341.s0ANf1Bi048476@svn.freebsd.org> From: Julio Merino Date: Fri, 10 Jan 2014 23:41:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260526 - in head: contrib/atf/atf-c++/detail lib/atf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Jan 2014 23:41:02 -0000 Author: jmmv Date: Fri Jan 10 23:41:01 2014 New Revision: 260526 URL: http://svnweb.freebsd.org/changeset/base/260526 Log: Fix path to the process_helpers for the libatf-c++ tests. Because we respect the FreeBSD src tree layout under /usr/tests, and because the layout of the tests in the atf distfile does not match the former, the tests for atf-c++ were not able to find the process_helper binary. Fix this by explicitly hardcoding the right path in the FreeBSD test suite. Obtained from: atf (git 1f0e878f7f127741a3762883ef24aef317e239d5) MFC after: 1 week Modified: head/contrib/atf/atf-c++/detail/test_helpers.cpp head/lib/atf/Makefile.inc Modified: head/contrib/atf/atf-c++/detail/test_helpers.cpp ============================================================================== --- head/contrib/atf/atf-c++/detail/test_helpers.cpp Fri Jan 10 23:38:33 2014 (r260525) +++ head/contrib/atf/atf-c++/detail/test_helpers.cpp Fri Jan 10 23:41:01 2014 (r260526) @@ -40,6 +40,18 @@ #include "process.hpp" #include "test_helpers.hpp" +// Path to the directory containing the libatf-c tests, used to locate the +// process_helpers program. If NULL (the default), the code will use a +// relative path. Otherwise, the provided path will be used; this is so +// that we can locate the helpers binary if the installation uses a +// different layout than the one we provide (as is the case in FreeBSD). +#if defined(ATF_C_TESTS_BASE) +static const char* atf_c_tests_base = ATF_C_TESTS_BASE; +#else +static const char* atf_c_tests_base = NULL; +#endif +#undef ATF_C_TESTS_BASE + void build_check_cxx_o_aux(const atf::fs::path& sfile, const char* failmsg, const bool expect_pass) @@ -80,12 +92,17 @@ header_check(const char *hdrname) atf::fs::path get_process_helpers_path(const atf::tests::tc& tc, bool is_detail) { - if (is_detail) - return atf::fs::path(tc.get_config_var("srcdir")) / - ".." / ".." / "atf-c" / "detail" / "process_helpers"; - else - return atf::fs::path(tc.get_config_var("srcdir")) / - ".." / "atf-c" / "detail" / "process_helpers"; + const char* helper = "detail/process_helpers"; + if (atf_c_tests_base == NULL) { + if (is_detail) + return atf::fs::path(tc.get_config_var("srcdir")) / + ".." / ".." / "atf-c" / helper; + else + return atf::fs::path(tc.get_config_var("srcdir")) / + ".." / "atf-c" / helper; + } else { + return atf::fs::path(atf_c_tests_base) / helper; + } } void Modified: head/lib/atf/Makefile.inc ============================================================================== --- head/lib/atf/Makefile.inc Fri Jan 10 23:38:33 2014 (r260525) +++ head/lib/atf/Makefile.inc Fri Jan 10 23:41:01 2014 (r260526) @@ -38,6 +38,7 @@ CFLAGS+= -DATF_BUILD_CPPFLAGS='"${_CPPFL CFLAGS+= -DATF_BUILD_CXX='"${CXX}"' CFLAGS+= -DATF_BUILD_CXXFLAGS='"${_CXXFLAGS}"' CFLAGS+= -DATF_CONFDIR='"${CONFDIR}/atf"' +CFLAGS+= -DATF_C_TESTS_BASE='"${TESTSBASE}/lib/atf/libatf-c"' CFLAGS+= -DATF_INCLUDEDIR='"${INCLUDEDIR}"' CFLAGS+= -DATF_LIBDIR='"${LIBDIR}"' CFLAGS+= -DATF_LIBEXECDIR='"${LIBEXECDIR}"' From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 00:00:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9588EF77; Sat, 11 Jan 2014 00:00:11 +0000 (UTC) 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 8256F1D36; Sat, 11 Jan 2014 00:00: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 s0B00BCO057273; Sat, 11 Jan 2014 00:00:11 GMT (envelope-from luigi@svn.freebsd.org) Received: (from luigi@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B00BZa057272; Sat, 11 Jan 2014 00:00:11 GMT (envelope-from luigi@svn.freebsd.org) Message-Id: <201401110000.s0B00BZa057272@svn.freebsd.org> From: Luigi Rizzo Date: Sat, 11 Jan 2014 00:00:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260527 - head/sys/net X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 00:00:11 -0000 Author: luigi Date: Sat Jan 11 00:00:11 2014 New Revision: 260527 URL: http://svnweb.freebsd.org/changeset/base/260527 Log: use explicit casts with void* to compile when included by C++ code Modified: head/sys/net/netmap_user.h Modified: head/sys/net/netmap_user.h ============================================================================== --- head/sys/net/netmap_user.h Fri Jan 10 23:41:01 2014 (r260526) +++ head/sys/net/netmap_user.h Sat Jan 11 00:00:11 2014 (r260527) @@ -164,6 +164,7 @@ struct nm_desc_t { /* * when the descriptor is open correctly, d->self == d + * Eventually we should also use some magic number. */ #define P2NMD(p) ((struct nm_desc_t *)(p)) #define IS_NETMAP_DESC(d) (P2NMD(d)->self == P2NMD(d)) @@ -181,8 +182,9 @@ struct nm_desc_t { static inline void pkt_copy(const void *_src, void *_dst, int l) { - const uint64_t *src = _src; - uint64_t *dst = _dst; + const uint64_t *src = (const uint64_t *)_src; + uint64_t *dst = (uint64_t *)_dst; + if (unlikely(l >= 1024)) { memcpy(dst, src, l); return; @@ -317,7 +319,8 @@ nm_close(struct nm_desc_t *d) * ugly trick to avoid unused warnings */ static void *__xxzt[] __attribute__ ((unused)) = - { nm_open, nm_inject, nm_dispatch, nm_nextpkt } ; + { (void *)nm_open, (void *)nm_inject, + (void *)nm_dispatch, (void *)nm_nextpkt } ; if (d == NULL || d->self != d) return EINVAL; From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 01:44:23 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 11228DB0; Sat, 11 Jan 2014 01:44:23 +0000 (UTC) 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 F00FC1370; Sat, 11 Jan 2014 01:44: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 s0B1iMoH097550; Sat, 11 Jan 2014 01:44:22 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B1iM0t097549; Sat, 11 Jan 2014 01:44:22 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401110144.s0B1iM0t097549@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sat, 11 Jan 2014 01:44:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260528 - stable/10/contrib/gcc X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 01:44:23 -0000 Author: pfg Date: Sat Jan 11 01:44:22 2014 New Revision: 260528 URL: http://svnweb.freebsd.org/changeset/base/260528 Log: MFC r260361: gcc: Fix optimization bug. GCC-PR rtl-optimization/34628 * combine.c (try_combine): Stop and undo after the first combination if an autoincrement side-effect on the first insn has effectively been lost. Modified: stable/10/contrib/gcc/combine.c Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/gcc/combine.c ============================================================================== --- stable/10/contrib/gcc/combine.c Sat Jan 11 00:00:11 2014 (r260527) +++ stable/10/contrib/gcc/combine.c Sat Jan 11 01:44:22 2014 (r260528) @@ -2370,12 +2370,17 @@ try_combine (rtx i3, rtx i2, rtx i1, int if (i1 && GET_CODE (newpat) != CLOBBER) { - /* Before we can do this substitution, we must redo the test done - above (see detailed comments there) that ensures that I1DEST - isn't mentioned in any SETs in NEWPAT that are field assignments. */ - - if (! combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, - 0, (rtx*) 0)) + /* Check that an autoincrement side-effect on I1 has not been lost. + This happens if I1DEST is mentioned in I2 and dies there, and + has disappeared from the new pattern. */ + if ((FIND_REG_INC_NOTE (i1, NULL_RTX) != 0 + && !i1_feeds_i3 + && dead_or_set_p (i2, i1dest) + && !reg_overlap_mentioned_p (i1dest, newpat)) + /* Before we can do this substitution, we must redo the test done + above (see detailed comments there) that ensures that I1DEST + isn't mentioned in any SETs in NEWPAT that are field assignments. */ + || !combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, 0, 0)) { undo_all (); return 0; From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 01:45:20 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 990D5F15; Sat, 11 Jan 2014 01:45:20 +0000 (UTC) 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 8381C137C; Sat, 11 Jan 2014 01:45: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 s0B1jKN8097722; Sat, 11 Jan 2014 01:45:20 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B1jKKR097721; Sat, 11 Jan 2014 01:45:20 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401110145.s0B1jKKR097721@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sat, 11 Jan 2014 01:45:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260529 - stable/9/contrib/gcc X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 01:45:20 -0000 Author: pfg Date: Sat Jan 11 01:45:20 2014 New Revision: 260529 URL: http://svnweb.freebsd.org/changeset/base/260529 Log: MFC r260361: gcc: Fix optimization bug. GCC-PR rtl-optimization/34628 * combine.c (try_combine): Stop and undo after the first combination if an autoincrement side-effect on the first insn has effectively been lost. Modified: stable/9/contrib/gcc/combine.c Directory Properties: stable/9/ (props changed) stable/9/contrib/gcc/ (props changed) Modified: stable/9/contrib/gcc/combine.c ============================================================================== --- stable/9/contrib/gcc/combine.c Sat Jan 11 01:44:22 2014 (r260528) +++ stable/9/contrib/gcc/combine.c Sat Jan 11 01:45:20 2014 (r260529) @@ -2370,12 +2370,17 @@ try_combine (rtx i3, rtx i2, rtx i1, int if (i1 && GET_CODE (newpat) != CLOBBER) { - /* Before we can do this substitution, we must redo the test done - above (see detailed comments there) that ensures that I1DEST - isn't mentioned in any SETs in NEWPAT that are field assignments. */ - - if (! combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, - 0, (rtx*) 0)) + /* Check that an autoincrement side-effect on I1 has not been lost. + This happens if I1DEST is mentioned in I2 and dies there, and + has disappeared from the new pattern. */ + if ((FIND_REG_INC_NOTE (i1, NULL_RTX) != 0 + && !i1_feeds_i3 + && dead_or_set_p (i2, i1dest) + && !reg_overlap_mentioned_p (i1dest, newpat)) + /* Before we can do this substitution, we must redo the test done + above (see detailed comments there) that ensures that I1DEST + isn't mentioned in any SETs in NEWPAT that are field assignments. */ + || !combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, 0, 0)) { undo_all (); return 0; From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 01:50:45 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E458B173; Sat, 11 Jan 2014 01:50:45 +0000 (UTC) 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 CFA3B13A1; Sat, 11 Jan 2014 01:50: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 s0B1ojxd098639; Sat, 11 Jan 2014 01:50:45 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B1oj7B098638; Sat, 11 Jan 2014 01:50:45 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401110150.s0B1oj7B098638@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sat, 11 Jan 2014 01:50:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260530 - stable/8/contrib/gcc X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 01:50:46 -0000 Author: pfg Date: Sat Jan 11 01:50:45 2014 New Revision: 260530 URL: http://svnweb.freebsd.org/changeset/base/260530 Log: MFC r260361: gcc: Fix optimization bug. GCC-PR rtl-optimization/34628 * combine.c (try_combine): Stop and undo after the first combination if an autoincrement side-effect on the first insn has effectively been lost. Modified: stable/8/contrib/gcc/combine.c Directory Properties: stable/8/ (props changed) stable/8/contrib/ (props changed) stable/8/contrib/gcc/ (props changed) Modified: stable/8/contrib/gcc/combine.c ============================================================================== --- stable/8/contrib/gcc/combine.c Sat Jan 11 01:45:20 2014 (r260529) +++ stable/8/contrib/gcc/combine.c Sat Jan 11 01:50:45 2014 (r260530) @@ -2370,12 +2370,17 @@ try_combine (rtx i3, rtx i2, rtx i1, int if (i1 && GET_CODE (newpat) != CLOBBER) { - /* Before we can do this substitution, we must redo the test done - above (see detailed comments there) that ensures that I1DEST - isn't mentioned in any SETs in NEWPAT that are field assignments. */ - - if (! combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, - 0, (rtx*) 0)) + /* Check that an autoincrement side-effect on I1 has not been lost. + This happens if I1DEST is mentioned in I2 and dies there, and + has disappeared from the new pattern. */ + if ((FIND_REG_INC_NOTE (i1, NULL_RTX) != 0 + && !i1_feeds_i3 + && dead_or_set_p (i2, i1dest) + && !reg_overlap_mentioned_p (i1dest, newpat)) + /* Before we can do this substitution, we must redo the test done + above (see detailed comments there) that ensures that I1DEST + isn't mentioned in any SETs in NEWPAT that are field assignments. */ + || !combinable_i3pat (NULL_RTX, &newpat, i1dest, NULL_RTX, 0, 0)) { undo_all (); return 0; From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 03:14:07 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7670513F; Sat, 11 Jan 2014 03:14:07 +0000 (UTC) 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 569741991; Sat, 11 Jan 2014 03:14: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 s0B3E79O033666; Sat, 11 Jan 2014 03:14:07 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B3E647033659; Sat, 11 Jan 2014 03:14:06 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401110314.s0B3E647033659@svn.freebsd.org> From: Neel Natu Date: Sat, 11 Jan 2014 03:14:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260531 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 03:14:07 -0000 Author: neel Date: Sat Jan 11 03:14:05 2014 New Revision: 260531 URL: http://svnweb.freebsd.org/changeset/base/260531 Log: Enable the "Acknowledge Interrupt on VM exit" VM-exit control. This control is needed to enable "Posted Interrupts" and is present in all the Intel VT-x implementations supported by bhyve so enable it as the default. With this VM-exit control enabled the processor will acknowledge the APIC and store the vector number in the "VM-Exit Interruption Information" field. We now call the interrupt handler "by hand" through the IDT entry associated with the vector. Modified: head/sys/amd64/vmm/intel/vmcs.c head/sys/amd64/vmm/intel/vmcs.h head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/intel/vmx.h head/sys/amd64/vmm/intel/vmx_genassym.c head/sys/amd64/vmm/intel/vmx_support.S Modified: head/sys/amd64/vmm/intel/vmcs.c ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.c Sat Jan 11 01:50:45 2014 (r260530) +++ head/sys/amd64/vmm/intel/vmcs.c Sat Jan 11 03:14:05 2014 (r260531) @@ -473,7 +473,7 @@ DB_SHOW_COMMAND(vmcs, db_show_vmcs) switch (exit & 0x8000ffff) { case EXIT_REASON_EXCEPTION: case EXIT_REASON_EXT_INTR: - val = vmcs_read(VMCS_EXIT_INTERRUPTION_INFO); + val = vmcs_read(VMCS_EXIT_INTR_INFO); db_printf("Interrupt Type: "); switch (val >> 8 & 0x7) { case 0: @@ -495,7 +495,7 @@ DB_SHOW_COMMAND(vmcs, db_show_vmcs) db_printf(" Vector: %lu", val & 0xff); if (val & 0x800) db_printf(" Error Code: %lx", - vmcs_read(VMCS_EXIT_INTERRUPTION_ERROR)); + vmcs_read(VMCS_EXIT_INTR_ERRCODE)); db_printf("\n"); break; case EXIT_REASON_EPT_FAULT: Modified: head/sys/amd64/vmm/intel/vmcs.h ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.h Sat Jan 11 01:50:45 2014 (r260530) +++ head/sys/amd64/vmm/intel/vmcs.h Sat Jan 11 03:14:05 2014 (r260531) @@ -177,8 +177,8 @@ vmcs_write(uint32_t encoding, uint64_t v /* 32-bit read-only data fields */ #define VMCS_INSTRUCTION_ERROR 0x00004400 #define VMCS_EXIT_REASON 0x00004402 -#define VMCS_EXIT_INTERRUPTION_INFO 0x00004404 -#define VMCS_EXIT_INTERRUPTION_ERROR 0x00004406 +#define VMCS_EXIT_INTR_INFO 0x00004404 +#define VMCS_EXIT_INTR_ERRCODE 0x00004406 #define VMCS_IDT_VECTORING_INFO 0x00004408 #define VMCS_IDT_VECTORING_ERROR 0x0000440A #define VMCS_EXIT_INSTRUCTION_LENGTH 0x0000440C @@ -331,9 +331,10 @@ vmcs_write(uint32_t encoding, uint64_t v /* * VMCS interrupt information fields */ -#define VMCS_INTERRUPTION_INFO_VALID (1U << 31) -#define VMCS_INTERRUPTION_INFO_HW_INTR (0 << 8) -#define VMCS_INTERRUPTION_INFO_NMI (2 << 8) +#define VMCS_INTR_INFO_VALID (1U << 31) +#define VMCS_INTR_INFO_TYPE(info) (((info) >> 8) & 0x7) +#define VMCS_INTR_INFO_HW_INTR (0 << 8) +#define VMCS_INTR_INFO_NMI (2 << 8) /* * VMCS IDT-Vectoring information fields Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Sat Jan 11 01:50:45 2014 (r260530) +++ head/sys/amd64/vmm/intel/vmx.c Sat Jan 11 03:14:05 2014 (r260531) @@ -93,6 +93,7 @@ __FBSDID("$FreeBSD$"); #define VM_EXIT_CTLS_ONE_SETTING \ (VM_EXIT_CTLS_ONE_SETTING_NO_PAT | \ + VM_EXIT_ACKNOWLEDGE_INTERRUPT | \ VM_EXIT_SAVE_PAT | \ VM_EXIT_LOAD_PAT) #define VM_EXIT_CTLS_ZERO_SETTING VM_EXIT_SAVE_DEBUG_CONTROLS @@ -680,6 +681,31 @@ vmx_init(int ipinum) return (0); } +static void +vmx_trigger_hostintr(int vector) +{ + uintptr_t func; + struct gate_descriptor *gd; + + gd = &idt[vector]; + + KASSERT(vector >= 32 && vector <= 255, ("vmx_trigger_hostintr: " + "invalid vector %d", vector)); + KASSERT(gd->gd_p == 1, ("gate descriptor for vector %d not present", + vector)); + KASSERT(gd->gd_type == SDT_SYSIGT, ("gate descriptor for vector %d " + "has invalid type %d", vector, gd->gd_type)); + KASSERT(gd->gd_dpl == SEL_KPL, ("gate descriptor for vector %d " + "has invalid dpl %d", vector, gd->gd_dpl)); + KASSERT(gd->gd_selector == GSEL(GCODE_SEL, SEL_KPL), ("gate descriptor " + "for vector %d has invalid selector %d", vector, gd->gd_selector)); + KASSERT(gd->gd_ist == 0, ("gate descriptor for vector %d has invalid " + "IST %d", vector, gd->gd_ist)); + + func = ((long)gd->gd_hioffset << 16 | gd->gd_looffset); + vmx_call_isr(func); +} + static int vmx_setup_cr_shadow(int which, struct vmcs *vmcs, uint32_t initial) { @@ -997,7 +1023,7 @@ vmx_inject_nmi(struct vmx *vmx, int vcpu * Inject the virtual NMI. The vector must be the NMI IDT entry * or the VMCS entry check will fail. */ - info = VMCS_INTERRUPTION_INFO_NMI | VMCS_INTERRUPTION_INFO_VALID; + info = VMCS_INTR_INFO_NMI | VMCS_INTR_INFO_VALID; info |= IDT_NMI; vmcs_write(VMCS_ENTRY_INTR_INFO, info); @@ -1035,7 +1061,7 @@ vmx_inject_interrupts(struct vmx *vmx, i * because of a pending AST. */ info = vmcs_read(VMCS_ENTRY_INTR_INFO); - if (info & VMCS_INTERRUPTION_INFO_VALID) + if (info & VMCS_INTR_INFO_VALID) return; /* @@ -1066,7 +1092,7 @@ vmx_inject_interrupts(struct vmx *vmx, i goto cantinject; /* Inject the interrupt */ - info = VMCS_INTERRUPTION_INFO_HW_INTR | VMCS_INTERRUPTION_INFO_VALID; + info = VMCS_INTR_INFO_HW_INTR | VMCS_INTR_INFO_VALID; info |= vector; vmcs_write(VMCS_ENTRY_INTR_INFO, info); @@ -1376,7 +1402,7 @@ vmx_exit_process(struct vmx *vmx, int vc int error, handled; struct vmxctx *vmxctx; struct vlapic *vlapic; - uint32_t eax, ecx, edx, idtvec_info, idtvec_err, reason; + uint32_t eax, ecx, edx, idtvec_info, idtvec_err, intr_info, reason; uint64_t qual, gpa; bool retu; @@ -1487,6 +1513,11 @@ vmx_exit_process(struct vmx *vmx, int vc * host interrupt handler in the VM's softc. We will inject * this virtual interrupt during the subsequent VM enter. */ + intr_info = vmcs_read(VMCS_EXIT_INTR_INFO); + KASSERT((intr_info & VMCS_INTR_INFO_VALID) != 0 && + VMCS_INTR_INFO_TYPE(intr_info) == 0, + ("VM exit interruption info invalid: %#x", intr_info)); + vmx_trigger_hostintr(intr_info & 0xff); /* * This is special. We want to treat this as an 'handled' @@ -1945,11 +1976,11 @@ vmx_inject(void *arg, int vcpu, int type if (error) return (error); - if (info & VMCS_INTERRUPTION_INFO_VALID) + if (info & VMCS_INTR_INFO_VALID) return (EAGAIN); info = vector | (type_map[type] << 8) | (code_valid ? 1 << 11 : 0); - info |= VMCS_INTERRUPTION_INFO_VALID; + info |= VMCS_INTR_INFO_VALID; error = vmcs_setreg(vmcs, 0, VMCS_IDENT(VMCS_ENTRY_INTR_INFO), info); if (error != 0) return (error); Modified: head/sys/amd64/vmm/intel/vmx.h ============================================================================== --- head/sys/amd64/vmm/intel/vmx.h Sat Jan 11 01:50:45 2014 (r260530) +++ head/sys/amd64/vmm/intel/vmx.h Sat Jan 11 03:14:05 2014 (r260531) @@ -115,6 +115,7 @@ CTASSERT((offsetof(struct vmx, guest_msr #define VMX_INVEPT_ERROR 3 int vmx_enter_guest(struct vmxctx *ctx, int launched); void vmx_exit_guest(void); +void vmx_call_isr(uintptr_t entry); u_long vmx_fix_cr0(u_long cr0); u_long vmx_fix_cr4(u_long cr4); Modified: head/sys/amd64/vmm/intel/vmx_genassym.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx_genassym.c Sat Jan 11 01:50:45 2014 (r260530) +++ head/sys/amd64/vmm/intel/vmx_genassym.c Sat Jan 11 03:14:05 2014 (r260531) @@ -84,3 +84,6 @@ ASSYM(PC_CPUID, offsetof(struct pcpu, pc ASSYM(PM_ACTIVE, offsetof(struct pmap, pm_active)); ASSYM(PM_EPTGEN, offsetof(struct pmap, pm_eptgen)); + +ASSYM(KERNEL_SS, GSEL(GDATA_SEL, SEL_KPL)); +ASSYM(KERNEL_CS, GSEL(GCODE_SEL, SEL_KPL)); Modified: head/sys/amd64/vmm/intel/vmx_support.S ============================================================================== --- head/sys/amd64/vmm/intel/vmx_support.S Sat Jan 11 01:50:45 2014 (r260530) +++ head/sys/amd64/vmm/intel/vmx_support.S Sat Jan 11 03:14:05 2014 (r260531) @@ -234,3 +234,21 @@ ENTRY(vmx_exit_guest) movl $VMX_GUEST_VMEXIT, %eax ret END(vmx_exit_guest) + +/* + * %rdi = interrupt handler entry point + * + * Calling sequence described in the "Instruction Set Reference" for the "INT" + * instruction in Intel SDM, Vol 2. + */ +ENTRY(vmx_call_isr) + mov %rsp, %r11 /* save %rsp */ + and $~0xf, %rsp /* align on 16-byte boundary */ + pushq $KERNEL_SS /* %ss */ + pushq %r11 /* %rsp */ + pushfq /* %rflags */ + pushq $KERNEL_CS /* %cs */ + cli /* disable interrupts */ + callq *%rdi /* push %rip and call isr */ + ret +END(vmx_call_isr) From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 04:22:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 146E7AEB; Sat, 11 Jan 2014 04:22:02 +0000 (UTC) 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 E8F1B1F1A; Sat, 11 Jan 2014 04:22: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 s0B4M1q0060190; Sat, 11 Jan 2014 04:22:01 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B4M1Dc060182; Sat, 11 Jan 2014 04:22:01 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401110422.s0B4M1Dc060182@svn.freebsd.org> From: Neel Natu Date: Sat, 11 Jan 2014 04:22:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260532 - head/sys/amd64/vmm/intel X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 04:22:02 -0000 Author: neel Date: Sat Jan 11 04:22:00 2014 New Revision: 260532 URL: http://svnweb.freebsd.org/changeset/base/260532 Log: Enable "Posted Interrupt Processing" if supported by the CPU. This lets us inject interrupts into the guest without causing a VM-exit. This feature can be disabled by setting the tunable "hw.vmm.vmx.use_apic_pir" to "0". The following sysctls provide information about this feature: - hw.vmm.vmx.posted_interrupts (0 if disabled, 1 if enabled) - hw.vmm.vmx.posted_interrupt_vector (vector number used for vcpu notification) Tested on a Intel Xeon E5-2620v2 courtesy of Allan Jude at ScaleEngine. Modified: head/sys/amd64/vmm/intel/vmcs.h head/sys/amd64/vmm/intel/vmx.c head/sys/amd64/vmm/intel/vmx.h Modified: head/sys/amd64/vmm/intel/vmcs.h ============================================================================== --- head/sys/amd64/vmm/intel/vmcs.h Sat Jan 11 03:14:05 2014 (r260531) +++ head/sys/amd64/vmm/intel/vmcs.h Sat Jan 11 04:22:00 2014 (r260532) @@ -97,6 +97,7 @@ vmcs_write(uint32_t encoding, uint64_t v /* 16-bit control fields */ #define VMCS_VPID 0x00000000 +#define VMCS_PIR_VECTOR 0x00000002 /* 16-bit guest-state fields */ #define VMCS_GUEST_ES_SELECTOR 0x00000800 @@ -129,6 +130,7 @@ vmcs_write(uint32_t encoding, uint64_t v #define VMCS_TSC_OFFSET 0x00002010 #define VMCS_VIRTUAL_APIC 0x00002012 #define VMCS_APIC_ACCESS 0x00002014 +#define VMCS_PIR_DESC 0x00002016 #define VMCS_EPTP 0x0000201A #define VMCS_EOI_EXIT0 0x0000201C #define VMCS_EOI_EXIT1 0x0000201E Modified: head/sys/amd64/vmm/intel/vmx.c ============================================================================== --- head/sys/amd64/vmm/intel/vmx.c Sat Jan 11 03:14:05 2014 (r260531) +++ head/sys/amd64/vmm/intel/vmx.c Sat Jan 11 04:22:00 2014 (r260532) @@ -45,11 +45,13 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include #include "vmm_host.h" +#include "vmm_ipi.h" #include "vmm_msr.h" #include "vmm_ktr.h" #include "vmm_stat.h" @@ -172,6 +174,14 @@ static int virtual_interrupt_delivery; SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, virtual_interrupt_delivery, CTLFLAG_RD, &virtual_interrupt_delivery, 0, "APICv virtual interrupt delivery support"); +static int posted_interrupts; +SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, posted_interrupts, CTLFLAG_RD, + &posted_interrupts, 0, "APICv posted interrupt support"); + +static int pirvec; +SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, posted_interrupt_vector, CTLFLAG_RD, + &pirvec, 0, "APICv posted interrupt vector"); + static struct unrhdr *vpid_unr; static u_int vpid_alloc_failed; SYSCTL_UINT(_hw_vmm_vmx, OID_AUTO, vpid_alloc_failed, CTLFLAG_RD, @@ -442,6 +452,9 @@ vmx_disable(void *arg __unused) static int vmx_cleanup(void) { + + if (pirvec != 0) + vmm_ipi_free(pirvec); if (vpid_unr != NULL) { delete_unrhdr(vpid_unr); @@ -637,8 +650,32 @@ vmx_init(int ipinum) procbased_ctls |= PROCBASED_USE_TPR_SHADOW; procbased_ctls2 |= procbased2_vid_bits; procbased_ctls2 &= ~PROCBASED2_VIRTUALIZE_X2APIC_MODE; + + /* + * Check for Posted Interrupts only if Virtual Interrupt + * Delivery is enabled. + */ + error = vmx_set_ctlreg(MSR_VMX_PINBASED_CTLS, + MSR_VMX_TRUE_PINBASED_CTLS, PINBASED_POSTED_INTERRUPT, 0, + &tmp); + if (error == 0) { + pirvec = vmm_ipi_alloc(); + if (pirvec == 0) { + if (bootverbose) { + printf("vmx_init: unable to allocate " + "posted interrupt vector\n"); + } + } else { + posted_interrupts = 1; + TUNABLE_INT_FETCH("hw.vmm.vmx.use_apic_pir", + &posted_interrupts); + } + } } + if (posted_interrupts) + pinbased_ctls |= PINBASED_POSTED_INTERRUPT; + /* Initialize EPT */ error = ept_init(ipinum); if (error) { @@ -848,6 +885,11 @@ vmx_vminit(struct vm *vm, pmap_t pmap) error += vmwrite(VMCS_EOI_EXIT2, 0); error += vmwrite(VMCS_EOI_EXIT3, 0); } + if (posted_interrupts) { + error += vmwrite(VMCS_PIR_VECTOR, pirvec); + error += vmwrite(VMCS_PIR_DESC, + vtophys(&vmx->pir_desc[i])); + } VMCLEAR(vmcs); KASSERT(error == 0, ("vmx_vminit: error customizing the vmcs")); @@ -2132,19 +2174,9 @@ vmx_setcap(void *arg, int vcpu, int type return (retval); } -/* - * Posted Interrupt Descriptor (described in section 29.6 of the Intel SDM). - */ -struct pir_desc { - uint64_t pir[4]; - uint64_t pending; - uint64_t unused[3]; -} __aligned(64); -CTASSERT(sizeof(struct pir_desc) == 64); - struct vlapic_vtx { struct vlapic vlapic; - struct pir_desc pir_desc; + struct pir_desc *pir_desc; }; #define VMX_CTR_PIR(vm, vcpuid, pir_desc, notify, vector, level, msg) \ @@ -2174,7 +2206,7 @@ vmx_set_intr_ready(struct vlapic *vlapic * XXX need to deal with level triggered interrupts */ vlapic_vtx = (struct vlapic_vtx *)vlapic; - pir_desc = &vlapic_vtx->pir_desc; + pir_desc = vlapic_vtx->pir_desc; /* * Keep track of interrupt requests in the PIR descriptor. This is @@ -2208,7 +2240,7 @@ vmx_pending_intr(struct vlapic *vlapic, KASSERT(vecptr == NULL, ("vmx_pending_intr: vecptr must be NULL")); vlapic_vtx = (struct vlapic_vtx *)vlapic; - pir_desc = &vlapic_vtx->pir_desc; + pir_desc = vlapic_vtx->pir_desc; pending = atomic_load_acq_long(&pir_desc->pending); if (!pending) @@ -2246,6 +2278,13 @@ vmx_intr_accepted(struct vlapic *vlapic, panic("vmx_intr_accepted: not expected to be called"); } +static void +vmx_post_intr(struct vlapic *vlapic, int hostcpu) +{ + + ipi_cpu(hostcpu, pirvec); +} + /* * Transfer the pending interrupts in the PIR descriptor to the IRR * in the virtual APIC page. @@ -2261,7 +2300,7 @@ vmx_inject_pir(struct vlapic *vlapic) uint16_t intr_status_old, intr_status_new; vlapic_vtx = (struct vlapic_vtx *)vlapic; - pir_desc = &vlapic_vtx->pir_desc; + pir_desc = vlapic_vtx->pir_desc; if (atomic_cmpset_long(&pir_desc->pending, 1, 0) == 0) { VCPU_CTR0(vlapic->vm, vlapic->vcpuid, "vmx_inject_pir: " "no posted interrupt pending"); @@ -2326,6 +2365,7 @@ vmx_vlapic_init(void *arg, int vcpuid) { struct vmx *vmx; struct vlapic *vlapic; + struct vlapic_vtx *vlapic_vtx; vmx = arg; @@ -2334,12 +2374,18 @@ vmx_vlapic_init(void *arg, int vcpuid) vlapic->vcpuid = vcpuid; vlapic->apic_page = (struct LAPIC *)&vmx->apic_page[vcpuid]; + vlapic_vtx = (struct vlapic_vtx *)vlapic; + vlapic_vtx->pir_desc = &vmx->pir_desc[vcpuid]; + if (virtual_interrupt_delivery) { vlapic->ops.set_intr_ready = vmx_set_intr_ready; vlapic->ops.pending_intr = vmx_pending_intr; vlapic->ops.intr_accepted = vmx_intr_accepted; } + if (posted_interrupts) + vlapic->ops.post_intr = vmx_post_intr; + vlapic_init(vlapic); return (vlapic); Modified: head/sys/amd64/vmm/intel/vmx.h ============================================================================== --- head/sys/amd64/vmm/intel/vmx.h Sat Jan 11 03:14:05 2014 (r260531) +++ head/sys/amd64/vmm/intel/vmx.h Sat Jan 11 04:22:00 2014 (r260532) @@ -93,11 +93,20 @@ struct apic_page { }; CTASSERT(sizeof(struct apic_page) == PAGE_SIZE); +/* Posted Interrupt Descriptor (described in section 29.6 of the Intel SDM) */ +struct pir_desc { + uint64_t pir[4]; + uint64_t pending; + uint64_t unused[3]; +} __aligned(64); +CTASSERT(sizeof(struct pir_desc) == 64); + /* virtual machine softc */ struct vmx { struct vmcs vmcs[VM_MAXCPU]; /* one vmcs per virtual cpu */ struct apic_page apic_page[VM_MAXCPU]; /* one apic page per vcpu */ char msr_bitmap[PAGE_SIZE]; + struct pir_desc pir_desc[VM_MAXCPU]; struct msr_entry guest_msrs[VM_MAXCPU][GUEST_MSR_MAX_ENTRIES]; struct vmxctx ctx[VM_MAXCPU]; struct vmxcap cap[VM_MAXCPU]; @@ -108,6 +117,7 @@ struct vmx { CTASSERT((offsetof(struct vmx, vmcs) & PAGE_MASK) == 0); CTASSERT((offsetof(struct vmx, msr_bitmap) & PAGE_MASK) == 0); CTASSERT((offsetof(struct vmx, guest_msrs) & 15) == 0); +CTASSERT((offsetof(struct vmx, pir_desc[0]) & 63) == 0); #define VMX_GUEST_VMEXIT 0 #define VMX_VMRESUME_ERROR 1 From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 06:35:30 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6031679C; Sat, 11 Jan 2014 06:35:30 +0000 (UTC) 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 4C397168A; Sat, 11 Jan 2014 06:35: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 s0B6ZUeu009403; Sat, 11 Jan 2014 06:35:30 GMT (envelope-from jhibbits@svn.freebsd.org) Received: (from jhibbits@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B6ZTD2009401; Sat, 11 Jan 2014 06:35:29 GMT (envelope-from jhibbits@svn.freebsd.org) Message-Id: <201401110635.s0B6ZTD2009401@svn.freebsd.org> From: Justin Hibbits Date: Sat, 11 Jan 2014 06:35:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260533 - head/sys/powerpc/powermac X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 06:35:30 -0000 Author: jhibbits Date: Sat Jan 11 06:35:29 2014 New Revision: 260533 URL: http://svnweb.freebsd.org/changeset/base/260533 Log: Save and restore the GPIOs on the macio for suspend/resume. Modified: head/sys/powerpc/powermac/macgpio.c head/sys/powerpc/powermac/macgpiovar.h Modified: head/sys/powerpc/powermac/macgpio.c ============================================================================== --- head/sys/powerpc/powermac/macgpio.c Sat Jan 11 04:22:00 2014 (r260532) +++ head/sys/powerpc/powermac/macgpio.c Sat Jan 11 06:35:29 2014 (r260533) @@ -59,6 +59,9 @@ struct macgpio_softc { phandle_t sc_node; struct resource *sc_gpios; int sc_gpios_rid; + uint32_t sc_saved_gpio_levels[2]; + uint32_t sc_saved_gpios[GPIO_COUNT]; + uint32_t sc_saved_extint_gpios[GPIO_EXTINT_COUNT]; }; static MALLOC_DEFINE(M_MACGPIO, "macgpio", "macgpio device information"); @@ -74,6 +77,8 @@ static int macgpio_activate_resource(dev static int macgpio_deactivate_resource(device_t, device_t, int, int, struct resource *); static ofw_bus_get_devinfo_t macgpio_get_devinfo; +static int macgpio_suspend(device_t dev); +static int macgpio_resume(device_t dev); /* * Bus interface definition @@ -84,8 +89,8 @@ static device_method_t macgpio_methods[] DEVMETHOD(device_attach, macgpio_attach), DEVMETHOD(device_detach, bus_generic_detach), DEVMETHOD(device_shutdown, bus_generic_shutdown), - DEVMETHOD(device_suspend, bus_generic_suspend), - DEVMETHOD(device_resume, bus_generic_resume), + DEVMETHOD(device_suspend, macgpio_suspend), + DEVMETHOD(device_resume, macgpio_resume), /* Bus interface */ DEVMETHOD(bus_print_child, macgpio_print_child), @@ -361,3 +366,38 @@ macgpio_get_devinfo(device_t dev, device return (&dinfo->mdi_obdinfo); } +static int +macgpio_suspend(device_t dev) +{ + struct macgpio_softc *sc; + int i; + + sc = device_get_softc(dev); + sc->sc_saved_gpio_levels[0] = bus_read_4(sc->sc_gpios, GPIO_LEVELS_0); + sc->sc_saved_gpio_levels[1] = bus_read_4(sc->sc_gpios, GPIO_LEVELS_1); + + for (i = 0; i < GPIO_COUNT; i++) + sc->sc_saved_gpios[i] = bus_read_1(sc->sc_gpios, GPIO_BASE + i); + for (i = 0; i < GPIO_EXTINT_COUNT; i++) + sc->sc_saved_extint_gpios[i] = bus_read_1(sc->sc_gpios, GPIO_EXTINT_BASE + i); + + return (0); +} + +static int +macgpio_resume(device_t dev) +{ + struct macgpio_softc *sc; + int i; + + sc = device_get_softc(dev); + bus_write_4(sc->sc_gpios, GPIO_LEVELS_0, sc->sc_saved_gpio_levels[0]); + bus_write_4(sc->sc_gpios, GPIO_LEVELS_1, sc->sc_saved_gpio_levels[1]); + + for (i = 0; i < GPIO_COUNT; i++) + bus_write_1(sc->sc_gpios, GPIO_BASE + i, sc->sc_saved_gpios[i]); + for (i = 0; i < GPIO_EXTINT_COUNT; i++) + bus_write_1(sc->sc_gpios, GPIO_EXTINT_BASE + i, sc->sc_saved_extint_gpios[i]); + + return (0); +} Modified: head/sys/powerpc/powermac/macgpiovar.h ============================================================================== --- head/sys/powerpc/powermac/macgpiovar.h Sat Jan 11 04:22:00 2014 (r260532) +++ head/sys/powerpc/powermac/macgpiovar.h Sat Jan 11 06:35:29 2014 (r260533) @@ -32,6 +32,12 @@ #define GPIO_EXTINT_BASE 0x08 #define GPIO_BASE 0x1a +#define GPIO_EXTINT_COUNT 0x12 +#define GPIO_COUNT 0x11 + +#define GPIO_LEVELS_0 0x50 +#define GPIO_LEVELS_1 0x54 + /* gpio bit definitions */ #define GPIO_DATA 0x01 /* GPIO data */ #define GPIO_LEVEL_RO 0x02 /* read-only level on pin */ From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 07:53:03 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id E21E0CC6; Sat, 11 Jan 2014 07:53:03 +0000 (UTC) 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 CDA461AD9; Sat, 11 Jan 2014 07:53: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 s0B7r3PM037909; Sat, 11 Jan 2014 07:53:03 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B7r3hD037907; Sat, 11 Jan 2014 07:53:03 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401110753.s0B7r3hD037907@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 11 Jan 2014 07:53:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260534 - in head/sys/dev/usb: net serial X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 07:53:04 -0000 Author: hselasky Date: Sat Jan 11 07:53:03 2014 New Revision: 260534 URL: http://svnweb.freebsd.org/changeset/base/260534 Log: Move USB ID from u3g driver to uhso driver. Submitted by: Lundberg, Johannes MFC after: 1 week Modified: head/sys/dev/usb/net/uhso.c head/sys/dev/usb/serial/u3g.c Modified: head/sys/dev/usb/net/uhso.c ============================================================================== --- head/sys/dev/usb/net/uhso.c Sat Jan 11 06:35:29 2014 (r260533) +++ head/sys/dev/usb/net/uhso.c Sat Jan 11 07:53:03 2014 (r260534) @@ -269,6 +269,8 @@ static const STRUCT_USB_HOST_ID uhso_dev UHSO_DEV(OPTION, ICON401, UHSO_AUTO_IFACE), /* Option GlobeTrotter Module 382 */ UHSO_DEV(OPTION, GMT382, UHSO_AUTO_IFACE), + /* Option GTM661W */ + UHSO_DEV(OPTION, GTM661W, UHSO_AUTO_IFACE), /* Option iCON EDGE */ UHSO_DEV(OPTION, ICONEDGE, UHSO_STATIC_IFACE), /* Option Module HSxPA */ Modified: head/sys/dev/usb/serial/u3g.c ============================================================================== --- head/sys/dev/usb/serial/u3g.c Sat Jan 11 06:35:29 2014 (r260533) +++ head/sys/dev/usb/serial/u3g.c Sat Jan 11 07:53:03 2014 (r260534) @@ -388,7 +388,6 @@ static const STRUCT_USB_HOST_ID u3g_devs U3G_DEV(OPTION, GTMAXHSUPA, 0), U3G_DEV(OPTION, GTMAXHSUPAE, 0), U3G_DEV(OPTION, VODAFONEMC3G, 0), - U3G_DEV(OPTION, GTM661W, 0), U3G_DEV(QISDA, H20_1, 0), U3G_DEV(QISDA, H20_2, 0), U3G_DEV(QISDA, H21_1, 0), From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 08:10:01 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CC99533F; Sat, 11 Jan 2014 08:10:01 +0000 (UTC) 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 B85C41C92; Sat, 11 Jan 2014 08: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 s0B8A176043152; Sat, 11 Jan 2014 08:10:01 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B8A1kI043150; Sat, 11 Jan 2014 08:10:01 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401110810.s0B8A1kI043150@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 11 Jan 2014 08:10:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260535 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 08:10:01 -0000 Author: hselasky Date: Sat Jan 11 08:10:01 2014 New Revision: 260535 URL: http://svnweb.freebsd.org/changeset/base/260535 Log: Force clearing of event ring interrupts. The "Intel Lynx Point" XHCI controller found in the MBP2013 has been observed to not work properly unless this operation is performed. MFC after: 1 week Tested by: Huang Wen Hui Modified: head/sys/dev/usb/controller/xhci.c Modified: head/sys/dev/usb/controller/xhci.c ============================================================================== --- head/sys/dev/usb/controller/xhci.c Sat Jan 11 07:53:03 2014 (r260534) +++ head/sys/dev/usb/controller/xhci.c Sat Jan 11 08:10:01 2014 (r260535) @@ -1578,6 +1578,7 @@ void xhci_interrupt(struct xhci_softc *sc) { uint32_t status; + uint32_t temp; USB_BUS_LOCK(&sc->sc_bus); @@ -1588,6 +1589,12 @@ xhci_interrupt(struct xhci_softc *sc) XWRITE4(sc, oper, XHCI_USBSTS, status); DPRINTFN(16, "real interrupt (status=0x%08x)\n", status); + + temp = XREAD4(sc, runt, XHCI_IMAN(0)); + + /* force clearing of pending interrupts */ + if (temp & XHCI_IMAN_INTR_PEND) + XWRITE4(sc, runt, XHCI_IMAN(0), temp); /* check for event(s) */ xhci_interrupt_poll(sc); From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 08:16:32 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 7428768C; Sat, 11 Jan 2014 08:16:32 +0000 (UTC) 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 5F18F1D10; Sat, 11 Jan 2014 08:16: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 s0B8GW29046726; Sat, 11 Jan 2014 08:16:32 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B8GWNU046725; Sat, 11 Jan 2014 08:16:32 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401110816.s0B8GWNU046725@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 11 Jan 2014 08:16:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260536 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 08:16:32 -0000 Author: hselasky Date: Sat Jan 11 08:16:31 2014 New Revision: 260536 URL: http://svnweb.freebsd.org/changeset/base/260536 Log: Optimise interrupt logic. Technically writing a zero to the XHCI USB status register has no effect. Can happen when the interrupt vector is shared. MFC after: 1 week Modified: head/sys/dev/usb/controller/xhci.c Modified: head/sys/dev/usb/controller/xhci.c ============================================================================== --- head/sys/dev/usb/controller/xhci.c Sat Jan 11 08:10:01 2014 (r260535) +++ head/sys/dev/usb/controller/xhci.c Sat Jan 11 08:16:31 2014 (r260536) @@ -1584,11 +1584,11 @@ xhci_interrupt(struct xhci_softc *sc) status = XREAD4(sc, oper, XHCI_USBSTS); - /* acknowledge interrupts */ - - XWRITE4(sc, oper, XHCI_USBSTS, status); - - DPRINTFN(16, "real interrupt (status=0x%08x)\n", status); + /* acknowledge interrupts, if any */ + if (status != 0) { + XWRITE4(sc, oper, XHCI_USBSTS, status); + DPRINTFN(16, "real interrupt (status=0x%08x)\n", status); + } temp = XREAD4(sc, runt, XHCI_IMAN(0)); From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 08:21:14 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 911BD8AF; Sat, 11 Jan 2014 08:21:14 +0000 (UTC) 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 7C2F71D21; Sat, 11 Jan 2014 08:21: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 s0B8LEXH049925; Sat, 11 Jan 2014 08:21:14 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B8LEC4049924; Sat, 11 Jan 2014 08:21:14 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401110821.s0B8LEC4049924@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 11 Jan 2014 08:21:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260537 - stable/10/sys/dev/usb/controller X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 08:21:14 -0000 Author: hselasky Date: Sat Jan 11 08:21:13 2014 New Revision: 260537 URL: http://svnweb.freebsd.org/changeset/base/260537 Log: MFC r260184: Minor correction for the XHCI reset logic. Modified: stable/10/sys/dev/usb/controller/xhci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/10/sys/dev/usb/controller/xhci.c Sat Jan 11 08:16:31 2014 (r260536) +++ stable/10/sys/dev/usb/controller/xhci.c Sat Jan 11 08:21:13 2014 (r260537) @@ -386,8 +386,8 @@ xhci_start_controller(struct xhci_softc for (i = 0; i != 100; i++) { usb_pause_mtx(NULL, hz / 100); - temp = XREAD4(sc, oper, XHCI_USBCMD) & - (XHCI_CMD_HCRST | XHCI_STS_CNR); + temp = (XREAD4(sc, oper, XHCI_USBCMD) & XHCI_CMD_HCRST) | + (XREAD4(sc, oper, XHCI_USBSTS) & XHCI_STS_CNR); if (!temp) break; } From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 08:23:02 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A2E5A9DC; Sat, 11 Jan 2014 08:23:02 +0000 (UTC) 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 8DD9D1D7C; Sat, 11 Jan 2014 08:23: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 s0B8N2Yd050211; Sat, 11 Jan 2014 08:23:02 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B8N2jM050209; Sat, 11 Jan 2014 08:23:02 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401110823.s0B8N2jM050209@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 11 Jan 2014 08:23:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r260538 - stable/9/sys/dev/usb/controller X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 08:23:02 -0000 Author: hselasky Date: Sat Jan 11 08:23:02 2014 New Revision: 260538 URL: http://svnweb.freebsd.org/changeset/base/260538 Log: MFC r260184: Minor correction for the XHCI reset logic. Modified: stable/9/sys/dev/usb/controller/xhci.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/9/sys/dev/usb/controller/xhci.c Sat Jan 11 08:21:13 2014 (r260537) +++ stable/9/sys/dev/usb/controller/xhci.c Sat Jan 11 08:23:02 2014 (r260538) @@ -361,8 +361,8 @@ xhci_start_controller(struct xhci_softc for (i = 0; i != 100; i++) { usb_pause_mtx(NULL, hz / 100); - temp = XREAD4(sc, oper, XHCI_USBCMD) & - (XHCI_CMD_HCRST | XHCI_STS_CNR); + temp = (XREAD4(sc, oper, XHCI_USBCMD) & XHCI_CMD_HCRST) | + (XREAD4(sc, oper, XHCI_USBSTS) & XHCI_STS_CNR); if (!temp) break; } From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 08:24:53 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 12FB2B1B; Sat, 11 Jan 2014 08:24:53 +0000 (UTC) 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 F1F2C1D86; Sat, 11 Jan 2014 08:24:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0B8Oq8q050459; Sat, 11 Jan 2014 08:24:52 GMT (envelope-from hselasky@svn.freebsd.org) Received: (from hselasky@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B8Oqq5050458; Sat, 11 Jan 2014 08:24:52 GMT (envelope-from hselasky@svn.freebsd.org) Message-Id: <201401110824.s0B8Oqq5050458@svn.freebsd.org> From: Hans Petter Selasky Date: Sat, 11 Jan 2014 08:24:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r260539 - stable/8/sys/dev/usb/controller X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 08:24:53 -0000 Author: hselasky Date: Sat Jan 11 08:24:52 2014 New Revision: 260539 URL: http://svnweb.freebsd.org/changeset/base/260539 Log: MFC r260184: Minor correction for the XHCI reset logic. Modified: stable/8/sys/dev/usb/controller/xhci.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/dev/ (props changed) stable/8/sys/dev/usb/ (props changed) Modified: stable/8/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/8/sys/dev/usb/controller/xhci.c Sat Jan 11 08:23:02 2014 (r260538) +++ stable/8/sys/dev/usb/controller/xhci.c Sat Jan 11 08:24:52 2014 (r260539) @@ -361,8 +361,8 @@ xhci_start_controller(struct xhci_softc for (i = 0; i != 100; i++) { usb_pause_mtx(NULL, hz / 100); - temp = XREAD4(sc, oper, XHCI_USBCMD) & - (XHCI_CMD_HCRST | XHCI_STS_CNR); + temp = (XREAD4(sc, oper, XHCI_USBCMD) & XHCI_CMD_HCRST) | + (XREAD4(sc, oper, XHCI_USBSTS) & XHCI_STS_CNR); if (!temp) break; } From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 09:44:01 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 8406D6C5; Sat, 11 Jan 2014 09:44:01 +0000 (UTC) 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 6F67511DA; Sat, 11 Jan 2014 09:44: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 s0B9i1to080969; Sat, 11 Jan 2014 09:44:01 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0B9i10R080957; Sat, 11 Jan 2014 09:44:01 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401110944.s0B9i10R080957@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 11 Jan 2014 09:44:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260540 - in head: sbin/route 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 09:44:01 -0000 Author: melifaro Date: Sat Jan 11 09:44:00 2014 New Revision: 260540 URL: http://svnweb.freebsd.org/changeset/base/260540 Log: Bump dates in nestat(1) and route(8) man pages. Fix several small errors introduced by r260524. Suggested by: glebius MFC after: 2 weeks Modified: head/sbin/route/route.8 head/usr.bin/netstat/netstat.1 Modified: head/sbin/route/route.8 ============================================================================== --- head/sbin/route/route.8 Sat Jan 11 08:24:52 2014 (r260539) +++ head/sbin/route/route.8 Sat Jan 11 09:44:00 2014 (r260540) @@ -28,7 +28,7 @@ .\" @(#)route.8 8.3 (Berkeley) 3/19/94 .\" $FreeBSD$ .\" -.Dd October 17, 2013 +.Dd January 11, 2014 .Dt ROUTE 8 .Os .Sh NAME @@ -146,12 +146,11 @@ When the address family may is specified .Fl xns , .Fl atalk , .Fl inet6 , -.Fl 6, -.Fl inet, or -.Fl 4 +.Fl inet modifiers, only routes having destinations with addresses in the -delineated family will be deleted. Additionally, +delineated family will be deleted. +Additionally, .Fl 4 or .Fl 6 Modified: head/usr.bin/netstat/netstat.1 ============================================================================== --- head/usr.bin/netstat/netstat.1 Sat Jan 11 08:24:52 2014 (r260539) +++ head/usr.bin/netstat/netstat.1 Sat Jan 11 09:44:00 2014 (r260540) @@ -28,7 +28,7 @@ .\" @(#)netstat.1 8.8 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd October 15, 2013 +.Dd January 11, 2014 .Dt NETSTAT 1 .Os .Sh NAME From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 13:35:37 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6D445615; Sat, 11 Jan 2014 13:35:37 +0000 (UTC) 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 590F61353; Sat, 11 Jan 2014 13:35: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 s0BDZbVM070076; Sat, 11 Jan 2014 13:35:37 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BDZaFU070072; Sat, 11 Jan 2014 13:35:36 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401111335.s0BDZaFU070072@svn.freebsd.org> From: Alexander Motin Date: Sat, 11 Jan 2014 13:35:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260541 - in 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 13:35:37 -0000 Author: mav Date: Sat Jan 11 13:35:36 2014 New Revision: 260541 URL: http://svnweb.freebsd.org/changeset/base/260541 Log: Take additional reference on SCSI probe periph to cover its freeze count. Otherwise periph may be invalidated and freed before single-stepping freeze is dropped, causing use after free panic. Modified: head/sys/cam/cam_periph.c head/sys/cam/cam_periph.h head/sys/cam/cam_xpt.c head/sys/cam/scsi/scsi_xpt.c Modified: head/sys/cam/cam_periph.c ============================================================================== --- head/sys/cam/cam_periph.c Sat Jan 11 09:44:00 2014 (r260540) +++ head/sys/cam/cam_periph.c Sat Jan 11 13:35:36 2014 (r260541) @@ -376,6 +376,17 @@ cam_periph_acquire(struct cam_periph *pe } void +cam_periph_doacquire(struct cam_periph *periph) +{ + + xpt_lock_buses(); + KASSERT(periph->refcount >= 1, + ("cam_periph_doacquire() with refcount == %d", periph->refcount)); + periph->refcount++; + xpt_unlock_buses(); +} + +void cam_periph_release_locked_buses(struct cam_periph *periph) { Modified: head/sys/cam/cam_periph.h ============================================================================== --- head/sys/cam/cam_periph.h Sat Jan 11 09:44:00 2014 (r260540) +++ head/sys/cam/cam_periph.h Sat Jan 11 13:35:36 2014 (r260541) @@ -152,6 +152,7 @@ cam_status cam_periph_alloc(periph_ctor_ struct cam_periph *cam_periph_find(struct cam_path *path, char *name); int cam_periph_list(struct cam_path *, struct sbuf *); cam_status cam_periph_acquire(struct cam_periph *periph); +void cam_periph_doacquire(struct cam_periph *periph); void cam_periph_release(struct cam_periph *periph); void cam_periph_release_locked(struct cam_periph *periph); void cam_periph_release_locked_buses(struct cam_periph *periph); Modified: head/sys/cam/cam_xpt.c ============================================================================== --- head/sys/cam/cam_xpt.c Sat Jan 11 09:44:00 2014 (r260540) +++ head/sys/cam/cam_xpt.c Sat Jan 11 13:35:36 2014 (r260541) @@ -3156,9 +3156,7 @@ restart: } if (periph->flags & CAM_PERIPH_RUN_TASK) break; - xpt_lock_buses(); - periph->refcount++; /* Unconditionally acquire */ - xpt_unlock_buses(); + cam_periph_doacquire(periph); periph->flags |= CAM_PERIPH_RUN_TASK; taskqueue_enqueue(xsoftc.xpt_taskq, &periph->periph_run_task); Modified: head/sys/cam/scsi/scsi_xpt.c ============================================================================== --- head/sys/cam/scsi/scsi_xpt.c Sat Jan 11 09:44:00 2014 (r260540) +++ head/sys/cam/scsi/scsi_xpt.c Sat Jan 11 13:35:36 2014 (r260541) @@ -888,12 +888,14 @@ again: /*timeout*/60 * 1000); break; } +done: /* * We'll have to do without, let our probedone * routine finish up for us. */ start_ccb->csio.data_ptr = NULL; cam_freeze_devq(periph->path); + cam_periph_doacquire(periph); probedone(periph, start_ccb); return; } @@ -919,14 +921,7 @@ again: /*timeout*/60 * 1000); break; } - /* - * We'll have to do without, let our probedone - * routine finish up for us. - */ - start_ccb->csio.data_ptr = NULL; - cam_freeze_devq(periph->path); - probedone(periph, start_ccb); - return; + goto done; } case PROBE_SERIAL_NUM: { @@ -959,19 +954,13 @@ again: /*timeout*/60 * 1000); break; } - /* - * We'll have to do without, let our probedone - * routine finish up for us. - */ - start_ccb->csio.data_ptr = NULL; - cam_freeze_devq(periph->path); - probedone(periph, start_ccb); - return; + goto done; } default: panic("probestart: invalid action state 0x%x\n", softc->action); } start_ccb->ccb_h.flags |= CAM_DEV_QFREEZE; + cam_periph_doacquire(periph); xpt_action(start_ccb); } @@ -1122,6 +1111,7 @@ probedone(struct cam_periph *periph, uni out: /* Drop freeze taken due to CAM_DEV_QFREEZE */ cam_release_devq(path, 0, 0, 0, FALSE); + cam_periph_release_locked(periph); return; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) @@ -1697,6 +1687,7 @@ probe_device_check: CAM_DEBUG(periph->path, CAM_DEBUG_PROBE, ("Probe completed\n")); /* Drop freeze taken due to CAM_DEV_QFREEZE flag set. */ cam_release_devq(path, 0, 0, 0, FALSE); + cam_periph_release_locked(periph); cam_periph_invalidate(periph); cam_periph_release_locked(periph); } else { From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 14:03:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 41CF3969; Sat, 11 Jan 2014 14:03:05 +0000 (UTC) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 04248151F; Sat, 11 Jan 2014 14:03:03 +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 QAA28361; Sat, 11 Jan 2014 16:02:55 +0200 (EET) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1W1z9L-000Npm-3L; Sat, 11 Jan 2014 16:02:55 +0200 Message-ID: <52D14ED6.8070708@FreeBSD.org> Date: Sat, 11 Jan 2014 16:01:58 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Alexander Motin , src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org Subject: Re: svn commit: r260541 - in head/sys/cam: . scsi References: <201401111335.s0BDZaFU070072@svn.freebsd.org> In-Reply-To: <201401111335.s0BDZaFU070072@svn.freebsd.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 14:03:05 -0000 on 11/01/2014 15:35 Alexander Motin said the following: > Author: mav > Date: Sat Jan 11 13:35:36 2014 > New Revision: 260541 > URL: http://svnweb.freebsd.org/changeset/base/260541 > > Log: > Take additional reference on SCSI probe periph to cover its freeze count. > > Otherwise periph may be invalidated and freed before single-stepping freeze > is dropped, causing use after free panic. Alexander, do you think that this change will help with the panic like the following? It occurred after I pulled out a flaky USB card reader that seemed to be in the middle of probing attempts. The fault is a result of trying to lock a destroyed mutex. Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00 fault virtual address = 0x378 fault code = supervisor read data, page not present instruction pointer = 0x20:0xffffffff805858a0 stack pointer = 0x28:0xfffffe01de3ffa70 frame pointer = 0x28:0xfffffe01de3ffb00 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 3 (doneq0) trap number = 12 panic: page fault cpuid = 0 curthread: 0xfffff800112634c0 stack: 0xfffffe01de3fc000 - 0xfffffe01de400000 stack pointer: 0xfffffe01de3ff678 KDB: stack backtrace: db_trace_self_wrapper() at 0xffffffff803adceb = db_trace_self_wrapper+0x2b/frame 0xfffffe01de3ff560 kdb_backtrace() at 0xffffffff805cbdc9 = kdb_backtrace+0x39/frame 0xfffffe01de3ff610 panic() at 0xffffffff80597783 = panic+0x1a3/frame 0xfffffe01de3ff690 trap_fatal() at 0xffffffff8074c9c2 = trap_fatal+0x3a2/frame 0xfffffe01de3ff6f0 trap_pfault() at 0xffffffff8074cbff = trap_pfault+0x22f/frame 0xfffffe01de3ff790 trap() at 0xffffffff8074c42b = trap+0x5bb/frame 0xfffffe01de3ff9b0 calltrap() at 0xffffffff80733b82 = calltrap+0x8/frame 0xfffffe01de3ff9b0 --- trap 0xc, rip = 0xffffffff805858a0, rsp = 0xfffffe01de3ffa70, rbp = 0xfffffe01de3ffb00 --- __mtx_lock_sleep() at 0xffffffff805858a0 = __mtx_lock_sleep+0x1c0/frame 0xfffffe01de3ffb00 __mtx_lock_flags() at 0xffffffff805856c3 = __mtx_lock_flags+0x63/frame 0xfffffe01de3ffb20 xpt_done_process() at 0xffffffff8029e9ea = xpt_done_process+0x50a/frame 0xfffffe01de3ffb60 xpt_done_td() at 0xffffffff802a1896 = xpt_done_td+0x136/frame 0xfffffe01de3ffbb0 fork_exit() at 0xffffffff8056d241 = fork_exit+0x71/frame 0xfffffe01de3ffbf0 fork_trampoline() at 0xffffffff807340be = fork_trampoline+0xe/frame 0xfffffe01de3ffbf0 > Modified: > head/sys/cam/cam_periph.c > head/sys/cam/cam_periph.h > head/sys/cam/cam_xpt.c > head/sys/cam/scsi/scsi_xpt.c > > Modified: head/sys/cam/cam_periph.c > ============================================================================== > --- head/sys/cam/cam_periph.c Sat Jan 11 09:44:00 2014 (r260540) > +++ head/sys/cam/cam_periph.c Sat Jan 11 13:35:36 2014 (r260541) > @@ -376,6 +376,17 @@ cam_periph_acquire(struct cam_periph *pe > } > > void > +cam_periph_doacquire(struct cam_periph *periph) > +{ > + > + xpt_lock_buses(); > + KASSERT(periph->refcount >= 1, > + ("cam_periph_doacquire() with refcount == %d", periph->refcount)); > + periph->refcount++; > + xpt_unlock_buses(); > +} > + > +void > cam_periph_release_locked_buses(struct cam_periph *periph) > { > > > Modified: head/sys/cam/cam_periph.h > ============================================================================== > --- head/sys/cam/cam_periph.h Sat Jan 11 09:44:00 2014 (r260540) > +++ head/sys/cam/cam_periph.h Sat Jan 11 13:35:36 2014 (r260541) > @@ -152,6 +152,7 @@ cam_status cam_periph_alloc(periph_ctor_ > struct cam_periph *cam_periph_find(struct cam_path *path, char *name); > int cam_periph_list(struct cam_path *, struct sbuf *); > cam_status cam_periph_acquire(struct cam_periph *periph); > +void cam_periph_doacquire(struct cam_periph *periph); > void cam_periph_release(struct cam_periph *periph); > void cam_periph_release_locked(struct cam_periph *periph); > void cam_periph_release_locked_buses(struct cam_periph *periph); > > Modified: head/sys/cam/cam_xpt.c > ============================================================================== > --- head/sys/cam/cam_xpt.c Sat Jan 11 09:44:00 2014 (r260540) > +++ head/sys/cam/cam_xpt.c Sat Jan 11 13:35:36 2014 (r260541) > @@ -3156,9 +3156,7 @@ restart: > } > if (periph->flags & CAM_PERIPH_RUN_TASK) > break; > - xpt_lock_buses(); > - periph->refcount++; /* Unconditionally acquire */ > - xpt_unlock_buses(); > + cam_periph_doacquire(periph); > periph->flags |= CAM_PERIPH_RUN_TASK; > taskqueue_enqueue(xsoftc.xpt_taskq, > &periph->periph_run_task); > > Modified: head/sys/cam/scsi/scsi_xpt.c > ============================================================================== > --- head/sys/cam/scsi/scsi_xpt.c Sat Jan 11 09:44:00 2014 (r260540) > +++ head/sys/cam/scsi/scsi_xpt.c Sat Jan 11 13:35:36 2014 (r260541) > @@ -888,12 +888,14 @@ again: > /*timeout*/60 * 1000); > break; > } > +done: > /* > * We'll have to do without, let our probedone > * routine finish up for us. > */ > start_ccb->csio.data_ptr = NULL; > cam_freeze_devq(periph->path); > + cam_periph_doacquire(periph); > probedone(periph, start_ccb); > return; > } > @@ -919,14 +921,7 @@ again: > /*timeout*/60 * 1000); > break; > } > - /* > - * We'll have to do without, let our probedone > - * routine finish up for us. > - */ > - start_ccb->csio.data_ptr = NULL; > - cam_freeze_devq(periph->path); > - probedone(periph, start_ccb); > - return; > + goto done; > } > case PROBE_SERIAL_NUM: > { > @@ -959,19 +954,13 @@ again: > /*timeout*/60 * 1000); > break; > } > - /* > - * We'll have to do without, let our probedone > - * routine finish up for us. > - */ > - start_ccb->csio.data_ptr = NULL; > - cam_freeze_devq(periph->path); > - probedone(periph, start_ccb); > - return; > + goto done; > } > default: > panic("probestart: invalid action state 0x%x\n", softc->action); > } > start_ccb->ccb_h.flags |= CAM_DEV_QFREEZE; > + cam_periph_doacquire(periph); > xpt_action(start_ccb); > } > > @@ -1122,6 +1111,7 @@ probedone(struct cam_periph *periph, uni > out: > /* Drop freeze taken due to CAM_DEV_QFREEZE */ > cam_release_devq(path, 0, 0, 0, FALSE); > + cam_periph_release_locked(periph); > return; > } > else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) > @@ -1697,6 +1687,7 @@ probe_device_check: > CAM_DEBUG(periph->path, CAM_DEBUG_PROBE, ("Probe completed\n")); > /* Drop freeze taken due to CAM_DEV_QFREEZE flag set. */ > cam_release_devq(path, 0, 0, 0, FALSE); > + cam_periph_release_locked(periph); > cam_periph_invalidate(periph); > cam_periph_release_locked(periph); > } else { > -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 14:07:13 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id D8A55BB9; Sat, 11 Jan 2014 14:07:12 +0000 (UTC) Received: from mail-ea0-x232.google.com (mail-ea0-x232.google.com [IPv6:2a00:1450:4013:c01::232]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F0C45153D; Sat, 11 Jan 2014 14:07:11 +0000 (UTC) Received: by mail-ea0-f178.google.com with SMTP id d10so2491752eaj.37 for ; Sat, 11 Jan 2014 06:07:10 -0800 (PST) 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:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=T4QPxLR1B5mpIC4vpFw50ENv70MY/Cj/W8WoPJSdYcc=; b=YNGfE7nFr1BZGSUm6zSAnYOklLwCOLXiSUagPyEV+feu4jtjnfELAauV7Jd1XznTMQ qCWg9pf1ltcpzSOOeUt8CpNHK+EeoDtv7qKwXYC75tDyzxk1pT0QNtgphddG9Q+E6u2Z mws4WNEQ7dpqr5icTjpDDgyXt9/ER+oPcZ9Zj5bR7egfERJBrKe3Gl8Pdlzaev+BgbUy jvQSIy3Rf5U1DTBoYs8gCqEULt3FL83x5sa3FLZ5LtlFpwhpIl1ebi39nAy1fzOU5VR0 gguGv/qtJGrKMXtGmXa0TSuyu4zWl93loECfSSlZfjNOIhnfRgL/7MoFN92IuG7D/J7H TALA== X-Received: by 10.14.176.195 with SMTP id b43mr15622842eem.39.1389449230369; Sat, 11 Jan 2014 06:07:10 -0800 (PST) Received: from mavbook.mavhome.dp.ua ([134.249.139.101]) by mx.google.com with ESMTPSA id e43sm23112153eep.7.2014.01.11.06.07.08 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 11 Jan 2014 06:07:09 -0800 (PST) Sender: Alexander Motin Message-ID: <52D1500B.4020007@FreeBSD.org> Date: Sat, 11 Jan 2014 16:07:07 +0200 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Andriy Gapon , src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org Subject: Re: svn commit: r260541 - in head/sys/cam: . scsi References: <201401111335.s0BDZaFU070072@svn.freebsd.org> <52D14ED6.8070708@FreeBSD.org> In-Reply-To: <52D14ED6.8070708@FreeBSD.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 14:07:13 -0000 On 11.01.2014 16:01, Andriy Gapon wrote: > on 11/01/2014 15:35 Alexander Motin said the following: >> Author: mav >> Date: Sat Jan 11 13:35:36 2014 >> New Revision: 260541 >> URL: http://svnweb.freebsd.org/changeset/base/260541 >> >> Log: >> Take additional reference on SCSI probe periph to cover its freeze count. >> >> Otherwise periph may be invalidated and freed before single-stepping freeze >> is dropped, causing use after free panic. > > Alexander, > > do you think that this change will help with the panic like the following? > It occurred after I pulled out a flaky USB card reader that seemed to be in the > middle of probing attempts. The fault is a result of trying to lock a destroyed > mutex. No, I think that is different issue. > Fatal trap 12: page fault while in kernel mode > cpuid = 0; apic id = 00 > fault virtual address = 0x378 > fault code = supervisor read data, page not present > instruction pointer = 0x20:0xffffffff805858a0 > stack pointer = 0x28:0xfffffe01de3ffa70 > frame pointer = 0x28:0xfffffe01de3ffb00 > code segment = base 0x0, limit 0xfffff, type 0x1b > = DPL 0, pres 1, long 1, def32 0, gran 1 > processor eflags = interrupt enabled, resume, IOPL = 0 > current process = 3 (doneq0) > trap number = 12 > panic: page fault > cpuid = 0 > curthread: 0xfffff800112634c0 > stack: 0xfffffe01de3fc000 - 0xfffffe01de400000 > stack pointer: 0xfffffe01de3ff678 > KDB: stack backtrace: > db_trace_self_wrapper() at 0xffffffff803adceb = db_trace_self_wrapper+0x2b/frame > 0xfffffe01de3ff560 > kdb_backtrace() at 0xffffffff805cbdc9 = kdb_backtrace+0x39/frame 0xfffffe01de3ff610 > panic() at 0xffffffff80597783 = panic+0x1a3/frame 0xfffffe01de3ff690 > trap_fatal() at 0xffffffff8074c9c2 = trap_fatal+0x3a2/frame 0xfffffe01de3ff6f0 > trap_pfault() at 0xffffffff8074cbff = trap_pfault+0x22f/frame 0xfffffe01de3ff790 > trap() at 0xffffffff8074c42b = trap+0x5bb/frame 0xfffffe01de3ff9b0 > calltrap() at 0xffffffff80733b82 = calltrap+0x8/frame 0xfffffe01de3ff9b0 > --- trap 0xc, rip = 0xffffffff805858a0, rsp = 0xfffffe01de3ffa70, rbp = > 0xfffffe01de3ffb00 --- > __mtx_lock_sleep() at 0xffffffff805858a0 = __mtx_lock_sleep+0x1c0/frame > 0xfffffe01de3ffb00 > __mtx_lock_flags() at 0xffffffff805856c3 = __mtx_lock_flags+0x63/frame > 0xfffffe01de3ffb20 > xpt_done_process() at 0xffffffff8029e9ea = xpt_done_process+0x50a/frame > 0xfffffe01de3ffb60 > xpt_done_td() at 0xffffffff802a1896 = xpt_done_td+0x136/frame 0xfffffe01de3ffbb0 > fork_exit() at 0xffffffff8056d241 = fork_exit+0x71/frame 0xfffffe01de3ffbf0 > fork_trampoline() at 0xffffffff807340be = fork_trampoline+0xe/frame > 0xfffffe01de3ffbf0 Could you please resolve xpt_done_process+0x50a ? -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 14:18:46 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 99631EE4; Sat, 11 Jan 2014 14:18:46 +0000 (UTC) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 56FC115F1; Sat, 11 Jan 2014 14:18:44 +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 QAA28518; Sat, 11 Jan 2014 16:18:43 +0200 (EET) (envelope-from avg@FreeBSD.org) Received: from localhost ([127.0.0.1]) by porto.starpoint.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1W1zOb-000Nql-HI; Sat, 11 Jan 2014 16:18:43 +0200 Message-ID: <52D15286.1000707@FreeBSD.org> Date: Sat, 11 Jan 2014 16:17:42 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Alexander Motin , src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org Subject: Re: svn commit: r260541 - in head/sys/cam: . scsi References: <201401111335.s0BDZaFU070072@svn.freebsd.org> <52D14ED6.8070708@FreeBSD.org> <52D1500B.4020007@FreeBSD.org> In-Reply-To: <52D1500B.4020007@FreeBSD.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 14:18:46 -0000 on 11/01/2014 16:07 Alexander Motin said the following: > Could you please resolve xpt_done_process+0x50a ? Sure: (kgdb) fr 9 #9 0xffffffff8029e9ea in xpt_done_process (ccb_h=) at /usr/src/sys/cam/cam_xpt.c:5250 5250 mtx_lock(&devq->send_mtx); (kgdb) list 5245 ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; 5246 (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); 5247 if (mtx != NULL) 5248 mtx_unlock(mtx); 5249 5250 mtx_lock(&devq->send_mtx); 5251 xpt_run_devq(devq); 5252 mtx_unlock(&devq->send_mtx); 5253 } 5254 -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 14:23:38 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 27D061B1; Sat, 11 Jan 2014 14:23:38 +0000 (UTC) Received: from mail-ee0-x235.google.com (mail-ee0-x235.google.com [IPv6:2a00:1450:4013:c00::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 3EC25165F; Sat, 11 Jan 2014 14:23:37 +0000 (UTC) Received: by mail-ee0-f53.google.com with SMTP id b57so2388190eek.12 for ; Sat, 11 Jan 2014 06:23:35 -0800 (PST) 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:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=IYGBthbVzWYICoEAl6dKrm53nECfnQd7dcRZrhZCOig=; b=jYBAxgKac7fa0sXwaEceW7jO2B43INSUgR9JMl9rkgCSr404A16s1NMkO4hTg5X4/d KNAsFa6/WvrmAMuqewwESjAwGxpnmDhE8kEv6vA+B1lgubLU7vi+/kVri2xnMrSo4LQg w+B5Mw+RZZRPrnejc85J6CY1ksvsMH1Ic5z5t0HSeW6N3MsyUcBzycOkU3ZNiAKPc9KQ bkNldoqwWofNSuLPzQTBAwhV1FEm+qoiVMu6J4iC9ksUo37cRQ+Q4CS6Mzf0pEMMAVix MxW8wlg7Mg2WAo1CrEDf29+tOnVVhwO2Sn4U0lApaWQfiMtyq3MCrA1cD31R27U9QBLE t+Kg== X-Received: by 10.15.91.3 with SMTP id r3mr16537589eez.18.1389450215732; Sat, 11 Jan 2014 06:23:35 -0800 (PST) Received: from mavbook.mavhome.dp.ua ([134.249.139.101]) by mx.google.com with ESMTPSA id p45sm23222008eeg.1.2014.01.11.06.23.33 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 11 Jan 2014 06:23:34 -0800 (PST) Sender: Alexander Motin Message-ID: <52D153E4.1000400@FreeBSD.org> Date: Sat, 11 Jan 2014 16:23:32 +0200 From: Alexander Motin User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Andriy Gapon , src-committers@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org Subject: Re: svn commit: r260541 - in head/sys/cam: . scsi References: <201401111335.s0BDZaFU070072@svn.freebsd.org> <52D14ED6.8070708@FreeBSD.org> <52D1500B.4020007@FreeBSD.org> <52D15286.1000707@FreeBSD.org> In-Reply-To: <52D15286.1000707@FreeBSD.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 14:23:38 -0000 On 11.01.2014 16:17, Andriy Gapon wrote: > on 11/01/2014 16:07 Alexander Motin said the following: >> Could you please resolve xpt_done_process+0x50a ? > > Sure: > > (kgdb) fr 9 > #9 0xffffffff8029e9ea in xpt_done_process (ccb_h=) at > /usr/src/sys/cam/cam_xpt.c:5250 > 5250 mtx_lock(&devq->send_mtx); > (kgdb) list > 5245 ccb_h->pinfo.index = CAM_UNQUEUED_INDEX; > 5246 (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); > 5247 if (mtx != NULL) > 5248 mtx_unlock(mtx); > 5249 > 5250 mtx_lock(&devq->send_mtx); > 5251 xpt_run_devq(devq); > 5252 mtx_unlock(&devq->send_mtx); > 5253 } > 5254 Thanks. I had suspicions about that part. It seems the code tries to process SIM send queue after SIM already gone. I'll think about it. -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 14:48:17 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 6AAD3669; Sat, 11 Jan 2014 14:48:17 +0000 (UTC) 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 56D38179B; Sat, 11 Jan 2014 14:48: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 s0BEmHbu097992; Sat, 11 Jan 2014 14:48:17 GMT (envelope-from kevlo@svn.freebsd.org) Received: (from kevlo@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BEmHEx097991; Sat, 11 Jan 2014 14:48:17 GMT (envelope-from kevlo@svn.freebsd.org) Message-Id: <201401111448.s0BEmHEx097991@svn.freebsd.org> From: Kevin Lo Date: Sat, 11 Jan 2014 14:48:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260542 - head/sys/dev/usb/wlan X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 14:48:17 -0000 Author: kevlo Date: Sat Jan 11 14:48:16 2014 New Revision: 260542 URL: http://svnweb.freebsd.org/changeset/base/260542 Log: Fix a logic error when checking if Tx power entries are greater than 31. Modified: head/sys/dev/usb/wlan/if_run.c Modified: head/sys/dev/usb/wlan/if_run.c ============================================================================== --- head/sys/dev/usb/wlan/if_run.c Sat Jan 11 13:35:36 2014 (r260541) +++ head/sys/dev/usb/wlan/if_run.c Sat Jan 11 14:48:16 2014 (r260542) @@ -1650,12 +1650,12 @@ run_rt3593_get_txpower(struct run_softc } /* Fix broken Tx power entries. */ for (i = 0; i < 14; i++) { - if ((sc->txpow1[i] & 0x1f) > 31) + if (sc->txpow1[i] > 31) sc->txpow1[i] = 5; - if ((sc->txpow2[i] & 0x1f) > 31) + if (sc->txpow2[i] > 31) sc->txpow2[i] = 5; if (sc->ntxchains == 3) { - if ((sc->txpow3[i] & 0x1f) > 31) + if (sc->txpow3[i] > 31) sc->txpow3[i] = 5; } } From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 14:56:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 72C10865; Sat, 11 Jan 2014 14:56:05 +0000 (UTC) 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 5F136183E; Sat, 11 Jan 2014 14:56: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 s0BEu5oV001745; Sat, 11 Jan 2014 14:56:05 GMT (envelope-from riggs@svn.freebsd.org) Received: (from riggs@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BEu5qB001743; Sat, 11 Jan 2014 14:56:05 GMT (envelope-from riggs@svn.freebsd.org) Message-Id: <201401111456.s0BEu5qB001743@svn.freebsd.org> From: Thomas Zander Date: Sat, 11 Jan 2014 14:56:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260543 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 14:56:05 -0000 Author: riggs (ports committer) Date: Sat Jan 11 14:56:04 2014 New Revision: 260543 URL: http://svnweb.freebsd.org/changeset/base/260543 Log: Add myself as a ports committer Approved by: thierry (mentor) Modified: head/share/misc/committers-ports.dot Modified: head/share/misc/committers-ports.dot ============================================================================== --- head/share/misc/committers-ports.dot Sat Jan 11 14:48:16 2014 (r260542) +++ head/share/misc/committers-ports.dot Sat Jan 11 14:56:04 2014 (r260543) @@ -179,6 +179,7 @@ philip [label="Philip Paeps\nphilip@Free rafan [label="Rong-En Fan\nrafan@FreeBSD.org\n2006/06/23"] rakuco [label="Raphael Kubo da Costa\nrakuco@FreeBSD.org\n2011/08/22"] rene [label="Rene Ladan\nrene@FreeBSD.org\n2010/04/11"] +riggs [label="Thomas Zander\nriggs@FreeBSD.org\n2014/01/09"] rm [label="Ruslan Makhmatkhanov\nrm@FreeBSD.org\n2011/11/06"] rnoland [label="Robert Noland\nrnoland@FreeBSD.org\n2008/07/21"] romain [label="Romain Tartiere\nromain@FreeBSD.org\n2010/01/24"] @@ -370,6 +371,7 @@ itetcu -> sylvio jadawin -> bapt jadawin -> flo +jadawin -> riggs jadawin -> sbz jadawin -> wen @@ -532,6 +534,7 @@ tabthorpe -> zi tabthorpe -> gblach thierry -> jadawin +thierry -> riggs tmclaugh -> itetcu tmclaugh -> xride From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 15:01:31 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0B37C9D3; Sat, 11 Jan 2014 15:01:31 +0000 (UTC) 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 EBE5818B6; Sat, 11 Jan 2014 15:01: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 s0BF1Uan005173; Sat, 11 Jan 2014 15:01:30 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BF1U3x005172; Sat, 11 Jan 2014 15:01:30 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201401111501.s0BF1U3x005172@svn.freebsd.org> From: Adrian Chadd Date: Sat, 11 Jan 2014 15:01:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260544 - head/bin/cat X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 15:01:31 -0000 Author: adrian Date: Sat Jan 11 15:01:30 2014 New Revision: 260544 URL: http://svnweb.freebsd.org/changeset/base/260544 Log: Close the newly-created FD if the pathname is too long. Coverity: CID 1007204 Sponsored by: Netflix, Inc. Modified: head/bin/cat/cat.c Modified: head/bin/cat/cat.c ============================================================================== --- head/bin/cat/cat.c Sat Jan 11 14:56:04 2014 (r260543) +++ head/bin/cat/cat.c Sat Jan 11 15:01:30 2014 (r260544) @@ -316,6 +316,7 @@ udom_open(const char *path, int flags) sou.sun_family = AF_UNIX; if ((len = strlcpy(sou.sun_path, path, sizeof(sou.sun_path))) >= sizeof(sou.sun_path)) { + close(fd); errno = ENAMETOOLONG; return (-1); } From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 15:19:05 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 08E65EA0; Sat, 11 Jan 2014 15:19:05 +0000 (UTC) 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 E923B198D; Sat, 11 Jan 2014 15:19: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 s0BFJ4ta010750; Sat, 11 Jan 2014 15:19:04 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BFJ4GR010749; Sat, 11 Jan 2014 15:19:04 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201401111519.s0BFJ4GR010749@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sat, 11 Jan 2014 15:19:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260545 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 15:19:05 -0000 Author: pfg Date: Sat Jan 11 15:19:04 2014 New Revision: 260545 URL: http://svnweb.freebsd.org/changeset/base/260545 Log: ext2fs: fix inode flag conversion. After r252890 we are naively attempting to pass through the inode flags. This is technically incorrect as the ext2 inode flags don't match the UFS/system values used in FreeBSD and a clean conversion is needed. Some filtering was left in place so the change didn't cause significant changes in FreeBSD but some of the garbage passed is likely to be the cause for warning messages in linux. Fix the issue by resetting the flags before conversion as was done previously. This also means we will not pass the EXT4_* inode flags into FreeBSD's inode. PR: kern/185448 MFC after: 3 days Modified: head/sys/fs/ext2fs/ext2_inode_cnv.c Modified: head/sys/fs/ext2fs/ext2_inode_cnv.c ============================================================================== --- head/sys/fs/ext2fs/ext2_inode_cnv.c Sat Jan 11 15:01:30 2014 (r260544) +++ head/sys/fs/ext2fs/ext2_inode_cnv.c Sat Jan 11 15:19:04 2014 (r260545) @@ -104,7 +104,7 @@ ext2_ei2i(struct ext2fs_dinode *ei, stru ip->i_birthtime = ei->e2di_crtime; ip->i_birthnsec = XTIME_TO_NSEC(ei->e2di_crtime_extra); } - ip->i_flags = ei->e2di_flags; + ip->i_flags = 0; ip->i_flags |= (ei->e2di_flags & EXT2_APPEND) ? SF_APPEND : 0; ip->i_flags |= (ei->e2di_flags & EXT2_IMMUTABLE) ? SF_IMMUTABLE : 0; ip->i_flags |= (ei->e2di_flags & EXT2_NODUMP) ? UF_NODUMP : 0; @@ -152,7 +152,7 @@ ext2_i2ei(struct inode *ip, struct ext2f ei->e2di_crtime = ip->i_birthtime; ei->e2di_crtime_extra = NSEC_TO_XTIME(ip->i_birthnsec); } - ei->e2di_flags = ip->i_flags; + ei->e2di_flags = 0; 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; From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 16:37:21 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 38FA7DDB; Sat, 11 Jan 2014 16:37:21 +0000 (UTC) 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 197601F15; Sat, 11 Jan 2014 16:37: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 s0BGbK6n042765; Sat, 11 Jan 2014 16:37:20 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BGbKr6042764; Sat, 11 Jan 2014 16:37:20 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401111637.s0BGbKr6042764@svn.freebsd.org> From: Alexander Motin Date: Sat, 11 Jan 2014 16:37:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260547 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 16:37:21 -0000 Author: mav Date: Sat Jan 11 16:37:20 2014 New Revision: 260547 URL: http://svnweb.freebsd.org/changeset/base/260547 Log: Fix for r260541: do not drop periph reference when request is restarted. CAM_DEV_QFREEZE flag is still there and it will freeze device again. Modified: head/sys/cam/scsi/scsi_xpt.c Modified: head/sys/cam/scsi/scsi_xpt.c ============================================================================== --- head/sys/cam/scsi/scsi_xpt.c Sat Jan 11 15:38:31 2014 (r260546) +++ head/sys/cam/scsi/scsi_xpt.c Sat Jan 11 16:37:20 2014 (r260547) @@ -1108,10 +1108,9 @@ probedone(struct cam_periph *periph, uni if (cam_periph_error(done_ccb, 0, SF_NO_PRINT, NULL) == ERESTART) { -out: +outr: /* Drop freeze taken due to CAM_DEV_QFREEZE */ cam_release_devq(path, 0, 0, 0, FALSE); - cam_periph_release_locked(periph); return; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) @@ -1123,7 +1122,11 @@ out: PROBE_SET_ACTION(softc, PROBE_INQUIRY); xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); - goto out; +out: + /* Drop freeze taken due to CAM_DEV_QFREEZE and release. */ + cam_release_devq(path, 0, 0, 0, FALSE); + cam_periph_release_locked(periph); + return; } case PROBE_INQUIRY: case PROBE_FULL_INQUIRY: @@ -1210,7 +1213,7 @@ out: ? SF_RETRY_UA|SF_QUIET_IR : SF_RETRY_UA, &softc->saved_ccb) == ERESTART) { - goto out; + goto outr; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { /* Don't wedge the queue */ xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, @@ -1251,7 +1254,7 @@ out: done_ccb->ccb_h.target_lun > 0 ? SF_RETRY_UA|SF_QUIET_IR : SF_RETRY_UA, &softc->saved_ccb) == ERESTART) { - goto out; + goto outr; } if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { xpt_release_devq(done_ccb->ccb_h.path, 1, @@ -1361,7 +1364,7 @@ out: } else if (cam_periph_error(done_ccb, 0, SF_RETRY_UA|SF_NO_PRINT, &softc->saved_ccb) == ERESTART) { - goto out; + goto outr; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { /* Don't wedge the queue */ xpt_release_devq(done_ccb->ccb_h.path, @@ -1404,7 +1407,7 @@ out: } else if (cam_periph_error(done_ccb, 0, SF_RETRY_UA|SF_NO_PRINT, &softc->saved_ccb) == ERESTART) { - goto out; + goto outr; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { /* Don't wedge the queue */ xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, @@ -1449,7 +1452,7 @@ out: } else if (cam_periph_error(done_ccb, 0, SF_RETRY_UA, &softc->saved_ccb) == ERESTART) { - goto out; + goto outr; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { /* Don't wedge the queue */ xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, @@ -1504,7 +1507,7 @@ probe_device_check: } else if (cam_periph_error(done_ccb, 0, SF_RETRY_UA|SF_NO_PRINT, &softc->saved_ccb) == ERESTART) { - goto out; + goto outr; } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { /* Don't wedge the queue */ xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 16:50:42 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 9281D100; Sat, 11 Jan 2014 16:50:42 +0000 (UTC) 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 7E79A1FC3; Sat, 11 Jan 2014 16:50: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 s0BGog0E049381; Sat, 11 Jan 2014 16:50:42 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BGoghA049380; Sat, 11 Jan 2014 16:50:42 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401111650.s0BGoghA049380@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 11 Jan 2014 16:50:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260548 - head/sys/netpfil/ipfw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 16:50:42 -0000 Author: melifaro Date: Sat Jan 11 16:50:41 2014 New Revision: 260548 URL: http://svnweb.freebsd.org/changeset/base/260548 Log: We don't need chain write lock since we're not modifying its contents. LibAliasSetAddress() uses its own mutex to serialize changes. While here, convert ifp->if_xname access to if_name() function. MFC after: 2 weeks Sponsored by: Yandex LLC Modified: head/sys/netpfil/ipfw/ip_fw_nat.c Modified: head/sys/netpfil/ipfw/ip_fw_nat.c ============================================================================== --- head/sys/netpfil/ipfw/ip_fw_nat.c Sat Jan 11 16:37:20 2014 (r260547) +++ head/sys/netpfil/ipfw/ip_fw_nat.c Sat Jan 11 16:50:41 2014 (r260548) @@ -67,11 +67,11 @@ ifaddr_change(void *arg __unused, struct KASSERT(curvnet == ifp->if_vnet, ("curvnet(%p) differs from iface vnet(%p)", curvnet, ifp->if_vnet)); chain = &V_layer3_chain; - IPFW_WLOCK(chain); + IPFW_RLOCK(chain); /* Check every nat entry... */ LIST_FOREACH(ptr, &chain->nat, _next) { /* ...using nic 'ifp->if_xname' as dynamic alias address. */ - if (strncmp(ptr->if_name, ifp->if_xname, IF_NAMESIZE) != 0) + if (strncmp(ptr->if_name, if_name(ifp), IF_NAMESIZE) != 0) continue; if_addr_rlock(ifp); TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { @@ -85,7 +85,7 @@ ifaddr_change(void *arg __unused, struct } if_addr_runlock(ifp); } - IPFW_WUNLOCK(chain); + IPFW_RUNLOCK(chain); } /* From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 16:52:10 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 25F9623D; Sat, 11 Jan 2014 16:52:10 +0000 (UTC) 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 123621029; Sat, 11 Jan 2014 16:52: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 s0BGq99U049850; Sat, 11 Jan 2014 16:52:09 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BGq9QE049849; Sat, 11 Jan 2014 16:52:09 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401111652.s0BGq9QE049849@svn.freebsd.org> From: Alexander Motin Date: Sat, 11 Jan 2014 16:52:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260549 - head/sys/cam X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 16:52:10 -0000 Author: mav Date: Sat Jan 11 16:52:09 2014 New Revision: 260549 URL: http://svnweb.freebsd.org/changeset/base/260549 Log: Move xpt_run_devq() call before request completion callback where it was originally. I am not sure why exactly have I moved it during one of many refactorings during camlock project, but obviously it opens race window that may cause use after free panics during SIM (in reported cases umass(4)) detach. MFC after: 2 weeks Modified: head/sys/cam/cam_xpt.c Modified: head/sys/cam/cam_xpt.c ============================================================================== --- head/sys/cam/cam_xpt.c Sat Jan 11 16:50:41 2014 (r260548) +++ head/sys/cam/cam_xpt.c Sat Jan 11 16:52:09 2014 (r260549) @@ -5188,8 +5188,7 @@ xpt_done_process(struct ccb_hdr *ccb_h) if ((ccb_h->flags & CAM_DEV_QFRZDIS) && (ccb_h->status & CAM_DEV_QFRZN)) { - xpt_release_devq(ccb_h->path, /*count*/1, - /*run_queue*/FALSE); + xpt_release_devq(ccb_h->path, /*count*/1, /*run_queue*/TRUE); ccb_h->status &= ~CAM_DEV_QFRZN; } @@ -5218,6 +5217,7 @@ xpt_done_process(struct ccb_hdr *ccb_h) if (!device_is_queued(dev)) (void)xpt_schedule_devq(devq, dev); + xpt_run_devq(devq); mtx_unlock(&devq->send_mtx); if ((dev->flags & CAM_DEV_TAG_AFTER_COUNT) != 0) { @@ -5247,10 +5247,6 @@ xpt_done_process(struct ccb_hdr *ccb_h) (*ccb_h->cbfcnp)(ccb_h->path->periph, (union ccb *)ccb_h); if (mtx != NULL) mtx_unlock(mtx); - - mtx_lock(&devq->send_mtx); - xpt_run_devq(devq); - mtx_unlock(&devq->send_mtx); } void From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 17:37:53 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id CA4B1D43; Sat, 11 Jan 2014 17:37:53 +0000 (UTC) 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 B615B12C7; Sat, 11 Jan 2014 17:37: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 s0BHbrP7066003; Sat, 11 Jan 2014 17:37:53 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BHbrIj066002; Sat, 11 Jan 2014 17:37:53 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201401111737.s0BHbrIj066002@svn.freebsd.org> From: Neel Natu Date: Sat, 11 Jan 2014 17:37:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260550 - head/usr.sbin/bhyvectl X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 17:37:53 -0000 Author: neel Date: Sat Jan 11 17:37:53 2014 New Revision: 260550 URL: http://svnweb.freebsd.org/changeset/base/260550 Log: Fix amd64 build breakage caused by r260532. Submitted by: Marcus Karlsson (mk@acc.umu.se) Pointy hat to: me Modified: head/usr.sbin/bhyvectl/bhyvectl.c Modified: head/usr.sbin/bhyvectl/bhyvectl.c ============================================================================== --- head/usr.sbin/bhyvectl/bhyvectl.c Sat Jan 11 16:52:09 2014 (r260549) +++ head/usr.sbin/bhyvectl/bhyvectl.c Sat Jan 11 17:37:53 2014 (r260550) @@ -1453,8 +1453,7 @@ main(int argc, char *argv[]) } if (!error && (get_vmcs_exit_interruption_info || get_all)) { - error = vm_get_vmcs_field(ctx, vcpu, - VMCS_EXIT_INTERRUPTION_INFO, &u64); + error = vm_get_vmcs_field(ctx, vcpu, VMCS_EXIT_INTR_INFO, &u64); if (error == 0) { printf("vmcs_exit_interruption_info[%d]\t0x%08lx\n", vcpu, u64); @@ -1462,8 +1461,8 @@ main(int argc, char *argv[]) } if (!error && (get_vmcs_exit_interruption_error || get_all)) { - error = vm_get_vmcs_field(ctx, vcpu, - VMCS_EXIT_INTERRUPTION_ERROR, &u64); + error = vm_get_vmcs_field(ctx, vcpu, VMCS_EXIT_INTR_ERRCODE, + &u64); if (error == 0) { printf("vmcs_exit_interruption_error[%d]\t0x%08lx\n", vcpu, u64); From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 18:27:35 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 187ACB7D; Sat, 11 Jan 2014 18:27:35 +0000 (UTC) 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 03C79166F; Sat, 11 Jan 2014 18:27: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 s0BIRYCm085684; Sat, 11 Jan 2014 18:27:34 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BIRYdV085683; Sat, 11 Jan 2014 18:27:34 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201401111827.s0BIRYdV085683@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 11 Jan 2014 18:27:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260551 - head/sys/netpfil/ipfw X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 18:27:35 -0000 Author: melifaro Date: Sat Jan 11 18:27:34 2014 New Revision: 260551 URL: http://svnweb.freebsd.org/changeset/base/260551 Log: Revert r260548. We really should not use IPFW_WLOCK() here but this requires some more playing with IPFW_UH_WLOCK(). Leave till later. Modified: head/sys/netpfil/ipfw/ip_fw_nat.c Modified: head/sys/netpfil/ipfw/ip_fw_nat.c ============================================================================== --- head/sys/netpfil/ipfw/ip_fw_nat.c Sat Jan 11 17:37:53 2014 (r260550) +++ head/sys/netpfil/ipfw/ip_fw_nat.c Sat Jan 11 18:27:34 2014 (r260551) @@ -67,11 +67,11 @@ ifaddr_change(void *arg __unused, struct KASSERT(curvnet == ifp->if_vnet, ("curvnet(%p) differs from iface vnet(%p)", curvnet, ifp->if_vnet)); chain = &V_layer3_chain; - IPFW_RLOCK(chain); + IPFW_WLOCK(chain); /* Check every nat entry... */ LIST_FOREACH(ptr, &chain->nat, _next) { /* ...using nic 'ifp->if_xname' as dynamic alias address. */ - if (strncmp(ptr->if_name, if_name(ifp), IF_NAMESIZE) != 0) + if (strncmp(ptr->if_name, ifp->if_xname, IF_NAMESIZE) != 0) continue; if_addr_rlock(ifp); TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) { @@ -85,7 +85,7 @@ ifaddr_change(void *arg __unused, struct } if_addr_runlock(ifp); } - IPFW_RUNLOCK(chain); + IPFW_WUNLOCK(chain); } /* From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 18:56:49 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 547C8174; Sat, 11 Jan 2014 18:56:49 +0000 (UTC) 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 3E7EE1857; Sat, 11 Jan 2014 18:56: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 s0BIun4Z096744; Sat, 11 Jan 2014 18:56:49 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BIunIx096742; Sat, 11 Jan 2014 18:56:49 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201401111856.s0BIunIx096742@svn.freebsd.org> From: Gavin Atkinson Date: Sat, 11 Jan 2014 18:56:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260552 - in head/sys: contrib/dev/iwn modules/iwnfw modules/iwnfw/iwn105 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 18:56:49 -0000 Author: gavin Date: Sat Jan 11 18:56:48 2014 New Revision: 260552 URL: http://svnweb.freebsd.org/changeset/base/260552 Log: Add firmware for Intel Centrino Wireless-N 105 devices. Committed from: Centrino 105 device Added: head/sys/contrib/dev/iwn/iwlwifi-105-6-18.168.6.1.fw.uu head/sys/modules/iwnfw/iwn105/ head/sys/modules/iwnfw/iwn105/Makefile (contents, props changed) Modified: head/sys/modules/iwnfw/Makefile Added: head/sys/contrib/dev/iwn/iwlwifi-105-6-18.168.6.1.fw.uu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/contrib/dev/iwn/iwlwifi-105-6-18.168.6.1.fw.uu Sat Jan 11 18:56:48 2014 (r260552) @@ -0,0 +1,12141 @@ +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-105-6-18.168.6.1.fw +AAAAAElXTAoxMDUgZncgdjE4LjE2OC42LjEgYnVpbGQgMAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAQaoEgAAAAABAAAAAAAAAAEAAABweQIAICCADwAAQABpIAAAaSBAAGkg +AABpIEAAICCADwAA6ABpIAAAaSBAAGkgAABpIEAAICCADwEAiAppIAAAaSBAAGkgAABKIAAASiEA +AEoiAABKIwAASiQAAEolAABKJgAASicAAEogABBKIQAQSiIAEEojABBKJAAQSiUAEEomABBKJwAQ +SiAAIEohACBKIgAgSiMAIEokACBKJQAgSiYAIEonACBKIAAwSiEAMAokgD+BAABAQSycMEAsnDBC +JBw0CiKAP4AACHMKIwA3BgvAB0omAHBpIEAASiYAcEomAHBKJgBwSiYAcAAWAHCAAGgcQHggIECH +AAAAAAAAAAAAAPwciLb8HEi2/BwItvwcyLX8HIi1/BxItfwcCLX8HMi0/ByItPwcSLT8HAi0/BzI +s/wciLP8HEiz4H7geATcON018OB4BNw03TPw4HgE3DDdMfDgeATcLN0v8OB4BNwo3S3w4HgE3CTd +K/DgeATcIN0p8OB4BNwc3Sfw4HgE3BjdJfDgeATcFN0j8OB4BNwQ3SHw4HgE3AzdH/DgeATcCN0c +8OB4BNwE3RnwNBQaMDAUGTAsFBgwKBQXMCQUFjAgFBUwHBQUMBgUEzAUFBIwEBQRMAwUEDACxwHG +sCRNM7AkHzPgfuB44HjgeOB44HjgeAokgPAFIEQA4CDBB0Qk/oBBKsQAhAACAC8kAvFCIQEBQiAD +AeggogQEEQQCBBEFAgQRBgIEEQcCBBsIAQQbSAEEG4gBBBvIASwAJQBEIj6BPAAiAEQi/IBAIcEA +4CDBB0AjwwCoIIABARGEAgEbCgEgIMAHBBEEAgQRBQIEGwgB1Afh/wQbSAFEIvyABBEEAskH7/8E +GwgBQiFBAEIgQwCoIIABARGEAgEbCgEgIMAHz3GgAKwvGIGauBihmQUgEwXY4HjPcaAArC8YgbO4 +urgYoYUFIBNk2AoiQIAA2e4AAQAvJgDwSiZAAE4ABgBPACAAiiX/D+B4CiJAgADZzgABAGwAJAAv +JgDwXAAFACsINQhKJkAACHEA2AIhvoDgIMUHQnkB4AIhvoDgIMUHQnnrB+//AeAvLQEAQCVFAAIm +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 +57oS9AgUAzHPdYAA0NmpcVZ5QIFQcAX0QpFwcgbyR4nnuvfzgNgD8AaJwcXgf6LA8cDPcoAAGtcy +aDZ5MWKiwUDBQcCLcAjZntoe2+4JYA4Yu6LA0cDgfuB+4HjxwAjIlbgIGhgwCcibuAkaGDALyIq4 +jbiQuAsaGDDPcIAARB4DgBiIgeAM9AvIz3EAAFAsrLgLGhgwBgkgBw/Y0cDgfvHA4cUIdT6Iz3CA +ALATQIBAJQAUA7k1eVlhNg/gDgramg/v/6lwEQLP/uB48cClwUHAQsEMHAAxEBxAMc9xgAB8ljQZ +wA8wGQAPLBnADigZgA4kGUAOz3CAAHyWIBhAC89wgAB8lhwYAAvPcIAAfJYYGMAKz3CAAHyWFBiA +Cs9wgAB8lhAYwAjPcIAAfJYMGIAIz3CAAHyWCBhACM9xgAAAloAZAAh8GcAHeBmAB3QZQAdwGQAH +bBkAB2gZgAZkGUAGYBkABlwZwAVYGYAFVBlABVAZAAVMGcAESBmABEQZQARAGQAE76HOoa2hjKEs +GcACKBmAAiQZQAIgGQACHBnAARgZgAEUGUABEBkAAWOhaiAAA9gZAABqIMAC1BkAAGoggALQGQAA +aiBAAcgZAABqIAABxBkAAGogwADAGQAAaiCAALwZAABqIEAAuBkAAGogAAC0GQAAaiCAAcwZAABA +2J+4z3GfALj/HaHPcKD+AAAWoVMjwAQFIIAPsP4AABahGIFTJ801UyXENVMmxTWUuBihQMMBwALB +17oMFAYwqXMCDmAGEBQHMLYNYA4A2M9xoADIOy6BRg9gBn3YQg7AA89wAACt3u4IAAEI2ADZzgjg +Bpm5kQQAD+B48cDmD4/+z3KAAEQlgOHPdYAA2F8O8gCiAIWA4BP0Sg9gAQ/YpghgCAjYAdgApQvw +AN7AovoNYAEP2FYIYAgI2MClEQDP/uB4z3GAAEgpAIEc2s9zgADgBkCgQoNVIsAJAaGgEgAAjbig +GgAAz3CAAIAIpBoAAJwSAAFngwShVSJADQOhQCIAB3Z4BYig4Az0z3CAANgGAJBIdIAkRBMArB7b +A/AY22KhVSJADXhgBaHBAGAOKHDgePHAKg+P/s9wgACQEgOAgOAP8s9ynwC4/x2iz3GAAHwcBIEB +4LO4tbi4uAShFqLPcIAAhAZAgM92gAAID6CGBCKDDw8AAOAEI4EPAQAAABJpZHgHfaCmmHUEIo4P +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 +AtgApgHZz3CAAFAcILCiDKAJKHAChs91gAAUHCiFR4UIFQQQDyBAAAKmz3CAAPQbNXhAoBgVBREM +FQYQz3CAAHA0ANk0qM9wAADktkDABYUQFQcQQcAajTuNQIV+DaAKYYWKIBkBSg4gAjqNYfDPcIAA +UhwB2SCoz3CAABQcJ4DPcIAAWMEvoGoOL/0C2FHwBNgApgDYz3eAAFAcEgygCQC3z3WAABQcAoZI +hWeFDyCBAM9wgAD0G1V4YKAipuzYWgxgBECXCBUEEM9wAADkthgVBREMFQYQQMAFhRAVBxBBwBqN +O41AhfIMoAphhSQVgBBIhQDZUSAAgQSGDyGBAAnyAdvPcoAAcDR0qgV5JKYD8CZ4BKZ2CWAEANij +8eYND/wH8IogGQGGDSACIoapBm/6osAIFgQQCiHAD+tyz3AAAEIfmQSv+4ojRAfxwOHFiiAZAFoN +IAKt2QHdz3CAAIyaoKAA2M9xgABQHEILoAkAsbYMIACpcG0GT/rxwOHFANjPdYAAjJpaCCAAAKUu +DC/9Atgihc9ygABQHHfYfgtgBECSQQZP+vHAxg1P+gDez3eAAFAcwLf2CqAJyXDPdYAAjJrCpcOl +xKWKIMkAyXFKC2AEQJcB2P0Fb/oApeB48cDPcYAAjJoAEQUATCVAgYz3CiHAD+tyz3AAAEEfmdvd +A6/7iiSDDwGhz3CAADwc8CBAAUB40cDgfuB48cBSDU/6z3WAAIyaBBUFEEwlQICiwSXyTCWAgBDy +TCVAgWzyCBUEEAohwA/rcs9wAABEH40Dr/uKI0cGz3CAAFIcAdkgqM9wgAAUHCeAz3CAAFjBL6CC +DC/9AthQ8ATYAKUA2c9wgABQHCCwJgqgCShwz3aAABQcAoVIhmeGDyCBAM9wgAD0G1V4IqVgoHIK +YASKIIYLCBYEEBgWBRHPcAAA5LYMFgYQQMAFhhAWBxBBwBqOO45AhgYLoAphhiQWgBAB30iGANlR +IACBBIUPIYEACfLPcoAAcDT0qgV5JKUD8CZ4BKWKDyAEANiKIBkBogsgAjqOBPDuCw/8vQRv+qLA +4HjxwE4MT/rPdoAAjJoEFgUQQiVBAITh5gANADMmQXCAACBiQCeAcjR4AHgChs9xgAAUHEiBJ4EP +IIAAAqbPcIAA9BtVeCCgWfDPcIAAUhyA2SCoz3CAABQcJ4DPcIAAWMEvoHILL/0C2EfwCpaMIAKA +EfQA2M91gABQHBYJoAkAtSKGiiAFBHYJYARAlQHYAKYz8APYAKYx8AOGjCDDjwHfEvQA2M91gABQ +HOYIoAkAtSKGiiBFCuCmQglgBECVJgsP/BvwANkPIQEAAoYGIECAEvQA2M91gABQHLYIoAkAtSKG +iiCFDBYJYARAlfYKL/zgpgPwAqbBA0/6CBYEEAohwA/rcs9wAABDH7UBr/uKI0YA4HjxwOHFz3WA +AIyaBBUFEEIlQQCF4ZAADQAzJkFwgAAoYkAnAHI0eAB4z3CAAFIcgNkgqM9wgAAUHCeAz3CAAFjB +L6B+Ci/9Atgs8AKFz3GAABQcSIEngQ8ggAACpc9wgAD0G1V4IKAe8AOFjCDDjwHaCPIA2Q8hAQAC +hQYgQIAO9M9wgABQHECw8g9gCQHYA9g+Ci/8AKUG8AKlBPAB2AClEQNP+ggVBBAKIcAP63LPcAAA +RR/1AK/7iiNIC/HAggpP+gh2iiBZAbIJIALJcc91gACMmsOl2gzv/wXYI4XPcoAAUByg2AIIYARA +kr0CT/rxwEIKb/qKIJkBz3WAAIyaegkgAiKFz3CAABCpCIAA3ye4wLgTeMa4AeAKtQjYOnAA3gKF +DybOEwsmAJA38gSFCyCAgx7yxngEpc9wgAAQqSAQgACB4Bbyz3GAAHA0EIkB4A94EKmKIAoFIgkg +Aslxz3GAABCpCIGGIMMPgLgIoYogmQEGCSAC6XHPcIAA9BsVINADABAAIIDg4iACAAKFANkAGEAg +xngCpUIhQCCA4AHnfgft/+9/KpWB4c92gABQHACWC/SA4BD0ANnPcIAAcDQ0qIogCgQF8IDgBvSK +IEoEqgggAgDZAYWF4AjyAJaB4APYyiAiAcYLz/+lAU/6z3KAAIyaIoIA2w8jAwBmeSKiz3GAAPQb +ANoVeeB/QKHPc4AAjJpCgw8iQgBCo89ygAD0GzV64H8AouB48cASCW/6GXEIdoh1z3GAABQcGqkb +GQICQKEQGcABDBmAAaKhA8AYGUQBBMUHoSbAqKEkGQIAB8BhoQWhiiAZAg4IIAKpcVPYyXFyDiAE +qXImwFEgAIAJ8lfYyXFeDiAEqXIG2AXwgeYC2MogYgAWC8//DQFP+uB48cCOCE/6OnDPdoAAlBwA +hgHggeDPdaAAyB8Apgb0AdhRHRiQig9ADaQVEBDPcIAACC4mgM93gADMs2B5ANgBh4DgKvIk2BjZ +hg9gDTPageAO8gQXBRAKIcAP63LPcAAAdBmN26EGb/sKJEAEJNgB2V4PYA0z2oHgDvIEFwUQCiHA +D+tyz3AAAKsoktt5Bm/7CiRABKQVARCKIBgPOg/gAQIhAQQAhkIgQIAApgT0ANhRHRiQOQBP+vHA +4g8v+oogGA7PdoAAyDcOD+ABMobPcIAACC4EgIDgCfTPcQAArQv2DuABiiAYDj3wMobk4df2z3WA +AFReAIXa4FH2iiBYDtYO4AEI2UCFMoaKIJgOELrGDuABRXkI2Brw2uFGAAoAz3WAAFReAIXk4N32 +iiBYDqYO4AGKIT8OQIUyhoogmA4QupYO4AFFeYogPw7uDwANIIVIFgARELmqDu//JXgShgClpQcP ++uB44H7geOB+4HjPcIAAIDZAiOC6CPLPcaAArC8ZgYq4GaFRIkCAB/LPcaAArC8ZgY64GaHgfs9x +oADIOx2BgOAI8oLYFKHPcACAERQOoeB+4HjxwOHFtMGLdalwz3GAALRjkg8v+lDa1gvAAQoJ4AGp +cDUHL/q0wOB4z3CAAODDbIjPcYAA7JqMIwKACpFBKAIDDPLruAr0Art2e8dzgAAQ1wKTDyCAAAKz +ANjgfwyx4HjxwH4OL/pUaIYi+ANPIkMCUyHCAAUixADPcoAAcNYUeo/hiiMPDMogKQAJ9gCSAN0P +JU0QiiPPD6Z4ALIA2UokAHTPdoAAxJ3PcoAAPJ7PdYAAQJ6oIMAEFCJAAOSQZH+Qdwz0AN/ksBYm +QBDgoOGgQCUAGTV44KAB4W0GD/rgePHAANqeugDZz3CgAPxEQaDgeCGgigvgCShwC8gEIIAP/v// +AwsaGDALyIe4CxoYMNHA4H7xwM4ND/pIdoDgAd1E9ool/x8TeIDhRPazfTN5FCEAAGYPL/o7eax4 +AB5AHg0GL/oB2OB48cDhxQhyAd2A4cohwQ/KIsEHyiCBDwAAmxPKI4EPAABcAMokIQDgA2H7yiUB +AYDiRPZTeool/x+A4UT2M3mzfRQhgAAODy/6O3mseMEFL/ovcOB48cDhxc91gADsms9wgABEHiOA +QIUAgRByH/QCkUKVEHIb9AKFpgpv+yOFjCACgBXyz3KAAHgHIYIA2w8jAwACuGZ5FnghogAggQ+A +ABDXAIGquIi4AKEA2GEFL/oMteB4z3CfALj/z3Gg/kgHNqDPcKAAyB88gEAQAAbPcJ8AuP9YGAAI +SiTAcc9xAAAIgaggAAIp2BK48CBAAAHh4H7gePHA4cXPcAAA///PdYAACJsDpc9wgADoWv4MQAvP +cIAABFv2DEALz3CAAKxb6gxAC89wgADIW+IMQAsA2SClBdgBpSKliiDJA5oL4AGKIcwEngrv/AbY +mgrv/AnYvQQP+gfZz3KgANQHGhpYgIDgDvIZEgGGCSBDAA8SAYYCIMCAeWEPGliA9vXgfuB48cAW +DA/6AxIDNgh3DRIONs9xgAAEwhCLz3KAABDX1HkCuBZ4BWIxiS29gOFYYMC9C/Ihg+25CfLPcYAA +fB20eaCREOWgsSWQgOHR9mG5JbAQizJoNnk7YmWTgOM6Ygf0JpJRIUCAhAlC+/YJgAwiDmAGDcgD +yAHZoBhAAM9xDwD//+4IIADpcPUDD/rxwIILL/oD2M92oADUBxMeGJAPFhGWABYBQAAWDUCiwc9w +sP4AANO5BXlAxc9ynwC4/zaiUyXBFCV4FqIgwJzgDvIKIcAP63I12Iy4z3MAAPQMmHOlAW/7SiUA +AAAWD0DwfwAWEEBA51EgAKXAJ6IQA+cEJ48fAAD8/wfwz3AAAAUNMgyAARkWAJZCJwEUEHE29wAh +wCMPHhiQA9ggHhiQGRYAlojgk/cfFgCWQcAhwJzgyiHCD8oiwgc22Mojgg8AABENzyAiA8X12tj+ +CeABqXEEIIAvAAAAQAkDL/qiwPHAogov+sjagiQDMgh1KHbPcYAAeGRaCy/6i3DPcIAAkBINgIDg +z3GfALj/DPIdoc9ygAB8HASCAeCzuLW4uLgEohahz3CgABQEAdpEoM9ygABcPBiC4r0B4Biiz3Cg +/hABFqFALgAUpXgWocogIgCwDsH/GnANyM9xoABkLs9yoAA4LvAhAQDTuQeCJHgEIJEDrPCODs// +z3aAAAjmGnDJcLYMYASLcXYKoA3JcJ7wA9/PcKAAFATwoOSgABYEQAcaGDEAFgVAARpYMQTKnOAe +9ItwPg2gDA7ZJMDhvlMgwQCGIP4DRLjEHAIwZMFEJo0UGfKO2FEmAJGQuKAcADBr8obYkLigHAAw +Z/Drcs9wAADcDs9zAAD0CgEAb/sKIcAPTCAAoAfyjNiQuKAcADBT8AK5NnnHcYAAENdAgUh0hCQM +kA3yUSJAggjyi9iQuKAcADAB3UHwiNiQuPrxTolQcJHYzyAiBPT1AcD6uAjyAd2Q2JC4oBwAMC/w +MxSAMCKRESEAgBXyB8gEIIAPAMAAANdwAMAAAAv0IsCA4MogiQ8AAI0ArAfp/88gKQQKwYwh/48R +8s9woAAsIBCAInjXcACAAADKIIUPAACHAIQH5f/PICUETCAAoMwlIZBc9c9woAAUBOOgTCAAoKl2 +YvVTJn6QB/LPcKAAFAQJgIDgWPXhvjPyTCEAoAHaKvIqcS8oQQBOIIMHlOPKJcUQhfdodYAlwhTP +cKAAaCzwIEADlOMPeMonxRCE92h3gCfCEc91oAAYLPAlzROxcMoiIgCA4gryANgPIMAABiEBgNr1 +AdgD8ADYgOAk85kAL/qAJAMy4HjxwDIID/oacMoIIAIw2JhwKbhRIACAyiHCD8oiwgfKIIIPAADp +FMojgg8AAMcAeAYi+8olIgAs2N4IIAJAKIEgAd6KJQ8ajgggAjDYmHApuFEgAIAL8owmD5on8vIO +IA0B2GG9gOUB5i/3agggAjTYTyABBZW5ogggAjTYVgggAizYCHVOCCACNNj1uLhwGPIKIcAP63LP +cAAA6xTj2wkGL/tKJAAACiHAD+tyz3AAAOoU1NvxBS/7SiUAANkH7/lBLQAU8cBuD8/5CHcA3slw +8gggBclxA9jJdYDnGnAK8kQtPhcAIYB/gAC0Wb4PAAuA5wryRC0+FwAhgH+AAFxaqg8AC0IgQCCA +4AHlJ/fPcIAAxKjJdJ2wMLyesM9wgAA4COYJYAbAoG0Hz/nxwA4LQAGA4BDyz3CAACQqAIBRIICC +CvLPcIAAcFxiDwAL8g3gCgDY0cDgfvHALgkv/eHFz3OAAGQ7z3GAANBdQIH0Ew0AUHUA2Ir3+BMB +ADByBvf8EwEAMHLD9wHYJQfP+eB48cDPdYAAhAZ82N4NoAEghQAVBBAKIcAPARIFNutyz3AAANsO +8QQv+4/b4HjxwH4KQAGA4DDyz3CAACQqAIBRIICCKvLPcIAAICtoiEqIRCs+CwAhgH+AALAqVXgG +iIHgANka9M9ygABwXAaCA4BggAKCYniA4MogSwAF2Qq5MHBK9gaCA4AggMdxAAAAFAIPIAtIcNHA +4H7xwAIO7/kD2K7Bz3agANQHEx4YkA8WEJYZFgCWwOC+9wAWAUAAFg9A07nPcLD+AAAFec91nwC4 +/zalUyfBFCV4FqXveJzgyiHCD8oiwgfKIIIPAABAAM8gIgPKI4IPAACYDMokwgAYBCL7yiUiAItw +BgmgDA7ZBhQBMQAUADFRIQCBwCCiAAPgBCCSDwAA/P8LwIDgViIRIhDyGqUswBulAsAepc9wAGwE +ABmlBvDPcAAAtQyCDkABGRYAllJwufcAIQAkDx4YkAPYIB4YkODYfgygAelxAcAEIIAPAAAAQH0F +7/muwOB48cAaDc/5CHbPcKAAZC7wII0D070NEhA2DRqYM/XYBbjmDeAByXENyM9xoAAUBADfCqGu +CyAJyXBacAHYz3EAABAnz3KgAMgfPqIQ2S6iFRoYgEwiAKBKIQAgDyGRI9D3CyBAxAT0USMAwPzz +CyBAxAbyqg7v/wHnUne09wsgQMQX9FEjAMAk8hPwLyhBA04ggQcA2A8gQABALj6VBn0A2AT0QCk+ +gwPyAdiiDsABgOXt9QohwA/rclfYjLiKI58BSiQAANECL/sKJQABDRoYNPXYBbgyDeABCnENyM9x +oAAUBAqhkQTP+fHAMgzP+c9woABULiuAB93TuS8oQQBOII8Hz3CgAMAvpRAShhQQEYbPdqAAFASq +poILIAmA2PPYBbiA2eIM4AGfuQ0SEDb12AW41gzgAalxqqYNGlgzBPAD2AWmqYaA5RvygOX680Et +gJAK8i8kCXDgeKgggAEAFgBA4HhTJU2QCfIvJElz4HioIEABABaAQOB4qYbn8fPYQgzgAQW4/7jh +9fXYBbh6DOABCnEoHgAUlOcNGhg0yiHFA4X36XGAIcIBz3CgABgs8CBCAJTnyiHFA4X36XGAIcIE +z3CgAGgsNXgEv0Cgx3eAAMzTFYc2hwV5F4e4hyV4BSUNkMohwg/KIsIHyiCCDwAAwiHKI4IPAACN +B8okQgOUASL7yiUiAIDZz3CgANAbMKDPcKAAwC+lGJiEFBhYhFUDz/nxwO4Kz/mkEQAAKHVRIACA +CtjKICEEmBUBEAQhvo8BAADAdh0EEDD06LkW8kQhAAYjuEFoBCGADwYAAAAxuFhgBCGCDwYAAAHX +cgIAAAHKIKEAA/AB2IHgD/KC4Ajyg+AA2Mog4QHAKKEDC/DPcIAA9MECgAXwz3CAAPTBAYAFeZgd +QBCeFQARlB1AEJIdBBCCFQARkBUREbIdBBAA2IAdBBB+HQQQA8jPdqAA1AdBkIDiEBWSEAryDcjP +cYAABMP0IQAAgOAT8hkWAJa44E/3DczPcYAAXDxGIIACDRocMBqBAeCXAiAAGqEPFhSWgOIJ8g3I +z3GAAATD9CEAAIDgA/IB2AXwA9gTHhiQANgHEg82ARIQNgAWBEB6cAcaGDEAFgVAARpYMQTKnODK +IsIHyiCCDwAA3A7KI4IPAAD0CjAAIvvKIcIPqXAiDWAMDtlMI0CgD/QEyAGQgOAh8s9xgADQPRqB +AeAaoRyBAeAcoRfwA8gBkIDgE/INyM9xgADUwvQhAABTIMCAC/TPcYAA0D0agQHgGqEbgQHgG6ED +EgE2AYHuuA3yVBEAAVMgwIAH9M9xgADQPRmBAeAZoQIVBRFMJQCAFPIBhe64yiHCD8oiwgfKIKIL +zyAiA8ojgg8AALUHjAfi+sokYgAAlbBwyiHMD8oizAfKIOwLzyAsA8ojjA8AALgHaAfs+sokbAAQ +jVMgwQCGIP4DRLjEHQIQpBUAEPa4MK0i9AcSAjYCIsEDgeEA2AfyAieBEIwhw48C9AHYgOAU9A3M +z3GAAFw8RiCAAg0aHDAZgQHgGaEPHhiVBxrYMwEaGDSJ8Aca2DMBGhg0ANh0HQQQNgpgAKlwz3GA +AAhyC2F0FQIRz3GAABBy8CEAAHpiUHqkFQEQdB2EECV4pB0AEATIAZCA4BTyTCNAoA30AZW4FY8Q +WGAglfhgEHi+HQQQWWE/Zw3wvhUAEQrwIJW4FYAQWWE4YBB4vh0EEAh3kB0EEA8WAJa0HQQQ3gug +BalwEI0yd8wggYQS8gohwA/rckApDSRAKA4EMNiMuADbi7sFJcQTVQbv+gUmhRSkFQAQCHSEJBqQ +JfJRIECCHvIDyAGQgOAa8g3Iz3GAAATCFHmAEQAHgOAS9NARAAFqFY8QAeDDuPhgD3hqHQIQyg3g +AKlwah3CEwXwvg3gAKlwDx4YlckHj/ngePHAdg+P+RpwAN+kGcADz3CAAEQeBIDQifCgB8gEIIAP +AMAAANdwAMAAACh1FvQNyM9xgAAEwhR5EYmA4A70z3CAAPDV1ngiiAiNEHHG9gpw8giv/alx4fBR +IACghvIEFQQQUSQAgUDyDcjPcoAABMIUehEShQAPeEkgwgBybs9wgAAQ13Z7YGD2uDKNB/LPcIAA +UNnWeAGIAvAA2MdygABQ2dZ6RIoIIYEACCEBAAAhQAFJIMEDFm41eM9xgADQ2gBhz3KAAEQeRILP +cYAAUNrWeViCIYFFeQQhgQ8AAAAIJngD8AOFz3GAAEQemB0AECSBKIEEIYEPAEAAAD65UyQCAB7h +OHpFeP64mB0AEAvypBUAEIy4pB0AEFDYnB0AEHvw/7gT8qQVABCNuKQdABDPcEABUACcHQAQz3CA +AEQeJIAQgZ64EKFn8AXYFLicHQAQz3CAAEQepB3AEySAEIGeuJ+4EKFZ8FEgQKdH8gGFUSAAgTfy +Mo00EoIwSSLCAHJuz3CAABDXdntgYPa4CPLPcIAAUNnWeAGIA/AA2MdygABQ2dZ6RIoIIYEACCEA +AEkgwQMWbjV4z3KAAEQeRILPcYAA0NoBYc9wgABQ2tZ4WIIBgEV4BCCADwAAAAgGeQLwI4WYHUAQ +DcjPcoAAPMIVeiCinB3AEwXwBdgUuJwdABBRIAClB/IA2JG4pB0AEAPwpB3AEwPIAYDPcaAAwB3s +uACB0CDiAM8g4QAAoXQdxBP+DiAAqXDPcYAACHJ0FQIRCWFZYTB5dB1EEM9xgAAQcvAhAACkFQEQ +JXiYFQEQUSFAgqQdABAK8grZdh1EEHgdRBCAuKQdABAW8BDZz3KAAEQedh1EEEOCSIJRIsCACPIK +2XgdRBCDuKQdABAE8HgdRBASC6/8qXCkFQAQRCB+gowVgRAZ8s9ygABEHkOCVIIkeoYh/wNEuYYi +/w46Ys9xgAAYaPQhkQDPcYAA8Gf0IZIADfDDuc9ygAAsqjx59CJRAM9ygAD8qfQiUgCYFQUQUyAE +gMogggQW9IgVgRBRJQCCw7k8edEgIoUH8s9wgABUqvQgQAAG8M9wgAD8qfQgQAAhhVEhwIAF8oQd +BBAD8IQdxBNRJQCCDfJEJQEGI7kB4QQlgA8GAAAAMbgZYQLwAdkDyAGQgOAk8g3Iz3KAAATD9CIC +AIDiA/RBlbgVgxB0FQARBCW+jwEAAMB4YBpiUHq+HYQQDvQKIcAP63Is2Iy4iiMaCUkC7/qKJIMP +QJXn8YHhHfKC4cwh4oDKIcIPyiLCB8ogYgvPICIDyiOCDwAAtQbKJCIAGALi+solAgHPcIAAUNnW +eAOIBvDPcIAAUNnWeAKIjBUBEA64JXiMHQAQz3CAAKwGIIAGgaAQAAaA4Af0z3CAADBeAIiA4F3y +DRIDNobjWfIAla/gz3KAANA9ogAMAM9wgAAEwnR4EYiA4Ef0TCQAgEP0USAAoD3ynhUAEc9zgAC8 +PYq4nh0EEBaTAeAQeBazAcjnogWimBUAEK64r7iwuJgdABAmgaARAQYvKUEATiGCB0EqwQAO4Q8g +QACkFQEQmB0AELS5pB1AEJ4VARGnuZ4dRBDPcYAAJF4AoQQggA///9P2mB0AEA3YmB0CEAnwENgG +8AjYBPAC2ALwAdgHopgVABC+FQERkg/v/gDapBUCEAQivo8AAAAwgh0EEFLyjBUAEJwVARGUHQAQ +kh1EEOy6gB2EFAMSAzYK8hTZkB1EECpxfh1EEHgTDgEK8A7ZkB1EEH4dxBN4Ew4BSnHCeTB5sh1E +EM9xgACwwSCBhiF/jw30mBUOEFEmQJIJ9GGTgOMF9JG6krqkHYAQELkleqQdgBAEIIAPAAAAEM9y +gABEHmSCUiAAAzCDJXgQo0SCEIIEIIEPAAAAED15JXgQohTwmBUBEIAdxBOUHUAQnhUBEX4dxBOS +HUQQvhUBEbIdBBCQHUQQgBUAEX4VAhGCFQERGmKEFQARWWE4YBB4sB0EEKQVABDPcZ8AuP8WoZwV +ABAWoeUBj/ngePHAkgmP+doLj/zPcIAA4MMMiM9xgAAQ1wK4FngAYS24UyAAgAX0z3WAAGQ7DfDP +cYAARB4ggcQRAQbPdYAAZDtRIUCBBPQB2dwdQBDPcYAARB7wIQAAz3KAAPxcIIIYiIPhRgAtAEEd +GBAzJkFwgABYYkAngHI0eAB4dgggCwPYAgggC0DYANjgHQAQDfDPc6AAqCAxgwKCAN7Cojhg4B0A +EAHYEqNZAY/54HjxwOHFB9gNGhgwz3GgANQHGhkYgA4RDYbPcIAAkBJIgIDiBxpYMxDyz3CfALj/ +XaDPc4AAfBxEgwHis7q1uri6RKNWoM9woABILL6gHxEAhgEaGDAEypzgzCCCjwAAkQAF8gAWAEAA +FgBAA8zPcZ8AuP8YoYogRgSqDyABARIBNgESATZ92AoOYAMHEgI2zQCv+QTK8cC4cQK5z3KAABDX +NnkwIkQAUSRAgsoiwgfKIIIPAADLIsojgg8AAJMDlAai+sohwg9ALYEBz3KAANDaIWJRIUCCiiII +BcoiYQPPcYAAUNkWIUEBIokOuUV5IKDRwOB+8cDyD0/5z3KAAKQcRILPdYAACJtihUCCNrs2ulBz +1iKNDwAAgADAhT1ifmaxds73CiHAD+tyiiCNAoojEASYdh0Gr/q4dR5msXb/91hgEQCv+Q4ggAPg +eM9wgACcByCAz3CAAMBy4H/wIEAA4H8B2M9wgAAsV+B/AIDgeM9xgACMOuB/8CEAAPHAmHAKIcAP +63IKJcAHz3AAAJ8ZwQWv+jvb4HjPcYAAaDrgf/AhAADxwJhwCiHAD+tyCiXAB83YBbidBa/6RNvP +cYAAoDrgf/AhAADxwJhwCiHAD+tyCiXAB89wAAChGXUFr/pN2+B44cXPdYAAfD4ChUKdgeDPc4AA +yDc0gw70InpOeuTiAJ0E9jODxuFS9gDYAqUBnQ7wQnkueYwhA4IBnYj2M4PQ4cT2AdgCpQCd4H/B +xc9xgADEXAaBA4DPc4AAJCpAgAKBQnhIIAIA+BMBAPYTgAAieOwTAQFhuAUpPgBAKYBy4H9YYOB4 +z3GAAOBcBoEDgECAAoFCeOB/SCAAAOB4z3GAADQHJIHgfyCgEYjgf8K44HjPcYAADF1GgYDiiiH/ +DyCgBfIigiCgAdgC8ALY4H7geM9xgAAsXUaBgOKKIf8PIKAF8iKCIKAB2ALwAtjgfuB4iiH/DyCg +z3OAACxdRoOA4hLyJIJRIUCAC/LPcYAAPFswcgfyz3GAAFhbMHIG9ECCUHPx9QLYBfAigiCgAdjg +fvHAogrAAIDg8A1iCsogIgDRwOB+8cDPcIAAICtIiCqIRCo+CwAhgH+AALAqNXgGiIHgGPRSCsAA +gOAU8s9xgABEHgCByBAABoYgf44K9AGByBAABoYgf45MC2EKyiAhANHA4H7xwF4NT/mA4GXyz3aA +AKyqL47PcIAAUNnPdYAARB42eCKIA4UA389yoAAsIDQQEQE8EhIADo6A4JwAKQDKJakQjCIBpJAA +JQDKJSURZJaU48Ajhg8AAJMAz3CgAGgs8CDQAOWiUNhFIUECGNq+CiANINv4uMolIhIu9APYz3Gg +APQHBaGE2g1wQLBCIgAoDXIAskCGDXBAoEKWDXBAsAOFQIANcECgA4VCkA1wQLAGlkAoAiXDuAy4 +grgFeg1wQKDkoQ6OAeAOrkIOIAsqcAHdEPAA3c92gACsqtYLoAgElgDYz3GAAFw8Dq4egQHgHqHJ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 19:02:18 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 0FDC1319; Sat, 11 Jan 2014 19:02:18 +0000 (UTC) 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 EFF3C18E0; Sat, 11 Jan 2014 19:02: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 s0BJ2HPg000226; Sat, 11 Jan 2014 19:02:17 GMT (envelope-from theraven@svn.freebsd.org) Received: (from theraven@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BJ2H0s000225; Sat, 11 Jan 2014 19:02:17 GMT (envelope-from theraven@svn.freebsd.org) Message-Id: <201401111902.s0BJ2H0s000225@svn.freebsd.org> From: David Chisnall Date: Sat, 11 Jan 2014 19:02:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260553 - head/lib/libcxxrt X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 19:02:18 -0000 Author: theraven Date: Sat Jan 11 19:02:17 2014 New Revision: 260553 URL: http://svnweb.freebsd.org/changeset/base/260553 Log: Add missing C++11 typeinfos to the libcxxrt version script. PR: 185663 MFC after: 1 week Modified: head/lib/libcxxrt/Version.map Modified: head/lib/libcxxrt/Version.map ============================================================================== --- head/lib/libcxxrt/Version.map Sat Jan 11 18:56:48 2014 (r260552) +++ head/lib/libcxxrt/Version.map Sat Jan 11 19:02:17 2014 (r260553) @@ -111,6 +111,19 @@ CXXABI_1.3 { "typeinfo for void"; "typeinfo for wchar_t const*"; "typeinfo for wchar_t"; + # C++11 typeinfo not understood by our linker + # std::nullptr_t + _ZTIDn;_ZTIPDn;_ZTIPKDn; + # char16_t + _ZTIDi;_ZTIPDi;_ZTIPKDi; + # char32_t + _ZTIDs;_ZTIPDs;_ZTIPKDs; + # IEEE 754r decimal floating point + _ZTIDd;_ZTIPDd;_ZTIPKDd; + _ZTIDe;_ZTIPDe;_ZTIPKDe; + _ZTIDf;_ZTIPDf;_ZTIPKDf; + # IEEE 754r half-precision floating point + _ZTIDh;_ZTIPDh;_ZTIPKDh; "typeinfo for bool*"; "typeinfo for wchar_t*"; @@ -195,6 +208,19 @@ CXXABI_1.3 { "typeinfo name for void*"; "typeinfo name for unsigned int*"; "typeinfo name for float*"; + # C++11 typeinfo not understood by our linker + # std::nullptr_t + _ZTSDn;_ZTIPDn;_ZTIPKDn; + # char16_t + _ZTSDi;_ZTIPDi;_ZTIPKDi; + # char32_t + _ZTSDs;_ZTIPDs;_ZTIPKDs; + # IEEE 754r decimal floating point + _ZTSDd;_ZTIPDd;_ZTIPKDd; + _ZTSDe;_ZTIPDe;_ZTIPKDe; + _ZTSDf;_ZTIPDf;_ZTIPKDf; + # IEEE 754r half-precision floating point + _ZTSDh;_ZTIPDh;_ZTIPKDh; "typeinfo name for __cxxabiv1::__array_type_info"; "typeinfo name for __cxxabiv1::__class_type_info"; From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 20:49:23 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 2CD35309; Sat, 11 Jan 2014 20:49:23 +0000 (UTC) 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 F3BA81353; Sat, 11 Jan 2014 20:49: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 s0BKnM7s039748; Sat, 11 Jan 2014 20:49:22 GMT (envelope-from jmg@svn.freebsd.org) Received: (from jmg@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BKnMIe039746; Sat, 11 Jan 2014 20:49:22 GMT (envelope-from jmg@svn.freebsd.org) Message-Id: <201401112049.s0BKnMIe039746@svn.freebsd.org> From: John-Mark Gurney Date: Sat, 11 Jan 2014 20:49:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260554 - head/lib/libmd X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 20:49:23 -0000 Author: jmg Date: Sat Jan 11 20:49:22 2014 New Revision: 260554 URL: http://svnweb.freebsd.org/changeset/base/260554 Log: use a real uint64_t instead of writing code to emulate one.. I verified w/ a: dd if=/dev/zero bs=1m count=5000 | sha256 a33351fafd00e4c4bcdee2a1c5d019026500f8cdfeaf91a9b8dbbb2619429659 Reviewed by: cperciva MFC after: 1 week Modified: head/lib/libmd/sha256.h head/lib/libmd/sha256c.c Modified: head/lib/libmd/sha256.h ============================================================================== --- head/lib/libmd/sha256.h Sat Jan 11 19:02:17 2014 (r260553) +++ head/lib/libmd/sha256.h Sat Jan 11 20:49:22 2014 (r260554) @@ -33,7 +33,7 @@ typedef struct SHA256Context { uint32_t state[8]; - uint32_t count[2]; + uint64_t count; unsigned char buf[64]; } SHA256_CTX; Modified: head/lib/libmd/sha256c.c ============================================================================== --- head/lib/libmd/sha256c.c Sat Jan 11 19:02:17 2014 (r260553) +++ head/lib/libmd/sha256c.c Sat Jan 11 20:49:22 2014 (r260554) @@ -208,10 +208,10 @@ SHA256_Pad(SHA256_CTX * ctx) * Convert length to a vector of bytes -- we do this now rather * than later because the length will change after we pad. */ - be32enc_vect(len, ctx->count, 8); + be64enc(len, ctx->count); /* Add 1--64 bytes so that the resulting length is 56 mod 64 */ - r = (ctx->count[1] >> 3) & 0x3f; + r = (ctx->count >> 3) & 0x3f; plen = (r < 56) ? (56 - r) : (120 - r); SHA256_Update(ctx, PAD, (size_t)plen); @@ -225,7 +225,7 @@ SHA256_Init(SHA256_CTX * ctx) { /* Zero bits processed so far */ - ctx->count[0] = ctx->count[1] = 0; + ctx->count = 0; /* Magic initialization constants */ ctx->state[0] = 0x6A09E667; @@ -242,21 +242,18 @@ SHA256_Init(SHA256_CTX * ctx) void SHA256_Update(SHA256_CTX * ctx, const void *in, size_t len) { - uint32_t bitlen[2]; + uint64_t bitlen; uint32_t r; const unsigned char *src = in; /* Number of bytes left in the buffer from previous updates */ - r = (ctx->count[1] >> 3) & 0x3f; + r = (ctx->count >> 3) & 0x3f; /* Convert the length into a number of bits */ - bitlen[1] = ((uint32_t)len) << 3; - bitlen[0] = (uint32_t)(len >> 29); + bitlen = len << 3; /* Update number of bits */ - if ((ctx->count[1] += bitlen[1]) < bitlen[1]) - ctx->count[0]++; - ctx->count[0] += bitlen[0]; + ctx->count += bitlen; /* Handle the case where we don't need to perform any transforms */ if (len < 64 - r) { From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 21:12:27 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id A3C26BAC; Sat, 11 Jan 2014 21:12:27 +0000 (UTC) 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 9048C15B2; Sat, 11 Jan 2014 21:12: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 s0BLCRMb050700; Sat, 11 Jan 2014 21:12:27 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BLCRJL050699; Sat, 11 Jan 2014 21:12:27 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401112112.s0BLCRJL050699@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 11 Jan 2014 21:12:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260555 - head/usr.bin/find X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 21:12:27 -0000 Author: jilles Date: Sat Jan 11 21:12:27 2014 New Revision: 260555 URL: http://svnweb.freebsd.org/changeset/base/260555 Log: find: Allow -type d without statting everything. fts(3) detects directories even in FTS_NOSTAT mode (so it can descend into them). No functional change is intended, but find commands that use -type d but no primaries that still require stat/lstat calls make considerably fewer system calls. Modified: head/usr.bin/find/function.c Modified: head/usr.bin/find/function.c ============================================================================== --- head/usr.bin/find/function.c Sat Jan 11 20:49:22 2014 (r260554) +++ head/usr.bin/find/function.c Sat Jan 11 21:12:27 2014 (r260555) @@ -1552,7 +1552,12 @@ c_sparse(OPTION *option, char ***argvp _ int f_type(PLAN *plan, FTSENT *entry) { - return (entry->fts_statp->st_mode & S_IFMT) == plan->m_data; + if (plan->m_data == S_IFDIR) + return (entry->fts_info == FTS_D || entry->fts_info == FTS_DC || + entry->fts_info == FTS_DNR || entry->fts_info == FTS_DOT || + entry->fts_info == FTS_DP); + else + return (entry->fts_statp->st_mode & S_IFMT) == plan->m_data; } PLAN * @@ -1563,7 +1568,8 @@ c_type(OPTION *option, char ***argvp) mode_t mask; typestring = nextarg(option, argvp); - ftsoptions &= ~FTS_NOSTAT; + if (typestring[0] != 'd') + ftsoptions &= ~FTS_NOSTAT; switch (typestring[0]) { case 'b': From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 22:00:17 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 1F637512; Sat, 11 Jan 2014 22:00:17 +0000 (UTC) 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 0B7EF1881; Sat, 11 Jan 2014 22:00: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 s0BM0GHx067864; Sat, 11 Jan 2014 22:00:16 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BM0GjD067860; Sat, 11 Jan 2014 22:00:16 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201401112200.s0BM0GjD067860@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 11 Jan 2014 22:00:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260556 - 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 22:00:17 -0000 Author: jilles Date: Sat Jan 11 22:00:16 2014 New Revision: 260556 URL: http://svnweb.freebsd.org/changeset/base/260556 Log: Add some missing .Nm for newer syscalls in existing man pages. MFC after: 1 week Modified: head/lib/libc/sys/accept.2 head/lib/libc/sys/chflags.2 head/lib/libc/sys/pipe.2 Modified: head/lib/libc/sys/accept.2 ============================================================================== --- head/lib/libc/sys/accept.2 Sat Jan 11 21:12:27 2014 (r260555) +++ head/lib/libc/sys/accept.2 Sat Jan 11 22:00:16 2014 (r260556) @@ -32,7 +32,8 @@ .Dt ACCEPT 2 .Os .Sh NAME -.Nm accept +.Nm accept , +.Nm accept4 .Nd accept a connection on a socket .Sh LIBRARY .Lb libc Modified: head/lib/libc/sys/chflags.2 ============================================================================== --- head/lib/libc/sys/chflags.2 Sat Jan 11 21:12:27 2014 (r260555) +++ head/lib/libc/sys/chflags.2 Sat Jan 11 22:00:16 2014 (r260556) @@ -34,7 +34,8 @@ .Sh NAME .Nm chflags , .Nm lchflags , -.Nm fchflags +.Nm fchflags , +.Nm chflagsat .Nd set file flags .Sh LIBRARY .Lb libc Modified: head/lib/libc/sys/pipe.2 ============================================================================== --- head/lib/libc/sys/pipe.2 Sat Jan 11 21:12:27 2014 (r260555) +++ head/lib/libc/sys/pipe.2 Sat Jan 11 22:00:16 2014 (r260556) @@ -32,7 +32,8 @@ .Dt PIPE 2 .Os .Sh NAME -.Nm pipe +.Nm pipe , +.Nm pipe2 .Nd create descriptor pair for interprocess communication .Sh LIBRARY .Lb libc From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 22:41:11 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id 433DB80; Sat, 11 Jan 2014 22:41:11 +0000 (UTC) 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 149191C7E; Sat, 11 Jan 2014 22:41: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 s0BMfAMb084990; Sat, 11 Jan 2014 22:41:10 GMT (envelope-from gavin@svn.freebsd.org) Received: (from gavin@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BMfAuN084988; Sat, 11 Jan 2014 22:41:10 GMT (envelope-from gavin@svn.freebsd.org) Message-Id: <201401112241.s0BMfAuN084988@svn.freebsd.org> From: Gavin Atkinson Date: Sat, 11 Jan 2014 22:41:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r260557 - in head/sys: amd64/amd64 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-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 22:41:11 -0000 Author: gavin Date: Sat Jan 11 22:41:10 2014 New Revision: 260557 URL: http://svnweb.freebsd.org/changeset/base/260557 Log: Remove spaces from boot messages when we print the CPU ID/Family/Stepping to match the rest of the CPU identification lines, and once again fit into 80 columns in the usual case. Modified: head/sys/amd64/amd64/identcpu.c head/sys/i386/i386/identcpu.c Modified: head/sys/amd64/amd64/identcpu.c ============================================================================== --- head/sys/amd64/amd64/identcpu.c Sat Jan 11 22:00:16 2014 (r260556) +++ head/sys/amd64/amd64/identcpu.c Sat Jan 11 22:41:10 2014 (r260557) @@ -206,16 +206,16 @@ printcpuinfo(void) } printf("-class CPU)\n"); if (*cpu_vendor) - printf(" Origin = \"%s\"", cpu_vendor); + printf(" Origin=\"%s\"", cpu_vendor); if (cpu_id) - printf(" Id = 0x%x", cpu_id); + printf(" Id=0x%x", cpu_id); if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || cpu_vendor_id == CPU_VENDOR_CENTAUR) { - printf(" Family = 0x%x", CPUID_TO_FAMILY(cpu_id)); - printf(" Model = 0x%x", CPUID_TO_MODEL(cpu_id)); - printf(" Stepping = %u", cpu_id & CPUID_STEPPING); + printf(" Family=0x%x", CPUID_TO_FAMILY(cpu_id)); + printf(" Model=0x%x", CPUID_TO_MODEL(cpu_id)); + printf(" Stepping=%u", cpu_id & CPUID_STEPPING); /* * AMD CPUID Specification Modified: head/sys/i386/i386/identcpu.c ============================================================================== --- head/sys/i386/i386/identcpu.c Sat Jan 11 22:00:16 2014 (r260556) +++ head/sys/i386/i386/identcpu.c Sat Jan 11 22:41:10 2014 (r260557) @@ -676,9 +676,9 @@ printcpuinfo(void) } printf("-class CPU)\n"); if(*cpu_vendor) - printf(" Origin = \"%s\"",cpu_vendor); + printf(" Origin=\"%s\"",cpu_vendor); if(cpu_id) - printf(" Id = 0x%x", cpu_id); + printf(" Id=0x%x", cpu_id); if (cpu_vendor_id == CPU_VENDOR_INTEL || cpu_vendor_id == CPU_VENDOR_AMD || @@ -688,9 +688,9 @@ printcpuinfo(void) cpu_vendor_id == CPU_VENDOR_NSC || (cpu_vendor_id == CPU_VENDOR_CYRIX && ((cpu_id & 0xf00) > 0x500))) { - printf(" Family = 0x%x", CPUID_TO_FAMILY(cpu_id)); - printf(" Model = 0x%x", CPUID_TO_MODEL(cpu_id)); - printf(" Stepping = %u", cpu_id & CPUID_STEPPING); + printf(" Family=0x%x", CPUID_TO_FAMILY(cpu_id)); + printf(" Model=0x%x", CPUID_TO_MODEL(cpu_id)); + printf(" Stepping=%u", cpu_id & CPUID_STEPPING); if (cpu_vendor_id == CPU_VENDOR_CYRIX) printf("\n DIR=0x%04x", cyrix_did); /* From owner-svn-src-all@FreeBSD.ORG Sat Jan 11 23:10:59 2014 Return-Path: Delivered-To: svn-src-all@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 ESMTPS id AFD0ED1B; Sat, 11 Jan 2014 23:10:59 +0000 (UTC) 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 9B2B71E8F; Sat, 11 Jan 2014 23:10:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s0BNAxD4098694; Sat, 11 Jan 2014 23:10:59 GMT (envelope-from remko@svn.freebsd.org) Received: (from remko@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s0BNAxpI098693; Sat, 11 Jan 2014 23:10:59 GMT (envelope-from remko@svn.freebsd.org) Message-Id: <201401112310.s0BNAxpI098693@svn.freebsd.org> From: Remko Lodder Date: Sat, 11 Jan 2014 23:10:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260558 - stable/10/usr.sbin/bhyve X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 11 Jan 2014 23:10:59 -0000 Author: remko Date: Sat Jan 11 23:10:59 2014 New Revision: 260558 URL: http://svnweb.freebsd.org/changeset/base/260558 Log: MFC r260446 virtio-block does not exist, the correct name is virtio-blk. PR: 185573 Submitted by: Allan Jude Facilitated by: Snow B.V. Modified: stable/10/usr.sbin/bhyve/bhyve.8 Directory Properties: stable/10/ (props changed) Modified: stable/10/usr.sbin/bhyve/bhyve.8 ============================================================================== --- stable/10/usr.sbin/bhyve/bhyve.8 Sat Jan 11 22:41:10 2014 (r260557) +++ stable/10/usr.sbin/bhyve/bhyve.8 Sat Jan 11 23:10:59 2014 (r260558) @@ -120,7 +120,7 @@ emulation is identical but uses a PCI ve PCI pass-through device. .It Li virtio-net Virtio network interface. -.It Li virtio-block +.It Li virtio-blk Virtio block storage interface. .It Li ahci-cd AHCI controller attached to an ATAPI CD/DVD.