nvme: new define for size of host memory buffer sizes
The nvme spec defines the various fields that specify sizes for host memory buffers in terms of 4096 chunks. So, rather than use a bare 4096 here, use NVME_HMB_UNITS. This is explicitly not the host page size of 4096, nor the default memory page size (mps) of the NVMe drive, but its own thing and needs its own define. No functional change is intended, only the logical spelling of 4k. Sponsored by: Netflix
This commit is contained in:
parent
0d46a96abf
commit
214df80a9c
@ -62,6 +62,9 @@
|
||||
/* Cap transfers by the maximum addressable by page-sized PRP (4KB -> 2MB). */
|
||||
#define NVME_MAX_XFER_SIZE MIN(maxphys, (PAGE_SIZE/8*PAGE_SIZE))
|
||||
|
||||
/* Host memory buffer sizes are always in 4096 byte chunks */
|
||||
#define NVME_HMB_UNITS 4096
|
||||
|
||||
/* Register field definitions */
|
||||
#define NVME_CAP_LO_REG_MQES_SHIFT (0)
|
||||
#define NVME_CAP_LO_REG_MQES_MASK (0xFFFF)
|
||||
|
@ -936,11 +936,11 @@ nvme_ctrlr_hmb_alloc(struct nvme_controller *ctrlr)
|
||||
max = (uint64_t)physmem * PAGE_SIZE / 20;
|
||||
TUNABLE_UINT64_FETCH("hw.nvme.hmb_max", &max);
|
||||
|
||||
min = (long long unsigned)ctrlr->cdata.hmmin * 4096;
|
||||
min = (long long unsigned)ctrlr->cdata.hmmin * NVME_HMB_UNITS;
|
||||
if (max == 0 || max < min)
|
||||
return;
|
||||
pref = MIN((long long unsigned)ctrlr->cdata.hmpre * 4096, max);
|
||||
minc = MAX(ctrlr->cdata.hmminds * 4096, PAGE_SIZE);
|
||||
pref = MIN((long long unsigned)ctrlr->cdata.hmpre * NVME_HMB_UNITS, max);
|
||||
minc = MAX(ctrlr->cdata.hmminds * NVME_HMB_UNITS, PAGE_SIZE);
|
||||
if (min > 0 && ctrlr->cdata.hmmaxd > 0)
|
||||
minc = MAX(minc, min / ctrlr->cdata.hmmaxd);
|
||||
ctrlr->hmb_chunk = pref;
|
||||
@ -1023,7 +1023,7 @@ nvme_ctrlr_hmb_alloc(struct nvme_controller *ctrlr)
|
||||
for (i = 0; i < ctrlr->hmb_nchunks; i++) {
|
||||
ctrlr->hmb_desc_vaddr[i].addr =
|
||||
htole64(ctrlr->hmb_chunks[i].hmbc_paddr);
|
||||
ctrlr->hmb_desc_vaddr[i].size = htole32(ctrlr->hmb_chunk / 4096);
|
||||
ctrlr->hmb_desc_vaddr[i].size = htole32(ctrlr->hmb_chunk / NVME_HMB_UNITS);
|
||||
}
|
||||
bus_dmamap_sync(ctrlr->hmb_desc_tag, ctrlr->hmb_desc_map,
|
||||
BUS_DMASYNC_PREWRITE);
|
||||
|
Loading…
Reference in New Issue
Block a user