On Mon, Nov 30, 2020, Tom Lendacky wrote: > On 11/30/20 9:31 AM, Paolo Bonzini wrote: > > On 16/09/20 02:19, Sean Christopherson wrote: > >> > >> TDX also selectively blocks/skips portions of other ioctl()s so that the > >> TDX code itself can yell loudly if e.g. .get_cpl() is invoked. The event > >> injection restrictions are due to direct injection not being allowed > >> (except > >> for NMIs); all IRQs have to be routed through APICv (posted interrupts) and > >> exception injection is completely disallowed. > >> > >> kvm_vcpu_ioctl_x86_get_vcpu_events: > >> if (!vcpu->kvm->arch.guest_state_protected) > >> events->interrupt.shadow = > >> kvm_x86_ops.get_interrupt_shadow(vcpu); > > > > Perhaps an alternative implementation can enter the vCPU with immediate > > exit until no events are pending, and then return all zeroes? > > SEV-SNP has support for restricting injections, but SEV-ES does not. > Perhaps a new boolean, guest_restricted_injection, can be used instead of > basing it on guest_state_protected. Ya, that probably makes sense. I suspect the easiest way to resolve these conflicts will be to land the SEV-ES series and then tweak things as needed for TDX. Easiest in the sense that it should be fairly obvious what can be covered by guest_state_protected and what needs a dedicated flag.