Re: [PATCH v2 3/6] KVM: VMX: Handle vectoring error in check_emulate_instruction

Ivan Orlov
2024-12-11T23:12:34Z

On 12/11/24 18:15, Sean Christopherson wrote:
> Hmm, this should probably be "pf_mmio", not just "mmio". E.g. if KVM is emulating
> large swaths of guest code because unrestricted guest is disabled, then can end up
> emulating an MMIO access for "normal" emulation.
>
> Hmm, actually, what if we go with this?
>
> static inline bool kvm_can_emulate_event_vectoring(int emul_type)
> {
> return !(emul_type & EMULTYPE_PF) ||
> (emul_type & EMULTYPE_WRITE_PF_TO_SP);
> }
>

Hm, by the way, what is the desired behaviour if EMULTYPE_ALLOW_RETRY_PF
is set? Is it correct that we return an internal error if it is set
during vectoring? Or KVM may try to unprotect the page and re-execute?

If so, we may need something like

static inline bool kvm_can_emulate_event_vectoring(int emul_type)
{
return !(emul_type & EMULTYPE_PF) ||
(emul_type & ~(EMULTYPE_PF));
}

So it returns true if EMULTYPE_PF is not set or if it's not the only set
bit.

--
Kind regards,
Ivan Orlov