diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-02-14 01:37:32 -0500 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-03-20 04:12:50 -0500 |
commit | 4bf447d6f7c2357dec8bdc24ce0fcffd71cc29c0 (patch) | |
tree | c74478f8d6c66d90629446444d1cfb55376934eb | |
parent | a615fea48be4eada94986d63e3e8ee5563121649 (diff) |
[SPARC64]: Pass correct ino to sun4v_intr_*().
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | arch/sparc64/kernel/irq.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index a55177e0643b..c57b1708ae8c 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -152,10 +152,11 @@ void enable_irq(unsigned int irq) | |||
152 | preempt_disable(); | 152 | preempt_disable(); |
153 | 153 | ||
154 | if (tlb_type == hypervisor) { | 154 | if (tlb_type == hypervisor) { |
155 | unsigned int ino = __irq_ino(irq); | ||
155 | int cpu = hard_smp_processor_id(); | 156 | int cpu = hard_smp_processor_id(); |
156 | 157 | ||
157 | sun4v_intr_settarget(irq, cpu); | 158 | sun4v_intr_settarget(ino, cpu); |
158 | sun4v_intr_setenabled(irq, HV_INTR_ENABLED); | 159 | sun4v_intr_setenabled(ino, HV_INTR_ENABLED); |
159 | } else { | 160 | } else { |
160 | if (tlb_type == cheetah || tlb_type == cheetah_plus) { | 161 | if (tlb_type == cheetah || tlb_type == cheetah_plus) { |
161 | unsigned long ver; | 162 | unsigned long ver; |
@@ -214,7 +215,9 @@ void disable_irq(unsigned int irq) | |||
214 | imap = bucket->imap; | 215 | imap = bucket->imap; |
215 | if (imap != 0UL) { | 216 | if (imap != 0UL) { |
216 | if (tlb_type == hypervisor) { | 217 | if (tlb_type == hypervisor) { |
217 | sun4v_intr_setenabled(irq, HV_INTR_DISABLED); | 218 | unsigned int ino = __irq_ino(irq); |
219 | |||
220 | sun4v_intr_setenabled(ino, HV_INTR_DISABLED); | ||
218 | } else { | 221 | } else { |
219 | u32 tmp; | 222 | u32 tmp; |
220 | 223 | ||
@@ -643,9 +646,9 @@ static void process_bucket(int irq, struct ino_bucket *bp, struct pt_regs *regs) | |||
643 | } | 646 | } |
644 | if (bp->pil != 0) { | 647 | if (bp->pil != 0) { |
645 | if (tlb_type == hypervisor) { | 648 | if (tlb_type == hypervisor) { |
646 | unsigned int irq = __irq(bp); | 649 | unsigned int ino = __irq_ino(bp); |
647 | 650 | ||
648 | sun4v_intr_setstate(irq, HV_INTR_STATE_IDLE); | 651 | sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE); |
649 | } else { | 652 | } else { |
650 | upa_writel(ICLR_IDLE, bp->iclr); | 653 | upa_writel(ICLR_IDLE, bp->iclr); |
651 | /* Test and add entropy */ | 654 | /* Test and add entropy */ |
@@ -791,10 +794,10 @@ static int retarget_one_irq(struct irqaction *p, int goal_cpu) | |||
791 | } | 794 | } |
792 | 795 | ||
793 | if (tlb_type == hypervisor) { | 796 | if (tlb_type == hypervisor) { |
794 | unsigned int irq = __irq(bucket); | 797 | unsigned int ino = __irq_ino(bucket); |
795 | 798 | ||
796 | sun4v_intr_settarget(irq, goal_cpu); | 799 | sun4v_intr_settarget(ino, goal_cpu); |
797 | sun4v_intr_setenabled(irq, HV_INTR_ENABLED); | 800 | sun4v_intr_setenabled(ino, HV_INTR_ENABLED); |
798 | } else { | 801 | } else { |
799 | unsigned int tid; | 802 | unsigned int tid; |
800 | 803 | ||