diff options
| author | Marios Pomonis <pomonis@google.com> | 2025-03-31 00:16:52 -0700 |
|---|---|---|
| committer | Alexander Potapenko <glider@google.com> | 2025-04-23 08:29:55 +0000 |
| commit | 3dfced0c70773d7544132b47a2766fddc4a6ff48 (patch) | |
| tree | 96f35584f840a54e40c3b5d6f909b8f408e2e22e | |
| parent | 53a8b9bd23a6fac52f298fb6115c012757f0a505 (diff) | |
executor/kvm: set up X86-64 SYZOS
This commit prepares adding the X86-64 SYZOS by declaring the relevant
functions, updating their ARM64 versions and adding placeholders.
33 files changed, 141 insertions, 69 deletions
diff --git a/executor/common_kvm_amd64.h b/executor/common_kvm_amd64.h index ef0a769b0..83cd44a99 100644 --- a/executor/common_kvm_amd64.h +++ b/executor/common_kvm_amd64.h @@ -14,6 +14,7 @@ #define KVM_SMI _IO(KVMIO, 0xb7) #endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu struct tss16 { uint16 prev; uint16 sp0; @@ -78,7 +79,9 @@ struct tss64 { uint32 reserved3; uint32 io_bitmap; } __attribute__((packed)); +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu static void fill_segment_descriptor(uint64* dt, uint64* lt, struct kvm_segment* seg) { uint16 index = seg->selector >> 3; @@ -95,7 +98,9 @@ static void fill_segment_descriptor_dword(uint64* dt, uint64* lt, struct kvm_seg dt[index + 1] = 0; lt[index + 1] = 0; } +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu static void setup_syscall_msrs(int cpufd, uint16 sel_cs, uint16 sel_cs_cpl3) { char buf[sizeof(struct kvm_msrs) + 5 * sizeof(struct kvm_msr_entry)]; @@ -115,7 +120,9 @@ static void setup_syscall_msrs(int cpufd, uint16 sel_cs, uint16 sel_cs_cpl3) entries[4].data = X86_ADDR_VAR_SYSRET; ioctl(cpufd, KVM_SET_MSRS, msrs); } +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu static void setup_32bit_idt(struct kvm_sregs* sregs, char* host_mem, uintptr_t guest_mem) { sregs->idt.base = guest_mem + X86_ADDR_VAR_IDT; @@ -167,7 +174,9 @@ static void setup_32bit_idt(struct kvm_sregs* sregs, char* host_mem, uintptr_t g fill_segment_descriptor(idt, idt, &gate); } } +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu static void setup_64bit_idt(struct kvm_sregs* sregs, char* host_mem, uintptr_t guest_mem) { sregs->idt.base = guest_mem + X86_ADDR_VAR_IDT; @@ -189,18 +198,24 @@ static void setup_64bit_idt(struct kvm_sregs* sregs, char* host_mem, uintptr_t g fill_segment_descriptor_dword(idt, idt, &gate); } } +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu struct kvm_text { uintptr_t typ; const void* text; uintptr_t size; }; +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu struct kvm_opt { uint64 typ; uint64 val; }; +#endif +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_cpu #define KVM_SETUP_PAGING (1 << 0) #define KVM_SETUP_PAE (1 << 1) #define KVM_SETUP_PROTECTED (1 << 2) @@ -747,3 +762,20 @@ static volatile long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volat return -1; return 0; } +#endif + +#if SYZ_EXECUTOR || __NR_syz_kvm_setup_syzos_vm +static long syz_kvm_setup_syzos_vm(volatile long a0, volatile long a1) +{ + // Placeholder. + return 0; +} +#endif + +#if SYZ_EXECUTOR || __NR_syz_kvm_add_vcpu +static long syz_kvm_add_vcpu(volatile long a0, volatile long a1) +{ + // Placeholder. + return 0; +} +#endif diff --git a/pkg/vminfo/linux_syscalls.go b/pkg/vminfo/linux_syscalls.go index e3755bdbc..589f52123 100644 --- a/pkg/vminfo/linux_syscalls.go +++ b/pkg/vminfo/linux_syscalls.go @@ -79,10 +79,10 @@ var linuxSyscallChecks = map[string]func(*checkContext, *prog.Syscall) string{ "syz_usb_control_io": linuxCheckUSBEmulation, "syz_usb_ep_write": linuxCheckUSBEmulation, "syz_usb_ep_read": linuxCheckUSBEmulation, - "syz_kvm_setup_cpu": linuxSyzKvmSetupCPUSupported, + "syz_kvm_setup_cpu": linuxSyzKvmSupported, "syz_kvm_vgic_v3_setup": linuxSyzSupportedOnArm64, - "syz_kvm_setup_syzos_vm": linuxSyzSupportedOnArm64, - "syz_kvm_add_vcpu": linuxSyzSupportedOnArm64, + "syz_kvm_setup_syzos_vm": linuxSyzKvmSupported, + "syz_kvm_add_vcpu": linuxSyzKvmSupported, "syz_kvm_assert_syzos_uexit": linuxSyzSupportedOnArm64, "syz_kvm_assert_reg": linuxSyzSupportedOnArm64, "syz_emit_vhci": linuxVhciInjectionSupported, @@ -174,13 +174,13 @@ func linuxCheckUSBEmulation(ctx *checkContext, call *prog.Syscall) string { const unsupportedArch = "unsupported arch" -func linuxSyzKvmSetupCPUSupported(ctx *checkContext, call *prog.Syscall) string { +func linuxSyzKvmSupported(ctx *checkContext, call *prog.Syscall) string { switch call.Name { - case "syz_kvm_setup_cpu$x86": + case "syz_kvm_setup_cpu$x86", "syz_kvm_setup_syzos_vm$x86", "syz_kvm_add_vcpu$x86": if ctx.target.Arch == targets.AMD64 || ctx.target.Arch == targets.I386 { return "" } - case "syz_kvm_setup_cpu$arm64": + case "syz_kvm_setup_cpu$arm64", "syz_kvm_setup_syzos_vm$arm64", "syz_kvm_add_vcpu$arm64": if ctx.target.Arch == targets.ARM64 { return "" } diff --git a/sys/linux/dev_kvm_amd64.txt b/sys/linux/dev_kvm_amd64.txt new file mode 100644 index 000000000..8c791c65d --- /dev/null +++ b/sys/linux/dev_kvm_amd64.txt @@ -0,0 +1,40 @@ +# Copyright 2024 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. + +# x86(-64)-specific KVM syscall declarations. + +meta arches["386", "amd64"] + +include <linux/kvm.h> +include <asm/kvm.h> + +# kvm_syz_vm is a VM handler used by syzos-related pseudo-syscalls. It is actually an opaque pointer under the hood. +resource kvm_syz_vm$x86[int64] + +# Map the given memory into the VM and set up syzos there. +syz_kvm_setup_syzos_vm$x86(fd fd_kvmvm, usermem vma[1024]) kvm_syz_vm$x86 + +# Create a VCPU inside a kvm_syz_vm VM. +syz_kvm_add_vcpu$x86(vm kvm_syz_vm$x86, text ptr[in, kvm_text$x86]) fd_kvmcpu + +kvm_text$x86 { + typ const[0, intptr] + text ptr[in, array[syzos_api_call$x86, 1:32]] + size bytesize[text, int64] +} + +syzos_api_code$x86 { + insns text[x86_64] + ret const[0xc3, int8] +} [packed] + +type syzos_api$x86[NUM, PAYLOAD] { + call const[NUM, int64] + size bytesize[parent, int64] + payload PAYLOAD +} + +syzos_api_call$x86 [ + uexit syzos_api$x86[0, intptr] + code syzos_api$x86[1, syzos_api_code$x86] +] [varlen] diff --git a/sys/linux/dev_kvm_arm64.txt b/sys/linux/dev_kvm_arm64.txt index aff892a5f..be43a741a 100644 --- a/sys/linux/dev_kvm_arm64.txt +++ b/sys/linux/dev_kvm_arm64.txt @@ -12,13 +12,13 @@ include <uapi/linux/psci.h> include <asm/kvm.h> # kvm_syz_vm is a VM handler used by syzos-related pseudo-syscalls. It is actually an opaque pointer under the hood. -resource kvm_syz_vm[int64] +resource kvm_syz_vm$arm64[int64] # Map the given memory into the VM and set up syzos there. -syz_kvm_setup_syzos_vm(fd fd_kvmvm, usermem vma[1024]) kvm_syz_vm +syz_kvm_setup_syzos_vm$arm64(fd fd_kvmvm, usermem vma[1024]) kvm_syz_vm$arm64 # Create a VCPU inside a kvm_syz_vm VM. -syz_kvm_add_vcpu(vm kvm_syz_vm, text ptr[in, kvm_text_arm64], opts ptr[in, array[kvm_setup_opt_arm64, 1]], nopt len[opts]) fd_kvmcpu +syz_kvm_add_vcpu$arm64(vm kvm_syz_vm$arm64, text ptr[in, kvm_text_arm64], opts ptr[in, array[kvm_setup_opt_arm64, 1]], nopt len[opts]) fd_kvmcpu kvm_num_irqs = 32, 64, 128, 256, 512 diff --git a/sys/linux/test/arm64-kvm-bug367186827 b/sys/linux/test/arm64-kvm-bug367186827 index 3fd9344d5..12a692793 100644 --- a/sys/linux/test/arm64-kvm-bug367186827 +++ b/sys/linux/test/arm64-kvm-bug367186827 @@ -8,8 +8,8 @@ ioctl$KVM_CREATE_DEVICE(r2, 0xc00caee0, &(0x7f0000000700)={0x7, 0x0, 0x0}) (asyn ioctl$KVM_CREATE_VCPU(r2, 0xae41, 0x2) ioctl$KVM_IRQ_LINE(r2, 0x4008ae61, &(0x7f0000000240)={0x200002f, 0x0}) (async) r3 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0) -r4 = syz_kvm_setup_syzos_vm(r3, &(0x7f0000c00000/0x400000)=nil) -r5 = syz_kvm_add_vcpu(r4, &(0x7f0000000080)={0x0, &(0x7f0000000000)=ANY=[@ANYBLOB="054c0f0000000060b47892001800000000003b67ed394d2d53cb"], 0x18}, 0x0, 0x0) (async, rerun: 64) +r4 = syz_kvm_setup_syzos_vm$arm64(r3, &(0x7f0000c00000/0x400000)=nil) +r5 = syz_kvm_add_vcpu$arm64(r4, &(0x7f0000000080)={0x0, &(0x7f0000000000)=ANY=[@ANYBLOB="054c0f0000000060b47892001800000000003b67ed394d2d53cb"], 0x18}, 0x0, 0x0) (async, rerun: 64) syz_kvm_vgic_v3_setup(r3, 0x1, 0x100) ioctl$KVM_RUN(r5, 0xae80, 0x0) (async) ioctl$KVM_IRQ_LINE(r3, 0x4008ae61, &(0x7f0000000100)={0x1000020, 0x1}) (async, rerun: 32) diff --git a/sys/linux/test/arm64-kvm-bug370977056 b/sys/linux/test/arm64-kvm-bug370977056 index 769f00b0a..4d0cfcdb1 100644 --- a/sys/linux/test/arm64-kvm-bug370977056 +++ b/sys/linux/test/arm64-kvm-bug370977056 @@ -16,9 +16,9 @@ ioctl$KVM_CREATE_VCPU(r4, 0xb702, 0x0) (async) openat$kvm(0x0, &(0x7f0000000080), 0x141001, 0x0) ioctl$KVM_IOEVENTFD(0xffffffffffffffff, 0x4040ae79, &(0x7f0000000100)) r8 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0) -r9 = syz_kvm_setup_syzos_vm(r8, &(0x7f0000c00000/0x400000)=nil) -r10 = syz_kvm_add_vcpu(r9, &(0x7f0000000080)={0x0, &(0x7f00000000c0)=[@irq_setup={0x5, 0x18, {0x1, 0x20}}], 0x18}, 0x0, 0x0) (async) -r11 = syz_kvm_add_vcpu(r9, &(0x7f0000000100)={0x0, &(0x7f00000001c0)=ANY=[@ANYBLOB="050000"], 0x18}, 0x0, 0x0) +r9 = syz_kvm_setup_syzos_vm$arm64(r8, &(0x7f0000c00000/0x400000)=nil) +r10 = syz_kvm_add_vcpu$arm64(r9, &(0x7f0000000080)={0x0, &(0x7f00000000c0)=[@irq_setup={0x5, 0x18, {0x1, 0x20}}], 0x18}, 0x0, 0x0) (async) +r11 = syz_kvm_add_vcpu$arm64(r9, &(0x7f0000000100)={0x0, &(0x7f00000001c0)=ANY=[@ANYBLOB="050000"], 0x18}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r8, 0x2, 0x100) (async) ioctl$KVM_RUN(r11, 0xae80, 0x0) (async) ioctl$KVM_RUN(r10, 0xae80, 0x0) diff --git a/sys/linux/test/arm64-kvm-bug372635024 b/sys/linux/test/arm64-kvm-bug372635024 index efe3bce03..35ea607c9 100644 --- a/sys/linux/test/arm64-kvm-bug372635024 +++ b/sys/linux/test/arm64-kvm-bug372635024 @@ -3,8 +3,8 @@ # r0 = openat$kvm(0x0, &(0x7f0000000040), 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &(0x7f0000000080)={0x0, &(0x7f0000000240)=ANY=[@ANYBLOB="05000000000000001800000000000000010000005002"], 0x18}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &(0x7f0000000080)={0x0, &(0x7f0000000240)=ANY=[@ANYBLOB="05000000000000001800000000000000010000005002"], 0x18}, 0x0, 0x0) ioctl$KVM_RUN(r3, 0xae80, 0x0) ioctl$KVM_SET_VCPU_EVENTS(r3, 0x4040aea0, &(0x7f0000000000)=@arm64={0x0, 0x1, 0xf, '\x00', 0xfffffffffffff105, ""}) ioctl$KVM_RUN(r3, 0xae80, 0x0) diff --git a/sys/linux/test/arm64-kvm-bug379251102 b/sys/linux/test/arm64-kvm-bug379251102 index dcfa9b005..42dc55d3b 100644 --- a/sys/linux/test/arm64-kvm-bug379251102 +++ b/sys/linux/test/arm64-kvm-bug379251102 @@ -3,8 +3,8 @@ # r0 = openat$kvm(0x0, &(0x7f0000000080), 0x2000, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &(0x7f00000000c0)={0x0, &(0x7f0000000240)=[@its_setup={0x7, 0x28, {0x0, 0x1, 0x17}}, @memwrite={0x6, 0x30, @vgic_gicr={0x80a0000, 0xa0, 0x1, 0xb}}], AUTO}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &(0x7f00000000c0)={0x0, &(0x7f0000000240)=[@its_setup={0x7, 0x28, {0x0, 0x1, 0x17}}, @memwrite={0x6, 0x30, @vgic_gicr={0x80a0000, 0xa0, 0x1, 0xb}}], AUTO}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r1, 0x1, 0x100) ioctl$KVM_CREATE_DEVICE(r1, 0xc00caee0, &(0x7f0000000180)={0x8, <r4=>0xffffffffffffffff, 0x0}) ioctl$KVM_SET_DEVICE_ATTR(r4, 0x4018aee1, &(0x7f00000001c0)=@attr_arm64={0x0, 0x0, 0x4, &(0x7f0000000200)=0x8080000}) diff --git a/sys/linux/test/arm64-kvm-bug381462937 b/sys/linux/test/arm64-kvm-bug381462937 index 2f4a27753..59d42a33a 100644 --- a/sys/linux/test/arm64-kvm-bug381462937 +++ b/sys/linux/test/arm64-kvm-bug381462937 @@ -3,8 +3,8 @@ # r0 = openat$kvm(0x0, &(0x7f0000000040), 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, 0xae01, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &(0x7f0000000080)={0x0, &(0x7f00000000c0)=[@its_setup={0x7, 0x28, {0x2, 0x2, 0x1}}], 0x28}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &(0x7f0000000080)={0x0, &(0x7f00000000c0)=[@its_setup={0x7, 0x28, {0x2, 0x2, 0x1}}], 0x28}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r1, 0x3, 0xa0) ioctl$KVM_CREATE_DEVICE(r1, 0xc00caee0, &(0x7f0000000100)={0x8, <r4=>0xffffffffffffffff, 0x0}) ioctl$KVM_SET_DEVICE_ATTR(r4, 0x4018aee1, &(0x7f0000000000)=@attr_arm64={0x0, 0x0, 0x4, &(0x7f0000000180)=0x8080000}) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm index 73eda6746..8ca716cd7 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm @@ -3,7 +3,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # Perform two uexits. The first one is done via a code blob: # d2802000 mov x0, #0x100 // #256 # f2bbbba0 movk x0, #0xdddd, lsl #16 @@ -11,7 +11,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # , which assumes registers x24-28 are zeroes. # The second uexit is done via a syzos API command that sets uexit exit code to 0xaaaa. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"002080d2a0bbbbf21f0000f9", 0xd65f03c0}}, @uexit={AUTO, AUTO, 0xaaaa}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"002080d2a0bbbbf21f0000f9", 0xd65f03c0}}, @uexit={AUTO, AUTO, 0xaaaa}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-mrs b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-mrs index d0bf5b073..636660530 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-mrs +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-mrs @@ -3,13 +3,13 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013df40 is PMEVCNTR0_EL0, write to it will trigger access_pmu_evcntr() in arch/arm64/kvm/sys_regs.c # This is done to illustrate that PMU is accessible. # 0x8 corresponds to the KVM_ARM_VCPU_PMU_V3 feature bit and is required to enable PMU. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@mrs={AUTO, AUTO, {0x603000000013df40}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@mrs={AUTO, AUTO, {0x603000000013df40}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) # # Call ioctl(KVM_SET_DEVICE_ATTR) with group=KVM_ARM_VCPU_PMU_V3_CTRL and attr=KVM_ARM_VCPU_PMU_V3_INIT, # as per https://www.kernel.org/doc/Documentation/virt/kvm/devices/vcpu.rst. diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr index eee1ce9db..4a4697a53 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr @@ -3,13 +3,13 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013df40 is PMEVCNTR0_EL0, write to it will trigger access_pmu_evcntr() in arch/arm64/kvm/sys_regs.c # This is done to illustrate that PMU is accessible. # 0x8 corresponds to the KVM_ARM_VCPU_PMU_V3 feature bit and is required to enable PMU. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013df40, 0x8000}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013df40, 0x8000}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) # # Call ioctl(KVM_SET_DEVICE_ATTR) with group=KVM_ARM_VCPU_PMU_V3_CTRL and attr=KVM_ARM_VCPU_PMU_V3_INIT, # as per https://www.kernel.org/doc/Documentation/virt/kvm/devices/vcpu.rst. diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-0 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-0 index 2373c1f3a..56a1f2c83 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-0 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-0 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013c4f1 is PMINTENSET_EL1. # 0x603000000013c4f2 is PMINTENCLR_EL1. @@ -22,7 +22,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # This is done to illustrate that PMU is accessible. # 0x8 corresponds to the KVM_ARM_VCPU_PMU_V3 feature bit and is required to enable PMU. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c4f1, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c4f2, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce0, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce1, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce2, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce3, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce4, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce5, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce8, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce9, 0x8000}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c4f1, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c4f2, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce0, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce1, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce2, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce3, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce4, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce5, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce8, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dce9, 0x8000}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) # # Call ioctl(KVM_SET_DEVICE_ATTR) with group=KVM_ARM_VCPU_PMU_V3_CTRL and attr=KVM_ARM_VCPU_PMU_V3_INIT, # as per https://www.kernel.org/doc/Documentation/virt/kvm/devices/vcpu.rst. diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-1 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-1 index e710c24e6..df58158c8 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-1 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-1 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013dcea is PMXEVCNTR_EL0. # 0x603000000013dcf0 is PMUSERENR_EL0. @@ -22,7 +22,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # This is done to illustrate that PMU is accessible. # 0x8 corresponds to the KVM_ARM_VCPU_PMU_V3 feature bit and is required to enable PMU. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013dcea, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dcf0, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dcf3, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df40, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df41, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df42, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df43, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df44, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df45, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df7f, 0x8000}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013dcea, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dcf0, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013dcf3, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df40, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df41, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df42, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df43, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df44, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df45, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df7f, 0x8000}}], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) # # Call ioctl(KVM_SET_DEVICE_ATTR) with group=KVM_ARM_VCPU_PMU_V3_CTRL and attr=KVM_ARM_VCPU_PMU_V3_INIT, # as per https://www.kernel.org/doc/Documentation/virt/kvm/devices/vcpu.rst. diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-2 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-2 index 050b8709a..cbe4f09fe 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-2 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-enable-pmu-msr-emul-2 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013df60 is PMEVTYPERn_EL0(0). # 0x603000000013df61 is PMEVTYPERn_EL0(1). @@ -19,7 +19,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # This is done to illustrate that PMU is accessible. # 0x8 corresponds to the KVM_ARM_VCPU_PMU_V3 feature bit and is required to enable PMU. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013df60, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df61, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df62, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df63, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df64, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df65, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df7f, 0x8000}}, ], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013df60, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df61, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df62, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df63, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df64, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df65, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013df7f, 0x8000}}, ], AUTO}, &AUTO=[@featur1={0x1, 0x8}], 0x1) # # Call ioctl(KVM_SET_DEVICE_ATTR) with group=KVM_ARM_VCPU_PMU_V3_CTRL and attr=KVM_ARM_VCPU_PMU_V3_INIT, # as per https://www.kernel.org/doc/Documentation/virt/kvm/devices/vcpu.rst. diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-memwrite b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-memwrite index ca1206828..4f36d5be3 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-memwrite +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-memwrite @@ -3,10 +3,10 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # Emulate a uexit with the memwrite API command: write 0 at address ARM64_ADDR_UEXIT. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@memwrite={AUTO, AUTO, @generic={0xdddd0000, 0x100, 0x0, 0x8}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@memwrite={AUTO, AUTO, @generic={0xdddd0000, 0x100, 0x0, 0x8}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-mrs b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-mrs index d5a6c5bb6..3397c9e6e 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-mrs +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-mrs @@ -3,11 +3,11 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x6030000000138010 is MDCCINT_EL1. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@mrs={AUTO, AUTO, {0x6030000000138010}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@mrs={AUTO, AUTO, {0x6030000000138010}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr index ce702039c..acb3c10ca 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr @@ -3,11 +3,11 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013c600 is VBAR_EL1, it aligns the written value on 0x20. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c600, 0xfefefee0}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c600, 0xfefefee0}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-0 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-0 index 5ada2874c..3f1164b71 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-0 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-0 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x6030000000138010 is MDCCINT_EL1. # 0x6030000000138012 is MDSCR_EL1. @@ -19,7 +19,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # 0x6030000000138005 is DBGBCRn_EL1(0). # 0x603000000013800d is DBGBCRn_EL1(1). # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x6030000000138010, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138012, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138004, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800c, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138014, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801c, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138024, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013802c, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138005, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800d, 0x8000}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x6030000000138010, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138012, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138004, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800c, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138014, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801c, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138024, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013802c, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138005, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800d, 0x8000}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-1 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-1 index 5a2f96438..f6625976d 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-1 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-1 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x6030000000138015 is DBGBCRn_EL1(2). # 0x603000000013801d is DBGBCRn_EL1(3). @@ -19,7 +19,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # 0x6030000000138007 is DBGWCRn_EL1(0). # 0x603000000013800f is DBGWCRn_EL1(1). # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x6030000000138015, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801d, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138025, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013802d, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138006, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800e, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138016, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801e, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138007, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800f, 0x8000}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x6030000000138015, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801d, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138025, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013802d, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138006, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800e, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138016, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801e, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138007, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013800f, 0x8000}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-2 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-2 index 1212ec005..8c9ee2de6 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-2 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-2 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x6030000000138017 is DBGWCRn_EL1(2). # 0x603000000013801f is DBGWCRn_EL1(3). @@ -19,7 +19,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # 0x603000000013c081 is ACTLR_EL1. # 0x603000000013c230 is ICC_PMR_EL1. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x6030000000138017, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801f, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138084, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013809c, 0x8000}}, @msr={AUTO, AUTO, {0x60300000001383c6, 0x8000}}, @msr={AUTO, AUTO, {0x60300000001383ce, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000139828, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000139828, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c081, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c230, 0x8000}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x6030000000138017, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013801f, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000138084, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013809c, 0x8000}}, @msr={AUTO, AUTO, {0x60300000001383c6, 0x8000}}, @msr={AUTO, AUTO, {0x60300000001383ce, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000139828, 0x8000}}, @msr={AUTO, AUTO, {0x6030000000139828, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c081, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c230, 0x8000}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-3 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-3 index bfc9866c2..8e8389c0a 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-3 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-3 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013c520 is LORSA_EL1. # 0x603000000013c521 is LOREA_EL1. @@ -19,7 +19,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # 0x603000000013c659 is ICC_DIR_EL1. # 0x603000000013c65d is ICC_SGI1R_EL1. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c520, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c521, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c522, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c523, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c641, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c643, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c644, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c648, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c659, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c65d, 0x8000}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c520, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c521, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c522, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c523, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c641, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c643, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c644, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c648, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c659, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c65d, 0x8000}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-4 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-4 index a5d6f1709..c99054cf7 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-4 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr-emul-4 @@ -6,7 +6,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # 0x603000000013c65e is ICC_ASGI1R_EL1. # 0x603000000013c65f is ICC_SGI0R_EL1. @@ -19,7 +19,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # 0x603000000013d000 is CSSELR_EL1. # 0x603000000013de87 is SCXTNUM_EL0. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c65e, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c65f, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c661, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c663, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c664, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c666, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c667, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c687, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013d000, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013de87, 0x8000}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c65e, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c65f, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c661, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c663, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c664, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c666, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c667, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013c687, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013d000, 0x8000}}, @msr={AUTO, AUTO, {0x603000000013de87, 0x8000}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-smc b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-smc index 9a3261dbb..143d6d61c 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-smc +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-smc @@ -3,7 +3,7 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # KVM_SET_DEVICE_ATTR: group=KVM_ARM_VM_SMCCC_CTRL, attr=KVM_ARM_VM_SMCCC_FILTER # Filter: base=0xef000000, nr_functions=0x1000, action=KVM_SMCCC_FILTER_FWD_TO_USER @@ -11,7 +11,7 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) # ioctl$KVM_SET_DEVICE_ATTR_vm(r1, AUTO, &AUTO=@attr_arm64={0x0, 0x0, 0x0, &AUTO={0xef000000, 0x1000, 0x2, ""}}) -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@smc={AUTO, AUTO, {0xef000000, [0x0, 0x1, 0x2, 0x3, 0x4]}}, @hvc={AUTO, AUTO, {0xef000000, [0x0, 0x1, 0x2, 0x3, 0x4]}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@smc={AUTO, AUTO, {0xef000000, [0x0, 0x1, 0x2, 0x3, 0x4]}}, @hvc={AUTO, AUTO, {0xef000000, [0x0, 0x1, 0x2, 0x3, 0x4]}}], AUTO}, 0x0, 0x0) # # Run two times, because SMC and HVC will exit. diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3 index 64f6615e5..541aaed30 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3 @@ -3,8 +3,8 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r1, 0x1, 0x100) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-cpu1 b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-cpu1 index 68f41ff24..ff552c5b7 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-cpu1 +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-cpu1 @@ -3,9 +3,9 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) -r4 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) +r4 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r1, 0x2, 0x100) r5 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its index e07e646ca..6e642da75 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its @@ -3,8 +3,8 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}, @its_setup={AUTO, AUTO, {0x1, 0x1, 0x1}}], AUTO}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}, @its_setup={AUTO, AUTO, {0x1, 0x1, 0x1}}], AUTO}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r1, 0x1, 0x100) # diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its-cmd b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its-cmd index efa391879..d78a013c4 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its-cmd +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its-cmd @@ -3,11 +3,11 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # # Install a SYZOS program that sets up the IRQ and ITS, and then injects an LPI 0x0 from device 0x0. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}, @its_setup={AUTO, AUTO, {0x1, 0x1, 0x1}}, @its_send_cmd={AUTO, AUTO, {0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}, @its_setup={AUTO, AUTO, {0x1, 0x1, 0x1}}, @its_send_cmd={AUTO, AUTO, {0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}}], AUTO}, 0x0, 0x0) syz_kvm_vgic_v3_setup(r1, 0x1, 0x100) # # Set up ITS device with redistributor at address 0x08080000 (declared at executor/kvm.h): diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-unroll b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-unroll index 880cc4b7d..761974c7d 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-unroll +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-unroll @@ -3,8 +3,8 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0) # # Implementing syz_kvm_vgic_v3_setup(r1, 0x1, 0x100) using raw ioctls: # diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfe b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfe index 4cedfd16f..0c74580b5 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfe +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfe @@ -3,10 +3,10 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # Perform wfe. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"5f2003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"5f2003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfet b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfet index 12c90b89f..3e5850890 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfet +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfet @@ -3,10 +3,10 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # Perform a WFET (wfet x0). # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"001003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"001003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfi b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfi index 7e1a76cfb..802783b4e 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfi +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfi @@ -3,10 +3,10 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # Perform wfi. # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"7f2003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"7f2003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) diff --git a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfit b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfit index b2b56d9b7..36bcb4bdf 100644 --- a/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfit +++ b/sys/linux/test/arm64-syz_kvm_setup_syzos_vm-wfit @@ -3,10 +3,10 @@ # r0 = openat$kvm(0, &AUTO='/dev/kvm\x00', 0x0, 0x0) r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0) -r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil) +r2 = syz_kvm_setup_syzos_vm$arm64(r1, &(0x7f0000c00000/0x400000)=nil) # Perform a WFIT (wfit x0). # -r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"201003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) +r3 = syz_kvm_add_vcpu$arm64(r2, &AUTO={0x0, &AUTO=[@code={AUTO, AUTO, {"201003d5", 0xd65f03c0}}], AUTO}, 0x0, 0x0) r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO) r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0) |
