[PATCH v4 06/10] phy: qcom: Add M31 based eUSB2 PHY driver
Wesley Cheng
quic_wcheng at quicinc.com
Mon May 19 15:04:27 PDT 2025
Hi Konrad,
On 5/17/2025 11:28 AM, Konrad Dybcio wrote:
> On 5/14/25 8:24 PM, Wesley Cheng wrote:
>> Hi Vinod,
>>
>> On 5/14/2025 1:33 AM, Vinod Koul wrote:
>>> On 16-04-25, 15:45, Wesley Cheng wrote:
>>>> Hi Vinod,
>>>>
>>>> On 4/10/2025 4:53 AM, Vinod Koul wrote:
>>>>> On 09-04-25, 10:48, Melody Olvera wrote:
>>>>>
>>>>>> +static int m31eusb2_phy_write_readback(void __iomem *base, u32 offset,
>>>>>> + const u32 mask, u32 val)
>>>>>> +{
>>>>>> + u32 write_val;
>>>>>> + u32 tmp;
>>>>>> +
>>>>>> + tmp = readl_relaxed(base + offset);
>>>>>> + tmp &= ~mask;
>>>>>> + write_val = tmp | val;
>>>>>> +
>>>>>> + writel_relaxed(write_val, base + offset);
>>>>>> +
>>>>>> + tmp = readl_relaxed(base + offset);
>>>>>
>>>>> Why are you using _relaxed version here?
>>>>>
>>>>
>>>> No particular reason. I think someone pointed this out previously, and I
>>>> was open to use the non-relaxed variants, but I assume using the relaxed vs
>>>> non-relaxed apis comes down to preference in this case.
>>>
>>> Nope you cant! There _needs_ to be a specific reasons!
>>> When you are doing read, modify, write, it is very important to know the
>>> right version to use...
>>>
>>
>> I mean, its a write readback, which ensures the bus transaction is complete
>> based on [1], hence why **in this situation** it is up to preference.
>>
>> Otherwise, w/o the readback then we'd need to ensure writes are made
>> depending on the required sequencing (in spots where the sequence is
>> strictly defined), and that can be enforced using barriers. If you feel
>> like using the non-relaxed variant is preferred let me know. I can replace
>> it and remove the readback.
>
> Readback is stronger on arm64, as otherwise the writes may be buffered and
> not observable at the other endpoint even though the instruction has been
> issued, even if a barrier has been issued
>
> Some resources:
>
> https://youtu.be/i6DayghhA8Q
> https://lore.kernel.org/linux-arm-msm/20240618153419.GC2354@willie-the-truck/
> https://developer.arm.com/documentation/ddi0487/latest sec B2.6.9
>
> There's been a real bug observed (pun not intended):
> Commit 2f8cf2c3f3e3 ("clk: qcom: reset: Ensure write completion on reset de/assertion")
>
Thanks for sharing. Useful info...The way I interpret it, even between
relaxed and non-relaxed variants, a readback is always desired.
Thanks
Wesley Cheng
More information about the linux-arm-kernel
mailing list