On Thu, Oct 03, 2024 at 05:44:15PM +0200, Maarten Lankhorst wrote: > This is the first step to hide the details of struct xe_ggtt. > > Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> Reviewed-by: Matthew Brost <matthew.brost@xxxxxxxxx> > --- > drivers/gpu/drm/xe/xe_bo_evict.c | 9 ++------- > drivers/gpu/drm/xe/xe_ggtt.c | 16 +++++++++++++++- > drivers/gpu/drm/xe/xe_ggtt.h | 2 +- > 3 files changed, 18 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_bo_evict.c b/drivers/gpu/drm/xe/xe_bo_evict.c > index 541b49007d738..788c071af92e0 100644 > --- a/drivers/gpu/drm/xe/xe_bo_evict.c > +++ b/drivers/gpu/drm/xe/xe_bo_evict.c > @@ -146,13 +146,8 @@ int xe_bo_restore_kernel(struct xe_device *xe) > return ret; > } > > - if (bo->flags & XE_BO_FLAG_GGTT) { > - struct xe_tile *tile = bo->tile; > - > - mutex_lock(&tile->mem.ggtt->lock); > - xe_ggtt_map_bo(tile->mem.ggtt, bo); > - mutex_unlock(&tile->mem.ggtt->lock); > - } > + if (bo->flags & XE_BO_FLAG_GGTT) > + xe_ggtt_map_bo_unlocked(bo->tile->mem.ggtt, bo); > > /* > * We expect validate to trigger a move VRAM and our move code > diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c > index f68af56c3f865..1ffc0917e28fe 100644 > --- a/drivers/gpu/drm/xe/xe_ggtt.c > +++ b/drivers/gpu/drm/xe/xe_ggtt.c > @@ -579,7 +579,7 @@ bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node) > * @ggtt: the &xe_ggtt where node will be mapped > * @bo: the &xe_bo to be mapped > */ > -void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo) > +static void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo) > { > u16 cache_mode = bo->flags & XE_BO_FLAG_NEEDS_UC ? XE_CACHE_NONE : XE_CACHE_WB; > u16 pat_index = tile_to_xe(ggtt->tile)->pat.idx[cache_mode]; > @@ -597,6 +597,20 @@ void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo) > } > } > > +/** > + * xe_ggtt_map_bo_unlocked - Restore a mapping of a BO into GGTT > + * @ggtt: the &xe_ggtt where node will be mapped > + * @bo: the &xe_bo to be mapped > + * > + * This is used to restore a GGTT mapping after suspend. > + */ > +void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo) > +{ > + mutex_lock(&ggtt->lock); > + xe_ggtt_map_bo(ggtt, bo); > + mutex_unlock(&ggtt->lock); > +} > + > static int __xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo, > u64 start, u64 end) > { > diff --git a/drivers/gpu/drm/xe/xe_ggtt.h b/drivers/gpu/drm/xe/xe_ggtt.h > index 27e7d67de0047..bdf6d0733e2ca 100644 > --- a/drivers/gpu/drm/xe/xe_ggtt.h > +++ b/drivers/gpu/drm/xe/xe_ggtt.h > @@ -24,7 +24,7 @@ int xe_ggtt_node_insert_locked(struct xe_ggtt_node *node, > u32 size, u32 align, u32 mm_flags); > void xe_ggtt_node_remove(struct xe_ggtt_node *node, bool invalidate); > bool xe_ggtt_node_allocated(const struct xe_ggtt_node *node); > -void xe_ggtt_map_bo(struct xe_ggtt *ggtt, struct xe_bo *bo); > +void xe_ggtt_map_bo_unlocked(struct xe_ggtt *ggtt, struct xe_bo *bo); > int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo); > int xe_ggtt_insert_bo_at(struct xe_ggtt *ggtt, struct xe_bo *bo, > u64 start, u64 end); > -- > 2.45.2 >