From: Yijing Wang <wangyijing@huawei.com>
To: David Vrabel <david.vrabel@citrix.com>,
Bjorn Helgaas <bhelgaas@google.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>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
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>,
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: [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq(
Date: Tue, 12 Aug 2014 11:11:53 +0000 [thread overview]
Message-ID: <53E9F679.8060302@huawei.com> (raw)
In-Reply-To: <53E9D9DD.3060901@citrix.com>
On 2014/8/12 17:09, David Vrabel wrote:
> On 12/08/14 08:25, Yijing Wang wrote:
>> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
>> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
>> Introduced these two funcntions make MSI code complex. This patch
>> reverted commit 0e4ccb150 and add #ifdef for x86 msi_chip to fix this
>> bug for simplicity. Also this is preparation for using struct
>> msi_chip instead of weak arch MSI functions in all platforms.
> [...]
>> static struct irq_chip msi_chip = {
>> .name = "PCI-MSI",
>> +#ifdef CONFIG_XEN
>> + .irq_unmask = nop_unmask_msi_irq,
>> + .irq_mask = nop_mask_msi_irq,
>> +#else
>> .irq_unmask = unmask_msi_irq,
>> .irq_mask = mask_msi_irq,
>> +#endif
>
> No. CONFIG_XEN kernels can run on Xen and bare metal so this must be a
> runtime option.
Hi David, that's my mistake, what about export struct irq_chip msi_chip, then
change the msi_chip->irq_mask/irq_unmask() in xen init functions.
Eg.
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 19b0eba..bb6af00 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -43,6 +43,10 @@ static inline void generic_apic_probe(void)
}
#endif
+#ifdef CONFIG_PCI_MSI
+extern struct irq_chip msi_chip;
+#endif
+
#ifdef CONFIG_X86_LOCAL_APIC
[...]
+
+#ifdef CONFIG_PCI_MSI
+void xen_nop_msi_mask(struct irq_data *data)
{
- return 0;
}
#endif
@@ -424,8 +423,8 @@ int __init pci_xen_init(void)
x86_msi.setup_msi_irqs = xen_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
return 0;
}
@@ -505,8 +504,8 @@ int __init pci_xen_initial_domain(void)
x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
xen_setup_acpi_sci();
>
> David
>
> .
>
--
Thanks!
Yijing
WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: David Vrabel <david.vrabel@citrix.com>,
Bjorn Helgaas <bhelgaas@google.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>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
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>,
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: [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq()
Date: Tue, 12 Aug 2014 19:11:53 +0800 [thread overview]
Message-ID: <53E9F679.8060302@huawei.com> (raw)
In-Reply-To: <53E9D9DD.3060901@citrix.com>
On 2014/8/12 17:09, David Vrabel wrote:
> On 12/08/14 08:25, Yijing Wang wrote:
>> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
>> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
>> Introduced these two funcntions make MSI code complex. This patch
>> reverted commit 0e4ccb150 and add #ifdef for x86 msi_chip to fix this
>> bug for simplicity. Also this is preparation for using struct
>> msi_chip instead of weak arch MSI functions in all platforms.
> [...]
>> static struct irq_chip msi_chip = {
>> .name = "PCI-MSI",
>> +#ifdef CONFIG_XEN
>> + .irq_unmask = nop_unmask_msi_irq,
>> + .irq_mask = nop_mask_msi_irq,
>> +#else
>> .irq_unmask = unmask_msi_irq,
>> .irq_mask = mask_msi_irq,
>> +#endif
>
> No. CONFIG_XEN kernels can run on Xen and bare metal so this must be a
> runtime option.
Hi David, that's my mistake, what about export struct irq_chip msi_chip, then
change the msi_chip->irq_mask/irq_unmask() in xen init functions.
Eg.
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 19b0eba..bb6af00 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -43,6 +43,10 @@ static inline void generic_apic_probe(void)
}
#endif
+#ifdef CONFIG_PCI_MSI
+extern struct irq_chip msi_chip;
+#endif
+
#ifdef CONFIG_X86_LOCAL_APIC
[...]
+
+#ifdef CONFIG_PCI_MSI
+void xen_nop_msi_mask(struct irq_data *data)
{
- return 0;
}
#endif
@@ -424,8 +423,8 @@ int __init pci_xen_init(void)
x86_msi.setup_msi_irqs = xen_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
return 0;
}
@@ -505,8 +504,8 @@ int __init pci_xen_initial_domain(void)
x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
xen_setup_acpi_sci();
>
> David
>
> .
>
--
Thanks!
Yijing
WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: David Vrabel <david.vrabel@citrix.com>,
Bjorn Helgaas <bhelgaas@google.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>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
<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>,
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: [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq()
Date: Tue, 12 Aug 2014 19:11:53 +0800 [thread overview]
Message-ID: <53E9F679.8060302@huawei.com> (raw)
In-Reply-To: <53E9D9DD.3060901@citrix.com>
On 2014/8/12 17:09, David Vrabel wrote:
> On 12/08/14 08:25, Yijing Wang wrote:
>> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
>> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
>> Introduced these two funcntions make MSI code complex. This patch
>> reverted commit 0e4ccb150 and add #ifdef for x86 msi_chip to fix this
>> bug for simplicity. Also this is preparation for using struct
>> msi_chip instead of weak arch MSI functions in all platforms.
> [...]
>> static struct irq_chip msi_chip = {
>> .name = "PCI-MSI",
>> +#ifdef CONFIG_XEN
>> + .irq_unmask = nop_unmask_msi_irq,
>> + .irq_mask = nop_mask_msi_irq,
>> +#else
>> .irq_unmask = unmask_msi_irq,
>> .irq_mask = mask_msi_irq,
>> +#endif
>
> No. CONFIG_XEN kernels can run on Xen and bare metal so this must be a
> runtime option.
Hi David, that's my mistake, what about export struct irq_chip msi_chip, then
change the msi_chip->irq_mask/irq_unmask() in xen init functions.
Eg.
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 19b0eba..bb6af00 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -43,6 +43,10 @@ static inline void generic_apic_probe(void)
}
#endif
+#ifdef CONFIG_PCI_MSI
+extern struct irq_chip msi_chip;
+#endif
+
#ifdef CONFIG_X86_LOCAL_APIC
[...]
+
+#ifdef CONFIG_PCI_MSI
+void xen_nop_msi_mask(struct irq_data *data)
{
- return 0;
}
#endif
@@ -424,8 +423,8 @@ int __init pci_xen_init(void)
x86_msi.setup_msi_irqs = xen_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
return 0;
}
@@ -505,8 +504,8 @@ int __init pci_xen_initial_domain(void)
x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
xen_setup_acpi_sci();
>
> David
>
> .
>
--
Thanks!
Yijing
WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: David Vrabel <david.vrabel@citrix.com>,
Bjorn Helgaas <bhelgaas@google.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>,
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: [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq()
Date: Tue, 12 Aug 2014 19:11:53 +0800 [thread overview]
Message-ID: <53E9F679.8060302@huawei.com> (raw)
In-Reply-To: <53E9D9DD.3060901@citrix.com>
On 2014/8/12 17:09, David Vrabel wrote:
> On 12/08/14 08:25, Yijing Wang wrote:
>> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
>> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
>> Introduced these two funcntions make MSI code complex. This patch
>> reverted commit 0e4ccb150 and add #ifdef for x86 msi_chip to fix this
>> bug for simplicity. Also this is preparation for using struct
>> msi_chip instead of weak arch MSI functions in all platforms.
> [...]
>> static struct irq_chip msi_chip = {
>> .name = "PCI-MSI",
>> +#ifdef CONFIG_XEN
>> + .irq_unmask = nop_unmask_msi_irq,
>> + .irq_mask = nop_mask_msi_irq,
>> +#else
>> .irq_unmask = unmask_msi_irq,
>> .irq_mask = mask_msi_irq,
>> +#endif
>
> No. CONFIG_XEN kernels can run on Xen and bare metal so this must be a
> runtime option.
Hi David, that's my mistake, what about export struct irq_chip msi_chip, then
change the msi_chip->irq_mask/irq_unmask() in xen init functions.
Eg.
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 19b0eba..bb6af00 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -43,6 +43,10 @@ static inline void generic_apic_probe(void)
}
#endif
+#ifdef CONFIG_PCI_MSI
+extern struct irq_chip msi_chip;
+#endif
+
#ifdef CONFIG_X86_LOCAL_APIC
[...]
+
+#ifdef CONFIG_PCI_MSI
+void xen_nop_msi_mask(struct irq_data *data)
{
- return 0;
}
#endif
@@ -424,8 +423,8 @@ int __init pci_xen_init(void)
x86_msi.setup_msi_irqs = xen_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
return 0;
}
@@ -505,8 +504,8 @@ int __init pci_xen_initial_domain(void)
x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
xen_setup_acpi_sci();
>
> David
>
> .
>
--
Thanks!
Yijing
WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq(
Date: Tue, 12 Aug 2014 11:11:53 +0000 [thread overview]
Message-ID: <53E9F679.8060302@huawei.com> (raw)
In-Reply-To: <53E9D9DD.3060901@citrix.com>
On 2014/8/12 17:09, David Vrabel wrote:
> On 12/08/14 08:25, Yijing Wang wrote:
>> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
>> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
>> Introduced these two funcntions make MSI code complex. This patch
>> reverted commit 0e4ccb150 and add #ifdef for x86 msi_chip to fix this
>> bug for simplicity. Also this is preparation for using struct
>> msi_chip instead of weak arch MSI functions in all platforms.
> [...]
>> static struct irq_chip msi_chip = {
>> .name = "PCI-MSI",
>> +#ifdef CONFIG_XEN
>> + .irq_unmask = nop_unmask_msi_irq,
>> + .irq_mask = nop_mask_msi_irq,
>> +#else
>> .irq_unmask = unmask_msi_irq,
>> .irq_mask = mask_msi_irq,
>> +#endif
>
> No. CONFIG_XEN kernels can run on Xen and bare metal so this must be a
> runtime option.
Hi David, that's my mistake, what about export struct irq_chip msi_chip, then
change the msi_chip->irq_mask/irq_unmask() in xen init functions.
Eg.
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 19b0eba..bb6af00 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -43,6 +43,10 @@ static inline void generic_apic_probe(void)
}
#endif
+#ifdef CONFIG_PCI_MSI
+extern struct irq_chip msi_chip;
+#endif
+
#ifdef CONFIG_X86_LOCAL_APIC
[...]
+
+#ifdef CONFIG_PCI_MSI
+void xen_nop_msi_mask(struct irq_data *data)
{
- return 0;
}
#endif
@@ -424,8 +423,8 @@ int __init pci_xen_init(void)
x86_msi.setup_msi_irqs = xen_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
return 0;
}
@@ -505,8 +504,8 @@ int __init pci_xen_initial_domain(void)
x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
xen_setup_acpi_sci();
>
> David
>
> .
>
--
Thanks!
Yijing
WARNING: multiple messages have this Message-ID (diff)
From: wangyijing@huawei.com (Yijing Wang)
To: linux-arm-kernel@lists.infradead.org
Subject: [Xen-devel] [RFC PATCH 01/20] x86/xen/MSI: Eliminate arch_msix_mask_irq() and arch_msi_mask_irq()
Date: Tue, 12 Aug 2014 19:11:53 +0800 [thread overview]
Message-ID: <53E9F679.8060302@huawei.com> (raw)
In-Reply-To: <53E9D9DD.3060901@citrix.com>
On 2014/8/12 17:09, David Vrabel wrote:
> On 12/08/14 08:25, Yijing Wang wrote:
>> Commit 0e4ccb150 added two __weak arch functions arch_msix_mask_irq()
>> and arch_msi_mask_irq() to fix a bug found when running xen in x86.
>> Introduced these two funcntions make MSI code complex. This patch
>> reverted commit 0e4ccb150 and add #ifdef for x86 msi_chip to fix this
>> bug for simplicity. Also this is preparation for using struct
>> msi_chip instead of weak arch MSI functions in all platforms.
> [...]
>> static struct irq_chip msi_chip = {
>> .name = "PCI-MSI",
>> +#ifdef CONFIG_XEN
>> + .irq_unmask = nop_unmask_msi_irq,
>> + .irq_mask = nop_mask_msi_irq,
>> +#else
>> .irq_unmask = unmask_msi_irq,
>> .irq_mask = mask_msi_irq,
>> +#endif
>
> No. CONFIG_XEN kernels can run on Xen and bare metal so this must be a
> runtime option.
Hi David, that's my mistake, what about export struct irq_chip msi_chip, then
change the msi_chip->irq_mask/irq_unmask() in xen init functions.
Eg.
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h
index 19b0eba..bb6af00 100644
--- a/arch/x86/include/asm/apic.h
+++ b/arch/x86/include/asm/apic.h
@@ -43,6 +43,10 @@ static inline void generic_apic_probe(void)
}
#endif
+#ifdef CONFIG_PCI_MSI
+extern struct irq_chip msi_chip;
+#endif
+
#ifdef CONFIG_X86_LOCAL_APIC
[...]
+
+#ifdef CONFIG_PCI_MSI
+void xen_nop_msi_mask(struct irq_data *data)
{
- return 0;
}
#endif
@@ -424,8 +423,8 @@ int __init pci_xen_init(void)
x86_msi.setup_msi_irqs = xen_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.teardown_msi_irqs = xen_teardown_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
return 0;
}
@@ -505,8 +504,8 @@ int __init pci_xen_initial_domain(void)
x86_msi.setup_msi_irqs = xen_initdom_setup_msi_irqs;
x86_msi.teardown_msi_irq = xen_teardown_msi_irq;
x86_msi.restore_msi_irqs = xen_initdom_restore_msi_irqs;
- x86_msi.msi_mask_irq = xen_nop_msi_mask_irq;
- x86_msi.msix_mask_irq = xen_nop_msix_mask_irq;
+ msi_chip.irq_mask = xen_nop_msi_mask;
+ msi_chip.irq_unmask = xen_nop_msi_mask;
#endif
xen_setup_acpi_sci();
>
> David
>
> .
>
--
Thanks!
Yijing
next prev parent reply other threads:[~2014-08-12 11:11 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 7:25 ` Yijing Wang
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 ` Yijing Wang [this message]
2014-08-12 11:11 ` 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 9:09 ` David Vrabel
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
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
[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 ` 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 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-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 ` Yijing Wang
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=53E9F679.8060302@huawei.com \
--to=wangyijing@huawei.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=david.vrabel@citrix.com \
--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=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.