Lines Matching refs:afu

27 	fir1 = cxl_p1_read(ctx->afu->adapter, CXL_PSL_FIR1);  in handle_psl_slice_error()
28 fir2 = cxl_p1_read(ctx->afu->adapter, CXL_PSL_FIR2); in handle_psl_slice_error()
29 fir_slice = cxl_p1n_read(ctx->afu, CXL_PSL_FIR_SLICE_An); in handle_psl_slice_error()
30 serr = cxl_p1n_read(ctx->afu, CXL_PSL_SERR_An); in handle_psl_slice_error()
31 afu_debug = cxl_p1n_read(ctx->afu, CXL_AFU_DEBUG_An); in handle_psl_slice_error()
33 dev_crit(&ctx->afu->dev, "PSL ERROR STATUS: 0x%.16llx\n", errstat); in handle_psl_slice_error()
34 dev_crit(&ctx->afu->dev, "PSL_FIR1: 0x%.16llx\n", fir1); in handle_psl_slice_error()
35 dev_crit(&ctx->afu->dev, "PSL_FIR2: 0x%.16llx\n", fir2); in handle_psl_slice_error()
36 dev_crit(&ctx->afu->dev, "PSL_SERR_An: 0x%.16llx\n", serr); in handle_psl_slice_error()
37 dev_crit(&ctx->afu->dev, "PSL_FIR_SLICE_An: 0x%.16llx\n", fir_slice); in handle_psl_slice_error()
38 dev_crit(&ctx->afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%.16llx\n", afu_debug); in handle_psl_slice_error()
40 dev_crit(&ctx->afu->dev, "STOPPING CXL TRACE\n"); in handle_psl_slice_error()
41 cxl_stop_trace(ctx->afu->adapter); in handle_psl_slice_error()
48 struct cxl_afu *afu = data; in cxl_slice_irq_err() local
53 serr = cxl_p1n_read(afu, CXL_PSL_SERR_An); in cxl_slice_irq_err()
54 fir_slice = cxl_p1n_read(afu, CXL_PSL_FIR_SLICE_An); in cxl_slice_irq_err()
55 errstat = cxl_p2n_read(afu, CXL_PSL_ErrStat_An); in cxl_slice_irq_err()
56 afu_debug = cxl_p1n_read(afu, CXL_AFU_DEBUG_An); in cxl_slice_irq_err()
57 dev_crit(&afu->dev, "PSL_SERR_An: 0x%.16llx\n", serr); in cxl_slice_irq_err()
58 dev_crit(&afu->dev, "PSL_FIR_SLICE_An: 0x%.16llx\n", fir_slice); in cxl_slice_irq_err()
59 dev_crit(&afu->dev, "CXL_PSL_ErrStat_An: 0x%.16llx\n", errstat); in cxl_slice_irq_err()
60 dev_crit(&afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%.16llx\n", afu_debug); in cxl_slice_irq_err()
62 cxl_p1n_write(afu, CXL_PSL_SERR_An, serr); in cxl_slice_irq_err()
160 dev_err_ratelimited(&ctx->afu->dev, "CXL AFU Error " in cxl_irq()
182 static irqreturn_t fail_psl_irq(struct cxl_afu *afu, struct cxl_irq_info *irq_info) in fail_psl_irq() argument
185 cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE); in fail_psl_irq()
187 cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_A); in fail_psl_irq()
194 struct cxl_afu *afu = data; in cxl_irq_multiplexed() local
197 int ph = cxl_p2n_read(afu, CXL_PSL_PEHandle_An) & 0xffff; in cxl_irq_multiplexed()
200 if ((ret = cxl_get_irq(afu, &irq_info))) { in cxl_irq_multiplexed()
202 return fail_psl_irq(afu, &irq_info); in cxl_irq_multiplexed()
206 ctx = idr_find(&afu->contexts_idr, ph); in cxl_irq_multiplexed()
218 return fail_psl_irq(afu, &irq_info); in cxl_irq_multiplexed()
349 int cxl_register_serr_irq(struct cxl_afu *afu) in cxl_register_serr_irq() argument
354 afu->err_irq_name = kasprintf(GFP_KERNEL, "cxl-%s-err", in cxl_register_serr_irq()
355 dev_name(&afu->dev)); in cxl_register_serr_irq()
356 if (!afu->err_irq_name) in cxl_register_serr_irq()
359 if ((rc = cxl_register_one_irq(afu->adapter, cxl_slice_irq_err, afu, in cxl_register_serr_irq()
360 &afu->serr_hwirq, in cxl_register_serr_irq()
361 &afu->serr_virq, afu->err_irq_name))) { in cxl_register_serr_irq()
362 kfree(afu->err_irq_name); in cxl_register_serr_irq()
363 afu->err_irq_name = NULL; in cxl_register_serr_irq()
367 serr = cxl_p1n_read(afu, CXL_PSL_SERR_An); in cxl_register_serr_irq()
368 serr = (serr & 0x00ffffffffff0000ULL) | (afu->serr_hwirq & 0xffff); in cxl_register_serr_irq()
369 cxl_p1n_write(afu, CXL_PSL_SERR_An, serr); in cxl_register_serr_irq()
374 void cxl_release_serr_irq(struct cxl_afu *afu) in cxl_release_serr_irq() argument
376 cxl_p1n_write(afu, CXL_PSL_SERR_An, 0x0000000000000000); in cxl_release_serr_irq()
377 cxl_unmap_irq(afu->serr_virq, afu); in cxl_release_serr_irq()
378 cxl_release_one_irq(afu->adapter, afu->serr_hwirq); in cxl_release_serr_irq()
379 kfree(afu->err_irq_name); in cxl_release_serr_irq()
382 int cxl_register_psl_irq(struct cxl_afu *afu) in cxl_register_psl_irq() argument
386 afu->psl_irq_name = kasprintf(GFP_KERNEL, "cxl-%s", in cxl_register_psl_irq()
387 dev_name(&afu->dev)); in cxl_register_psl_irq()
388 if (!afu->psl_irq_name) in cxl_register_psl_irq()
391 if ((rc = cxl_register_one_irq(afu->adapter, cxl_irq_multiplexed, afu, in cxl_register_psl_irq()
392 &afu->psl_hwirq, &afu->psl_virq, in cxl_register_psl_irq()
393 afu->psl_irq_name))) { in cxl_register_psl_irq()
394 kfree(afu->psl_irq_name); in cxl_register_psl_irq()
395 afu->psl_irq_name = NULL; in cxl_register_psl_irq()
400 void cxl_release_psl_irq(struct cxl_afu *afu) in cxl_release_psl_irq() argument
402 cxl_unmap_irq(afu->psl_virq, afu); in cxl_release_psl_irq()
403 cxl_release_one_irq(afu->adapter, afu->psl_hwirq); in cxl_release_psl_irq()
404 kfree(afu->psl_irq_name); in cxl_release_psl_irq()
424 if ((rc = cxl_alloc_irq_ranges(&ctx->irqs, ctx->afu->adapter, count))) in afu_register_irqs()
428 ctx->irqs.offset[0] = ctx->afu->psl_hwirq; in afu_register_irqs()
449 dev_name(&ctx->afu->dev), in afu_register_irqs()
466 cxl_map_irq(ctx->afu->adapter, hwirq, in afu_register_irqs()
495 cxl_release_irq_ranges(&ctx->irqs, ctx->afu->adapter); in afu_release_irqs()