Page MenuHomeFreeBSD

nvme: Enable interrupts after qpair fully constructed
ClosedPublic

Authored by imp on Jul 14 2021, 8:36 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Apr 2, 11:20 PM
Unknown Object (File)
Mar 19 2024, 3:24 PM
Unknown Object (File)
Jan 15 2024, 3:38 AM
Unknown Object (File)
Dec 28 2023, 2:40 PM
Unknown Object (File)
Dec 20 2023, 6:47 AM
Unknown Object (File)
Oct 8 2023, 11:59 AM
Unknown Object (File)
Sep 21 2023, 2:17 AM
Unknown Object (File)
Sep 19 2023, 11:14 AM
Subscribers

Details

Summary

To guard against the ill effects of a spurious interrupt during
construction (or one that was bogusly pending), enable interrupts after
the qpair is completely consturcted. Otherwise, we can die with null
poitner dereferences in nvme_qpair_process_completions. This has been
observed in at least one pre-release NVMe drive where the MSIX interrupt
fired while the queue was being created, before we'd started the nvme
controller card.

The alternative of only turning on the interrupts after the rest was
tried, but was insufficient to work around this bug and made the code
more complicated w/o benefit.

Sponsored by: Netflix

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 40475
Build 37364: arc lint + arc unit

Event Timeline

imp requested review of this revision.Jul 14 2021, 8:36 PM
This revision is now accepted and ready to land.Jul 15 2021, 2:02 AM

Oh, it'd be worth running spell over the commit message :)