diff --git a/executor/common_linux.h b/executor/common_linux.h index 2cb04060e9c2..de393227dd2b 100644 --- a/executor/common_linux.h +++ b/executor/common_linux.h @@ -3199,8 +3199,7 @@ static long syz_mount_image( #endif #if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu || __NR_syz_kvm_vgic_v3_setup || __NR_syz_kvm_setup_syzos_vm || __NR_syz_kvm_add_vcpu || __NR_syz_kvm_assert_syzos_uexit || __NR_syz_kvm_assert_reg || __NR_syz_kvm_assert_syzos_kvm_exit -// KVM is not yet supported on RISC-V -#if !GOARCH_riscv64 && !GOARCH_arm +#if !GOARCH_arm #include #include #include @@ -3217,7 +3216,7 @@ static long syz_mount_image( #include "common_kvm_arm64.h" #elif GOARCH_ppc64 || GOARCH_ppc64le #include "common_kvm_ppc64.h" -#elif !GOARCH_arm && (SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu) +#elif SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu static volatile long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volatile long a2, volatile long a3, volatile long a4, volatile long a5, volatile long a6, volatile long a7) { return 0; diff --git a/sys/linux/dev_kvm.txt b/sys/linux/dev_kvm.txt index 13c9c7c6708a..73e5edccc46d 100644 --- a/sys/linux/dev_kvm.txt +++ b/sys/linux/dev_kvm.txt @@ -1,7 +1,7 @@ # Copyright 2015 syzkaller project authors. All rights reserved. # Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. -meta arches["386", "amd64", "arm64", "mips64le", "ppc64le", "s390x"] +meta arches["386", "amd64", "arm64", "mips64le", "ppc64le", "s390x", "riscv64"] include include diff --git a/sys/linux/dev_kvm.txt.const b/sys/linux/dev_kvm.txt.const index 959e8653269a..f16f38b8e5a9 100644 --- a/sys/linux/dev_kvm.txt.const +++ b/sys/linux/dev_kvm.txt.const @@ -1,18 +1,18 @@ # Code generated by syz-sysgen. DO NOT EDIT. -arches = 386, amd64, arm64, mips64le, ppc64le, s390x +arches = 386, amd64, arm64, mips64le, ppc64le, s390x, riscv64 AT_FDCWD = 18446744073709551516 -KVM_ARM_VCPU_PMU_V3_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 -KVM_ARM_VCPU_PMU_V3_FILTER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2 -KVM_ARM_VCPU_PMU_V3_INIT = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 -KVM_ARM_VCPU_PMU_V3_IRQ = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 -KVM_ARM_VCPU_PMU_V3_SET_PMU = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3 -KVM_ARM_VCPU_PVTIME_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2 -KVM_ARM_VCPU_PVTIME_IPA = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 -KVM_ARM_VCPU_TIMER_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 -KVM_ARM_VCPU_TIMER_IRQ_PTIMER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 -KVM_ARM_VCPU_TIMER_IRQ_VTIMER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 -KVM_ARM_VM_SMCCC_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 -KVM_ARM_VM_SMCCC_FILTER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 +KVM_ARM_VCPU_PMU_V3_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_ARM_VCPU_PMU_V3_FILTER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2 +KVM_ARM_VCPU_PMU_V3_INIT = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_ARM_VCPU_PMU_V3_IRQ = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_ARM_VCPU_PMU_V3_SET_PMU = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3 +KVM_ARM_VCPU_PVTIME_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2 +KVM_ARM_VCPU_PVTIME_IPA = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_ARM_VCPU_TIMER_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_ARM_VCPU_TIMER_IRQ_PTIMER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_ARM_VCPU_TIMER_IRQ_VTIMER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_ARM_VM_SMCCC_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_ARM_VM_SMCCC_FILTER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 KVM_ASSIGN_DEV_IRQ = 1077980784 KVM_ASSIGN_PCI_DEVICE = 2151722601 KVM_ASSIGN_SET_INTX_MASK = 1077980836 @@ -33,20 +33,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_ARM_ITS_CTRL_RESET = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:4 +KVM_DEV_ARM_ITS_RESTORE_TABLES = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2 +KVM_DEV_ARM_ITS_SAVE_TABLES = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_DEV_ARM_VGIC_CTRL_INIT = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_DEV_ARM_VGIC_GRP_ADDR = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_DEV_ARM_VGIC_GRP_CPU_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2 +KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:6 +KVM_DEV_ARM_VGIC_GRP_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:4 +KVM_DEV_ARM_VGIC_GRP_DIST_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_DEV_ARM_VGIC_GRP_ITS_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:8 +KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:7 +KVM_DEV_ARM_VGIC_GRP_NR_IRQS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3 +KVM_DEV_ARM_VGIC_GRP_REDIST_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:5 +KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3 KVM_DEV_TYPE_ARM_PV_TIME = 10 KVM_DEV_TYPE_ARM_VGIC_ITS = 8 KVM_DEV_TYPE_ARM_VGIC_V2 = 5 @@ -72,21 +72,21 @@ KVM_GET_DEVICE_ATTR = 1075359458, mips64le:ppc64le:2149101282 KVM_GET_DIRTY_LOG = 1074835010, mips64le:ppc64le:2148576834 KVM_GET_MP_STATE = 2147790488, mips64le:ppc64le:1074048664 KVM_GET_ONE_REG = 1074835115, mips64le:ppc64le:2148576939 -KVM_GET_REGS = 2156965505, arm64:2204151425, mips64le:1092136577, ppc64le:1099476609, s390x:2155916929 +KVM_GET_REGS = 2156965505, arm64:2204151425, mips64le:1092136577, ppc64le:1099476609, s390x:2155916929, riscv64:2147528321 KVM_GET_REG_LIST = 3221794480 -KVM_GET_SREGS = 2167975555, arm64:2147528323, mips64le:1073786499, ppc64le:1154526851, s390x:2160111235 +KVM_GET_SREGS = 2167975555, arm64:riscv64:2147528323, mips64le:1073786499, ppc64le:1154526851, s390x:2160111235 KVM_GET_STATS_FD = 44750, mips64le:ppc64le:536915662 -KVM_GET_VCPU_EVENTS = 2151722655, mips64le:ppc64le:s390x:??? +KVM_GET_VCPU_EVENTS = 2151722655, mips64le:ppc64le:s390x:riscv64:??? KVM_GET_VCPU_MMAP_SIZE = 44548, mips64le:ppc64le:536915460 -KVM_GUESTDBG_BLOCKIRQ = 1048576, arm64:mips64le:ppc64le:s390x:??? +KVM_GUESTDBG_BLOCKIRQ = 1048576, arm64:mips64le:ppc64le:s390x:riscv64:??? KVM_GUESTDBG_ENABLE = 1 -KVM_GUESTDBG_EXIT_PENDING = 386:amd64:arm64:mips64le:ppc64le:???, s390x:268435456 -KVM_GUESTDBG_INJECT_BP = 524288, arm64:mips64le:ppc64le:s390x:??? -KVM_GUESTDBG_INJECT_DB = 262144, arm64:mips64le:ppc64le:s390x:??? +KVM_GUESTDBG_EXIT_PENDING = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:268435456 +KVM_GUESTDBG_INJECT_BP = 524288, arm64:mips64le:ppc64le:s390x:riscv64:??? +KVM_GUESTDBG_INJECT_DB = 262144, arm64:mips64le:ppc64le:s390x:riscv64:??? KVM_GUESTDBG_SINGLESTEP = 2 -KVM_GUESTDBG_USE_HW = 386:amd64:mips64le:ppc64le:s390x:???, arm64:131072 -KVM_GUESTDBG_USE_HW_BP = 131072, arm64:mips64le:???, s390x:65536 -KVM_GUESTDBG_USE_SW_BP = 65536, mips64le:s390x:??? +KVM_GUESTDBG_USE_HW = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:131072 +KVM_GUESTDBG_USE_HW_BP = 131072, arm64:mips64le:riscv64:???, s390x:65536 +KVM_GUESTDBG_USE_SW_BP = 65536, mips64le:s390x:riscv64:??? KVM_HAS_DEVICE_ATTR = 1075359459, mips64le:ppc64le:2149101283 KVM_INTERRUPT = 1074048646, mips64le:ppc64le:2147790470 KVM_IOEVENTFD = 1077980793, mips64le:ppc64le:2151722617 @@ -118,19 +118,19 @@ KVM_MP_STATE_SIPI_RECEIVED = 4 KVM_MP_STATE_STOPPED = 5 KVM_MP_STATE_UNINITIALIZED = 1 KVM_MSI_VALID_DEVID = 1 -KVM_PMU_EVENT_ALLOW = 0, mips64le:ppc64le:s390x:??? -KVM_PMU_EVENT_DENY = 1, mips64le:ppc64le:s390x:??? +KVM_PMU_EVENT_ALLOW = 0, mips64le:ppc64le:s390x:riscv64:??? +KVM_PMU_EVENT_DENY = 1, mips64le:ppc64le:s390x:riscv64:??? KVM_PPC_ALLOCATE_HTAB = 3221532327 -KVM_PPC_GET_PVINFO = 386:amd64:arm64:mips64le:s390x:???, ppc64le:2155916961 -KVM_PPC_GET_SMMU_INFO = 386:amd64:arm64:mips64le:s390x:???, ppc64le:1112583846 +KVM_PPC_GET_PVINFO = 386:amd64:arm64:mips64le:s390x:riscv64:???, ppc64le:2155916961 +KVM_PPC_GET_SMMU_INFO = 386:amd64:arm64:mips64le:s390x:riscv64:???, ppc64le:1112583846 KVM_PRE_FAULT_MEMORY = 3225464533 KVM_REGISTER_COALESCED_MMIO = 1074835047, mips64le:ppc64le:2148576871 KVM_RESET_DIRTY_RINGS = 44743, mips64le:ppc64le:536915655 KVM_RUN = 44672, mips64le:ppc64le:536915584 KVM_RUN_SIZE = 2352, s390x:2368 -KVM_S390_INTERRUPT = 386:amd64:arm64:mips64le:ppc64le:???, s390x:1074835092 -KVM_S390_UCAS_MAP = 386:amd64:arm64:mips64le:ppc64le:???, s390x:1075359312 -KVM_S390_UCAS_UNMAP = 386:amd64:arm64:mips64le:ppc64le:???, s390x:1075359313 +KVM_S390_INTERRUPT = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:1074835092 +KVM_S390_UCAS_MAP = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:1075359312 +KVM_S390_UCAS_UNMAP = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:1075359313 KVM_S390_VCPU_FAULT = 1074310738, 386:1074048594, mips64le:ppc64le:2148052562 KVM_SETUP_PPC64_DR = 4 KVM_SETUP_PPC64_IR = 2 @@ -141,25 +141,25 @@ KVM_SET_DEVICE_ATTR = 1075359457, mips64le:ppc64le:2149101281 KVM_SET_GSI_ROUTING = 1074310762, mips64le:ppc64le:2148052586 KVM_SET_MP_STATE = 1074048665, mips64le:ppc64le:2147790489 KVM_SET_ONE_REG = 1074835116, mips64le:ppc64le:2148576940 -KVM_SET_REGS = 1083223682, arm64:1130409602, mips64le:2165878402, ppc64le:2173218434, s390x:1082175106 +KVM_SET_REGS = 1083223682, arm64:1130409602, mips64le:2165878402, ppc64le:2173218434, s390x:1082175106, riscv64:1073786498 KVM_SET_SIGNAL_MASK = 1074048651, mips64le:ppc64le:2147790475 -KVM_SET_SREGS = 1094233732, arm64:1073786500, mips64le:2147528324, ppc64le:2228268676, s390x:1086369412 +KVM_SET_SREGS = 1094233732, arm64:riscv64:1073786500, mips64le:2147528324, ppc64le:2228268676, s390x:1086369412 KVM_SET_USER_MEMORY_REGION = 1075883590, mips64le:ppc64le:2149625414 KVM_SET_USER_MEMORY_REGION2 = 1084272201, mips64le:ppc64le:2158014025 -KVM_SET_VCPU_EVENTS = 1077980832, mips64le:ppc64le:s390x:??? +KVM_SET_VCPU_EVENTS = 1077980832, mips64le:ppc64le:s390x:riscv64:??? KVM_SIGNAL_MSI = 1075883685, mips64le:ppc64le:2149625509 -KVM_SMCCC_FILTER_DENY = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1 -KVM_SMCCC_FILTER_FWD_TO_USER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2 -KVM_SMCCC_FILTER_HANDLE = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0 +KVM_SMCCC_FILTER_DENY = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_SMCCC_FILTER_FWD_TO_USER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2 +KVM_SMCCC_FILTER_HANDLE = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 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_VGIC_ITS_ADDR_TYPE = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:4 +KVM_VGIC_V2_ADDR_TYPE_CPU = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1 +KVM_VGIC_V2_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0 +KVM_VGIC_V3_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2 +KVM_VGIC_V3_ADDR_TYPE_REDIST = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3 +KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:5 VMCS12_SIZE = 4096 -__NR_ioctl = 54, amd64:16, arm64:29, mips64le:5015 -__NR_mmap = 90, 386:192, amd64:9, arm64:222, mips64le:5009 -__NR_mmap2 = 386:192, amd64:arm64:mips64le:ppc64le:s390x:??? -__NR_openat = 386:295, amd64:257, arm64:56, mips64le:5247, ppc64le:286, s390x:288 +__NR_ioctl = 54, amd64:16, arm64:riscv64:29, mips64le:5015 +__NR_mmap = 90, 386:192, amd64:9, arm64:riscv64:222, mips64le:5009 +__NR_mmap2 = 386:192, amd64:arm64:mips64le:ppc64le:s390x:riscv64:??? +__NR_openat = 386:295, amd64:257, arm64:riscv64:56, mips64le:5247, ppc64le:286, s390x:288 diff --git a/sys/linux/dev_kvm_riscv64.txt b/sys/linux/dev_kvm_riscv64.txt new file mode 100644 index 000000000000..1079853a7419 --- /dev/null +++ b/sys/linux/dev_kvm_riscv64.txt @@ -0,0 +1,14 @@ +# Copyright 2026 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +# RISCV64-specific KVM syscall declarations. + +meta arches["riscv64"] + +include + +ioctl$KVM_SET_GUEST_DEBUG_riscv64(fd fd_kvmcpu, cmd const[KVM_SET_GUEST_DEBUG], arg ptr[in, kvm_guest_debug[kvm_guest_debug_arch_riscv64]]) + +kvm_guest_debug_arch_riscv64 { + reg array[int64, 8] +} diff --git a/sys/linux/dev_kvm_riscv64.txt.const b/sys/linux/dev_kvm_riscv64.txt.const new file mode 100644 index 000000000000..051f32ed6fa2 --- /dev/null +++ b/sys/linux/dev_kvm_riscv64.txt.const @@ -0,0 +1,4 @@ +# Code generated by syz-sysgen. DO NOT EDIT. +arches = riscv64 +KVM_SET_GUEST_DEBUG = riscv64:1074310811 +__NR_ioctl = riscv64:29 \ No newline at end of file