diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-07-25 12:35:11 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2010-02-16 12:21:32 -0500 |
| commit | 5619c28061ff9d2559a93eaba492935530f2a513 (patch) | |
| tree | eb5ac1cd829f0bc694cd1005ca2a9119bd7d6d6f | |
| parent | ced5b697a76d325e7a7ac7d382dbbb632c765093 (diff) | |
x86: Convert i8259_lock to raw_spinlock
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
| -rw-r--r-- | arch/x86/include/asm/i8259.h | 2 | ||||
| -rw-r--r-- | arch/x86/kernel/apic/io_apic.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/i8259.c | 30 | ||||
| -rw-r--r-- | arch/x86/kernel/time.c | 4 | ||||
| -rw-r--r-- | arch/x86/kernel/visws_quirks.c | 6 |
5 files changed, 23 insertions, 23 deletions
diff --git a/arch/x86/include/asm/i8259.h b/arch/x86/include/asm/i8259.h index 58d7091eeb1f..7ec65b18085d 100644 --- a/arch/x86/include/asm/i8259.h +++ b/arch/x86/include/asm/i8259.h | |||
| @@ -24,7 +24,7 @@ extern unsigned int cached_irq_mask; | |||
| 24 | #define SLAVE_ICW4_DEFAULT 0x01 | 24 | #define SLAVE_ICW4_DEFAULT 0x01 |
| 25 | #define PIC_ICW4_AEOI 2 | 25 | #define PIC_ICW4_AEOI 2 |
| 26 | 26 | ||
| 27 | extern spinlock_t i8259A_lock; | 27 | extern raw_spinlock_t i8259A_lock; |
| 28 | 28 | ||
| 29 | extern void init_8259A(int auto_eoi); | 29 | extern void init_8259A(int auto_eoi); |
| 30 | extern void enable_8259A_irq(unsigned int irq); | 30 | extern void enable_8259A_irq(unsigned int irq); |
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index c86591b906fa..f5e40339622b 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c | |||
| @@ -1830,7 +1830,7 @@ __apicdebuginit(void) print_PIC(void) | |||
| 1830 | 1830 | ||
| 1831 | printk(KERN_DEBUG "\nprinting PIC contents\n"); | 1831 | printk(KERN_DEBUG "\nprinting PIC contents\n"); |
| 1832 | 1832 | ||
| 1833 | spin_lock_irqsave(&i8259A_lock, flags); | 1833 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 1834 | 1834 | ||
| 1835 | v = inb(0xa1) << 8 | inb(0x21); | 1835 | v = inb(0xa1) << 8 | inb(0x21); |
| 1836 | printk(KERN_DEBUG "... PIC IMR: %04x\n", v); | 1836 | printk(KERN_DEBUG "... PIC IMR: %04x\n", v); |
| @@ -1844,7 +1844,7 @@ __apicdebuginit(void) print_PIC(void) | |||
| 1844 | outb(0x0a,0xa0); | 1844 | outb(0x0a,0xa0); |
| 1845 | outb(0x0a,0x20); | 1845 | outb(0x0a,0x20); |
| 1846 | 1846 | ||
| 1847 | spin_unlock_irqrestore(&i8259A_lock, flags); | 1847 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 1848 | 1848 | ||
| 1849 | printk(KERN_DEBUG "... PIC ISR: %04x\n", v); | 1849 | printk(KERN_DEBUG "... PIC ISR: %04x\n", v); |
| 1850 | 1850 | ||
diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c index df89102bef80..8c93a84bb627 100644 --- a/arch/x86/kernel/i8259.c +++ b/arch/x86/kernel/i8259.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | */ | 32 | */ |
| 33 | 33 | ||
| 34 | static int i8259A_auto_eoi; | 34 | static int i8259A_auto_eoi; |
| 35 | DEFINE_SPINLOCK(i8259A_lock); | 35 | DEFINE_RAW_SPINLOCK(i8259A_lock); |
| 36 | static void mask_and_ack_8259A(unsigned int); | 36 | static void mask_and_ack_8259A(unsigned int); |
| 37 | 37 | ||
| 38 | struct irq_chip i8259A_chip = { | 38 | struct irq_chip i8259A_chip = { |
| @@ -68,13 +68,13 @@ void disable_8259A_irq(unsigned int irq) | |||
| 68 | unsigned int mask = 1 << irq; | 68 | unsigned int mask = 1 << irq; |
| 69 | unsigned long flags; | 69 | unsigned long flags; |
| 70 | 70 | ||
| 71 | spin_lock_irqsave(&i8259A_lock, flags); | 71 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 72 | cached_irq_mask |= mask; | 72 | cached_irq_mask |= mask; |
| 73 | if (irq & 8) | 73 | if (irq & 8) |
| 74 | outb(cached_slave_mask, PIC_SLAVE_IMR); | 74 | outb(cached_slave_mask, PIC_SLAVE_IMR); |
| 75 | else | 75 | else |
| 76 | outb(cached_master_mask, PIC_MASTER_IMR); | 76 | outb(cached_master_mask, PIC_MASTER_IMR); |
| 77 | spin_unlock_irqrestore(&i8259A_lock, flags); | 77 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | void enable_8259A_irq(unsigned int irq) | 80 | void enable_8259A_irq(unsigned int irq) |
| @@ -82,13 +82,13 @@ void enable_8259A_irq(unsigned int irq) | |||
| 82 | unsigned int mask = ~(1 << irq); | 82 | unsigned int mask = ~(1 << irq); |
| 83 | unsigned long flags; | 83 | unsigned long flags; |
| 84 | 84 | ||
| 85 | spin_lock_irqsave(&i8259A_lock, flags); | 85 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 86 | cached_irq_mask &= mask; | 86 | cached_irq_mask &= mask; |
| 87 | if (irq & 8) | 87 | if (irq & 8) |
| 88 | outb(cached_slave_mask, PIC_SLAVE_IMR); | 88 | outb(cached_slave_mask, PIC_SLAVE_IMR); |
| 89 | else | 89 | else |
| 90 | outb(cached_master_mask, PIC_MASTER_IMR); | 90 | outb(cached_master_mask, PIC_MASTER_IMR); |
| 91 | spin_unlock_irqrestore(&i8259A_lock, flags); | 91 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | int i8259A_irq_pending(unsigned int irq) | 94 | int i8259A_irq_pending(unsigned int irq) |
| @@ -97,12 +97,12 @@ int i8259A_irq_pending(unsigned int irq) | |||
| 97 | unsigned long flags; | 97 | unsigned long flags; |
| 98 | int ret; | 98 | int ret; |
| 99 | 99 | ||
| 100 | spin_lock_irqsave(&i8259A_lock, flags); | 100 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 101 | if (irq < 8) | 101 | if (irq < 8) |
| 102 | ret = inb(PIC_MASTER_CMD) & mask; | 102 | ret = inb(PIC_MASTER_CMD) & mask; |
| 103 | else | 103 | else |
| 104 | ret = inb(PIC_SLAVE_CMD) & (mask >> 8); | 104 | ret = inb(PIC_SLAVE_CMD) & (mask >> 8); |
| 105 | spin_unlock_irqrestore(&i8259A_lock, flags); | 105 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 106 | 106 | ||
| 107 | return ret; | 107 | return ret; |
| 108 | } | 108 | } |
| @@ -150,7 +150,7 @@ static void mask_and_ack_8259A(unsigned int irq) | |||
| 150 | unsigned int irqmask = 1 << irq; | 150 | unsigned int irqmask = 1 << irq; |
| 151 | unsigned long flags; | 151 | unsigned long flags; |
| 152 | 152 | ||
| 153 | spin_lock_irqsave(&i8259A_lock, flags); | 153 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 154 | /* | 154 | /* |
| 155 | * Lightweight spurious IRQ detection. We do not want | 155 | * Lightweight spurious IRQ detection. We do not want |
| 156 | * to overdo spurious IRQ handling - it's usually a sign | 156 | * to overdo spurious IRQ handling - it's usually a sign |
| @@ -183,7 +183,7 @@ handle_real_irq: | |||
| 183 | outb(cached_master_mask, PIC_MASTER_IMR); | 183 | outb(cached_master_mask, PIC_MASTER_IMR); |
| 184 | outb(0x60+irq, PIC_MASTER_CMD); /* 'Specific EOI to master */ | 184 | outb(0x60+irq, PIC_MASTER_CMD); /* 'Specific EOI to master */ |
| 185 | } | 185 | } |
| 186 | spin_unlock_irqrestore(&i8259A_lock, flags); | 186 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 187 | return; | 187 | return; |
| 188 | 188 | ||
| 189 | spurious_8259A_irq: | 189 | spurious_8259A_irq: |
| @@ -285,24 +285,24 @@ void mask_8259A(void) | |||
| 285 | { | 285 | { |
| 286 | unsigned long flags; | 286 | unsigned long flags; |
| 287 | 287 | ||
| 288 | spin_lock_irqsave(&i8259A_lock, flags); | 288 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 289 | 289 | ||
| 290 | outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ | 290 | outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ |
| 291 | outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ | 291 | outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ |
| 292 | 292 | ||
| 293 | spin_unlock_irqrestore(&i8259A_lock, flags); | 293 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 294 | } | 294 | } |
| 295 | 295 | ||
| 296 | void unmask_8259A(void) | 296 | void unmask_8259A(void) |
| 297 | { | 297 | { |
| 298 | unsigned long flags; | 298 | unsigned long flags; |
| 299 | 299 | ||
| 300 | spin_lock_irqsave(&i8259A_lock, flags); | 300 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 301 | 301 | ||
| 302 | outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */ | 302 | outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */ |
| 303 | outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */ | 303 | outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */ |
| 304 | 304 | ||
| 305 | spin_unlock_irqrestore(&i8259A_lock, flags); | 305 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 306 | } | 306 | } |
| 307 | 307 | ||
| 308 | void init_8259A(int auto_eoi) | 308 | void init_8259A(int auto_eoi) |
| @@ -311,7 +311,7 @@ void init_8259A(int auto_eoi) | |||
| 311 | 311 | ||
| 312 | i8259A_auto_eoi = auto_eoi; | 312 | i8259A_auto_eoi = auto_eoi; |
| 313 | 313 | ||
| 314 | spin_lock_irqsave(&i8259A_lock, flags); | 314 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 315 | 315 | ||
| 316 | outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ | 316 | outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ |
| 317 | outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ | 317 | outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ |
| @@ -356,5 +356,5 @@ void init_8259A(int auto_eoi) | |||
| 356 | outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */ | 356 | outb(cached_master_mask, PIC_MASTER_IMR); /* restore master IRQ mask */ |
| 357 | outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */ | 357 | outb(cached_slave_mask, PIC_SLAVE_IMR); /* restore slave IRQ mask */ |
| 358 | 358 | ||
| 359 | spin_unlock_irqrestore(&i8259A_lock, flags); | 359 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 360 | } | 360 | } |
diff --git a/arch/x86/kernel/time.c b/arch/x86/kernel/time.c index be2573448ed9..fb5cc5e14cfa 100644 --- a/arch/x86/kernel/time.c +++ b/arch/x86/kernel/time.c | |||
| @@ -70,11 +70,11 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) | |||
| 70 | * manually to deassert NMI lines for the watchdog if run | 70 | * manually to deassert NMI lines for the watchdog if run |
| 71 | * on an 82489DX-based system. | 71 | * on an 82489DX-based system. |
| 72 | */ | 72 | */ |
| 73 | spin_lock(&i8259A_lock); | 73 | raw_spin_lock(&i8259A_lock); |
| 74 | outb(0x0c, PIC_MASTER_OCW3); | 74 | outb(0x0c, PIC_MASTER_OCW3); |
| 75 | /* Ack the IRQ; AEOI will end it automatically. */ | 75 | /* Ack the IRQ; AEOI will end it automatically. */ |
| 76 | inb(PIC_MASTER_POLL); | 76 | inb(PIC_MASTER_POLL); |
| 77 | spin_unlock(&i8259A_lock); | 77 | raw_spin_unlock(&i8259A_lock); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | global_clock_event->event_handler(global_clock_event); | 80 | global_clock_event->event_handler(global_clock_event); |
diff --git a/arch/x86/kernel/visws_quirks.c b/arch/x86/kernel/visws_quirks.c index 34a279a7471d..ab38ce0984fa 100644 --- a/arch/x86/kernel/visws_quirks.c +++ b/arch/x86/kernel/visws_quirks.c | |||
| @@ -559,7 +559,7 @@ static irqreturn_t piix4_master_intr(int irq, void *dev_id) | |||
| 559 | struct irq_desc *desc; | 559 | struct irq_desc *desc; |
| 560 | unsigned long flags; | 560 | unsigned long flags; |
| 561 | 561 | ||
| 562 | spin_lock_irqsave(&i8259A_lock, flags); | 562 | raw_spin_lock_irqsave(&i8259A_lock, flags); |
| 563 | 563 | ||
| 564 | /* Find out what's interrupting in the PIIX4 master 8259 */ | 564 | /* Find out what's interrupting in the PIIX4 master 8259 */ |
| 565 | outb(0x0c, 0x20); /* OCW3 Poll command */ | 565 | outb(0x0c, 0x20); /* OCW3 Poll command */ |
| @@ -596,7 +596,7 @@ static irqreturn_t piix4_master_intr(int irq, void *dev_id) | |||
| 596 | outb(0x60 + realirq, 0x20); | 596 | outb(0x60 + realirq, 0x20); |
| 597 | } | 597 | } |
| 598 | 598 | ||
| 599 | spin_unlock_irqrestore(&i8259A_lock, flags); | 599 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 600 | 600 | ||
| 601 | desc = irq_to_desc(realirq); | 601 | desc = irq_to_desc(realirq); |
| 602 | 602 | ||
| @@ -614,7 +614,7 @@ static irqreturn_t piix4_master_intr(int irq, void *dev_id) | |||
| 614 | return IRQ_HANDLED; | 614 | return IRQ_HANDLED; |
| 615 | 615 | ||
| 616 | out_unlock: | 616 | out_unlock: |
| 617 | spin_unlock_irqrestore(&i8259A_lock, flags); | 617 | raw_spin_unlock_irqrestore(&i8259A_lock, flags); |
| 618 | return IRQ_NONE; | 618 | return IRQ_NONE; |
| 619 | } | 619 | } |
| 620 | 620 | ||
