kexec failures on ipq4019

Andy Strohman andy at uplevelsystems.com
Fri Jun 15 18:07:04 PDT 2018


Hi,

  I'm trying to get kexec to work consistently for ipq4019.  I load
the crash kernel like this:

kexec --type zImage -p zImage-initramfs
--dtb=image-qcom-ipq4019-eap1300.dtb --append="maxcpus=1
reset_devices" --image-size=34419456

  I have reserved 64MB of memory for the crash kernel with parameter:
crashkernel=64M

  This seems to work ~70% of the time. When it doesn't work, I see the
"bye!" message followed by a 5-10 second hang without output.  Then
the machine resets.

  I've been testing with:
echo c > /proc/sysrq-trigger

  Does anyone have an idea of what may be causing the failures or how
to troubleshoot this?

  I'm using OpenWRT with kernel 4.14.37.   I added the following patch
in order to load the crash kernel:

--- a/arch/arm/mach-qcom/platsmp.c
+++ b/arch/arm/mach-qcom/platsmp.c
@@ -332,6 +332,12 @@ static void __init qcom_smp_prepare_cpus
  }
 }

+/* Needed by kexec and platform_can_cpu_hotplug() */
+int qcom_cpu_kill(unsigned int cpu)
+{
+    return 1;
+}
+
 static const struct smp_operations smp_msm8660_ops __initconst = {
  .smp_prepare_cpus = qcom_smp_prepare_cpus,
  .smp_secondary_init = qcom_secondary_init,
@@ -358,6 +364,7 @@ static const struct smp_operations qcom_
  .smp_boot_secondary = kpssv2_boot_secondary,
 #ifdef CONFIG_HOTPLUG_CPU
  .cpu_die = qcom_cpu_die,
+    .cpu_kill       = qcom_cpu_kill,
 #endif
 };
 CPU_METHOD_OF_DECLARE(qcom_smp_kpssv2, "qcom,kpss-acc-v2",
&qcom_smp_kpssv2_ops);


Thanks,

Andy

-- 
http://www.uplevelsystems.com <http://www.uplevelsystems.com>






More information about the kexec mailing list