diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2010-02-17 21:23:14 -0500 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2010-02-18 22:52:31 -0500 |
| commit | a9e8bf21cd0f5a5a8ebe63fa356a8f100b8a0955 (patch) | |
| tree | 9b3b5514252027698fb063d46e2e142a646ab611 /arch | |
| parent | 6b9c9b8a66f7696ce392d34f90d4d6aa7045f51d (diff) | |
powerpc: Convert ipic_lock to raw_spinlock
ipic_lock needs to be a real spinlock in RT. Convert it to
raw_spinlock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/powerpc/sysdev/ipic.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/arch/powerpc/sysdev/ipic.c b/arch/powerpc/sysdev/ipic.c index 16486716970a..d7b9b9c69287 100644 --- a/arch/powerpc/sysdev/ipic.c +++ b/arch/powerpc/sysdev/ipic.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | static struct ipic * primary_ipic; | 33 | static struct ipic * primary_ipic; |
| 34 | static struct irq_chip ipic_level_irq_chip, ipic_edge_irq_chip; | 34 | static struct irq_chip ipic_level_irq_chip, ipic_edge_irq_chip; |
| 35 | static DEFINE_SPINLOCK(ipic_lock); | 35 | static DEFINE_RAW_SPINLOCK(ipic_lock); |
| 36 | 36 | ||
| 37 | static struct ipic_info ipic_info[] = { | 37 | static struct ipic_info ipic_info[] = { |
| 38 | [1] = { | 38 | [1] = { |
| @@ -530,13 +530,13 @@ static void ipic_unmask_irq(unsigned int virq) | |||
| 530 | unsigned long flags; | 530 | unsigned long flags; |
| 531 | u32 temp; | 531 | u32 temp; |
| 532 | 532 | ||
| 533 | spin_lock_irqsave(&ipic_lock, flags); | 533 | raw_spin_lock_irqsave(&ipic_lock, flags); |
| 534 | 534 | ||
| 535 | temp = ipic_read(ipic->regs, ipic_info[src].mask); | 535 | temp = ipic_read(ipic->regs, ipic_info[src].mask); |
| 536 | temp |= (1 << (31 - ipic_info[src].bit)); | 536 | temp |= (1 << (31 - ipic_info[src].bit)); |
| 537 | ipic_write(ipic->regs, ipic_info[src].mask, temp); | 537 | ipic_write(ipic->regs, ipic_info[src].mask, temp); |
| 538 | 538 | ||
| 539 | spin_unlock_irqrestore(&ipic_lock, flags); | 539 | raw_spin_unlock_irqrestore(&ipic_lock, flags); |
| 540 | } | 540 | } |
| 541 | 541 | ||
| 542 | static void ipic_mask_irq(unsigned int virq) | 542 | static void ipic_mask_irq(unsigned int virq) |
| @@ -546,7 +546,7 @@ static void ipic_mask_irq(unsigned int virq) | |||
| 546 | unsigned long flags; | 546 | unsigned long flags; |
| 547 | u32 temp; | 547 | u32 temp; |
| 548 | 548 | ||
| 549 | spin_lock_irqsave(&ipic_lock, flags); | 549 | raw_spin_lock_irqsave(&ipic_lock, flags); |
| 550 | 550 | ||
| 551 | temp = ipic_read(ipic->regs, ipic_info[src].mask); | 551 | temp = ipic_read(ipic->regs, ipic_info[src].mask); |
| 552 | temp &= ~(1 << (31 - ipic_info[src].bit)); | 552 | temp &= ~(1 << (31 - ipic_info[src].bit)); |
| @@ -556,7 +556,7 @@ static void ipic_mask_irq(unsigned int virq) | |||
| 556 | * for nearly all cases. */ | 556 | * for nearly all cases. */ |
| 557 | mb(); | 557 | mb(); |
| 558 | 558 | ||
| 559 | spin_unlock_irqrestore(&ipic_lock, flags); | 559 | raw_spin_unlock_irqrestore(&ipic_lock, flags); |
| 560 | } | 560 | } |
| 561 | 561 | ||
| 562 | static void ipic_ack_irq(unsigned int virq) | 562 | static void ipic_ack_irq(unsigned int virq) |
| @@ -566,7 +566,7 @@ static void ipic_ack_irq(unsigned int virq) | |||
| 566 | unsigned long flags; | 566 | unsigned long flags; |
| 567 | u32 temp; | 567 | u32 temp; |
| 568 | 568 | ||
| 569 | spin_lock_irqsave(&ipic_lock, flags); | 569 | raw_spin_lock_irqsave(&ipic_lock, flags); |
| 570 | 570 | ||
| 571 | temp = 1 << (31 - ipic_info[src].bit); | 571 | temp = 1 << (31 - ipic_info[src].bit); |
| 572 | ipic_write(ipic->regs, ipic_info[src].ack, temp); | 572 | ipic_write(ipic->regs, ipic_info[src].ack, temp); |
| @@ -575,7 +575,7 @@ static void ipic_ack_irq(unsigned int virq) | |||
| 575 | * for nearly all cases. */ | 575 | * for nearly all cases. */ |
| 576 | mb(); | 576 | mb(); |
| 577 | 577 | ||
| 578 | spin_unlock_irqrestore(&ipic_lock, flags); | 578 | raw_spin_unlock_irqrestore(&ipic_lock, flags); |
| 579 | } | 579 | } |
| 580 | 580 | ||
| 581 | static void ipic_mask_irq_and_ack(unsigned int virq) | 581 | static void ipic_mask_irq_and_ack(unsigned int virq) |
| @@ -585,7 +585,7 @@ static void ipic_mask_irq_and_ack(unsigned int virq) | |||
| 585 | unsigned long flags; | 585 | unsigned long flags; |
| 586 | u32 temp; | 586 | u32 temp; |
| 587 | 587 | ||
| 588 | spin_lock_irqsave(&ipic_lock, flags); | 588 | raw_spin_lock_irqsave(&ipic_lock, flags); |
| 589 | 589 | ||
| 590 | temp = ipic_read(ipic->regs, ipic_info[src].mask); | 590 | temp = ipic_read(ipic->regs, ipic_info[src].mask); |
| 591 | temp &= ~(1 << (31 - ipic_info[src].bit)); | 591 | temp &= ~(1 << (31 - ipic_info[src].bit)); |
| @@ -598,7 +598,7 @@ static void ipic_mask_irq_and_ack(unsigned int virq) | |||
| 598 | * for nearly all cases. */ | 598 | * for nearly all cases. */ |
| 599 | mb(); | 599 | mb(); |
| 600 | 600 | ||
| 601 | spin_unlock_irqrestore(&ipic_lock, flags); | 601 | raw_spin_unlock_irqrestore(&ipic_lock, flags); |
| 602 | } | 602 | } |
| 603 | 603 | ||
| 604 | static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type) | 604 | static int ipic_set_irq_type(unsigned int virq, unsigned int flow_type) |
