|
@@ -1619,7 +1619,7 @@ static void nvme_free_host_mem(struct nvme_dev *dev)
|
|
static int nvme_alloc_host_mem(struct nvme_dev *dev, u64 min, u64 preferred)
|
|
static int nvme_alloc_host_mem(struct nvme_dev *dev, u64 min, u64 preferred)
|
|
{
|
|
{
|
|
struct nvme_host_mem_buf_desc *descs;
|
|
struct nvme_host_mem_buf_desc *descs;
|
|
- u32 chunk_size, max_entries;
|
|
|
|
|
|
+ u32 chunk_size, max_entries, len;
|
|
int i = 0;
|
|
int i = 0;
|
|
void **bufs;
|
|
void **bufs;
|
|
u64 size = 0, tmp;
|
|
u64 size = 0, tmp;
|
|
@@ -1638,10 +1638,10 @@ retry:
|
|
if (!bufs)
|
|
if (!bufs)
|
|
goto out_free_descs;
|
|
goto out_free_descs;
|
|
|
|
|
|
- for (size = 0; size < preferred; size += chunk_size) {
|
|
|
|
- u32 len = min_t(u64, chunk_size, preferred - size);
|
|
|
|
|
|
+ for (size = 0; size < preferred; size += len) {
|
|
dma_addr_t dma_addr;
|
|
dma_addr_t dma_addr;
|
|
|
|
|
|
|
|
+ len = min_t(u64, chunk_size, preferred - size);
|
|
bufs[i] = dma_alloc_attrs(dev->dev, len, &dma_addr, GFP_KERNEL,
|
|
bufs[i] = dma_alloc_attrs(dev->dev, len, &dma_addr, GFP_KERNEL,
|
|
DMA_ATTR_NO_KERNEL_MAPPING | DMA_ATTR_NO_WARN);
|
|
DMA_ATTR_NO_KERNEL_MAPPING | DMA_ATTR_NO_WARN);
|
|
if (!bufs[i])
|
|
if (!bufs[i])
|