All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: Makarand Sonare <makarandsonare@google.com>
Cc: kvm <kvm@vger.kernel.org>
Subject: Re: KVM patches for Hyper-V improvements
Date: Mon, 06 Dec 2021 10:52:33 +0100	[thread overview]
Message-ID: <875ys26owu.fsf@redhat.com> (raw)
In-Reply-To: <87r1au6rfe.fsf@redhat.com>

[-- 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

      parent reply	other threads:[~2021-12-06  9:52 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=875ys26owu.fsf@redhat.com \
    --to=vkuznets@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=makarandsonare@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.