提交 7bb5d91a 编写于 作者: M Michael Neuling 提交者: Michael Ellerman

cxl: Rework context lifetimes

This reworks contexts lifetimes a bit to enable the kernel API where we may
want to reuse contexts. Here we will want to start and stop contexts without
freeing them.

Start context does the get pid & ctx so stop context will need to do the puts.
Here we move put pid & ctx to the detach context path which will become part of
the stop context path.
Signed-off-by: NMichael Neuling <mikey@neuling.org>
Acked-by: NIan Munsie <imunsie@au1.ibm.com>
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 2f663527
......@@ -186,6 +186,9 @@ int __detach_context(struct cxl_context *ctx)
return -EBUSY;
WARN_ON(cxl_detach_process(ctx));
flush_work(&ctx->fault_work); /* Only needed for dedicated process */
put_pid(ctx->pid);
cxl_ctx_put();
return 0;
}
......@@ -204,7 +207,6 @@ void cxl_context_detach(struct cxl_context *ctx)
return;
afu_release_irqs(ctx, ctx);
flush_work(&ctx->fault_work); /* Only needed for dedicated process */
wake_up_all(&ctx->wq);
}
......@@ -245,7 +247,6 @@ static void reclaim_ctx(struct rcu_head *rcu)
free_page((u64)ctx->sstp);
ctx->sstp = NULL;
put_pid(ctx->pid);
kfree(ctx);
}
......
......@@ -128,7 +128,6 @@ static int afu_release(struct inode *inode, struct file *file)
*/
cxl_context_free(ctx);
cxl_ctx_put();
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册