Page MenuHomeFreeBSD

ice: Use sleepable locks in shared code
Needs ReviewPublic

Authored by kbowling on Thu, Sep 3, 12:01 PM.

Details

Reviewers
kgalazka
erj
Group Reviewers
Intel Networking
Restricted Owners Package(Owns No Changed Paths)
Summary
The Intel shared code can wait for firmware resources while holding its
OS abstraction locks.  FreeBSD mapped these locks to mutexes, which
cannot be held across a voluntary sleep.  Concurrent PF rebuilds
therefore trigger WITNESS when RSS profile updates contend for the
firmware change lock.

Map the shared-code lock abstraction to exclusive sx locks.  This also
covers tunnel and flow-profile operations which can reach the same
firmware wait while serialized.

Validated with WITNESS on a dual-port Intel E835.  Sixteen CORE resets
rebuilt both PFs without lock warnings, reset failures, or watchdogs.
Ten interface down/up cycles and twenty promiscuous-filter cycles also
completed cleanly.

MFC after:      2 weeks
Sponsored by:   BBOX.io

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

Owners added a reviewer: Restricted Owners Package.Thu, Sep 3, 12:01 PM
erj added a subscriber: erj.

The more I work on Linux the more I think these were the appropriate type of lock to be using for the shared code.