···178178error:179179 if (nmi_watchdog == NMI_IO_APIC) {180180 if (!timer_through_8259)181181- legacy_pic->chip->mask(0);181181+ legacy_pic->mask(0);182182 on_each_cpu(__acpi_nmi_disable, NULL, 1);183183 }184184
+32-31
arch/x86/kernel/i8259.c
···2929 * plus some generic x86 specific things if generic specifics makes3030 * any sense at all.3131 */3232+static void init_8259A(int auto_eoi);32333334static int i8259A_auto_eoi;3435DEFINE_RAW_SPINLOCK(i8259A_lock);3535-static void mask_and_ack_8259A(unsigned int);3636-static void mask_8259A(void);3737-static void unmask_8259A(void);3838-static void disable_8259A_irq(unsigned int irq);3939-static void enable_8259A_irq(unsigned int irq);4040-static void init_8259A(int auto_eoi);4141-static int i8259A_irq_pending(unsigned int irq);4242-4343-struct irq_chip i8259A_chip = {4444- .name = "XT-PIC",4545- .mask = disable_8259A_irq,4646- .disable = disable_8259A_irq,4747- .unmask = enable_8259A_irq,4848- .mask_ack = mask_and_ack_8259A,4949-};50365137/*5238 * 8259A PIC functions to handle ISA devices:···5468 */5569unsigned long io_apic_irqs;56705757-static void disable_8259A_irq(unsigned int irq)7171+static void mask_8259A_irq(unsigned int irq)5872{5973 unsigned int mask = 1 << irq;6074 unsigned long flags;···6882 raw_spin_unlock_irqrestore(&i8259A_lock, flags);6983}70847171-static void enable_8259A_irq(unsigned int irq)8585+static void disable_8259A_irq(struct irq_data *data)8686+{8787+ mask_8259A_irq(data->irq);8888+}8989+9090+static void unmask_8259A_irq(unsigned int irq)7291{7392 unsigned int mask = ~(1 << irq);7493 unsigned long flags;···8594 else8695 outb(cached_master_mask, PIC_MASTER_IMR);8796 raw_spin_unlock_irqrestore(&i8259A_lock, flags);9797+}9898+9999+static void enable_8259A_irq(struct irq_data *data)100100+{101101+ unmask_8259A_irq(data->irq);88102}8910390104static int i8259A_irq_pending(unsigned int irq)···113117 disable_irq_nosync(irq);114118 io_apic_irqs &= ~(1<<irq);115119 set_irq_chip_and_handler_name(irq, &i8259A_chip, handle_level_irq,116116- "XT");120120+ i8259A_chip.name);117121 enable_irq(irq);118122}119123···146150 * first, _then_ send the EOI, and the order of EOI147151 * to the two 8259s is important!148152 */149149-static void mask_and_ack_8259A(unsigned int irq)153153+static void mask_and_ack_8259A(struct irq_data *data)150154{155155+ unsigned int irq = data->irq;151156 unsigned int irqmask = 1 << irq;152157 unsigned long flags;153158···219222 goto handle_real_irq;220223 }221224}225225+226226+struct irq_chip i8259A_chip = {227227+ .name = "XT-PIC",228228+ .irq_mask = disable_8259A_irq,229229+ .irq_disable = disable_8259A_irq,230230+ .irq_unmask = enable_8259A_irq,231231+ .irq_mask_ack = mask_and_ack_8259A,232232+};222233223234static char irq_trigger[2];224235/**···347342 * In AEOI mode we just have to mask the interrupt348343 * when acking.349344 */350350- i8259A_chip.mask_ack = disable_8259A_irq;345345+ i8259A_chip.irq_mask_ack = disable_8259A_irq;351346 else352352- i8259A_chip.mask_ack = mask_and_ack_8259A;347347+ i8259A_chip.irq_mask_ack = mask_and_ack_8259A;353348354349 udelay(100); /* wait for 8259A to initialize */355350···368363static void legacy_pic_noop(void) { };369364static void legacy_pic_uint_noop(unsigned int unused) { };370365static void legacy_pic_int_noop(int unused) { };371371-372372-static struct irq_chip dummy_pic_chip = {373373- .name = "dummy pic",374374- .mask = legacy_pic_uint_noop,375375- .unmask = legacy_pic_uint_noop,376376- .disable = legacy_pic_uint_noop,377377- .mask_ack = legacy_pic_uint_noop,378378-};379366static int legacy_pic_irq_pending_noop(unsigned int irq)380367{381368 return 0;···375378376379struct legacy_pic null_legacy_pic = {377380 .nr_legacy_irqs = 0,378378- .chip = &dummy_pic_chip,381381+ .chip = &dummy_irq_chip,382382+ .mask = legacy_pic_uint_noop,383383+ .unmask = legacy_pic_uint_noop,379384 .mask_all = legacy_pic_noop,380385 .restore_mask = legacy_pic_noop,381386 .init = legacy_pic_int_noop,···388389struct legacy_pic default_legacy_pic = {389390 .nr_legacy_irqs = NR_IRQS_LEGACY,390391 .chip = &i8259A_chip,391391- .mask_all = mask_8259A,392392+ .mask = mask_8259A_irq,393393+ .unmask = unmask_8259A_irq,394394+ .mask_all = mask_8259A,392395 .restore_mask = unmask_8259A,393396 .init = init_8259A,394397 .irq_pending = i8259A_irq_pending,
+2-2
arch/x86/kernel/smpboot.c
···324324 check_tsc_sync_target();325325326326 if (nmi_watchdog == NMI_IO_APIC) {327327- legacy_pic->chip->mask(0);327327+ legacy_pic->mask(0);328328 enable_NMI_through_LVT0();329329- legacy_pic->chip->unmask(0);329329+ legacy_pic->unmask(0);330330 }331331332332 /* This must be done before setting cpu_online_mask */