aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-14 01:37:32 -0500
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 04:12:50 -0500
commit4bf447d6f7c2357dec8bdc24ce0fcffd71cc29c0 (patch)
treec74478f8d6c66d90629446444d1cfb55376934eb /arch
parenta615fea48be4eada94986d63e3e8ee5563121649 (diff)
[SPARC64]: Pass correct ino to sun4v_intr_*().
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch')
-rw-r--r--arch/sparc64/kernel/irq.c19
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