Re: [Freedreno] [v1] drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
On 3/31/21 7:34 AM, kalya...@codeaurora.org wrote: > On 2021-03-31 00:04, Steev Klimaszewski wrote: >> On 3/22/21 4:17 AM, Kalyan Thota wrote: >>> From: Kalyan Thota >>> >>> DPU runtime resume will request for a min vote on the AXI bus as >>> it is a necessary step before turning ON the AXI clock. >>> > Hi Steev, > > The WARN_ON is true only for the device with compatible > "qcom,sc7180-mdss". For other devices its a > false alarm. Can you please try with the below change ? > > https://patchwork.kernel.org/project/linux-arm-msm/patch/1617190020-7931-1-git-send-email-kalya...@codeaurora.org/ > > > Thanks, > Kalyan > Hi Kalyan, Tested here, and it does get rid of the warning. I'll keep a copy of the patch locally, since this is going to hit stable too at some point it seems, at least until another version comes out addressing the other comments from people way smarter than me. -- steev ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [Freedreno] [v1] drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
On 2021-03-31 00:04, Steev Klimaszewski wrote: On 3/22/21 4:17 AM, Kalyan Thota wrote: From: Kalyan Thota DPU runtime resume will request for a min vote on the AXI bus as it is a necessary step before turning ON the AXI clock. The change does below 1) Move the icc path set before requesting runtime get_sync. 2) remove the dependency of hw catalog for min ib vote as it is initialized at a later point. Signed-off-by: Kalyan Thota --- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index ed636f1..cab387f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -44,6 +44,8 @@ #define DPU_DEBUGFS_DIR "msm_dpu" #define DPU_DEBUGFS_HWMASKNAME "hw_log_mask" +#define MIN_IB_BW 4ULL /* Min ib vote 400MB */ + static int dpu_kms_hw_init(struct msm_kms *kms); static void _dpu_kms_mmu_destroy(struct dpu_kms *dpu_kms); @@ -932,6 +934,9 @@ static int dpu_kms_hw_init(struct msm_kms *kms) DPU_DEBUG("REG_DMA is not defined"); } + if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss")) + dpu_kms_parse_data_bus_icc_path(dpu_kms); + pm_runtime_get_sync(_kms->pdev->dev); dpu_kms->core_rev = readl_relaxed(dpu_kms->mmio + 0x0); @@ -1037,9 +1042,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms) dpu_vbif_init_memtypes(dpu_kms); - if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss")) - dpu_kms_parse_data_bus_icc_path(dpu_kms); - pm_runtime_put_sync(_kms->pdev->dev); return 0; @@ -1196,10 +1198,10 @@ static int __maybe_unused dpu_runtime_resume(struct device *dev) ddev = dpu_kms->dev; + WARN_ON(!(dpu_kms->num_paths)); /* Min vote of BW is required before turning on AXI clk */ for (i = 0; i < dpu_kms->num_paths; i++) - icc_set_bw(dpu_kms->path[i], 0, - dpu_kms->catalog->perf.min_dram_ib); + icc_set_bw(dpu_kms->path[i], 0, Bps_to_icc(MIN_IB_BW)); rc = msm_dss_enable_clk(mp->clk_config, mp->num_clk, true); if (rc) { With this patch now applied to 5.12-rc5, I am seeing the following when booting the Lenovo Yoga C630 - Mar 30 13:16:03 c630 kernel: [2.038491] [ cut here ] Mar 30 13:16:03 c630 kernel: [2.038495] WARNING: CPU: 3 PID: 125 at drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c:1196 dpu_runtime_resume+0xc0/0xf0 [msm] Mar 30 13:16:03 c630 kernel: [2.038551] Modules linked in: ti_sn65dsi86 i2c_hid_of crct10dif_ce msm rtc_pm8xxx llcc_qcom ocmem drm_kms_helper i2c_qcom_geni phy_qcom_qusb2 ipa(+) qcom_common qcom_glink_smem qmi_helpers mdt_loader panel_simple drm pwm_bl Mar 30 13:16:03 c630 kernel: [2.038599] CPU: 3 PID: 125 Comm: kworker/3:1 Not tainted 5.12.0-rc5 #1 Mar 30 13:16:03 c630 kernel: [2.038605] Hardware name: LENOVO 81JL/LNVNB161216, BIOS 9UCN33WW(V2.06) 06/ 4/2019 Mar 30 13:16:03 c630 kernel: [2.038610] Workqueue: events deferred_probe_work_func Mar 30 13:16:03 c630 kernel: [2.038621] pstate: 6045 (nZCv daif +PAN -UAO -TCO BTYPE=--) Mar 30 13:16:03 c630 kernel: [2.038627] pc : dpu_runtime_resume+0xc0/0xf0 [msm] Mar 30 13:16:03 c630 kernel: [2.038674] lr : pm_generic_runtime_resume+0x30/0x50 Mar 30 13:16:03 c630 kernel: [2.038683] sp : 800010b9b7e0 Mar 30 13:16:03 c630 kernel: [2.038685] x29: 800010b9b7e0 x28: Mar 30 13:16:03 c630 kernel: [2.038692] x27: x26: 6b42c0c16cf4 Mar 30 13:16:03 c630 kernel: [2.038698] x25: 7965f7df x24: 0001 Mar 30 13:16:03 c630 kernel: [2.038705] x23: 6b42c0a34180 x22: da2e0cc5b3d0 Mar 30 13:16:03 c630 kernel: [2.038712] x21: da2e0b3ed6a0 x20: 6b42c6845000 Mar 30 13:16:03 c630 kernel: [2.038718] x19: 6b42c6851080 x18: da2e0cce1220 Mar 30 13:16:03 c630 kernel: [2.038725] x17: da2e0cce1238 x16: da2e0b23e5f0 Mar 30 13:16:03 c630 kernel: [2.038731] x15: 4000 x14: Mar 30 13:16:03 c630 kernel: [2.038738] x13: 6b42c5f0b5b0 x12: Mar 30 13:16:03 c630 kernel: [2.038744] x11: 0001 x10: 3fff Mar 30 13:16:03 c630 kernel: [2.038750] x9 : x8 : Mar 30 13:16:03 c630 kernel: [2.038755] x7 : x6 : 0c473b7e Mar 30 13:16:03 c630 kernel: [2.038761] x5 : 00ff x4 : 00221806fff8f800 Mar 30 13:16:03 c630 kernel: [2.038768] x3 : 0018 x2 : da2dc3d34320 Mar 30 13:16:03 c630 kernel: [2.038774] x1 : x0 : Mar 30 13:16:03 c630 kernel: [2.038781] Call trace: Mar 30 13:16:03 c630 kernel: [2.038784] dpu_runtime_resume+0xc0/0xf0 [msm] Mar 30 13:16:03
Re: [v1] drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
On 3/22/21 4:17 AM, Kalyan Thota wrote: > From: Kalyan Thota > > DPU runtime resume will request for a min vote on the AXI bus as > it is a necessary step before turning ON the AXI clock. > > The change does below > 1) Move the icc path set before requesting runtime get_sync. > 2) remove the dependency of hw catalog for min ib vote > as it is initialized at a later point. > > Signed-off-by: Kalyan Thota > --- > drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 12 +++- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > index ed636f1..cab387f 100644 > --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c > @@ -44,6 +44,8 @@ > #define DPU_DEBUGFS_DIR "msm_dpu" > #define DPU_DEBUGFS_HWMASKNAME "hw_log_mask" > > +#define MIN_IB_BW4ULL /* Min ib vote 400MB */ > + > static int dpu_kms_hw_init(struct msm_kms *kms); > static void _dpu_kms_mmu_destroy(struct dpu_kms *dpu_kms); > > @@ -932,6 +934,9 @@ static int dpu_kms_hw_init(struct msm_kms *kms) > DPU_DEBUG("REG_DMA is not defined"); > } > > + if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss")) > + dpu_kms_parse_data_bus_icc_path(dpu_kms); > + > pm_runtime_get_sync(_kms->pdev->dev); > > dpu_kms->core_rev = readl_relaxed(dpu_kms->mmio + 0x0); > @@ -1037,9 +1042,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms) > > dpu_vbif_init_memtypes(dpu_kms); > > - if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss")) > - dpu_kms_parse_data_bus_icc_path(dpu_kms); > - > pm_runtime_put_sync(_kms->pdev->dev); > > return 0; > @@ -1196,10 +1198,10 @@ static int __maybe_unused dpu_runtime_resume(struct > device *dev) > > ddev = dpu_kms->dev; > > + WARN_ON(!(dpu_kms->num_paths)); > /* Min vote of BW is required before turning on AXI clk */ > for (i = 0; i < dpu_kms->num_paths; i++) > - icc_set_bw(dpu_kms->path[i], 0, > - dpu_kms->catalog->perf.min_dram_ib); > + icc_set_bw(dpu_kms->path[i], 0, Bps_to_icc(MIN_IB_BW)); > > rc = msm_dss_enable_clk(mp->clk_config, mp->num_clk, true); > if (rc) { With this patch now applied to 5.12-rc5, I am seeing the following when booting the Lenovo Yoga C630 - Mar 30 13:16:03 c630 kernel: [2.038491] [ cut here ] Mar 30 13:16:03 c630 kernel: [2.038495] WARNING: CPU: 3 PID: 125 at drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c:1196 dpu_runtime_resume+0xc0/0xf0 [msm] Mar 30 13:16:03 c630 kernel: [2.038551] Modules linked in: ti_sn65dsi86 i2c_hid_of crct10dif_ce msm rtc_pm8xxx llcc_qcom ocmem drm_kms_helper i2c_qcom_geni phy_qcom_qusb2 ipa(+) qcom_common qcom_glink_smem qmi_helpers mdt_loader panel_simple drm pwm_bl Mar 30 13:16:03 c630 kernel: [2.038599] CPU: 3 PID: 125 Comm: kworker/3:1 Not tainted 5.12.0-rc5 #1 Mar 30 13:16:03 c630 kernel: [2.038605] Hardware name: LENOVO 81JL/LNVNB161216, BIOS 9UCN33WW(V2.06) 06/ 4/2019 Mar 30 13:16:03 c630 kernel: [2.038610] Workqueue: events deferred_probe_work_func Mar 30 13:16:03 c630 kernel: [2.038621] pstate: 6045 (nZCv daif +PAN -UAO -TCO BTYPE=--) Mar 30 13:16:03 c630 kernel: [2.038627] pc : dpu_runtime_resume+0xc0/0xf0 [msm] Mar 30 13:16:03 c630 kernel: [2.038674] lr : pm_generic_runtime_resume+0x30/0x50 Mar 30 13:16:03 c630 kernel: [2.038683] sp : 800010b9b7e0 Mar 30 13:16:03 c630 kernel: [2.038685] x29: 800010b9b7e0 x28: Mar 30 13:16:03 c630 kernel: [2.038692] x27: x26: 6b42c0c16cf4 Mar 30 13:16:03 c630 kernel: [2.038698] x25: 7965f7df x24: 0001 Mar 30 13:16:03 c630 kernel: [2.038705] x23: 6b42c0a34180 x22: da2e0cc5b3d0 Mar 30 13:16:03 c630 kernel: [2.038712] x21: da2e0b3ed6a0 x20: 6b42c6845000 Mar 30 13:16:03 c630 kernel: [2.038718] x19: 6b42c6851080 x18: da2e0cce1220 Mar 30 13:16:03 c630 kernel: [2.038725] x17: da2e0cce1238 x16: da2e0b23e5f0 Mar 30 13:16:03 c630 kernel: [2.038731] x15: 4000 x14: Mar 30 13:16:03 c630 kernel: [2.038738] x13: 6b42c5f0b5b0 x12: Mar 30 13:16:03 c630 kernel: [2.038744] x11: 0001 x10: 3fff Mar 30 13:16:03 c630 kernel: [2.038750] x9 : x8 : Mar 30 13:16:03 c630 kernel: [2.038755] x7 : x6 : 0c473b7e Mar 30 13:16:03 c630 kernel: [2.038761] x5 : 00ff x4 : 00221806fff8f800 Mar 30 13:16:03 c630 kernel: [2.038768] x3 : 0018 x2 : da2dc3d34320 Mar 30 13:16:03 c630 kernel: [2.038774] x1 : x0 : Mar 30 13:16:03 c630 kernel: [2.038781] Call trace: Mar 30 13:16:03 c630
Re: [v1] drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
On Mon, Mar 22, 2021 at 5:44 PM Matthias Kaehlcke wrote: > > On Mon, Mar 22, 2021 at 02:17:12AM -0700, Kalyan Thota wrote: > > From: Kalyan Thota > > > > DPU runtime resume will request for a min vote on the AXI bus as > > it is a necessary step before turning ON the AXI clock. > > > > The change does below > > 1) Move the icc path set before requesting runtime get_sync. > > 2) remove the dependency of hw catalog for min ib vote > > as it is initialized at a later point. > > > > Signed-off-by: Kalyan Thota > > Confirmed that this fixes a bunch of warnings at boot on SC7180 when > (out-of-tree) camera support is enabled: > > [1.832228] gcc_disp_hf_axi_clk status stuck at 'off' > [2.118292] gcc_disp_hf_axi_clk status stuck at 'off' > [2.442383] gcc_disp_hf_axi_clk already disabled > [2.750054] gcc_disp_hf_axi_clk already unprepared > [3.154835] gcc_disp_hf_axi_clk already disabled > [3.421835] gcc_disp_hf_axi_clk already unprepared > > Tested-by: Matthias Kaehlcke thanks for testing on the setup which had this issue.. I've pushed to msm-next BR, -R ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [v1] drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
On Mon, Mar 22, 2021 at 02:17:12AM -0700, Kalyan Thota wrote: > From: Kalyan Thota > > DPU runtime resume will request for a min vote on the AXI bus as > it is a necessary step before turning ON the AXI clock. > > The change does below > 1) Move the icc path set before requesting runtime get_sync. > 2) remove the dependency of hw catalog for min ib vote > as it is initialized at a later point. > > Signed-off-by: Kalyan Thota Confirmed that this fixes a bunch of warnings at boot on SC7180 when (out-of-tree) camera support is enabled: [1.832228] gcc_disp_hf_axi_clk status stuck at 'off' [2.118292] gcc_disp_hf_axi_clk status stuck at 'off' [2.442383] gcc_disp_hf_axi_clk already disabled [2.750054] gcc_disp_hf_axi_clk already unprepared [3.154835] gcc_disp_hf_axi_clk already disabled [3.421835] gcc_disp_hf_axi_clk already unprepared Tested-by: Matthias Kaehlcke ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
[v1] drm/msm/disp/dpu1: icc path needs to be set before dpu runtime resume
From: Kalyan Thota DPU runtime resume will request for a min vote on the AXI bus as it is a necessary step before turning ON the AXI clock. The change does below 1) Move the icc path set before requesting runtime get_sync. 2) remove the dependency of hw catalog for min ib vote as it is initialized at a later point. Signed-off-by: Kalyan Thota --- drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 12 +++- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index ed636f1..cab387f 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -44,6 +44,8 @@ #define DPU_DEBUGFS_DIR "msm_dpu" #define DPU_DEBUGFS_HWMASKNAME "hw_log_mask" +#define MIN_IB_BW 4ULL /* Min ib vote 400MB */ + static int dpu_kms_hw_init(struct msm_kms *kms); static void _dpu_kms_mmu_destroy(struct dpu_kms *dpu_kms); @@ -932,6 +934,9 @@ static int dpu_kms_hw_init(struct msm_kms *kms) DPU_DEBUG("REG_DMA is not defined"); } + if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss")) + dpu_kms_parse_data_bus_icc_path(dpu_kms); + pm_runtime_get_sync(_kms->pdev->dev); dpu_kms->core_rev = readl_relaxed(dpu_kms->mmio + 0x0); @@ -1037,9 +1042,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms) dpu_vbif_init_memtypes(dpu_kms); - if (of_device_is_compatible(dev->dev->of_node, "qcom,sc7180-mdss")) - dpu_kms_parse_data_bus_icc_path(dpu_kms); - pm_runtime_put_sync(_kms->pdev->dev); return 0; @@ -1196,10 +1198,10 @@ static int __maybe_unused dpu_runtime_resume(struct device *dev) ddev = dpu_kms->dev; + WARN_ON(!(dpu_kms->num_paths)); /* Min vote of BW is required before turning on AXI clk */ for (i = 0; i < dpu_kms->num_paths; i++) - icc_set_bw(dpu_kms->path[i], 0, - dpu_kms->catalog->perf.min_dram_ib); + icc_set_bw(dpu_kms->path[i], 0, Bps_to_icc(MIN_IB_BW)); rc = msm_dss_enable_clk(mp->clk_config, mp->num_clk, true); if (rc) { -- 2.7.4 ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel