Loading arch/i386/kernel/acpi/boot.c +5 −1 Original line number Diff line number Diff line Loading @@ -484,7 +484,11 @@ int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) return 0; } unsigned int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low) /* * success: return IRQ number (>=0) * failure: return < 0 */ int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low) { unsigned int irq; unsigned int plat_gsi = gsi; Loading arch/ia64/kernel/acpi.c +5 −1 Original line number Diff line number Diff line Loading @@ -563,7 +563,11 @@ acpi_numa_arch_fixup (void) } #endif /* CONFIG_ACPI_NUMA */ unsigned int /* * success: return IRQ number (>=0) * failure: return < 0 */ int acpi_register_gsi (u32 gsi, int edge_level, int active_high_low) { if (has_8259 && gsi < 16) Loading arch/ia64/kernel/iosapic.c +15 −9 Original line number Diff line number Diff line Loading @@ -561,7 +561,7 @@ static inline int vector_is_shared (int vector) return (iosapic_intr_info[vector].count > 1); } static void static int register_intr (unsigned int gsi, int vector, unsigned char delivery, unsigned long polarity, unsigned long trigger) { Loading @@ -576,7 +576,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, index = find_iosapic(gsi); if (index < 0) { printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", __FUNCTION__, gsi); return; return -ENODEV; } iosapic_address = iosapic_lists[index].addr; Loading @@ -587,7 +587,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, rte = iosapic_alloc_rte(); if (!rte) { printk(KERN_WARNING "%s: cannot allocate memory\n", __FUNCTION__); return; return -ENOMEM; } rte_index = gsi - gsi_base; Loading @@ -603,7 +603,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, struct iosapic_intr_info *info = &iosapic_intr_info[vector]; if (info->trigger != trigger || info->polarity != polarity) { printk (KERN_WARNING "%s: cannot override the interrupt\n", __FUNCTION__); return; return -EINVAL; } } Loading @@ -623,6 +623,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, __FUNCTION__, vector, idesc->handler->typename, irq_type->typename); idesc->handler = irq_type; } return 0; } static unsigned int Loading Loading @@ -710,7 +711,7 @@ int iosapic_register_intr (unsigned int gsi, unsigned long polarity, unsigned long trigger) { int vector, mask = 1; int vector, mask = 1, err; unsigned int dest; unsigned long flags; struct iosapic_rte_info *rte; Loading @@ -734,11 +735,11 @@ iosapic_register_intr (unsigned int gsi, spin_unlock_irqrestore(&iosapic_lock, flags); /* If vector is running out, we try to find a sharable vector */ vector = assign_irq_vector(AUTO_ASSIGN); vector = assign_irq_vector_nopanic(AUTO_ASSIGN); if (vector < 0) { vector = iosapic_find_sharable_vector(trigger, polarity); if (vector < 0) panic("%s: out of interrupt vectors!\n", __FUNCTION__); Return -ENOSPC; } spin_lock_irqsave(&irq_descp(vector)->lock, flags); Loading @@ -753,8 +754,13 @@ iosapic_register_intr (unsigned int gsi, } dest = get_target_cpu(gsi, vector); register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, err = register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, polarity, trigger); if (err < 0) { spin_unlock(&iosapic_lock); spin_unlock_irqrestore(&irq_descp(vector)->lock, flags); return err; } /* * If the vector is shared and already unmasked for Loading drivers/acpi/Kconfig +3 −5 Original line number Diff line number Diff line Loading @@ -154,12 +154,10 @@ config ACPI_PROCESSOR support it. config ACPI_HOTPLUG_CPU bool "Processor Hotplug (EXPERIMENTAL)" depends on ACPI_PROCESSOR && HOTPLUG_CPU && EXPERIMENTAL bool depends on ACPI_PROCESSOR && HOTPLUG_CPU select ACPI_CONTAINER default n ---help--- Select this option if your platform support physical CPU hotplug. default y config ACPI_THERMAL tristate "Thermal Zone" Loading drivers/acpi/pci_irq.c +8 −1 Original line number Diff line number Diff line Loading @@ -424,6 +424,7 @@ acpi_pci_irq_enable ( int edge_level = ACPI_LEVEL_SENSITIVE; int active_high_low = ACPI_ACTIVE_LOW; char *link = NULL; int rc; ACPI_FUNCTION_TRACE("acpi_pci_irq_enable"); Loading Loading @@ -476,7 +477,13 @@ acpi_pci_irq_enable ( } } dev->irq = acpi_register_gsi(irq, edge_level, active_high_low); rc = acpi_register_gsi(irq, edge_level, active_high_low); if (rc < 0) { printk(KERN_WARNING PREFIX "PCI Interrupt %s[%c]: failed " "to register GSI\n", pci_name(dev), ('A' + pin)); return_VALUE(rc); } dev->irq = rc; printk(KERN_INFO PREFIX "PCI Interrupt %s[%c] -> ", pci_name(dev), 'A' + pin); Loading Loading
arch/i386/kernel/acpi/boot.c +5 −1 Original line number Diff line number Diff line Loading @@ -484,7 +484,11 @@ int acpi_gsi_to_irq(u32 gsi, unsigned int *irq) return 0; } unsigned int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low) /* * success: return IRQ number (>=0) * failure: return < 0 */ int acpi_register_gsi(u32 gsi, int edge_level, int active_high_low) { unsigned int irq; unsigned int plat_gsi = gsi; Loading
arch/ia64/kernel/acpi.c +5 −1 Original line number Diff line number Diff line Loading @@ -563,7 +563,11 @@ acpi_numa_arch_fixup (void) } #endif /* CONFIG_ACPI_NUMA */ unsigned int /* * success: return IRQ number (>=0) * failure: return < 0 */ int acpi_register_gsi (u32 gsi, int edge_level, int active_high_low) { if (has_8259 && gsi < 16) Loading
arch/ia64/kernel/iosapic.c +15 −9 Original line number Diff line number Diff line Loading @@ -561,7 +561,7 @@ static inline int vector_is_shared (int vector) return (iosapic_intr_info[vector].count > 1); } static void static int register_intr (unsigned int gsi, int vector, unsigned char delivery, unsigned long polarity, unsigned long trigger) { Loading @@ -576,7 +576,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, index = find_iosapic(gsi); if (index < 0) { printk(KERN_WARNING "%s: No IOSAPIC for GSI %u\n", __FUNCTION__, gsi); return; return -ENODEV; } iosapic_address = iosapic_lists[index].addr; Loading @@ -587,7 +587,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, rte = iosapic_alloc_rte(); if (!rte) { printk(KERN_WARNING "%s: cannot allocate memory\n", __FUNCTION__); return; return -ENOMEM; } rte_index = gsi - gsi_base; Loading @@ -603,7 +603,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, struct iosapic_intr_info *info = &iosapic_intr_info[vector]; if (info->trigger != trigger || info->polarity != polarity) { printk (KERN_WARNING "%s: cannot override the interrupt\n", __FUNCTION__); return; return -EINVAL; } } Loading @@ -623,6 +623,7 @@ register_intr (unsigned int gsi, int vector, unsigned char delivery, __FUNCTION__, vector, idesc->handler->typename, irq_type->typename); idesc->handler = irq_type; } return 0; } static unsigned int Loading Loading @@ -710,7 +711,7 @@ int iosapic_register_intr (unsigned int gsi, unsigned long polarity, unsigned long trigger) { int vector, mask = 1; int vector, mask = 1, err; unsigned int dest; unsigned long flags; struct iosapic_rte_info *rte; Loading @@ -734,11 +735,11 @@ iosapic_register_intr (unsigned int gsi, spin_unlock_irqrestore(&iosapic_lock, flags); /* If vector is running out, we try to find a sharable vector */ vector = assign_irq_vector(AUTO_ASSIGN); vector = assign_irq_vector_nopanic(AUTO_ASSIGN); if (vector < 0) { vector = iosapic_find_sharable_vector(trigger, polarity); if (vector < 0) panic("%s: out of interrupt vectors!\n", __FUNCTION__); Return -ENOSPC; } spin_lock_irqsave(&irq_descp(vector)->lock, flags); Loading @@ -753,8 +754,13 @@ iosapic_register_intr (unsigned int gsi, } dest = get_target_cpu(gsi, vector); register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, err = register_intr(gsi, vector, IOSAPIC_LOWEST_PRIORITY, polarity, trigger); if (err < 0) { spin_unlock(&iosapic_lock); spin_unlock_irqrestore(&irq_descp(vector)->lock, flags); return err; } /* * If the vector is shared and already unmasked for Loading
drivers/acpi/Kconfig +3 −5 Original line number Diff line number Diff line Loading @@ -154,12 +154,10 @@ config ACPI_PROCESSOR support it. config ACPI_HOTPLUG_CPU bool "Processor Hotplug (EXPERIMENTAL)" depends on ACPI_PROCESSOR && HOTPLUG_CPU && EXPERIMENTAL bool depends on ACPI_PROCESSOR && HOTPLUG_CPU select ACPI_CONTAINER default n ---help--- Select this option if your platform support physical CPU hotplug. default y config ACPI_THERMAL tristate "Thermal Zone" Loading
drivers/acpi/pci_irq.c +8 −1 Original line number Diff line number Diff line Loading @@ -424,6 +424,7 @@ acpi_pci_irq_enable ( int edge_level = ACPI_LEVEL_SENSITIVE; int active_high_low = ACPI_ACTIVE_LOW; char *link = NULL; int rc; ACPI_FUNCTION_TRACE("acpi_pci_irq_enable"); Loading Loading @@ -476,7 +477,13 @@ acpi_pci_irq_enable ( } } dev->irq = acpi_register_gsi(irq, edge_level, active_high_low); rc = acpi_register_gsi(irq, edge_level, active_high_low); if (rc < 0) { printk(KERN_WARNING PREFIX "PCI Interrupt %s[%c]: failed " "to register GSI\n", pci_name(dev), ('A' + pin)); return_VALUE(rc); } dev->irq = rc; printk(KERN_INFO PREFIX "PCI Interrupt %s[%c] -> ", pci_name(dev), 'A' + pin); Loading