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);
+}
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 */
-- 
2.47.3

Reply via email to