]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: Introduce pin_params.needs_physical
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 16 Apr 2026 17:44:43 +0000 (20:44 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 21 Apr 2026 10:11:21 +0000 (13:11 +0300)
Add a new flag pin_params.needs_physical to inform the pinning
code that the display needs a physical address and not GGTT
address.

This isn't strictly necessary as the current phys_alignment!=0
check is enough in practice. But theoretically one could have
needs_physical==true without any alignment requirements. And
having an explicit flag feels a bit less magical.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20260416174448.28264-8-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_fb_pin.h
drivers/gpu/drm/i915/i915_fb_pin.c

index cf54a96569de195ad1093bcbabfb3adc6d2bc660..3e37e9874f50f49355fff27b99f16751b676984b 100644 (file)
@@ -21,6 +21,7 @@ struct intel_fb_pin_params {
        unsigned int vtd_guard;
        bool needs_cpu_lmem_access;
        bool needs_low_address;
+       bool needs_physical;
 };
 
 struct i915_vma *
index 97e4cdfd24479630767968064dc0b51d9d026f68..bfe9a5342e13614170f386b9371b57490c39426a 100644 (file)
@@ -148,7 +148,7 @@ intel_fb_pin_to_ggtt(const struct drm_framebuffer *fb,
        i915_gem_ww_ctx_init(&ww, true);
 retry:
        ret = i915_gem_object_lock(obj, &ww);
-       if (!ret && pin_params->phys_alignment)
+       if (!ret && pin_params->needs_physical)
                ret = i915_gem_object_attach_phys(obj, pin_params->phys_alignment);
        else if (!ret && HAS_LMEM(i915))
                ret = i915_gem_object_migrate(obj, &ww, INTEL_REGION_LMEM_0);
@@ -271,6 +271,7 @@ int intel_plane_pin_fb(struct intel_plane_state *plane_state,
                        .vtd_guard = intel_plane_fb_vtd_guard(plane_state),
                        .needs_cpu_lmem_access = intel_fb_needs_cpu_access(&fb->base),
                        .needs_low_address = intel_plane_needs_low_address(display),
+                       .needs_physical = intel_plane_needs_physical(plane),
                };
                int fence_id = -1;