linux-hyperv.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v12 0/6] x86/kvm/hyper-v: add support for synthetic
@ 2020-05-29 13:45 Jon Doron
  2020-05-29 13:45 ` [PATCH v12 1/6] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit Jon Doron
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Jon Doron @ 2020-05-29 13:45 UTC (permalink / raw)
  To: kvm, linux-hyperv; +Cc: vkuznets, pbonzini, rvkagan, Jon Doron

Add support for the synthetic debugger interface of hyper-v, the synthetic
debugger has 2 modes.
1. Use a set of MSRs to send/recv information (undocumented so it's not
   going to the hyperv-tlfs.h)
2. Use hypercalls

The first mode is based the following MSRs:
1. Control/Status MSRs which either asks for a send/recv .
2. Send/Recv MSRs each holds GPA where the send/recv buffers are.
3. Pending MSR, holds a GPA to a PAGE that simply has a boolean that
   indicates if there is data pending to issue a recv VMEXIT.

The first mode implementation is to simply exit to user-space when
either the control MSR or the pending MSR are being set.
Then it's up-to userspace to implement the rest of the logic of sending/recving.

In the second mode instead of using MSRs KNet will simply issue
Hypercalls with the information to send/recv, in this mode the data
being transferred is UDP encapsulated, unlike in the previous mode in
which you get just the data to send.

The new hypercalls will exit to userspace which will be incharge of
re-encapsulating if needed the UDP packets to be sent.

There is an issue though in which KDNet does not respect the hypercall
page and simply issues vmcall/vmmcall instructions depending on the cpu
type expecting them to be handled as it a real hypercall was issued.

It's important to note that part of this feature has been subject to be
removed in future versions of Windows, which is why some of the
defintions will not be present the the TLFS but in the kvm hyperv header
instead.

v12:
- Rebased on latest origin/master
- Make the KVM_CAP_HYPERV_SYNDBG always enabled, in previous version
  userspace was required to explicitly enable the syndbg capability just
  like with the EVMCS feature.

Jon Doron (5):
  x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
  x86/hyper-v: Add synthetic debugger definitions
  x86/kvm/hyper-v: Add support for synthetic debugger capability
  x86/kvm/hyper-v: enable hypercalls regardless of hypercall page
  x86/kvm/hyper-v: Add support for synthetic debugger via hypercalls

Vitaly Kuznetsov (1):
  KVM: selftests: update hyperv_cpuid with SynDBG tests

 Documentation/virt/kvm/api.rst                |  18 ++
 arch/x86/include/asm/hyperv-tlfs.h            |   6 +
 arch/x86/include/asm/kvm_host.h               |  13 ++
 arch/x86/kvm/hyperv.c                         | 180 +++++++++++++++++-
 arch/x86/kvm/hyperv.h                         |  32 ++++
 arch/x86/kvm/trace.h                          |  51 +++++
 arch/x86/kvm/x86.c                            |   9 +
 include/uapi/linux/kvm.h                      |  13 ++
 .../selftests/kvm/x86_64/hyperv_cpuid.c       | 103 +++++-----
 9 files changed, 374 insertions(+), 51 deletions(-)

-- 
2.24.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-05-29 15:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-29 13:45 [PATCH v12 0/6] x86/kvm/hyper-v: add support for synthetic Jon Doron
2020-05-29 13:45 ` [PATCH v12 1/6] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit Jon Doron
2020-05-29 13:45 ` [PATCH v12 2/6] x86/hyper-v: Add synthetic debugger definitions Jon Doron
2020-05-29 13:45 ` [PATCH v12 3/6] x86/kvm/hyper-v: Add support for synthetic debugger capability Jon Doron
2020-05-29 13:45 ` [PATCH v12 4/6] x86/kvm/hyper-v: enable hypercalls regardless of hypercall page Jon Doron
2020-05-29 13:45 ` [PATCH v12 5/6] x86/kvm/hyper-v: Add support for synthetic debugger via hypercalls Jon Doron
2020-05-29 13:45 ` [PATCH v12 6/6] KVM: selftests: update hyperv_cpuid with SynDBG tests Jon Doron
2020-05-29 15:15 ` [PATCH v12 0/6] x86/kvm/hyper-v: add support for synthetic Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).