Page MenuHomeFreeBSD

ioat: initialize interrupts after resetting hw on BDXDE
ClosedPublic

Authored by cem on Sep 2 2015, 1:13 AM.

Details

Summary

Resetting some generations of the I/OAT hardware (just BDXDE for now)
resets the corresponding MSI-X registers. So, teardown and
re-initialize interrupts after resetting the hardware.

Test Plan

ioatcontrol 0 100 completes a lot faster when interrupts fire correctly.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

cem retitled this revision from to ioat: initialize interrupts after resetting hw.
cem updated this object.
cem edited the test plan for this revision. (Show Details)
cem added reviewers: markj, jimharris.
cem added a subscriber: benno.

Drop accidental change.

I would rather see the full patch here instead of just this workaround to get BDX-DE initialized. Otherwise recovering from channel hangs after initialization will not be possible.

I would rather see the full patch here instead of just this workaround to get BDX-DE initialized. Otherwise recovering from channel hangs after initialization will not be possible.

I'd rather not make more extensive changes here until I have serial / debugging set up on my test machine. For now it's recompile, reboot, and pray — the machine is in a lab 10 miles away :).

I'll change the patch to correctly teardown/re-setup interrupts after a hardware reset. We still only call it in one place (ioat3_attach).

cem edited edge metadata.

Detect broken-ish devices (BDXDE) and teardown/re-initialize interrupts after
device reset on those devices.

cem retitled this revision from ioat: initialize interrupts after resetting hw to ioat: initialize interrupts after resetting hw on BDXDE.Sep 2 2015, 3:55 PM
cem updated this object.
jimharris edited edge metadata.
This revision is now accepted and ready to land.Sep 2 2015, 4:12 PM
markj edited edge metadata.
This revision was automatically updated to reflect the committed changes.