Loading arch/x86/kernel/irqinit_64.c +28 −15 Original line number Diff line number Diff line Loading @@ -164,22 +164,8 @@ static void __init init_ISA_irqs (void) void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ"))); void __init native_init_IRQ(void) void __init smp_intr_init(void) { int i; init_ISA_irqs(); /* * Cover the whole vector space, no vector can escape * us. (some of these will be overridden and become * 'special' SMP interrupts) */ for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) { int vector = FIRST_EXTERNAL_VECTOR + i; if (vector != IA32_SYSCALL_VECTOR) set_intr_gate(vector, interrupt[i]); } #ifdef CONFIG_SMP /* * The reschedule interrupt is a CPU-to-CPU reschedule-helper Loading Loading @@ -207,6 +193,14 @@ void __init native_init_IRQ(void) /* Low priority IPI to cleanup after moving an irq */ set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt); #endif } void __init apic_intr_init(void) { #ifdef CONFIG_SMP smp_intr_init(); #endif alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); Loading @@ -216,6 +210,25 @@ void __init native_init_IRQ(void) /* IPI vectors for APIC spurious and error interrupts */ alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt); alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt); } void __init native_init_IRQ(void) { int i; init_ISA_irqs(); /* * Cover the whole vector space, no vector can escape * us. (some of these will be overridden and become * 'special' SMP interrupts) */ for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) { int vector = FIRST_EXTERNAL_VECTOR + i; if (vector != IA32_SYSCALL_VECTOR) set_intr_gate(vector, interrupt[i]); } apic_intr_init(); if (!acpi_ioapic) setup_irq(2, &irq2); Loading Loading
arch/x86/kernel/irqinit_64.c +28 −15 Original line number Diff line number Diff line Loading @@ -164,22 +164,8 @@ static void __init init_ISA_irqs (void) void init_IRQ(void) __attribute__((weak, alias("native_init_IRQ"))); void __init native_init_IRQ(void) void __init smp_intr_init(void) { int i; init_ISA_irqs(); /* * Cover the whole vector space, no vector can escape * us. (some of these will be overridden and become * 'special' SMP interrupts) */ for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) { int vector = FIRST_EXTERNAL_VECTOR + i; if (vector != IA32_SYSCALL_VECTOR) set_intr_gate(vector, interrupt[i]); } #ifdef CONFIG_SMP /* * The reschedule interrupt is a CPU-to-CPU reschedule-helper Loading Loading @@ -207,6 +193,14 @@ void __init native_init_IRQ(void) /* Low priority IPI to cleanup after moving an irq */ set_intr_gate(IRQ_MOVE_CLEANUP_VECTOR, irq_move_cleanup_interrupt); #endif } void __init apic_intr_init(void) { #ifdef CONFIG_SMP smp_intr_init(); #endif alloc_intr_gate(THERMAL_APIC_VECTOR, thermal_interrupt); alloc_intr_gate(THRESHOLD_APIC_VECTOR, threshold_interrupt); Loading @@ -216,6 +210,25 @@ void __init native_init_IRQ(void) /* IPI vectors for APIC spurious and error interrupts */ alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt); alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt); } void __init native_init_IRQ(void) { int i; init_ISA_irqs(); /* * Cover the whole vector space, no vector can escape * us. (some of these will be overridden and become * 'special' SMP interrupts) */ for (i = 0; i < (NR_VECTORS - FIRST_EXTERNAL_VECTOR); i++) { int vector = FIRST_EXTERNAL_VECTOR + i; if (vector != IA32_SYSCALL_VECTOR) set_intr_gate(vector, interrupt[i]); } apic_intr_init(); if (!acpi_ioapic) setup_irq(2, &irq2); Loading