Message ID | 20231025202344.581132-6-sunilvl@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | RISC-V: ACPI: Add external interrupt controller support | expand |
On Wed, Oct 25, 2023 at 10:24 PM Sunil V L <sunilvl@ventanamicro.com> wrote: > > To support deferred PNP driver probe, pnp_irq() must return -EPROBE_DEFER > so that the device driver can do deferred probe if the interrupt controller > is not probed early. > > Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> > --- > include/linux/pnp.h | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/include/linux/pnp.h b/include/linux/pnp.h > index c2a7cfbca713..21cf833789fb 100644 > --- a/include/linux/pnp.h > +++ b/include/linux/pnp.h > @@ -147,12 +147,18 @@ static inline resource_size_t pnp_mem_len(struct pnp_dev *dev, > } > > > -static inline resource_size_t pnp_irq(struct pnp_dev *dev, unsigned int bar) > +static inline int pnp_irq(struct pnp_dev *dev, unsigned int bar) > { > struct resource *res = pnp_get_resource(dev, IORESOURCE_IRQ, bar); > > - if (pnp_resource_valid(res)) > + if (pnp_resource_valid(res)) { > +#if IS_ENABLED(CONFIG_ARCH_ACPI_DEFERRED_GSI) > + if (!pnp_resource_enabled(res)) > + return -EPROBE_DEFER; > +#endif What would be wrong with if (IS_ENABLED(CONFIG_ARCH_ACPI_DEFERRED_GSI) && !pnp_resource_enabled(res)) return -EPROBE_DEFER; ? > + > return res->start; > + } > return -1; > } > > -- > 2.39.2 >
On Thu, Feb 01, 2024 at 07:00:51PM +0100, Rafael J. Wysocki wrote: > On Wed, Oct 25, 2023 at 10:24 PM Sunil V L <sunilvl@ventanamicro.com> wrote: > > > > To support deferred PNP driver probe, pnp_irq() must return -EPROBE_DEFER > > so that the device driver can do deferred probe if the interrupt controller > > is not probed early. > > > > Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> > > --- > > include/linux/pnp.h | 10 ++++++++-- > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/pnp.h b/include/linux/pnp.h > > index c2a7cfbca713..21cf833789fb 100644 > > --- a/include/linux/pnp.h > > +++ b/include/linux/pnp.h > > @@ -147,12 +147,18 @@ static inline resource_size_t pnp_mem_len(struct pnp_dev *dev, > > } > > > > > > -static inline resource_size_t pnp_irq(struct pnp_dev *dev, unsigned int bar) > > +static inline int pnp_irq(struct pnp_dev *dev, unsigned int bar) > > { > > struct resource *res = pnp_get_resource(dev, IORESOURCE_IRQ, bar); > > > > - if (pnp_resource_valid(res)) > > + if (pnp_resource_valid(res)) { > > +#if IS_ENABLED(CONFIG_ARCH_ACPI_DEFERRED_GSI) > > + if (!pnp_resource_enabled(res)) > > + return -EPROBE_DEFER; > > +#endif > > What would be wrong with > > if (IS_ENABLED(CONFIG_ARCH_ACPI_DEFERRED_GSI) && !pnp_resource_enabled(res)) > return -EPROBE_DEFER; > > ? Hi Rafael, Actually, this is v2 version of the patch and there is recent v3. Please take a look at [1] for the latest version. However, your comment is still valid for v3. I will update as you mentioned. [1] - https://lore.kernel.org/linux-arm-kernel/20231219174526.2235150-7-sunilvl@ventanamicro.com/ Thanks, Sunil > > > + > > return res->start; > > + } > > return -1; > > } > > > > -- > > 2.39.2 > >
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index c2a7cfbca713..21cf833789fb 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h @@ -147,12 +147,18 @@ static inline resource_size_t pnp_mem_len(struct pnp_dev *dev, } -static inline resource_size_t pnp_irq(struct pnp_dev *dev, unsigned int bar) +static inline int pnp_irq(struct pnp_dev *dev, unsigned int bar) { struct resource *res = pnp_get_resource(dev, IORESOURCE_IRQ, bar); - if (pnp_resource_valid(res)) + if (pnp_resource_valid(res)) { +#if IS_ENABLED(CONFIG_ARCH_ACPI_DEFERRED_GSI) + if (!pnp_resource_enabled(res)) + return -EPROBE_DEFER; +#endif + return res->start; + } return -1; }
To support deferred PNP driver probe, pnp_irq() must return -EPROBE_DEFER so that the device driver can do deferred probe if the interrupt controller is not probed early. Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> --- include/linux/pnp.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)