aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/nvme/nvme_ctrlr.c2
-rw-r--r--sys/dev/nvme/nvme_private.h5
2 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/nvme/nvme_ctrlr.c b/sys/dev/nvme/nvme_ctrlr.c
index aa41c8fe5540..a632d7fb68e9 100644
--- a/sys/dev/nvme/nvme_ctrlr.c
+++ b/sys/dev/nvme/nvme_ctrlr.c
@@ -389,7 +389,7 @@ nvme_ctrlr_enable(struct nvme_controller *ctrlr)
cc |= 4 << NVME_CC_REG_IOCQES_SHIFT; /* CQ entry size == 16 == 2^4 */
/* This evaluates to 0, which is according to spec. */
- cc |= (PAGE_SIZE >> 13) << NVME_CC_REG_MPS_SHIFT;
+ cc |= (PAGE_SHIFT - NVME_BASE_SHIFT) << NVME_CC_REG_MPS_SHIFT;
nvme_ctrlr_barrier(ctrlr, BUS_SPACE_BARRIER_WRITE);
nvme_mmio_write_4(ctrlr, cc, cc);
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h
index c889246f9350..977cc2c8d30d 100644
--- a/sys/dev/nvme/nvme_private.h
+++ b/sys/dev/nvme/nvme_private.h
@@ -97,6 +97,11 @@ MALLOC_DECLARE(M_NVME);
#define NVME_MAX_AER_LOG_SIZE (4096)
/*
+ * Page size parameters
+ */
+#define NVME_BASE_SHIFT 12 /* Several parameters (MSP) are 2^(12+x) */
+
+/*
* Define CACHE_LINE_SIZE here for older FreeBSD versions that do not define
* it.
*/