Am 28.09.21 um 11:28 schrieb Jan Kiszka:
On 27.09.21 10:30, Martin Kaistra wrote:
Am 24.09.21 um 17:46 schrieb Jan Kiszka:
If suspend_cpu() does not progress, the target CPU is not reacting
properly on the request to leave the guest and service the Jailhouse
commands. Could be that you interrupts are not handles properly. Run
"jailhouse config check" on your setup, maybe you are passing the
interrupt controller through.
Or are you using SDEI-based management interrupts? Would require a
special TF-A version, so likely does not happen "by chance".
Jan
Hi Jan,
"jailhouse config check" finds no problems with the root cell and inmate
configs.
Also, SDEI is not active. gicv2_send_sgi() is being used.
Then it would be good to continue debugging, now trying to understand
what the target CPU is doing.
The CPU that requests the suspend sets suspend_cpu in the target data
structure, then sends an IPI to that CPU and wait for the other side to
confirm this via setting cpu_suspended. Check if the target CPU received
the IPI, left the guest mode or what else it does by instrumenting the
related code paths (check_events on arm64).
Jan
The times, when there is no freeze, I can see after cpu0 calls
arch_send_event() -> gicv2_send_sgi() from suspend_cpu(), on cpu1 there
is irqchip_handle_irq() -> arch_handle_sgi() -> check_events().
However in the not working case, after going into suspend_cpu() on cpu0,
there seem to be no interrupts landing on cpu1, I get no debug prints
from irqchip_handle_irq or check_events.
Maybe there is a HW problem? But why does it seem to work sometimes..
Martin
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jailhouse-dev/b5c06e03-9bb3-6703-aa3a-91479cb123ae%40linutronix.de.