As the MCA hand-off procedure differs just a bit from that of the INIT, with a slight addition, I can handle the INITs, too. Predicates can tell what to deal with in our mca_asm1.S. Currently, my stuff is activated only if the kernel is compiled in debug mode, otherwise the original routines take the INIT. You push the button, each CPU goes in to the high level INIT routine, prints out the most important registers ( in order to demonstrate that we've caught the INIT ), and - if the PSP.co is on, - it returns with success. We could call the KDB from the high level INIT routine. The key features of the INIT handler are: * Everything is CPU local ( an MCA data area is allocated and hooked to each "cpuinfo" structure, there is room for the INIT, too ) * No locks to protect the stack, the RSE, ... * No rendezvous - Does not seem to work if not all the CPUs are started up, i.e. you specify a "maxcpus="... * No monarch, nor slave - All CPUs enter the high level INIT routine - The KDB has got a chance to synchronize them :-) * The same data structure as for our MCA - The KDB can use common routines There is a lock in the high level INIT routine for not to mix up the print-outs. Why do I use another, separate data area for the INIT ? If I am lost in my MCA handler, and I push the button... This patch is against the version 2.6.1 + kdb-v4.3-2.6.1-common-b0.bz2 + kdb-v4.3-2.6.1-ia64-b0.bz2 + our MCA patch (ftp://visibull.frec.bull.fr/pub/linux/mca/mca.patch-jan-14 ) Your remarks will be appreciated. Zoltan Menyhart