linux-stable/drivers/clk
Dmitry Rokosov 6e2acbfe59 clk: meson: change usleep_range() to udelay() for atomic context
The function meson_clk_pll_enable() can be invoked under the enable_lock
spinlock from the clk core logic, which risks a kernel panic during the
usleep_range() call:

   BUG: scheduling while atomic: kworker/u4:2/36/0x00000002
   Modules linked in: g_ffs usb_f_fs libcomposite
   CPU: 1 PID: 36 Comm: kworker/u4:2 Not tainted 6.4.0-rc5 #273
   Workqueue: events_unbound async_run_entry_fn
   Call trace:
    dump_backtrace+0x9c/0x128
    show_stack+0x20/0x38
    dump_stack_lvl+0x48/0x60
    dump_stack+0x18/0x28
    __schedule_bug+0x58/0x78
    __schedule+0x828/0xa88
    schedule+0x64/0xd8
    schedule_hrtimeout_range_clock+0xd0/0x208
    schedule_hrtimeout_range+0x1c/0x30
    usleep_range_state+0x6c/0xa8
    meson_clk_pll_enable+0x1f4/0x310
    clk_core_enable+0x78/0x200
    clk_core_enable+0x58/0x200
    clk_core_enable+0x58/0x200
    clk_core_enable+0x58/0x200
    clk_enable+0x34/0x60

So it is required to use the udelay() function instead of usleep_range()
for the atomic context safety.

