Re: [PATCH] nvme: clear the prp2 field of the nvme command.

From: Rao, Lei
Date: Mon Nov 28 2022 - 23:52:13 EST




On 11/29/2022 12:16 PM, Chaitanya Kulkarni wrote:
On 11/28/22 17:47, Lei Rao wrote:
If the prp2 field is not filled in nvme_setup_prp_simple(), the prp2
field is garbage data. According to nvme spec, the prp2 is reserved if
the data transfer does not cross a memory page boundary. Writing a
reserved coded value into a controller property field produces undefined
results, so it needs to be cleared in nvme_setup_rw().

Signed-off-by: Lei Rao <lei.rao@xxxxxxxxx>

if it is reserved then controller shoule ignore this field, no ?

It's feasible for the controller to ignore this field. But our controller has
stricter checks, and if prp2 is not used but has a value, some warnings will be
printed. According to the NVMe spec, it seems to write a reserved field produces
an undefined result, so maybe clearing it is better.

Thanks,
Lei


not sure if original author wanted to avoid an extra assignment
in the fast path with assumption that reserved fields should be
ignored if it is then we should avoid this, if not then looks good

Reviewed-by: Chaitanya Kulkarni <kch@xxxxxxxxxx>

-ck