On 18/10/2017 11:26, Paolo Bonzini wrote: > On 04/10/2017 15:17, Brijesh Singh wrote: >> + /* >> + * On AMD platforms, under certain conditions insn_len may be zero on #NPF. >> + * This can happen if a guest gets a page-fault on data access but the HW >> + * table walker is not able to read the instruction page (e.g instruction >> + * page is not present in memory). >> + * >> + * Typically, when insn_len is zero, x86_emulate_instruction() walks the >> + * guest page table and fetches the instruction bytes from guest memory. >> + * When SEV is enabled, the guest memory is encrypted with guest-specific >> + * key hence hypervisor will not able to fetch the instruction bytes. >> + * In those cases we simply restart the guest. >> + */ >> + if (unlikely(!insn_len) && >> + kvm_x86_ops->mem_enc_enabled && >> + kvm_x86_ops->mem_enc_enabled(vcpu)) >> + return 1; >> + > > Is it needed to test mem_enc_enabled? Could it instead test for the > availability of decode assists? More precisely, you could test "unlikely(insn && !insn_len)" here and, in svm.c, pass insn as static_cpu_has(X86_FEATURE_DECODEASSISTS) ? svm->vmcb->control.insn_bytes : 0 Paolo