Skip to content

Commit 9854e32

Browse files
6eanutramosian-glider
authored andcommitted
sys/linux, executor: enable kvm fuzzing support for riscv64
1 parent f7cfc62 commit 9854e32

File tree

5 files changed

+81
-64
lines changed

5 files changed

+81
-64
lines changed

executor/common_linux.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3199,8 +3199,7 @@ static long syz_mount_image(
31993199
#endif
32003200

32013201
#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
3202-
// KVM is not yet supported on RISC-V
3203-
#if !GOARCH_riscv64 && !GOARCH_arm
3202+
#if !GOARCH_arm
32043203
#include <errno.h>
32053204
#include <fcntl.h>
32063205
#include <linux/kvm.h>
@@ -3217,7 +3216,7 @@ static long syz_mount_image(
32173216
#include "common_kvm_arm64.h"
32183217
#elif GOARCH_ppc64 || GOARCH_ppc64le
32193218
#include "common_kvm_ppc64.h"
3220-
#elif !GOARCH_arm && (SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu)
3219+
#elif SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu
32213220
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)
32223221
{
32233222
return 0;

sys/linux/dev_kvm.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright 2015 syzkaller project authors. All rights reserved.
22
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
33

4-
meta arches["386", "amd64", "arm64", "mips64le", "ppc64le", "s390x"]
4+
meta arches["386", "amd64", "arm64", "mips64le", "ppc64le", "s390x", "riscv64"]
55

66
include <linux/kvm.h>
77
include <linux/kvm_host.h>

sys/linux/dev_kvm.txt.const

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# Code generated by syz-sysgen. DO NOT EDIT.
2-
arches = 386, amd64, arm64, mips64le, ppc64le, s390x
2+
arches = 386, amd64, arm64, mips64le, ppc64le, s390x, riscv64
33
AT_FDCWD = 18446744073709551516
4-
KVM_ARM_VCPU_PMU_V3_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
5-
KVM_ARM_VCPU_PMU_V3_FILTER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2
6-
KVM_ARM_VCPU_PMU_V3_INIT = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
7-
KVM_ARM_VCPU_PMU_V3_IRQ = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
8-
KVM_ARM_VCPU_PMU_V3_SET_PMU = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3
9-
KVM_ARM_VCPU_PVTIME_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2
10-
KVM_ARM_VCPU_PVTIME_IPA = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
11-
KVM_ARM_VCPU_TIMER_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
12-
KVM_ARM_VCPU_TIMER_IRQ_PTIMER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
13-
KVM_ARM_VCPU_TIMER_IRQ_VTIMER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
14-
KVM_ARM_VM_SMCCC_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
15-
KVM_ARM_VM_SMCCC_FILTER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
4+
KVM_ARM_VCPU_PMU_V3_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
5+
KVM_ARM_VCPU_PMU_V3_FILTER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2
6+
KVM_ARM_VCPU_PMU_V3_INIT = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
7+
KVM_ARM_VCPU_PMU_V3_IRQ = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
8+
KVM_ARM_VCPU_PMU_V3_SET_PMU = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3
9+
KVM_ARM_VCPU_PVTIME_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2
10+
KVM_ARM_VCPU_PVTIME_IPA = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
11+
KVM_ARM_VCPU_TIMER_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
12+
KVM_ARM_VCPU_TIMER_IRQ_PTIMER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
13+
KVM_ARM_VCPU_TIMER_IRQ_VTIMER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
14+
KVM_ARM_VM_SMCCC_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
15+
KVM_ARM_VM_SMCCC_FILTER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
1616
KVM_ASSIGN_DEV_IRQ = 1077980784
1717
KVM_ASSIGN_PCI_DEVICE = 2151722601
1818
KVM_ASSIGN_SET_INTX_MASK = 1077980836
@@ -33,20 +33,20 @@ KVM_CREATE_VCPU = 44609, mips64le:ppc64le:536915521
3333
KVM_CREATE_VM = 44545, mips64le:ppc64le:536915457
3434
KVM_DEASSIGN_DEV_IRQ = 1077980789
3535
KVM_DEASSIGN_PCI_DEVICE = 1077980786
36-
KVM_DEV_ARM_ITS_CTRL_RESET = 386:amd64:mips64le:ppc64le:s390x:???, arm64:4
37-
KVM_DEV_ARM_ITS_RESTORE_TABLES = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2
38-
KVM_DEV_ARM_ITS_SAVE_TABLES = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
39-
KVM_DEV_ARM_VGIC_CTRL_INIT = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
40-
KVM_DEV_ARM_VGIC_GRP_ADDR = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
41-
KVM_DEV_ARM_VGIC_GRP_CPU_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2
42-
KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:6
43-
KVM_DEV_ARM_VGIC_GRP_CTRL = 386:amd64:mips64le:ppc64le:s390x:???, arm64:4
44-
KVM_DEV_ARM_VGIC_GRP_DIST_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
45-
KVM_DEV_ARM_VGIC_GRP_ITS_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:8
46-
KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO = 386:amd64:mips64le:ppc64le:s390x:???, arm64:7
47-
KVM_DEV_ARM_VGIC_GRP_NR_IRQS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3
48-
KVM_DEV_ARM_VGIC_GRP_REDIST_REGS = 386:amd64:mips64le:ppc64le:s390x:???, arm64:5
49-
KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3
36+
KVM_DEV_ARM_ITS_CTRL_RESET = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:4
37+
KVM_DEV_ARM_ITS_RESTORE_TABLES = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2
38+
KVM_DEV_ARM_ITS_SAVE_TABLES = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
39+
KVM_DEV_ARM_VGIC_CTRL_INIT = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
40+
KVM_DEV_ARM_VGIC_GRP_ADDR = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
41+
KVM_DEV_ARM_VGIC_GRP_CPU_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2
42+
KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:6
43+
KVM_DEV_ARM_VGIC_GRP_CTRL = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:4
44+
KVM_DEV_ARM_VGIC_GRP_DIST_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
45+
KVM_DEV_ARM_VGIC_GRP_ITS_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:8
46+
KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:7
47+
KVM_DEV_ARM_VGIC_GRP_NR_IRQS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3
48+
KVM_DEV_ARM_VGIC_GRP_REDIST_REGS = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:5
49+
KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3
5050
KVM_DEV_TYPE_ARM_PV_TIME = 10
5151
KVM_DEV_TYPE_ARM_VGIC_ITS = 8
5252
KVM_DEV_TYPE_ARM_VGIC_V2 = 5
@@ -72,21 +72,21 @@ KVM_GET_DEVICE_ATTR = 1075359458, mips64le:ppc64le:2149101282
7272
KVM_GET_DIRTY_LOG = 1074835010, mips64le:ppc64le:2148576834
7373
KVM_GET_MP_STATE = 2147790488, mips64le:ppc64le:1074048664
7474
KVM_GET_ONE_REG = 1074835115, mips64le:ppc64le:2148576939
75-
KVM_GET_REGS = 2156965505, arm64:2204151425, mips64le:1092136577, ppc64le:1099476609, s390x:2155916929
75+
KVM_GET_REGS = 2156965505, arm64:2204151425, mips64le:1092136577, ppc64le:1099476609, s390x:2155916929, riscv64:2147528321
7676
KVM_GET_REG_LIST = 3221794480
77-
KVM_GET_SREGS = 2167975555, arm64:2147528323, mips64le:1073786499, ppc64le:1154526851, s390x:2160111235
77+
KVM_GET_SREGS = 2167975555, arm64:riscv64:2147528323, mips64le:1073786499, ppc64le:1154526851, s390x:2160111235
7878
KVM_GET_STATS_FD = 44750, mips64le:ppc64le:536915662
79-
KVM_GET_VCPU_EVENTS = 2151722655, mips64le:ppc64le:s390x:???
79+
KVM_GET_VCPU_EVENTS = 2151722655, mips64le:ppc64le:s390x:riscv64:???
8080
KVM_GET_VCPU_MMAP_SIZE = 44548, mips64le:ppc64le:536915460
81-
KVM_GUESTDBG_BLOCKIRQ = 1048576, arm64:mips64le:ppc64le:s390x:???
81+
KVM_GUESTDBG_BLOCKIRQ = 1048576, arm64:mips64le:ppc64le:s390x:riscv64:???
8282
KVM_GUESTDBG_ENABLE = 1
83-
KVM_GUESTDBG_EXIT_PENDING = 386:amd64:arm64:mips64le:ppc64le:???, s390x:268435456
84-
KVM_GUESTDBG_INJECT_BP = 524288, arm64:mips64le:ppc64le:s390x:???
85-
KVM_GUESTDBG_INJECT_DB = 262144, arm64:mips64le:ppc64le:s390x:???
83+
KVM_GUESTDBG_EXIT_PENDING = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:268435456
84+
KVM_GUESTDBG_INJECT_BP = 524288, arm64:mips64le:ppc64le:s390x:riscv64:???
85+
KVM_GUESTDBG_INJECT_DB = 262144, arm64:mips64le:ppc64le:s390x:riscv64:???
8686
KVM_GUESTDBG_SINGLESTEP = 2
87-
KVM_GUESTDBG_USE_HW = 386:amd64:mips64le:ppc64le:s390x:???, arm64:131072
88-
KVM_GUESTDBG_USE_HW_BP = 131072, arm64:mips64le:???, s390x:65536
89-
KVM_GUESTDBG_USE_SW_BP = 65536, mips64le:s390x:???
87+
KVM_GUESTDBG_USE_HW = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:131072
88+
KVM_GUESTDBG_USE_HW_BP = 131072, arm64:mips64le:riscv64:???, s390x:65536
89+
KVM_GUESTDBG_USE_SW_BP = 65536, mips64le:s390x:riscv64:???
9090
KVM_HAS_DEVICE_ATTR = 1075359459, mips64le:ppc64le:2149101283
9191
KVM_INTERRUPT = 1074048646, mips64le:ppc64le:2147790470
9292
KVM_IOEVENTFD = 1077980793, mips64le:ppc64le:2151722617
@@ -118,19 +118,19 @@ KVM_MP_STATE_SIPI_RECEIVED = 4
118118
KVM_MP_STATE_STOPPED = 5
119119
KVM_MP_STATE_UNINITIALIZED = 1
120120
KVM_MSI_VALID_DEVID = 1
121-
KVM_PMU_EVENT_ALLOW = 0, mips64le:ppc64le:s390x:???
122-
KVM_PMU_EVENT_DENY = 1, mips64le:ppc64le:s390x:???
121+
KVM_PMU_EVENT_ALLOW = 0, mips64le:ppc64le:s390x:riscv64:???
122+
KVM_PMU_EVENT_DENY = 1, mips64le:ppc64le:s390x:riscv64:???
123123
KVM_PPC_ALLOCATE_HTAB = 3221532327
124-
KVM_PPC_GET_PVINFO = 386:amd64:arm64:mips64le:s390x:???, ppc64le:2155916961
125-
KVM_PPC_GET_SMMU_INFO = 386:amd64:arm64:mips64le:s390x:???, ppc64le:1112583846
124+
KVM_PPC_GET_PVINFO = 386:amd64:arm64:mips64le:s390x:riscv64:???, ppc64le:2155916961
125+
KVM_PPC_GET_SMMU_INFO = 386:amd64:arm64:mips64le:s390x:riscv64:???, ppc64le:1112583846
126126
KVM_PRE_FAULT_MEMORY = 3225464533
127127
KVM_REGISTER_COALESCED_MMIO = 1074835047, mips64le:ppc64le:2148576871
128128
KVM_RESET_DIRTY_RINGS = 44743, mips64le:ppc64le:536915655
129129
KVM_RUN = 44672, mips64le:ppc64le:536915584
130130
KVM_RUN_SIZE = 2352, s390x:2368
131-
KVM_S390_INTERRUPT = 386:amd64:arm64:mips64le:ppc64le:???, s390x:1074835092
132-
KVM_S390_UCAS_MAP = 386:amd64:arm64:mips64le:ppc64le:???, s390x:1075359312
133-
KVM_S390_UCAS_UNMAP = 386:amd64:arm64:mips64le:ppc64le:???, s390x:1075359313
131+
KVM_S390_INTERRUPT = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:1074835092
132+
KVM_S390_UCAS_MAP = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:1075359312
133+
KVM_S390_UCAS_UNMAP = 386:amd64:arm64:mips64le:ppc64le:riscv64:???, s390x:1075359313
134134
KVM_S390_VCPU_FAULT = 1074310738, 386:1074048594, mips64le:ppc64le:2148052562
135135
KVM_SETUP_PPC64_DR = 4
136136
KVM_SETUP_PPC64_IR = 2
@@ -141,25 +141,25 @@ KVM_SET_DEVICE_ATTR = 1075359457, mips64le:ppc64le:2149101281
141141
KVM_SET_GSI_ROUTING = 1074310762, mips64le:ppc64le:2148052586
142142
KVM_SET_MP_STATE = 1074048665, mips64le:ppc64le:2147790489
143143
KVM_SET_ONE_REG = 1074835116, mips64le:ppc64le:2148576940
144-
KVM_SET_REGS = 1083223682, arm64:1130409602, mips64le:2165878402, ppc64le:2173218434, s390x:1082175106
144+
KVM_SET_REGS = 1083223682, arm64:1130409602, mips64le:2165878402, ppc64le:2173218434, s390x:1082175106, riscv64:1073786498
145145
KVM_SET_SIGNAL_MASK = 1074048651, mips64le:ppc64le:2147790475
146-
KVM_SET_SREGS = 1094233732, arm64:1073786500, mips64le:2147528324, ppc64le:2228268676, s390x:1086369412
146+
KVM_SET_SREGS = 1094233732, arm64:riscv64:1073786500, mips64le:2147528324, ppc64le:2228268676, s390x:1086369412
147147
KVM_SET_USER_MEMORY_REGION = 1075883590, mips64le:ppc64le:2149625414
148148
KVM_SET_USER_MEMORY_REGION2 = 1084272201, mips64le:ppc64le:2158014025
149-
KVM_SET_VCPU_EVENTS = 1077980832, mips64le:ppc64le:s390x:???
149+
KVM_SET_VCPU_EVENTS = 1077980832, mips64le:ppc64le:s390x:riscv64:???
150150
KVM_SIGNAL_MSI = 1075883685, mips64le:ppc64le:2149625509
151-
KVM_SMCCC_FILTER_DENY = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
152-
KVM_SMCCC_FILTER_FWD_TO_USER = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2
153-
KVM_SMCCC_FILTER_HANDLE = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
151+
KVM_SMCCC_FILTER_DENY = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
152+
KVM_SMCCC_FILTER_FWD_TO_USER = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2
153+
KVM_SMCCC_FILTER_HANDLE = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
154154
KVM_UNREGISTER_COALESCED_MMIO = 1074835048, mips64le:ppc64le:2148576872
155-
KVM_VGIC_ITS_ADDR_TYPE = 386:amd64:mips64le:ppc64le:s390x:???, arm64:4
156-
KVM_VGIC_V2_ADDR_TYPE_CPU = 386:amd64:mips64le:ppc64le:s390x:???, arm64:1
157-
KVM_VGIC_V2_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:???, arm64:0
158-
KVM_VGIC_V3_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:???, arm64:2
159-
KVM_VGIC_V3_ADDR_TYPE_REDIST = 386:amd64:mips64le:ppc64le:s390x:???, arm64:3
160-
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION = 386:amd64:mips64le:ppc64le:s390x:???, arm64:5
155+
KVM_VGIC_ITS_ADDR_TYPE = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:4
156+
KVM_VGIC_V2_ADDR_TYPE_CPU = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:1
157+
KVM_VGIC_V2_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:0
158+
KVM_VGIC_V3_ADDR_TYPE_DIST = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:2
159+
KVM_VGIC_V3_ADDR_TYPE_REDIST = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:3
160+
KVM_VGIC_V3_ADDR_TYPE_REDIST_REGION = 386:amd64:mips64le:ppc64le:s390x:riscv64:???, arm64:5
161161
VMCS12_SIZE = 4096
162-
__NR_ioctl = 54, amd64:16, arm64:29, mips64le:5015
163-
__NR_mmap = 90, 386:192, amd64:9, arm64:222, mips64le:5009
164-
__NR_mmap2 = 386:192, amd64:arm64:mips64le:ppc64le:s390x:???
165-
__NR_openat = 386:295, amd64:257, arm64:56, mips64le:5247, ppc64le:286, s390x:288
162+
__NR_ioctl = 54, amd64:16, arm64:riscv64:29, mips64le:5015
163+
__NR_mmap = 90, 386:192, amd64:9, arm64:riscv64:222, mips64le:5009
164+
__NR_mmap2 = 386:192, amd64:arm64:mips64le:ppc64le:s390x:riscv64:???
165+
__NR_openat = 386:295, amd64:257, arm64:riscv64:56, mips64le:5247, ppc64le:286, s390x:288

sys/linux/dev_kvm_riscv64.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Copyright 2026 syzkaller project authors. All rights reserved.
2+
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
3+
4+
# RISCV64-specific KVM syscall declarations.
5+
6+
meta arches["riscv64"]
7+
8+
include <uapi/linux/kvm.h>
9+
10+
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]])
11+
12+
kvm_guest_debug_arch_riscv64 {
13+
reg array[int64, 8]
14+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Code generated by syz-sysgen. DO NOT EDIT.
2+
arches = riscv64
3+
KVM_SET_GUEST_DEBUG = riscv64:1074310811
4+
__NR_ioctl = riscv64:29

0 commit comments

Comments
 (0)