/* * Certain Gen5 chipsets require idling the GPU before unmapping anything from * the GTT when VT-d is enabled.
*/ staticbool needs_idle_maps(struct drm_i915_private *i915)
{ /* * Query intel_iommu to see if we need the workaround. Presumably that * was loaded first.
*/ if (!i915_vtd_active(i915)) returnfalse;
if (GRAPHICS_VER(i915) == 5 && IS_MOBILE(i915)) returntrue;
returnfalse;
}
int intel_ggtt_gmch_probe(struct i915_ggtt *ggtt)
{ struct drm_i915_private *i915 = ggtt->vm.i915;
phys_addr_t gmadr_base; int ret;
ret = intel_gmch_probe(i915->gmch.pdev, to_pci_dev(i915->drm.dev), NULL); if (!ret) {
drm_err(&i915->drm, "failed to set up gmch\n"); return -EIO;
}
if (needs_idle_maps(i915)) {
drm_notice(&i915->drm, "Flushing DMA requests before IOMMU unmaps; performance may be degraded\n");
ggtt->do_idle_maps = true;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.