aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
authorAlexander Potapenko <glider@google.com>2025-07-17 18:35:35 +0200
committerAlexander Potapenko <glider@google.com>2025-07-18 11:16:37 +0000
commit85589c8591e4df86079d33868491f43974387302 (patch)
tree6621c41548ab4beb0126db5da5f723e7209f8025 /sys/linux
parentd79f526c65078b72958d88229cecab93a824d02e (diff)
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
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/dev_kvm_amd64.txt19
-rw-r--r--sys/linux/dev_kvm_amd64.txt.const6
2 files changed, 25 insertions, 0 deletions
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