mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
drm/amdkfd: relax checks for over allocation of save area
Over allocation of save area is not fatal, only under allocation is. ROCm has various components that independently claim authority over save area size. Unless KFD decides to claim single authority, relax size checks. Signed-off-by: Jonathan Kim <jonathan.kim@amd.com> Reviewed-by: Philip Yang <philip.yang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit 15bd4958fe38e763bc17b607ba55155254a01f55) Cc: stable@vger.kernel.org
This commit is contained in:
committed by
Alex Deucher
parent
bbe3c11503
commit
d15deafab5
@@ -297,16 +297,16 @@ int kfd_queue_acquire_buffers(struct kfd_process_device *pdd, struct queue_prope
|
|||||||
goto out_err_unreserve;
|
goto out_err_unreserve;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (properties->ctx_save_restore_area_size != topo_dev->node_props.cwsr_size) {
|
if (properties->ctx_save_restore_area_size < topo_dev->node_props.cwsr_size) {
|
||||||
pr_debug("queue cwsr size 0x%x not equal to node cwsr size 0x%x\n",
|
pr_debug("queue cwsr size 0x%x not sufficient for node cwsr size 0x%x\n",
|
||||||
properties->ctx_save_restore_area_size,
|
properties->ctx_save_restore_area_size,
|
||||||
topo_dev->node_props.cwsr_size);
|
topo_dev->node_props.cwsr_size);
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto out_err_unreserve;
|
goto out_err_unreserve;
|
||||||
}
|
}
|
||||||
|
|
||||||
total_cwsr_size = (topo_dev->node_props.cwsr_size + topo_dev->node_props.debug_memory_size)
|
total_cwsr_size = (properties->ctx_save_restore_area_size +
|
||||||
* NUM_XCC(pdd->dev->xcc_mask);
|
topo_dev->node_props.debug_memory_size) * NUM_XCC(pdd->dev->xcc_mask);
|
||||||
total_cwsr_size = ALIGN(total_cwsr_size, PAGE_SIZE);
|
total_cwsr_size = ALIGN(total_cwsr_size, PAGE_SIZE);
|
||||||
|
|
||||||
err = kfd_queue_buffer_get(vm, (void *)properties->ctx_save_restore_area_address,
|
err = kfd_queue_buffer_get(vm, (void *)properties->ctx_save_restore_area_address,
|
||||||
@@ -352,8 +352,8 @@ int kfd_queue_release_buffers(struct kfd_process_device *pdd, struct queue_prope
|
|||||||
topo_dev = kfd_topology_device_by_id(pdd->dev->id);
|
topo_dev = kfd_topology_device_by_id(pdd->dev->id);
|
||||||
if (!topo_dev)
|
if (!topo_dev)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
total_cwsr_size = (topo_dev->node_props.cwsr_size + topo_dev->node_props.debug_memory_size)
|
total_cwsr_size = (properties->ctx_save_restore_area_size +
|
||||||
* NUM_XCC(pdd->dev->xcc_mask);
|
topo_dev->node_props.debug_memory_size) * NUM_XCC(pdd->dev->xcc_mask);
|
||||||
total_cwsr_size = ALIGN(total_cwsr_size, PAGE_SIZE);
|
total_cwsr_size = ALIGN(total_cwsr_size, PAGE_SIZE);
|
||||||
|
|
||||||
kfd_queue_buffer_svm_put(pdd, properties->ctx_save_restore_area_address, total_cwsr_size);
|
kfd_queue_buffer_svm_put(pdd, properties->ctx_save_restore_area_address, total_cwsr_size);
|
||||||
|
|||||||
Reference in New Issue
Block a user