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:
Volodymyr Babchuk authored and Julien Grall committed 2019-09-23 11:23:41 +01:00
1 parent 847c18e681
commit 208bef44c6
1 file changed
+5 -8
+5 -8
View File
@@ -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;
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.