Re: [PATCH] mailbox: pcc: Notify clients on polled completion
From: lihuisong (C)
Date: Wed Jun 17 2026 - 22:04:38 EST
Hi Sudeep,
On 6/13/2026 1:02 AM, Sudeep Holla wrote:
PCC channels without a platform interrupt rely on the mailboxThe mailbox_controller.h said that .last_tx_done() is used only if txdone_poll:=true && txdone_irq:=false.
polling path to detect command completion.
That path currently only reports transmit completion to the mailbox
core, so clients that wait for their receive callback do not get
notified when the command completes.
Call mbox_chan_received_data() when polling observes completion on a
channel without a platform IRQ, matching the interrupt-driven
completion path.
Reported-by: Cristian Marussi <cristian.marussi@xxxxxxx>
Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxxxxx>
---
drivers/mailbox/pcc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c
index 636879ae1db7..7c9451ab4527 100644
--- a/drivers/mailbox/pcc.c
+++ b/drivers/mailbox/pcc.c
@@ -447,9 +447,14 @@ static int pcc_send_data(struct mbox_chan *chan, void *data)
static bool pcc_last_tx_done(struct mbox_chan *chan)
{
+ bool ret;
struct pcc_chan_info *pchan = chan->con_priv;
- return pcc_mbox_cmd_complete_check(pchan);
+ ret = pcc_mbox_cmd_complete_check(pchan);
+ if (ret && !pchan->plat_irq)
+ mbox_chan_received_data(chan, NULL);
+
+ return ret;
}
How about add a verification at the begining of this function? like "if (chan->txdone_method != MBOX_TXDONE_BY_POLL) return false;"
And then call mbox_chan_received_data() directly if command completed.
This patch is ok to me if has above changes.
Acked-by: lihuisong@xxxxxxxxxx
But pcc mbox controller can no longer work in MBOX_TXDONE_BY_ACK after your commit:
3349f800609e (mailbox: pcc: Set txdone_irq/txdone_poll based on PCCT flags).
This may lead to above client drivers fail to send mailbox command, like cppc_acpi,hisi_uncore_freq and kunpeng_hccs.
Because these client driver knows tx_done(knows_txdone: true), work on this mode and need to call mbox_client_txdone.
Do you have some idea for this?
/**