aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/csource
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@linux.ibm.com>2021-09-13 16:09:14 +1000
committerDmitry Vyukov <dvyukov@google.com>2021-09-16 21:37:48 +0200
commitcac54be7ff77e2e220d7b477c82984b26157e09b (patch)
tree60fc03f952977b5f01016916527268e4a7290bee /pkg/csource
parent3611c0a0c1166f09038ed05f21dbbec8f2e29834 (diff)
executor/common_kvm_ppc64: fuzz more hypercalls
At the moment syzkaller only fuzzes the platform architecture defined hypercalls. However there are custom defined hypercalls which KVM handles, they make 2 groups - an extension of hypercalls and so-called ultracalls which are handled by the secure VM firmware but in absense of the secure VM facility, KVM gets to handle those as errors. This enables the two extra groups of hypercalls in KVM. If not enabled, KVM exits to let the userspace handle them (which syzkaller does not do). Signed-off-by: Alexey Kardashevskiy <aik@linux.ibm.com>
Diffstat (limited to 'pkg/csource')
-rw-r--r--pkg/csource/generated.go16
1 files changed, 8 insertions, 8 deletions
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index 5733a9f06..0465913fb 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -7595,14 +7595,14 @@ static volatile long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volat
if (kvmppc_set_one_reg(cpufd, KVM_REG_PPC_PID, &pid))
return -1;
#define MAX_HCALL 0x450
- for (unsigned hcall = 4; hcall < MAX_HCALL; hcall += 4) {
- struct kvm_enable_cap cap = {
- .cap = KVM_CAP_PPC_ENABLE_HCALL,
- .flags = 0,
- .args = {hcall, 1},
- };
- ioctl(vmfd, KVM_ENABLE_CAP, &cap);
- }
+ for (unsigned hcall = 4; hcall < MAX_HCALL; hcall += 4)
+ kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_ENABLE_HCALL, hcall, 1);
+
+ for (unsigned hcall = 0xf000; hcall < 0xf810; hcall += 4)
+ kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_ENABLE_HCALL, hcall, 1);
+
+ for (unsigned hcall = 0xef00; hcall < 0xef20; hcall += 4)
+ kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_ENABLE_HCALL, hcall, 1);
kvmppc_define_rtas_kernel_token(vmfd, 1, "ibm,set-xive");
kvmppc_define_rtas_kernel_token(vmfd, 2, "ibm,get-xive");
kvmppc_define_rtas_kernel_token(vmfd, 3, "ibm,int-on");