aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author6eanut <jiakaiPeanut@gmail.com>2026-01-06 18:29:51 +0800
committerAlexander Potapenko <glider@google.com>2026-01-09 15:30:06 +0000
commit7e3683309afa0aa757daa056f2c47d2a8f6bf994 (patch)
treeaed7086ae2c8b5096169d8973bce12a52303266d
parent77cda984f819e74fb6d9d50ecc2fa437c46e3a32 (diff)
sys/linux, executor: enable kvm fuzzing support for riscv64
-rw-r--r--executor/common_linux.h5
-rw-r--r--sys/linux/dev_kvm.txt2
-rw-r--r--sys/linux/dev_kvm.txt.const120
-rw-r--r--sys/linux/dev_kvm_riscv64.txt14
-rw-r--r--sys/linux/dev_kvm_riscv64.txt.const4
5 files changed, 81 insertions, 64 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index 2cb04060e..de393227d 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -3199,8 +3199,7 @@ error_clear_loop:
#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 <errno.h>
#include <fcntl.h>
#include <linux/kvm.h>
@@ -3217,7 +3216,7 @@ error_clear_loop:
#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 13c9c7c67..73e5edccc 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 <linux/kvm.h>
include <linux/kvm_host.h>
diff --git a/sys/linux/dev_kvm.txt.const b/sys/linux/dev_kvm.txt.const
index 959e86532..f16f38b8e 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 000000000..1079853a7
--- /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 <uapi/linux/kvm.h>
+
+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 000000000..051f32ed6
--- /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