Re: [PATCH v6 0/2] fallback for emulation errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/05/21 16:48, Aaron Lewis wrote:
This patchset allows userspace to be a fallback for handling emulation errors.

v1 -> v2:

  - Added additional documentation for KVM_CAP_EXIT_ON_EMULATION_FAILURE.
  - In prepare_emulation_failure_exit():
    - Created a local variable for vcpu->run.
    - Cleared the flags, emulation_failure.flags.
    - Or'd the instruction bytes flag on to emulation_failure.flags.
  - Updated the comment for KVM_INTERNAL_ERROR_EMULATION flags on how they are
    to be used.
  - Updated the comment for struct emulation_failure.

v2 -> v3:

  - Update documentation for KVM_CAP_EXIT_ON_EMULATION_FAILURE.
  - Fix spacing in prepare_emulation_failure_exit().

v3 -> v4:

  - In prepare_emulation_failure_exit():
    - Clear instruction bytes to 0x90.
    - Copy over insn_size bytes rather than sizeof(ctxt->fetch.data).
  - set_page_table_entry() takes a pte rather than mask.
  - In _vm_get_page_table_entry():
    - Removed check for page aligned addresses only.
    - Added canonical check.
    - Added a check to make sure no reserved bits are set along the walk except
      for the final pte (the pte cannot have the reserved bits checked otherwise
      the test would fail).
    - Added check to ensure superpage bits are clear.
  - Added check in test for 'allow_smaller_maxphyaddr' module parameter.
  - If the is_flds() check fails, only look at the first byte.
  - Don't use labels to increment the RIP.  Decode the instruction well enough to
    ensure it is only 2-bytes.

v4 -> v5:

  - Switch 'insn_size' to u32.
  - Add documentation for how the flags are used.
  - Remove 'max_insn_size' and use 'sizeof(run->emulation_failure.insn_bytes)' instead.
  - Fix typos.
  - Fix canonical check.
  - Add reserved check for bit-7 of PML4E.
  - Add reserved check for bit-63 of all page table levels if EFER.NXE = 0.
  - Remove opcode check (it might be a prefix).
  - Remove labels.
  - Remove detritus (rogue cpuid entry in the test).

v5 -> v6

  - Fix documentation.

Aaron Lewis (2):
   kvm: x86: Allow userspace to handle emulation errors
   selftests: kvm: Allows userspace to handle emulation errors.

  Documentation/virt/kvm/api.rst                |  19 ++
  arch/x86/include/asm/kvm_host.h               |   6 +
  arch/x86/kvm/x86.c                            |  37 ++-
  include/uapi/linux/kvm.h                      |  23 ++
  tools/include/uapi/linux/kvm.h                |  23 ++
  tools/testing/selftests/kvm/.gitignore        |   1 +
  tools/testing/selftests/kvm/Makefile          |   1 +
  .../selftests/kvm/include/x86_64/processor.h  |   4 +
  .../selftests/kvm/lib/x86_64/processor.c      |  94 ++++++++
  .../kvm/x86_64/emulator_error_test.c          | 219 ++++++++++++++++++
  10 files changed, 423 insertions(+), 4 deletions(-)
  create mode 100644 tools/testing/selftests/kvm/x86_64/emulator_error_test.c


Queued, thanks (not yet tested, but still).

Paolo




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux