[Intel-gfx] [PATCH] drm/i915: Consolidate #ifdef CONFIG_INTEL_IOMMU
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Thu May 25 13:58:32 UTC 2017
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 at 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 at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list