Yoshihiro Shimoda
c14f8a4032
phy: rcar-gen3-usb2: fix mutex_lock calling in interrupt
This patch fixes an issue that the extcon_set_cable_state_() is possible
to cause "BUG: scheduling while atomic" because this driver calls
extcon_set_cable_state_() in the interrupt handler and mutex_lock()
is possible to be called by like the following call trace.
So, this patch adds a workqueue function to resolve this issue.
[ 9.706504] BUG: scheduling while atomic: systemd-journal/25893/0x00010303
[ 9.714569] Modules linked in:
[ 9.717629] CPU: 0 PID: 25893 Comm: systemd-journal Not tainted 4.7.0-rc4+ #86
[ 9.724844] Hardware name: Renesas Salvator-X board based on r8a7795 (DT)
[ 9.731624] Call trace:
[ 9.734077] [<ffff0000080889f0>] dump_backtrace+0x0/0x1a8
[ 9.739470] [<ffff000008088bac>] show_stack+0x14/0x20
[ 9.744520] [<ffff000008348ab4>] dump_stack+0x94/0xb8
[ 9.749568] [<ffff0000080da18c>] __schedule_bug+0x44/0x58
[ 9.754966] [<ffff0000087c6394>] __schedule+0x4e4/0x598
[ 9.760185] [<ffff0000087c6484>] schedule+0x3c/0xa8
[ 9.765057] [<ffff0000087c6928>] schedule_preempt_disabled+0x20/0x38
[ 9.771408] [<ffff0000080f20dc>] mutex_optimistic_spin+0x18c/0x1d0
[ 9.777583] [<ffff0000087c7ef0>] __mutex_lock_slowpath+0x38/0x140
[ 9.783669] [<ffff0000087c803c>] mutex_lock+0x44/0x60
[ 9.788717] [<ffff00000834ca48>] kobject_uevent_env+0x250/0x500
[ 9.794634] [<ffff0000086ae8c0>] extcon_update_state+0x220/0x298
[ 9.800634] [<ffff0000086ae9d8>] extcon_set_cable_state_+0x78/0x88
[ 9.806812] [<ffff000008376004>] rcar_gen3_device_recognition+0x5c/0xe0
[ 9.813420] [<ffff0000083761bc>] rcar_gen3_phy_usb2_irq+0x3c/0x48
[ 9.819509] [<ffff0000080fae94>] handle_irq_event_percpu+0x94/0x140
[ 9.825769] [<ffff0000080faf88>] handle_irq_event+0x48/0x78
[ 9.831334] [<ffff0000080fe620>] handle_fasteoi_irq+0xb8/0x1b0
[ 9.837162] [<ffff0000080fa3c4>] generic_handle_irq+0x24/0x38
[ 9.842900] [<ffff0000080fa6fc>] __handle_domain_irq+0x5c/0xb8
[ 9.848727] [<ffff000008081520>] gic_handle_irq+0x58/0xb0
Reported-by: Simon Horman <horms@verge.net.au>
Fixes: 2b38543c8d ("phy: rcar-gen3-usb2: add extcon support")
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
|
2016-07-04 18:07:39 +05:30 |
| .. |
|
tegra
|
phy: tegra: Add Tegra210 support
|
2016-04-29 16:44:48 +02:00 |
|
Kconfig
|
phy: da8xx-usb: new driver for DA8xx SoC USB PHY
|
2016-07-04 18:07:39 +05:30 |
|
Makefile
|
phy: da8xx-usb: new driver for DA8xx SoC USB PHY
|
2016-07-04 18:07:39 +05:30 |
|
phy-armada375-usb2.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-bcm-cygnus-pcie.c
|
phy: cygnus: pcie: add missing of_node_put
|
2015-12-03 12:28:23 +05:30 |
|
phy-bcm-kona-usb2.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-bcm-ns-usb2.c
|
phy: bcm-ns-usb2: checking the wrong variable
|
2016-06-17 19:02:08 +05:30 |
|
phy-berlin-sata.c
|
phy: berlin-sata: add missing of_node_put
|
2015-12-03 12:28:23 +05:30 |
|
phy-berlin-usb.c
|
phy: berlin-usb: don't set device's driver_data
|
2015-12-20 17:43:12 +05:30 |
|
phy-brcm-sata.c
|
phy: Add support for NS2 SATA3 PHY in Broadcom SATA3 PHY driver
|
2016-04-30 20:12:24 +05:30 |
|
phy-core.c
|
phy: Add set_mode callback
|
2016-07-04 17:19:22 +05:30 |
|
phy-da8xx-usb.c
|
phy: da8xx-usb: new driver for DA8xx SoC USB PHY
|
2016-07-04 18:07:39 +05:30 |
|
phy-dm816x-usb.c
|
phy: dm816x: use __maybe_unused to hide pm functions
|
2016-03-03 20:37:41 -08:00 |
|
phy-exynos-dp-video.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-exynos-mipi-video.c
|
phy: exynos-mipi-video: avoid uninitialized variable use
|
2016-05-30 18:21:37 +05:30 |
|
phy-exynos4x12-usb2.c
|
|
|
|
phy-exynos5-usbdrd.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-exynos4210-usb2.c
|
|
|
|
phy-exynos5250-sata.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-exynos5250-usb2.c
|
|
|
|
phy-hi6220-usb.c
|
phy: add phy-hi6220-usb
|
2015-12-20 15:21:38 +05:30 |
|
phy-hix5hd2-sata.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-lpc18xx-usb-otg.c
|
phy: lpc18xx-usb-otg: fix clock order in phy init
|
2015-08-10 20:11:58 +05:30 |
|
phy-miphy28lp.c
|
phy: miphy28lp: add missing of_node_put
|
2015-12-03 12:28:23 +05:30 |
|
phy-miphy365x.c
|
phy: miphy365x: add missing of_node_put
|
2015-12-03 12:28:23 +05:30 |
|
phy-mt65xx-usb3.c
|
phy: phy-mt65xx-usb3: add support for mt2701 platform
|
2016-04-30 20:12:27 +05:30 |
|
phy-mvebu-sata.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-omap-control.c
|
|
|
|
phy-omap-usb2.c
|
phy: omap-usb2: use *syscon* framework API to power on/off the PHY
|
2015-12-21 14:26:28 +05:30 |
|
phy-pistachio-usb.c
|
PHY: Add driver for Pistachio USB2.0 PHY
|
2015-06-21 21:53:38 +02:00 |
|
phy-pxa-28nm-hsic.c
|
phy: add Marvell HSIC 28nm PHY
|
2015-06-09 12:20:30 -07:00 |
|
phy-pxa-28nm-usb2.c
|
|
|
|
phy-qcom-apq8064-sata.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-qcom-ipq806x-sata.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-qcom-ufs-i.h
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-qcom-ufs-qmp-14nm.c
|
phy: phy-qcom-ufs-qmp-14nm: Remove site specific OOM error message
|
2016-07-04 18:07:39 +05:30 |
|
phy-qcom-ufs-qmp-14nm.h
|
|
|
|
phy-qcom-ufs-qmp-20nm.c
|
phy: phy-qcom-ufs-qmp-20nm: Remove site specific OOM error message
|
2016-07-04 18:07:39 +05:30 |
|
phy-qcom-ufs-qmp-20nm.h
|
|
|
|
phy-qcom-ufs.c
|
phy: qcom-ufs: fix build error when the component is built as a module
|
2015-09-25 17:01:14 +05:30 |
|
phy-rcar-gen2.c
|
phy: rcar-gen2: add fallback binding
|
2016-04-29 14:40:07 +05:30 |
|
phy-rcar-gen3-usb2.c
|
phy: rcar-gen3-usb2: fix mutex_lock calling in interrupt
|
2016-07-04 18:07:39 +05:30 |
|
phy-rockchip-dp.c
|
phy: rockchip-dp: fix return value check in rockchip_dp_phy_probe()
|
2016-06-17 18:44:24 +05:30 |
|
phy-rockchip-emmc.c
|
phy: rockchip-emmc: should be a child device of the GRF
|
2016-04-13 18:33:05 +05:30 |
|
phy-rockchip-usb.c
|
phy: rockhip-usb: use devm_add_action_or_reset()
|
2016-07-04 18:07:39 +05:30 |
|
phy-s5pv210-usb2.c
|
|
|
|
phy-samsung-usb2.c
|
phy: exynos-usb2: add vbus regulator support
|
2015-10-06 20:21:47 +05:30 |
|
phy-samsung-usb2.h
|
phy: exynos-usb2: add vbus regulator support
|
2015-10-06 20:21:47 +05:30 |
|
phy-spear1310-miphy.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-spear1340-miphy.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-stih41x-usb.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-stih407-usb.c
|
|
|
|
phy-sun4i-usb.c
|
phy-sun4i-usb: Add workaround for missing Vbus det interrupts on A31
|
2016-07-04 18:07:39 +05:30 |
|
phy-sun9i-usb.c
|
phy: Constify struct phy_ops variables
|
2015-08-03 18:35:09 +05:30 |
|
phy-ti-pipe3.c
|
phy: ti-pipe3: Program the DPLL even if it was already locked
|
2016-06-03 12:06:41 +05:30 |
|
phy-tusb1210.c
|
This is the bulk of GPIO changes for the v4.3 kernel cycle:
|
2015-09-04 10:07:45 -07:00 |
|
phy-twl4030-usb.c
|
phy: twl4030: use __maybe_unused to hide pm functions
|
2016-03-03 20:37:41 -08:00 |
|
phy-xgene.c
|
phy: xgene: rename "enum phy_mode" to "enum xgene_phy_mode"
|
2016-07-04 17:19:21 +05:30 |
|
ulpi_phy.h
|
phy: ulpi_phy: Add const qualifier to ops
|
2015-08-03 18:35:09 +05:30 |