From 6632e0eb1ecd3776993a79459a8b5ed277ec0a59 Mon Sep 17 00:00:00 2001 From: Alexander Potapenko Date: Fri, 9 Aug 2024 10:45:40 +0200 Subject: sys/linux: add ARM VGIC device groups/attributes Do not specify the attribute input types for now. --- sys/linux/dev_kvm.txt | 25 ++++++++++++++++++++++--- sys/linux/dev_kvm.txt.const | 20 ++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) (limited to 'sys/linux') diff --git a/sys/linux/dev_kvm.txt b/sys/linux/dev_kvm.txt index c1278a177..f3b6932a4 100644 --- a/sys/linux/dev_kvm.txt +++ b/sys/linux/dev_kvm.txt @@ -435,16 +435,35 @@ kvm_reg_list { reg array[int64] } -kvm_device_attr { +kvm_device_attr [ + attr_arm64 kvm_device_attr_arm64 + attr_other kvm_device_attr_generic +] + +kvm_device_attr_generic { flags const[0, int32] group int32 attr int64 addr ptr64[in, int64] } +kvm_device_attr_arm64 { + flags const[0, int32] + group flags[kvm_device_attr_arm64_groups, int32] + attr flags[kvm_device_attr_arm64_attrs, int64] + addr ptr64[in, int64] +} + +# Assorted device attributes from +# - https://docs.kernel.org/virt/kvm/devices/arm-vgic-its.html, +# - https://docs.kernel.org/virt/kvm/devices/arm-vgic.html, +# - https://docs.kernel.org/virt/kvm/devices/arm-vgic-v3.html +kvm_device_attr_arm64_groups = KVM_DEV_ARM_VGIC_GRP_ADDR, KVM_DEV_ARM_VGIC_GRP_DIST_REGS, KVM_DEV_ARM_VGIC_GRP_CPU_REGS, KVM_DEV_ARM_VGIC_GRP_NR_IRQS, KVM_DEV_ARM_VGIC_GRP_CTRL, KVM_DEV_ARM_VGIC_GRP_REDIST_REGS, KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS, KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO, KVM_DEV_ARM_VGIC_GRP_ITS_REGS +kvm_device_attr_arm64_attrs = 0, KVM_VGIC_ITS_ADDR_TYPE, KVM_VGIC_V2_ADDR_TYPE_DIST, KVM_VGIC_V2_ADDR_TYPE_CPU, KVM_VGIC_V3_ADDR_TYPE_DIST, KVM_VGIC_V3_ADDR_TYPE_REDIST, KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION, KVM_DEV_ARM_VGIC_CTRL_INIT, KVM_DEV_ARM_ITS_CTRL_RESET, KVM_DEV_ARM_ITS_SAVE_TABLES, KVM_DEV_ARM_ITS_RESTORE_TABLES, KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES + kvm_device_attr_vm [ attr_arm64 kvm_device_attr_vm_arm64 - attr_other kvm_device_attr + attr_other kvm_device_attr_generic ] kvm_device_attr_vcpu [ @@ -454,7 +473,7 @@ kvm_device_attr_vcpu [ attr_set_pmu kvm_vcpu_attr_set_pmu attr_irq_timer kvm_vcpu_attr_irq_timer attr_pvtime_ipa kvm_vcpu_attr_pvtime_ipa - attr_other kvm_device_attr + attr_other kvm_device_attr_generic ] kvm_vm_attr_group_arm64 = KVM_ARM_VM_SMCCC_CTRL diff --git a/sys/linux/dev_kvm.txt.const b/sys/linux/dev_kvm.txt.const index 1a0ae35d0..7a2d9fa82 100644 --- a/sys/linux/dev_kvm.txt.const +++ b/sys/linux/dev_kvm.txt.const @@ -67,6 +67,20 @@ KVM_CREATE_VCPU = 44609, mips64le:ppc64le:536915521 KVM_CREATE_VM = 44545, mips64le:ppc64le:536915457 KVM_DEASSIGN_DEV_IRQ = 1077980789 KVM_DEASSIGN_PCI_DEVICE = 1077980786 +KVM_DEV_ARM_ITS_CTRL_RESET = 386:amd64:mips64le:ppc64le:s390x:???, arm64:4 +KVM_DEV_ARM_ITS_RESTORE_TABLES = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2 +KVM_DEV_ARM_ITS_SAVE_TABLES = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 +KVM_DEV_ARM_VGIC_CTRL_INIT = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 +KVM_DEV_ARM_VGIC_GRP_ADDR = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 +KVM_DEV_ARM_VGIC_GRP_CPU_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2 +KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:6 +KVM_DEV_ARM_VGIC_GRP_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:4 +KVM_DEV_ARM_VGIC_GRP_DIST_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 +KVM_DEV_ARM_VGIC_GRP_ITS_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:8 +KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO = 386:amd64:mips64le:ppc64le:s390x:???, arm64:7 +KVM_DEV_ARM_VGIC_GRP_NR_IRQS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3 +KVM_DEV_ARM_VGIC_GRP_REDIST_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:5 +KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3 KVM_DEV_TYPE_ARM_PV_TIME = 10 KVM_DEV_TYPE_ARM_VGIC_ITS = 8 KVM_DEV_TYPE_ARM_VGIC_V2 = 5 @@ -222,6 +236,12 @@ KVM_STATE_NESTED_SMM_VMXON = 2, arm64:mips64le:ppc64le:s390x:??? KVM_TPR_ACCESS_REPORTING = 3223891602 KVM_TRANSLATE = 3222843013 KVM_UNREGISTER_COALESCED_MMIO = 1074835048, mips64le:ppc64le:2148576872 +KVM_VGIC_ITS_ADDR_TYPE = 386:amd64:mips64le:ppc64le:s390x:???, arm64:4 +KVM_VGIC_V2_ADDR_TYPE_CPU = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 +KVM_VGIC_V2_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 +KVM_VGIC_V3_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2 +KVM_VGIC_V3_ADDR_TYPE_REDIST = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3 +KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION = 386:amd64:mips64le:ppc64le:s390x:???, arm64:5 KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK = 2, arm64:mips64le:ppc64le:s390x:??? KVM_X2APIC_API_USE_32BIT_IDS = 1, arm64:mips64le:ppc64le:s390x:??? KVM_X86_DISABLE_EXITS_CSTATE = 8 -- cgit mrf-deployment