HomeFreeBSD

nvme: Add handling for bar5

Description

nvme: Add handling for bar5

The NVMe spec allows the Table BIR (TBIR) and PBA DIR (PBIR) to
be 0, 4, or 5. The existing NVMe driver basically only has support
for 4, perhaps under the assumption that BAR4 is 64-bit and also
occupies BAR5.

This change adds support for BAR5, covering the case where BAR4
and BAR5 might both be present and 32-bit, where the Table BIR
might be 4 and the PBA BIR might be 5, or vice versa.

The NVMe spec (in the SR-IOV section) also permits VFs to use BIR=2,
so I haven't added stricter checks on which BIR will be permitted
by the driver.

This enables FreeBSD on Google Compute Engine C4 Machines.

MFC after: 3 days
Reviewed by: imp
Sponsored by: Google
Co-authored-by: Matt Delco <delco@google.com>
Signed-off-by: Jasper Tran O'Leary <jtranoleary@google.com>
Differential Revision: https://reviews.freebsd.org/D53140

(cherry picked from commit 7b32f4f0a7fe9b1b2f5a3905ca15f656713255ad)

Details

Provenance
jtranoleary_google.comAuthored on Tue, Oct 28, 8:43 PM
ziaeeCommitted on Tue, Nov 4, 6:16 PM
Reviewer
imp
Differential Revision
D53140: nvme: Add handling for bar5
Parents
rG94360584542a: ipfw: pmod: avoid further rule processing after tcp-mod failures
Branches
Unknown
Tags
Unknown