Page MenuHomeFreeBSD

nvme: Enable interrupts after qpair fully constructed

Authored by imp on Jul 14 2021, 8:36 PM.
Referenced Files
Unknown Object (File)
Wed, Mar 22, 6:07 PM
Unknown Object (File)
Feb 19 2023, 10:09 AM
Unknown Object (File)
Jan 2 2023, 1:33 AM
Unknown Object (File)
Dec 26 2022, 6:54 PM



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

rG FreeBSD src repository
Lint Not Applicable
Tests Not Applicable

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 :)