Re: [PATCH v12 0/6] x86/kvm/hyper-v: add support for synthetic

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

 



On 29/05/20 15:45, Jon Doron wrote:
> 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.

I removed the capability altogether; the CPUID interface was added
exactly to avoid a proliferation of capabilities.

Otherwise it's great; queued, thanks.

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