Message ID | 1409911806-10519-16-git-send-email-wangyijing@huawei.com |
---|---|
State | New |
Headers | show |
Hello. On 9/5/2014 2:10 PM, Yijing Wang wrote: > Use MSI chip framework instead of arch MSI functions to configure > MSI/MSI-X irq. So we can manage MSI/MSI-X irq in a unified framework. > Signed-off-by: Yijing Wang <wangyijing@huawei.com> > --- > arch/powerpc/kernel/msi.c | 14 ++++++++++++-- > 1 files changed, 12 insertions(+), 2 deletions(-) > diff --git a/arch/powerpc/kernel/msi.c b/arch/powerpc/kernel/msi.c > index 71bd161..01781a4 100644 > --- a/arch/powerpc/kernel/msi.c > +++ b/arch/powerpc/kernel/msi.c [...] > @@ -27,7 +27,17 @@ int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) > return ppc_md.setup_msi_irqs(dev, nvec, type); > } > > -void arch_teardown_msi_irqs(struct pci_dev *dev) > +static void ppc_teardown_msi_irqs(struct pci_dev *dev) Shouldn't this function take IRQ # instead? > { > ppc_md.teardown_msi_irqs(dev); > } > + > +static struct msi_chip ppc_msi_chip = { > + .setup_irqs = ppc_setup_msi_irqs, > + .teardown_irqs = ppc_teardown_msi_irqs, > +}; > + > +struct msi_chip *arch_find_msi_chip(struct pci_dev *dev) > +{ > + return &ppc_msi_chip; > +} WBR, Sergei
> 在 2014年9月5日,18:47,Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> 写道: > > Hello. > >> On 9/5/2014 2:10 PM, Yijing Wang wrote: >> >> Use MSI chip framework instead of arch MSI functions to configure >> MSI/MSI-X irq. So we can manage MSI/MSI-X irq in a unified framework. > >> Signed-off-by: Yijing Wang <wangyijing@huawei.com> >> --- >> arch/powerpc/kernel/msi.c | 14 ++++++++++++-- >> 1 files changed, 12 insertions(+), 2 deletions(-) > >> diff --git a/arch/powerpc/kernel/msi.c b/arch/powerpc/kernel/msi.c >> index 71bd161..01781a4 100644 >> --- a/arch/powerpc/kernel/msi.c >> +++ b/arch/powerpc/kernel/msi.c > [...] >> @@ -27,7 +27,17 @@ int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) >> return ppc_md.setup_msi_irqs(dev, nvec, type); >> } >> >> -void arch_teardown_msi_irqs(struct pci_dev *dev) >> +static void ppc_teardown_msi_irqs(struct pci_dev *dev) > > Shouldn't this function take IRQ # instead? This function need to teardown all msi irqs of the pci dev, we should pass the pci dev as argument . Thanks! Yijing. > >> { >> ppc_md.teardown_msi_irqs(dev); >> } >> + >> +static struct msi_chip ppc_msi_chip = { >> + .setup_irqs = ppc_setup_msi_irqs, >> + .teardown_irqs = ppc_teardown_msi_irqs, >> +}; >> + >> +struct msi_chip *arch_find_msi_chip(struct pci_dev *dev) >> +{ >> + return &ppc_msi_chip; >> +} > > WBR, Sergei > > -- > 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 9/5/2014 3:33 PM, wangyijing wrote: >>> Use MSI chip framework instead of arch MSI functions to configure >>> MSI/MSI-X irq. So we can manage MSI/MSI-X irq in a unified framework. >>> Signed-off-by: Yijing Wang <wangyijing@huawei.com> >>> --- >>> arch/powerpc/kernel/msi.c | 14 ++++++++++++-- >>> 1 files changed, 12 insertions(+), 2 deletions(-) >>> diff --git a/arch/powerpc/kernel/msi.c b/arch/powerpc/kernel/msi.c >>> index 71bd161..01781a4 100644 >>> --- a/arch/powerpc/kernel/msi.c >>> +++ b/arch/powerpc/kernel/msi.c >> [...] >>> @@ -27,7 +27,17 @@ int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) >>> return ppc_md.setup_msi_irqs(dev, nvec, type); >>> } >>> >>> -void arch_teardown_msi_irqs(struct pci_dev *dev) >>> +static void ppc_teardown_msi_irqs(struct pci_dev *dev) >> Shouldn't this function take IRQ # instead? > This function need to teardown all msi irqs of the pci dev, we should pass the pci dev as argument . Ah, I've mixed up the teardown_irqs() method with teardown_irq()! Too similar. :-) > Thanks! > Yijing. WBR, Sergei
On Fri, 2014-09-05 at 18:10 +0800, Yijing Wang wrote: > Use MSI chip framework instead of arch MSI functions to configure > MSI/MSI-X irq. So we can manage MSI/MSI-X irq in a unified framework. > > Signed-off-by: Yijing Wang <wangyijing@huawei.com> This looks fine and seems to boot OK. Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) cheers
On 2014/9/16 13:28, Michael Ellerman wrote: > On Fri, 2014-09-05 at 18:10 +0800, Yijing Wang wrote: >> Use MSI chip framework instead of arch MSI functions to configure >> MSI/MSI-X irq. So we can manage MSI/MSI-X irq in a unified framework. >> >> Signed-off-by: Yijing Wang <wangyijing@huawei.com> > > This looks fine and seems to boot OK. > > Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Thanks very much! > > cheers > > > > . >
diff --git a/arch/powerpc/kernel/msi.c b/arch/powerpc/kernel/msi.c index 71bd161..01781a4 100644 --- a/arch/powerpc/kernel/msi.c +++ b/arch/powerpc/kernel/msi.c @@ -13,7 +13,7 @@ #include <asm/machdep.h> -int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) +static int ppc_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) { if (!ppc_md.setup_msi_irqs || !ppc_md.teardown_msi_irqs) { pr_debug("msi: Platform doesn't provide MSI callbacks.\n"); @@ -27,7 +27,17 @@ int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) return ppc_md.setup_msi_irqs(dev, nvec, type); } -void arch_teardown_msi_irqs(struct pci_dev *dev) +static void ppc_teardown_msi_irqs(struct pci_dev *dev) { ppc_md.teardown_msi_irqs(dev); } + +static struct msi_chip ppc_msi_chip = { + .setup_irqs = ppc_setup_msi_irqs, + .teardown_irqs = ppc_teardown_msi_irqs, +}; + +struct msi_chip *arch_find_msi_chip(struct pci_dev *dev) +{ + return &ppc_msi_chip; +}
Use MSI chip framework instead of arch MSI functions to configure MSI/MSI-X irq. So we can manage MSI/MSI-X irq in a unified framework. Signed-off-by: Yijing Wang <wangyijing@huawei.com> --- arch/powerpc/kernel/msi.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)