aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/platforms/pseries/setup.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/platforms/pseries/setup.c')
-rw-r--r--arch/powerpc/platforms/pseries/setup.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 8828dc378c3e..d678f228fc0f 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -77,8 +77,6 @@
77#endif 77#endif
78 78
79extern void find_udbg_vterm(void); 79extern void find_udbg_vterm(void);
80extern void system_reset_fwnmi(void); /* from head.S */
81extern void machine_check_fwnmi(void); /* from head.S */
82 80
83int fwnmi_active; /* TRUE if an FWNMI handler is present */ 81int fwnmi_active; /* TRUE if an FWNMI handler is present */
84 82
@@ -104,18 +102,22 @@ void pSeries_show_cpuinfo(struct seq_file *m)
104 102
105/* Initialize firmware assisted non-maskable interrupts if 103/* Initialize firmware assisted non-maskable interrupts if
106 * the firmware supports this feature. 104 * the firmware supports this feature.
107 *
108 */ 105 */
109static void __init fwnmi_init(void) 106static void __init fwnmi_init(void)
110{ 107{
111 int ret; 108 unsigned long system_reset_addr, machine_check_addr;
109
112 int ibm_nmi_register = rtas_token("ibm,nmi-register"); 110 int ibm_nmi_register = rtas_token("ibm,nmi-register");
113 if (ibm_nmi_register == RTAS_UNKNOWN_SERVICE) 111 if (ibm_nmi_register == RTAS_UNKNOWN_SERVICE)
114 return; 112 return;
115 ret = rtas_call(ibm_nmi_register, 2, 1, NULL, 113
116 __pa((unsigned long)system_reset_fwnmi), 114 /* If the kernel's not linked at zero we point the firmware at low
117 __pa((unsigned long)machine_check_fwnmi)); 115 * addresses anyway, and use a trampoline to get to the real code. */
118 if (ret == 0) 116 system_reset_addr = __pa(system_reset_fwnmi) - PHYSICAL_START;
117 machine_check_addr = __pa(machine_check_fwnmi) - PHYSICAL_START;
118
119 if (0 == rtas_call(ibm_nmi_register, 2, 1, NULL, system_reset_addr,
120 machine_check_addr))
119 fwnmi_active = 1; 121 fwnmi_active = 1;
120} 122}
121 123