When using the hypervisor API, I get a "SIGILL: Illegal Instruction" on every function call. For example, running the following from a manager partition will cause a SIGILL even though partition 2 restarts.
fh_partition_restart(2);
Everything appears to work. Partition 2 will restart with no errors reported besides the SIGILL in the manager partition. I can't find any documentation on this unexpected SIGILL. Could anyone explain what is possibly happening here?
As a work around, I'm registering a signal handler that ignores SIGILL.
This has only been tested on a T1040D4RDB.
SIGILL is a generic, POSIX-compatible signal that indicates an illegal
instruction in the task command flow. Hypercalls are not expected
to happen in userspace, although the hardware supports this scenario.
The recommended way to request Hypervisor services from a userland
task is via Hypervisor Management driver. See SDK 2.0 documentation,
Section 11.1.2.10. There is a small reference application that shows
how to do it safely:
http://git.freescale.com/git/cgit.cgi/ppc/sdk/hypervisor/hypervisor.git/tree/tools/partman
Have a great day,
Platon
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------