|
@@ -40,6 +40,7 @@
|
|
|
|
|
|
.global ia64_do_tlb_purge
|
|
|
.global ia64_os_mca_dispatch
|
|
|
+ .global ia64_os_init_on_kdump
|
|
|
.global ia64_os_init_dispatch_monarch
|
|
|
.global ia64_os_init_dispatch_slave
|
|
|
|
|
@@ -298,6 +299,25 @@ END(ia64_os_mca_virtual_begin)
|
|
|
|
|
|
//StartMain////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
+//
|
|
|
+// NOP init handler for kdump. In panic situation, we may receive INIT
|
|
|
+// while kernel transition. Since we initialize registers on leave from
|
|
|
+// current kernel, no longer monarch/slave handlers of current kernel in
|
|
|
+// virtual mode are called safely.
|
|
|
+// We can unregister these init handlers from SAL, however then the INIT
|
|
|
+// will result in warmboot by SAL and we cannot retrieve the crashdump.
|
|
|
+// Therefore register this NOP function to SAL, to prevent entering virtual
|
|
|
+// mode and resulting warmboot by SAL.
|
|
|
+//
|
|
|
+ia64_os_init_on_kdump:
|
|
|
+ mov r8=r0 // IA64_INIT_RESUME
|
|
|
+ mov r9=r10 // SAL_GP
|
|
|
+ mov r22=r17 // *minstate
|
|
|
+ ;;
|
|
|
+ mov r10=r0 // return to same context
|
|
|
+ mov b0=r12 // SAL_CHECK return address
|
|
|
+ br b0
|
|
|
+
|
|
|
//
|
|
|
// SAL to OS entry point for INIT on all processors. This has been defined for
|
|
|
// registration purposes with SAL as a part of ia64_mca_init. Monarch and
|