Re: [PATCH v4 06/11] KVM: VMX: Frame in ENCLS handler for SGX virtualization

Kai Huang
2021-04-07T22:34:11Z

On Wed, 7 Apr 2021 22:16:59 +0000 Sean Christopherson wrote:
> On Thu, Apr 08, 2021, Kai Huang wrote:
> > +int handle_encls(struct kvm_vcpu *vcpu)
> > +{
> > + u32 leaf = (u32)vcpu->arch.regs[VCPU_REGS_RAX];
>
> Please use kvm_rax_read(), I've been trying to discourage direct access to the
> array. Which is ironic because I'm 100% certain I'm to blame for this. :-)

Sure. But I think still, we should convert it to (u32) explicitly, so:

u32 leaf = (u32)kvm_rax_read(vcpu);

?

>
> > +
> > + if (!encls_leaf_enabled_in_guest(vcpu, leaf)) {
> > + kvm_queue_exception(vcpu, UD_VECTOR);
> > + } else if (!sgx_enabled_in_guest_bios(vcpu)) {
> > + kvm_inject_gp(vcpu, 0);
> > + } else {
> > + WARN(1, "KVM: unexpected exit on ENCLS[%u]", leaf);
> > + vcpu->run->exit_reason = KVM_EXIT_UNKNOWN;
> > + vcpu->run->hw.hardware_exit_reason = EXIT_REASON_ENCLS;
> > + return 0;
> > + }
> > + return 1;
> > +}