Skip to content
Commit b21dcebf authored by Aaron Williams's avatar Aaron Williams Committed by Tom Rini
Browse files

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: default avatarAaron Williams <awilliams@marvell.com>
Reviewed-by: default avatarBin Meng <bmeng.cn@gmail.com>
parent 4ebeb4c5
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment