Skip to content

Commit 0199f9a

Browse files
6eanutramosian-glider
authored andcommitted
sys/linux: add riscv64 KVM AIA device attributes
Add syzkaller descriptions for KVM AIA device attributes on riscv64, including config, addr, ctrl, APLIC and IMSIC attribute groups with their corresponding constants. Signed-off-by: Jiakai Xu <jiakaiPeanut@gmail.com> Signed-off-by: Jiakai Xu <xujiakai2025@iscas.ac.cn>
1 parent c881054 commit 0199f9a

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

sys/linux/dev_kvm.txt

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ kvm_reg_list {
177177

178178
kvm_device_attr [
179179
attr_arm64 kvm_device_attr_arm64
180+
attr_riscv64 kvm_device_attr_riscv64
180181
attr_other kvm_device_attr_generic
181182
]
182183

@@ -194,6 +195,71 @@ kvm_device_attr_arm64 {
194195
addr ptr64[inout, int64]
195196
}
196197

198+
# Device attributes from arch/riscv/kvm/aia_device.c .
199+
kvm_device_attr_riscv64 [
200+
attr_config kvm_attr_config_riscv64
201+
attr_addr kvm_attr_addr_riscv64
202+
attr_ctrl kvm_attr_ctrl_riscv64
203+
attr_aplic kvm_attr_aplic_riscv64
204+
attr_imsic kvm_attr_imsic_riscv64
205+
]
206+
207+
kvm_attr_config_riscv64 {
208+
flags const[0, int32]
209+
group const[KVM_DEV_RISCV_AIA_GRP_CONFIG, int32]
210+
attr flags[kvm_config_attributes_riscv64, int64]
211+
addr ptr64[inout, int64]
212+
}
213+
214+
# Config attributes from arch/riscv/kvm/aia_device.c aia_has_attr() .
215+
kvm_config_attributes_riscv64 = KVM_DEV_RISCV_AIA_CONFIG_MODE, KVM_DEV_RISCV_AIA_CONFIG_IDS, KVM_DEV_RISCV_AIA_CONFIG_SRCS, KVM_DEV_RISCV_AIA_CONFIG_GROUP_BITS, KVM_DEV_RISCV_AIA_CONFIG_GROUP_SHIFT, KVM_DEV_RISCV_AIA_CONFIG_HART_BITS, KVM_DEV_RISCV_AIA_CONFIG_GUEST_BITS
216+
217+
kvm_attr_addr_riscv64 {
218+
flags const[0, int32]
219+
group const[KVM_DEV_RISCV_AIA_GRP_ADDR, int32]
220+
attr kvm_addr_attributes_riscv64
221+
addr ptr64[inout, int64]
222+
}
223+
224+
kvm_addr_attributes_riscv64 [
225+
aplic const[KVM_DEV_RISCV_AIA_ADDR_APLIC, int64]
226+
# KVM_DEV_RISCV_AIA_ADDR_IMSIC(nr_vcpus) = 1 + nr_vcpus.
227+
# Assume nr_vcpus <= 4 (SYZOS limit), so enumerate 1..5.
228+
# Include 0 as a corner case.
229+
imsic int64[0:5]
230+
]
231+
232+
kvm_attr_ctrl_riscv64 {
233+
flags const[0, int32]
234+
group const[KVM_DEV_RISCV_AIA_GRP_CTRL, int32]
235+
attr const[KVM_DEV_RISCV_AIA_CTRL_INIT, int64]
236+
addr ptr64[inout, int64]
237+
}
238+
239+
kvm_attr_aplic_riscv64 {
240+
flags const[0, int32]
241+
group const[KVM_DEV_RISCV_AIA_GRP_APLIC, int32]
242+
attr kvm_aplic_attributes_riscv64
243+
addr ptr64[inout, int64]
244+
}
245+
246+
kvm_aplic_attributes_riscv64 [
247+
valid flags[kvm_aplic_valid_attributes_riscv64, int64]
248+
any int64
249+
]
250+
251+
# Find APLIC_DOMAINCFG, APLIC_SETIPNUM, APLIC_CLRIPNUM, APLIC_SETIENUM,
252+
# APLIC_CLRIENUM, APLIC_SETIPNUM_LE, APLIC_SETIPNUM_BE, APLIC_GENMSI
253+
# in include/linux/irqchip/riscv-aplic.h .
254+
kvm_aplic_valid_attributes_riscv64 = 0x0, 0x1cdc, 0x1ddc, 0x1edc, 0x1fdc, 0x2000, 0x2004, 0x3000
255+
256+
kvm_attr_imsic_riscv64 {
257+
flags const[0, int32]
258+
group const[KVM_DEV_RISCV_AIA_GRP_IMSIC, int32]
259+
attr int64
260+
addr ptr64[inout, int64]
261+
}
262+
197263
# Assorted device attributes from
198264
# - https://docs.kernel.org/virt/kvm/devices/arm-vgic-its.html,
199265
# - https://docs.kernel.org/virt/kvm/devices/arm-vgic.html,

sys/linux/dev_kvm.txt.const

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,20 @@ KVM_ARM_VCPU_TIMER_IRQ_PTIMER = 386:amd64:mips64le:ppc64le:riscv64:s390x:???, ar
1313
KVM_ARM_VCPU_TIMER_IRQ_VTIMER = 386:amd64:mips64le:ppc64le:riscv64:s390x:???, arm64:0
1414
KVM_ARM_VM_SMCCC_CTRL = 386:amd64:mips64le:ppc64le:riscv64:s390x:???, arm64:0
1515
KVM_ARM_VM_SMCCC_FILTER = 386:amd64:mips64le:ppc64le:riscv64:s390x:???, arm64:0
16+
KVM_DEV_RISCV_AIA_GRP_CONFIG = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:0
17+
KVM_DEV_RISCV_AIA_CONFIG_MODE = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:0
18+
KVM_DEV_RISCV_AIA_CONFIG_IDS = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:1
19+
KVM_DEV_RISCV_AIA_CONFIG_SRCS = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:2
20+
KVM_DEV_RISCV_AIA_CONFIG_GROUP_BITS = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:3
21+
KVM_DEV_RISCV_AIA_CONFIG_GROUP_SHIFT = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:4
22+
KVM_DEV_RISCV_AIA_CONFIG_HART_BITS = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:5
23+
KVM_DEV_RISCV_AIA_CONFIG_GUEST_BITS = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:6
24+
KVM_DEV_RISCV_AIA_GRP_ADDR = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:1
25+
KVM_DEV_RISCV_AIA_ADDR_APLIC = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:0
26+
KVM_DEV_RISCV_AIA_GRP_CTRL = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:2
27+
KVM_DEV_RISCV_AIA_CTRL_INIT = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:0
28+
KVM_DEV_RISCV_AIA_GRP_APLIC = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:3
29+
KVM_DEV_RISCV_AIA_GRP_IMSIC = 386:amd64:mips64le:ppc64le:s390x:arm64:???, riscv64:4
1630
KVM_ASSIGN_DEV_IRQ = 1077980784
1731
KVM_ASSIGN_PCI_DEVICE = 2151722601
1832
KVM_ASSIGN_SET_INTX_MASK = 1077980836

0 commit comments

Comments
 (0)