diff options
| author | Christian König <[email protected]> | 2021-07-15 12:17:19 +0000 |
|---|---|---|
| committer | Christian König <[email protected]> | 2022-01-26 14:30:19 +0000 |
| commit | fda8d552c9c7783d4b29aeb6350d7404b31cdbff (patch) | |
| tree | 5522b74728e5ef71e87ba35c6c4de3e0008b8e33 /drivers/gpu/drm/ttm/ttm_resource.c | |
| parent | drm/ttm: add back a reference to the bdev to the res manager (diff) | |
| download | kernel-fda8d552c9c7783d4b29aeb6350d7404b31cdbff.tar.gz kernel-fda8d552c9c7783d4b29aeb6350d7404b31cdbff.zip | |
drm/ttm: add a weak BO reference to the resource v3
Keep track for which BO a resource was allocated.
This is necessary to move the LRU handling into the resources.
A bit problematic is i915 since it tries to use the resource
interface without a BO which is illegal from the conceptional
point of view.
v2: Document that this is a weak reference and add a workaround for i915
v3: further document that this is protected by ttm_device::lru_lock and
clarify the i915 workaround
Signed-off-by: Christian König <[email protected]>
Acked-by: Huang Rui <[email protected]>
Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
Diffstat (limited to 'drivers/gpu/drm/ttm/ttm_resource.c')
| -rw-r--r-- | drivers/gpu/drm/ttm/ttm_resource.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c index 4717128633e9..68344c90549b 100644 --- a/drivers/gpu/drm/ttm/ttm_resource.c +++ b/drivers/gpu/drm/ttm/ttm_resource.c @@ -49,6 +49,7 @@ void ttm_resource_init(struct ttm_buffer_object *bo, res->bus.offset = 0; res->bus.is_iomem = false; res->bus.caching = ttm_cached; + res->bo = bo; } EXPORT_SYMBOL(ttm_resource_init); @@ -139,6 +140,14 @@ bool ttm_resource_compat(struct ttm_resource *res, } EXPORT_SYMBOL(ttm_resource_compat); +void ttm_resource_set_bo(struct ttm_resource *res, + struct ttm_buffer_object *bo) +{ + spin_lock(&bo->bdev->lru_lock); + res->bo = bo; + spin_unlock(&bo->bdev->lru_lock); +} + /** * ttm_resource_manager_init * |
