@@ -297,16 +297,16 @@ int kfd_queue_acquire_buffers(struct kfd_process_device *pdd, struct queue_prope
297297 goto out_err_unreserve ;
298298 }
299299
300- if (properties -> ctx_save_restore_area_size != topo_dev -> node_props .cwsr_size ) {
301- pr_debug ("queue cwsr size 0x%x not equal to node cwsr size 0x%x\n" ,
300+ if (properties -> ctx_save_restore_area_size < topo_dev -> node_props .cwsr_size ) {
301+ pr_debug ("queue cwsr size 0x%x not sufficient for node cwsr size 0x%x\n" ,
302302 properties -> ctx_save_restore_area_size ,
303303 topo_dev -> node_props .cwsr_size );
304304 err = - EINVAL ;
305305 goto out_err_unreserve ;
306306 }
307307
308- total_cwsr_size = (topo_dev -> node_props . cwsr_size + topo_dev -> node_props . debug_memory_size )
309- * NUM_XCC (pdd -> dev -> xcc_mask );
308+ total_cwsr_size = (properties -> ctx_save_restore_area_size +
309+ topo_dev -> node_props . debug_memory_size ) * NUM_XCC (pdd -> dev -> xcc_mask );
310310 total_cwsr_size = ALIGN (total_cwsr_size , PAGE_SIZE );
311311
312312 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
352352 topo_dev = kfd_topology_device_by_id (pdd -> dev -> id );
353353 if (!topo_dev )
354354 return - EINVAL ;
355- total_cwsr_size = (topo_dev -> node_props . cwsr_size + topo_dev -> node_props . debug_memory_size )
356- * NUM_XCC (pdd -> dev -> xcc_mask );
355+ total_cwsr_size = (properties -> ctx_save_restore_area_size +
356+ topo_dev -> node_props . debug_memory_size ) * NUM_XCC (pdd -> dev -> xcc_mask );
357357 total_cwsr_size = ALIGN (total_cwsr_size , PAGE_SIZE );
358358
359359 kfd_queue_buffer_svm_put (pdd , properties -> ctx_save_restore_area_address , total_cwsr_size );
0 commit comments