diff options
author | Hans Rosenfeld <hans.rosenfeld@nexenta.com> | 2016-08-16 15:33:26 +0200 |
---|---|---|
committer | Hans Rosenfeld <hans.rosenfeld@nexenta.com> | 2016-08-25 17:04:45 +0200 |
commit | 75b41617efad806d8ab3d1866425189c0b0bc6aa (patch) | |
tree | f4b54397944f09d8b293f8787da7ed0bf979225a | |
parent | bf26ea4b8945ba545fde8b47a2a31ce2d11b82cd (diff) | |
download | illumos-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.c | 24 |
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; |