• Hidetoshi Seto's avatar
    [IA64] kexec: Unregister MCA handler before kexec · 6cc3efcd
    Hidetoshi Seto authored
    Summary:
    
      MCA on the beginning of kdump/kexec kernel will result in unexpected
      behavior because MCA handler for previous kernel is invoked on the
      kdump kernel.
    
    Description:
    
      Once a cpu is passed to new kernel, all resources in previous kernel
      should not be used from the cpu.  Even the resources for MCA handler
      are no exception.  So we cannot handle MCAs and its machine check
      errors during kernel transition, until new handler for new kernel is
      registered with new resources ready for handling the MCA.
    
    How to reproduce:
    
      Assert MCA while kdump kernel is booting, before new MCA handler for
      kdump kernel is registered.
    
    Expected(Desirable) results:
    
      No recovery, cancel kdump and reboot the system.
    
    Actual results:
    
      MCA handler for previous kernel is invoked on the kdump kernel.
      => panic, hang etc. (unexpected)
    
    Proposed fix:
    
      To avoid entering MCA handler from early stage of new kernel,
      unregister the entry point from SAL before leave from current
      kernel.  Then SAL will make all MCAs to warmboot safely, without
      invoking OS_MCA.
    Signed-off-by: default avatarHidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Haren Myneni <hbabu@us.ibm.com>
    Cc: kexec@lists.infradead.org
    Acked-by: default avatarFenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
    6cc3efcd
machine_kexec.c 4.54 KB