Page MenuHomeFreeBSD

D46031.id141093.diff
No OneTemporary

D46031.id141093.diff

diff --git a/share/man/man4/nvme.4 b/share/man/man4/nvme.4
--- a/share/man/man4/nvme.4
+++ b/share/man/man4/nvme.4
@@ -239,6 +239,15 @@
See
.Xr ahci 4
for more details.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "nvme%d: System interrupt issues?"
+The driver found a timed-out transaction had a pending completion record,
+indicating an interrupt had not been delivered.
+The system is either not configuring interrupts properly, or the system drops
+them under load.
+This message will appear at most once per boot per controller.
+.El
.Sh SEE ALSO
.Xr nda 4 ,
.Xr nvd 4 ,
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h
--- a/sys/dev/nvme/nvme_private.h
+++ b/sys/dev/nvme/nvme_private.h
@@ -303,6 +303,7 @@
bool is_failed;
bool is_dying;
+ bool isr_warned;
STAILQ_HEAD(, nvme_request) fail_req;
/* Host Memory Buffer */
diff --git a/sys/dev/nvme/nvme_qpair.c b/sys/dev/nvme/nvme_qpair.c
--- a/sys/dev/nvme/nvme_qpair.c
+++ b/sys/dev/nvme/nvme_qpair.c
@@ -1138,7 +1138,10 @@
* at least 1/2s old. Call the completion ISR to catch 'missed'
* interrupts.
*/
- _nvme_qpair_process_completions(qpair);
+ if (_nvme_qpair_process_completions(qpair) && !ctrlr->isr_warned) {
+ nvme_printf(ctrlr, "System interrupt issues?\n");
+ ctrlr->isr_warned = true;
+ }
/*
* Now that we've run the ISR, re-rheck to see if there's any

File Metadata

Mime Type
text/plain
Expires
Mon, Jan 27, 5:59 PM (1 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16202526
Default Alt Text
D46031.id141093.diff (1 KB)

Event Timeline