HomeFreeBSD

nvme: Add exclusion for ISR

Description

nvme: Add exclusion for ISR

Add a basically uncontended spinlock that we take out while the ISR is
running. This has two effects: First, when we get a timeout, we can
safely call the nvme_qpair_process_completions w/o racing any ISRs.
Second, we can use it to ensure that we don't reset the card while
the ISRs are active (right now we just sleep and hope for the best,
which usually is fine, but not always).

Sponsored by: Netflix
MFC After: 2 weeks
Reviewed by: chuck, gallatin
Differential Revision: https://reviews.freebsd.org/D41452

(cherry picked from commit 8052b01e7e4113fa8296ce43c354116b0a1774b7)
(cherry picked from commit c7cb2dcdf2abe6c382628c80fe99f11236829cfb)

Approved-by: re (cperciva)

Details

Provenance
impAuthored on Sep 28 2023, 8:46 PM
Reviewer
chuck
Differential Revision
D41452: nvme: Add exclusion for ISR
Parents
rG1a25315863e5: nvme: Greatly improve error recovery
Branches
Unknown
Tags
Unknown