From: "Luca Weiss" <luca.weiss@fairphone.com>
To: "Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>,
"Georgi Djakov" <djakov@kernel.org>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Bjorn Andersson" <andersson@kernel.org>,
"Luca Weiss" <luca.weiss@fairphone.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Brian Masney" <masneyb@onstation.org>
Cc: <linux-arm-msm@vger.kernel.org>, <linux-pm@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
"Brian Masney" <bmasney@redhat.com>,
"Konrad Dybcio" <konrad.dybcio@oss.qualcomm.com>
Subject: Re: [PATCH v2 6/9] interconnect: qcom: let platforms declare their bugginess
Date: Tue, 24 Mar 2026 13:14:21 +0100 [thread overview]
Message-ID: <DHB05UJMTAVN.17X2QI6XGHB37@fairphone.com> (raw)
In-Reply-To: <20260324-msm8974-icc-v2-6-527280043ad8@oss.qualcomm.com>
On Tue Mar 24, 2026 at 1:10 AM CET, Dmitry Baryshkov wrote:
> On MSM8974 programming some of the RPM resources results in the
> "resource does not exist" messages from the firmware. This occurs even
> with the downstream bus driver, which happily ignores the errors. My
> assumption is that these resources existed in the earlier firmware
> revisions but were later switched to be programmed differently (for the
> later platforms corresponding nodes use qos.ap_owned, which prevents
> those resources from being programmed.
>
> In preparation for conversion of the MSM8974 driver (which doesn't have
> QoS code yet) to the main icc-rpm set of helpers, let the driver declare
> that those -ENXIO errors must be ignored (for now). Later, when the QoS
> programming is sorted out (and more interconnects are added to the DT),
> this quirk might be removed.
For reference, these are the errors I see on fairphone-fp2
[ 5.534806] qcom_icc_rpm_smd_send mas 8 error -6
[ 5.535010] qcom_icc_rpm_smd_send mas 8 error -6
[ 5.535218] qcom_icc_rpm_smd_send slv 16 error -6
[ 5.535445] qcom_icc_rpm_smd_send slv 16 error -6
[ 5.535754] qcom_icc_rpm_smd_send mas 2 error -6
[ 5.535909] qcom_icc_rpm_smd_send mas 2 error -6
[ 5.543665] /soc/display-subsystem@fd900000/dsi@fd922800: Fixed dependency cycle(s) with /soc/display-subsystem@fd900000/dsi@fd922800/panel@0
[ 5.544067] /soc/display-subsystem@fd900000/dsi@fd922800/panel@0: Fixed dependency cycle(s) with /soc/display-subsystem@fd900000/dsi@fd922800
[ 5.548238] [drm] using 192m VRAM carveout
[ 5.560881] msm_mdp fd900100.display-controller: [drm:msm_drm_bind [msm]] VRAM: 70100000->7c100000
[ 5.561454] msm_mdp fd900100.display-controller: bound fd922800.dsi (ops dsi_ops [msm])
[ 5.563093] adreno fdb00000.gpu: supply vdd not found, using dummy regulator
[ 5.563624] adreno fdb00000.gpu: supply vddcx not found, using dummy regulator
[ 5.563756] adreno fdb00000.gpu: [drm:msm_devfreq_init [msm]] *ERROR* Couldn't initialize GPU devfreq
[ 5.564152] msm_mdp fd900100.display-controller: [drm:msm_gpu_init [msm]] 3.3.0.2: no IOMMU, fallback to VRAM carveout!
[ 5.565468] msm_mdp fd900100.display-controller: [drm:a3xx_gpu_init [msm]] *ERROR* No memory protection without IOMMU
[ 5.566035] qcom_icc_rpm_smd_send mas 6 error -6
[ 5.566235] qcom_icc_rpm_smd_send mas 6 error -6
[ 5.566443] qcom_icc_rpm_smd_send slv 16 error -6
[ 5.566654] qcom_icc_rpm_smd_send slv 16 error -6
[ 5.566863] qcom_icc_rpm_smd_send mas 2 error -6
[ 5.567072] qcom_icc_rpm_smd_send mas 2 error -6
[ 5.567573] qcom_icc_rpm_smd_send mas 55 error -6
[ 5.567869] qcom_icc_rpm_smd_send mas 55 error -6
[ 5.568078] qcom_icc_rpm_smd_send mas 56 error -6
[ 5.568287] qcom_icc_rpm_smd_send slv 79 error -6
[ 5.568495] qcom_icc_rpm_smd_send mas 56 error -6
[ 5.568707] qcom_icc_rpm_smd_send slv 79 error -6
[ 5.569199] qcom_icc_rpm_smd_send mas 56 error -6
[ 5.569486] qcom_icc_rpm_smd_send slv 79 error -6
[ 5.569695] qcom_icc_rpm_smd_send mas 56 error -6
[ 5.569905] qcom_icc_rpm_smd_send slv 79 error -6
[ 5.570292] qcom_icc_rpm_smd_send slv 78 error -6
[ 5.570722] qcom_icc_rpm_smd_send slv 78 error -6
[ 5.571147] qcom_icc_rpm_smd_send slv 78 error -6
[ 5.571575] qcom_icc_rpm_smd_send slv 78 error -6
[ 5.572034] msm_mdp fd900100.display-controller: bound fdb00000.gpu (ops a3xx_ops [msm])
[ 5.572543] msm_mdp fd900100.display-controller: [drm:mdp5_kms_init [msm]] MDP5 version v1.2
[ 5.600817] msm_mdp fd900100.display-controller: [drm] no IOMMU, fallback to phys contig buffers for scanout
[ 5.600893] msm_mdp fd900100.display-controller: [drm:mdp5_kms_init [msm]] Skipping eDP interface 0
[ 5.601365] msm_mdp fd900100.display-controller: fall back to the other CTL category for INTF 1!
[ 5.607380] [drm] Initialized msm 1.12.0 for fd900100.display-controller on minor 0
Regards
Luca
>
> Reviewed-by: Brian Masney <bmasney@redhat.com>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
> drivers/interconnect/qcom/icc-rpm.c | 17 ++++++++++-------
> drivers/interconnect/qcom/icc-rpm.h | 3 +++
> 2 files changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/interconnect/qcom/icc-rpm.c b/drivers/interconnect/qcom/icc-rpm.c
> index aec2f84cd56f..23a1d116e79a 100644
> --- a/drivers/interconnect/qcom/icc-rpm.c
> +++ b/drivers/interconnect/qcom/icc-rpm.c
> @@ -204,7 +204,7 @@ static int qcom_icc_qos_set(struct icc_node *node)
> }
> }
>
> -static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 *bw)
> +static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 *bw, bool ignore_enxio)
> {
> int ret, rpm_ctx = 0;
> u64 bw_bps;
> @@ -222,8 +222,9 @@ static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 *bw)
> bw_bps);
> if (ret) {
> pr_err("qcom_icc_rpm_smd_send mas %d error %d\n",
> - qn->mas_rpm_id, ret);
> - return ret;
> + qn->mas_rpm_id, ret);
> + if (ret != -ENXIO || !ignore_enxio)
> + return ret;
> }
> }
>
> @@ -234,8 +235,9 @@ static int qcom_icc_rpm_set(struct qcom_icc_node *qn, u64 *bw)
> bw_bps);
> if (ret) {
> pr_err("qcom_icc_rpm_smd_send slv %d error %d\n",
> - qn->slv_rpm_id, ret);
> - return ret;
> + qn->slv_rpm_id, ret);
> + if (ret != -ENXIO || !ignore_enxio)
> + return ret;
> }
> }
> }
> @@ -361,12 +363,12 @@ static int qcom_icc_set(struct icc_node *src, struct icc_node *dst)
> active_rate = agg_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE];
> sleep_rate = agg_clk_rate[QCOM_SMD_RPM_SLEEP_STATE];
>
> - ret = qcom_icc_rpm_set(src_qn, src_qn->sum_avg);
> + ret = qcom_icc_rpm_set(src_qn, src_qn->sum_avg, qp->ignore_enxio);
> if (ret)
> return ret;
>
> if (dst_qn) {
> - ret = qcom_icc_rpm_set(dst_qn, dst_qn->sum_avg);
> + ret = qcom_icc_rpm_set(dst_qn, dst_qn->sum_avg, qp->ignore_enxio);
> if (ret)
> return ret;
> }
> @@ -509,6 +511,7 @@ int qnoc_probe(struct platform_device *pdev)
> for (i = 0; i < cd_num; i++)
> qp->intf_clks[i].id = cds[i];
>
> + qp->ignore_enxio = desc->ignore_enxio;
> qp->keep_alive = desc->keep_alive;
> qp->type = desc->type;
> qp->qos_offset = desc->qos_offset;
> diff --git a/drivers/interconnect/qcom/icc-rpm.h b/drivers/interconnect/qcom/icc-rpm.h
> index ad554c63967b..7d1cb2efa9ee 100644
> --- a/drivers/interconnect/qcom/icc-rpm.h
> +++ b/drivers/interconnect/qcom/icc-rpm.h
> @@ -51,6 +51,7 @@ struct rpm_clk_resource {
> * @bus_clk: a pointer to a HLOS-owned bus clock
> * @intf_clks: a clk_bulk_data array of interface clocks
> * @keep_alive: whether to always keep a minimum vote on the bus clocks
> + * @ignore_enxio: whether to ignore ENXIO errors (for MSM8974)
> */
> struct qcom_icc_provider {
> struct icc_provider provider;
> @@ -65,6 +66,7 @@ struct qcom_icc_provider {
> struct clk *bus_clk;
> struct clk_bulk_data *intf_clks;
> bool keep_alive;
> + bool ignore_enxio;
> };
>
> /**
> @@ -136,6 +138,7 @@ struct qcom_icc_desc {
> u16 ab_coeff;
> u16 ib_coeff;
> int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak);
> + bool ignore_enxio;
> };
>
> /* Valid for all bus types */
next prev parent reply other threads:[~2026-03-24 12:14 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-24 0:10 [PATCH v2 0/9] interconnect: qcom: let MSM8974 interconnect work again Dmitry Baryshkov
2026-03-24 0:10 ` [PATCH v2 1/9] dt-bindings: interconnect: qcom,msm8974: drop bus clocks Dmitry Baryshkov
2026-03-24 0:10 ` [PATCH v2 2/9] dt-bindings: interconnect: qcom,msm8974: use qcom,rpm-common Dmitry Baryshkov
2026-03-24 0:10 ` [PATCH v2 3/9] interconnect: qcom: drop unused is_on flag Dmitry Baryshkov
2026-03-24 9:40 ` Konrad Dybcio
2026-03-24 0:10 ` [PATCH v2 4/9] interconnect: qcom: icc-rpm: allow overwriting get_bw callback Dmitry Baryshkov
2026-03-24 10:54 ` Konrad Dybcio
2026-03-24 0:10 ` [PATCH v2 5/9] interconnect: qcom: define OCMEM bus resource Dmitry Baryshkov
2026-03-24 0:10 ` [PATCH v2 6/9] interconnect: qcom: let platforms declare their bugginess Dmitry Baryshkov
2026-03-24 12:14 ` Luca Weiss [this message]
2026-03-25 10:52 ` Konrad Dybcio
2026-03-24 0:10 ` [PATCH v2 7/9] interconnect: qcom: msm8974: switch to the main icc-rpm driver Dmitry Baryshkov
2026-03-24 0:10 ` [PATCH v2 8/9] interconnect: qcom: msm8974: expand DEFINE_QNODE macros Dmitry Baryshkov
2026-03-24 0:10 ` [PATCH v2 9/9] ARM: dts: qcom: msm8974: Drop RPM bus clocks Dmitry Baryshkov
2026-03-24 9:40 ` Konrad Dybcio
2026-03-24 2:09 ` [PATCH v2 0/9] interconnect: qcom: let MSM8974 interconnect work again Alexandre Messier
2026-03-24 11:04 ` Luca Weiss
2026-03-24 11:07 ` Luca Weiss
2026-03-31 21:04 ` (subset) " Bjorn Andersson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DHB05UJMTAVN.17X2QI6XGHB37@fairphone.com \
--to=luca.weiss@fairphone.com \
--cc=andersson@kernel.org \
--cc=bmasney@redhat.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=djakov@kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=masneyb@onstation.org \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox