diff options
-rw-r--r-- | arch/x86/include/asm/io_apic.h | 2 | ||||
-rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 15 |
2 files changed, 17 insertions, 0 deletions
diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h index 56dcf08bde62..37dbb3fae395 100644 --- a/arch/x86/include/asm/io_apic.h +++ b/arch/x86/include/asm/io_apic.h | |||
@@ -151,6 +151,8 @@ void setup_IO_APIC_irq_extra(u32 gsi); | |||
151 | extern void ioapic_and_gsi_init(void); | 151 | extern void ioapic_and_gsi_init(void); |
152 | extern void ioapic_insert_resources(void); | 152 | extern void ioapic_insert_resources(void); |
153 | 153 | ||
154 | int io_apic_setup_irq_pin(unsigned int irq, int node, struct io_apic_irq_attr *attr); | ||
155 | |||
154 | extern struct IO_APIC_route_entry **alloc_ioapic_entries(void); | 156 | extern struct IO_APIC_route_entry **alloc_ioapic_entries(void); |
155 | extern void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries); | 157 | extern void free_ioapic_entries(struct IO_APIC_route_entry **ioapic_entries); |
156 | extern int save_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); | 158 | extern int save_IO_APIC_setup(struct IO_APIC_route_entry **ioapic_entries); |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index f751a82d4cb4..6deb3ca62fd6 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
@@ -3607,6 +3607,21 @@ int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev) | |||
3607 | } | 3607 | } |
3608 | #endif /* CONFIG_HT_IRQ */ | 3608 | #endif /* CONFIG_HT_IRQ */ |
3609 | 3609 | ||
3610 | int | ||
3611 | io_apic_setup_irq_pin(unsigned int irq, int node, struct io_apic_irq_attr *attr) | ||
3612 | { | ||
3613 | struct irq_cfg *cfg = alloc_irq_and_cfg_at(irq, node); | ||
3614 | int ret; | ||
3615 | |||
3616 | if (!cfg) | ||
3617 | return -EINVAL; | ||
3618 | ret = __add_pin_to_irq_node(cfg, node, attr->ioapic, attr->ioapic_pin); | ||
3619 | if (!ret) | ||
3620 | setup_ioapic_irq(attr->ioapic, attr->ioapic_pin, irq, cfg, | ||
3621 | attr->trigger, attr->polarity); | ||
3622 | return ret; | ||
3623 | } | ||
3624 | |||
3610 | int __init io_apic_get_redir_entries (int ioapic) | 3625 | int __init io_apic_get_redir_entries (int ioapic) |
3611 | { | 3626 | { |
3612 | union IO_APIC_reg_01 reg_01; | 3627 | union IO_APIC_reg_01 reg_01; |