irq: change ACPI GSI APIs to also take a device argument
We want to use dev_to_node() later on, to be aware of the 'home node' of the GSI in question. [ Impact: cleanup, prepare the IRQ code to be more NUMA aware ] Signed-off-by: Yinghai Lu <yinghai@kernel.org> Acked-by: Len Brown <lenb@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Len Brown <lenb@kernel.org> Cc: Bjorn Helgaas <bjorn.helgaas@hp.com> Cc: Tony Luck <tony.luck@intel.com> Cc: linux-acpi@vger.kernel.org Cc: linux-ia64@vger.kernel.org LKML-Reference: <49F65560.20904@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
85ac16d033
commit
a2f809b08a
|
@ -636,7 +636,7 @@ void __init acpi_numa_arch_fixup(void)
|
|||
* success: return IRQ number (>=0)
|
||||
* failure: return < 0
|
||||
*/
|
||||
int acpi_register_gsi(u32 gsi, int triggering, int polarity)
|
||||
int acpi_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity)
|
||||
{
|
||||
if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM)
|
||||
return gsi;
|
||||
|
@ -678,7 +678,8 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table)
|
|||
|
||||
fadt = (struct acpi_table_fadt *)fadt_header;
|
||||
|
||||
acpi_register_gsi(fadt->sci_interrupt, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW);
|
||||
acpi_register_gsi(NULL, fadt->sci_interrupt, ACPI_LEVEL_SENSITIVE,
|
||||
ACPI_ACTIVE_LOW);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -154,8 +154,8 @@ extern int timer_through_8259;
|
|||
extern int io_apic_get_unique_id(int ioapic, int apic_id);
|
||||
extern int io_apic_get_version(int ioapic);
|
||||
extern int io_apic_get_redir_entries(int ioapic);
|
||||
extern int io_apic_set_pci_routing(int ioapic, int pin, int irq,
|
||||
int edge_level, int active_high_low);
|
||||
extern int io_apic_set_pci_routing(struct device *dev, int ioapic, int pin,
|
||||
int irq, int edge_level, int active_high_low);
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
extern int (*ioapic_renumber_irq)(int ioapic, int irq);
|
||||
|
|
|
@ -72,7 +72,9 @@ extern void mp_register_ioapic(int id, u32 address, u32 gsi_base);
|
|||
extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger,
|
||||
u32 gsi);
|
||||
extern void mp_config_acpi_legacy_irqs(void);
|
||||
extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low);
|
||||
struct device;
|
||||
extern int mp_register_gsi(struct device *dev, u32 gsi, int edge_level,
|
||||
int active_high_low);
|
||||
extern int acpi_probe_gsi(void);
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
|
||||
|
|
|
@ -522,7 +522,7 @@ int acpi_gsi_to_irq(u32 gsi, unsigned int *irq)
|
|||
* success: return IRQ number (>=0)
|
||||
* failure: return < 0
|
||||
*/
|
||||
int acpi_register_gsi(u32 gsi, int triggering, int polarity)
|
||||
int acpi_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity)
|
||||
{
|
||||
unsigned int irq;
|
||||
unsigned int plat_gsi = gsi;
|
||||
|
@ -539,7 +539,7 @@ int acpi_register_gsi(u32 gsi, int triggering, int polarity)
|
|||
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
if (acpi_irq_model == ACPI_IRQ_MODEL_IOAPIC) {
|
||||
plat_gsi = mp_register_gsi(gsi, triggering, polarity);
|
||||
plat_gsi = mp_register_gsi(dev, gsi, triggering, polarity);
|
||||
}
|
||||
#endif
|
||||
acpi_gsi_to_irq(plat_gsi, &irq);
|
||||
|
@ -1158,7 +1158,7 @@ void __init mp_config_acpi_legacy_irqs(void)
|
|||
}
|
||||
}
|
||||
|
||||
int mp_register_gsi(u32 gsi, int triggering, int polarity)
|
||||
int mp_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity)
|
||||
{
|
||||
int ioapic;
|
||||
int ioapic_pin;
|
||||
|
@ -1253,7 +1253,7 @@ int mp_register_gsi(u32 gsi, int triggering, int polarity)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
io_apic_set_pci_routing(ioapic, ioapic_pin, gsi,
|
||||
io_apic_set_pci_routing(dev, ioapic, ioapic_pin, gsi,
|
||||
triggering == ACPI_EDGE_SENSITIVE ? 0 : 1,
|
||||
polarity == ACPI_ACTIVE_HIGH ? 0 : 1);
|
||||
return gsi;
|
||||
|
|
|
@ -3958,7 +3958,8 @@ int __init io_apic_get_version(int ioapic)
|
|||
}
|
||||
#endif
|
||||
|
||||
int io_apic_set_pci_routing (int ioapic, int pin, int irq, int triggering, int polarity)
|
||||
int io_apic_set_pci_routing(struct device *dev, int ioapic, int pin, int irq,
|
||||
int triggering, int polarity)
|
||||
{
|
||||
struct irq_desc *desc;
|
||||
struct irq_cfg *cfg;
|
||||
|
|
|
@ -401,7 +401,8 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
|
|||
/* Interrupt Line values above 0xF are forbidden */
|
||||
if (dev->irq > 0 && (dev->irq <= 0xF)) {
|
||||
printk(" - using IRQ %d\n", dev->irq);
|
||||
acpi_register_gsi(dev->irq, ACPI_LEVEL_SENSITIVE,
|
||||
acpi_register_gsi(&dev->dev, dev->irq,
|
||||
ACPI_LEVEL_SENSITIVE,
|
||||
ACPI_ACTIVE_LOW);
|
||||
return 0;
|
||||
} else {
|
||||
|
@ -410,7 +411,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
|
|||
}
|
||||
}
|
||||
|
||||
rc = acpi_register_gsi(gsi, triggering, polarity);
|
||||
rc = acpi_register_gsi(&dev->dev, gsi, triggering, polarity);
|
||||
if (rc < 0) {
|
||||
dev_warn(&dev->dev, "PCI INT %c: failed to register GSI\n",
|
||||
pin_name(pin));
|
||||
|
|
|
@ -224,7 +224,7 @@ static void hpet_timer_set_irq(struct hpet_dev *devp)
|
|||
break;
|
||||
}
|
||||
|
||||
gsi = acpi_register_gsi(irq, ACPI_LEVEL_SENSITIVE,
|
||||
gsi = acpi_register_gsi(NULL, irq, ACPI_LEVEL_SENSITIVE,
|
||||
ACPI_ACTIVE_LOW);
|
||||
if (gsi > 0)
|
||||
break;
|
||||
|
@ -939,7 +939,7 @@ static acpi_status hpet_resources(struct acpi_resource *res, void *data)
|
|||
irqp = &res->data.extended_irq;
|
||||
|
||||
for (i = 0; i < irqp->interrupt_count; i++) {
|
||||
irq = acpi_register_gsi(irqp->interrupts[i],
|
||||
irq = acpi_register_gsi(NULL, irqp->interrupts[i],
|
||||
irqp->triggering, irqp->polarity);
|
||||
if (irq < 0)
|
||||
return AE_ERROR;
|
||||
|
|
|
@ -123,7 +123,7 @@ static void pnpacpi_parse_allocated_irqresource(struct pnp_dev *dev,
|
|||
}
|
||||
|
||||
flags = irq_flags(triggering, polarity, shareable);
|
||||
irq = acpi_register_gsi(gsi, triggering, polarity);
|
||||
irq = acpi_register_gsi(&dev->dev, gsi, triggering, polarity);
|
||||
if (irq >= 0)
|
||||
pcibios_penalize_isa_irq(irq, 1);
|
||||
else
|
||||
|
|
|
@ -119,7 +119,7 @@ extern int pci_mmcfg_config_num;
|
|||
extern int sbf_port;
|
||||
extern unsigned long acpi_realmode_flags;
|
||||
|
||||
int acpi_register_gsi (u32 gsi, int triggering, int polarity);
|
||||
int acpi_register_gsi (struct device *dev, u32 gsi, int triggering, int polarity);
|
||||
int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
|
||||
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
|
|
Loading…
Reference in New Issue