kvm-bpf-tools
kvm-bpf-tools copied to clipboard
kvm_vmexit_slower python syntax error
Hi, I encounterd two problems
linux kernel is 4.9 Python 2.7.5 (default, Sep 5 2018, 11:36:03)
problem1:
$sudo ./kvm_vmexit_slower.py bpf: Failed to load program: Permission denied 0: (bf) r6 = r1 1: (85) call 14 2: (7b) *(u64 *)(r10 -8) = r0 3: (18) r1 = 0xffff886792397b00 5: (bf) r2 = r10 6: (07) r2 += -8 7: (85) call 1 8: (bf) r7 = r0 9: (15) if r7 == 0x0 goto pc+14 R0=map_value(ks=8,vs=16,id=0),min_value=0,max_value=0 R6=ctx R7=map_value(ks=8,vs=16,id=0),min_value=0,max_value=0 R10=fp 10: (85) call 5 11: (79) r1 = *(u64 *)(r7 +0) 12: (1f) r0 -= r1 13: (7b) *(u64 *)(r7 +0) = r0 14: (b7) r1 = 10000000 15: (2d) if r1 > r0 goto pc+8 R0=inv,min_value=10000000 R1=imm10000000,min_value=10000000,max_value=10000000 R6=ctx R7=map_value(ks=8,vs=16,id=0),min_value=0,max_value=0 R10=fp 16: (18) r2 = 0xffff884e22741800 18: (bf) r1 = r6 19: (18) r3 = 0xffffffff 21: (bf) r4 = r7 22: (b7) r5 = 16 23: (85) call 25 R4 type=map_value expected=fp
Traceback (most recent call last):
File "./kvm_vmexit_slower.py", line 88, in
problem2:
$sudo ./kvm_vmexit_slower.py 10 --excludes=12
Traceback (most recent call last):
File "./kvm_vmexit_slower.py", line 88, in
Hi,
As of problem2, it is fixed for now (https://github.com/mmisono/kvm-bpf-tools/commit/05f8c0ccc8fc2395127d095a938b30ff02691de2).
As of problem1, the error reason is bpf_perf_event_output() does not accept a bpf map value as an argument. This is changed since Linux 4.11.
So, the solution is upgrading the kernel, or, I don't try it but the following might work:
diff --git a/kvm_vmexit_slower.py b/kvm_vmexit_slower.py
index 5c9fad9..7ad30b9 100755
--- a/kvm_vmexit_slower.py
+++ b/kvm_vmexit_slower.py
@@ -47,7 +47,8 @@ TRACEPOINT_PROBE(kvm, kvm_entry) {
if (st != 0){
st->time = bpf_ktime_get_ns() - st->time;
if(st->time >= THRESH){
- events.perf_submit(args, st, sizeof(struct data));
+ struct data st2 = *st;
+ events.perf_submit(args, &st2, sizeof(struct data));
}
}
return 0;