On Thu, Jun 01, 2023 at 11:59:29AM -0700, Sean Christopherson wrote: > On Thu, Jun 01, 2023, Oliver Upton wrote: > > How do we support a userspace that only cares about NOWAIT exits but > > doesn't want other EFAULT exits to be annotated? > > We don't. The proposed approach is to not change the return value, and the > vcpu->run union currently holds random garbage on -EFAULT, so I don't see any reason > to require userspace to opt-in, or to let userspace opt-out. I.e. fill > vcpu->run->memory_fault unconditionally (for the paths that are converted) and > advertise to userspace that vcpu->run->memory_fault *may* contain useful info on > -EFAULT when KVM_CAP_MEMORY_FAULT_INFO is supported. And then we define KVM's > ABI such that vcpu->run->memory_fault is guarateed to be valid if an -EFAULT occurs > when faulting in guest memory (on supported architectures). Sure, but the series currently gives userspace an explicit opt-in for existing EFAULT paths. Hold your breath, I'll reply over there so we don't mix context. > > It is very likely that userspace will only know how to resolve NOWAIT exits > > anyway. Since we do not provide a precise description of the conditions that > > caused an exit, there's no way for userspace to differentiate between NOWAIT > > exits and other exits it couldn't care less about. > > > > NOWAIT exits w/o annotation (i.e. a 'bare' EFAULT) make even less sense > > since userspace cannot even tell what address needs fixing at that > > point. > > > > This is why I had been suggesting we separate the two capabilities and > > make annotated exits an unconditional property of NOWAIT exits. > > No, because as I've been stating ad nauseum, KVM cannot differentiate between a > NOWAIT -EFAULT and an -EFAULT that would have occurred regardless of the NOWAIT > behavior. IOW: "If you engage brain for more than a second, you'll actually see the point" Ok, I'm on board now and sorry for the noise. -- Thanks, Oliver