On Sat, 24 May 2008, Robert Watson wrote:

Just as a reminder, we've just about reached the one month date before IFF_NEEDSGIANT drivers are disabled in the build. You can find a description of the general problem and list of specific drivers below.

As USB work is on-going, I will *not* disable the USB drivers at this time, but all other drivers in the list below will be disabled on 26 June. They will remain in the tree, easily accessible for patch distribution and re-enabling, until October, when any remaining non-MPSAFE drivers will be deleted in 8.x. FreeBSD 8.0 will not ship with compatibility shims to support non-MPSAFE network device drivers.

An FYI on the state of things here: in the last month, John has updated a number of device drivers to be MPSAFE, and the USB work remains in-flight. I'm holding fire a bit on disabling IFF_NEEDSGIANT while things settle and I catch up on driver state, and will likely send out an update next week regarding which device drivers remain on the kill list, and generally what the status of this project is.

Robert N M Watson
Computer Laboratory
University of Cambridge



Robert N M Watson Computer Laboratory University of Cambridge

---------- Forwarded message ----------
Date: Sun, 3 Feb 2008 20:59:05 +0000 (GMT)
From: Robert Watson <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: 8.0 network stack MPsafety goals (fwd)


Only a few days after predicted, this is a reminder that IFF_NEEDSGIANT network drivers are going to stop working in the forseeable future. Please review the attached driver list, and if you depend on or care about a Giant-dependent device driver, take action to make sure it doesn't remain on the list in a month's time!

(As far as I'm aware, the list has not changed since my December posting.)

Robert N M Watson
Computer Laboratory
University of Cambridge

---------- Forwarded message ----------
Date: Mon, 24 Dec 2007 10:43:28 +0000 (GMT)
From: Robert Watson <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: 8.0 network stack MPsafety goals


Dear all:

With the 7.0 release around the corner, many developers are starting to think about (and in quite a few cases, work on) their goals for 8.0. One of our on-going kernel projects has been the elimination of the Giant lock, and that project has transformed into one of optimizating behavior on increasing numbers of processors.

In 7.0, despite the noteworth accomplishment of eliminating debug.mpsasfenet and conditional network stack Gian acquisition, we were unable to fully eliminate the IFF_NEEDSGIANT flag, which controls the conditional acquisition of the Giant lock around non-MPSAFE network device drivers. Primarily these drivers are aging ISA network device drivers, although there are some exceptions, such as the USB stack.

This e-mail proposes the elimination of the IFF_NEEDSGIANT flag and associated infrastructure in FreeBSD 8.0, meaning that all network device drivers must be able to operate without the Giant lock (largely the case already). Remaining drivers using the IFF_NEEDSGIANT flag must either be updated, or less ideally, removed. I propose the following schedule:

Date            Goals
----            -----
26 Dec 2007     Post proposed schedule for flag and infrastructure removal
                Post affected driver list

26 Jan 2008     Repost proposed schedule for flag and infrastructure removal
                Post updated affected driver list

26 Feb 2008     Adjust boot-time printf for affect drivers to generate a loud
                warning.
                Post updated affected driver list

26 May 2008     Post HEADS UP of impending driver disabling
                Post updated affected driver list

26 Jun 2008     Disable build of all drivers requiring IFF_NEEDSGIANT
                Post updated affected driver list

26 Sep 2008     Post HEADS up of impending driver removal
                Post updated affected driver list

26 Oct 2008     Delete source of all drivers requiring IFF_NEEDSGIANT
                Remove flag and infrastructure

Here is a list of potentially affected drivers:

Name    Bus             Man page description
---     ---             --------------------
ar      ISA/PCI         synchronous Digi/Arnet device driver
arl     ISA             Aironet Arlan 655 wireless network adapter driver
awi     PCCARD          AMD PCnetMobile IEEE 802.11 PCMCIA wireless network
                        driver
axe     USB             ASIX Electronics AX88172 USB Ethernet driver
cdce    USB             USB Communication Device Class Ethernet driver
cnw     PCCARD          Netwave AirSurfer wireless network driver
cs      ISA/PCCARD      Ethernet device driver
cue     USB             CATC USB-EL1210A USB Ethernet driver
ex      ISA/PCCARD      Ethernet device driver for the Intel EtherExpress
                        Pro/10 and Pro/10+
fe      CBUS/ISA/PCCARD Fujitsu MB86960A/MB86965A based Ethernet adapters
ic      I2C             I2C bus system
ie      ISA             Ethernet device driver
kue     USB             Kawasaki LSI KL5KUSB101B USB Ethernet driver
oltr    ISA/PCI         Olicom Token Ring device driver
plip    PPBUS           printer port Internet Protocol driver
ppp     TTY             point to point protocol network interface
ray     PCCARD          Raytheon Raylink/Webgear Aviator PCCard driver
rue USB RealTek RTL8150 USB to Fast Ethernet controller driver
rum     USB             Ralink Technology USB IEEE 802.11a/b/g wireless
                        network device
sbni    ISA/PCI         Granch SBNI12 leased line modem driver
sbsh    PCI             Granch SBNI16 SHDSL modem device driver
sl      TTY             slip network interface
snc     ISA/PCCARD      National Semiconductor DP8393X SONIC Ethernet adapter
                        driver
sr      ISA/PCI         synchronous RISCom/N2 / WANic 400/405 device driver
udav    USB             Davicom DM9601 USB Ethernet driver
ural    USB             Ralink Technology RT2500USB IEEE 802.11 driver
xe      PCCARD          Xircom PCMCIA Ethernet device driver
zyd     USB             ZyDAS ZD1211/ZD1211B USB IEEE 802.11b/g wireless
                        network device

In some cases, the requirement for Giant is a property of a subsystem the driver depends on as the driver itself; for example, the tty subsystem for SLIP and PPP, and the USB subsystem for a number of USB ethernet and wireless drivers. With most of a year before to go on the proposed schedule, my hope is that we will have lots of time to address these issues, but wanted to get a roadmap out from a network protocol stack architecture perspective so that device driver and subsystem authors could have a schedule in mind.

FYI, the following drivers also reference IFF_NEEDSGIANT, but only in order to provide their own conditional MPSAFEty, which can be removed without affecting device driver functionality (I believe):

Name    Bus             Man page description
---     ---             --------------------
ce      PCI             driver for synchronous Cronyx Tau-PCI/32 WAN adapters
cp      PCI             driver for synchronous Cronyx Tau-PCI WAN adapters
ctau    ISA             driver for synchronous Cronyx Tau WAN adapters
cx      ISA             driver for synchronous/asynchronous Cronyx Sigma WAN
                        adapters

Developers and users of the above drivers are heavily encouraged to update the drivers to remove dependence on Giant, and/or make other contingency plans.

Robert N M Watson
Computer Laboratory
University of Cambridge
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "[EMAIL PROTECTED]"
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "[EMAIL PROTECTED]"
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to