Subject: linux-next: manual merge of the drm tree with the origin tree

From: Mark Brown <[email-masked]>
Date: Mon, 23 Mar 2026 15:55:24 +0000

Hi all,

Today's linux-next merge of the drm tree got a conflict in:

  drivers/gpu/drm/xe/xe_ggtt.c

between commit:

  01f2557aa684e ("drm/xe: Open-code GGTT MMIO access protection")

from the origin tree and commit:

  e904c56ba6e0d ("drm/xe: Rewrite GGTT VF initialization")

from the drm tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

diff --cc drivers/gpu/drm/xe/xe_ggtt.c
index d1561ebe4e56c,0f2e3af499120..0000000000000
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@@ -379,18 -437,7 +439,8 @@@ int xe_ggtt_init_early(struct xe_ggtt *
  	if (err)
  		return err;
  
 +	ggtt->flags |= XE_GGTT_FLAGS_ONLINE;
- 	err = devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
- 	if (err)
- 		return err;
- 
- 	if (IS_SRIOV_VF(xe)) {
- 		err = xe_tile_sriov_vf_prepare_ggtt(ggtt->tile);
- 		if (err)
- 			return err;
- 	}
- 
- 	return 0;
+ 	return devm_add_action_or_reset(xe->drm.dev, dev_fini_ggtt, ggtt);
  }
  ALLOW_ERROR_INJECTION(xe_ggtt_init_early, ERRNO); /* See xe_pci_probe() */
  
@@@ -413,12 -465,15 +468,12 @@@ static void ggtt_node_fini(struct xe_gg
  static void ggtt_node_remove(struct xe_ggtt_node *node)
  {
  	struct xe_ggtt *ggtt = node->ggtt;
 -	struct xe_device *xe = tile_to_xe(ggtt->tile);
  	bool bound;
 -	int idx;
 -
 -	bound = drm_dev_enter(&xe->drm, &idx);
  
  	mutex_lock(&ggtt->lock);
 +	bound = ggtt->flags & XE_GGTT_FLAGS_ONLINE;
  	if (bound)
- 		xe_ggtt_clear(ggtt, node->base.start, node->base.size);
+ 		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);
@@@ -429,8 -484,10 +484,8 @@@
  	if (node->invalidate_on_remove)
  		xe_ggtt_invalidate(ggtt);
  
 -	drm_dev_exit(idx);
 -
  free_node:
- 	xe_ggtt_node_fini(node);
+ 	ggtt_node_fini(node);
  }
  
  static void ggtt_node_remove_work_func(struct work_struct *work)