summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Rosenfeld <hans.rosenfeld@nexenta.com>2016-08-16 15:33:26 +0200
committerHans Rosenfeld <hans.rosenfeld@nexenta.com>2016-08-25 17:04:45 +0200
commit75b41617efad806d8ab3d1866425189c0b0bc6aa (patch)
treef4b54397944f09d8b293f8787da7ed0bf979225a
parentbf26ea4b8945ba545fde8b47a2a31ce2d11b82cd (diff)
downloadillumos-joyent-75b41617efad806d8ab3d1866425189c0b0bc6aa.tar.gz
7306 nvme ignores interrupt enabling failure
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com> Reviewed by: Garrett D'Amore <garrett@damore.org> Approved by: Robert Mustacchi <rm@joyent.com>
-rw-r--r--usr/src/uts/common/io/nvme/nvme.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/usr/src/uts/common/io/nvme/nvme.c b/usr/src/uts/common/io/nvme/nvme.c
index 6a06c42cdb..c8648d057f 100644
--- a/usr/src/uts/common/io/nvme/nvme.c
+++ b/usr/src/uts/common/io/nvme/nvme.c
@@ -2233,7 +2233,6 @@ nvme_release_interrupts(nvme_t *nvme)
static int
nvme_setup_interrupts(nvme_t *nvme, int intr_type, int nqpairs)
{
- int failed = 0;
int nintrs, navail, count;
int ret;
int i;
@@ -2303,25 +2302,18 @@ nvme_setup_interrupts(nvme_t *nvme, int intr_type, int nqpairs)
(void) ddi_intr_get_cap(nvme->n_inth[0], &nvme->n_intr_cap);
for (i = 0; i < count; i++) {
- if (nvme->n_inth[i] == NULL)
- break;
+ if (nvme->n_intr_cap & DDI_INTR_FLAG_BLOCK)
+ ret = ddi_intr_block_enable(&nvme->n_inth[i], 1);
+ else
+ ret = ddi_intr_enable(nvme->n_inth[i]);
- if (nvme->n_intr_cap & DDI_INTR_FLAG_BLOCK) {
- if (ddi_intr_block_enable(&nvme->n_inth[i], 1) !=
- DDI_SUCCESS)
- failed++;
- } else {
- if (ddi_intr_enable(nvme->n_inth[i]) != DDI_SUCCESS)
- failed++;
+ if (ret != DDI_SUCCESS) {
+ dev_err(nvme->n_dip, CE_WARN,
+ "!%s: enabling interrupt %d failed", __func__, i);
+ goto fail;
}
}
- if (failed != 0) {
- dev_err(nvme->n_dip, CE_WARN,
- "!%s: enabling interrupts failed", __func__);
- goto fail;
- }
-
nvme->n_intr_type = intr_type;
nvme->n_progress |= NVME_INTERRUPTS;