diff options
Diffstat (limited to 'drivers/misc/cxl/irq.c')
| -rw-r--r-- | drivers/misc/cxl/irq.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/misc/cxl/irq.c b/drivers/misc/cxl/irq.c index c294925f73ee..c8929c526691 100644 --- a/drivers/misc/cxl/irq.c +++ b/drivers/misc/cxl/irq.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <misc/cxl.h> | 17 | #include <misc/cxl.h> |
| 18 | 18 | ||
| 19 | #include "cxl.h" | 19 | #include "cxl.h" |
| 20 | #include "trace.h" | ||
| 20 | 21 | ||
| 21 | /* XXX: This is implementation specific */ | 22 | /* XXX: This is implementation specific */ |
| 22 | static irqreturn_t handle_psl_slice_error(struct cxl_context *ctx, u64 dsisr, u64 errstat) | 23 | static irqreturn_t handle_psl_slice_error(struct cxl_context *ctx, u64 dsisr, u64 errstat) |
| @@ -100,6 +101,8 @@ static irqreturn_t cxl_irq(int irq, void *data, struct cxl_irq_info *irq_info) | |||
| 100 | dsisr = irq_info->dsisr; | 101 | dsisr = irq_info->dsisr; |
| 101 | dar = irq_info->dar; | 102 | dar = irq_info->dar; |
| 102 | 103 | ||
| 104 | trace_cxl_psl_irq(ctx, irq, dsisr, dar); | ||
| 105 | |||
| 103 | pr_devel("CXL interrupt %i for afu pe: %i DSISR: %#llx DAR: %#llx\n", irq, ctx->pe, dsisr, dar); | 106 | pr_devel("CXL interrupt %i for afu pe: %i DSISR: %#llx DAR: %#llx\n", irq, ctx->pe, dsisr, dar); |
| 104 | 107 | ||
| 105 | if (dsisr & CXL_PSL_DSISR_An_DS) { | 108 | if (dsisr & CXL_PSL_DSISR_An_DS) { |
| @@ -167,6 +170,7 @@ static irqreturn_t cxl_irq(int irq, void *data, struct cxl_irq_info *irq_info) | |||
| 167 | } | 170 | } |
| 168 | 171 | ||
| 169 | cxl_ack_irq(ctx, CXL_PSL_TFC_An_A, 0); | 172 | cxl_ack_irq(ctx, CXL_PSL_TFC_An_A, 0); |
| 173 | return IRQ_HANDLED; | ||
| 170 | } | 174 | } |
| 171 | if (dsisr & CXL_PSL_DSISR_An_OC) | 175 | if (dsisr & CXL_PSL_DSISR_An_OC) |
| 172 | pr_devel("CXL interrupt: OS Context Warning\n"); | 176 | pr_devel("CXL interrupt: OS Context Warning\n"); |
| @@ -237,6 +241,7 @@ static irqreturn_t cxl_irq_afu(int irq, void *data) | |||
| 237 | return IRQ_HANDLED; | 241 | return IRQ_HANDLED; |
| 238 | } | 242 | } |
| 239 | 243 | ||
| 244 | trace_cxl_afu_irq(ctx, afu_irq, irq, hwirq); | ||
| 240 | pr_devel("Received AFU interrupt %i for pe: %i (virq %i hwirq %lx)\n", | 245 | pr_devel("Received AFU interrupt %i for pe: %i (virq %i hwirq %lx)\n", |
| 241 | afu_irq, ctx->pe, irq, hwirq); | 246 | afu_irq, ctx->pe, irq, hwirq); |
| 242 | 247 | ||
| @@ -436,7 +441,7 @@ int afu_register_irqs(struct cxl_context *ctx, u32 count) | |||
| 436 | */ | 441 | */ |
| 437 | INIT_LIST_HEAD(&ctx->irq_names); | 442 | INIT_LIST_HEAD(&ctx->irq_names); |
| 438 | for (r = 1; r < CXL_IRQ_RANGES; r++) { | 443 | for (r = 1; r < CXL_IRQ_RANGES; r++) { |
| 439 | for (i = 0; i < ctx->irqs.range[r]; hwirq++, i++) { | 444 | for (i = 0; i < ctx->irqs.range[r]; i++) { |
| 440 | irq_name = kmalloc(sizeof(struct cxl_irq_name), | 445 | irq_name = kmalloc(sizeof(struct cxl_irq_name), |
| 441 | GFP_KERNEL); | 446 | GFP_KERNEL); |
| 442 | if (!irq_name) | 447 | if (!irq_name) |