Fixes: b6ec400aa1 ("clk: meson: introduce new pll power-on sequence for A1 SoC family")
Reported-by: Jan Dakinevich <yvdakinevich@sberdevices.ru>
Signed-off-by: Dmitry Rokosov <ddrokosov@sberdevices.ru>
Link: https://lore.kernel.org/r/20230704215404.11533-1-ddrokosov@sberdevices.ru
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
2023-07-11 11:35:42 +02:00
..
actions clk: actions: composite: fact: Switch to determine_rate 2023-06-08 18:39:32 -07:00
analogbits
at91 Merge branches 'clk-qcom' and 'clk-microchip' into clk-next 2023-06-26 16:36:14 -07:00
axis
axs10x clk: axs10x: Use managed of_clk_add_hw_provider() 2023-04-10 12:45:12 -07:00
baikal-t1
bcm clk: bcm: rpi: Fix off by one in raspberrypi_discover_clocks() 2023-06-14 17:21:00 -07:00
berlin clk: berlin: div: Add a determine_rate hook 2023-06-08 18:39:26 -07:00
davinci clk: da8xx: clk48: Switch to determine_rate 2023-06-08 18:39:34 -07:00
hisilicon Nothing looks out of the ordinary in this batch of clk driver updates. There 2023-04-29 17:29:39 -07:00
imgtec
imx This batch of clk driver updates for the merge window contains almost no new 2023-06-29 10:05:47 -07:00
ingenic clk: ingenic: tcu: Switch to determine_rate 2023-06-08 18:39:34 -07:00
keystone Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
mediatek This batch of clk driver updates for the merge window contains almost no new 2023-06-29 10:05:47 -07:00
meson clk: meson: change usleep_range() to udelay() for atomic context 2023-07-11 11:35:42 +02:00
microchip clk: microchip: Use of_property_read_bool() for boolean properties 2023-05-22 11:57:31 +03:00
mmp clk: mmp: Convert to platform remove callback returning void 2023-03-28 19:31:44 -07:00
mstar
mvebu clk: mvebu: Iterate over possible CPUs instead of DT CPU nodes 2023-06-20 11:56:28 -07:00
mxs
nuvoton clk: nuvoton: Use clk_parent_data instead of string for parent clock 2023-06-22 17:02:50 +02:00
nxp
pistachio
pxa ARM: SoC changes for 6.5 2023-06-29 15:28:33 -07:00
qcom Another set of clk driver updates and fixes for the merge window. The 2023-07-04 11:07:45 -07:00
ralink clk: ralink: mtmips: Fix uninitialized use of ret in mtmips_register_{fixed,factor}_clocks() 2023-06-23 14:59:59 +02:00
renesas Merge branches 'clk-renesas', 'clk-determine-rate', 'clk-allwinner', 'clk-samsung' and 'clk-amlogic' into clk-next 2023-06-26 08:55:04 -07:00
rockchip Merge branches 'clk-of', 'clk-samsung', 'clk-rockchip' and 'clk-qcom' into clk-next 2023-04-25 11:52:25 -07:00
samsung clk: samsung: add CONFIG_OF dependency 2023-06-12 11:45:20 +02:00
sifive clk: sifive: Use devm_platform_ioremap_resource() 2023-06-14 17:20:13 -07:00
socfpga clk: socfpga: gate: Add a determine_rate hook 2023-06-08 18:39:29 -07:00
spear
sprd clk: sprd: composite: Simplify determine_rate implementation 2023-06-14 12:43:26 -07:00
st clk: st: flexgen: Switch to determine_rate 2023-06-08 18:39:35 -07:00
starfive clk: starfive: Fix RESET_STARFIVE_JH7110 can't be selected in a specified case 2023-05-02 18:34:49 -07:00
stm32 clk: stm32: composite: Switch to determine_rate 2023-06-08 18:39:35 -07:00
sunxi
sunxi-ng clk: sunxi-ng: a64: force select PLL_MIPI in TCON0 mux 2023-05-18 23:07:09 +02:00
tegra clk: tegra: Avoid calling an uninitialized function 2023-07-04 08:54:37 -07:00
ti clk: ti: clkctrl: check return value of kasprintf() 2023-06-16 21:52:50 -07:00
uniphier clk: uniphier: Use managed of_clk_add_hw_provider() 2023-04-10 12:56:25 -07:00
ux500 clk: ux500: sysctrl: Add a determine_rate hook 2023-06-08 18:39:30 -07:00
versatile clk: versatile: sp810: Add a determine_rate hook 2023-06-08 18:39:31 -07:00
visconti clk: visconti: remove unused visconti_pll_provider::regmap 2023-03-06 11:43:29 -08:00
x86 clk: x86: Convert to platform remove callback returning void 2023-03-28 19:31:45 -07:00
xilinx Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
zynq
zynqmp clk: zynqmp: pll: Remove the limit 2023-03-27 12:08:28 -07:00
.kunitconfig
clk-apple-nco.c
clk-asm9260.c
clk-aspeed.c
clk-aspeed.h
clk-ast2600.c clk: ast2600: Add comment about combined clock + reset handling 2023-03-06 14:11:29 -08:00
clk-axi-clkgen.c clk: axi-clkgen: Switch to determine_rate 2023-06-08 18:39:33 -07:00
clk-axm5516.c clk: axm5516: Use managed of_clk_add_hw_provider() 2023-04-10 12:45:12 -07:00
clk-bd718x7.c
clk-bm1880.c clk: bm1880: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:50 -07:00
clk-bulk.c
clk-cdce706.c Merge branches 'clk-renesas', 'clk-determine-rate', 'clk-allwinner', 'clk-samsung' and 'clk-amlogic' into clk-next 2023-06-26 08:55:04 -07:00
clk-cdce925.c Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
clk-clps711x.c
clk-composite.c clk: composite: Fix handling of high clock rates 2023-06-12 17:42:10 -07:00
clk-conf.c clk: add missing of_node_put() in "assigned-clocks" property parsing 2023-03-29 13:53:28 -07:00
clk-cs2000-cp.c clk: Switch i2c drivers back to use .probe() 2023-05-10 14:05:34 -07:00
clk-devres.c
clk-divider.c
clk-en7523.c
clk-fixed-factor.c clk: fixed-factor: Convert to platform remove callback returning void 2023-03-28 19:23:36 -07:00
clk-fixed-mmio.c Nothing looks out of the ordinary in this batch of clk driver updates. There 2023-04-29 17:29:39 -07:00
clk-fixed-rate.c clk: fixed-rate: Convert to platform remove callback returning void 2023-03-28 19:23:36 -07:00
clk-fractional-divider.c clk: Compute masks for fractional_divider clk when needed. 2023-04-05 12:09:26 -07:00
clk-fractional-divider.h
clk-fsl-flexspi.c
clk-fsl-sai.c kbuild, clk: remove MODULE_LICENSE in non-modules 2023-03-06 11:29:18 -08:00
clk-gate.c
clk-gate_test.c
clk-gemini.c
clk-gpio.c
clk-hi655x.c
clk-highbank.c
clk-hsdk-pll.c clk: hsdk-pll: Use managed of_clk_add_hw_provider() 2023-04-10 12:45:12 -07:00
clk-k210.c clk: k210: mux: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-lan966x.c clk: lan966x: Remove unused round_rate hook 2023-06-08 18:39:25 -07:00
clk-lmk04832.c clk: lmk04832: clkout: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-lochnagar.c clk: lochnagar: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-loongson1.c clk: loongson1: Re-implement the clock driver 2023-03-21 16:34:23 -07:00
clk-loongson2.c clk: clk-loongson2: Zero init clk_init_data 2023-06-12 18:30:46 -07:00
clk-max9485.c clk: Switch i2c drivers back to use .probe() 2023-05-10 14:05:34 -07:00
clk-max77686.c
clk-milbeaut.c clock: milbeaut: use devm_platform_get_and_ioremap_resource() 2023-03-29 14:48:32 -07:00
clk-moxart.c
clk-multiplier.c
clk-mux.c
clk-nomadik.c clk: nomadik: correct struct name kernel-doc warning 2022-12-09 10:26:25 -08:00
clk-npcm7xx.c
clk-nspire.c
clk-oxnas.c
clk-palmas.c clk: palmas: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-plldig.c
clk-pwm.c clk: pwm: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-qoriq.c clk: qoriq: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-renesas-pcie.c Merge branches 'clk-platform', 'clk-i2c', 'clk-mediatek', 'clk-i2cid' and 'clk-vc5' into clk-next 2023-06-26 08:54:19 -07:00
clk-rk808.c clk: RK808: Reduce 'struct rk808' usage 2023-05-15 16:13:56 +01:00
clk-s2mps11.c clk: s2mps11: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-scmi.c
clk-scpi.c clk: scpi: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-si514.c clk: Switch i2c drivers back to use .probe() 2023-05-10 14:05:34 -07:00
clk-si521xx.c clk: si521xx: Switch i2c driver back to use .probe() 2023-06-12 18:16:43 -07:00
clk-si544.c clk: Switch i2c drivers back to use .probe() 2023-05-10 14:05:34 -07:00
clk-si570.c clk: Switch i2c drivers back to use .probe() 2023-05-10 14:05:34 -07:00
clk-si5341.c Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
clk-si5351.c Merge branches 'clk-renesas', 'clk-determine-rate', 'clk-allwinner', 'clk-samsung' and 'clk-amlogic' into clk-next 2023-06-26 08:55:04 -07:00
clk-si5351.h
clk-sp7021.c clk: sp7021: Adjust width of _m in HWM_FIELD_PREP() 2023-05-02 18:34:26 -07:00
clk-sparx5.c
clk-stm32f4.c clk: stm32f4: mux: Add a determine_rate hook 2023-06-08 18:39:27 -07:00
clk-stm32h7.c clk: stm32h7: Remove an unused field in struct stm32_fractional_divider 2023-04-03 14:10:42 -07:00
clk-stm32mp1.c clk: stm32mp1: Convert to platform remove callback returning void 2023-03-28 19:23:37 -07:00
clk-tps68470.c
clk-twl6040.c
clk-versaclock5.c Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
clk-versaclock7.c Merge branches 'clk-platform', 'clk-i2c', 'clk-mediatek', 'clk-i2cid' and 'clk-vc5' into clk-next 2023-06-26 08:54:19 -07:00
clk-vt8500.c
clk-wm831x.c clk: wm831x: clkout: Add a determine_rate hook 2023-06-08 18:39:28 -07:00
clk-xgene.c
clk.c Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
clk.h
clk_test.c clk: test: Add a determine_rate hook 2023-06-08 18:39:25 -07:00
clkdev.c
Kconfig ARM: New SoC support for 6.5 2023-06-29 15:11:17 -07:00
Makefile clk: nuvoton: Add clock driver for ma35d1 clock controller 2023-06-05 13:18:08 +02:00