kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* KVM patches for Hyper-V improvements
@ 2021-12-03  1:32 Makarand Sonare
  2021-12-03  8:09 ` Vitaly Kuznetsov
  0 siblings, 1 reply; 4+ messages in thread
From: Makarand Sonare @ 2021-12-03  1:32 UTC (permalink / raw)
  To: Vitaly Kuznetsov, kvm

Hello Vitaly,
                  I am interested in knowing the exact set of KVM
patches that were added for the Nested Hyper-V scenario. Could you
please point me to them?

-- 
Thanks,
Makarand Sonare

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

* Re: KVM patches for Hyper-V improvements
  2021-12-03  1:32 KVM patches for Hyper-V improvements Makarand Sonare
@ 2021-12-03  8:09 ` Vitaly Kuznetsov
  2021-12-03 18:38   ` Makarand Sonare
  2021-12-06  9:52   ` Vitaly Kuznetsov
  0 siblings, 2 replies; 4+ messages in thread
From: Vitaly Kuznetsov @ 2021-12-03  8:09 UTC (permalink / raw)
  To: Makarand Sonare, kvm

Makarand Sonare <makarandsonare@google.com> writes:

> Hello Vitaly,
>                   I am interested in knowing the exact set of KVM
> patches that were added for the Nested Hyper-V scenario. Could you
> please point me to them?

Hi Makarand,

are you interested in patches since some upstream kernel version or
since the beginning of time? Thing is, some Hyper-V enlightenments
benefit both Windows and Hyper-V and some are specific to Hyper-V. Out
of top of my head, 'direct synthetic timers', 'Enlightened VMCS', and
'Enlightened MSR-Bitmap' features are Hyper-V specific. Patch list is
pretty long, see for example

$ git log --author vkuznets@redhat.com --oneline -i --grep 'enlightened.*vmcs' arch/x86/kvm/

and 

$ git log --author vkuznets@redhat.com --oneline -i --grep 'direct.*syn' arch/x86/kvm/

Enlightened MSR-Bitmap is only in kvm/master:
ceef7d10dfb6 KVM: x86: VMX: hyper-v: Enlightened MSR-Bitmap support

