diff options
author | Aaron Williams <awilliams@marvell.com> | 2019-08-22 20:37:26 -0700 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-08-26 11:46:28 -0400 |
commit | b21dcebfa6b372cd91bf42a30f1d8a1a525f329b (patch) | |
tree | b569c1f257b8ccda9ea47714414147ce7adbfc4d /drivers/cache/cache-uclass.c | |
parent | 4ebeb4c559f3604169a54f3a318bdabcc6047320 (diff) |
nvme: Fix PRP Offset Invalid
When large writes take place I saw a Samsung EVO 970+ return a status
value of 0x13, PRP Offset Invalid. I tracked this down to the
improper handling of PRP entries. The blocks the PRP entries are
placed in cannot cross a page boundary and thus should be allocated
on page boundaries. This is how the Linux kernel driver works.
With this patch, the PRP pool is allocated on a page boundary and
other than the very first allocation, the pool size is a multiple of
the page size. Each page can hold (4096 / 8) - 1 entries since the
last entry must point to the next page in the pool.
Signed-off-by: Aaron Williams <awilliams@marvell.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'drivers/cache/cache-uclass.c')
0 files changed, 0 insertions, 0 deletions