diff options
Diffstat (limited to 'drivers/misc/cxl/file.c')
| -rw-r--r-- | drivers/misc/cxl/file.c | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/drivers/misc/cxl/file.c b/drivers/misc/cxl/file.c index 0761271d68c5..4bfad9f6dc9f 100644 --- a/drivers/misc/cxl/file.c +++ b/drivers/misc/cxl/file.c @@ -95,7 +95,6 @@ static int __afu_open(struct inode *inode, struct file *file, bool master)  	pr_devel("afu_open pe: %i\n", ctx->pe);  	file->private_data = ctx; -	cxl_ctx_get();  	/* indicate success */  	rc = 0; @@ -225,6 +224,12 @@ static long afu_ioctl_start_work(struct cxl_context *ctx,  	if (ctx->mm)  		mmput(ctx->mm); +	/* +	 * Increment driver use count. Enables global TLBIs for hash +	 * and callbacks to handle the segment table +	 */ +	cxl_ctx_get(); +  	trace_cxl_attach(ctx, work.work_element_descriptor, work.num_interrupts, amr);  	if ((rc = cxl_ops->attach_process(ctx, false, work.work_element_descriptor, @@ -233,6 +238,7 @@ static long afu_ioctl_start_work(struct cxl_context *ctx,  		cxl_adapter_context_put(ctx->afu->adapter);  		put_pid(ctx->pid);  		ctx->pid = NULL; +		cxl_ctx_put();  		cxl_context_mm_count_put(ctx);  		goto out;  	} |