• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/amd64/vmm/intel/

Lines Matching refs:vtdmap

57 struct vtdmap {
123 static struct vtdmap *vtdmaps[DRHD_MAX_UNITS];
133 vtd_max_domains(struct vtdmap *vtdmap)
137 nd = VTD_CAP_ND(vtdmap->cap);
181 static struct vtdmap *
186 struct vtdmap *vtdmap;
201 vtdmap = vtdmaps[i];
202 return(vtdmap);
234 vtdmap = vtdmaps[i];
235 return (vtdmap);
245 vtd_wbflush(struct vtdmap *vtdmap)
248 if (VTD_ECAP_COHERENCY(vtdmap->ext_cap) == 0)
251 if (VTD_CAP_RWBF(vtdmap->cap)) {
252 vtdmap->gcr = VTD_GCR_WBF;
253 while ((vtdmap->gsr & VTD_GSR_WBFS) != 0)
259 vtd_ctx_global_invalidate(struct vtdmap *vtdmap)
262 vtdmap->ccr = VTD_CCR_ICC | VTD_CCR_CIRG_GLOBAL;
263 while ((vtdmap->ccr & VTD_CCR_ICC) != 0)
268 vtd_iotlb_global_invalidate(struct vtdmap *vtdmap)
273 vtd_wbflush(vtdmap);
275 offset = VTD_ECAP_IRO(vtdmap->ext_cap) * 16;
276 iotlb_reg = (volatile uint64_t *)((caddr_t)vtdmap + offset + 8);
289 vtd_translation_enable(struct vtdmap *vtdmap)
292 vtdmap->gcr = VTD_GCR_TE;
293 while ((vtdmap->gsr & VTD_GSR_TES) == 0)
298 vtd_translation_disable(struct vtdmap *vtdmap)
301 vtdmap->gcr = 0;
302 while ((vtdmap->gsr & VTD_GSR_TES) != 0)
310 struct vtdmap *vtdmap;
332 vtdmaps[units] = (struct vtdmap *)PHYS_TO_DMAP(mapaddr);
361 vtdmaps[units] = (struct vtdmap *)PHYS_TO_DMAP(drhd->Address);
375 vtdmap = vtdmaps[i];
377 if (VTD_CAP_CM(vtdmap->cap) != 0)
381 if ((tmp = vtd_max_domains(vtdmap)) < max_domains)
408 struct vtdmap *vtdmap;
411 vtdmap = vtdmaps[i];
412 vtd_wbflush(vtdmap);
415 vtdmap->rta = vtophys(root_table);
416 vtdmap->gcr = VTD_GCR_SRTP;
417 while ((vtdmap->gsr & VTD_GSR_RTPS) == 0)
420 vtd_ctx_global_invalidate(vtdmap);
421 vtd_iotlb_global_invalidate(vtdmap);
423 vtd_translation_enable(vtdmap);
431 struct vtdmap *vtdmap;
434 vtdmap = vtdmaps[i];
435 vtd_translation_disable(vtdmap);
446 struct vtdmap *vtdmap;
460 if ((vtdmap = vtd_device_scope(rid)) == NULL)
470 if (VTD_ECAP_DI(vtdmap->ext_cap))
488 struct vtdmap *vtdmap;
508 vtdmap = vtdmaps[i];
509 vtd_ctx_global_invalidate(vtdmap);
510 vtd_iotlb_global_invalidate(vtdmap);
624 struct vtdmap *vtdmap;
631 vtdmap = vtdmaps[i];
632 vtd_iotlb_global_invalidate(vtdmap);
642 struct vtdmap *vtdmap;
674 vtdmap = vtdmaps[i];
676 tmp &= VTD_CAP_SAGAW(vtdmap->cap);
720 vtdmap = vtdmaps[i];
722 dom->spsmask &= VTD_CAP_SPS(vtdmap->cap);