The engine is shared with the firmware, and until now the driver never returned it: at shutdown the BIOS finds whatever command state the last transfer left behind. ws1-mint shows an intermittent poweroff hang isolated to machine_power_off() -> ACPI _S5 with the engine in session use; a BIOS SMI handler wedging on a mid-session engine at the S5 trap is the working hypothesis. Handing the engine back the way the firmware left it is correct hygiene regardless of that outcome. - probe snapshots both pristine CMD words before the driver's first transfer, and fails if they cannot be read: an unreadable snapshot would turn the handback into writing garbage - new .shutdown callback (shutdown and kexec): mark both adapters suspended, drain the possible in-flight transfer under the lock, wait for the engine to go idle, restore the pristine words with GO masked. Best effort: it never blocks the power-off - resume refreshes the snapshot after the firmware-polling re-check passes, since the firmware demonstrably drives the engine across suspend; an unreadable refresh leaves the adapters suspended - the unbind comment now distinguishes unbind (state left as-is, next user is another instance of this driver) from shutdown (next user is the firmware) Version 1.0.4.
2 lines
6 B
Plaintext
2 lines
6 B
Plaintext
1.0.4
|