diff options
| -rw-r--r-- | arch/sparc64/kernel/irq.c | 24 | ||||
| -rw-r--r-- | include/asm-sparc64/hw_irq.h | 2 |
2 files changed, 4 insertions, 22 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index d64b1ea848de..c3d068c7a412 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
| @@ -372,14 +372,14 @@ static void run_pre_handler(unsigned int virt_irq) | |||
| 372 | } | 372 | } |
| 373 | } | 373 | } |
| 374 | 374 | ||
| 375 | static struct hw_interrupt_type sun4u_irq = { | 375 | static struct irq_chip sun4u_irq = { |
| 376 | .typename = "sun4u", | 376 | .typename = "sun4u", |
| 377 | .enable = sun4u_irq_enable, | 377 | .enable = sun4u_irq_enable, |
| 378 | .disable = sun4u_irq_disable, | 378 | .disable = sun4u_irq_disable, |
| 379 | .end = sun4u_irq_end, | 379 | .end = sun4u_irq_end, |
| 380 | }; | 380 | }; |
| 381 | 381 | ||
| 382 | static struct hw_interrupt_type sun4u_irq_ack = { | 382 | static struct irq_chip sun4u_irq_ack = { |
| 383 | .typename = "sun4u+ack", | 383 | .typename = "sun4u+ack", |
| 384 | .enable = sun4u_irq_enable, | 384 | .enable = sun4u_irq_enable, |
| 385 | .disable = sun4u_irq_disable, | 385 | .disable = sun4u_irq_disable, |
| @@ -387,14 +387,14 @@ static struct hw_interrupt_type sun4u_irq_ack = { | |||
| 387 | .end = sun4u_irq_end, | 387 | .end = sun4u_irq_end, |
| 388 | }; | 388 | }; |
| 389 | 389 | ||
| 390 | static struct hw_interrupt_type sun4v_irq = { | 390 | static struct irq_chip sun4v_irq = { |
| 391 | .typename = "sun4v", | 391 | .typename = "sun4v", |
| 392 | .enable = sun4v_irq_enable, | 392 | .enable = sun4v_irq_enable, |
| 393 | .disable = sun4v_irq_disable, | 393 | .disable = sun4v_irq_disable, |
| 394 | .end = sun4v_irq_end, | 394 | .end = sun4v_irq_end, |
| 395 | }; | 395 | }; |
| 396 | 396 | ||
| 397 | static struct hw_interrupt_type sun4v_irq_ack = { | 397 | static struct irq_chip sun4v_irq_ack = { |
| 398 | .typename = "sun4v+ack", | 398 | .typename = "sun4v+ack", |
| 399 | .enable = sun4v_irq_enable, | 399 | .enable = sun4v_irq_enable, |
| 400 | .disable = sun4v_irq_disable, | 400 | .disable = sun4v_irq_disable, |
| @@ -493,22 +493,6 @@ out: | |||
| 493 | return bucket->virt_irq; | 493 | return bucket->virt_irq; |
| 494 | } | 494 | } |
| 495 | 495 | ||
| 496 | void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq) | ||
| 497 | { | ||
| 498 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | ||
| 499 | unsigned long pstate; | ||
| 500 | unsigned int *ent; | ||
| 501 | |||
| 502 | __asm__ __volatile__("rdpr %%pstate, %0" : "=r" (pstate)); | ||
| 503 | __asm__ __volatile__("wrpr %0, %1, %%pstate" | ||
| 504 | : : "r" (pstate), "i" (PSTATE_IE)); | ||
| 505 | ent = irq_work(smp_processor_id()); | ||
| 506 | bucket->irq_chain = *ent; | ||
| 507 | *ent = __irq(bucket); | ||
| 508 | set_softint(1 << PIL_DEVICE_IRQ); | ||
| 509 | __asm__ __volatile__("wrpr %0, 0x0, %%pstate" : : "r" (pstate)); | ||
| 510 | } | ||
| 511 | |||
| 512 | void ack_bad_irq(unsigned int virt_irq) | 496 | void ack_bad_irq(unsigned int virt_irq) |
| 513 | { | 497 | { |
| 514 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); | 498 | struct ino_bucket *bucket = virt_irq_to_bucket(virt_irq); |
diff --git a/include/asm-sparc64/hw_irq.h b/include/asm-sparc64/hw_irq.h index 599b3b073450..8e44a8360829 100644 --- a/include/asm-sparc64/hw_irq.h +++ b/include/asm-sparc64/hw_irq.h | |||
| @@ -1,6 +1,4 @@ | |||
| 1 | #ifndef __ASM_SPARC64_HW_IRQ_H | 1 | #ifndef __ASM_SPARC64_HW_IRQ_H |
| 2 | #define __ASM_SPARC64_HW_IRQ_H | 2 | #define __ASM_SPARC64_HW_IRQ_H |
| 3 | 3 | ||
| 4 | extern void hw_resend_irq(struct hw_interrupt_type *handler, unsigned int virt_irq); | ||
| 5 | |||
| 6 | #endif | 4 | #endif |
