summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@sunset.davemloft.net>2006-02-14 07:37:32 +0100
committerDavid S. Miller <davem@sunset.davemloft.net>2006-03-20 10:12:50 +0100
commit4bf447d6f7c2357dec8bdc24ce0fcffd71cc29c0 (patch)
treec74478f8d6c66d90629446444d1cfb55376934eb
parent[SPARC64]: Use TRAP_LOAD_IRQ_WORK() in sun4v device mondo handler. (diff)
downloadlinux-4bf447d6f7c2357dec8bdc24ce0fcffd71cc29c0.tar.xz
linux-4bf447d6f7c2357dec8bdc24ce0fcffd71cc29c0.zip
[SPARC64]: Pass correct ino to sun4v_intr_*().
Signed-off-by: David S. Miller <davem@davemloft.net>
-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)
preempt_disable();
if (tlb_type == hypervisor) {
+ unsigned int ino = __irq_ino(irq);
int cpu = hard_smp_processor_id();
- sun4v_intr_settarget(irq, cpu);
- sun4v_intr_setenabled(irq, HV_INTR_ENABLED);
+ sun4v_intr_settarget(ino, cpu);
+ sun4v_intr_setenabled(ino, HV_INTR_ENABLED);
} else {
if (tlb_type == cheetah || tlb_type == cheetah_plus) {
unsigned long ver;
@@ -214,7 +215,9 @@ void disable_irq(unsigned int irq)
imap = bucket->imap;
if (imap != 0UL) {
if (tlb_type == hypervisor) {
- sun4v_intr_setenabled(irq, HV_INTR_DISABLED);
+ unsigned int ino = __irq_ino(irq);
+
+ sun4v_intr_setenabled(ino, HV_INTR_DISABLED);
} else {
u32 tmp;
@@ -643,9 +646,9 @@ static void process_bucket(int irq, struct ino_bucket *bp, struct pt_regs *regs)
}
if (bp->pil != 0) {
if (tlb_type == hypervisor) {
- unsigned int irq = __irq(bp);
+ unsigned int ino = __irq_ino(bp);
- sun4v_intr_setstate(irq, HV_INTR_STATE_IDLE);
+ sun4v_intr_setstate(ino, HV_INTR_STATE_IDLE);
} else {
upa_writel(ICLR_IDLE, bp->iclr);
/* Test and add entropy */
@@ -791,10 +794,10 @@ static int retarget_one_irq(struct irqaction *p, int goal_cpu)
}
if (tlb_type == hypervisor) {
- unsigned int irq = __irq(bucket);
+ unsigned int ino = __irq_ino(bucket);
- sun4v_intr_settarget(irq, goal_cpu);
- sun4v_intr_setenabled(irq, HV_INTR_ENABLED);
+ sun4v_intr_settarget(ino, goal_cpu);
+ sun4v_intr_setenabled(ino, HV_INTR_ENABLED);
} else {
unsigned int tid;