svn commit: r293668 - stable/10/sys/dev/nvme

Jim Harris jimharris at FreeBSD.org
Mon Jan 11 17:27:22 UTC 2016


Author: jimharris
Date: Mon Jan 11 17:27:20 2016
New Revision: 293668
URL: https://svnweb.freebsd.org/changeset/base/293668

Log:
  MFC r293325:
  
    nvme: remove per_cpu_io_queues from struct nvme_controller
  
    Instead just use num_io_queues to make this determination.
  
    This prepares for some future changes enabling use of multiple
    queues when we do not have enough queues or MSI-X vectors
    for one queue per CPU.

Modified:
  stable/10/sys/dev/nvme/nvme_ctrlr.c
  stable/10/sys/dev/nvme/nvme_private.h

Modified: stable/10/sys/dev/nvme/nvme_ctrlr.c
==============================================================================
--- stable/10/sys/dev/nvme/nvme_ctrlr.c	Mon Jan 11 17:26:06 2016	(r293667)
+++ stable/10/sys/dev/nvme/nvme_ctrlr.c	Mon Jan 11 17:27:20 2016	(r293668)
@@ -160,7 +160,7 @@ nvme_ctrlr_construct_io_qpairs(struct nv
 				     num_trackers,
 				     ctrlr);
 
-		if (ctrlr->per_cpu_io_queues)
+		if (ctrlr->num_io_queues > 1)
 			bus_bind_intr(ctrlr->dev, qpair->res, i);
 	}
 
@@ -402,7 +402,6 @@ nvme_ctrlr_set_num_qpairs(struct nvme_co
 			nvme_io_qpair_destroy(&ctrlr->ioq[i]);
 
 		ctrlr->num_io_queues = 1;
-		ctrlr->per_cpu_io_queues = 0;
 	}
 
 	return (0);
@@ -779,7 +778,6 @@ nvme_ctrlr_configure_intx(struct nvme_co
 {
 
 	ctrlr->num_io_queues = 1;
-	ctrlr->per_cpu_io_queues = 0;
 	ctrlr->rid = 0;
 	ctrlr->res = bus_alloc_resource_any(ctrlr->dev, SYS_RES_IRQ,
 	    &ctrlr->rid, RF_SHAREABLE | RF_ACTIVE);
@@ -970,9 +968,8 @@ nvme_ctrlr_construct(struct nvme_control
 
 	per_cpu_io_queues = 1;
 	TUNABLE_INT_FETCH("hw.nvme.per_cpu_io_queues", &per_cpu_io_queues);
-	ctrlr->per_cpu_io_queues = per_cpu_io_queues ? TRUE : FALSE;
 
-	if (ctrlr->per_cpu_io_queues)
+	if (per_cpu_io_queues)
 		ctrlr->num_io_queues = mp_ncpus;
 	else
 		ctrlr->num_io_queues = 1;
@@ -1003,7 +1000,6 @@ nvme_ctrlr_construct(struct nvme_control
 	}
 
 	if (pci_msix_count(dev) < num_vectors_requested) {
-		ctrlr->per_cpu_io_queues = FALSE;
 		ctrlr->num_io_queues = 1;
 		num_vectors_requested = 2; /* one for admin, one for I/O */
 	}
@@ -1021,7 +1017,6 @@ nvme_ctrlr_construct(struct nvme_control
 			goto intx;
 		}
 
-		ctrlr->per_cpu_io_queues = FALSE;
 		ctrlr->num_io_queues = 1;
 		/*
 		 * Release whatever vectors were allocated, and just
@@ -1193,7 +1188,7 @@ nvme_ctrlr_submit_io_request(struct nvme
 {
 	struct nvme_qpair       *qpair;
 
-	if (ctrlr->per_cpu_io_queues)
+	if (ctrlr->num_io_queues > 1)
 		qpair = &ctrlr->ioq[curcpu];
 	else
 		qpair = &ctrlr->ioq[0];

Modified: stable/10/sys/dev/nvme/nvme_private.h
==============================================================================
--- stable/10/sys/dev/nvme/nvme_private.h	Mon Jan 11 17:26:06 2016	(r293667)
+++ stable/10/sys/dev/nvme/nvme_private.h	Mon Jan 11 17:27:20 2016	(r293668)
@@ -265,7 +265,6 @@ struct nvme_controller {
 	uint32_t		enable_aborts;
 
 	uint32_t		num_io_queues;
-	boolean_t		per_cpu_io_queues;
 
 	/* Fields for tracking progress during controller initialization. */
 	struct intr_config_hook	config_hook;


More information about the svn-src-all mailing list