From 65de91a8845d17e51ec017748a62722dc2227e98 Mon Sep 17 00:00:00 2001 From: Marc Benoit Date: Wed, 4 Apr 2018 18:57:50 -0400 Subject: [PATCH] kernel: iqp806x low latency kernel does not boot It keeps failing (R7800) with the stack trace below BUG: scheduling while atomic: kworker/0:1/26/0x00000002 (unwind_backtrace) from [] (show_stack+0x10/0x14) (show_stack) from [] (dump_stack+0x7c/0x9c) (dump_stack) from [] (__schedule_bug+0x5c/0x80) (__schedule_bug) from [] (__schedule+0x50/0x3f4) (__schedule) from [] (schedule+0xa4/0xd4) (schedule) from [] (schedule_hrtimeout_range_clock+0xc8/0x100) (schedule_hrtimeout_range_clock) from [] (schedule_hrtimeout_range+0x18/0x20) (schedule_hrtimeout_range) from [] (usleep_range+0x48/0x50) (usleep_range) from [] (__clk_hfpll_enable+0x44/0xd0) (__clk_hfpll_enable) from [] (clk_hfpll_set_rate+0xac/0xc4) (clk_hfpll_set_rate) from [] (clk_change_rate+0xf4/0x1fc) (clk_change_rate) from [] (clk_core_set_rate_nolock+0x78/0x94) (clk_core_set_rate_nolock) from [] (clk_set_rate+0x20/0x30) (clk_set_rate) from [] (dev_pm_opp_set_rate+0x190/0x26c) (dev_pm_opp_set_rate) from [] (set_target+0x40/0x108) (set_target) from [] (__cpufreq_driver_target+0x3f4/0x488) (__cpufreq_driver_target) from [] (od_dbs_timer+0xcc/0x154) (od_dbs_timer) from [] (dbs_work_handler+0x2c/0x54) (dbs_work_handler) from [] (process_one_work+0x1c0/0x2f0) (process_one_work) from [] (worker_thread+0x2a4/0x404) (worker_thread) from [] (kthread+0xd8/0xe8) (kthread) from [] (ret_from_fork+0x14/0x24) Signed-off-by: Marc Benoit [slh: rebase for kernel v4.14 as well] Signed-off-by: Stefan Lippers-Hollmann (cherry picked from commit e40db2907e2a7d4837b25be3bedb1f25fc248bbf) --- ...-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch | 4 ++-- ...-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/target/linux/ipq806x/patches-4.14/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch b/target/linux/ipq806x/patches-4.14/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch index e0157d56b8..f09197caa8 100644 --- a/target/linux/ipq806x/patches-4.14/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch +++ b/target/linux/ipq806x/patches-4.14/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch @@ -117,7 +117,7 @@ Signed-off-by: Stephen Boyd + * H/W requires a 5us delay between disabling the bypass and + * de-asserting the reset. Delay 10us just to be safe. + */ -+ usleep_range(10, 100); ++ udelay(10); + + /* De-assert active-low PLL reset. */ + regmap_update_bits(regmap, hd->mode_reg, PLL_RESET_N, PLL_RESET_N); @@ -128,7 +128,7 @@ Signed-off-by: Stephen Boyd + regmap_read(regmap, hd->status_reg, &val); + } while (!(val & BIT(hd->lock_bit))); + } else { -+ usleep_range(60, 100); ++ udelay(60); + } + + /* Enable PLL output. */ diff --git a/target/linux/ipq806x/patches-4.9/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch b/target/linux/ipq806x/patches-4.9/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch index 70926143ec..a2067572b1 100644 --- a/target/linux/ipq806x/patches-4.9/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch +++ b/target/linux/ipq806x/patches-4.9/0038-clk-qcom-Add-support-for-High-Frequency-PLLs-HFPLLs.patch @@ -117,7 +117,7 @@ Signed-off-by: Stephen Boyd + * H/W requires a 5us delay between disabling the bypass and + * de-asserting the reset. Delay 10us just to be safe. + */ -+ usleep_range(10, 100); ++ udelay(10); + + /* De-assert active-low PLL reset. */ + regmap_update_bits(regmap, hd->mode_reg, PLL_RESET_N, PLL_RESET_N); @@ -128,7 +128,7 @@ Signed-off-by: Stephen Boyd + regmap_read(regmap, hd->status_reg, &val); + } while (!(val & BIT(hd->lock_bit))); + } else { -+ usleep_range(60, 100); ++ udelay(60); + } + + /* Enable PLL output. */ -- 2.25.1