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:These drivers didn't work on interrupt mode.
Hi Sudeep,Thanks, it does makes sense to me. I will have look.
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
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;
}
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.I wonder if we can ask the platform to avoid generating interrupts in those
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?
case by setting/clearing "Notify on completion" in shmem. Do you think that
would work ?
They poll the complete status of command.