lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.19 359/365] venus: pm_helpers: Fix warning in OPP during probe
    Date
    From: Stanimir Varbanov <stanimir.varbanov@linaro.org>

    [ Upstream commit 1d95af02f23031c2e1cca7607c514b86ce85bc6e ]

    Fix the following WARN triggered during Venus driver probe on
    5.19.0-rc8-next-20220728:

    WARNING: CPU: 7 PID: 339 at drivers/opp/core.c:2471 dev_pm_opp_set_config+0x49c/0x610
    Modules linked in: qcom_spmi_adc5 rtc_pm8xxx qcom_spmi_adc_tm5 leds_qcom_lpg led_class_multicolor
    qcom_pon qcom_vadc_common venus_core(+) qcom_spmi_temp_alarm v4l2_mem2mem videobuf2_v4l2 msm(+)
    videobuf2_common crct10dif_ce spi_geni_qcom snd_soc_sm8250 i2c_qcom_geni gpu_sched
    snd_soc_qcom_common videodev qcom_q6v5_pas soundwire_qcom drm_dp_aux_bus qcom_stats
    drm_display_helper qcom_pil_info soundwire_bus snd_soc_lpass_va_macro mc qcom_q6v5
    phy_qcom_snps_femto_v2 qcom_rng snd_soc_lpass_macro_common snd_soc_lpass_wsa_macro
    lpass_gfm_sm8250 slimbus qcom_sysmon qcom_common qcom_glink_smem qmi_helpers
    qcom_wdt mdt_loader socinfo icc_osm_l3 display_connector
    drm_kms_helper qnoc_sm8250 drm fuse ip_tables x_tables ipv6
    CPU: 7 PID: 339 Comm: systemd-udevd Not tainted 5.19.0-rc8-next-20220728 #4
    Hardware name: Qualcomm Technologies, Inc. Robotics RB5 (DT)
    pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    pc : dev_pm_opp_set_config+0x49c/0x610
    lr : dev_pm_opp_set_config+0x58/0x610
    sp : ffff8000093c3710
    x29: ffff8000093c3710 x28: ffffbca3959d82b8 x27: ffff8000093c3d00
    x26: ffffbca3959d8e08 x25: ffff4396cac98118 x24: ffff4396c0e24810
    x23: ffff4396c4272c40 x22: ffff4396c0e24810 x21: ffff8000093c3810
    x20: ffff4396cac36800 x19: ffff4396cac96800 x18: 0000000000000000
    x17: 0000000000000003 x16: ffffbca3f4edf198 x15: 0000001cba64a858
    x14: 0000000000000180 x13: 000000000000017e x12: 0000000000000000
    x11: 0000000000000002 x10: 0000000000000a60 x9 : ffff8000093c35c0
    x8 : ffff4396c4273700 x7 : ffff43983efca6c0 x6 : ffff43983efca640
    x5 : 00000000410fd0d0 x4 : ffff4396c4272c40 x3 : ffffbca3f5d1e008
    x2 : 0000000000000000 x1 : ffff4396c2421600 x0 : ffff4396cac96860
    Call trace:
    dev_pm_opp_set_config+0x49c/0x610
    devm_pm_opp_set_config+0x18/0x70
    vcodec_domains_get+0xb8/0x1638 [venus_core]
    core_get_v4+0x1d8/0x218 [venus_core]
    venus_probe+0xf4/0x468 [venus_core]
    platform_probe+0x68/0xd8
    really_probe+0xbc/0x2a8
    __driver_probe_device+0x78/0xe0
    driver_probe_device+0x3c/0xf0
    __driver_attach+0x70/0x120
    bus_for_each_dev+0x70/0xc0
    driver_attach+0x24/0x30
    bus_add_driver+0x150/0x200
    driver_register+0x64/0x120
    __platform_driver_register+0x28/0x38
    qcom_venus_driver_init+0x24/0x1000 [venus_core]
    do_one_initcall+0x54/0x1c8
    do_init_module+0x44/0x1d0
    load_module+0x16c8/0x1aa0
    __do_sys_finit_module+0xbc/0x110
    __arm64_sys_finit_module+0x20/0x30
    invoke_syscall+0x44/0x108
    el0_svc_common.constprop.0+0xcc/0xf0
    do_el0_svc+0x2c/0xb8
    el0_svc+0x2c/0x88
    el0t_64_sync_handler+0xb8/0xc0
    el0t_64_sync+0x18c/0x190
    qcom-venus: probe of aa00000.video-codec failed with error -16

    The fix is re-ordering the code related to OPP core. The OPP core
    expects all configuration options to be provided before the OPP
    table is added.

    Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Suggested-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/platform/qcom/venus/pm_helpers.c | 10 +++++-----
    1 file changed, 5 insertions(+), 5 deletions(-)

    diff --git a/drivers/media/platform/qcom/venus/pm_helpers.c b/drivers/media/platform/qcom/venus/pm_helpers.c
    index cb48c5ff3dee..c93d2906e4c7 100644
    --- a/drivers/media/platform/qcom/venus/pm_helpers.c
    +++ b/drivers/media/platform/qcom/venus/pm_helpers.c
    @@ -875,7 +875,7 @@ static int vcodec_domains_get(struct venus_core *core)
    }

    skip_pmdomains:
    - if (!core->has_opp_table)
    + if (!core->res->opp_pmdomain)
    return 0;

    /* Attach the power domain for setting performance state */
    @@ -1007,6 +1007,10 @@ static int core_get_v4(struct venus_core *core)
    if (ret)
    return ret;

    + ret = vcodec_domains_get(core);
    + if (ret)
    + return ret;
    +
    if (core->res->opp_pmdomain) {
    ret = devm_pm_opp_of_add_table(dev);
    if (!ret) {
    @@ -1017,10 +1021,6 @@ static int core_get_v4(struct venus_core *core)
    }
    }

    - ret = vcodec_domains_get(core);
    - if (ret)
    - return ret;
    -
    return 0;
    }

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-23 11:25    [W:2.977 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site