提交 d1921bcd 编写于 作者: M Milton Miller 提交者: Benjamin Herrenschmidt

powerpc/fsl_msi: Use chip_data not handler_data

handler_data should be reserved for flow handlers on the dependent
irq, not consumed by the parent irq code that is part of the irq_chip
code.  The msi_data pointer was already set in msidesc->irqhost->hostdata
and being copied to irq_data->chipdata in the msidesc->irqhost->map()
method called via create_irq_mapping, so we can obtain the pointer
from there and free the instance it in teardown_msi_irqs.

Also remove the unnecessary cast of irq_get_handler_data in the
cascade handler, which is the demux flow handler of the parent
msi interrupt.  (This is the expected usage for handler_data).
Signed-off-by: NMilton Miller <miltonm@bga.com>
Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
上级 6c4c82e2
...@@ -110,7 +110,7 @@ static void fsl_teardown_msi_irqs(struct pci_dev *pdev) ...@@ -110,7 +110,7 @@ static void fsl_teardown_msi_irqs(struct pci_dev *pdev)
list_for_each_entry(entry, &pdev->msi_list, list) { list_for_each_entry(entry, &pdev->msi_list, list) {
if (entry->irq == NO_IRQ) if (entry->irq == NO_IRQ)
continue; continue;
msi_data = irq_get_handler_data(entry->irq); msi_data = irq_get_chip_data(entry->irq);
irq_set_msi_desc(entry->irq, NULL); irq_set_msi_desc(entry->irq, NULL);
msi_bitmap_free_hwirqs(&msi_data->bitmap, msi_bitmap_free_hwirqs(&msi_data->bitmap,
virq_to_hw(entry->irq), 1); virq_to_hw(entry->irq), 1);
...@@ -168,7 +168,7 @@ static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type) ...@@ -168,7 +168,7 @@ static int fsl_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
rc = -ENOSPC; rc = -ENOSPC;
goto out_free; goto out_free;
} }
irq_set_handler_data(virq, msi_data); /* chip_data is msi_data via host->hostdata in host->map() */
irq_set_msi_desc(virq, entry); irq_set_msi_desc(virq, entry);
fsl_compose_msi_msg(pdev, hwirq, &msg, msi_data); fsl_compose_msi_msg(pdev, hwirq, &msg, msi_data);
...@@ -193,7 +193,7 @@ static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc) ...@@ -193,7 +193,7 @@ static void fsl_msi_cascade(unsigned int irq, struct irq_desc *desc)
u32 have_shift = 0; u32 have_shift = 0;
struct fsl_msi_cascade_data *cascade_data; struct fsl_msi_cascade_data *cascade_data;
cascade_data = (struct fsl_msi_cascade_data *)irq_get_handler_data(irq); cascade_data = irq_get_handler_data(irq);
msi_data = cascade_data->msi_data; msi_data = cascade_data->msi_data;
raw_spin_lock(&desc->lock); raw_spin_lock(&desc->lock);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册