* [PATCH] PCI/MSI: Remove the redundant irq_set_msi_desc()
@ 2014-09-10 3:47 Yijing Wang
2014-09-23 18:23 ` Bjorn Helgaas
0 siblings, 1 reply; 3+ messages in thread
From: Yijing Wang @ 2014-09-10 3:47 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, Yijing Wang
Irq and msi_desc will be associated in arch MSI
setup code. The irq_set_msi_desc() in msix_program_entries()
is redundant.
Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
drivers/pci/msi.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
index 5a40516..902b0cb 100644
--- a/drivers/pci/msi.c
+++ b/drivers/pci/msi.c
@@ -719,7 +719,6 @@ static void msix_program_entries(struct pci_dev *dev,
PCI_MSIX_ENTRY_VECTOR_CTRL;
entries[i].vector = entry->irq;
- irq_set_msi_desc(entry->irq, entry);
entry->masked = readl(entry->mask_base + offset);
msix_mask_irq(entry, 1);
i++;
--
1.7.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] PCI/MSI: Remove the redundant irq_set_msi_desc()
2014-09-10 3:47 [PATCH] PCI/MSI: Remove the redundant irq_set_msi_desc() Yijing Wang
@ 2014-09-23 18:23 ` Bjorn Helgaas
2014-09-24 3:11 ` Yijing Wang
0 siblings, 1 reply; 3+ messages in thread
From: Bjorn Helgaas @ 2014-09-23 18:23 UTC (permalink / raw)
To: Yijing Wang; +Cc: linux-pci
On Wed, Sep 10, 2014 at 11:47:32AM +0800, Yijing Wang wrote:
> Irq and msi_desc will be associated in arch MSI
> setup code. The irq_set_msi_desc() in msix_program_entries()
> is redundant.
Can you help me review this by mentioning exactly *where* the IRQ and
msi_desc are associated by the arch MSI setup code?
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> drivers/pci/msi.c | 1 -
> 1 files changed, 0 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
> index 5a40516..902b0cb 100644
> --- a/drivers/pci/msi.c
> +++ b/drivers/pci/msi.c
> @@ -719,7 +719,6 @@ static void msix_program_entries(struct pci_dev *dev,
> PCI_MSIX_ENTRY_VECTOR_CTRL;
>
> entries[i].vector = entry->irq;
> - irq_set_msi_desc(entry->irq, entry);
> entry->masked = readl(entry->mask_base + offset);
> msix_mask_irq(entry, 1);
> i++;
> --
> 1.7.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] PCI/MSI: Remove the redundant irq_set_msi_desc()
2014-09-23 18:23 ` Bjorn Helgaas
@ 2014-09-24 3:11 ` Yijing Wang
0 siblings, 0 replies; 3+ messages in thread
From: Yijing Wang @ 2014-09-24 3:11 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci
On 2014/9/24 2:23, Bjorn Helgaas wrote:
> On Wed, Sep 10, 2014 at 11:47:32AM +0800, Yijing Wang wrote:
>> Irq and msi_desc will be associated in arch MSI
>> setup code. The irq_set_msi_desc() in msix_program_entries()
>> is redundant.
>
> Can you help me review this by mentioning exactly *where* the IRQ and
> msi_desc are associated by the arch MSI setup code?
Hi Bjorn,
We have two ARCH MSI interfaces, arch_setup_msi_irqs() and arch_setup_msi_irq().
Use arch_setup_msi_irqs():
x86:
native_setup_msi_irqs()
setup_msi_irq()
irq_set_msi_desc_off(); ---associate irq and msi_desc
irq remapping also call setup_msi_irq() finally, so irq and msi_desc also will be associated.
xen:
All xen ARCH MSI funcs also call irq_set_msi_desc() in xen_bind_pirq_msi_to_irq().
mips: Msi-octeon,
arch_setup_msi_irqs()
arch_setup_msi_irq()
irq_set_msi_desc() ---associate irq and msi_desc
s390:
arch_setup_msi_irqs()
irq_set_msi_desc()
powerpc:
axon_msi_setup_msi_irqs()
fsl_setup_msi_irqs()
pasemi_msi_setup_msi_irqs()
u3msi_setup_msi_irqs()
rtas_setup_msi_irqs()
pnv_setup_msi_irqs()
....
All above ARCH MSI func call irq_set_msi_desc().
There are a lot of ARCH MSI code in kernel, and I almost checked each one,
irq_set_msi_desc() and irq_set_msi_desc_off() always be called in ARCH MSI code.
I grep it and we can find almost every ARCH has been called irq_set_msi_desc()
[yijing@localhost linux]$ grep -Rn "irq_set_msi_desc" --include="*.c" .
./arch/ia64/sn/kernel/msi_sn.c:147: irq_set_msi_desc(irq, entry);
./arch/ia64/kernel/msi_ia64.c:56: irq_set_msi_desc(irq, desc);
./arch/mips/pci/msi-xlp.c:344: ret = irq_set_msi_desc(xirq, desc);
./arch/mips/pci/msi-xlp.c:445: ret = irq_set_msi_desc(xirq, desc);
./arch/mips/pci/msi-octeon.c:180: irq_set_msi_desc(irq, desc);
./arch/mips/pci/pci-xlr.c:259: ret = irq_set_msi_desc(irq, desc);
./arch/powerpc/sysdev/ppc4xx_hsta_msi.c:81: if (irq_set_msi_desc(hwirq, entry)) {
./arch/powerpc/sysdev/ppc4xx_hsta_msi.c:119: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/sysdev/mpic_pasemi_msi.c:76: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/sysdev/mpic_pasemi_msi.c:128: irq_set_msi_desc(virq, entry);
./arch/powerpc/sysdev/ppc4xx_msi.c:117: irq_set_msi_desc(virq, entry);
./arch/powerpc/sysdev/ppc4xx_msi.c:134: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/sysdev/fsl_msi.c:121: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/sysdev/fsl_msi.c:225: irq_set_msi_desc(virq, entry);
./arch/powerpc/sysdev/mpic_u3msi.c:116: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/sysdev/mpic_u3msi.c:164: irq_set_msi_desc(virq, entry);
./arch/powerpc/platforms/cell/axon_msi.c:280: irq_set_msi_desc(virq, entry);
./arch/powerpc/platforms/cell/axon_msi.c:298: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/platforms/pseries/msi.c:123: irq_set_msi_desc(entry->irq, NULL);
./arch/powerpc/platforms/pseries/msi.c:476: irq_set_msi_desc(virq, entry);
./arch/powerpc/platforms/powernv/pci.c:93: irq_set_msi_desc(virq, entry);
./arch/powerpc/platforms/powernv/pci.c:111: irq_set_msi_desc(entry->irq, NULL);
./arch/tile/kernel/pci_gx.c:1588: irq_set_msi_desc(irq, desc);
./arch/s390/pci/pci.c:398: rc = irq_set_msi_desc(irq, msi);
./arch/s390/pci/pci.c:422: irq_set_msi_desc(msi->irq, NULL);
./arch/s390/pci/pci.c:454: irq_set_msi_desc(msi->irq, NULL);
./arch/arm/mach-iop13xx/msi.c:148: irq_set_msi_desc(irq, desc);
./arch/sparc/kernel/pci_msi.c:163: irq_set_msi_desc(*irq_p, entry);
./arch/x86/kernel/apic/io_apic.c:3185: irq_set_msi_desc_off(irq_base, irq_offset, msidesc);
./drivers/irqchip/irq-armada-370-xp.c:153: irq_set_msi_desc(virq, desc);
./drivers/pci/host/pcie-rcar.c:637: irq_set_msi_desc(irq, desc);
./drivers/pci/host/pci-tegra.c:1176: irq_set_msi_desc(irq, desc);
./drivers/pci/host/pcie-designware.c:238: irq_set_msi_desc_off(irq_base, i, NULL);
./drivers/pci/host/pcie-designware.c:299: if (irq_set_msi_desc_off(irq, i, desc) != 0) {
./drivers/pci/msi.c:692: irq_set_msi_desc(entry->irq, entry);
./drivers/xen/events/events_base.c:742: ret = irq_set_msi_desc(irq, msidesc);
./kernel/irq/chip.c:92: * irq_set_msi_desc_off - set MSI descriptor data for an irq at offset
./kernel/irq/chip.c:99:int irq_set_msi_desc_off(unsigned int irq_base, unsigned int irq_offset,
./kernel/irq/chip.c:115: * irq_set_msi_desc - set MSI descriptor data for an irq
./kernel/irq/chip.c:121:int irq_set_msi_desc(unsigned int irq, struct msi_desc *entry)
./kernel/irq/chip.c:123: return irq_set_msi_desc_off(irq, 0, entry);
[yijing@localhost linux]$ grep -Rn "irq_set_msi_desc_off" --include="*.c" .
./arch/x86/kernel/apic/io_apic.c:3185: irq_set_msi_desc_off(irq_base, irq_offset, msidesc);
./drivers/pci/host/pcie-designware.c:238: irq_set_msi_desc_off(irq_base, i, NULL);
./drivers/pci/host/pcie-designware.c:299: if (irq_set_msi_desc_off(irq, i, desc) != 0) {
./kernel/irq/chip.c:92: * irq_set_msi_desc_off - set MSI descriptor data for an irq at offset
./kernel/irq/chip.c:99:int irq_set_msi_desc_off(unsigned int irq_base, unsigned int irq_offset,
./kernel/irq/chip.c:123: return irq_set_msi_desc_off(irq, 0, entry);
>
>> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
>> ---
>> drivers/pci/msi.c | 1 -
>> 1 files changed, 0 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c
>> index 5a40516..902b0cb 100644
>> --- a/drivers/pci/msi.c
>> +++ b/drivers/pci/msi.c
>> @@ -719,7 +719,6 @@ static void msix_program_entries(struct pci_dev *dev,
>> PCI_MSIX_ENTRY_VECTOR_CTRL;
>>
>> entries[i].vector = entry->irq;
>> - irq_set_msi_desc(entry->irq, entry);
>> entry->masked = readl(entry->mask_base + offset);
>> msix_mask_irq(entry, 1);
>> i++;
>> --
>> 1.7.1
>>
>
>
--
Thanks!
Yijing
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2014-09-24 3:11 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-10 3:47 [PATCH] PCI/MSI: Remove the redundant irq_set_msi_desc() Yijing Wang
2014-09-23 18:23 ` Bjorn Helgaas
2014-09-24 3:11 ` Yijing Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).