Message ID | 20190605090215.29905-1-narmstrong@baylibre.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [v2] phy: meson-g12a-usb3-pcie: disable locking for cr_regmap | expand |
Neil Armstrong <narmstrong@baylibre.com> writes: > Locking is not needed for the phy_g12a_usb3_pcie_cr_bus_read/write() and > currently it causes the following BUG because of the usage of the > regmap_read_poll_timeout() running in spinlock_irq, configured by regmap fast_io. > > Simply disable locking in the cr_regmap config since it's only used from the > PHY init callback function. > > BUG: sleeping function called from invalid context at drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c:85 > in_atomic(): 1, irqs_disabled(): 128, pid: 60, name: kworker/3:1 > [snip] > Workqueue: events deferred_probe_work_func > Call trace: > dump_backtrace+0x0/0x190 > show_stack+0x14/0x20 > dump_stack+0x90/0xb4 > ___might_sleep+0xec/0x110 > __might_sleep+0x50/0x88 > phy_g12a_usb3_pcie_cr_bus_addr.isra.0+0x80/0x1a8 > phy_g12a_usb3_pcie_cr_bus_read+0x34/0x1d8 > _regmap_read+0x60/0xe0 > _regmap_update_bits+0xc4/0x110 > regmap_update_bits_base+0x60/0x90 > phy_g12a_usb3_pcie_init+0xdc/0x210 > phy_init+0x74/0xd0 > dwc3_meson_g12a_probe+0x2cc/0x4d0 > platform_drv_probe+0x50/0xa0 > really_probe+0x20c/0x3b8 > driver_probe_device+0x68/0x150 > __device_attach_driver+0xa8/0x170 > bus_for_each_drv+0x64/0xc8 > __device_attach+0xd8/0x158 > device_initial_probe+0x10/0x18 > bus_probe_device+0x90/0x98 > deferred_probe_work_func+0x94/0xe8 > process_one_work+0x1e0/0x338 > worker_thread+0x230/0x458 > kthread+0x134/0x138 > ret_from_fork+0x10/0x1c > > Fixes: 36077e16c050 ("phy: amlogic: Add Amlogic G12A USB3 + PCIE Combo PHY Driver") > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Tested-by: Kevin Hilman <khilman@baylibre.com>
Hi Kishon, On 05/06/2019 11:02, Neil Armstrong wrote: > Locking is not needed for the phy_g12a_usb3_pcie_cr_bus_read/write() and > currently it causes the following BUG because of the usage of the > regmap_read_poll_timeout() running in spinlock_irq, configured by regmap fast_io. > > Simply disable locking in the cr_regmap config since it's only used from the > PHY init callback function. Gentle ping, Is the commit log right now ? Thanks, Neil > > BUG: sleeping function called from invalid context at drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c:85 > in_atomic(): 1, irqs_disabled(): 128, pid: 60, name: kworker/3:1 > [snip] > Workqueue: events deferred_probe_work_func > Call trace: > dump_backtrace+0x0/0x190 > show_stack+0x14/0x20 > dump_stack+0x90/0xb4 > ___might_sleep+0xec/0x110 > __might_sleep+0x50/0x88 > phy_g12a_usb3_pcie_cr_bus_addr.isra.0+0x80/0x1a8 > phy_g12a_usb3_pcie_cr_bus_read+0x34/0x1d8 > _regmap_read+0x60/0xe0 > _regmap_update_bits+0xc4/0x110 > regmap_update_bits_base+0x60/0x90 > phy_g12a_usb3_pcie_init+0xdc/0x210 > phy_init+0x74/0xd0 > dwc3_meson_g12a_probe+0x2cc/0x4d0 > platform_drv_probe+0x50/0xa0 > really_probe+0x20c/0x3b8 > driver_probe_device+0x68/0x150 > __device_attach_driver+0xa8/0x170 > bus_for_each_drv+0x64/0xc8 > __device_attach+0xd8/0x158 > device_initial_probe+0x10/0x18 > bus_probe_device+0x90/0x98 > deferred_probe_work_func+0x94/0xe8 > process_one_work+0x1e0/0x338 > worker_thread+0x230/0x458 > kthread+0x134/0x138 > ret_from_fork+0x10/0x1con, > > Fixes: 36077e16c050 ("phy: amlogic: Add Amlogic G12A USB3 + PCIE Combo PHY Driver") > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > --- > drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c > index 6233a7979a93..ac322d643c7a 100644 > --- a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c > +++ b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c > @@ -188,7 +188,7 @@ static const struct regmap_config phy_g12a_usb3_pcie_cr_regmap_conf = { > .reg_read = phy_g12a_usb3_pcie_cr_bus_read, > .reg_write = phy_g12a_usb3_pcie_cr_bus_write, > .max_register = 0xffff, > - .fast_io = true, > + .disable_locking = true, > }; > > static int phy_g12a_usb3_init(struct phy *phy) >
On 24/06/19 6:30 PM, Neil Armstrong wrote: > Hi Kishon, > > On 05/06/2019 11:02, Neil Armstrong wrote: >> Locking is not needed for the phy_g12a_usb3_pcie_cr_bus_read/write() and >> currently it causes the following BUG because of the usage of the >> regmap_read_poll_timeout() running in spinlock_irq, configured by regmap fast_io. >> >> Simply disable locking in the cr_regmap config since it's only used from the >> PHY init callback function. > > Gentle ping, > Is the commit log right now ? merged now, thanks! -Kishon > > Thanks, > Neil > >> >> BUG: sleeping function called from invalid context at drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c:85 >> in_atomic(): 1, irqs_disabled(): 128, pid: 60, name: kworker/3:1 >> [snip] >> Workqueue: events deferred_probe_work_func >> Call trace: >> dump_backtrace+0x0/0x190 >> show_stack+0x14/0x20 >> dump_stack+0x90/0xb4 >> ___might_sleep+0xec/0x110 >> __might_sleep+0x50/0x88 >> phy_g12a_usb3_pcie_cr_bus_addr.isra.0+0x80/0x1a8 >> phy_g12a_usb3_pcie_cr_bus_read+0x34/0x1d8 >> _regmap_read+0x60/0xe0 >> _regmap_update_bits+0xc4/0x110 >> regmap_update_bits_base+0x60/0x90 >> phy_g12a_usb3_pcie_init+0xdc/0x210 >> phy_init+0x74/0xd0 >> dwc3_meson_g12a_probe+0x2cc/0x4d0 >> platform_drv_probe+0x50/0xa0 >> really_probe+0x20c/0x3b8 >> driver_probe_device+0x68/0x150 >> __device_attach_driver+0xa8/0x170 >> bus_for_each_drv+0x64/0xc8 >> __device_attach+0xd8/0x158 >> device_initial_probe+0x10/0x18 >> bus_probe_device+0x90/0x98 >> deferred_probe_work_func+0x94/0xe8 >> process_one_work+0x1e0/0x338 >> worker_thread+0x230/0x458 >> kthread+0x134/0x138 >> ret_from_fork+0x10/0x1con, >> >> Fixes: 36077e16c050 ("phy: amlogic: Add Amlogic G12A USB3 + PCIE Combo PHY Driver") >> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> >> --- >> drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c >> index 6233a7979a93..ac322d643c7a 100644 >> --- a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c >> +++ b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c >> @@ -188,7 +188,7 @@ static const struct regmap_config phy_g12a_usb3_pcie_cr_regmap_conf = { >> .reg_read = phy_g12a_usb3_pcie_cr_bus_read, >> .reg_write = phy_g12a_usb3_pcie_cr_bus_write, >> .max_register = 0xffff, >> - .fast_io = true, >> + .disable_locking = true, >> }; >> >> static int phy_g12a_usb3_init(struct phy *phy) >> >
diff --git a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c index 6233a7979a93..ac322d643c7a 100644 --- a/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c +++ b/drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c @@ -188,7 +188,7 @@ static const struct regmap_config phy_g12a_usb3_pcie_cr_regmap_conf = { .reg_read = phy_g12a_usb3_pcie_cr_bus_read, .reg_write = phy_g12a_usb3_pcie_cr_bus_write, .max_register = 0xffff, - .fast_io = true, + .disable_locking = true, }; static int phy_g12a_usb3_init(struct phy *phy)
Locking is not needed for the phy_g12a_usb3_pcie_cr_bus_read/write() and currently it causes the following BUG because of the usage of the regmap_read_poll_timeout() running in spinlock_irq, configured by regmap fast_io. Simply disable locking in the cr_regmap config since it's only used from the PHY init callback function. BUG: sleeping function called from invalid context at drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c:85 in_atomic(): 1, irqs_disabled(): 128, pid: 60, name: kworker/3:1 [snip] Workqueue: events deferred_probe_work_func Call trace: dump_backtrace+0x0/0x190 show_stack+0x14/0x20 dump_stack+0x90/0xb4 ___might_sleep+0xec/0x110 __might_sleep+0x50/0x88 phy_g12a_usb3_pcie_cr_bus_addr.isra.0+0x80/0x1a8 phy_g12a_usb3_pcie_cr_bus_read+0x34/0x1d8 _regmap_read+0x60/0xe0 _regmap_update_bits+0xc4/0x110 regmap_update_bits_base+0x60/0x90 phy_g12a_usb3_pcie_init+0xdc/0x210 phy_init+0x74/0xd0 dwc3_meson_g12a_probe+0x2cc/0x4d0 platform_drv_probe+0x50/0xa0 really_probe+0x20c/0x3b8 driver_probe_device+0x68/0x150 __device_attach_driver+0xa8/0x170 bus_for_each_drv+0x64/0xc8 __device_attach+0xd8/0x158 device_initial_probe+0x10/0x18 bus_probe_device+0x90/0x98 deferred_probe_work_func+0x94/0xe8 process_one_work+0x1e0/0x338 worker_thread+0x230/0x458 kthread+0x134/0x138 ret_from_fork+0x10/0x1c Fixes: 36077e16c050 ("phy: amlogic: Add Amlogic G12A USB3 + PCIE Combo PHY Driver") Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- drivers/phy/amlogic/phy-meson-g12a-usb3-pcie.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)