From: Jani Nikula Date: Wed, 24 Sep 2025 16:43:38 +0000 (+0300) Subject: drm/{i915, xe}/stolen: use the stored i915/xe device pointer X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=994c74ea5e07ec93a8616602caaca95a70efdb21;p=thirdparty%2Fkernel%2Flinux.git drm/{i915, xe}/stolen: use the stored i915/xe device pointer Now that we store the i915/xe device pointer in struct intel_stolen_node, we can reduce parameter passing in a number of functions. Reviewed-by: Ville Syrjälä Link: https://lore.kernel.org/r/6f31114c8113ce2254d422ca53992088b673fb2f.1758732183.git.jani.nikula@intel.com Signed-off-by: Jani Nikula --- diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c index 05199434cb7c1..0d837527aaab2 100644 --- a/drivers/gpu/drm/i915/display/intel_fbc.c +++ b/drivers/gpu/drm/i915/display/intel_fbc.c @@ -388,9 +388,9 @@ static void i8xx_fbc_program_cfb(struct intel_fbc *fbc) i915_gem_stolen_node_offset(fbc->compressed_llb), U32_MAX)); intel_de_write(display, FBC_CFB_BASE, - i915_gem_stolen_node_address(i915, fbc->compressed_fb)); + i915_gem_stolen_node_address(fbc->compressed_fb)); intel_de_write(display, FBC_LL_BASE, - i915_gem_stolen_node_address(i915, fbc->compressed_llb)); + i915_gem_stolen_node_address(fbc->compressed_llb)); } static const struct intel_fbc_funcs i8xx_fbc_funcs = { @@ -836,20 +836,19 @@ static int find_compression_limit(struct intel_fbc *fbc, unsigned int size, int min_limit) { struct intel_display *display = fbc->display; - struct drm_i915_private *i915 = to_i915(display->drm); u64 end = intel_fbc_stolen_end(display); int ret, limit = min_limit; size /= limit; /* Try to over-allocate to reduce reallocations and fragmentation. */ - ret = i915_gem_stolen_insert_node_in_range(i915, fbc->compressed_fb, + ret = i915_gem_stolen_insert_node_in_range(fbc->compressed_fb, size <<= 1, 4096, 0, end); if (ret == 0) return limit; for (; limit <= intel_fbc_max_limit(display); limit <<= 1) { - ret = i915_gem_stolen_insert_node_in_range(i915, fbc->compressed_fb, + ret = i915_gem_stolen_insert_node_in_range(fbc->compressed_fb, size >>= 1, 4096, 0, end); if (ret == 0) return limit; @@ -871,8 +870,7 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc, i915_gem_stolen_node_allocated(fbc->compressed_llb)); if (DISPLAY_VER(display) < 5 && !display->platform.g4x) { - ret = i915_gem_stolen_insert_node(i915, fbc->compressed_llb, - 4096, 4096); + ret = i915_gem_stolen_insert_node(fbc->compressed_llb, 4096, 4096); if (ret) goto err; } @@ -893,7 +891,7 @@ static int intel_fbc_alloc_cfb(struct intel_fbc *fbc, err_llb: if (i915_gem_stolen_node_allocated(fbc->compressed_llb)) - i915_gem_stolen_remove_node(i915, fbc->compressed_llb); + i915_gem_stolen_remove_node(fbc->compressed_llb); err: if (i915_gem_stolen_initialized(i915)) drm_info_once(display->drm, @@ -946,16 +944,13 @@ static void intel_fbc_program_workarounds(struct intel_fbc *fbc) static void __intel_fbc_cleanup_cfb(struct intel_fbc *fbc) { - struct intel_display *display = fbc->display; - struct drm_i915_private *i915 = to_i915(display->drm); - if (WARN_ON(intel_fbc_hw_is_active(fbc))) return; if (i915_gem_stolen_node_allocated(fbc->compressed_llb)) - i915_gem_stolen_remove_node(i915, fbc->compressed_llb); + i915_gem_stolen_remove_node(fbc->compressed_llb); if (i915_gem_stolen_node_allocated(fbc->compressed_fb)) - i915_gem_stolen_remove_node(i915, fbc->compressed_fb); + i915_gem_stolen_remove_node(fbc->compressed_fb); } void intel_fbc_cleanup(struct intel_display *display) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c index 8bc71fb2a7650..b2812ec79d199 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c @@ -63,11 +63,10 @@ static int __i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, return ret; } -int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, - struct intel_stolen_node *node, u64 size, +int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size, unsigned int alignment, u64 start, u64 end) { - return __i915_gem_stolen_insert_node_in_range(i915, &node->node, + return __i915_gem_stolen_insert_node_in_range(node->i915, &node->node, size, alignment, start, end); } @@ -82,11 +81,10 @@ static int __i915_gem_stolen_insert_node(struct drm_i915_private *i915, U64_MAX); } -int i915_gem_stolen_insert_node(struct drm_i915_private *i915, - struct intel_stolen_node *node, u64 size, +int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size, unsigned int alignment) { - return __i915_gem_stolen_insert_node(i915, &node->node, size, alignment); + return __i915_gem_stolen_insert_node(node->i915, &node->node, size, alignment); } static void __i915_gem_stolen_remove_node(struct drm_i915_private *i915, @@ -97,10 +95,9 @@ static void __i915_gem_stolen_remove_node(struct drm_i915_private *i915, mutex_unlock(&i915->mm.stolen_lock); } -void i915_gem_stolen_remove_node(struct drm_i915_private *i915, - struct intel_stolen_node *node) +void i915_gem_stolen_remove_node(struct intel_stolen_node *node) { - __i915_gem_stolen_remove_node(i915, &node->node); + __i915_gem_stolen_remove_node(node->i915, &node->node); } static bool valid_stolen_size(struct drm_i915_private *i915, struct resource *dsm) @@ -1042,9 +1039,10 @@ u64 i915_gem_stolen_area_size(const struct drm_i915_private *i915) return resource_size(&i915->dsm.stolen); } -u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915, - const struct intel_stolen_node *node) +u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node) { + struct drm_i915_private *i915 = node->i915; + return i915->dsm.stolen.start + i915_gem_stolen_node_offset(node); } diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h index 25ec8325fb292..c670736f09e1b 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.h @@ -13,15 +13,12 @@ struct drm_i915_gem_object; struct drm_i915_private; struct intel_stolen_node; -int i915_gem_stolen_insert_node(struct drm_i915_private *i915, - struct intel_stolen_node *node, u64 size, +int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u64 size, unsigned alignment); -int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, - struct intel_stolen_node *node, u64 size, +int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u64 size, unsigned alignment, u64 start, u64 end); -void i915_gem_stolen_remove_node(struct drm_i915_private *i915, - struct intel_stolen_node *node); +void i915_gem_stolen_remove_node(struct intel_stolen_node *node); struct intel_memory_region * i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type, u16 instance); @@ -41,8 +38,7 @@ bool i915_gem_stolen_initialized(const struct drm_i915_private *i915); u64 i915_gem_stolen_area_address(const struct drm_i915_private *i915); u64 i915_gem_stolen_area_size(const struct drm_i915_private *i915); -u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915, - const struct intel_stolen_node *node); +u64 i915_gem_stolen_node_address(const struct intel_stolen_node *node); bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node); u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node); diff --git a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h index b0bc3efcaf6c1..7bdf73fad8bf6 100644 --- a/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h +++ b/drivers/gpu/drm/xe/compat-i915-headers/gem/i915_gem_stolen.h @@ -12,17 +12,13 @@ struct drm_device; struct intel_stolen_node; struct xe_device; -int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, - struct intel_stolen_node *node, +int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u32 size, u32 align, u32 start, u32 end); -int i915_gem_stolen_insert_node(struct xe_device *xe, - struct intel_stolen_node *node, - u32 size, u32 align); +int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u32 size, u32 align); -void i915_gem_stolen_remove_node(struct xe_device *xe, - struct intel_stolen_node *node); +void i915_gem_stolen_remove_node(struct intel_stolen_node *node); bool i915_gem_stolen_initialized(struct xe_device *xe); @@ -34,8 +30,7 @@ u64 i915_gem_stolen_area_address(const struct xe_device *xe); u64 i915_gem_stolen_area_size(const struct xe_device *xe); -u64 i915_gem_stolen_node_address(struct xe_device *xe, - struct intel_stolen_node *node); +u64 i915_gem_stolen_node_address(struct intel_stolen_node *node); u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node); diff --git a/drivers/gpu/drm/xe/display/xe_stolen.c b/drivers/gpu/drm/xe/display/xe_stolen.c index eea182b569a1c..c1afe70454d1d 100644 --- a/drivers/gpu/drm/xe/display/xe_stolen.c +++ b/drivers/gpu/drm/xe/display/xe_stolen.c @@ -11,11 +11,12 @@ struct intel_stolen_node { struct xe_bo *bo; }; -int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, - struct intel_stolen_node *node, +int i915_gem_stolen_insert_node_in_range(struct intel_stolen_node *node, u32 size, u32 align, u32 start, u32 end) { + struct xe_device *xe = node->xe; + struct xe_bo *bo; int err = 0; u32 flags = XE_BO_FLAG_PINNED | XE_BO_FLAG_STOLEN; @@ -41,9 +42,7 @@ int i915_gem_stolen_insert_node_in_range(struct xe_device *xe, return err; } -int i915_gem_stolen_insert_node(struct xe_device *xe, - struct intel_stolen_node *node, - u32 size, u32 align) +int i915_gem_stolen_insert_node(struct intel_stolen_node *node, u32 size, u32 align) { /* Not used on xe */ WARN_ON(1); @@ -51,8 +50,7 @@ int i915_gem_stolen_insert_node(struct xe_device *xe, return -ENODEV; } -void i915_gem_stolen_remove_node(struct xe_device *xe, - struct intel_stolen_node *node) +void i915_gem_stolen_remove_node(struct intel_stolen_node *node) { xe_bo_unpin_map_no_vm(node->bo); node->bo = NULL; @@ -92,9 +90,10 @@ u64 i915_gem_stolen_area_size(const struct xe_device *xe) return 0; } -u64 i915_gem_stolen_node_address(struct xe_device *xe, - struct intel_stolen_node *node) +u64 i915_gem_stolen_node_address(struct intel_stolen_node *node) { + struct xe_device *xe = node->xe; + return xe_ttm_stolen_gpu_offset(xe) + i915_gem_stolen_node_offset(node); }