The list is likely incomplete as there are pre-requisites for these
patches which may not have the required keywords. There were fixes in
other parts of KVM for nested Hyper-V as well but I don't know an easy
way to find them (grepping for 'Hyper-V/hyperv' in the log would be a
good start but we'll certainly miss something).

Please let me know if that's what you're looking for and I'll try to
give you more precise information.

-- 
Vitaly


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

* Re: KVM patches for Hyper-V improvements
  2021-12-03  8:09 ` Vitaly Kuznetsov
@ 2021-12-03 18:38   ` Makarand Sonare
  2021-12-06  9:52   ` Vitaly Kuznetsov
  1 sibling, 0 replies; 4+ messages in thread
From: Makarand Sonare @ 2021-12-03 18:38 UTC (permalink / raw)
  To: Vitaly Kuznetsov; +Cc: kvm

Hi Vitaly,
             I am interested in patches since the 4.15 kernel that are
specific to nested Hyper-V and specific to non Hyper-V Windows guest.

Thanks,
Makarand.

On 12/3/21, Vitaly Kuznetsov <vkuznets@redhat.com> wrote:
> Makarand Sonare <makarandsonare@google.com> writes:
>
>> Hello Vitaly,
>>                   I am interested in knowing the exact set of KVM
>> patches that were added for the Nested Hyper-V scenario. Could you
>> please point me to them?
>
> Hi Makarand,
>
> are you interested in patches since some upstream kernel version or
> since the beginning of time? Thing is, some Hyper-V enlightenments
> benefit both Windows and Hyper-V and some are specific to Hyper-V. Out
> of top of my head, 'direct synthetic timers', 'Enlightened VMCS', and
> 'Enlightened MSR-Bitmap' features are Hyper-V specific. Patch list is
> pretty long, see for example
>
> $ git log --author vkuznets@redhat.com --oneline -i --grep
> 'enlightened.*vmcs' arch/x86/kvm/
>
> and
>
> $ git log --author vkuznets@redhat.com --oneline -i --grep 'direct.*syn'
> arch/x86/kvm/
>
> Enlightened MSR-Bitmap is only in kvm/master:
> ceef7d10dfb6 KVM: x86: VMX: hyper-v: Enlightened MSR-Bitmap support
>
> The list is likely incomplete as there are pre-requisites for these
> patches which may not have the required keywords. There were fixes in
> other parts of KVM for nested Hyper-V as well but I don't know an easy
> way to find them (grepping for 'Hyper-V/hyperv' in the log would be a
> good start but we'll certainly miss something).
>
> Please let me know if that's what you're looking for and I'll try to
> give you more precise information.
>
> --
> Vitaly
>
>


-- 
Thanks,
Makarand Sonare

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

* Re: KVM patches for Hyper-V improvements
  2021-12-03  8:09 ` Vitaly Kuznetsov
  2021-12-03 18:38   ` Makarand Sonare
@ 2021-12-06  9:52   ` Vitaly Kuznetsov
  1 sibling, 0 replies; 4+ messages in thread
From: Vitaly Kuznetsov @ 2021-12-06  9:52 UTC (permalink / raw)
  To: Makarand Sonare; +Cc: kvm

[-- Attachment #1: Type: text/plain, Size: 963 bytes --]

Vitaly Kuznetsov <vkuznets@redhat.com> writes:

> Makarand Sonare <makarandsonare@google.com> writes:
>
>> Hello Vitaly,
>>                   I am interested in knowing the exact set of KVM
>> patches that were added for the Nested Hyper-V scenario. Could you
>> please point me to them?
>

This would be quite a lot of data and i'm not exactly sure how to gather
it. E.g. I did

$ git log --oneline --no-merges -i --grep 'hyper.*v' v4.15..origin/master arch/x86/kvm/

and then manually filtered the list (I've probably missed something and
kept something unrelated but I can't thinkg of a better way). I ended up
with 152 patches (attached). Features, which are specific to nested
Hyper-V scenario (Hyper-V on  KVM), are Direct Synthetic timers,
Enlightened VMCS (eVMCS), Reenlightenment notifications + everything
mentioning 'nesting' on the list. The rest should benefit both Windows
and Hyper-V scenarios.

Hope this helps at least a little bit,

-- 
Vitaly


[-- Attachment #2: list --]
[-- Type: application/octet-stream, Size: 11663 bytes --]

b5aead0064f3 KVM: x86: Assume a 64-bit hypercall for guests with protected state
c5adbb3af051 KVM: x86: Fix uninitialized eoi_exit_bitmap usage in vcpu_load_eoi_exitmap()
620b2438abf9 KVM: Make kvm_make_vcpus_request_mask() use pre-allocated cpu_kick_mask
6470accc7ba9 KVM: x86: hyper-v: Avoid calling kvm_make_vcpus_request_mask() with vcpu_mask==NULL
8d68bad6d869 KVM: nVMX: Filter out all unsupported controls when eVMCS was activated
94c245a245ff KVM: x86: Identify vCPU0 by its vcpu_idx instead of its vCPUs array entry
0f250a646382 KVM: x86: hyper-v: Deactivate APICv only when AutoEOI feature is in use
ffbe17cadaf5 KVM: x86: remove dead initialization
4e62aa96d6e5 KVM: x86: hyper-v: Check if guest is allowed to use XMM registers for hypercall input
2e2f1e8d0450 KVM: x86: hyper-v: Check access to hypercall before reading XMM registers
37be407b2ce8 KVM: nSVM: Fix L1 state corruption upon return from SMM
fb79f566e4c9 KVM: nSVM: Check that VM_HSAVE_PA MSR was set before VMRUN
dc313385529f KVM: nVMX: Reset eVMCS clean fields data from prepare_vmcs02()
d6bf71a18c74 KVM: nVMX: Ignore 'hv_clean_fields' data when eVMCS data is copied in vmx_get_nested_state()
3b19b81acf30 KVM: nVMX: Release enlightened VMCS on VMCLEAR
445caed0213a KVM: x86: hyper-v: Honor HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED bit
d264eb3c14d0 KVM: x86: hyper-v: Honor HV_X64_CLUSTER_IPI_RECOMMENDED bit
bb53ecb4d6ea KVM: x86: hyper-v: Honor HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED bit
a921cf83cc4c KVM: x86: hyper-v: Honor HV_DEBUGGING privilege bit
a60b3c594ef3 KVM: x86: hyper-v: Honor HV_SIGNAL_EVENTS privilege bit
4f532b7f969f KVM: x86: hyper-v: Honor HV_POST_MESSAGES privilege bit
34ef7d7b9c04 KVM: x86: hyper-v: Check access to HVCALL_NOTIFY_LONG_SPIN_WAIT hypercall
4ad81a91119d KVM: x86: hyper-v: Prepare to check access to Hyper-V hypercalls
1aa8a4184dbd KVM: x86: hyper-v: Honor HV_STIMER_DIRECT_MODE_AVAILABLE privilege bit
d66bfa36f9ed KVM: x86: hyper-v: Inverse the default in hv_check_msr_access()
17b6d51771a1 KVM: x86: hyper-v: Honor HV_FEATURE_DEBUG_MSRS_AVAILABLE privilege bit
0a19c8992db8 KVM: x86: hyper-v: Honor HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE privilege bit
234d01baec5b KVM: x86: hyper-v: Honor HV_ACCESS_REENLIGHTENMENT privilege bit
9442f3bd9012 KVM: x86: hyper-v: Honor HV_ACCESS_FREQUENCY_MSRS privilege bit
978b57475c77 KVM: x86: hyper-v: Honor HV_MSR_APIC_ACCESS_AVAILABLE privilege bit
eba60ddae794 KVM: x86: hyper-v: Honor HV_MSR_SYNTIMER_AVAILABLE privilege bit
9e2715ca20d7 KVM: x86: hyper-v: Honor HV_MSR_SYNIC_AVAILABLE privilege bit
a1ec661c3fdc KVM: x86: hyper-v: Honor HV_MSR_REFERENCE_TSC_AVAILABLE privilege bit
679008e4bbeb KVM: x86: hyper-v: Honor HV_MSR_RESET_AVAILABLE privilege bit
d2ac25d4196d KVM: x86: hyper-v: Honor HV_MSR_VP_INDEX_AVAILABLE privilege bit
c2b32867f2e7 KVM: x86: hyper-v: Honor HV_MSR_TIME_REF_COUNT_AVAILABLE privilege bit
b80a92ff8158 KVM: x86: hyper-v: Honor HV_MSR_VP_RUNTIME_AVAILABLE privilege bit
1561c2cb87ab KVM: x86: hyper-v: Honor HV_MSR_HYPERCALL_AVAILABLE privilege bit
b4128000e2c9 KVM: x86: hyper-v: Prepare to check access to Hyper-V MSRs
10d7bf1e46dc KVM: x86: hyper-v: Cache guest CPUID leaves determining features availability
644f706719f0 KVM: x86: hyper-v: Introduce KVM_CAP_HYPERV_ENFORCE_CPUID
3c86c0d3dbb9 KVM: x86: hyper-v: Move the remote TLB flush logic out of vmx
d8f5537a8816 KVM: hyper-v: Advertise support for fast XMM hypercalls
5974565bc26d KVM: x86: kvm_hv_flush_tlb use inputs from XMM registers
bd38b32053eb KVM: hyper-v: Collect hypercall params into struct
da6d63a0062a KVM: X86: hyper-v: Task srcu lock when accessing kvm_memslots()
0469f2f7ab4c KVM: x86: hyper-v: Don't touch TSC page values when guest opted for re-enlightenment
cc9cfddb0433 KVM: x86: hyper-v: Track Hyper-V TSC page status
e880c6ea55b9 KVM: x86: hyper-v: Prevent using not-yet-updated TSC page by secondary CPUs
d2547cf59793 KVM: x86: hyper-v: Limit guest to writing zero to HV_X64_MSR_TSC_EMULATION_STATUS
978c834a6691 KVM: VMX: Track root HPA instead of EPTP for paravirt Hyper-V TLB flush
14072e56958c KVM: VMX: Skip additional Hyper-V TLB EPTP flushes if one fails
ee36656f0ac3 KVM: VMX: Define Hyper-V paravirt TLB flush fields iff Hyper-V is enabled
c82f1b670fd0 KVM: VMX: Explicitly check for hv_remote_flush_tlb when loading pgd
446f7f115530 KVM: VMX: Do Hyper-V TLB flush iff vCPU's EPTP hasn't been flushed
288bee28094e KVM: VMX: Fold Hyper-V EPTP checking into it's only caller
b68aa15cca56 KVM: VMX: Stash kvm_vmx in a local variable for Hyper-V paravirt TLB flush
a4038ef1aa63 KVM: VMX: Track common EPTP for Hyper-V's paravirt TLB flush
919f4ebc5987 KVM: x86: hyper-v: Fix Hyper-V context null-ptr-deref
b9ce0f86d919 KVM: x86: hyper-v: Drop hv_vcpu_to_vcpu() helper
fc08b628d7c9 KVM: x86: hyper-v: Allocate Hyper-V context lazily
8f014550dfb1 KVM: x86: hyper-v: Make Hyper-V emulation enablement conditional
4592b7eaa87d KVM: x86: hyper-v: Allocate 'struct kvm_vcpu_hv' dynamically
f2bc14b69c38 KVM: x86: hyper-v: Prepare to meet unallocated Hyper-V context
9ff5e0304e94 KVM: x86: hyper-v: Always use to_hv_vcpu() accessor to get to 'struct kvm_vcpu_hv'
72167a9d7da2 KVM: x86: hyper-v: Stop shadowing global 'current_vcpu' variable
05f04ae4ffcc KVM: x86: hyper-v: Introduce to_kvm_hv() helper
f69b55efef84 KVM: x86: hyper-v: Rename vcpu_to_hv_syndbg() to to_hv_syndbg()
aafa97fd1c01 KVM: x86: hyper-v: Rename vcpu_to_stimer()/stimer_to_vcpu()
e0121fa29a7f KVM: x86: hyper-v: Rename vcpu_to_synic()/synic_to_vcpu()
ef3f3980dedf KVM: x86: hyper-v: Rename vcpu_to_hv_vcpu() to to_hv_vcpu()
cb5b916172c6 KVM: x86: hyper-v: Drop unused kvm_hv_vapic_assist_page_enabled()
c21d54f0307f KVM: x86: hyper-v: allow KVM_GET_SUPPORTED_HV_CPUID as a system ioctl
dbcf3f96fa66 KVM: x86: hyper-v: disallow configuring SynIC timers with no SynIC
dfc53baae3c6 x86/hyperv: Remove aliases with X64 in their name
99b48ecc8e80 x86/kvm/hyper-v: Synic default SCONTROL MSR needs to be enabled
b187038b5e3f x86/kvm/hyper-v: Add support for synthetic debugger via hypercalls
45c38973ed18 x86/kvm/hyper-v: enable hypercalls regardless of hypercall page
f97f5a56f597 x86/kvm/hyper-v: Add support for synthetic debugger interface
22ad0026d097 x86/hyper-v: Add synthetic debugger definitions
7357b1df744c KVM: x86: hyperv: Remove duplicate definitions of Reference TSC Page
0baedd792713 KVM: x86: make Hyper-V PV TLB flush use tlb_flush_guest()
b6a0653ae2cd KVM: nVMX: properly handle errors in nested_vmx_handle_enlightened_vmptrld()
07721feee46b KVM: nVMX: Don't emulate instructions in guest mode
a4443267800a KVM: nVMX: clear PIN_BASED_POSTED_INTR from nested pinbased_ctls only when apicv is globally disabled
a83502314ce3 x86/kvm/hyper-v: don't allow to turn on unsupported VMX controls for nested guests
31de3d2500e4 x86/kvm/hyper-v: move VMX controls sanitization out of nested_enable_evmcs()
f4fdc0a2edf4 kvm: x86: hyperv: Use APICv update request interface
8df14af42f00 kvm: x86: Add support for dynamic APICv activation
4e19c36f2df8 kvm: x86: Introduce APICv inhibit reason bits
de9bf4d4cea3 x86/kvm/hyper-v: remove stale evmcs_already_enabled check from nested_enable_evmcs()
2f9f5cddb29b KVM: hyperv: Fix some typos in vcpu unimpl info
b2d8b167e15b KVM: x86: hyper-v: set NoNonArchitecturalCoreSharing CPUID bit when SMT is impossible
a073d7e3ad68 KVM: hyperv: Fix Direct Synthetic timers assert an interrupt w/o lapic_in_kernel
5a0165f6dde3 KVM: x86: announce KVM_CAP_HYPERV_ENLIGHTENED_VMCS support only when it is available
ea1529873ab1 KVM: x86: hyper-v: don't crash on KVM_GET_SUPPORTED_HV_CPUID when kvm_intel.nested is disabled
323d73a8ecad KVM: nVMX: Change KVM_STATE_NESTED_EVMCS to signal vmcs12 is copied from eVMCS
11e349143e32 x86/kvm/nVMX: fix VMCLEAR when Enlightened VMCS is in use
da66761c2d93 x86: kvm: hyper-v: deal with buggy TLB flush requests from WS2012
013cc6ebbf41 x86/kvm/hyper-v: avoid spurious pending stimer on vCPU init
3a2f5773baab x86/kvm/hyper-v: nested_enable_evmcs() sets vmcs_version incorrectly
f1adceaf01f0 x86/kvm/hyper-v: recommend using eVMCS only when it is enabled
1998fd32aa62 x86/kvm/hyper-v: don't recommend doing reset via synthetic MSR
9699f970de84 x86/kvm/hyper-v: don't announce GUEST IDLE MSR support
87a8d795b2f1 x86/hyper-v: Stop caring about EOI for direct stimers
08a800ac257a x86/kvm/hyper-v: avoid open-coding stimer_mark_pending() in kvm_hv_notify_acked_sint()
8644f771e07c x86/kvm/hyper-v: direct mode for synthetic timers
6a058a1eadc3 x86/kvm/hyper-v: use stimer config definition from hyperv-tlfs.h
2bc39970e932 x86/kvm/hyper-v: Introduce KVM_GET_SUPPORTED_HV_CPUID
e2e871ab2f02 x86/kvm/hyper-v: Introduce nested_get_evmcs_version() helper
a4987defc1e6 x86/hyper-v: Do some housekeeping in hyperv-tlfs.h
7deec5e0df74 x86: kvm: hyperv: don't retry message delivery for periodic timers
3a0e7731724f x86: kvm: hyperv: simplify SynIC message delivery
3592cda6bc27 KVM: x86: Add requisite includes to hyperv.h
72aeb60c52bf KVM: nVMX: Verify eVMCS revision id match supported eVMCS version on eVMCS VMPTRLD
7f9ad1dfa3c7 KVM: nVMX: Fix kernel info-leak when enabling KVM_CAP_HYPERV_ENLIGHTENED_VMCS more than once
12e0c6186ba4 x86/kvm/hyperv: don't clear VP assist pages on init
c4ebd6295ab7 KVM: nVMX: optimize prepare_vmcs02{,_full} for Enlightened VMCS case
b8bbab928fb1 KVM: nVMX: implement enlightened VMPTRLD and VMCLEAR
57b119da3594 KVM: nVMX: add KVM_CAP_HYPERV_ENLIGHTENED_VMCS capability
5d7a6443368e KVM: VMX: refactor evmcs_sanitize_exec_ctrls()
72bbf9358c36 KVM: hyperv: define VP assist page helpers
f21dd494506a KVM: x86: hyperv: optimize sparse VP set processing
e6b6c483ebe9 KVM: x86: hyperv: fix 'tlb_lush' typo
214ff83d4473 KVM: x86: hyperv: implement PV IPI send hypercalls
2cefc5feb80c KVM: x86: hyperv: optimize kvm_hv_flush_tlb() for vp_index == vcpu_idx case
0b0a31badb2d KVM: x86: hyperv: valid_bank_mask should be 'u64'
87ee613d0763 KVM: x86: hyperv: keep track of mismatched VP indexes
1779a39f7863 KVM: x86: hyperv: consistently use 'hv_vcpu' for 'struct kvm_vcpu_hv' variables
a812297c4fd9 KVM: x86: hyperv: optimize 'all cpus' case in kvm_hv_flush_tlb()
9170200ec0eb KVM: x86: hyperv: enforce vp_index < KVM_MAX_VCPUS
5f8bb004bca4 KVM: vmx: hyper-v: don't pass EPT configuration info to vmx_hv_remote_flush_tlb()
dbee3d02458b KVM: x86: VMX: fix build without hyper-v
c1aea9196ef4 KVM: x86: hyperv: declare KVM_CAP_HYPERV_TLBFLUSH capability
c70126764bf0 KVM: x86: hyperv: simplistic HVCALL_FLUSH_VIRTUAL_ADDRESS_{LIST,SPACE}_EX implementation
e2f11f42824b KVM: x86: hyperv: simplistic HVCALL_FLUSH_VIRTUAL_ADDRESS_{LIST,SPACE} implementation
56b9ae78303a KVM: x86: hyperv: do rep check for each hypercall separately
142c95da92e8 KVM: x86: hyperv: use defines when parsing hypercall parameters
696ca779a928 KVM: x86: fix #UD address of failed Hyper-V hypercalls
ceef7d10dfb6 KVM: x86: VMX: hyper-v: Enlightened MSR-Bitmap support
452a68d0ef34 KVM: hyperv: idr_find needs RCU protection
773e8a0425c9 x86/kvm: use Enlightened VMCS when running on Hyper-V
d4abc577bb03 x86/kvm: rename HV_X64_MSR_APIC_ASSIST_PAGE to HV_X64_MSR_VP_ASSIST_PAGE
d32ef547fdbb kvm: x86: hyperv: delete dead code in kvm_hv_hypercall()
915e6f78bd06 x86/kvm/hyper-v: inject #GP only when invalid SINTx vector is unmasked
98f65ad45844 x86/kvm/hyper-v: remove stale entries from vec_bitmap/auto_eoi_bitmap on vector change
a2e164e7f45a x86/kvm/hyper-v: add reenlightenment MSRs support
faeb7833eee0 kvm: x86: hyperv: guest->host event signaling via eventfd
cbc0236a4b3e kvm: x86: factor out kvm.arch.hyperv (de)init
0092e4346f49 x86/kvm: Support Hyper-V reenlightenment
b0c39dc68e3b x86/kvm: Pass stable clocksource to guests when running nested on Hyper-V

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

end of thread, other threads:[~2021-12-06  9:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-03  1:32 KVM patches for Hyper-V improvements Makarand Sonare
2021-12-03  8:09 ` Vitaly Kuznetsov
2021-12-03 18:38   ` Makarand Sonare
2021-12-06  9:52   ` Vitaly Kuznetsov

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).