On Thu, 2007-09-20 at 16:36 +1000, Michael Ellerman wrote: > In the MPIC U3 MSI code, we call u3msi_compose_msi_msg() once for each MSI. > This is overkill, as the address is per pci device, not per MSI. So setup > the address once, and just set the data per MSI. > > Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]>
Acked-by: Benjamin Herrenschmidt <[EMAIL PROTECTED]> > --- > arch/powerpc/sysdev/mpic_u3msi.c | 24 +++++++++--------------- > 1 files changed, 9 insertions(+), 15 deletions(-) > > diff --git a/arch/powerpc/sysdev/mpic_u3msi.c > b/arch/powerpc/sysdev/mpic_u3msi.c > index 4e50d1c..027fe01 100644 > --- a/arch/powerpc/sysdev/mpic_u3msi.c > +++ b/arch/powerpc/sysdev/mpic_u3msi.c > @@ -107,26 +107,17 @@ static void u3msi_teardown_msi_irqs(struct pci_dev > *pdev) > return; > } > > -static void u3msi_compose_msi_msg(struct pci_dev *pdev, int virq, > - struct msi_msg *msg) > -{ > - u64 addr; > - > - addr = find_ht_magic_addr(pdev); > - msg->address_lo = addr & 0xFFFFFFFF; > - msg->address_hi = addr >> 32; > - msg->data = virq_to_hw(virq); > - > - pr_debug("u3msi: allocated virq 0x%x (hw 0x%lx) at address 0x%lx\n", > - virq, virq_to_hw(virq), addr); > -} > - > static int u3msi_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) > { > irq_hw_number_t hwirq; > unsigned int virq; > struct msi_desc *entry; > struct msi_msg msg; > + u64 addr; > + > + addr = find_ht_magic_addr(pdev); > + msg.address_lo = addr & 0xFFFFFFFF; > + msg.address_hi = addr >> 32; > > list_for_each_entry(entry, &pdev->msi_list, list) { > hwirq = mpic_msi_alloc_hwirqs(msi_mpic, 1); > @@ -146,7 +137,10 @@ static int u3msi_setup_msi_irqs(struct pci_dev *pdev, > int nvec, int type) > set_irq_chip(virq, &mpic_u3msi_chip); > set_irq_type(virq, IRQ_TYPE_EDGE_RISING); > > - u3msi_compose_msi_msg(pdev, virq, &msg); > + pr_debug("u3msi: allocated virq 0x%x (hw 0x%lx) addr 0x%lx\n", > + virq, hwirq, addr); > + > + msg.data = hwirq; > write_msi_msg(virq, &msg); > > hwirq++; _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev