patch-2.4.21 linux-2.4.21/arch/ppc64/kernel/xics.c
Next file: linux-2.4.21/arch/ppc64/lib/Makefile
Previous file: linux-2.4.21/arch/ppc64/kernel/udbg.c
Back to the patch index
Back to the overall index
- Lines: 52
- Date:
2003-06-13 07:51:32.000000000 -0700
- Orig file:
linux-2.4.20/arch/ppc64/kernel/xics.c
- Orig date:
2002-11-28 15:53:11.000000000 -0800
diff -urN linux-2.4.20/arch/ppc64/kernel/xics.c linux-2.4.21/arch/ppc64/kernel/xics.c
@@ -88,6 +88,7 @@
/* RTAS service tokens */
int ibm_get_xive;
int ibm_set_xive;
+int ibm_int_on;
int ibm_int_off;
struct xics_interrupt_node {
@@ -159,6 +160,14 @@
irq, call_status, status);
return;
}
+ /* Now unmask the interrupt (often a no-op) */
+ call_status = rtas_call(ibm_int_on, 1, 1, (unsigned long*)&status,
+ irq);
+ if( call_status != 0 ) {
+ printk("xics_disable_irq on: irq=%x: rtas_call failed, retn=%lx\n",
+ irq, call_status);
+ return;
+ }
}
void
@@ -289,6 +298,7 @@
ibm_get_xive = rtas_token("ibm,get-xive");
ibm_set_xive = rtas_token("ibm,set-xive");
+ ibm_int_on = rtas_token("ibm,int-on");
ibm_int_off = rtas_token("ibm,int-off");
np = find_type_devices("PowerPC-External-Interrupt-Presentation");
@@ -362,9 +372,9 @@
xics_irq_8259_cascade = virt_irq_create_mapping(xics_irq_8259_cascade_real);
}
- if (naca->platform == PLATFORM_PSERIES) {
+ if (systemcfg->platform == PLATFORM_PSERIES) {
#ifdef CONFIG_SMP
- for (i = 0; i < naca->processorCount; ++i) {
+ for (i = 0; i < systemcfg->processorCount; ++i) {
xics_info.per_cpu[i] =
__ioremap((ulong)inodes[get_hard_smp_processor_id(i)].addr,
(ulong)inodes[get_hard_smp_processor_id(i)].size, _PAGE_NO_CACHE);
@@ -376,7 +386,7 @@
/* actually iSeries does not use any of xics...but it has link dependencies
* for now, except this new one...
*/
- } else if (naca->platform == PLATFORM_PSERIES_LPAR) {
+ } else if (systemcfg->platform == PLATFORM_PSERIES_LPAR) {
ops = &pSeriesLP_ops;
#endif
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)