From: Paul Durrant <pdurrant@xxxxxxxxxx> Currently the shared_info page is treated as guest memory and the VMM informs KVM of its location using a GFN. However it is not guest memory as such; it's an overlay page. So the pfncache is pointlessly invalidated and re-activated to create a new mapping of the *same page* of memory every time the guest requests that shared_info be mapped into its address space. Avoid doing that by modifying the pfncache code to allow activation using a fixed userspace HVA as well as a GPA. Version 8 of the series has been substantially re-worked and includes several clean-up patches, particlarly the non-trivial clean-up patches: "pfncache: remove KVM_GUEST_USES_PFN usage" and "xen: split up kvm_xen_set_evtchn_fast()". Each patch carries its own version history. Paul Durrant (15): KVM: pfncache: Add a map helper function KVM: pfncache: remove unnecessary exports KVM: xen: mark guest pages dirty with the pfncache lock held KVM: pfncache: add a mark-dirty helper KVM: pfncache: remove KVM_GUEST_USES_PFN usage KVM: pfncache: stop open-coding offset_in_page() KVM: pfncache: include page offset in uhva and use it consistently KVM: pfncache: allow a cache to be activated with a fixed (userspace) HVA KVM: xen: allow shared_info to be mapped by fixed HVA KVM: xen: allow vcpu_info to be mapped by fixed HVA KVM: selftests / xen: map shared_info using HVA rather than GFN KVM: selftests / xen: re-map vcpu_info using HVA rather than GPA KVM: xen: advertize the KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA capability KVM: xen: split up kvm_xen_set_evtchn_fast() KVM: xen: allow vcpu_info content to be 'safely' copied Documentation/virt/kvm/api.rst | 53 +++- arch/x86/kvm/x86.c | 7 +- arch/x86/kvm/xen.c | 260 +++++++++++------- include/linux/kvm_host.h | 38 ++- include/linux/kvm_types.h | 8 - include/uapi/linux/kvm.h | 9 +- .../selftests/kvm/x86_64/xen_shinfo_test.c | 59 +++- virt/kvm/pfncache.c | 175 ++++++------ 8 files changed, 374 insertions(+), 235 deletions(-) base-commit: 45b890f7689eb0aba454fc5831d2d79763781677 --- Cc: Borislav Petkov <bp@xxxxxxxxx> Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> Cc: David Woodhouse <dwmw2@xxxxxxxxxxxxx> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Cc: Sean Christopherson <seanjc@xxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: x86@xxxxxxxxxx -- 2.39.2