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