cvs commit: src/sys/conf options src/sys/sys kernel.h src/sys/net netisr.c

Robert Watson rwatson at FreeBSD.org
Sat Aug 28 08:11:13 PDT 2004


rwatson     2004-08-28 15:11:13 UTC

  FreeBSD src repository

  Modified files:
    sys/conf             options 
    sys/sys              kernel.h 
    sys/net              netisr.c 
  Log:
  Change the default disposition of debug.mpsafenet from 0 to 1, which
  will cause the network stack to operate without the Giant lock by
  default.  This change has the potential to improve performance by
  increasing parallelism and decreasing latency in network processing.
  
  Due to the potential exposure of existing or new bugs, the following
  compatibility functionality is maintained:
  
  - It is still possible to disable Giant-free operation by setting
    debug.mpsafenet to 0 in loader.conf.
  
  - Add "options NET_WITH_GIANT", which will restore the default value of
    debug.mpsafenet to 0, and is intended for use on systems compiled with
    known unsafe components, or where a more conservative configuration is
    desired.
  
  - Add a new declaration, NET_NEEDS_GIANT("componentname"), which permits
    kernel components to declare dependence on Giant over the network
    stack.  If the declaration is made by a preloaded module or a compiled
    in component, the disposition of debug.mpsafenet will be set to 0 and
    a warning concerning performance degraded operation printed to the
    console.  If it is declared by a loadable kernel module after boot, a
    warning is displayed but the disposition cannot be changed.  This is
    implemented by defining a new SYSINIT() value, SI_SUB_SETTINGS, which
    is intended for the processing of configuration choices after tunables
    are read in and the console is available to generate errors, but
    before much else gets going.
  
  This compatibility behavior will go away when we've finished the last
  of the locking work and are confident that operation is correct.
  
  Revision  Changes    Path
  1.478     +1 -0      src/sys/conf/options
  1.12      +84 -3     src/sys/net/netisr.c
  1.118     +6 -0      src/sys/sys/kernel.h


More information about the cvs-all mailing list