]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Change the default disposition of debug.mpsafenet from 0 to 1, which
authorrwatson <rwatson@FreeBSD.org>
Sat, 28 Aug 2004 15:11:13 +0000 (15:11 +0000)
committerrwatson <rwatson@FreeBSD.org>
Sat, 28 Aug 2004 15:11:13 +0000 (15:11 +0000)
commit69e658ec5ae80337e0ce0fd7124b7a4344161a9c
tree6ad9ef1cb5054a0cc25ff444831031fb77cb783f
parentbb60ef092768837ab9067cd484bec4f3c179c5a5
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.
sys/conf/options
sys/net/netisr.c
sys/sys/kernel.h