From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Yijing Wang <wangyijing@huawei.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-kernel@vger.kernel.org, Xinwei Hu <huxinwei@huawei.com>,
Wuyun <wuyun.wu@huawei.com>,
linux-pci@vger.kernel.org, Marc Zyngier <marc.zyngier@arm.com>,
linux-arm-kernel@lists.infradead.org,
Russell King <linux@arm.linux.org.uk>,
arnab.basu@freescale.com, x86@kernel.org,
Arnd Bergmann <arnd@arndb.de>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
xen-devel@lists.xenproject.org, Joerg Roedel <joro@8bytes.org>,
iommu@lists.linux-foundation.org, linux-mips@linux-mips.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org,
Sebastian Ott <sebott@linux.vnet.ibm.com>,
Tony Luck <tony.luck@intel.com>,
linux-ia64@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
sparclinux@vger.kernel.org, Chris Metcalf <cmetcalf@tilera.com>
Subject: Re: [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X
Date: Tue, 12 Aug 2014 19:09:47 +0000 [thread overview]
Message-ID: <20140812190947.GD13996@laptop.dumpdata.com> (raw)
In-Reply-To: <1407828373-24322-8-git-send-email-wangyijing@huawei.com>
On Tue, Aug 12, 2014 at 03:26:00PM +0800, Yijing Wang wrote:
> Introduce a new struct msi_chip apic_msi_chip instead of weak arch
> functions to configure MSI/MSI-X in x86.
Why not 'x86_msi_ops' (see arch/x86/kernel/x86_init.c)
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> arch/x86/include/asm/pci.h | 1 +
> arch/x86/kernel/apic/io_apic.c | 20 ++++++++++++++++----
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 0892ea0..878a06d 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -101,6 +101,7 @@ void native_teardown_msi_irq(unsigned int irq);
> void native_restore_msi_irqs(struct pci_dev *dev);
> int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> unsigned int irq_base, unsigned int irq_offset);
> +extern struct msi_chip *x86_msi_chip;
> #else
> #define native_setup_msi_irqs NULL
> #define native_teardown_msi_irq NULL
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 2609dcd..eb8ab7c 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3077,24 +3077,25 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> return 0;
> }
>
> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> +int native_setup_msi_irqs(struct device *dev, int nvec, int type)
> {
> struct msi_desc *msidesc;
> unsigned int irq;
> int node, ret;
> + struct pci_dev *pdev = to_pci_dev(dev);
>
> /* Multiple MSI vectors only supported with interrupt remapping */
> if (type = PCI_CAP_ID_MSI && nvec > 1)
> return 1;
>
> - node = dev_to_node(&dev->dev);
> + node = dev_to_node(dev);
>
> - list_for_each_entry(msidesc, &dev->msi_list, list) {
> + list_for_each_entry(msidesc, &pdev->msi_list, list) {
> irq = irq_alloc_hwirq(node);
> if (!irq)
> return -ENOSPC;
>
> - ret = setup_msi_irq(dev, msidesc, irq, 0);
> + ret = setup_msi_irq(pdev, msidesc, irq, 0);
> if (ret < 0) {
> irq_free_hwirq(irq);
> return ret;
> @@ -3214,6 +3215,17 @@ int default_setup_hpet_msi(unsigned int irq, unsigned int id)
> }
> #endif
>
> +struct msi_chip apic_msi_chip = {
> + .setup_irqs = native_setup_msi_irqs,
> + .teardown_irq = native_teardown_msi_irq,
> +};
> +
> +struct msi_chip *arch_get_match_msi_chip(struct device *dev)
> +{
> + return x86_msi_chip;
> +}
> +
> +struct msi_chip *x86_msi_chip = &apic_msi_chip;
> #endif /* CONFIG_PCI_MSI */
> /*
> * Hypertransport interrupt support
> --
> 1.7.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Yijing Wang <wangyijing@huawei.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-kernel@vger.kernel.org, Xinwei Hu <huxinwei@huawei.com>,
Wuyun <wuyun.wu@huawei.com>,
linux-pci@vger.kernel.org, Marc Zyngier <marc.zyngier@arm.com>,
linux-arm-kernel@lists.infradead.org,
Russell King <linux@arm.linux.org.uk>,
arnab.basu@freescale.com, x86@kernel.org,
Arnd Bergmann <arnd@arndb.de>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
xen-devel@lists.xenproject.org, Joerg Roedel <joro@8bytes.org>,
iommu@lists.linux-foundation.org, linux-mips@linux-mips.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org,
Sebastian Ott <sebott@linux.vnet.ibm.com>,
Tony Luck <tony.luck@intel.com>,
linux-ia64@vger.kernel.org, "David S. Miller" <dav>
Subject: Re: [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X
Date: Tue, 12 Aug 2014 15:09:47 -0400 [thread overview]
Message-ID: <20140812190947.GD13996@laptop.dumpdata.com> (raw)
In-Reply-To: <1407828373-24322-8-git-send-email-wangyijing@huawei.com>
On Tue, Aug 12, 2014 at 03:26:00PM +0800, Yijing Wang wrote:
> Introduce a new struct msi_chip apic_msi_chip instead of weak arch
> functions to configure MSI/MSI-X in x86.
Why not 'x86_msi_ops' (see arch/x86/kernel/x86_init.c)
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> arch/x86/include/asm/pci.h | 1 +
> arch/x86/kernel/apic/io_apic.c | 20 ++++++++++++++++----
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 0892ea0..878a06d 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -101,6 +101,7 @@ void native_teardown_msi_irq(unsigned int irq);
> void native_restore_msi_irqs(struct pci_dev *dev);
> int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> unsigned int irq_base, unsigned int irq_offset);
> +extern struct msi_chip *x86_msi_chip;
> #else
> #define native_setup_msi_irqs NULL
> #define native_teardown_msi_irq NULL
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 2609dcd..eb8ab7c 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3077,24 +3077,25 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> return 0;
> }
>
> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> +int native_setup_msi_irqs(struct device *dev, int nvec, int type)
> {
> struct msi_desc *msidesc;
> unsigned int irq;
> int node, ret;
> + struct pci_dev *pdev = to_pci_dev(dev);
>
> /* Multiple MSI vectors only supported with interrupt remapping */
> if (type == PCI_CAP_ID_MSI && nvec > 1)
> return 1;
>
> - node = dev_to_node(&dev->dev);
> + node = dev_to_node(dev);
>
> - list_for_each_entry(msidesc, &dev->msi_list, list) {
> + list_for_each_entry(msidesc, &pdev->msi_list, list) {
> irq = irq_alloc_hwirq(node);
> if (!irq)
> return -ENOSPC;
>
> - ret = setup_msi_irq(dev, msidesc, irq, 0);
> + ret = setup_msi_irq(pdev, msidesc, irq, 0);
> if (ret < 0) {
> irq_free_hwirq(irq);
> return ret;
> @@ -3214,6 +3215,17 @@ int default_setup_hpet_msi(unsigned int irq, unsigned int id)
> }
> #endif
>
> +struct msi_chip apic_msi_chip = {
> + .setup_irqs = native_setup_msi_irqs,
> + .teardown_irq = native_teardown_msi_irq,
> +};
> +
> +struct msi_chip *arch_get_match_msi_chip(struct device *dev)
> +{
> + return x86_msi_chip;
> +}
> +
> +struct msi_chip *x86_msi_chip = &apic_msi_chip;
> #endif /* CONFIG_PCI_MSI */
> /*
> * Hypertransport interrupt support
> --
> 1.7.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Yijing Wang <wangyijing@huawei.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-kernel@vger.kernel.org, Xinwei Hu <huxinwei@huawei.com>,
Wuyun <wuyun.wu@huawei.com>,
linux-pci@vger.kernel.org, Marc Zyngier <marc.zyngier@arm.com>,
linux-arm-kernel@lists.infradead.org,
Russell King <linux@arm.linux.org.uk>,
arnab.basu@freescale.com, x86@kernel.org,
Arnd Bergmann <arnd@arndb.de>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>,
xen-devel@lists.xenproject.org, Joerg Roedel <joro@8bytes.org>,
iommu@lists.linux-foundation.org, linux-mips@linux-mips.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org,
Sebastian Ott <sebott@linux.vnet.ibm.com>,
Tony Luck <tony.luck@intel.com>,
linux-ia64@vger.kernel.org,
"David S. Miller" <davem@davemloft.net>,
sparclinux@vger.kernel.org, Chris Metcalf <cmetcalf@tilera.com>
Subject: Re: [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X
Date: Tue, 12 Aug 2014 15:09:47 -0400 [thread overview]
Message-ID: <20140812190947.GD13996@laptop.dumpdata.com> (raw)
In-Reply-To: <1407828373-24322-8-git-send-email-wangyijing@huawei.com>
On Tue, Aug 12, 2014 at 03:26:00PM +0800, Yijing Wang wrote:
> Introduce a new struct msi_chip apic_msi_chip instead of weak arch
> functions to configure MSI/MSI-X in x86.
Why not 'x86_msi_ops' (see arch/x86/kernel/x86_init.c)
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> arch/x86/include/asm/pci.h | 1 +
> arch/x86/kernel/apic/io_apic.c | 20 ++++++++++++++++----
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 0892ea0..878a06d 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -101,6 +101,7 @@ void native_teardown_msi_irq(unsigned int irq);
> void native_restore_msi_irqs(struct pci_dev *dev);
> int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> unsigned int irq_base, unsigned int irq_offset);
> +extern struct msi_chip *x86_msi_chip;
> #else
> #define native_setup_msi_irqs NULL
> #define native_teardown_msi_irq NULL
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 2609dcd..eb8ab7c 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3077,24 +3077,25 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> return 0;
> }
>
> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> +int native_setup_msi_irqs(struct device *dev, int nvec, int type)
> {
> struct msi_desc *msidesc;
> unsigned int irq;
> int node, ret;
> + struct pci_dev *pdev = to_pci_dev(dev);
>
> /* Multiple MSI vectors only supported with interrupt remapping */
> if (type == PCI_CAP_ID_MSI && nvec > 1)
> return 1;
>
> - node = dev_to_node(&dev->dev);
> + node = dev_to_node(dev);
>
> - list_for_each_entry(msidesc, &dev->msi_list, list) {
> + list_for_each_entry(msidesc, &pdev->msi_list, list) {
> irq = irq_alloc_hwirq(node);
> if (!irq)
> return -ENOSPC;
>
> - ret = setup_msi_irq(dev, msidesc, irq, 0);
> + ret = setup_msi_irq(pdev, msidesc, irq, 0);
> if (ret < 0) {
> irq_free_hwirq(irq);
> return ret;
> @@ -3214,6 +3215,17 @@ int default_setup_hpet_msi(unsigned int irq, unsigned int id)
> }
> #endif
>
> +struct msi_chip apic_msi_chip = {
> + .setup_irqs = native_setup_msi_irqs,
> + .teardown_irq = native_teardown_msi_irq,
> +};
> +
> +struct msi_chip *arch_get_match_msi_chip(struct device *dev)
> +{
> + return x86_msi_chip;
> +}
> +
> +struct msi_chip *x86_msi_chip = &apic_msi_chip;
> #endif /* CONFIG_PCI_MSI */
> /*
> * Hypertransport interrupt support
> --
> 1.7.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: Yijing Wang <wangyijing@huawei.com>
Cc: linux-mips@linux-mips.org, linux-ia64@vger.kernel.org,
linux-pci@vger.kernel.org, Xinwei Hu <huxinwei@huawei.com>,
"H. Peter Anvin" <hpa@zytor.com>,
sparclinux@vger.kernel.org, linux-s390@vger.kernel.org,
Russell King <linux@arm.linux.org.uk>,
Joerg Roedel <joro@8bytes.org>,
x86@kernel.org, Sebastian Ott <sebott@linux.vnet.ibm.com>,
xen-devel@lists.xenproject.org, arnab.basu@freescale.com,
Arnd Bergmann <arnd@arndb.de>,
Marc Zyngier <marc.zyngier@arm.com>,
Chris Metcalf <cmetcalf@tilera.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Thomas Gleixner <tglx@linutronix.de>,
linux-arm-kernel@lists.infradead.org,
Tony Luck <tony.luck@intel.com>,
linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org,
Wuyun <wuyun.wu@huawei.com>,
linuxppc-dev@lists.ozlabs.org,
"David S. Miller" <davem@davemloft.net>
Subject: Re: [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X
Date: Tue, 12 Aug 2014 15:09:47 -0400 [thread overview]
Message-ID: <20140812190947.GD13996@laptop.dumpdata.com> (raw)
In-Reply-To: <1407828373-24322-8-git-send-email-wangyijing@huawei.com>
On Tue, Aug 12, 2014 at 03:26:00PM +0800, Yijing Wang wrote:
> Introduce a new struct msi_chip apic_msi_chip instead of weak arch
> functions to configure MSI/MSI-X in x86.
Why not 'x86_msi_ops' (see arch/x86/kernel/x86_init.c)
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> arch/x86/include/asm/pci.h | 1 +
> arch/x86/kernel/apic/io_apic.c | 20 ++++++++++++++++----
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 0892ea0..878a06d 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -101,6 +101,7 @@ void native_teardown_msi_irq(unsigned int irq);
> void native_restore_msi_irqs(struct pci_dev *dev);
> int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> unsigned int irq_base, unsigned int irq_offset);
> +extern struct msi_chip *x86_msi_chip;
> #else
> #define native_setup_msi_irqs NULL
> #define native_teardown_msi_irq NULL
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 2609dcd..eb8ab7c 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3077,24 +3077,25 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> return 0;
> }
>
> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> +int native_setup_msi_irqs(struct device *dev, int nvec, int type)
> {
> struct msi_desc *msidesc;
> unsigned int irq;
> int node, ret;
> + struct pci_dev *pdev = to_pci_dev(dev);
>
> /* Multiple MSI vectors only supported with interrupt remapping */
> if (type == PCI_CAP_ID_MSI && nvec > 1)
> return 1;
>
> - node = dev_to_node(&dev->dev);
> + node = dev_to_node(dev);
>
> - list_for_each_entry(msidesc, &dev->msi_list, list) {
> + list_for_each_entry(msidesc, &pdev->msi_list, list) {
> irq = irq_alloc_hwirq(node);
> if (!irq)
> return -ENOSPC;
>
> - ret = setup_msi_irq(dev, msidesc, irq, 0);
> + ret = setup_msi_irq(pdev, msidesc, irq, 0);
> if (ret < 0) {
> irq_free_hwirq(irq);
> return ret;
> @@ -3214,6 +3215,17 @@ int default_setup_hpet_msi(unsigned int irq, unsigned int id)
> }
> #endif
>
> +struct msi_chip apic_msi_chip = {
> + .setup_irqs = native_setup_msi_irqs,
> + .teardown_irq = native_teardown_msi_irq,
> +};
> +
> +struct msi_chip *arch_get_match_msi_chip(struct device *dev)
> +{
> + return x86_msi_chip;
> +}
> +
> +struct msi_chip *x86_msi_chip = &apic_msi_chip;
> #endif /* CONFIG_PCI_MSI */
> /*
> * Hypertransport interrupt support
> --
> 1.7.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X
Date: Tue, 12 Aug 2014 19:09:47 +0000 [thread overview]
Message-ID: <20140812190947.GD13996@laptop.dumpdata.com> (raw)
In-Reply-To: <1407828373-24322-8-git-send-email-wangyijing@huawei.com>
On Tue, Aug 12, 2014 at 03:26:00PM +0800, Yijing Wang wrote:
> Introduce a new struct msi_chip apic_msi_chip instead of weak arch
> functions to configure MSI/MSI-X in x86.
Why not 'x86_msi_ops' (see arch/x86/kernel/x86_init.c)
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> arch/x86/include/asm/pci.h | 1 +
> arch/x86/kernel/apic/io_apic.c | 20 ++++++++++++++++----
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 0892ea0..878a06d 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -101,6 +101,7 @@ void native_teardown_msi_irq(unsigned int irq);
> void native_restore_msi_irqs(struct pci_dev *dev);
> int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> unsigned int irq_base, unsigned int irq_offset);
> +extern struct msi_chip *x86_msi_chip;
> #else
> #define native_setup_msi_irqs NULL
> #define native_teardown_msi_irq NULL
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 2609dcd..eb8ab7c 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3077,24 +3077,25 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> return 0;
> }
>
> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> +int native_setup_msi_irqs(struct device *dev, int nvec, int type)
> {
> struct msi_desc *msidesc;
> unsigned int irq;
> int node, ret;
> + struct pci_dev *pdev = to_pci_dev(dev);
>
> /* Multiple MSI vectors only supported with interrupt remapping */
> if (type = PCI_CAP_ID_MSI && nvec > 1)
> return 1;
>
> - node = dev_to_node(&dev->dev);
> + node = dev_to_node(dev);
>
> - list_for_each_entry(msidesc, &dev->msi_list, list) {
> + list_for_each_entry(msidesc, &pdev->msi_list, list) {
> irq = irq_alloc_hwirq(node);
> if (!irq)
> return -ENOSPC;
>
> - ret = setup_msi_irq(dev, msidesc, irq, 0);
> + ret = setup_msi_irq(pdev, msidesc, irq, 0);
> if (ret < 0) {
> irq_free_hwirq(irq);
> return ret;
> @@ -3214,6 +3215,17 @@ int default_setup_hpet_msi(unsigned int irq, unsigned int id)
> }
> #endif
>
> +struct msi_chip apic_msi_chip = {
> + .setup_irqs = native_setup_msi_irqs,
> + .teardown_irq = native_teardown_msi_irq,
> +};
> +
> +struct msi_chip *arch_get_match_msi_chip(struct device *dev)
> +{
> + return x86_msi_chip;
> +}
> +
> +struct msi_chip *x86_msi_chip = &apic_msi_chip;
> #endif /* CONFIG_PCI_MSI */
> /*
> * Hypertransport interrupt support
> --
> 1.7.1
>
WARNING: multiple messages have this Message-ID (diff)
From: konrad.wilk@oracle.com (Konrad Rzeszutek Wilk)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X
Date: Tue, 12 Aug 2014 15:09:47 -0400 [thread overview]
Message-ID: <20140812190947.GD13996@laptop.dumpdata.com> (raw)
In-Reply-To: <1407828373-24322-8-git-send-email-wangyijing@huawei.com>
On Tue, Aug 12, 2014 at 03:26:00PM +0800, Yijing Wang wrote:
> Introduce a new struct msi_chip apic_msi_chip instead of weak arch
> functions to configure MSI/MSI-X in x86.
Why not 'x86_msi_ops' (see arch/x86/kernel/x86_init.c)
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> arch/x86/include/asm/pci.h | 1 +
> arch/x86/kernel/apic/io_apic.c | 20 ++++++++++++++++----
> 2 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
> index 0892ea0..878a06d 100644
> --- a/arch/x86/include/asm/pci.h
> +++ b/arch/x86/include/asm/pci.h
> @@ -101,6 +101,7 @@ void native_teardown_msi_irq(unsigned int irq);
> void native_restore_msi_irqs(struct pci_dev *dev);
> int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> unsigned int irq_base, unsigned int irq_offset);
> +extern struct msi_chip *x86_msi_chip;
> #else
> #define native_setup_msi_irqs NULL
> #define native_teardown_msi_irq NULL
> diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
> index 2609dcd..eb8ab7c 100644
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -3077,24 +3077,25 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
> return 0;
> }
>
> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
> +int native_setup_msi_irqs(struct device *dev, int nvec, int type)
> {
> struct msi_desc *msidesc;
> unsigned int irq;
> int node, ret;
> + struct pci_dev *pdev = to_pci_dev(dev);
>
> /* Multiple MSI vectors only supported with interrupt remapping */
> if (type == PCI_CAP_ID_MSI && nvec > 1)
> return 1;
>
> - node = dev_to_node(&dev->dev);
> + node = dev_to_node(dev);
>
> - list_for_each_entry(msidesc, &dev->msi_list, list) {
> + list_for_each_entry(msidesc, &pdev->msi_list, list) {
> irq = irq_alloc_hwirq(node);
> if (!irq)
> return -ENOSPC;
>
> - ret = setup_msi_irq(dev, msidesc, irq, 0);
> + ret = setup_msi_irq(pdev, msidesc, irq, 0);
> if (ret < 0) {
> irq_free_hwirq(irq);
> return ret;
> @@ -3214,6 +3215,17 @@ int default_setup_hpet_msi(unsigned int irq, unsigned int id)
> }
> #endif
>
> +struct msi_chip apic_msi_chip = {
> + .setup_irqs = native_setup_msi_irqs,
> + .teardown_irq = native_teardown_msi_irq,
> +};
> +
> +struct msi_chip *arch_get_match_msi_chip(struct device *dev)
> +{
> + return x86_msi_chip;
> +}
> +
> +struct msi_chip *x86_msi_chip = &apic_msi_chip;
> #endif /* CONFIG_PCI_MSI */
> /*
> * Hypertransport interrupt support
> --
> 1.7.1
>
next prev parent reply other threads:[~2014-08-12 19:09 UTC|newest]
Thread overview: 190+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-12 7:25 [RFC PATCH 00/20] Use msi_chip to configure MSI/MSI-X in all platforms Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq() Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 9:09 ` David Vrabel
2014-08-12 9:09 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq( David Vrabel
2014-08-12 9:09 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq() David Vrabel
2014-08-12 9:09 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq( David Vrabel
2014-08-12 9:09 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq() David Vrabel
2014-08-12 9:09 ` David Vrabel
2014-08-12 9:09 ` David Vrabel
2014-08-12 11:11 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq( Yijing Wang
2014-08-12 11:11 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq() Yijing Wang
2014-08-12 11:11 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq( Yijing Wang
2014-08-12 11:11 ` [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq() Yijing Wang
2014-08-12 11:11 ` Yijing Wang
2014-08-12 11:11 ` Yijing Wang
2014-08-12 11:11 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 02/20] MSI: Clean up struct msi_chip argument Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 03/20] PCI/MSI: Remove useless bus->msi assignment Yijing Wang
[not found] ` <1407828373-24322-1-git-send-email-wangyijing-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2014-08-12 7:25 ` [RFC PATCH 02/20] MSI: Clean up struct msi_chip argument Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 03/20] PCI/MSI: Remove useless bus->msi assignment Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 05/20] MSI: Refactor struct msi_chip to become more common Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 04/20] MSI: Remove the redundant irq_set_chip_data() Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 05/20] MSI: Refactor struct msi_chip to become more common Yijing Wang
2014-08-12 7:25 ` [RFC PATCH 06/20] PCI/MSI: Introduce arch_get_match_msi_chip() to find the match msi_chip Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:25 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 07/20] x86/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 19:09 ` Konrad Rzeszutek Wilk [this message]
2014-08-12 19:09 ` Konrad Rzeszutek Wilk
2014-08-12 19:09 ` Konrad Rzeszutek Wilk
2014-08-12 19:09 ` Konrad Rzeszutek Wilk
2014-08-12 19:09 ` Konrad Rzeszutek Wilk
2014-08-12 19:09 ` Konrad Rzeszutek Wilk
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-13 1:16 ` Yijing Wang
2014-08-12 19:09 ` Konrad Rzeszutek Wilk
2014-08-12 7:26 ` [RFC PATCH 08/20] x86/xen/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 09/20] irq_remapping/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 10/20] x86/MSI: Remove unused MSI weak arch functions Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 11/20] MIPS/Octeon/MSI: Use msi_chip instead of arch func to configure MSI/MSI-X Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 12/20] MIPS/Xlp/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 13/20] MIPS/xlr/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 14/20] Powerpc/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 15/20] s390/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 16/20] arm/iop13xx/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 17/20] IA64/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 18/20] Sparc/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 19/20] tile/MSI: " Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` [RFC PATCH 20/20] PCI/MSI: Clean up unused MSI arch functions Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
2014-08-12 7:26 ` Yijing Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140812190947.GD13996@laptop.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=arnab.basu@freescale.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=cmetcalf@tilera.com \
--cc=davem@davemloft.net \
--cc=hpa@zytor.com \
--cc=huxinwei@huawei.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=marc.zyngier@arm.com \
--cc=sebott@linux.vnet.ibm.com \
--cc=sparclinux@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=wangyijing@huawei.com \
--cc=wuyun.wu@huawei.com \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.