Re: [PATCH] mailbox: pcc: Notify clients on polled completion

From: lihuisong (C)

Date: Mon Jun 22 2026 - 08:54:59 EST



On 6/18/2026 8:06 PM, Sudeep Holla wrote:
On Thu, Jun 18, 2026 at 10:04:12AM +0800, lihuisong (C) wrote:
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.

Thanks, it does makes sense to me. I will have look.

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?
I wonder if we can ask the platform to avoid generating interrupts in those
case by setting/clearing "Notify on completion" in shmem. Do you think that
would work ?
These drivers didn't work on interrupt mode.
They poll the complete status of command.