linux/drivers/mailbox
Jassi Brar c7dacf5b0f mailbox: avoid timer start from callback
If the txdone is done by polling, it is possible for msg_submit() to start
the timer while txdone_hrtimer() callback is running. If the timer needs
recheduling, it could already be enqueued by the time hrtimer_forward_now()
is called, leading hrtimer to loudly complain.

WARNING: CPU: 3 PID: 74 at kernel/time/hrtimer.c:932 hrtimer_forward+0xc4/0x110
CPU: 3 PID: 74 Comm: kworker/u8:1 Not tainted 5.9.0-rc2-00236-gd3520067d01c-dirty #5
Hardware name: Libre Computer AML-S805X-AC (DT)
Workqueue: events_freezable_power_ thermal_zone_device_check
pstate: 20000085 (nzCv daIf -PAN -UAO BTYPE=--)
pc : hrtimer_forward+0xc4/0x110
lr : txdone_hrtimer+0xf8/0x118
[...]

This can be fixed by not starting the timer from the callback path. Which
requires the timer reloading as long as any message is queued on the
channel, and not just when current tx is not done yet.

Fixes: 0cc67945ea ("mailbox: switch to hrtimer for tx_complete polling")
Reported-by: Da Xue <da@libre.computer>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Jerome Brunet <jbrunet@baylibre.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
2020-10-16 19:09:17 -05:00
..
arm_mhu_db.c mailbox: arm_mhu: Add ARM MHU doorbell driver 2020-10-12 21:10:34 -05:00
arm_mhu.c mailbox: arm_mhu: Match only if compatible is "arm,mhu" 2020-10-12 21:10:34 -05:00
armada-37xx-rwtm-mailbox.c mailbox:armada-37xx-rwtm:remove duplicate print in armada_37xx_mbox_probe() 2020-03-19 23:00:32 -05:00
bcm2835-mailbox.c
bcm-flexrm-mailbox.c maillbox: bcm-flexrm-mailbox: handle cmpl_pool dma allocation failure 2020-03-19 23:00:32 -05:00
bcm-pdc-mailbox.c mailbox: bcm: convert tasklets to use new tasklet_setup() API 2020-10-12 21:10:34 -05:00
hi3660-mailbox.c
hi6220-mailbox.c mailbox: no need to set .owner platform_driver_register 2019-11-26 22:45:15 -06:00
imx-mailbox.c mailbox: imx: Mark PM functions as __maybe_unused 2020-08-03 23:28:36 -05:00
Kconfig mailbox: Add support for Qualcomm IPCC 2020-05-30 18:43:23 -05:00
mailbox-altera.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
mailbox-sti.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mailbox-test.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
mailbox-xgene-slimpro.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13 2019-05-21 11:28:45 +02:00
mailbox.c mailbox: avoid timer start from callback 2020-10-16 19:09:17 -05:00
mailbox.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
Makefile mailbox: arm_mhu: Add ARM MHU doorbell driver 2020-10-12 21:10:34 -05:00
mtk-cmdq-mailbox.c maiblox: mediatek: Fix handling of platform_get_irq() error 2020-10-12 21:10:34 -05:00
omap-mailbox.c mailbox: Replace HTTP links with HTTPS ones 2020-08-03 23:24:43 -05:00
pcc.c mailbox: pcc: Put the PCCT table for error path 2020-08-03 23:25:19 -05:00
pl320-ipc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 201 2019-05-30 11:29:52 -07:00
platform_mhu.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 285 2019-06-05 17:36:37 +02:00
qcom-apcs-ipc-mailbox.c mailbox: qcom: Add msm8994 apcs compatible 2020-08-03 23:31:34 -05:00
qcom-ipcc.c mailbox: Add support for Qualcomm IPCC 2020-05-30 18:43:23 -05:00
rockchip-mailbox.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
sprd-mailbox.c mailbox: sprd: Add Spreadtrum mailbox driver 2020-05-30 18:05:33 -05:00
stm32-ipcc.c mailbox: stm32-ipcc: Update wakeup management 2019-11-30 23:08:59 -06:00
sun6i-msgbox.c mailbox: sun6i-msgbox: Add a new mailbox driver 2020-03-19 23:00:32 -05:00
tegra-hsp.c mailbox: tegra: Fix superfluous IRQ error message 2019-11-12 15:09:19 +01:00
ti-msgmgr.c mailbox: Replace HTTP links with HTTPS ones 2020-08-03 23:24:43 -05:00
zynqmp-ipi-mailbox.c mailbox: zynqmp-ipi: Fix NULL vs IS_ERR() check in zynqmp_ipi_mbox_probe() 2020-05-30 18:08:40 -05:00