Subject: Re: [PATCH] net: stmmac: dwmac-rk: fix unbalanced pm_runtime_enable warnings

From: Punit Agrawal <[email-masked]>
Date: Sat, 18 Sep 2021 00:11:28 +0900

Qu Wenruo <[email-masked]> writes:

> On 2021/9/17 15:18, Punit Agrawal wrote:
>> Hi Qu,
>> Qu Wenruo <[email-masked]> writes:
>> 
>>> On 2021/8/30 22:10, Michael Riesch wrote:
>>>> Hi Punit,
>>>> On 8/30/21 3:49 PM, Punit Agrawal wrote:
>>>>> Hi Michael,
>>>>>
>>>>> Michael Riesch <[email-masked]> writes:
>>>>>
>>>>>> Hi ChenYu,
>>>>>>
>>>>>> On 8/29/21 7:48 PM, Chen-Yu Tsai wrote:
>>>>>>> Hi,
>>>>>>>
>>>>>>> On Mon, Aug 23, 2021 at 10:39 PM Michael Riesch
>>>>>>> <[email-masked]> wrote:
>>>>>>>>
>>>>>>>> This reverts commit 2c896fb02e7f65299646f295a007bda043e0f382
>>>>>>>> "net: stmmac: dwmac-rk: add pd_gmac support for rk3399" and fixes
>>>>>>>> unbalanced pm_runtime_enable warnings.
>>>>>>>>
>>>>>>>> In the commit to be reverted, support for power management was
>>>>>>>> introduced to the Rockchip glue code. Later, power management support
>>>>>>>> was introduced to the stmmac core code, resulting in multiple
>>>>>>>> invocations of pm_runtime_{enable,disable,get_sync,put_sync}.
>>>>>>>>
>>>>>>>> The multiple invocations happen in rk_gmac_powerup and
>>>>>>>> stmmac_{dvr_probe, resume} as well as in rk_gmac_powerdown and
>>>>>>>> stmmac_{dvr_remove, suspend}, respectively, which are always called
>>>>>>>> in conjunction.
>>>>>>>>
>>>>>>>> Signed-off-by: Michael Riesch <[email-masked]>
>>>>>>>
>>>>>>> I just found that Ethernet stopped working on my RK3399 devices,
>>>>>>> and I bisected it down to this patch.
>>>>>>
>>>>>> Oh dear. First patch in a kernel release for a while and I already break
>>>>>> things.
>>>>>
>>>>> I am seeing the same failure symptoms reported by ChenYu on my RockPro64
>>>>> with v5.14. Reverting the revert i.e., 2d26f6e39afb ("net: stmmac:
>>>>> dwmac-rk: fix unbalanced pm_runtime_enable warnings") brings back the
>>>>> network.
>>>>>
>>>>>> Cc: Sasha as this patch has just been applied to 5.13-stable.
>>>>>>
>>>>>>> The symptom I see is no DHCP responses, either because the request
>>>>>>> isn't getting sent over the wire, or the response isn't getting
>>>>>>> received. The PHY seems to be working correctly.
>>>>>>
>>>>>> Unfortunately I don't have any RK3399 hardware. Is this a custom
>>>>>> board/special hardware or something that is readily available in the
>>>>>> shops? Maybe this is a good reason to buy a RK3399 based single-board
>>>>>> computer :-)
>>>>>
>>>>> Not sure about the other RK3399 boards but RockPro64 is easily
>>>>> available.
>>>> I was thinking to get one of those anyway ;-)
>>>>
>>>>>> I am working on the RK3568 EVB1 and have not encountered faulty
>>>>>> behavior. DHCP works fine and I can boot via NFS. Therefore, not sure
>>>>>> whether I can be much of help in this matter, but in case you want to
>>>>>> discuss this further please do not hesitate to contact me off-list.
>>>>>
>>>>> I tried to look for the differences between RK3568 and RK3399 but the
>>>>> upstream device tree doesn't seem to carry a gmac node in the device
>>>>> tree for EK3568 EVB1. Do you have a pointer for the dts you're using?
>>>> The gmac nodes have been added recently and should enter
>>>> 5.15-rc1. Until
>>>> then, you can check out the dts from linux-rockchip/for-next [0].
>>>
>>> Do you have the upstream commit?
>>>
>>> As I compiled v5.15-rc1 and still can't get the ethernet work.
>>>
>>> Not sure if it's my Uboot->systemd-boot->customer kernel setup not
>>> passing the device tree correctly or something else...
>> For the RK3568 device tree changes, I think the pull request got
>> delayed
>> to the next cycle. So likely to land in v5.16.
>> In case you're after ethernet on RK3399, there's no solution
>> yet. Reverting 2d26f6e39afb ("net: stmmac: dwmac-rk: fix unbalanced
>> pm_runtime_enable warnings") gets you there in the meanwhile.
>
> Thanks, currently I have seen other distros like ManjaroARM is already
> reverting that commit.
>
> But even with that commit reverted, I still get some other strange
> network behavior.
>
> The most weird one is distcc, when the RK3399 board is the client and
> x86_64 desktop acts as a volunteer, after compiling hundreds of files, 
> it suddenly no longer work.

I haven't seen something like this - but then I am not a heavy user of
the network on the board. 

Is it just the network that dies or the whole system freezes? Sometimes
I've seen the board lock up if it's under heavy load.

> All work can no longer be distributed to the same volunteer.
>
>
> But on RPI CM4 board, the same kernel (both upstream 5.14.2, even the
> binary is the same), the same distro (Manjaro ARM), the same distcc 
> setup, the setup works flawless.
>
>
> Not sure if this is related, but it looks like a network related
> problem, and considering both boards are using the same kernel, just 
> different ethernet driver, I guess there is something more problematic
> here in recent RK3399 code.

If you are only seeing the problem with recent kernels, maybe a bisect
might help narrow things down.

[...]