FAILED: patch "[PATCH] drm/amdkfd: Don't acquire buffers during CRIU queue restore." failed to apply to 6.12-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x 8a93f77aec65574b8152c88eb73613336f92f86b
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026091650-boat-lustiness-e6a0@gregkh' --subject-prefix 'PATCH 6.12.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 8a93f77aec65574b8152c88eb73613336f92f86b Mon Sep 17 00:00:00 2001
From: David Francis <[email protected]>
Date: Tue, 30 Jun 2026 09:58:18 -0400
Subject: [PATCH] drm/amdkfd: Don't acquire buffers during CRIU queue restore.
kfd_criu_restore_queue's call of kfd_queue_acquire_buffers was failing for multiple reasons
- The ctl_stack_size set by the CRIU plugin doesn't match what is expected by acquire_buffers
- The svm buffer cannot be acquired at this point because CRIU may not have restored it, or may have restored it to a different address.
The only reason acquire_buffers was necessary here was to avoid a null ptr dereference in init_user_queue.
Just put in a check for that dereference; it doesn't appear to come up in real use cases right now. That is, there is no usage of CRIU with shared MES.
This is a partial revert of
commit 20a5e7ffdfec ("drm/amdkfd: Properly acquire queue buffers in CRIU restore")
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +5 -8
@@ -265,6 +265,11 @@ static int init_user_queue(struct process_queue_manager *pqm, (*q)->process = pqm->process;if (dev->kfd->shared_resources.enable_mes) { +if (!q_properties->wptr_bo) { +pr_debug ("Queue initialization with shared MES requires queue buffers to be initialized\n" ); +return -EINVAL ; + } + retval = amdgpu_amdkfd_alloc_kernel_mem(dev->adev, AMDGPU_MES_GANG_CTX_SIZE, AMDGPU_GEM_DOMAIN_GTT,
@@ -1042,18 +1047,10 @@ int kfd_criu_restore_queue(struct kfd_process *p,memset (&qp,0 ,sizeof (qp));set_queue_properties_from_criu (&qp, q_data,NUM_XCC (pdd->dev->adev->gfx.xcc_mask)); - ret =kfd_queue_acquire_buffers (pdd, &qp); -if (ret) { -pr_debug ("failed to acquire user queue buffers for CRIU\n" ); - goto exit; - } -print_queue_properties (&qp); ret =pqm_create_queue (&p->pqm, pdd->dev, &qp, &queue_id, q_data, mqd, ctl_stack,NULL );if (ret) { -kfd_queue_unref_bo_vas (pdd, &qp); -kfd_queue_release_buffers (pdd, &qp);pr_err ("Failed to create new queue err:%d\n" , ret); goto exit; }