On 17/02/21 19:43, Maxim Levitsky wrote:
1. npt/ept disabled in the host. In this case we have a single shadowing and a nested hypervisor has to do its own shadowing on top of it. In this case the MMU itself has to generate page faults (they are a result of hardware page faults, but are completely different), and in case of nesting these page faults have to be sometimes injected as VM exits. [...] Also if the emulator injects the page fault, then indeed I think the bug will happen.
But in both cases you (ought to) get an injected exception which then becomes a page fault vmexit at next check_nested_events. That's the part that we are all collectively missing.
Paolo