mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-22 23:45:40 -04:00
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ä <ville.syrjala@linux.intel.com> Link: https://lore.kernel.org/r/6f31114c8113ce2254d422ca53992088b673fb2f.1758732183.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user