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 mailbox
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;
}
The mailbox_controller.h said that .last_tx_done() is used only if txdone_poll:=true && txdone_irq:=false.
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?
/**