Re: [PATCH v6 17/17] soc: qcom: llcc: Do not create EDAC platform device on SDM845
From: Krzysztof Kozlowski
Date: Wed Jan 18 2023 - 11:11:26 EST
On 18/01/2023 16:59, Manivannan Sadhasivam wrote:
> On Wed, Jan 18, 2023 at 04:37:29PM +0100, Krzysztof Kozlowski wrote:
>> On 18/01/2023 16:09, Manivannan Sadhasivam wrote:
>>> The platforms based on SDM845 SoC locks the access to EDAC registers in the
>>> bootloader. So probing the EDAC driver will result in a crash. Hence,
>>> disable the creation of EDAC platform device on all SDM845 devices.
>>>
>>> The issue has been observed on Lenovo Yoga C630 and DB845c.
>>>
>>> Cc: <stable@xxxxxxxxxxxxxxx> # 5.10
>>> Reported-by: Steev Klimaszewski <steev@xxxxxxxx>
>>> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
>>> ---
>>> drivers/soc/qcom/llcc-qcom.c | 17 ++++++++++++-----
>>> 1 file changed, 12 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/drivers/soc/qcom/llcc-qcom.c b/drivers/soc/qcom/llcc-qcom.c
>>> index 7b7c5a38bac6..8d840702df50 100644
>>> --- a/drivers/soc/qcom/llcc-qcom.c
>>> +++ b/drivers/soc/qcom/llcc-qcom.c
>>> @@ -1012,11 +1012,18 @@ static int qcom_llcc_probe(struct platform_device *pdev)
>>>
>>> drv_data->ecc_irq = platform_get_irq_optional(pdev, 0);
>>>
>>> - llcc_edac = platform_device_register_data(&pdev->dev,
>>> - "qcom_llcc_edac", -1, drv_data,
>>> - sizeof(*drv_data));
>>> - if (IS_ERR(llcc_edac))
>>> - dev_err(dev, "Failed to register llcc edac driver\n");
>>> + /*
>>> + * The platforms based on SDM845 SoC locks the access to EDAC registers
>>> + * in bootloader. So probing the EDAC driver will result in a crash.
>>> + * Hence, disable the creation of EDAC platform device on SDM845.
>>> + */
>>> + if (!of_device_is_compatible(dev->of_node, "qcom,sdm845-llcc")) {
>>
>> Don't spread of_device_is_compatible() in driver code. You have driver
>> data for this.
>>
>
> Yeah, but there is no ID to in the driver data to identify an SoC.
What do you mean there is no? You use exactly the same compatible as the
one in driver data.
> I could add
> one but is that really worth doing so? Is using of_device_is_compatible() in
> drivers discouraged nowadays?
Because it spreads variant matching all over. It does not scale. drv
data fields are the way or better quirks/flags.
Best regards,
Krzysztof