From: Paolo Bonzini <pbonzini@redhat.com>
To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: mhal@rbox.co, seanjc@google.com
Subject: [PATCH v3 00/16] KVM: x86: Always use non-compat vcpu_runstate_info size for gfn=>pfn cache
Date: Thu, 27 Oct 2022 12:18:33 -0400 [thread overview]
Message-ID: <20221027161849.2989332-1-pbonzini@redhat.com> (raw)
The highlights are two fixes for bugs where "destroying" and "initializing"
a gfn=>pfn cache while it is being accessed results in various forms of
badness, e.g. re-initialization of an in-use lock, consuming a NULL pointer,
potential memory corruption, etc...
Everything else is cleanup to make the gpc APIs easier to use and harder
to use incorrectly.
The main difference with v2 is in playing it safer with 32-bit guests that
place the runstate info close to the end of a page. This is a preexisting
issue that is fixed here because it affects the gfn-to-pfn cache API.
In particular, compared to v2 the length is passed at activation time
instead of initialization time. This affects patch 7 ("KVM: Store
gfn_to_pfn_cache length at activation time"), which now incorporates some
parts of patch 13 ("KVM: Drop @gpa from exported gfn=>pfn cache check()
and refresh() helpers") to introduce __kvm_gpc_refresh.
Initially I wanted to restrict the ordering between setting Xen VM
and vCPU attributes. In the end I left that patch out because it may
complicate the reset sequence further.
Paolo
Michal Luczaj (8):
KVM: Initialize gfn_to_pfn_cache locks in dedicated helper
KVM: Shorten gfn_to_pfn_cache function names
KVM: x86: Remove unused argument in gpc_unmap_khva()
KVM: Store immutable gfn_to_pfn_cache properties
KVM: Use gfn_to_pfn_cache's immutable "kvm" in kvm_gpc_check()
KVM: Clean up hva_to_pfn_retry()
KVM: Use gfn_to_pfn_cache's immutable "kvm" in kvm_gpc_refresh()
KVM: selftests: Add tests in xen_shinfo_test to detect lock races
Paolo Bonzini (2):
KVM: x86: set gfn-to-pfn cache length consistently with VM word size
KVM: Store gfn_to_pfn_cache length at activation time
Sean Christopherson (6):
KVM: Reject attempts to consume or refresh inactive gfn_to_pfn_cache
KVM: Drop KVM's API to allow temprorarily unmapping gfn=>pfn cache
KVM: Do not partially reinitialize gfn=>pfn cache during activation
KVM: Drop @gpa from exported gfn=>pfn cache check() and refresh()
helpers
KVM: Skip unnecessary "unmap" if gpc is already valid during refresh
KVM: selftests: Mark "guest_saw_irq" as volatile in xen_shinfo_test
arch/x86/kvm/x86.c | 24 +--
arch/x86/kvm/xen.c | 121 ++++++++------
include/linux/kvm_host.h | 70 ++++----
include/linux/kvm_types.h | 2 +
.../selftests/kvm/x86_64/xen_shinfo_test.c | 142 +++++++++++++++-
virt/kvm/pfncache.c | 155 ++++++++++--------
6 files changed, 345 insertions(+), 169 deletions(-)
--
2.31.1
next reply other threads:[~2022-10-27 16:19 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-27 16:18 Paolo Bonzini [this message]
2022-10-27 16:18 ` [PATCH 01/16] KVM: Initialize gfn_to_pfn_cache locks in dedicated helper Paolo Bonzini
2022-10-27 16:18 ` [PATCH 02/16] KVM: Reject attempts to consume or refresh inactive gfn_to_pfn_cache Paolo Bonzini
2022-10-27 16:18 ` [PATCH 03/16] KVM: x86: set gfn-to-pfn cache length consistently with VM word size Paolo Bonzini
2022-10-27 17:22 ` Sean Christopherson
2022-10-28 11:36 ` Paolo Bonzini
2022-10-28 16:31 ` Sean Christopherson
2022-11-13 13:32 ` David Woodhouse
2022-11-13 13:36 ` David Woodhouse
2022-11-14 11:27 ` Durrant, Paul
2022-11-15 0:16 ` David Woodhouse
2022-11-16 22:49 ` David Woodhouse
[not found] ` <994314051112513787cc4bd0c7d2694e15190d0f.camel@amazon.co.uk>
2022-11-14 16:33 ` Sean Christopherson
2022-11-14 17:36 ` [EXTERNAL][PATCH " David Woodhouse
2022-11-14 16:58 ` [PATCH " Paolo Bonzini
2022-10-27 16:18 ` [PATCH 04/16] KVM: Shorten gfn_to_pfn_cache function names Paolo Bonzini
2022-10-27 16:18 ` [PATCH 05/16] KVM: x86: Remove unused argument in gpc_unmap_khva() Paolo Bonzini
2022-10-27 16:18 ` [PATCH 06/16] KVM: Store immutable gfn_to_pfn_cache properties Paolo Bonzini
2022-10-27 16:18 ` [PATCH 07/16] KVM: Store gfn_to_pfn_cache length at activation time Paolo Bonzini
2022-10-27 16:18 ` [PATCH 08/16] KVM: Use gfn_to_pfn_cache's immutable "kvm" in kvm_gpc_check() Paolo Bonzini
2022-10-27 16:18 ` [PATCH 09/16] KVM: Clean up hva_to_pfn_retry() Paolo Bonzini
2022-10-27 16:18 ` [PATCH 10/16] KVM: Use gfn_to_pfn_cache's immutable "kvm" in kvm_gpc_refresh() Paolo Bonzini
2022-10-27 16:18 ` [PATCH 11/16] KVM: Drop KVM's API to allow temprorarily unmapping gfn=>pfn cache Paolo Bonzini
2022-10-27 16:18 ` [PATCH 12/16] KVM: Do not partially reinitialize gfn=>pfn cache during activation Paolo Bonzini
2022-10-27 16:18 ` [PATCH 13/16] KVM: Drop @gpa from exported gfn=>pfn cache check() and refresh() helpers Paolo Bonzini
2022-10-27 16:18 ` [PATCH 14/16] KVM: Skip unnecessary "unmap" if gpc is already valid during refresh Paolo Bonzini
2022-10-27 16:18 ` [PATCH 15/16] KVM: selftests: Add tests in xen_shinfo_test to detect lock races Paolo Bonzini
2022-10-27 16:18 ` [PATCH 16/16] KVM: selftests: Mark "guest_saw_irq" as volatile in xen_shinfo_test Paolo Bonzini
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=20221027161849.2989332-1-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhal@rbox.co \
--cc=seanjc@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.