Hi Douglas,
On Sat, Feb 7, 2026 at 10:04 PM Douglas Anderson [off-list ref] wrote:
quoted hunk ↗ jump to hunk
@@ -249,6 +255,28 @@ int mbox_send_message(struct mbox_chan *chan, void *mssg)
if (!chan || !chan->cl)
return -EINVAL;
+ /*
+ * The mailbox core gets confused when mbox_send_message() is called
+ * with NULL messages since the code directly stores messages in
+ * `active_req` and assumes that a NULL `active_req` means no request
+ * is active. This causes the core to call the mailbox controller a
+ * second time even if the previous message hasn't finished and also
+ * means the client's tx_done() callback will never be called. However,
+ * clients historically passed NULL anyway. Deprecate passing NULL
+ * here by adding a warning.
+ *
+ * Clients who don't have a message should switch to using
+ * mbox_ring_doorbell(), which explicitly documents the immediate
+ * sending of doorbells, the lack of txdone, and what happens if you
+ * mix doorbells and normal messages.
+ *
+ * TODO: when it's certain that all clients have transitioned, consider
+ * changing this to return -EINVAL.
+ */
+ if (!mssg)
+ dev_warn_once(chan->mbox->dev,
+ "NULL mailbox messages are deprecated\n");
Nit: maybe "NULL mailbox messages are deprecated, use
mbox_ring_doorbell instead" ?
Thanks,
Jassi