> -----Original Message----- > From: Intel-xe <[email protected]> On Behalf Of > Matthew Brost > Sent: Monday, March 16, 2026 10:03 AM > To: [email protected] > Cc: [email protected] > Subject: [RFC PATCH 04/12] drm/xe: Issue GGTT invalidation under lock in > ggtt_node_remove > > Async work (e.g., GuC queue teardowns) can call ggtt_node_remove, so the > operation must be performed under the GGTT lock to ensure the GGTT online > check remains stable. GGTT insertion and removal are heavyweight operations > (e.g., queue create/destroy), so the additional serialization cost is > negligible > compared to ensuring correctness. > > Fixes: 4f3a998a173b ("drm/xe: Open-code GGTT MMIO access protection") > Signed-by: Matthew Brost <[email protected]> HI, please take care of nitpick here "Signed-off-by" before merging. > --- > drivers/gpu/drm/xe/xe_ggtt.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c > index 017f679ba13f..353b324f7301 100644 > --- a/drivers/gpu/drm/xe/xe_ggtt.c > +++ b/drivers/gpu/drm/xe/xe_ggtt.c > @@ -482,15 +482,10 @@ static void ggtt_node_remove(struct xe_ggtt_node > *node) > xe_ggtt_clear(ggtt, xe_ggtt_node_addr(node), > xe_ggtt_node_size(node)); > drm_mm_remove_node(&node->base); > node->base.size = 0; > - mutex_unlock(&ggtt->lock); > - > - if (!bound) > - goto free_node; > - > - if (node->invalidate_on_remove) > + if (bound && node->invalidate_on_remove) > xe_ggtt_invalidate(ggtt); > + mutex_unlock(&ggtt->lock); Looks good to me, Reviewed-by: Dnyaneshwar Bhadane <[email protected]> Dnyaneshwar > > -free_node: > ggtt_node_fini(node); > } > > -- > 2.34.1
