From c37090dc6dd8440b9700f648e42968b5540efc2a Mon Sep 17 00:00:00 2001 From: Babu Moger Date: Fri, 13 Jan 2017 09:49:23 -0800 Subject: [PATCH] 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 --- arch/sparc/kernel/pci_msi.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/sparc/kernel/pci_msi.c b/arch/sparc/kernel/pci_msi.c index d971685351cf..a97367f0b7d4 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); -- 2.50.1