PS3: Strange issue with kexec and FreeBSD loader

Phileas Fogg phileas-fogg at mail.ru
Sat Feb 9 10:10:46 EST 2013


Hi,

i'm using OpenWRT petitboot bootloader on my PS3 to boot FreeBSD loader which is a simple PPC32 ELF file.
I haven't had any issues with it and OpenWRT based on Linux 3.3.8.
Recently i built an OpenWRT image with Linux 3.7, i have no issues at all with kexec and any Linux kernels starting with 2.6 but
FreeBSD loader won't boot and just hangs. The same issue with OpenWRT based on Linux 3.6 kernel.
So, i started to analyze this problem and found out where it hangs.

It seems that the purgatory code from kexec-tools loops endlessly if SHA256 verification of the loaded segments
fails.

See
  http://git.kernel.org/?p=utils/kernel/kexec/kexec-tools.git;a=blob_plain;f=purgatory/purgatory.c;hb=566ca8a12145196b00ad37939cfd58a97f96ba89

Because the function _verify_sha256_digest fails, the function _purgatory_ loops endlessly.
This problem occurs only with Linux 3.6 or Linux 3.7 and FreeBSD loader.
I killed the endless loop and could boot the FreeBSD loader on Linux 3.7 too.

Any idea what could cause this problem ?

Thanks.


More information about the Linuxppc-dev mailing list