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, Oct 8, 10:23 PM
Unknown Object (File)
Mon, Oct 7, 8:43 PM
Unknown Object (File)
Fri, Oct 4, 8:17 PM
Unknown Object (File)
Fri, Oct 4, 5:36 AM
Unknown Object (File)
Oct 3 2024, 8:47 AM
Unknown Object (File)
Oct 2 2024, 5:18 PM
Unknown Object (File)
Oct 2 2024, 11:08 AM
Unknown Object (File)
Oct 2 2024, 8:57 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
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
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 :)