mirror of
https://github.com/torvalds/linux.git
synced 2026-04-23 00:55:48 -04:00
The current attempted split between xe/i915 vs. display for intel_frontbuffer is a mess: - the i915 rcu leaks through the interface to the display side - the obj->frontbuffer write-side is now protected by a display specific spinlock even though the actual obj->framebuffer pointer lives in a i915 specific structure - the kref is getting poked directly from both sides - i915_active is still on the display side Clean up the mess by moving everything about the frontbuffer lifetime management to the i915/xe side: - the rcu usage is now completely contained in i915 - frontbuffer_lock is moved into i915 - kref is on the i915/xe side (xe needs the refcount as well due to intel_frontbuffer_queue_flush()->intel_frontbuffer_ref()) - the bo (and its refcounting) is no longer on the display side - i915_active is contained in i915 I was pondering whether we could do this in some kind of smaller steps, and perhaps we could, but it would probably have to start with a bunch of reverts (which for sure won't go cleanly anymore). So not convinced it's worth the hassle. Acked-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/20251016185408.22735-10-ville.syrjala@linux.intel.com
37 lines
605 B
C
37 lines
605 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright © 2023 Intel Corporation
|
|
*/
|
|
|
|
#ifndef I915_VMA_H
|
|
#define I915_VMA_H
|
|
|
|
#include <uapi/drm/i915_drm.h>
|
|
|
|
#include "xe_ggtt_types.h"
|
|
|
|
#include <linux/refcount.h>
|
|
|
|
/* We don't want these from i915_drm.h in case of Xe */
|
|
#undef I915_TILING_X
|
|
#undef I915_TILING_Y
|
|
#define I915_TILING_X 0
|
|
#define I915_TILING_Y 0
|
|
|
|
struct xe_bo;
|
|
|
|
struct i915_vma {
|
|
refcount_t ref;
|
|
struct xe_bo *bo, *dpt;
|
|
struct xe_ggtt_node *node;
|
|
};
|
|
|
|
#define i915_vma_fence_id(vma) -1
|
|
|
|
static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
|
|
{
|
|
return vma->node->base.start;
|
|
}
|
|
|
|
#endif
|