Message ID | 20170525121612.2190-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 25/05/2017 13:16, Chris Wilson wrote: > We depend on intel_iommu_gfx_mapped for various workarounds, but that is > only available under an #ifdef CONFIG_INTEL_IOMMU. Refactor all the > cut-and-paste ifdefs to a common routine. > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > --- > drivers/gpu/drm/i915/i915_drv.h | 15 ++++++++------- > drivers/gpu/drm/i915/i915_gem.c | 4 +--- > drivers/gpu/drm/i915/i915_gem_gtt.c | 14 +++----------- > drivers/gpu/drm/i915/i915_gem_stolen.c | 4 +--- > drivers/gpu/drm/i915/intel_fbc.c | 4 +--- > 5 files changed, 14 insertions(+), 27 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index a5a01b683d48..9ba22427c05c 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -2997,23 +2997,24 @@ intel_info(const struct drm_i915_private *dev_priv) > > #include "i915_trace.h" > > -static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) > +static inline bool intel_vtd_active(void) > { > #ifdef CONFIG_INTEL_IOMMU > - if (INTEL_GEN(dev_priv) >= 6 && intel_iommu_gfx_mapped) > + if (intel_iommu_gfx_mapped) > return true; > #endif > return false; > } > > +static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) > +{ > + return INTEL_GEN(dev_priv) >= 6 && intel_vtd_active(); > +} > + > static inline bool > intel_ggtt_update_needs_vtd_wa(struct drm_i915_private *dev_priv) > { > -#ifdef CONFIG_INTEL_IOMMU > - if (IS_BROXTON(dev_priv) && intel_iommu_gfx_mapped) > - return true; > -#endif > - return false; > + return IS_BROXTON(dev_priv) && intel_vtd_active(); > } > > int intel_sanitize_enable_ppgtt(struct drm_i915_private *dev_priv, > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index a637cc05cc4a..7ab47a84671f 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -4728,11 +4728,9 @@ bool intel_sanitize_semaphores(struct drm_i915_private *dev_priv, int value) > if (value >= 0) > return value; > > -#ifdef CONFIG_INTEL_IOMMU > /* Enable semaphores on SNB when IO remapping is off */ > - if (INTEL_INFO(dev_priv)->gen == 6 && intel_iommu_gfx_mapped) > + if (IS_GEN6(dev_priv) && intel_vtd_active()) > return false; > -#endif > > return true; > } > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 13292eb4e827..0c1008a2bbda 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -168,13 +168,11 @@ int intel_sanitize_enable_ppgtt(struct drm_i915_private *dev_priv, > if (enable_ppgtt == 3 && has_full_48bit_ppgtt) > return 3; > > -#ifdef CONFIG_INTEL_IOMMU > /* Disable ppgtt on SNB if VT-d is on. */ > - if (IS_GEN6(dev_priv) && intel_iommu_gfx_mapped) { > + if (IS_GEN6(dev_priv) && intel_vtd_active()) { > DRM_INFO("Disabling PPGTT because VT-d is on\n"); > return 0; > } > -#endif > > /* Early VLV doesn't have this */ > if (IS_VALLEYVIEW(dev_priv) && dev_priv->drm.pdev->revision < 0xb) { > @@ -1992,14 +1990,10 @@ void i915_ppgtt_release(struct kref *kref) > */ > static bool needs_idle_maps(struct drm_i915_private *dev_priv) > { > -#ifdef CONFIG_INTEL_IOMMU > /* Query intel_iommu to see if we need the workaround. Presumably that > * was loaded first. > */ > - if (IS_GEN5(dev_priv) && IS_MOBILE(dev_priv) && intel_iommu_gfx_mapped) > - return true; > -#endif > - return false; > + return IS_GEN5(dev_priv) && IS_MOBILE(dev_priv) && intel_vtd_active(); > } > > void i915_check_and_clear_faults(struct drm_i915_private *dev_priv) > @@ -3039,10 +3033,8 @@ int i915_ggtt_probe_hw(struct drm_i915_private *dev_priv) > ggtt->base.total >> 20); > DRM_DEBUG_DRIVER("GMADR size = %lldM\n", ggtt->mappable_end >> 20); > DRM_DEBUG_DRIVER("GTT stolen size = %uM\n", ggtt->stolen_size >> 20); > -#ifdef CONFIG_INTEL_IOMMU > - if (intel_iommu_gfx_mapped) > + if (intel_vtd_active()) > DRM_INFO("VT-d active for gfx access\n"); > -#endif > > return 0; > } > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c > index f3abdc27c5dd..681db6083f4d 100644 > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c > @@ -414,12 +414,10 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv) > return 0; > } > > -#ifdef CONFIG_INTEL_IOMMU > - if (intel_iommu_gfx_mapped && INTEL_GEN(dev_priv) < 8) { > + if (intel_vtd_active() && INTEL_GEN(dev_priv) < 8) { > DRM_INFO("DMAR active, disabling use of stolen memory\n"); > return 0; > } > -#endif > > if (ggtt->stolen_size == 0) > return 0; > diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c > index db7f8f0a1f36..ff2fc5bc4af4 100644 > --- a/drivers/gpu/drm/i915/intel_fbc.c > +++ b/drivers/gpu/drm/i915/intel_fbc.c > @@ -1312,14 +1312,12 @@ static int intel_sanitize_fbc_option(struct drm_i915_private *dev_priv) > > static bool need_fbc_vtd_wa(struct drm_i915_private *dev_priv) > { > -#ifdef CONFIG_INTEL_IOMMU > /* WaFbcTurnOffFbcWhenHyperVisorIsUsed:skl,bxt */ > - if (intel_iommu_gfx_mapped && > + if (intel_vtd_active() && > (IS_SKYLAKE(dev_priv) || IS_BROXTON(dev_priv))) { > DRM_INFO("Disabling framebuffer compression (FBC) to prevent screen flicker with VT-d enabled\n"); > return true; > } > -#endif > > return false; > } > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Regards, Tvrtko
On Thu, May 25, 2017 at 02:58:32PM +0100, Tvrtko Ursulin wrote: > > On 25/05/2017 13:16, Chris Wilson wrote: > >We depend on intel_iommu_gfx_mapped for various workarounds, but that is > >only available under an #ifdef CONFIG_INTEL_IOMMU. Refactor all the > >cut-and-paste ifdefs to a common routine. > > > >Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Thanks for checking it over, pushed. -Chris
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index a5a01b683d48..9ba22427c05c 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2997,23 +2997,24 @@ intel_info(const struct drm_i915_private *dev_priv) #include "i915_trace.h" -static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) +static inline bool intel_vtd_active(void) { #ifdef CONFIG_INTEL_IOMMU - if (INTEL_GEN(dev_priv) >= 6 && intel_iommu_gfx_mapped) + if (intel_iommu_gfx_mapped) return true; #endif return false; } +static inline bool intel_scanout_needs_vtd_wa(struct drm_i915_private *dev_priv) +{ + return INTEL_GEN(dev_priv) >= 6 && intel_vtd_active(); +} + static inline bool intel_ggtt_update_needs_vtd_wa(struct drm_i915_private *dev_priv) { -#ifdef CONFIG_INTEL_IOMMU - if (IS_BROXTON(dev_priv) && intel_iommu_gfx_mapped) - return true; -#endif - return false; + return IS_BROXTON(dev_priv) && intel_vtd_active(); } int intel_sanitize_enable_ppgtt(struct drm_i915_private *dev_priv, diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index a637cc05cc4a..7ab47a84671f 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -4728,11 +4728,9 @@ bool intel_sanitize_semaphores(struct drm_i915_private *dev_priv, int value) if (value >= 0) return value; -#ifdef CONFIG_INTEL_IOMMU /* Enable semaphores on SNB when IO remapping is off */ - if (INTEL_INFO(dev_priv)->gen == 6 && intel_iommu_gfx_mapped) + if (IS_GEN6(dev_priv) && intel_vtd_active()) return false; -#endif return true; } diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index 13292eb4e827..0c1008a2bbda 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -168,13 +168,11 @@ int intel_sanitize_enable_ppgtt(struct drm_i915_private *dev_priv, if (enable_ppgtt == 3 && has_full_48bit_ppgtt) return 3; -#ifdef CONFIG_INTEL_IOMMU /* Disable ppgtt on SNB if VT-d is on. */ - if (IS_GEN6(dev_priv) && intel_iommu_gfx_mapped) { + if (IS_GEN6(dev_priv) && intel_vtd_active()) { DRM_INFO("Disabling PPGTT because VT-d is on\n"); return 0; } -#endif /* Early VLV doesn't have this */ if (IS_VALLEYVIEW(dev_priv) && dev_priv->drm.pdev->revision < 0xb) { @@ -1992,14 +1990,10 @@ void i915_ppgtt_release(struct kref *kref) */ static bool needs_idle_maps(struct drm_i915_private *dev_priv) { -#ifdef CONFIG_INTEL_IOMMU /* Query intel_iommu to see if we need the workaround. Presumably that * was loaded first. */ - if (IS_GEN5(dev_priv) && IS_MOBILE(dev_priv) && intel_iommu_gfx_mapped) - return true; -#endif - return false; + return IS_GEN5(dev_priv) && IS_MOBILE(dev_priv) && intel_vtd_active(); } void i915_check_and_clear_faults(struct drm_i915_private *dev_priv) @@ -3039,10 +3033,8 @@ int i915_ggtt_probe_hw(struct drm_i915_private *dev_priv) ggtt->base.total >> 20); DRM_DEBUG_DRIVER("GMADR size = %lldM\n", ggtt->mappable_end >> 20); DRM_DEBUG_DRIVER("GTT stolen size = %uM\n", ggtt->stolen_size >> 20); -#ifdef CONFIG_INTEL_IOMMU - if (intel_iommu_gfx_mapped) + if (intel_vtd_active()) DRM_INFO("VT-d active for gfx access\n"); -#endif return 0; } diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c index f3abdc27c5dd..681db6083f4d 100644 --- a/drivers/gpu/drm/i915/i915_gem_stolen.c +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c @@ -414,12 +414,10 @@ int i915_gem_init_stolen(struct drm_i915_private *dev_priv) return 0; } -#ifdef CONFIG_INTEL_IOMMU - if (intel_iommu_gfx_mapped && INTEL_GEN(dev_priv) < 8) { + if (intel_vtd_active() && INTEL_GEN(dev_priv) < 8) { DRM_INFO("DMAR active, disabling use of stolen memory\n"); return 0; } -#endif if (ggtt->stolen_size == 0) return 0; diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c index db7f8f0a1f36..ff2fc5bc4af4 100644 --- a/drivers/gpu/drm/i915/intel_fbc.c +++ b/drivers/gpu/drm/i915/intel_fbc.c @@ -1312,14 +1312,12 @@ static int intel_sanitize_fbc_option(struct drm_i915_private *dev_priv) static bool need_fbc_vtd_wa(struct drm_i915_private *dev_priv) { -#ifdef CONFIG_INTEL_IOMMU /* WaFbcTurnOffFbcWhenHyperVisorIsUsed:skl,bxt */ - if (intel_iommu_gfx_mapped && + if (intel_vtd_active() && (IS_SKYLAKE(dev_priv) || IS_BROXTON(dev_priv))) { DRM_INFO("Disabling framebuffer compression (FBC) to prevent screen flicker with VT-d enabled\n"); return true; } -#endif return false; }
We depend on intel_iommu_gfx_mapped for various workarounds, but that is only available under an #ifdef CONFIG_INTEL_IOMMU. Refactor all the cut-and-paste ifdefs to a common routine. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> --- drivers/gpu/drm/i915/i915_drv.h | 15 ++++++++------- drivers/gpu/drm/i915/i915_gem.c | 4 +--- drivers/gpu/drm/i915/i915_gem_gtt.c | 14 +++----------- drivers/gpu/drm/i915/i915_gem_stolen.c | 4 +--- drivers/gpu/drm/i915/intel_fbc.c | 4 +--- 5 files changed, 14 insertions(+), 27 deletions(-)