Page MenuHomeFreeBSD

nvme: Enable interrupts after qpair fully constructed
ClosedPublic

Authored by imp on Wed, Jul 14, 8:36 PM.

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
R10 FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

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

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