Page MenuHomeFreeBSD

D59637.diff
No OneTemporary

D59637.diff

diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c
--- a/sys/dev/nvme/nvme_ctrlr.c
+++ b/sys/dev/nvme/nvme_ctrlr.c
@@ -1405,9 +1405,12 @@
{
struct nvme_controller *ctrlr = arg;
- nvme_mmio_write_4(ctrlr, intms, 1);
+ /* INTMS/INTMC are undefined when configured for MSI-X. */
+ if (!ctrlr->is_msix)
+ nvme_mmio_write_4(ctrlr, intms, 1);
nvme_ctrlr_poll(ctrlr);
- nvme_mmio_write_4(ctrlr, intmc, 1);
+ if (!ctrlr->is_msix)
+ nvme_mmio_write_4(ctrlr, intmc, 1);
}
#define NVME_MAX_PAGES (int)(1024 / sizeof(vm_page_t))
diff --git a/sys/dev/nvme/nvme_pci.c b/sys/dev/nvme/nvme_pci.c
--- a/sys/dev/nvme/nvme_pci.c
+++ b/sys/dev/nvme/nvme_pci.c
@@ -385,6 +385,7 @@
ctrlr->msi_count = 0;
goto msi;
}
+ ctrlr->is_msix = true;
if (ctrlr->msi_count == 1)
return (nvme_ctrlr_setup_shared(ctrlr, 1));
if (ctrlr->msi_count != num_vectors_requested) {
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
@@ -257,6 +257,7 @@
struct resource *msix_pba_resource;
int msi_count;
+ bool is_msix;
uint32_t enable_aborts;
uint32_t num_io_queues;

File Metadata

Mime Type
text/plain
Expires
Thu, Sep 17, 8:44 AM (9 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38905273
Default Alt Text
D59637.diff (1 KB)

Event Timeline