From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Bjorn Andersson <andersson@kernel.org>,
Bhupesh Sharma <bhupesh.sharma@linaro.org>
Cc: linux-crypto@vger.kernel.org, devicetree@vger.kernel.org,
agross@kernel.org, herbert@gondor.apana.org.au,
linux-kernel@vger.kernel.org, robh+dt@kernel.org,
linux-arm-msm@vger.kernel.org, thara.gopinath@gmail.com,
robh@kernel.org, bhupesh.linux@gmail.com, davem@davemloft.net,
Jordan Crouse <jorcrous@amazon.com>
Subject: Re: [PATCH v7 6/9] crypto: qce: core: Add new compatibles for qce crypto driver
Date: Mon, 7 Nov 2022 10:07:46 +0100 [thread overview]
Message-ID: <ff0a5f73-b45e-b670-e36f-d3002180fa3e@linaro.org> (raw)
In-Reply-To: <20221107034343.iyknmiztjuxcuqqs@builder.lan>
On 07/11/2022 04:43, Bjorn Andersson wrote:
> On Wed, Sep 21, 2022 at 12:22:03PM +0530, Bhupesh Sharma wrote:
>> On 9/21/22 11:57 AM, Krzysztof Kozlowski wrote:
>>> On 21/09/2022 08:16, Bhupesh Sharma wrote:
>>>>
>>>>
>>>> On 9/20/22 8:42 PM, Krzysztof Kozlowski wrote:
>>>>> On 20/09/2022 13:40, Bhupesh Sharma wrote:
>>>>>> Since we decided to use soc specific compatibles for describing
>>>>>> the qce crypto IP nodes in the device-trees, adapt the driver
>>>>>> now to handle the same.
>>>>>>
>>>>>> Keep the old deprecated compatible strings still in the driver,
>>>>>> to ensure backward compatibility.
>>>>>>
>>>>>> Cc: Bjorn Andersson <andersson@kernel.org>
>>>>>> Cc: Rob Herring <robh@kernel.org>
>>>>>> Cc: herbert@gondor.apana.org.au
>>>>>> Tested-by: Jordan Crouse <jorcrous@amazon.com>
>>>>>> Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org>
>>>>>> ---
>>>>>> drivers/crypto/qce/core.c | 9 +++++++++
>>>>>> 1 file changed, 9 insertions(+)
>>>>>>
>>>>>> diff --git a/drivers/crypto/qce/core.c b/drivers/crypto/qce/core.c
>>>>>> index 63be06df5519..99ed540611ab 100644
>>>>>> --- a/drivers/crypto/qce/core.c
>>>>>> +++ b/drivers/crypto/qce/core.c
>>>>>> @@ -291,8 +291,17 @@ static int qce_crypto_remove(struct platform_device *pdev)
>>>>>> }
>>>>>> static const struct of_device_id qce_crypto_of_match[] = {
>>>>>> + /* Following two entries are deprecated (kept only for backward compatibility) */
>>>>>> { .compatible = "qcom,crypto-v5.1", },
>>>>>> { .compatible = "qcom,crypto-v5.4", },
>>>>>
>>>>> This is okay, so there is no ABI break.
>>>>
>>>> Great. Thanks for the confirmation.
>>>>
>>>>>> + /* Add compatible strings as per updated dt-bindings, here: */
>>>>>> + { .compatible = "qcom,ipq4019-qce", },
>>>>>> + { .compatible = "qcom,ipq6018-qce", },
>>>>>> + { .compatible = "qcom,ipq8074-qce", },
>>>>>> + { .compatible = "qcom,msm8996-qce", },
>>>>>> + { .compatible = "qcom,sdm845-qce", },
>>>>>> + { .compatible = "qcom,sm8150-qce", },
>>>>>> + { .compatible = "qcom,sm8250-qce", },
>>>>>
>>>>> This is a bit odd... you have 7 devices which are simply compatible or
>>>>> even the same. This should be instead one compatible.
>>>>>
>>>>> I don't really get why do you want to deprecate "qcom,crypto-v5.1".
>>>>> Commit msg only says "we decided" but I do not know who is "we" and "why
>>>>> we decided like this". If you want to deprecate it, perfectly fine by
>>>>> me, but please say in commit msg why you are doing it.
>>>>
>>>> I understand. This patchset has been in flight for some time and hence I
>>>> might have missed sharing some detailed information about the review
>>>> comments and rework done along the way (in the cover letter for this
>>>> series).
>>>>
>>>> Coming back to your concern, here is the relevant background:
>>>> - Please see:
>>>> https://lore.kernel.org/linux-arm-msm/20210316222825.GA3792517@robh.at.kernel.org/
>>>>
>>>> - Rob shared some comments on the v1 series regarding the soc-specific
>>>> compatibles. He mentioned in the above thread that 'you should stick
>>>> with SoC specific compatibles as *everyone* else does (including most
>>>> QCom bindings).'
>>>>
>>>> - So, while I had proposed "qcom,crypto-v5.1" (for ipq6018) and
>>>> "qcom,crypto-v5.4" (for sdm845, sm8150) etc. as the compatible(s) in the
>>>> v1 series, I shifted to using the soc-specific compatibles from the v2
>>>> series, onwards.
>>>
>>> Then the reason could be - Reviewers preferred SoC-based compatible
>>> instead of IP-block-version-based.
>>>
>>> What is confusing is the difference between that link and here. That
>>> link wanted to introduce 4 different compatibles... and here you have
>>> even 7 compatibles being the same.
>>
>> The link points to v1 version and we are on v7 currently. So there have been
>> other comments and reworks along the way :)
>>
>> All of these have been referred to in the cover letter logs.
>>
>> Again please refer to Vladimir's comments on v5 version here, where he
>> suggested adding soc compatibles for 'ipq8074' and 'msm8996' as well.
>>
>> -
>> https://lore.kernel.org/lkml/7328ae17-1dc7-eaa1-5993-411b986e5e02@linaro.org/
>> -
>> https://lore.kernel.org/lkml/f5b7c89c-3bdd-1e1e-772e-721aa5e95bbf@linaro.org/
>> -
>> https://lore.kernel.org/lkml/7328ae17-1dc7-eaa1-5993-411b986e5e02@linaro.org/
>>
>> Also the 7 SoC compatibles do not point to the same crypto IP version. We
>> have two IP versions currently supported upstream, "qcom,crypto-v5.1" and
>> "qcom,crypto-v5.4" (with patches for support for newer versions under work
>> and can be expected to land upstream in near future).
>>
>> However, if you suggest, we can add some comments in the dt-binding doc
>> to reflect which SoC supports which version.
>>
>>>> - Basically, since we are going to have newer qce IP versions available
>>>> in near future, e.g. "qcom,crypto-v5.5" etc, and we will have 2 or more
>>>> SoCs also sharing 1 version, these compatibles would grow and become
>>>> more confusing. IMO, having a soc-specific compatible in such cases is
>>>> probably a much cleaner approach.
>>>>
>>>> Hope this helps answer some of your concerns and provides some relevant
>>>> background information.
>>>
>>> Sure, but I still think you should have only one compatible in the
>>> driver in such case. You don't have differences between them from the
>>> driver point of view, so the devices seem to be compatible.
>>>
>>> If not, what are the differences?
>>
>> There can always be requirements for compatible specific handling done in
>> the driver. See Bjorn's comment here for example:
>> https://lore.kernel.org/lkml/YZKhqJuFlRVeQkCc@builder.lan/ , as an example
>> of 'clk_get' calls conditional based on the compatible instead.
>>
>
> How about providing a generic compatible without the version number
> (i.e. qcom,crypto) and then in the DT binding require this and
> qcom,<platform>-crypto, and if we have such quirky integration behavior
> for a particular platform we can add the special handling in the driver
> for the platform compatible.
>
> (And we obviously keep the two existing version-based compatibles in the
> driver, for backwards compatibility)
In general, compatibles should not be generic, just like wild-cards or
family-types. All are discouraged because they do not reflect hardware
or cause troubles later, when it turns out generic is not generic
enough... We had such cases where a wild-card (which is another way to
represent a "generic" compatible) turned out to be incompatible with a
specific version matched by it.
What are you going to do when this happens? Have a generic compatible
which covers only some of implementations? Using a generic compatible
for specific hardware is admitting "we do not know what is generic, so
we make something up and hope it stays generic".
Best regards,
Krzysztof
next prev parent reply other threads:[~2022-11-07 9:07 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-20 11:40 [PATCH v7 0/9] crypto: qcom-qce: Add YAML bindings & support for newer SoCs Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 1/9] dt-bindings: qcom-qce: Convert bindings to yaml Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 2/9] dt-bindings: qcom-qce: Add 'interconnects' and 'interconnect-names' Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 3/9] dt-bindings: qcom-qce: Add 'iommus' to optional properties Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 4/9] dt-bindings: qcom-qce: Add new SoC compatible strings for qcom-qce Bhupesh Sharma
2022-09-20 15:10 ` Krzysztof Kozlowski
2022-09-21 6:00 ` Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 5/9] crypto: qce: core: Add support to initialize interconnect path Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 6/9] crypto: qce: core: Add new compatibles for qce crypto driver Bhupesh Sharma
2022-09-20 15:12 ` Krzysztof Kozlowski
2022-09-21 6:16 ` Bhupesh Sharma
2022-09-21 6:27 ` Krzysztof Kozlowski
2022-09-21 6:52 ` Bhupesh Sharma
2022-11-07 3:43 ` Bjorn Andersson
2022-11-07 9:07 ` Krzysztof Kozlowski [this message]
2022-09-20 11:40 ` [PATCH v7 7/9] crypto: qce: core: Make clocks optional Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 8/9] MAINTAINERS: Add qcom-qce dt-binding file to QUALCOMM CRYPTO DRIVERS section Bhupesh Sharma
2022-09-20 11:40 ` [PATCH v7 9/9] MAINTAINERS: Add myself as a co-maintainer for Qualcomm Crypto Drivers Bhupesh Sharma
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=ff0a5f73-b45e-b670-e36f-d3002180fa3e@linaro.org \
--to=krzysztof.kozlowski@linaro.org \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=bhupesh.linux@gmail.com \
--cc=bhupesh.sharma@linaro.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=herbert@gondor.apana.org.au \
--cc=jorcrous@amazon.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh+dt@kernel.org \
--cc=robh@kernel.org \
--cc=thara.gopinath@gmail.com \
/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;
as well as URLs for NNTP newsgroup(s).