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) |