From: Babu Moger Date: Fri, 13 Jan 2017 17:49:23 +0000 (-0800) Subject: arch/sparc: Fix indexing msi_msiqid_table and msi_irq_table X-Git-Tag: v4.1.12-92~1^2~18 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=c37090dc6dd8440b9700f648e42968b5540efc2a;p=users%2Fjedix%2Flinux-maple.git arch/sparc: Fix indexing msi_msiqid_table and msi_irq_table Orabug: 25391918 Couple of indexing fixes. 1. Fix indexing pbm->msi_msiqid_table. It is initialized based off of pbm->msi_first(not pbm->msiq_first as previously done). Here is how it is initialized(Look at in sparc64_setup_msi_irq) pbm->msi_msiqid_table[msi - pbm->msi_first] = msiqid; 2. In set_related_affinity, we dont need to subtract msi_first as the loop is indexed from 0 to size of the table. (cherry picked from uek2 commit 57d31847c9f2011314de8ea98c06616f91c5dbb8) Signed-off-by: Babu Moger Tested-by: Dmitry Klochkov Signed-off-by: Allen Pais --- diff --git a/arch/sparc/kernel/pci_msi.c b/arch/sparc/kernel/pci_msi.c index d971685351cf8..a97367f0b7d47 100644 --- a/arch/sparc/kernel/pci_msi.c +++ b/arch/sparc/kernel/pci_msi.c @@ -120,7 +120,7 @@ static void set_related_affinity(struct pci_pbm_info *pbm, unsigned int msiqid, unsigned int irq; struct irq_desc *desc; - irq = pbm->msi_irq_table[msi - pbm->msiq_first]; + irq = pbm->msi_irq_table[msi]; if (irq == oirq) continue; @@ -143,7 +143,7 @@ static int irq_set_msi_affinity(struct irq_data *data, struct pci_dev *pdev = msi_desc->dev; struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller; - msiqid = pbm->msi_msiqid_table[msi_desc->msg.data - pbm->msiq_first]; + msiqid = pbm->msi_msiqid_table[msi_desc->msg.data - pbm->msi_first]; msiq_irq = pbm->msiqid_irq_table[msiqid]; mdesc = irq_to_desc(msiq_irq); @@ -170,7 +170,7 @@ static void irq_print_msi_chip(struct irq_data *data, struct seq_file *p) struct pci_dev *pdev = msi_desc->dev; struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller; - msiqid = pbm->msi_msiqid_table[msi_desc->msg.data - pbm->msiq_first]; + msiqid = pbm->msi_msiqid_table[msi_desc->msg.data - pbm->msi_first]; msiq_irq = pbm->msiqid_irq_table[msiqid]; seq_printf(p, "MSIQ:%d", msiq_irq);