On 11.03.20 08:43:53, Tim Harvey wrote: > If there are no parent resources do not call irq_chip_request_resources_parent > at all as this will return an error. > > This resolves a regression where devices using a thunderx gpio as an interrupt > would fail probing. > > Fixes: 0d04d0c ("gpio: thunderx: Use the default parent apis for {request,release}_resources") > Signed-off-by: Tim Harvey <tharvey@xxxxxxxxxxxxx> > --- > drivers/gpio/gpio-thunderx.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpio/gpio-thunderx.c b/drivers/gpio/gpio-thunderx.c > index 4627704..f84b9b1 100644 > --- a/drivers/gpio/gpio-thunderx.c > +++ b/drivers/gpio/gpio-thunderx.c > @@ -366,15 +366,18 @@ static int thunderx_gpio_irq_request_resources(struct irq_data *data) > { > struct thunderx_line *txline = irq_data_get_irq_chip_data(data); > struct thunderx_gpio *txgpio = txline->txgpio; > + struct irq_data *parent_data = data->parent_data; > int r; > > r = gpiochip_lock_as_irq(&txgpio->chip, txline->line); > if (r) > return r; > > - r = irq_chip_request_resources_parent(data); > - if (r) > - gpiochip_unlock_as_irq(&txgpio->chip, txline->line); > + if (parent_data && parent_data->chip->irq_request_resources) { > + r = irq_chip_request_resources_parent(data); > + if (r) > + gpiochip_unlock_as_irq(&txgpio->chip, txline->line); > + } There is no unlocking for the else case. I would assume the parent_data should be checked before grabbing the lock, or is this intended? -Robert > > return r; > } > -- > 2.7.4 >