From 1416ef361e009baffeb4556d01e5bfb010873911 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Mon, 17 Mar 2014 22:37:17 +0000 Subject: [PATCH] nvme: NVMe specification dictates 4-byte alignment for PRPs (not 8). Sponsored by: Intel MFC after: 3 days --- sys/dev/nvme/nvme_qpair.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/dev/nvme/nvme_qpair.c b/sys/dev/nvme/nvme_qpair.c index e6b1e0a8cad..1ca78cf00a9 100644 --- a/sys/dev/nvme/nvme_qpair.c +++ b/sys/dev/nvme/nvme_qpair.c @@ -498,8 +498,9 @@ nvme_qpair_construct(struct nvme_qpair *qpair, uint32_t id, mtx_init(&qpair->lock, "nvme qpair lock", NULL, MTX_DEF); + /* Note: NVMe PRP format is restricted to 4-byte alignment. */ bus_dma_tag_create(bus_get_dma_tag(ctrlr->dev), - sizeof(uint64_t), PAGE_SIZE, BUS_SPACE_MAXADDR, + 4, PAGE_SIZE, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL, NVME_MAX_XFER_SIZE, (NVME_MAX_XFER_SIZE/PAGE_SIZE)+1, PAGE_SIZE, 0, NULL, NULL, &qpair->dma_tag);