On 8/26/21 7:26 PM, Saravana Kannan wrote: > On Thu, Aug 26, 2021 at 4:29 AM Alvin Šipraga <ALSI@xxxxxxxxxxxxxxx> wrote: >> >> Hi Saravana, >> >> From looking at the code, the Marvell DSA driver mv88e6xxx may also >> suffer from the same problem if fw_devlink=on. Maybe somebody (Andrew?) >> could test so that you know whether include a simlar patch to that >> driver in your series. >> >> Other drivers may be effected too - as Andrew said in the other thread, >> this is not an uncommon pattern for DSA drivers. >> >> On 8/26/21 9:45 AM, Saravana Kannan wrote: >>> This is just a quick fix to make this driver work with fw_devlink=on. >>> The proper fix might need a significant amount of rework of the driver >>> of the framework to use a component device model. >>> >>> Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> >> >> With the caveat that it's a test with my RFC rtl8365mb subdriver... >> >> Tested-by: Alvin Šipraga <alsi@xxxxxxxxxxxxxxx> > > Thanks for testing. And just to be sure we are all on the same page: > Without this patch the PHYs get handled by the Generic PHY driver. > With this patch, the PHYs are handled by their specific driver. > Correct? Yes, both statements are correct. Alvin > > -Saravana > >> >> Kind regards, >> Alvin >> >>> --- >>> drivers/net/dsa/realtek-smi-core.c | 7 +++++++ >>> 1 file changed, 7 insertions(+) >>> >>> diff --git a/drivers/net/dsa/realtek-smi-core.c b/drivers/net/dsa/realtek-smi-core.c >>> index 8e49d4f85d48..f79c174f4954 100644 >>> --- a/drivers/net/dsa/realtek-smi-core.c >>> +++ b/drivers/net/dsa/realtek-smi-core.c >>> @@ -394,6 +394,13 @@ static int realtek_smi_probe(struct platform_device *pdev) >>> var = of_device_get_match_data(dev); >>> np = dev->of_node; >>> >>> + /* This driver assumes the child PHYs would be probed successfully >>> + * before this functions returns. That's not a valid assumption, but >>> + * let fw_devlink know so that this driver continues to function with >>> + * fw_devlink=on. >>> + */ >>> + np->fwnode.flags |= FWNODE_FLAG_BROKEN_PARENT; >>> + >>> smi = devm_kzalloc(dev, sizeof(*smi) + var->chip_data_sz, GFP_KERNEL); >>> if (!smi) >>> return -ENOMEM; >>>