From: Daniel Lezcano <daniel.lezcano@oss.qualcomm.com>
To: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Cc: Gaurav Kohli <gaurav.kohli@oss.qualcomm.com>,
Krzysztof Kozlowski <krzk@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Amit Kucheria <amit.kucheria@oss.qualcomm.com>,
Manivannan Sadhasivam <mani@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Kees Cook <kees@kernel.org>,
"Gustavo A. R. Silva" <gustavoars@kernel.org>,
cros-qcom-dts-watchers@chromium.org,
linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org, linux-hardening@vger.kernel.org,
Manaf Meethalavalappu Pallikunhi
<manaf.pallikunhi@oss.qualcomm.com>
Subject: Re: [PATCH v3 1/8] dt-bindings: remoteproc: qcom,pas: add thermal mitigation properties
Date: Fri, 19 Jun 2026 14:16:09 +0200 [thread overview]
Message-ID: <05abd4cd-8ce8-4ef9-9dbf-4eeb9a940a1f@oss.qualcomm.com> (raw)
In-Reply-To: <4gs664zboaqgpok33x7bgorfmhh3f2fahjkt4jjl6fbzpwixnm@hxzz2xeogd4k>
On 6/16/26 00:15, Dmitry Baryshkov wrote:
> On Mon, Jun 15, 2026 at 05:33:15PM +0200, Daniel Lezcano wrote:
>>
>>
>> Le 15/06/2026 à 17:14, Dmitry Baryshkov a écrit :
>>> On Mon, Jun 15, 2026 at 04:33:38PM +0200, Daniel Lezcano wrote:
>>>>
>>>>
>>>> Le 15/06/2026 à 16:11, Dmitry Baryshkov a écrit :
>>>>> On Mon, Jun 15, 2026 at 02:30:49PM +0200, Daniel Lezcano wrote:
>>>>>> Hi Gaurav,
>>>>>>
>>>>>> Le 15/06/2026 à 14:12, Gaurav Kohli a écrit :
>>>>>>>
>>>>>>>
>>>>>>> On 6/15/2026 4:04 PM, Daniel Lezcano wrote:
>>>>>>>> On 6/13/26 13:05, Gaurav Kohli wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 6/13/2026 1:11 PM, Krzysztof Kozlowski wrote:
>>>>>>>>>> On 12/06/2026 15:52, Gaurav Kohli wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 6/11/2026 5:53 PM, Krzysztof Kozlowski wrote:
>>>>>>>>>>>> On 11/06/2026 13:12, Gaurav Kohli wrote:
>>>>>>>>>>>>>> Why? And where is this generic property defined? You cannot just
>>>>>>>>>>>>>> sprinkle generic properties in random bindings.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ack, will add why part.
>>>>>>>>>>>>> These names are matched with the thermal
>>>>>>>>>>>>> mitigation device identifiers
>>>>>>>>>>>>> populated by remote firmware over QMI and define
>>>>>>>>>>>>> mitigation devices are
>>>>>>>>>>>>> exposed as cooling devices.
>>>>>>>>>>>>
>>>>>>>>>>>> No, -names correspond to values passed via DT, not
>>>>>>>>>>>> some remote firmware.
>>>>>>>>>>>> The remote firmware should give you interface which
>>>>>>>>>>>> is explicit and does
>>>>>>>>>>>> not need such properties.
>>>>>>>>>>>
>>>>>>>>>>> thanks Krzysztof for review, We need tmd-names because
>>>>>>>>>>> of following reasons:
>>>>>>>>>>>
>>>>>>>>>>> Following Daniel's series [1], the thermal framework supports
>>>>>>>>>>> mapping multiple cooling devices per remoteproc/device via indexed
>>>>>>>>>>> cooling-cells.
>>>>>>>>>>>
>>>>>>>>>>> 1) The thermal framework's cooling-maps reference
>>>>>>>>>>> cooling devices by index (for #cooling-cells = <3>).
>>>>>>>>>>> Without tmd- names,
>>>>>>>>>>> there's no way to know which index corresponds to which
>>>>>>>>>>> TMD, as firmware
>>>>>>>>>>> may return tmd-names in any order.
>>>>>>>>>>>
>>>>>>>>>>> below are the changes post new thermal mapping changes:
>>>>>>>>>>> DT: tmd-names = "cdsp_sw", "xyz";
>>>>>>>>>>> Firmware: ["cdsp_sw", "xyz1", "xyz2",]
>>>>>>>>>>> Driver registers: Only "cdsp_sw" (index 0) and "xyz" (index 1)
>>>>>>>>>>
>>>>>>>>>> names property are not to instruct drivers to register or not to
>>>>>>>>>> register something.
>>>>>>>>>>
>>>>>>>>>> I don't understand the problem and explanation in the binding is
>>>>>>>>>> basically non-existing.
>>>>>>>>>>
>>>>>>>>>> Remember that all lists and indices ARE FIXED, so driver knows exactly
>>>>>>>>>> which index means what.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> thanks for review, shall i use driver data, which is basically
>>>>>>>>> pas data structure like below:
>>>>>>>>>
>>>>>>>>> static const struct qcom_pas_data {
>>>>>>>>> .crash_reason_smem = 601,
>>>>>>>>> .firmware_name = "cdsp.mdt",
>>>>>>>>> .tmd_names = (const char *[]){"xyz", NULL},
>>>>>>>>> .num_tmds = 1,
>>>>>>>>>
>>>>>>>>> Is something like above acceptable? and this will also help to
>>>>>>>>> filter tmd names as well?
>>>>>>>>
>>>>>>>>
>>>>>>>> How the thermal framework will bind the thermal zone with the TMD ?
>>>>>>>> (node pointer, id) ?
>>>>>>>>
>>>>>>>
>>>>>>> Hi Daniel,
>>>>>>>
>>>>>>> thanks for review.
>>>>>>>
>>>>>>> With id only, in this case instead of taking tmd names from device tree,
>>>>>>> qmi_tmd will take tmd name from pas_data(driver) and register with the
>>>>>>> cooling framework with id only. Please let us know if this looks fine.
>>>>>> May be I'm missing something but:
>>>>>>
>>>>>> - The QMI TMD returns a list of names, not ids
>>>>>> - The QMI TMD may return the list in different order than assumed
>>>>>> - The cooling map index points to the name of the TMD in the DT
>>>>>> - This name is used to match the name in the aformentionned list
>>>>>> - The index in the list and the id in the DT can differ
>>>>>
>>>>> Would it be better if we define standard indices for the standard names?
>>>>> This way we decouple the actual firmware strings from the DT.
>>>>
>>>> I don't think so, it seems to me too fragile and prone to error.
>>>>
>>>> It is a remote proc, an external subsystem. The contract between the client
>>>> and the server is the protocol. The protocol specifies the identifier as
>>>> named strings, the TMD names, not numerical identifiers.
>>>>
>>>> When asking for the list of TMDs, we get a list of strings. But as it is an
>>>> external subsystems, may be tomorrow someone decide to send list ordered
>>>> alphabetically, or per number of states, or whatever.
>>>>
>>>> With hardcoded id the QMI TMD clients break
>>>
>>> I was thinking about something like:
>>>
>>> #define QCOM_TMD_DSP 0
>>> #define QCOM_TMD_PA 1
>>
>> Ah ok, it is correct if:
>>
>> tmd-names = "dsp", "pa"
>>
>> Or
>>
>> #define QCOM_TMD_PA 0
>> #define QCOM_TMD_DSP 1
>>
>> tmd-names = "pa", "dsp"
>
> I was more inclined about having the standard indices for the standard
> mitigations.
>
> BTW, I checked, which mitigations are being returned by the DSPs. Few
> examples, just to provide some context.
I don't know if you are missing my point or if I'm missing yours :)
The QMI TMD protocol identifies the TMD with strings. There is no
guarantee the ordering is kept if there is a firmware upgrade.
The ID is to connect the cooling map with the remote proc node index.
Its only a thermal description not related to the TMD itself.
> SC8280XP, X13s:
>
> TMD service: instance=0x01 (adsp) node=5 port=9
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
> TMD service: instance=0x53 (slpi) node=9 port=9
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
> TMD service: instance=0x43 (cdsp) node=10 port=8
> 3 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
> [ 1] cdsp_hw max_mitigation_level=1
> [ 2] cdsp_sw max_mitigation_level=7
>
> SM6115, RB2:
>
> TMD service: instance=0x00 (modem) node=0 port=20
> 9 mitigation device(s):
> [ 0] pa max_mitigation_level=3
> [ 1] modem max_mitigation_level=3
> [ 2] cpuv_restriction_cold max_mitigation_level=1
> [ 3] modem_current max_mitigation_level=3
> [ 4] vbatt_low max_mitigation_level=3
> [ 5] modem_skin max_mitigation_level=3
> [ 6] modem_bw max_mitigation_level=5
> [ 7] wlan max_mitigation_level=1
> [ 8] wlan_bw max_mitigation_level=1
>
> TMD service: instance=0x01 (adsp) node=5 port=8
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
> TMD service: instance=0x43 (cdsp) node=10 port=8
> 3 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
> [ 1] cdsp_hw max_mitigation_level=1
> [ 2] cdsp_sw max_mitigation_level=5
>
>
> SM8350, HDK:
>
> TMD service: instance=0x00 (modem) node=0 port=22
> 28 mitigation device(s):
> [ 0] pa max_mitigation_level=3
> [ 1] pa_fr1 max_mitigation_level=3
> [ 2] modem max_mitigation_level=3
> [ 3] cpuv_restriction_cold max_mitigation_level=1
> [ 4] modem_current max_mitigation_level=3
> [ 5] vbatt_low max_mitigation_level=3
> [ 6] charge_state max_mitigation_level=3
> [ 7] modem_skin max_mitigation_level=3
> [ 8] modem_bw max_mitigation_level=5
> [ 9] mmw0 max_mitigation_level=3
> [10] mmw1 max_mitigation_level=3
> [11] mmw2 max_mitigation_level=3
> [12] mmw3 max_mitigation_level=3
> [13] mmw_skin0 max_mitigation_level=3
> [14] mmw_skin1 max_mitigation_level=3
> [15] mmw_skin2 max_mitigation_level=3
> [16] mmw_skin3 max_mitigation_level=3
> [17] mmw_skin0_dsc max_mitigation_level=15
> [18] mmw_skin1_dsc max_mitigation_level=15
> [19] mmw_skin2_dsc max_mitigation_level=15
> [20] mmw_skin3_dsc max_mitigation_level=15
> [21] wlan max_mitigation_level=4
> [22] wlan_bw max_mitigation_level=1
> [23] modem_skin_lte_dsc max_mitigation_level=255
> [24] modem_skin_nr_dsc max_mitigation_level=255
> [25] pa_dsc max_mitigation_level=255
> [26] pa_fr1_dsc max_mitigation_level=255
> [27] cpr_cold max_mitigation_level=3
>
> TMD service: instance=0x01 (adsp) node=5 port=9
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
> TMD service: instance=0x43 (cdsp) node=10 port=9
> 3 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
> [ 1] cdsp_hw max_mitigation_level=1
> [ 2] cdsp_sw max_mitigation_level=7
>
> SM8150, HDK:
>
> TMD service: instance=0x00 (modem) node=0 port=21
> 6 mitigation device(s):
> [ 0] pa max_mitigation_level=3
> [ 1] modem max_mitigation_level=3
> [ 2] cpuv_restriction_cold max_mitigation_level=1
> [ 3] modem_current max_mitigation_level=3
> [ 4] vbatt_low max_mitigation_level=3
> [ 5] modem_skin max_mitigation_level=3
>
> TMD service: instance=0x01 node=5 port=8
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
> TMD service: instance=0x53 node=9 port=8
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
> TMD service: instance=0x43 (cdsp) node=10 port=8
> 1 mitigation device(s):
> [ 0] cpuv_restriction_cold max_mitigation_level=1
>
>
next prev parent reply other threads:[~2026-06-19 12:16 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 10:22 [PATCH v3 0/8] Add support for Qualcomm remoteproc subsystem cooling Gaurav Kohli
2026-06-09 10:22 ` [PATCH v3 1/8] dt-bindings: remoteproc: qcom,pas: add thermal mitigation properties Gaurav Kohli
2026-06-09 10:47 ` Dmitry Baryshkov
2026-06-10 12:02 ` Gaurav Kohli
2026-06-10 7:31 ` Krzysztof Kozlowski
2026-06-11 11:12 ` Gaurav Kohli
2026-06-11 12:23 ` Krzysztof Kozlowski
2026-06-12 13:52 ` Gaurav Kohli
2026-06-13 7:41 ` Krzysztof Kozlowski
2026-06-13 11:05 ` Gaurav Kohli
2026-06-15 5:03 ` Krzysztof Kozlowski
2026-06-15 10:34 ` Daniel Lezcano
2026-06-15 12:12 ` Gaurav Kohli
2026-06-15 12:30 ` Daniel Lezcano
2026-06-15 14:11 ` Dmitry Baryshkov
2026-06-15 14:33 ` Daniel Lezcano
2026-06-15 15:14 ` Dmitry Baryshkov
2026-06-15 15:33 ` Daniel Lezcano
2026-06-15 22:15 ` Dmitry Baryshkov
2026-06-17 12:32 ` Konrad Dybcio
2026-06-19 12:16 ` Daniel Lezcano [this message]
2026-06-16 4:21 ` Krzysztof Kozlowski
2026-06-18 7:17 ` Daniel Lezcano
2026-06-09 10:22 ` [PATCH v3 2/8] soc: qcom: Add support for QMI TMD cooling devices Gaurav Kohli
2026-06-09 11:30 ` Dmitry Baryshkov
2026-06-09 12:08 ` Daniel Lezcano
2026-06-10 13:42 ` Dmitry Baryshkov
2026-06-10 14:15 ` Daniel Lezcano
2026-06-11 10:53 ` Gaurav Kohli
2026-06-11 22:50 ` Dmitry Baryshkov
2026-06-09 10:22 ` [PATCH v3 3/8] remoteproc: qcom: pas: register TMD thermal " Gaurav Kohli
2026-06-09 11:05 ` Dmitry Baryshkov
2026-06-09 12:03 ` Konrad Dybcio
2026-06-11 4:45 ` Gaurav Kohli
2026-06-11 20:34 ` Dmitry Baryshkov
2026-06-09 10:22 ` [PATCH v3 4/8] arm64: dts: qcom: kodiak: Enable CDSP & Modem cooling Gaurav Kohli
2026-06-09 10:57 ` Dmitry Baryshkov
2026-06-15 5:32 ` Gaurav Kohli
2026-06-15 15:25 ` Dmitry Baryshkov
2026-06-09 10:23 ` [PATCH v3 5/8] arm64: dts: qcom: lemans: Enable CDSP cooling Gaurav Kohli
2026-06-09 10:23 ` [PATCH v3 6/8] arm64: dts: qcom: talos: " Gaurav Kohli
2026-06-09 10:23 ` [PATCH v3 7/8] arm64: dts: qcom: monaco: " Gaurav Kohli
2026-06-09 10:23 ` [PATCH v3 8/8] arm64: dts: qcom: hamoa: " Gaurav Kohli
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=05abd4cd-8ce8-4ef9-9dbf-4eeb9a940a1f@oss.qualcomm.com \
--to=daniel.lezcano@oss.qualcomm.com \
--cc=amit.kucheria@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=cros-qcom-dts-watchers@chromium.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=gaurav.kohli@oss.qualcomm.com \
--cc=gustavoars@kernel.org \
--cc=kees@kernel.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=manaf.pallikunhi@oss.qualcomm.com \
--cc=mani@kernel.org \
--cc=mathieu.poirier@linaro.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