mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
xen/arm: optee: check for preemption while freeing shared buffers
We can check for hypercall_preempt_check() in the loop inside optee_relinquish_resources() to increase hypervisor responsiveness in case if preemption is required. Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com> Acked-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
1 parent
847c18e681
commit
208bef44c6
1 file changed
+5
-8
@@ -633,17 +633,14 @@ static int optee_relinquish_resources(struct domain *d)
|
||||
list_for_each_entry_safe( shm_rpc, shm_rpc_tmp, &ctx->shm_rpc_list, list )
|
||||
free_shm_rpc(ctx, shm_rpc->cookie);
|
||||
|
||||
if ( hypercall_preempt_check() )
|
||||
return -ERESTART;
|
||||
|
||||
/*
|
||||
* TODO: Guest can pin up to MAX_TOTAL_SMH_BUF_PG pages and all of
|
||||
* them will be put in this loop. It is worth considering to
|
||||
* check for preemption inside the loop.
|
||||
*/
|
||||
list_for_each_entry_safe( optee_shm_buf, optee_shm_buf_tmp,
|
||||
&ctx->optee_shm_buf_list, list )
|
||||
{
|
||||
if ( hypercall_preempt_check() )
|
||||
return -ERESTART;
|
||||
|
||||
free_optee_shm_buf(ctx, optee_shm_buf->cookie);
|
||||
}
|
||||
|
||||
if ( hypercall_preempt_check() )
|
||||
return -ERESTART;
|
||||
|
||||