Skip to content

Commit 74ad37a

Browse files
tnmyshmathieupoirier
authored andcommitted
mailbox: zynqmp: Fix IPI isr handling
Multiple IPI channels are mapped to same interrupt handler. Current isr implementation handles only one channel per isr. Fix this behavior by checking isr status bit of all child mailbox nodes. Fixes: 4981b82 ("mailbox: ZynqMP IPI mailbox controller") Signed-off-by: Tanmay Shah <tanmay.shah@amd.com> Acked-by: Michal Simek <michal.simek@amd.com> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20230311012407.1292118-3-tanmay.shah@amd.com Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
1 parent f72f805 commit 74ad37a

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

drivers/mailbox/zynqmp-ipi-mailbox.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ static irqreturn_t zynqmp_ipi_interrupt(int irq, void *data)
152152
struct zynqmp_ipi_message *msg;
153153
u64 arg0, arg3;
154154
struct arm_smccc_res res;
155-
int ret, i;
155+
int ret, i, status = IRQ_NONE;
156156

157157
(void)irq;
158158
arg0 = SMC_IPI_MAILBOX_STATUS_ENQUIRY;
@@ -170,11 +170,11 @@ static irqreturn_t zynqmp_ipi_interrupt(int irq, void *data)
170170
memcpy_fromio(msg->data, mchan->req_buf,
171171
msg->len);
172172
mbox_chan_received_data(chan, (void *)msg);
173-
return IRQ_HANDLED;
173+
status = IRQ_HANDLED;
174174
}
175175
}
176176
}
177-
return IRQ_NONE;
177+
return status;
178178
}
179179

180180
/**

0 commit comments

Comments
 (0)