On Mon, Jul 22, 2019 at 09:19:50AM +0200, von Wiarda, Jan wrote:
> Hi all,
> 
> we implemented support for Jailhouse 32 bit inmates running on 64-bit
> Jailhouse on the i.MX 8M Mini and it works fine, GIC demo runs without
> problems. Now I have one problem, that just occurred. I'm trying to
> get the ivshmem demo running in 32 bit and it does work until it comes
> to the line
> 
> asm volatile("wfi" : : : "memory");
> 
> When I give the inmate CPUs 1-3 in 32 bit mode and the inmate accesses
> this line, the 64 bit inmate CPU 0 crashes. If I comment this line out
> 
> //asm volatile("wfi" : : : "memory");
> 
> both 64 bit root cell and 32 bit inmate run just fine. Now apparently
> the 64 bit Jailhouse Hypervisor has a problem with WFI beeing executed
> by a 32 bit inmate, as with a 64 bit inmate there is no problem. Is
> there an explanation for this behaviour? I guess I will now have to
> handle the WFI exception. How do I know the inmate is exiting because
> of a WFI, all exits I see are these:
> 
> #define ESR_EC_SMC64                  0x17
> #define ESR_EC_SYS64                  0x18
> #define ESR_EC_DABT_LOW                       0x24
> 
> In the ARMv8 manual it says, ESR_EL2 has an EC == 0b000001, that traps
> WFI and WFE and there is a define
> 
> #define  HSR_EC_WFI           0x01
> 
> but it's not used and it's for AArch32 only. Now I wonder, what's the
> best way to handle this?

AFAICT, jailhouse doesn't set HCR_EL2.{TWE,TWI}, so WFI should never be
trapped to EL2.

Are you setting those bits (or leaving them preserved) in your 32-bit
enablement code?

Thanks,
Mark.

-- 
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/20190722094752.GB28400%40lakrids.cambridge.arm.com.

Reply via email to