Re: [PATCH] nvme-pci: fix prp list allocation

From: Matt Waltz
Date: Sat Feb 12 2022 - 15:54:40 EST


That is the wrong part of the specification, describing the PRP entries,
not the list pointer. The relevant portion of the spec (2.0a figure
109 page 129) says:

If this entry is not the first PRP entry in the command or a
PRP List pointer in a command, then the Offset portion of this
field shall be cleared to 0h


On Sat, Feb 12, 2022 at 1:48 PM Keith Busch <kbusch@xxxxxxxxxx> wrote:
>
> On Sat, Feb 12, 2022 at 01:06:49PM -0700, Matthew Waltz wrote:
> > Fixes kernel block errors originating from the hard-coded 256-byte
> > alignment of dma_pool_create(). The NVMe specification requires a PRP
> > List PBAO offset field of 0h, i.e. a PRP List must be aligned to the
> > configured 4096-byte memory page size.
>
> That is not correct. The spec (2.0a section 4.1.1) says:
>
> The first PRP List entry [...] shall be qword aligned and may also
> have a non-zero offset within the memory page.