HEADS UP: debug.mpsafenet removed (cvs commit: src/sys/dev/ath/ath_rate/amrr amrr.c src/sys/dev/ath/ath_rate/onoe onoe.c src/sys/dev/ce if_ce.c src/sys/dev/cp if_cp.c src/sys/dev/ctau if_ct.c src/sys/dev/cx if_cx.c src/sys/kern subr_bus.c uipc_domain.c src/sys/net if.c if_ethersubr.c netisr.c ... (fwd))

From: Robert Watson <rwatson_at_FreeBSD.org>
Date: Fri, 27 Jul 2007 13:40:28 +0100 (BST)
This is the first of two e-mails relating to the removal of 
Giant-compatibility code from the network protocol stack.  Please read both.

Per intermittent e-mails and notifications over the last three years, I have 
now removed the NET_NEEDS_GIANT() and debug.mpsafenet machinery from the 
7-CURRENT kernel.  This is, in principle, largely a no-op, as no 
NET_NEEDS_GIANT() components remain in the kernel, and all remaining 
components are intended to be MPSAFE, and the vast majority of users have been 
running without Giant over the network stack since about FreeBSD 5.3. 
However, bumps inevitably happen, so please let me know:

- *If* you are using credential-based rules in your ipfw or pf firewall
   configuration, this may trigger WITNESS lock order reversal warnings.  We
   plan to suppress these warnings before the release, so the warnings alone
   should not present a problem.  However, if you experience deadlocks as a
   result, drop e-mail to current_at_ as soon as possible so that they can be
   diagnosed and fixed.

- *If* you have been running with debug.mpsafenet because it suppressed some
   other warning you have, to date, neglected to e-mail current_at_ about, or not
   reminded us about frequently, *and* it now recurs as a result of
   debug.mpsafenet going away, please send e-mail to current_at_ as soon as
   possible.

A series of follow-up commits to remove various straggling references and 
compatibility pieces will now occur, including converting all 
NET_CALLOUT_MPSAFE references to CALLOUT_MPSAFE, and removing calls to 
NET_*_GIANT() at various points in the protocol and driver code.

Non-MPSAFE device drivers flagged with IFF_NEEDSGIANT should remain 
unaffected, as the code to acquire Giant before entering from the network 
stack will remain in place, and those drivers will not be passing the MPSAFE 
flag into the interrupt registration code.

Thanks,

Robert N M Watson
Computer Laboratory
University of Cambridge

---------- Forwarded message ----------
Date: Fri, 27 Jul 2007 11:59:57 +0000 (UTC)
From: Robert Watson <rwatson_at_FreeBSD.org>
To: src-committers_at_FreeBSD.org, cvs-src_at_FreeBSD.org, cvs-all_at_FreeBSD.org
Subject: cvs commit: src/sys/dev/ath/ath_rate/amrr amrr.c
     src/sys/dev/ath/ath_rate/onoe         onoe.c src/sys/dev/ce if_ce.c
     src/sys/dev/cp if_cp.c         src/sys/dev/ctau if_ct.c src/sys/dev/cx
     if_cx.c src/sys/kern         subr_bus.c uipc_domain.c src/sys/net if.c
     if_ethersubr.c netisr.c ...

rwatson     2007-07-27 11:59:57 UTC

   FreeBSD src repository

   Modified files:
     sys/dev/ath/ath_rate/amrr amrr.c
     sys/dev/ath/ath_rate/onoe onoe.c
     sys/dev/ce           if_ce.c
     sys/dev/cp           if_cp.c
     sys/dev/ctau         if_ct.c
     sys/dev/cx           if_cx.c
     sys/kern             subr_bus.c uipc_domain.c
     sys/net              if.c if_ethersubr.c netisr.c
     sys/nfsserver        nfs_srvsubs.c nfs_syscalls.c
     sys/sys              kernel.h mutex.h
   Log:
   First in a series of changes to remove the now-unused Giant compatibility
   framework for non-MPSAFE network protocols:

   - Remove debug_mpsafenet variable, sysctl, and tunable.
   - Remove NET_NEEDS_GIANT() and associate SYSINITSs used by it to force
     debug.mpsafenet=0 if non-MPSAFE protocols are compiled into the kernel.
   - Remove logic to automatically flag interrupt handlers as non-MPSAFE if
     debug.mpsafenet is set for an INTR_TYPE_NET handler.
   - Remove logic to automatically flag netisr handlers as non-MPSAFE if
     debug.mpsafenet is set.
   - Remove references in a few subsystems, including NFS and Cronyx drivers,
     which keyed off debug_mpsafenet to determine various aspects of their own
     locking behavior.
   - Convert NET_LOCK_GIANT(), NET_UNLOCK_GIANT(), and NET_ASSERT_GIANT into
     no-op's, as their entire behavior was determined by the value in
     debug_mpsafenet.
   - Alias NET_CALLOUT_MPSAFE to CALLOUT_MPSAFE.

   Many remaining references to NET_.*_GIANT() and NET_CALLOUT_MPSAFE are still
   present in subsystems, and will be removed in followup commits.

   Reviewed by:    bz, jhb
   Approved by:    re (kensmith)

   Revision  Changes    Path
   1.14      +1 -1      src/sys/dev/ath/ath_rate/amrr/amrr.c
   1.15      +1 -1      src/sys/dev/ath/ath_rate/onoe/onoe.c
   1.9       +0 -7      src/sys/dev/ce/if_ce.c
   1.34      +0 -5      src/sys/dev/cp/if_cp.c
   1.34      +0 -5      src/sys/dev/ctau/if_ct.c
   1.57      +0 -5      src/sys/dev/cx/if_cx.c
   1.201     +0 -3      src/sys/kern/subr_bus.c
   1.50      +2 -7      src/sys/kern/uipc_domain.c
   1.273     +1 -8      src/sys/net/if.c
   1.235     +1 -1      src/sys/net/if_ethersubr.c
   1.19      +0 -92     src/sys/net/netisr.c
   1.148     +1 -4      src/sys/nfsserver/nfs_srvsubs.c
   1.115     +2 -8      src/sys/nfsserver/nfs_syscalls.c
   1.136     +0 -5      src/sys/sys/kernel.h
   1.99      +5 -22     src/sys/sys/mutex.h
Received on Fri Jul 27 2007 - 10:43:13 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:15 UTC