x86/platform/intel-mid: Make IRQ allocation a bit more flexible
In the future we would use dynamic allocation for IRQ which brings non-1:1 mapping for IOAPIC domain. Thus, we need to respect return value of mp_map_gsi_to_irq() and assign it back to the device structure. Besides that we need to read GSI from interrupt pin register to avoid cases when some drivers will try to initialize PCI device twice in a row which will call pcibios_enable_irq() twice as well. serial 0000:00:04.1: Mapped GSI28 to IRQ5 serial 0000:00:04.2: Mapped GSI29 to IRQ5 serial 0000:00:04.3: Mapped GSI54 to IRQ5 8250_mid 0000:00:04.1: Mapped GSI28 to IRQ5 8250_mid 0000:00:04.2: Mapped GSI29 to IRQ6 8250_mid 0000:00:04.3: Mapped GSI54 to IRQ7 Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: linux-pci@vger.kernel.org Link: http://lkml.kernel.org/r/20170724173402.12939-1-andriy.shevchenko@linux.intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:

committed by
Ingo Molnar

orang tua
b0ee9effc1
melakukan
5b395e2be6
@@ -30,13 +30,13 @@ static int tangier_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct irq_alloc_info info;
|
||||
struct intel_mid_wdt_pdata *pdata = pdev->dev.platform_data;
|
||||
int gsi, irq;
|
||||
int gsi = TANGIER_EXT_TIMER0_MSI;
|
||||
int irq;
|
||||
|
||||
if (!pdata)
|
||||
return -EINVAL;
|
||||
|
||||
/* IOAPIC builds identity mapping between GSI and IRQ on MID */
|
||||
gsi = pdata->irq;
|
||||
ioapic_set_alloc_attr(&info, cpu_to_node(0), 1, 0);
|
||||
irq = mp_map_gsi_to_irq(gsi, IOAPIC_MAP_ALLOC, &info);
|
||||
if (irq < 0) {
|
||||
@@ -44,11 +44,11 @@ static int tangier_probe(struct platform_device *pdev)
|
||||
return irq;
|
||||
}
|
||||
|
||||
pdata->irq = irq;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct intel_mid_wdt_pdata tangier_pdata = {
|
||||
.irq = TANGIER_EXT_TIMER0_MSI,
|
||||
.probe = tangier_probe,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user