Re: [PATCH v2 04/11] gpiolib: Clear the gpio_device's fwnode initialized flag before adding

From: Sudeep Holla
Date: Mon Jan 30 2023 - 09:33:03 EST


On Thu, Jan 26, 2023 at 04:11:31PM -0800, Saravana Kannan wrote:
> Registering an irqdomain sets the flag for the fwnode. But having the
> flag set when a device is added is interpreted by fw_devlink to mean the
> device has already been initialized and will never probe. This prevents
> fw_devlink from creating device links with the gpio_device as a
> supplier. So, clear the flag before adding the device.
>
> Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx>
> Acked-by: Bartosz Golaszewski <brgl@xxxxxxxx>
> ---
> drivers/gpio/gpiolib.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 939c776b9488..b23140c6485f 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -578,6 +578,12 @@ static int gpiochip_setup_dev(struct gpio_device *gdev)
> {
> int ret;
>
> + /*
> + * If fwnode doesn't belong to another device, it's safe to clear its
> + * initialized flag.
> + */
> + if (!gdev->dev.fwnode->dev)
> + fwnode_dev_initialized(gdev->dev.fwnode, false);

This is the one causing the kernel crash during the boot on FVP which
Naresh has reported. Just reverted this and was able to boot, confirming
the issue with this patch.

--
Regards,
Sudeep