aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-11-18 20:18:22 -0500
committerTom Rini <trini@konsulko.com>2021-11-18 20:18:22 -0500
commit8e2a782af3c1ec80b7cff05942e743ee80ab22f0 (patch)
tree83918da1e98589a8e607e4eff08f89fa367c7dc9
parent7a9b76814716df6685bcb5e4752ea732e2fe8885 (diff)
Revert "nvme: Fix error in nvme_setup_prps"
Dependent commit has unaddressed review comments. This reverts commit c4eef59faab6ae4ecb1beae6d4391b0889bc3ff3. Signed-off-by: Tom Rini <trini@konsulko.com>
-rw-r--r--drivers/nvme/nvme.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 22ded626a5..9623c896a1 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -100,7 +100,7 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
}
nprps = DIV_ROUND_UP(length, page_size);
- num_pages = DIV_ROUND_UP(nprps + 1, prps_per_page);
+ num_pages = DIV_ROUND_UP(nprps, prps_per_page);
if (nprps > dev->prp_entry_num) {
free(dev->prp_pool);
@@ -119,11 +119,10 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
prp_pool = dev->prp_pool;
i = 0;
while (nprps) {
- if (i == prps_per_page) {
- *(prp_pool + i) = *(prp_pool + i - 1);
- *(prp_pool + i - 1) = cpu_to_le64((ulong)prp_pool +
+ if (i == ((page_size >> 3) - 1)) {
+ *(prp_pool + i) = cpu_to_le64((ulong)prp_pool +
page_size);
- i = 1;
+ i = 0;
prp_pool += page_size;
}
*(prp_pool + i++) = cpu_to_le64(dma_addr);