On Wed, 2025-10-22 at 18:17 +0300, Jani Nikula wrote:
> Add intel_display_vtd_active() to utils. It's intentional duplication
> with i915_utils.h i915_vtd_active(), but reduces duplication with
> xe. Win some, lose some.
> 
> Signed-off-by: Jani Nikula <[email protected]>
> ---
>  drivers/gpu/drm/i915/display/intel_bw.c            |  4 ++--
>  drivers/gpu/drm/i915/display/intel_display.c       |  8 +++-----
>  drivers/gpu/drm/i915/display/intel_display_utils.c | 14 ++++++++++++++
>  drivers/gpu/drm/i915/display/intel_display_utils.h |  1 +
>  drivers/gpu/drm/i915/display/intel_fbc.c           |  4 +++-
>  drivers/gpu/drm/xe/display/ext/i915_utils.c        | 10 ----------
>  6 files changed, 23 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c 
> b/drivers/gpu/drm/i915/display/intel_bw.c
> index 92a060e02cf3..640a40805f18 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -13,6 +13,7 @@
>  #include "intel_display_core.h"
>  #include "intel_display_regs.h"
>  #include "intel_display_types.h"
> +#include "intel_display_utils.h"
>  #include "intel_mchbar_regs.h"
>  #include "intel_pcode.h"
>  #include "intel_uncore.h"
> @@ -842,14 +843,13 @@ static unsigned int intel_bw_num_active_planes(struct 
> intel_display *display,
>  static unsigned int intel_bw_data_rate(struct intel_display *display,
>                                      const struct intel_bw_state *bw_state)
>  {
> -     struct drm_i915_private *i915 = to_i915(display->drm);
>       unsigned int data_rate = 0;
>       enum pipe pipe;
>  
>       for_each_pipe(display, pipe)
>               data_rate += bw_state->data_rate[pipe];
>  
> -     if (DISPLAY_VER(display) >= 13 && i915_vtd_active(i915))
> +     if (DISPLAY_VER(display) >= 13 && intel_display_vtd_active(display))
>               data_rate = DIV_ROUND_UP(data_rate * 105, 100);
>  
>       return data_rate;
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index a8b4619de347..33174fb46ecb 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -76,6 +76,7 @@
>  #include "intel_display_regs.h"
>  #include "intel_display_rpm.h"
>  #include "intel_display_types.h"
> +#include "intel_display_utils.h"
>  #include "intel_display_wa.h"
>  #include "intel_dmc.h"
>  #include "intel_dp.h"
> @@ -830,9 +831,8 @@ static void intel_async_flip_vtd_wa(struct intel_display 
> *display,
>  static bool needs_async_flip_vtd_wa(const struct intel_crtc_state 
> *crtc_state)
>  {
>       struct intel_display *display = to_intel_display(crtc_state);
> -     struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
>  
> -     return crtc_state->uapi.async_flip && i915_vtd_active(i915) &&
> +     return crtc_state->uapi.async_flip && intel_display_vtd_active(display) 
> &&
>               (DISPLAY_VER(display) == 9 || display->platform.broadwell ||
>                display->platform.haswell);
>  }
> @@ -8313,7 +8313,5 @@ void i830_disable_pipe(struct intel_display *display, 
> enum pipe pipe)
>  
>  bool intel_scanout_needs_vtd_wa(struct intel_display *display)
>  {
> -     struct drm_i915_private *i915 = to_i915(display->drm);
> -
> -     return IS_DISPLAY_VER(display, 6, 11) && i915_vtd_active(i915);
> +     return IS_DISPLAY_VER(display, 6, 11) && 
> intel_display_vtd_active(display);
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_display_utils.c 
> b/drivers/gpu/drm/i915/display/intel_display_utils.c
> index 13d3999dd580..04d010f7c23e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_utils.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_utils.c
> @@ -1,10 +1,15 @@
>  // SPDX-License-Identifier: MIT
>  /* Copyright © 2025 Intel Corporation */
>  
> +#include <linux/device.h>
> +
> +#include <drm/drm_device.h>
> +
>  #ifdef CONFIG_X86
>  #include <asm/hypervisor.h>
>  #endif
>  
> +#include "intel_display_core.h"
>  #include "intel_display_utils.h"
>  
>  bool intel_display_run_as_guest(struct intel_display *display)
> @@ -16,3 +21,12 @@ bool intel_display_run_as_guest(struct intel_display 
> *display)
>       return false;
>  #endif
>  }
> +
> +bool intel_display_vtd_active(struct intel_display *display)
> +{
> +     if (device_iommu_mapped(display->drm->dev))
> +             return true;
> +
> +     /* Running as a guest, we assume the host is enforcing VT'd */
> +     return intel_display_run_as_guest(display);
> +}

This also looks quite much like an "inlineable" function, no?

--
Cheers,
Luca.


> diff --git a/drivers/gpu/drm/i915/display/intel_display_utils.h 
> b/drivers/gpu/drm/i915/display/intel_display_utils.h
> index e54e69afd959..af1e34bac720 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_utils.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_utils.h
> @@ -12,5 +12,6 @@ struct intel_display;
>  #define MHz(x) KHz(1000 * (x))
>  
>  bool intel_display_run_as_guest(struct intel_display *display);
> +bool intel_display_vtd_active(struct intel_display *display);
>  
>  #endif /* __INTEL_DISPLAY_UTILS__ */
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c 
> b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 10ef3136dadc..6f2cc01ea4a0 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -59,6 +59,7 @@
>  #include "intel_display_rpm.h"
>  #include "intel_display_trace.h"
>  #include "intel_display_types.h"
> +#include "intel_display_utils.h"
>  #include "intel_display_wa.h"
>  #include "intel_fbc.h"
>  #include "intel_fbc_regs.h"
> @@ -1472,7 +1473,8 @@ static int intel_fbc_check_plane(struct 
> intel_atomic_state *state,
>       }
>  
>       /* WaFbcTurnOffFbcWhenHyperVisorIsUsed:skl,bxt */
> -     if (i915_vtd_active(i915) && (display->platform.skylake || 
> display->platform.broxton)) {
> +     if (intel_display_vtd_active(display) &&
> +         (display->platform.skylake || display->platform.broxton)) {
>               plane_state->no_fbc_reason = "VT-d enabled";
>               return 0;
>       }
> diff --git a/drivers/gpu/drm/xe/display/ext/i915_utils.c 
> b/drivers/gpu/drm/xe/display/ext/i915_utils.c
> index 1421c2a7b64d..af9ec2abbaa1 100644
> --- a/drivers/gpu/drm/xe/display/ext/i915_utils.c
> +++ b/drivers/gpu/drm/xe/display/ext/i915_utils.c
> @@ -3,18 +3,8 @@
>   * Copyright © 2023 Intel Corporation
>   */
>  
> -#include "i915_drv.h"
>  #include "i915_utils.h"
>  
> -bool i915_vtd_active(struct drm_i915_private *i915)
> -{
> -     if (device_iommu_mapped(i915->drm.dev))
> -             return true;
> -
> -     /* Running as a guest, we assume the host is enforcing VT'd */
> -     return i915_run_as_guest();
> -}
> -
>  #if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
>  
>  /* i915 specific, just put here for shutting it up */

Reply via email to