As talked about in the first patch in this series, passing NULL as the
'mssg' argument to mbox_send_message() ends up causing confusion and
quirky behavior inside the mailbox core. Despite this, there are a
number of drivers that pass NULL.
It is plausible that some of the drivers passing NULL may have been
taking advantage of the quirks of the mailbox core. Specifically, they
may have been taking advantage that calling "tx_done" wasn't truly
necessary for NULL messages (it was a noop) or that NULL messages were
passed onto the mailbox controller right away without queuing.
This series introduces a new API call: mbox_ring_doorbell(). The new
API call tries to mimic the specific quirks that were helpful in the
old behavior and it's expected to be a nearly drop-in replacement.
There are some subtle differences between the new call and the old
behavior, but it's expected that all of these differences are only for
cases where the old behavior made little sense. The description of the
first patch details these differences.
The series attempts to convert all in-tree users to stop passing NULL
for mssg. As per above, there are some slight differences in behavior.
If any of the patches are causing problems, they can safely be
reverted while debugging the problems. Eventually, all code should be
converted over to stop passing NULL mssg.
Changes in v2:
- Instead of just documenting NULL, introduce a new function
Douglas Anderson (15):
mailbox: Deprecate NULL mbox messages; Introduce mbox_ring_doorbell()
ACPI: PCC: Use mbox_ring_doorbell() instead of NULL message
firmware: arm_scmi: Use mbox_ring_doorbell() instead of NULL message
firmware: imx-dsp: Use mbox_ring_doorbell() instead of NULL message
firmware: tegra: bpmp: Use mbox_ring_doorbell() instead of NULL
message
irqchip/qcom-mpm: Use mbox_ring_doorbell() instead of NULL message
remoteproc: xlnx: Use mbox_ring_doorbell() instead of NULL message
rpmsg: qcom_glink_rpm: Use mbox_ring_doorbell() instead of NULL
message
rpmsg: glink: smem: Use mbox_ring_doorbell() instead of NULL message
rpmsg: qcom_smd: Use mbox_ring_doorbell() instead of NULL message
soc: qcom: aoss: Use mbox_ring_doorbell() instead of NULL message
soc: qcom: smp2p: Use mbox_ring_doorbell() instead of NULL message
soc: qcom: smsm: Use mbox_ring_doorbell() instead of NULL message
soc: ti: wkup_m3_ipc: Use mbox_ring_doorbell() instead of NULL message
drivers: firmware: xilinx: Use mbox_ring_doorbell() instead of NULL
message
drivers/acpi/acpi_pcc.c | 4 +-
.../firmware/arm_scmi/transports/mailbox.c | 8 +-
drivers/firmware/imx/imx-dsp.c | 2 +-
drivers/firmware/tegra/bpmp-tegra186.c | 4 +-
drivers/irqchip/irq-qcom-mpm.c | 2 +-
drivers/mailbox/mailbox.c | 82 ++++++++++++++++++-
drivers/remoteproc/xlnx_r5_remoteproc.c | 2 +-
drivers/rpmsg/qcom_glink_rpm.c | 3 +-
drivers/rpmsg/qcom_glink_smem.c | 3 +-
drivers/rpmsg/qcom_smd.c | 13 +--
drivers/soc/qcom/qcom_aoss.c | 3 +-
drivers/soc/qcom/smp2p.c | 8 +-
drivers/soc/qcom/smsm.c | 8 +-
drivers/soc/ti/wkup_m3_ipc.c | 10 +--
drivers/soc/xilinx/zynqmp_power.c | 2 +-
include/linux/mailbox_client.h | 1 +
include/linux/mailbox_controller.h | 4 +-
17 files changed, 108 insertions(+), 51 deletions(-)
--
2.53.0.rc2.204.g2597b5adb4-goog