Message ID | 1444923568-17413-5-git-send-email-marc.zyngier@arm.com (mailing list archive) |
---|---|
State | New, archived |
Delegated to: | Bjorn Helgaas |
Headers | show |
Hi Marc It looks like this patch fails to apply to 4.3-rc5.... Gab > -----Original Message----- > From: linux-pci-owner@vger.kernel.org [mailto:linux-pci- > owner@vger.kernel.org] On Behalf Of Marc Zyngier > Sent: Thursday, October 15, 2015 4:39 PM > To: Thomas Gleixner; Jiang Liu; Jason Cooper > Cc: majun (F); linux-arm-kernel@lists.infradead.org; linux- > pci@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: [PATCH RFC 4/7] genirq/msi: Make the .prepare callback > reusable > > The .prepare callbacks are so far only called from > msi_domain_alloc_irqs. > In order to reuse that code, split that code and create a > msi_domain_prepare_irqs function that the existing code can call into. > > Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> > --- > include/linux/msi.h | 4 ++++ > kernel/irq/msi.c | 20 +++++++++++++++++--- > 2 files changed, 21 insertions(+), 3 deletions(-) > > diff --git a/include/linux/msi.h b/include/linux/msi.h > index 32a24b9..5bb36a9 100644 > --- a/include/linux/msi.h > +++ b/include/linux/msi.h > @@ -277,6 +277,10 @@ struct irq_domain > *platform_msi_create_irq_domain(struct fwnode_handle *fwnode, > int platform_msi_domain_alloc_irqs(struct device *dev, unsigned int > nvec, > irq_write_msi_msg_t write_msi_msg); > void platform_msi_domain_free_irqs(struct device *dev); > + > +/* When an MSI domain is used as an intermediate domain */ > +int msi_domain_prepare_irqs(struct irq_domain *domain, struct device > *dev, > + int nvec, msi_alloc_info_t *args); > #endif /* CONFIG_GENERIC_MSI_IRQ_DOMAIN */ > > #ifdef CONFIG_PCI_MSI_IRQ_DOMAIN > diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c > index 95354bb..8e6e112 100644 > --- a/kernel/irq/msi.c > +++ b/kernel/irq/msi.c > @@ -256,6 +256,22 @@ struct irq_domain *msi_create_irq_domain(struct > fwnode_handle *fwnode, > &msi_domain_ops, info); > } > > +int msi_domain_prepare_irqs(struct irq_domain *domain, struct device > *dev, > + int nvec, msi_alloc_info_t *arg) > +{ > + struct msi_domain_info *info = domain->host_data; > + struct msi_domain_ops *ops = info->ops; > + int ret; > + > + ret = ops->msi_check(domain, info, dev); > + if (ret == 0) > + ret = ops->msi_prepare(domain, dev, nvec, arg); > + if (ret) > + return ret; > + > + return 0; > +} > + > /** > * msi_domain_alloc_irqs - Allocate interrupts from a MSI interrupt > domain > * @domain: The domain to allocate from > @@ -274,9 +290,7 @@ int msi_domain_alloc_irqs(struct irq_domain *domain, > struct device *dev, > struct msi_desc *desc; > int i, ret, virq = -1; > > - ret = ops->msi_check(domain, info, dev); > - if (ret == 0) > - ret = ops->msi_prepare(domain, dev, nvec, &arg); > + ret = msi_domain_prepare_irqs(domain, dev, nvec, &arg); > if (ret) > return ret; > > -- > 2.1.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-pci" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
On 15/10/15 18:24, Gabriele Paoloni wrote: > Hi Marc > > It looks like this patch fails to apply to 4.3-rc5.... Which is by design. Try tip/irq/core. M.
On 2015/10/15 23:39, Marc Zyngier wrote: <snit> > +int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, > + int nvec, msi_alloc_info_t *arg) > +{ > + struct msi_domain_info *info = domain->host_data; > + struct msi_domain_ops *ops = info->ops; > + int ret; > + > + ret = ops->msi_check(domain, info, dev); > + if (ret == 0) > + ret = ops->msi_prepare(domain, dev, nvec, arg); > + if (ret) > + return ret; > + > + return 0; Seems a simple "return ret" is enough:) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 16/10/15 06:45, Jiang Liu wrote: > On 2015/10/15 23:39, Marc Zyngier wrote: > <snit> >> +int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, >> + int nvec, msi_alloc_info_t *arg) >> +{ >> + struct msi_domain_info *info = domain->host_data; >> + struct msi_domain_ops *ops = info->ops; >> + int ret; >> + >> + ret = ops->msi_check(domain, info, dev); >> + if (ret == 0) >> + ret = ops->msi_prepare(domain, dev, nvec, arg); >> + if (ret) >> + return ret; >> + >> + return 0; > Seems a simple "return ret" is enough:) Ah! yes! ;-) M.
> -----Original Message----- > From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel- > owner@vger.kernel.org] On Behalf Of Marc Zyngier > Sent: Thursday, October 15, 2015 6:39 PM > To: Gabriele Paoloni; Thomas Gleixner; Jiang Liu; Jason Cooper > Cc: majun (F); linux-arm-kernel@lists.infradead.org; linux- > pci@vger.kernel.org; linux-kernel@vger.kernel.org > Subject: Re: [PATCH RFC 4/7] genirq/msi: Make the .prepare callback > reusable > > On 15/10/15 18:24, Gabriele Paoloni wrote: > > Hi Marc > > > > It looks like this patch fails to apply to 4.3-rc5.... > > Which is by design. Try tip/irq/core. Oops sorry, got it! Thanks, applies ok to tip/irq/core Gab > > M. > -- > Jazz is not dead. It just smells funny... > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" > in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
diff --git a/include/linux/msi.h b/include/linux/msi.h index 32a24b9..5bb36a9 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h @@ -277,6 +277,10 @@ struct irq_domain *platform_msi_create_irq_domain(struct fwnode_handle *fwnode, int platform_msi_domain_alloc_irqs(struct device *dev, unsigned int nvec, irq_write_msi_msg_t write_msi_msg); void platform_msi_domain_free_irqs(struct device *dev); + +/* When an MSI domain is used as an intermediate domain */ +int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, + int nvec, msi_alloc_info_t *args); #endif /* CONFIG_GENERIC_MSI_IRQ_DOMAIN */ #ifdef CONFIG_PCI_MSI_IRQ_DOMAIN diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c index 95354bb..8e6e112 100644 --- a/kernel/irq/msi.c +++ b/kernel/irq/msi.c @@ -256,6 +256,22 @@ struct irq_domain *msi_create_irq_domain(struct fwnode_handle *fwnode, &msi_domain_ops, info); } +int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, + int nvec, msi_alloc_info_t *arg) +{ + struct msi_domain_info *info = domain->host_data; + struct msi_domain_ops *ops = info->ops; + int ret; + + ret = ops->msi_check(domain, info, dev); + if (ret == 0) + ret = ops->msi_prepare(domain, dev, nvec, arg); + if (ret) + return ret; + + return 0; +} + /** * msi_domain_alloc_irqs - Allocate interrupts from a MSI interrupt domain * @domain: The domain to allocate from @@ -274,9 +290,7 @@ int msi_domain_alloc_irqs(struct irq_domain *domain, struct device *dev, struct msi_desc *desc; int i, ret, virq = -1; - ret = ops->msi_check(domain, info, dev); - if (ret == 0) - ret = ops->msi_prepare(domain, dev, nvec, &arg); + ret = msi_domain_prepare_irqs(domain, dev, nvec, &arg); if (ret) return ret;
The .prepare callbacks are so far only called from msi_domain_alloc_irqs. In order to reuse that code, split that code and create a msi_domain_prepare_irqs function that the existing code can call into. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> --- include/linux/msi.h | 4 ++++ kernel/irq/msi.c | 20 +++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-)