idxd: Support running without an IOMMU

This requires handling vtophys entries that cross page boundaries.

Fixes #2316

Change-Id: I9e9aafc1612bc89375c783bcf91bd04ab523ab9e
Signed-off-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12217
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
This commit is contained in:
Ben Walker 2022-04-11 11:12:59 -07:00 committed by Tomasz Zawadzki
parent 366e19efe8
commit 7ac08606e9
2 changed files with 432 additions and 535 deletions

File diff suppressed because it is too large Load Diff

View File

@ -130,7 +130,8 @@ struct idxd_ops {
struct idxd_batch *batch; struct idxd_batch *batch;
struct idxd_hw_desc *desc; struct idxd_hw_desc *desc;
uint32_t *crc_dst; uint32_t *crc_dst;
char pad[12]; struct idxd_ops *parent;
uint32_t count;
STAILQ_ENTRY(idxd_ops) link; STAILQ_ENTRY(idxd_ops) link;
}; };
SPDK_STATIC_ASSERT(sizeof(struct idxd_ops) == 96, "size mismatch"); SPDK_STATIC_ASSERT(sizeof(struct idxd_ops) == 96, "size mismatch");