mcctrl_wakeup_desc: refcount and fix timeouts

Change-Id: I14b34f031ffb10bfac6cef07d81f53a8dece767b
This commit is contained in:
Balazs Gerofi
2021-03-16 09:41:29 +09:00
committed by Masamichi Takagi
parent d5c5023bf8
commit 09173d353c
8 changed files with 200 additions and 92 deletions

View File

@@ -182,8 +182,6 @@ static int uti_remote_page_fault(struct mcctrl_usrdata *usrdata,
struct mcctrl_per_proc_data *ppd, int tid, int cpu)
{
int error;
struct mcctrl_wakeup_desc *desc;
int do_frees = 1;
struct ikc_scd_packet packet;
/* Request page fault */
@@ -192,20 +190,9 @@ static int uti_remote_page_fault(struct mcctrl_usrdata *usrdata,
packet.fault_reason = reason;
packet.fault_tid = tid;
/* we need to alloc desc ourselves because GFP_ATOMIC */
retry_alloc:
desc = kmalloc(sizeof(*desc), GFP_ATOMIC);
if (!desc) {
pr_warn("WARNING: coudln't alloc remote page fault wait desc, retrying..\n");
goto retry_alloc;
}
/* packet->target_cpu was set in rus_vm_fault if a thread was found */
error = mcctrl_ikc_send_wait(usrdata->os, cpu, &packet,
0, desc, &do_frees, 0);
if (do_frees) {
kfree(desc);
}
0, NULL, NULL, 0);
if (error < 0) {
pr_warn("%s: WARNING: failed to request uti remote page fault :%d\n",
__func__, error);