diff options
| author | Alexey Kardashevskiy <aik@linux.ibm.com> | 2021-07-21 21:36:40 +1000 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2021-09-16 21:37:48 +0200 |
| commit | 3611c0a0c1166f09038ed05f21dbbec8f2e29834 (patch) | |
| tree | 2c84d902eb65a119c2d2cfc955316d45041dcbc7 /pkg/csource/generated.go | |
| parent | aae492f20ef39f5f5e91c82092156d458f000d3d (diff) | |
executor/common_kvm_ppc64: enable nested KVM
This is necessary to make KVM actually execute the instructions.
Signed-off-by: Alexey Kardashevskiy <aik@linux.ibm.com>
Diffstat (limited to 'pkg/csource/generated.go')
| -rw-r--r-- | pkg/csource/generated.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go index 0726068e3..5733a9f06 100644 --- a/pkg/csource/generated.go +++ b/pkg/csource/generated.go @@ -7319,6 +7319,10 @@ struct kvm_ppc_mmuv3_cfg { #define KVM_PPC_MMUV3_GTSE 2 #endif +#ifndef KVM_CAP_PPC_NESTED_HV +#define KVM_CAP_PPC_NESTED_HV 160 +#endif + struct kvm_text { uintptr_t typ; const void* text; @@ -7357,6 +7361,16 @@ static int kvm_vcpu_enable_cap(int cpufd, uint32 capability) return ioctl(cpufd, KVM_ENABLE_CAP, &cap); } +static int kvm_vm_enable_cap(int vmfd, uint32 capability, uint64 p1, uint64 p2) +{ + struct kvm_enable_cap cap = { + .cap = capability, + .flags = 0, + .args = {p1, p2}, + }; + return ioctl(vmfd, KVM_ENABLE_CAP, &cap); +} + static void dump_text(const char* mem, unsigned start, unsigned cw, uint32 debug_inst_opcode) { #ifdef DEBUG @@ -7402,6 +7416,9 @@ static volatile long syz_kvm_setup_cpu(volatile long a0, volatile long a1, volat if (kvm_vcpu_enable_cap(cpufd, KVM_CAP_PPC_PAPR)) return -1; + if (kvm_vm_enable_cap(vmfd, KVM_CAP_PPC_NESTED_HV, true, 0)) + return -1; + for (uintptr_t i = 0; i < guest_mem_size / page_size; i++) { struct kvm_userspace_memory_region memreg; memreg.slot = i; |
