Lines Matching refs:ctx

23 	struct cxl_context  *ctx;  in cxl_dev_context_init()  local
29 ctx = cxl_context_alloc(); in cxl_dev_context_init()
30 if (IS_ERR(ctx)) { in cxl_dev_context_init()
31 rc = PTR_ERR(ctx); in cxl_dev_context_init()
35 ctx->kernelapi = true; in cxl_dev_context_init()
51 rc = cxl_context_init(ctx, afu, false, mapping); in cxl_dev_context_init()
55 cxl_assign_psn_space(ctx); in cxl_dev_context_init()
57 return ctx; in cxl_dev_context_init()
62 kfree(ctx); in cxl_dev_context_init()
85 int cxl_release_context(struct cxl_context *ctx) in cxl_release_context() argument
87 if (ctx->status >= STARTED) in cxl_release_context()
90 put_device(&ctx->afu->dev); in cxl_release_context()
92 cxl_context_free(ctx); in cxl_release_context()
98 int cxl_allocate_afu_irqs(struct cxl_context *ctx, int num) in cxl_allocate_afu_irqs() argument
101 num = ctx->afu->pp_irqs; in cxl_allocate_afu_irqs()
102 return afu_allocate_irqs(ctx, num); in cxl_allocate_afu_irqs()
106 void cxl_free_afu_irqs(struct cxl_context *ctx) in cxl_free_afu_irqs() argument
108 afu_irq_name_free(ctx); in cxl_free_afu_irqs()
109 cxl_release_irq_ranges(&ctx->irqs, ctx->afu->adapter); in cxl_free_afu_irqs()
113 static irq_hw_number_t cxl_find_afu_irq(struct cxl_context *ctx, int num) in cxl_find_afu_irq() argument
121 range = ctx->irqs.range[r]; in cxl_find_afu_irq()
123 return ctx->irqs.offset[r] + num; in cxl_find_afu_irq()
130 int cxl_map_afu_irq(struct cxl_context *ctx, int num, in cxl_map_afu_irq() argument
138 hwirq = cxl_find_afu_irq(ctx, num); in cxl_map_afu_irq()
142 return cxl_map_irq(ctx->afu->adapter, hwirq, handler, cookie, name); in cxl_map_afu_irq()
146 void cxl_unmap_afu_irq(struct cxl_context *ctx, int num, void *cookie) in cxl_unmap_afu_irq() argument
151 hwirq = cxl_find_afu_irq(ctx, num); in cxl_unmap_afu_irq()
165 int cxl_start_context(struct cxl_context *ctx, u64 wed, in cxl_start_context() argument
171 pr_devel("%s: pe: %i\n", __func__, ctx->pe); in cxl_start_context()
173 mutex_lock(&ctx->status_mutex); in cxl_start_context()
174 if (ctx->status == STARTED) in cxl_start_context()
178 ctx->pid = get_task_pid(task, PIDTYPE_PID); in cxl_start_context()
179 get_pid(ctx->pid); in cxl_start_context()
185 if ((rc = cxl_attach_process(ctx, kernel, wed , 0))) { in cxl_start_context()
186 put_pid(ctx->pid); in cxl_start_context()
191 ctx->status = STARTED; in cxl_start_context()
193 mutex_unlock(&ctx->status_mutex); in cxl_start_context()
198 int cxl_process_element(struct cxl_context *ctx) in cxl_process_element() argument
200 return ctx->pe; in cxl_process_element()
205 int cxl_stop_context(struct cxl_context *ctx) in cxl_stop_context() argument
207 return __detach_context(ctx); in cxl_stop_context()
211 void cxl_set_master(struct cxl_context *ctx) in cxl_set_master() argument
213 ctx->master = true; in cxl_set_master()
214 cxl_assign_psn_space(ctx); in cxl_set_master()
254 struct file *cxl_get_fd(struct cxl_context *ctx, struct file_operations *fops, in cxl_get_fd() argument
282 file = anon_inode_getfile("cxl", fops, ctx, flags); in cxl_get_fd()
286 file->f_mapping = ctx->mapping; in cxl_get_fd()
303 int cxl_start_work(struct cxl_context *ctx, in cxl_start_work() argument
310 work->num_interrupts = ctx->afu->pp_irqs; in cxl_start_work()
311 else if ((work->num_interrupts < ctx->afu->pp_irqs) || in cxl_start_work()
312 (work->num_interrupts > ctx->afu->irqs_max)) { in cxl_start_work()
316 rc = afu_register_irqs(ctx, work->num_interrupts); in cxl_start_work()
320 rc = cxl_start_context(ctx, work->work_element_descriptor, current); in cxl_start_work()
322 afu_release_irqs(ctx, ctx); in cxl_start_work()
330 void __iomem *cxl_psa_map(struct cxl_context *ctx) in cxl_psa_map() argument
332 struct cxl_afu *afu = ctx->afu; in cxl_psa_map()
341 return ioremap(ctx->psn_phys, ctx->psn_size); in cxl_psa_map()
351 int cxl_afu_reset(struct cxl_context *ctx) in cxl_afu_reset() argument
353 struct cxl_afu *afu = ctx->afu; in cxl_afu_reset()