From 85589c8591e4df86079d33868491f43974387302 Mon Sep 17 00:00:00 2001 From: Alexander Potapenko Date: Thu, 17 Jul 2025 18:35:35 +0200 Subject: sys/linux/dev_kvm_amd64.txt: define KVM_X86_SET_MSR_FILTER See https://docs.kernel.org/virt/kvm/api.html#kvm-x86-set-msr-filter --- sys/linux/dev_kvm_amd64.txt | 19 +++++++++++++++++++ sys/linux/dev_kvm_amd64.txt.const | 6 ++++++ 2 files changed, 25 insertions(+) (limited to 'sys') diff --git a/sys/linux/dev_kvm_amd64.txt b/sys/linux/dev_kvm_amd64.txt index 25d3eae00..0e1a27297 100644 --- a/sys/linux/dev_kvm_amd64.txt +++ b/sys/linux/dev_kvm_amd64.txt @@ -376,6 +376,7 @@ ioctl$KVM_SET_NR_MMU_PAGES(fd fd_kvmvm, cmd const[KVM_SET_NR_MMU_PAGES], arg int ioctl$KVM_GET_NR_MMU_PAGES(fd fd_kvmvm, cmd const[KVM_GET_NR_MMU_PAGES], arg intptr) ioctl$KVM_REINJECT_CONTROL(fd fd_kvmvm, cmd const[KVM_REINJECT_CONTROL], arg ptr[in, kvm_reinject_control]) ioctl$KVM_HYPERV_EVENTFD(fd fd_kvmvm, cmd const[KVM_HYPERV_EVENTFD], arg ptr[in, kvm_hyperv_eventfd]) +ioctl$KVM_X86_SET_MSR_FILTER(fd fd_kvmvm, cmd const[KVM_X86_SET_MSR_FILTER], arg ptr[in, kvm_msr_filter]) # Defined by include/linux/kvm_host.h, but for some reason wouldn't extract. define KVM_MAX_IRQ_ROUTES 4096 @@ -611,6 +612,24 @@ kvm_hyperv_eventfd { padding array[const[0, int32], 3] } +kvm_msr_filter_range_flags = KVM_MSR_FILTER_READ, KVM_MSR_FILTER_WRITE + +kvm_msr_filter_range { + flags flags[kvm_msr_filter_range_flags, int32] + nmsrs bitsize[bitmap, int32] + base int32 + bitmap ptr[in, array[int8]] +} + +define KVM_MSR_FILTER_DEFAULT_ALLOW (0 << 0) +define KVM_MSR_FILTER_DEFAULT_DENY (1 << 0) +kvm_msr_filter_flags = KVM_MSR_FILTER_DEFAULT_ALLOW, KVM_MSR_FILTER_DEFAULT_DENY + +kvm_msr_filter { + flags flags[kvm_msr_filter_flags, int32] + ranges array[kvm_msr_filter_range, KVM_MSR_FILTER_MAX_RANGES] +} + kvm_fpu { fpr array[const[0, int64], 16] fcw int16 diff --git a/sys/linux/dev_kvm_amd64.txt.const b/sys/linux/dev_kvm_amd64.txt.const index 02d5659c2..fe1c33f7c 100644 --- a/sys/linux/dev_kvm_amd64.txt.const +++ b/sys/linux/dev_kvm_amd64.txt.const @@ -79,6 +79,11 @@ KVM_MEMORY_ENCRYPT_OP = 386:3221532346, amd64:3221794490 KVM_MSR_EXIT_REASON_FILTER = 4 KVM_MSR_EXIT_REASON_INVAL = 1 KVM_MSR_EXIT_REASON_UNKNOWN = 2 +KVM_MSR_FILTER_DEFAULT_ALLOW = 0 +KVM_MSR_FILTER_DEFAULT_DENY = 1 +KVM_MSR_FILTER_MAX_RANGES = 16 +KVM_MSR_FILTER_READ = 1 +KVM_MSR_FILTER_WRITE = 2 KVM_NMI = 44698 KVM_REINJECT_CONTROL = 44657 KVM_SETUP_CPL3 = 8 @@ -164,6 +169,7 @@ KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS = 64 KVM_X86_QUIRK_OUT_7E_INC_RIP = 8 KVM_X86_SETUP_MCE = 1074310812 KVM_X86_SET_MCE = 1077980830 +KVM_X86_SET_MSR_FILTER = 386:1090825926, amd64:1099476678 KVM_X86_SEV_ES_VM_BIT = 8 KVM_X86_SEV_VM_BIT = 4 KVM_X86_SW_PROTECTED_VM_BIT = 2 -- cgit mrf-deployment