Page MenuHomeFreeBSD

D26373.diff
No OneTemporary

D26373.diff

Index: head/sys/dev/iommu/iommu.h
===================================================================
--- head/sys/dev/iommu/iommu.h
+++ head/sys/dev/iommu/iommu.h
@@ -135,6 +135,7 @@
u_long loads; /* atomic updates, for stat only */
u_long unloads; /* same */
u_int flags; /* (u) */
+ uint16_t rid; /* (c) pci RID */
};
/* struct iommu_ctx flags */
Index: head/sys/x86/iommu/intel_ctx.c
===================================================================
--- head/sys/x86/iommu/intel_ctx.c
+++ head/sys/x86/iommu/intel_ctx.c
@@ -118,9 +118,9 @@
dmar = CTX2DMAR(ctx);
- ctxp = dmar_map_pgtbl(dmar->ctx_obj, 1 +
- PCI_RID2BUS(ctx->rid), IOMMU_PGF_NOALLOC | IOMMU_PGF_WAITOK, sfp);
- ctxp += ctx->rid & 0xff;
+ ctxp = dmar_map_pgtbl(dmar->ctx_obj, 1 + PCI_RID2BUS(ctx->context.rid),
+ IOMMU_PGF_NOALLOC | IOMMU_PGF_WAITOK, sfp);
+ ctxp += ctx->context.rid & 0xff;
return (ctxp);
}
@@ -386,7 +386,7 @@
ctx->context.domain = DOM2IODOM(domain);
ctx->context.tag = malloc(sizeof(struct bus_dma_tag_iommu),
M_DMAR_CTX, M_WAITOK | M_ZERO);
- ctx->rid = rid;
+ ctx->context.rid = rid;
ctx->refs = 1;
return (ctx);
}
@@ -643,8 +643,9 @@
error = dmar_flush_for_ctx_entry(dmar, true);
/* If flush failed, rolling back would not work as well. */
printf("dmar%d rid %x domain %d->%d %s-mapped\n",
- dmar->iommu.unit, ctx->rid, old_domain->domain, domain->domain,
- (domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0 ? "id" : "re");
+ dmar->iommu.unit, ctx->context.rid, old_domain->domain,
+ domain->domain, (domain->iodom.flags & IOMMU_DOMAIN_IDMAP) != 0 ?
+ "id" : "re");
dmar_unref_domain_locked(dmar, old_domain);
TD_PINNED_ASSERT;
return (error);
@@ -776,7 +777,7 @@
LIST_FOREACH(domain, &dmar->domains, link) {
LIST_FOREACH(ctx, &domain->contexts, link) {
- if (ctx->rid == rid)
+ if (ctx->context.rid == rid)
return (ctx);
}
}
Index: head/sys/x86/iommu/intel_dmar.h
===================================================================
--- head/sys/x86/iommu/intel_dmar.h
+++ head/sys/x86/iommu/intel_dmar.h
@@ -75,7 +75,6 @@
struct dmar_ctx {
struct iommu_ctx context;
- uint16_t rid; /* (c) pci RID */
uint64_t last_fault_rec[2]; /* Last fault reported */
LIST_ENTRY(dmar_ctx) link; /* (u) Member in the domain list */
u_int refs; /* (u) References from tags */

File Metadata

Mime Type
text/plain
Expires
Tue, Jan 21, 2:53 AM (19 h, 43 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15995273
Default Alt Text
D26373.diff (2 KB)

Event Timeline