Re: [PATCH v2 00/11] fw_devlink improvements

From: Maxim Kiselev
Date: Thu Feb 02 2023 - 12:36:32 EST


Hi Saravana,

> Can you try the patch at the end of this email under these
> configurations and tell me which ones fail vs pass? I don't need logs

I did these tests and here is the results:

1. On top of this series - Not works
2. Without this series - Works
3. On top of the series with the fwnode_dev_initialized() deleted - Not works
4. Without this series, with the fwnode_dev_initialized() deleted - Works

So your nvmem/core.c patch helps only when it is applied without the series.
But despite the fact that this helps to avoid getting stuck at probing
my ethernet device, there is still regression.

When the ethernet module is loaded it takes a lot of time to drop dependency
from the nvmem-cell with mac address.

Please look at the kernel logs below.

The first log corresponds to kernel with your nvmem/core.c patch:

[ 0.036462] ethernet@70000 Linked as a fwnode consumer to
clock-gating-control@1821c
[ 0.036572] ethernet@70000 Linked as a fwnode consumer to partition@1
[ 0.045596] device: 'f1070000.ethernet': device_add
[ 0.045854] ethernet@70000 Dropping the fwnode link to
clock-gating-control@1821c
[ 0.114990] device:
'platform:f1010600.spi:m25p80@0:partitions:partition@1--platform:f1070000.ethernet':
device_add
[ 0.115266] devices_kset: Moving f1070000.ethernet to end of list
[ 0.115308] platform f1070000.ethernet: Linked as a consumer to
f1010600.spi:m25p80@0:partitions:partition@1
[ 0.115345] ethernet@70000 Dropping the fwnode link to partition@1
[ 1.968232] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 2.088696] devices_kset: Moving f1070000.ethernet to end of list
[ 2.088988] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 2.152411] devices_kset: Moving f1070000.ethernet to end of list
[ 2.152735] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 2.153870] devices_kset: Moving f1070000.ethernet to end of list
[ 2.154152] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 2.644950] devices_kset: Moving f1070000.ethernet to end of list
[ 2.645282] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 3.169218] devices_kset: Moving f1070000.ethernet to end of list
[ 3.169506] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 3.170444] devices_kset: Moving f1070000.ethernet to end of list
[ 3.170721] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 3.419068] devices_kset: Moving f1070000.ethernet to end of list
[ 3.419359] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 3.521275] devices_kset: Moving f1070000.ethernet to end of list
[ 3.521564] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 3.639196] devices_kset: Moving f1070000.ethernet to end of list
[ 3.639532] platform f1070000.ethernet: error -EPROBE_DEFER:
supplier f1010600.spi:m25p80@0:partitions:partition@1 not ready
[ 13.960144] platform f1070000.ethernet: Relaxing link with
f1010600.spi:m25p80@0:partitions:partition@1
[ 13.960260] devices_kset: Moving f1070000.ethernet to end of list
[ 13.971735] device: 'eth0': device_add
[ 13.974140] mvneta f1070000.ethernet eth0: Using device tree
mac address de:fa:ce:db:ab:e1
[ 13.974275] mvneta f1070000.ethernet: Dropping the link to
f1010600.spi:m25p80@0:partitions:partition@1
[ 13.974318] device:
'platform:f1010600.spi:m25p80@0:partitions:partition@1--platform:f1070000.ethernet':
device_unregister

It took around 13 seconds to obtain a mac from nvmem-cell and bring up
f1070000.ethernet


And here is the second log which corresponds to kernel without your
nvmem/core.c patch but also with reverted change 'bcdf0315':

[ 0.036285] ethernet@70000 Linked as a fwnode consumer to
clock-gating-control@1821c
[ 0.036395] ethernet@70000 Linked as a fwnode consumer to partition@1
[ 0.045416] device: 'f1070000.ethernet': device_add
[ 0.045674] ethernet@70000 Dropping the fwnode link to
clock-gating-control@1821c
[ 0.116136] ethernet@70000 Dropping the fwnode link to partition@1
[ 1.977060] device: 'eth0': device_add
[ 1.979145] mvneta f1070000.ethernet eth0: Using device tree
mac address de:fa:ce:db:ab:e1

It took around 1.5 second to obtain a mac from nvmem-cell

P.S. Your nvmem patch definitely helps to avoid a device probe stuck
but look like it is not best way to solve a problem which we discussed
in the MTD thread.

P.P.S. Also I don't know why your nvmem-cell patch doesn't help when it was
applied on top of this series. Maybe I missed something.