From: Krzysztof Kozlowski <krzk@kernel.org>
To: Harshal Dev <harshal.dev@oss.qualcomm.com>,
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Abel Vesa <abel.vesa@oss.qualcomm.com>,
cros-qcom-dts-watchers@chromium.org
Cc: Brian Masney <bmasney@redhat.com>,
Neeraj Soni <neeraj.soni@oss.qualcomm.com>,
Gaurav Kashyap <gaurav.kashyap@oss.qualcomm.com>,
linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 01/11] dt-bindings: crypto: qcom,ice: Require power-domain and iface clk
Date: Fri, 6 Feb 2026 11:50:29 +0100 [thread overview]
Message-ID: <6efcdf51-bdb1-4dfc-aa5e-8b7dc8c68cd3@kernel.org> (raw)
In-Reply-To: <2830a189-a5ce-45a0-92fe-7a01c3b012a7@oss.qualcomm.com>
On 06/02/2026 11:07, Harshal Dev wrote:
> Hi Krzysztof,
>
> On 2/5/2026 4:47 PM, Krzysztof Kozlowski wrote:
>> On 03/02/2026 10:26, Harshal Dev wrote:
>>> Hi Krzysztof and Konrad,
>>>
>>> On 1/26/2026 3:59 PM, Konrad Dybcio wrote:
>>>> On 1/23/26 12:04 PM, Harshal Dev wrote:
>>>>> Hi Krzysztof,
>>>>>
>>>>> On 1/23/2026 2:27 PM, Krzysztof Kozlowski wrote:
>>>>>> On 23/01/2026 08:11, Harshal Dev wrote:
>>>>>>> Update the inline-crypto engine DT binding to reflect that power-domain and
>>>>>>> clock-names are now mandatory. Also update the maximum number of clocks
>>>>>>> that can be specified to two. These new fields are mandatory because ICE
>>>>>>> needs to vote on the power domain before it attempts to vote on the core
>>>>>>> and iface clocks to avoid clock 'stuck' issues.
>>>>>>>
>>>>>>> Signed-off-by: Harshal Dev <harshal.dev@oss.qualcomm.com>
>>>>>>> ---
>>>>>>> .../bindings/crypto/qcom,inline-crypto-engine.yaml | 14 +++++++++++++-
>>>>>>> 1 file changed, 13 insertions(+), 1 deletion(-)
>>>>>>>
>>>>>>> diff --git a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
>>>>>>> index c3408dcf5d20..1c2416117d4c 100644
>>>>>>> --- a/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
>>>>>>> +++ b/Documentation/devicetree/bindings/crypto/qcom,inline-crypto-engine.yaml
>>>>>>> @@ -28,12 +28,20 @@ properties:
>>>>>>> maxItems: 1
>>>>>>>
>>>>>>> clocks:
>>>>>>> + maxItems: 2
>>>>>>
>>>>>> This is ABI break and your commit msg suggests things were not perfect,
>>>>>> but it is not explicit - was this working or not? How is it that ICE was
>>>>>> never tested?
>>>>>>
>>>>>
>>>>> I took some time to educate myself on the point of DT bindings stability being a
>>>>> strict requirement now, so I understand how these changes are breaking ABI, I'll
>>>>> send a better version of this again.
>>>>>
>>>>> As for your question of how it was working till now, it seems that
>>>>> things were tested with the 'clk_ignore_unused' flag, or with CONFIG_SCSI_UFS_QCOM
>>>>> flag being override set to 'y'. When this is done, QCOM-ICE (on which QCOM-UFS
>>>>> depends) initiates probe _before_ the unused clocks and power-domains are
>>>>> disabled by the kernel. And so, the un-clocked register access or clock 'stuck'
>>>>> isn't observed (since the clocks and power domains are already enabled).
>>>>> Perhaps I should write this scenario explicitly in the commit message?
>>>>>
>>>>> To maintain backward compatibility, let me introduce minItems and maxItems for clocks.
>>>>> When the Linux distro uses CONFIG_SCSI_UFS_QCOM=y, we can do with just 1 clock as
>>>>> before.
>>>>
>>>> You must not assume any particular kernel configuration
>>>>
>>>> clk_ignore_unused is a hack which leads to situations like this, since
>>>> the bootloader doesn't clean up clocks it turned on, which leads to
>>>> situations like this where someone who previously wrote this binding
>>>> didn't care enough to **actually** test whether this device can operate
>>>> with only the set of clocks it requires
>>>>
>>>> I believe in this case it absolutely makes sense to break things, but
>>>> you must put the backstory in writing, in the commit message
>>>>
>>>
>>> I took some more time to think this through, and I agree with you now Konrad.
>>>
>>> These DT bindings appear to be invalid from day-1. ICE being an independent
>>> and common IP for both UFS and SDCC, it cannot operate correctly without its
>>> power-domain and clocks being enabled first. Hence, it should be mandatory for
>>> them to be specified in the DT-node and the same should be reflected in the DT
>>> binding.
>>>
>>> The only reason I can think of for omitting the 'power-domain' and 'iface' clock
>>> in the original DT-binding for ICE is because we failed to test the driver on
>>> a production kernel where the 'clk_ignore_unused' flag is not passed on the cmdline.
>>
>> That's a reason to change ABI in the bindings, but not a reason to break
>> in-kernel or out of tree DTS.
>>
>>> Or if we did test that way, we were just lucky to not run into a timing scenario
>>> where the probe for the driver is attempted _after_ the clocks are turned off by the
>>> kernel.
>>>
>>> Sending a new patch, which makes these two resources optional (to preserve the DT
>>> binding) would either imply that we are make this bug fix optional as well or
>>> asking the reporter to resort to some workaround such as overriding
>>> CONFIG_SCSI_UFS_QCOM to 'y'.
>>
>> Either I do not understand the point or you still insist on breaking a
>> working DTS on kernels with clk_ignore_unused, just because what
>> exactly? You claim it did not work, but in fact it did work. So you
>> claim it worked by luck, right? And what this patchset achieves? It
>> breaks this "work by luck" into "100% not working and broken". I do not
>> see how is this an improvement.
>>
>
> My point is something more fundamental. It worked before and it will still continue
> to work if:
> 1. We pass the 'clk_ignore_unused' flag. or,
> 2. If the Linux distro is overriding CONFIG_SCSI_UFS_QCOM to 'y'.
I do not agree with this. I already commented about your driver. If you
do not believe me, apply your driver patch and show the test results of
existing working device.
>
> But that does not change the fact that the current DT binding does not fully describe all
> the resources required by the hardware block to function correctly.
>
>> My NAK for driver change stays. This is wrong approach - you cannot
>> break working DTS.
>>
>
> I agree that this patch in it's current form will break both the in-kernel and
> out of tree DTS written in accordance with the old binding. If this isn't acceptable
What? You just said few lines above:
"it will still continue to work if:"
So either this will continue to work or not. I don't understand this
thread and honestly do not have patience for it. I gave you already
reasoning what is wrong and why it is. Now it is just wasting my time.
Best regards,
Krzysztof
next prev parent reply other threads:[~2026-02-06 10:50 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-23 7:11 [PATCH 00/11] Add explicit power-domain and clock voting for QCOM-ICE Harshal Dev
2026-01-23 7:11 ` [PATCH 01/11] dt-bindings: crypto: qcom,ice: Require power-domain and iface clk Harshal Dev
2026-01-23 8:57 ` Krzysztof Kozlowski
2026-01-23 11:04 ` Harshal Dev
2026-01-26 10:29 ` Konrad Dybcio
2026-02-03 9:26 ` Harshal Dev
2026-02-05 11:17 ` Krzysztof Kozlowski
2026-02-06 10:07 ` Harshal Dev
2026-02-06 10:50 ` Krzysztof Kozlowski [this message]
2026-02-09 5:43 ` Harshal Dev
2026-02-09 7:44 ` Krzysztof Kozlowski
2026-02-20 14:31 ` Manivannan Sadhasivam
2026-02-20 15:59 ` Bjorn Andersson
2026-03-03 6:29 ` Harshal Dev
2026-03-03 16:55 ` Manivannan Sadhasivam
2026-01-23 7:11 ` [PATCH 02/11] arm64: dts: qcom: kaanpali: Add power-domain and iface clk for ice node Harshal Dev
2026-01-23 7:11 ` [PATCH 03/11] arm64: dts: qcom: lemans: " Harshal Dev
2026-01-23 7:11 ` [PATCH 04/11] arm64: dts: qcom: monaco: " Harshal Dev
2026-01-23 7:11 ` [PATCH 05/11] arm64: dts: qcom: sc7180: " Harshal Dev
2026-01-23 7:11 ` [PATCH 06/11] arm64: dts: qcom: kodiak: " Harshal Dev
2026-01-23 7:11 ` [PATCH 07/11] arm64: dts: qcom: sm8450: " Harshal Dev
2026-01-23 7:11 ` [PATCH 08/11] arm64: dts: qcom: sm8550: " Harshal Dev
2026-01-23 7:11 ` [PATCH 09/11] arm64: dts: qcom: sm8650: " Harshal Dev
2026-01-23 7:11 ` [PATCH 10/11] arm64: dts: qcom: sm8750: " Harshal Dev
2026-01-23 7:11 ` [PATCH 11/11] soc: qcom: ice: Add explicit power-domain and clock voting calls for ICE Harshal Dev
2026-01-23 8:58 ` Krzysztof Kozlowski
2026-01-23 10:57 ` Krzysztof Kozlowski
2026-01-23 11:12 ` Harshal Dev
2026-01-30 10:46 ` Konrad Dybcio
2026-02-03 9:31 ` Harshal Dev
2026-02-20 14:44 ` Manivannan Sadhasivam
2026-03-03 8:41 ` Harshal Dev
2026-03-03 17:08 ` Manivannan Sadhasivam
2026-03-09 11:59 ` Harshal Dev
2026-03-09 12:20 ` Manivannan Sadhasivam
2026-02-21 11:45 ` Abel Vesa
2026-03-03 11:13 ` Harshal Dev
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=6efcdf51-bdb1-4dfc-aa5e-8b7dc8c68cd3@kernel.org \
--to=krzk@kernel.org \
--cc=abel.vesa@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=bmasney@redhat.com \
--cc=conor+dt@kernel.org \
--cc=cros-qcom-dts-watchers@chromium.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=gaurav.kashyap@oss.qualcomm.com \
--cc=harshal.dev@oss.qualcomm.com \
--cc=herbert@gondor.apana.org.au \
--cc=konrad.dybcio@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neeraj.soni@oss.qualcomm.com \
--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