linux/arch/x86/kvm
Yan Zhao b83ab124de KVM: x86: Add a new page-track hook to handle memslot deletion
Add a new page-track hook, track_remove_region(), that is called when a
memslot DELETE operation is about to be committed.  The "remove" hook
will be used by KVMGT and will effectively replace the existing
track_flush_slot() altogether now that KVM itself doesn't rely on the
"flush" hook either.

The "flush" hook is flawed as it's invoked before the memslot operation
is guaranteed to succeed, i.e. KVM might ultimately keep the existing
memslot without notifying external page track users, a.k.a. KVMGT.  In
practice, this can't currently happen on x86, but there are no guarantees
that won't change in the future, not to mention that "flush" does a very
poor job of describing what is happening.

Pass in the gfn+nr_pages instead of the slot itself so external users,
i.e. KVMGT, don't need to exposed to KVM internals (memslots).  This will
help set the stage for additional cleanups to the page-track APIs.

Opportunistically align the existing srcu_read_lock_held() usage so that
the new case doesn't stand out like a sore thumb (and not aligning the
new code makes bots unhappy).

Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
Tested-by: Yongwei Ma <yongwei.ma@intel.com>
Signed-off-by: Yan Zhao <yan.y.zhao@intel.com>
Co-developed-by: Sean Christopherson <seanjc@google.com>
Link: https://lore.kernel.org/r/20230729013535.1070024-19-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-08-31 14:07:25 -04:00
..
mmu KVM: x86: Add a new page-track hook to handle memslot deletion 2023-08-31 14:07:25 -04:00
svm KVM x86 changes for 6.6: 2023-08-31 13:36:33 -04:00
vmx KVM x86 changes for 6.6: 2023-08-31 13:36:33 -04:00
.gitignore KVM: x86: use a separate asm-offsets.c file 2022-11-09 12:10:17 -05:00
cpuid.c KVM x86 changes for 6.6: 2023-08-31 13:36:33 -04:00
cpuid.h KVM: x86: Add a framework for enabling KVM-governed x86 features 2023-08-17 11:38:27 -07:00
debugfs.c KVM: x86: Unify pr_fmt to use module name for all KVM modules 2022-12-29 15:47:35 -05:00
emulate.c KVM: x86: Remove break statements that will never be executed 2023-08-17 11:28:00 -07:00
fpu.h KVM: x86: Move FPU register accessors into fpu.h 2021-06-17 13:09:24 -04:00
governed_features.h KVM: nSVM: Use KVM-governed feature framework to track "vNMI enabled" 2023-08-17 11:43:31 -07:00
hyperv.c KVM: x86: Remove break statements that will never be executed 2023-08-17 11:28:00 -07:00
hyperv.h KVM: x86: Hyper-V invariant TSC control 2022-12-29 15:33:29 -05:00
i8254.c KVM: x86: Unify pr_fmt to use module name for all KVM modules 2022-12-29 15:47:35 -05:00
i8254.h KVM: x86: PIT: Preserve state of speaker port data bit 2022-06-08 13:06:20 -04:00
i8259.c KVM: x86: Fix poll command 2023-06-01 13:44:13 -07:00
ioapic.c KVM: x86/ioapic: Resample the pending state of an IRQ when unmasking 2023-03-27 10:13:28 -04:00
ioapic.h x86/kvm: remove unused ack_notifier callbacks 2021-11-18 07:05:57 -05:00
irq_comm.c KVM: x86: Unify pr_fmt to use module name for all KVM modules 2022-12-29 15:47:35 -05:00
irq.c KVM: x86: Unify pr_fmt to use module name for all KVM modules 2022-12-29 15:47:35 -05:00
irq.h x86/kvm: remove unused ack_notifier callbacks 2021-11-18 07:05:57 -05:00
Kconfig KVM: x86/mmu: Replace MMU_DEBUG with proper KVM_PROVE_MMU Kconfig 2023-08-31 13:48:47 -04:00
kvm_cache_regs.h KVM: x86: Add helpers to query individual CR0/CR4 bits 2023-03-22 10:10:53 -07:00
kvm_emulate.h KVM: x86: Remove x86_emulate_ops::guest_has_long_mode 2023-08-02 15:47:27 -07:00
kvm_onhyperv.c KVM: x86/mmu: Move filling of Hyper-V's TLB range struct into Hyper-V code 2023-04-10 15:17:29 -07:00
kvm_onhyperv.h s390: 2023-05-01 12:06:20 -07:00
kvm-asm-offsets.c KVM: SVM: move MSR_IA32_SPEC_CTRL save/restore to assembly 2022-11-09 12:25:53 -05:00
lapic.c KVM x86 changes for 6.6: 2023-08-31 13:36:33 -04:00
lapic.h KVM: x86: Split out logic to generate "readable" APIC regs mask to helper 2023-01-24 10:04:35 -08:00
Makefile KVM: x86: Introduce .hv_inject_synthetic_vmexit_post_tlb_flush() nested hook 2022-11-18 12:59:13 -05:00
mmu.h KVM: x86/mmu: Don't bounce through page-track mechanism for guest PTEs 2023-08-31 13:49:00 -04:00
mtrr.c KVM: x86: Make kvm_mtrr_valid() static now that there are no external users 2023-06-01 13:41:06 -07:00
pmu.c KVM: x86/pmu: Move .hw_event_available() check out of PMC filter helper 2023-08-02 16:44:36 -07:00
pmu.h KVM: x86/pmu: Disable vPMU if the minimum num of counters isn't met 2023-06-06 17:31:44 -07:00
reverse_cpuid.h KVM: x86: Advertise AMX-COMPLEX CPUID to userspace 2023-08-03 15:40:17 -07:00
smm.c KVM: x86: Use emulator callbacks instead of duplicating "host flags" 2023-01-31 17:29:09 -08:00
smm.h KVM: x86: smm: preserve interrupt shadow in SMRAM 2022-11-09 12:31:26 -05:00
trace.h KVM: x86/xen: Add CPL to Xen hypercall tracepoint 2022-11-28 13:31:01 -05:00
tss.h
x86.c KVM: x86: Add a new page-track hook to handle memslot deletion 2023-08-31 14:07:25 -04:00
x86.h KVM: x86: Snapshot host's MSR_IA32_ARCH_CAPABILITIES 2023-08-02 16:37:26 -07:00
xen.c KVM: x86/xen: update Xen CPUID Leaf 4 (tsc info) sub-leaves, if present 2023-01-24 10:05:20 -08:00
xen.h KVM: x86/xen: update Xen CPUID Leaf 4 (tsc info) sub-leaves, if present 2023-01-24 10:05:20 -08:00