mirror of
https://github.com/torvalds/linux.git
synced 2024-12-14 23:25:54 +00:00
cb082bfab5
This commit defines the API for userspace and prepare the common functionalities to support per VM/VCPU binary stats data readings. The KVM stats now is only accessible by debugfs, which has some shortcomings this change series are supposed to fix: 1. The current debugfs stats solution in KVM could be disabled when kernel Lockdown mode is enabled, which is a potential rick for production. 2. The current debugfs stats solution in KVM is organized as "one stats per file", it is good for debugging, but not efficient for production. 3. The stats read/clear in current debugfs solution in KVM are protected by the global kvm_lock. Besides that, there are some other benefits with this change: 1. All KVM VM/VCPU stats can be read out in a bulk by one copy to userspace. 2. A schema is used to describe KVM statistics. From userspace's perspective, the KVM statistics are self-describing. 3. With the fd-based solution, a separate telemetry would be able to read KVM stats in a less privileged environment. 4. After the initial setup by reading in stats descriptors, a telemetry only needs to read the stats data itself, no more parsing or setup is needed. Reviewed-by: David Matlack <dmatlack@google.com> Reviewed-by: Ricardo Koller <ricarkol@google.com> Reviewed-by: Krish Sadhukhan <krish.sadhukhan@oracle.com> Reviewed-by: Fuad Tabba <tabba@google.com> Tested-by: Fuad Tabba <tabba@google.com> #arm64 Signed-off-by: Jing Zhang <jingzhangos@google.com> Message-Id: <20210618222709.1858088-3-jingzhangos@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
42 lines
1.1 KiB
Makefile
42 lines
1.1 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
ccflags-y += -I $(srctree)/arch/x86/kvm
|
|
ccflags-$(CONFIG_KVM_WERROR) += -Werror
|
|
|
|
ifeq ($(CONFIG_FRAME_POINTER),y)
|
|
OBJECT_FILES_NON_STANDARD_vmenter.o := y
|
|
endif
|
|
|
|
KVM := ../../../virt/kvm
|
|
|
|
kvm-y += $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o \
|
|
$(KVM)/eventfd.o $(KVM)/irqchip.o $(KVM)/vfio.o \
|
|
$(KVM)/dirty_ring.o $(KVM)/binary_stats.o
|
|
kvm-$(CONFIG_KVM_ASYNC_PF) += $(KVM)/async_pf.o
|
|
|
|
kvm-y += x86.o emulate.o i8259.o irq.o lapic.o \
|
|
i8254.o ioapic.o irq_comm.o cpuid.o pmu.o mtrr.o \
|
|
hyperv.o debugfs.o mmu/mmu.o mmu/page_track.o \
|
|
mmu/spte.o
|
|
|
|
ifdef CONFIG_HYPERV
|
|
kvm-y += kvm_onhyperv.o
|
|
endif
|
|
|
|
kvm-$(CONFIG_X86_64) += mmu/tdp_iter.o mmu/tdp_mmu.o
|
|
kvm-$(CONFIG_KVM_XEN) += xen.o
|
|
|
|
kvm-intel-y += vmx/vmx.o vmx/vmenter.o vmx/pmu_intel.o vmx/vmcs12.o \
|
|
vmx/evmcs.o vmx/nested.o vmx/posted_intr.o
|
|
kvm-intel-$(CONFIG_X86_SGX_KVM) += vmx/sgx.o
|
|
|
|
kvm-amd-y += svm/svm.o svm/vmenter.o svm/pmu.o svm/nested.o svm/avic.o svm/sev.o
|
|
|
|
ifdef CONFIG_HYPERV
|
|
kvm-amd-y += svm/svm_onhyperv.o
|
|
endif
|
|
|
|
obj-$(CONFIG_KVM) += kvm.o
|
|
obj-$(CONFIG_KVM_INTEL) += kvm-intel.o
|
|
obj-$(CONFIG_KVM_AMD) += kvm-amd.o
|