During my testing for arm zImage, in 2nd kernel the atags pointer and the machine_id are not valid, I did a lot of debugging in kernel, finally I found this is caused by a kexec tools bug instead. It is a regression since bf06cf2095. It changes uImage probe return values as below: * 0 - valid uImage type * -1 - If the image is corrupted. * 1 - If the image is not a uImage. Because uImage will be probed before zImage, but the uImage probe return 1 for a zImage thus kexec will mistakenly think it is ok to use as uImage. IMHO, return -1 in case it's not an uImage is better instead of 1 like before It's not really necessary to introduce a new return value. It might be better for a new patch to return either 0 or -1 for uImage probe. But I did not fix the uImage return value yet. In this patchset I did below: - ppc64 zImage: return 0 instead of 1 in case of success - strictly checking if probe return 0 in kexec.c Tested arm zImage with use_atags only. Dave Young (2): zImage_ppc64_probe: return 0 instead of 1 in case of success kernel image probe function return value checking fix kexec/arch/ppc64/kexec-zImage-ppc64.c | 5 ++++- kexec/kexec.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) -- 1.8.3.1