|
104 | 104 |
|
105 | 105 | #include "mca_drv.h"
|
106 | 106 | #include "entry.h"
|
| 107 | +#include "irq.h" |
107 | 108 |
|
108 | 109 | #if defined(IA64_MCA_DEBUG_INFO)
|
109 | 110 | # define IA64_MCA_DEBUG(fmt...) printk(fmt)
|
@@ -1766,36 +1767,6 @@ ia64_mca_disable_cpe_polling(char *str)
|
1766 | 1767 |
|
1767 | 1768 | __setup("disable_cpe_poll", ia64_mca_disable_cpe_polling);
|
1768 | 1769 |
|
1769 |
| -static struct irqaction cmci_irqaction = { |
1770 |
| - .handler = ia64_mca_cmc_int_handler, |
1771 |
| - .name = "cmc_hndlr" |
1772 |
| -}; |
1773 |
| - |
1774 |
| -static struct irqaction cmcp_irqaction = { |
1775 |
| - .handler = ia64_mca_cmc_int_caller, |
1776 |
| - .name = "cmc_poll" |
1777 |
| -}; |
1778 |
| - |
1779 |
| -static struct irqaction mca_rdzv_irqaction = { |
1780 |
| - .handler = ia64_mca_rendez_int_handler, |
1781 |
| - .name = "mca_rdzv" |
1782 |
| -}; |
1783 |
| - |
1784 |
| -static struct irqaction mca_wkup_irqaction = { |
1785 |
| - .handler = ia64_mca_wakeup_int_handler, |
1786 |
| - .name = "mca_wkup" |
1787 |
| -}; |
1788 |
| - |
1789 |
| -static struct irqaction mca_cpe_irqaction = { |
1790 |
| - .handler = ia64_mca_cpe_int_handler, |
1791 |
| - .name = "cpe_hndlr" |
1792 |
| -}; |
1793 |
| - |
1794 |
| -static struct irqaction mca_cpep_irqaction = { |
1795 |
| - .handler = ia64_mca_cpe_int_caller, |
1796 |
| - .name = "cpe_poll" |
1797 |
| -}; |
1798 |
| - |
1799 | 1770 | /* Minimal format of the MCA/INIT stacks. The pseudo processes that run on
|
1800 | 1771 | * these stacks can never sleep, they cannot return from the kernel to user
|
1801 | 1772 | * space, they do not appear in a normal ps listing. So there is no need to
|
@@ -2056,18 +2027,23 @@ void __init ia64_mca_irq_init(void)
|
2056 | 2027 | * Configure the CMCI/P vector and handler. Interrupts for CMC are
|
2057 | 2028 | * per-processor, so AP CMC interrupts are setup in smp_callin() (smpboot.c).
|
2058 | 2029 | */
|
2059 |
| - register_percpu_irq(IA64_CMC_VECTOR, &cmci_irqaction); |
2060 |
| - register_percpu_irq(IA64_CMCP_VECTOR, &cmcp_irqaction); |
| 2030 | + register_percpu_irq(IA64_CMC_VECTOR, ia64_mca_cmc_int_handler, 0, |
| 2031 | + "cmc_hndlr"); |
| 2032 | + register_percpu_irq(IA64_CMCP_VECTOR, ia64_mca_cmc_int_caller, 0, |
| 2033 | + "cmc_poll"); |
2061 | 2034 | ia64_mca_cmc_vector_setup(); /* Setup vector on BSP */
|
2062 | 2035 |
|
2063 | 2036 | /* Setup the MCA rendezvous interrupt vector */
|
2064 |
| - register_percpu_irq(IA64_MCA_RENDEZ_VECTOR, &mca_rdzv_irqaction); |
| 2037 | + register_percpu_irq(IA64_MCA_RENDEZ_VECTOR, ia64_mca_rendez_int_handler, |
| 2038 | + 0, "mca_rdzv"); |
2065 | 2039 |
|
2066 | 2040 | /* Setup the MCA wakeup interrupt vector */
|
2067 |
| - register_percpu_irq(IA64_MCA_WAKEUP_VECTOR, &mca_wkup_irqaction); |
| 2041 | + register_percpu_irq(IA64_MCA_WAKEUP_VECTOR, ia64_mca_wakeup_int_handler, |
| 2042 | + 0, "mca_wkup"); |
2068 | 2043 |
|
2069 | 2044 | /* Setup the CPEI/P handler */
|
2070 |
| - register_percpu_irq(IA64_CPEP_VECTOR, &mca_cpep_irqaction); |
| 2045 | + register_percpu_irq(IA64_CPEP_VECTOR, ia64_mca_cpe_int_caller, 0, |
| 2046 | + "cpe_poll"); |
2071 | 2047 | }
|
2072 | 2048 |
|
2073 | 2049 | /*
|
@@ -2108,7 +2084,9 @@ ia64_mca_late_init(void)
|
2108 | 2084 | if (irq > 0) {
|
2109 | 2085 | cpe_poll_enabled = 0;
|
2110 | 2086 | irq_set_status_flags(irq, IRQ_PER_CPU);
|
2111 |
| - setup_irq(irq, &mca_cpe_irqaction); |
| 2087 | + if (request_irq(irq, ia64_mca_cpe_int_handler, |
| 2088 | + 0, "cpe_hndlr", NULL)) |
| 2089 | + pr_err("Failed to register cpe_hndlr interrupt\n"); |
2112 | 2090 | ia64_cpe_irq = irq;
|
2113 | 2091 | ia64_mca_register_cpev(cpe_vector);
|
2114 | 2092 | IA64_MCA_DEBUG("%s: CPEI/P setup and enabled.\n",
|
|
0 commit comments