Page MenuHomeFreeBSD

iflib: Own queue quiescence during power transitions
Needs ReviewPublic

Authored by kbowling on Thu, Sep 3, 4:23 AM.
Tags
None
Referenced Files
F170640895: D59329.id185675.diff
Sat, Sep 5, 6:38 PM
F170640771: D59329.id185675.diff
Sat, Sep 5, 6:37 PM
F170608182: D59329.id185675.diff
Sat, Sep 5, 3:13 PM
F170603342: D59329.id.diff
Sat, Sep 5, 2:41 PM
F170580292: D59329.diff
Sat, Sep 5, 12:17 PM
F170561712: D59329.id.diff
Sat, Sep 5, 10:22 AM
Unknown Object (File)
Thu, Sep 3, 10:00 AM
Unknown Object (File)
Thu, Sep 3, 9:56 AM

Details

Reviewers
gallatin
nick_spun.io
shurd
Group Reviewers
iflib
Restricted Owners Package(Owns No Changed Paths)
Summary
Perform a terminal datapath stop before suspend and shutdown
callbacks, then drain the private configuration taskqueue before
entering low power.  Track power state independently of queue
ownership and prevent built-in admin, IOV, LED, and media-status
callbacks from accessing a suspended device.

Restore driver-specific state while the datapath remains stopped.
Initialize it exactly once on resume when the interface is
administratively up, and keep an administratively-down interface
stopped.  Roll back the driver when suspend or child suspension fails.

Add ifdi_power_prepare() for policy which must be established before
the terminal stop.  Use it to snapshot ixgbe(4) wake policy and preserve
X550EM PHY ordering, and remove the duplicate stop from aq(4).  Other
driver power-method wiring follows separately.

MFC after:      2 weeks

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped

Event Timeline

Owners added a reviewer: Restricted Owners Package.Thu, Sep 3, 4:23 AM
sys/dev/ixgbe/if_ix.c
4002

What version is this against? As of this am (0abd71f39a5c) ixgbe_setup_low_power_mode() doesn't seem to have a 2nd arg.

<10:06am>flea/gallatin:main>git grep ^ixgbe_setup_low_power_mode
sys/dev/ixgbe/if_ix.c:ixgbe_setup_low_power_mode(if_ctx_t ctx)

sys/dev/ixgbe/if_ix.c
4002

Apologies I had c004384343be in my merge queue pending validation. Please update main past that when you may and this should then apply.

ifdi_power_prepare or whatever lands will also be used in a followup commit to disarm the ixgbe firmware recovery task when the device is suspended.