aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/irq.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 4368b5ed5604..a24d37d4cf51 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -586,14 +586,14 @@ struct irq_host *irq_alloc_host(struct device_node *of_node,
586 irq_map[i].host = host; 586 irq_map[i].host = host;
587 smp_wmb(); 587 smp_wmb();
588 588
589 /* Clear norequest flags */
590 irq_clear_status_flags(i, IRQ_NOREQUEST);
591
592 /* Legacy flags are left to default at this point, 589 /* Legacy flags are left to default at this point,
593 * one can then use irq_create_mapping() to 590 * one can then use irq_create_mapping() to
594 * explicitly change them 591 * explicitly change them
595 */ 592 */
596 ops->map(host, i, i); 593 ops->map(host, i, i);
594
595 /* Clear norequest flags */
596 irq_clear_status_flags(i, IRQ_NOREQUEST);
597 } 597 }
598 break; 598 break;
599 case IRQ_HOST_MAP_LINEAR: 599 case IRQ_HOST_MAP_LINEAR:
@@ -664,8 +664,6 @@ static int irq_setup_virq(struct irq_host *host, unsigned int virq,
664 goto error; 664 goto error;
665 } 665 }
666 666
667 irq_clear_status_flags(virq, IRQ_NOREQUEST);
668
669 /* map it */ 667 /* map it */
670 smp_wmb(); 668 smp_wmb();
671 irq_map[virq].hwirq = hwirq; 669 irq_map[virq].hwirq = hwirq;
@@ -676,6 +674,8 @@ static int irq_setup_virq(struct irq_host *host, unsigned int virq,
676 goto errdesc; 674 goto errdesc;
677 } 675 }
678 676
677 irq_clear_status_flags(virq, IRQ_NOREQUEST);
678
679 return 0; 679 return 0;
680 680
681errdesc: 681errdesc:
@@ -819,6 +819,8 @@ void irq_dispose_mapping(unsigned int virq)
819 if (host->revmap_type == IRQ_HOST_MAP_LEGACY) 819 if (host->revmap_type == IRQ_HOST_MAP_LEGACY)
820 return; 820 return;
821 821
822 irq_set_status_flags(virq, IRQ_NOREQUEST);
823
822 /* remove chip and handler */ 824 /* remove chip and handler */
823 irq_set_chip_and_handler(virq, NULL, NULL); 825 irq_set_chip_and_handler(virq, NULL, NULL);
824 826
@@ -848,8 +850,6 @@ void irq_dispose_mapping(unsigned int virq)
848 smp_mb(); 850 smp_mb();
849 irq_map[virq].hwirq = host->inval_irq; 851 irq_map[virq].hwirq = host->inval_irq;
850 852
851 irq_set_status_flags(virq, IRQ_NOREQUEST);
852
853 irq_free_descs(virq, 1); 853 irq_free_descs(virq, 1);
854 /* Free it */ 854 /* Free it */
855 irq_free_virt(virq, 1); 855 irq_free_virt(virq, 1);