kvm_stat: Fix the non-x86 exit reasons
In kvm_stat we have a dictionary of exit reasons for s390. Firstly these are not s390 specific, they are the generic exit reasons. So rename the dictionary to reflect that, and add it separately to filters[]. Secondly, the values are defined using hex, but in the kernel header they are decimal. That means values above 9 in kvm_stat are incorrect. While we're there, fix the whitespace to match the rest of the file. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
763952d08b
commit
27d318a885
@ -141,33 +141,37 @@ svm_exit_reasons = {
|
|||||||
0x400: 'NPF',
|
0x400: 'NPF',
|
||||||
}
|
}
|
||||||
|
|
||||||
s390_exit_reasons = {
|
# From include/uapi/linux/kvm.h, KVM_EXIT_xxx
|
||||||
0x000: 'UNKNOWN',
|
userspace_exit_reasons = {
|
||||||
0x001: 'EXCEPTION',
|
0: 'UNKNOWN',
|
||||||
0x002: 'IO',
|
1: 'EXCEPTION',
|
||||||
0x003: 'HYPERCALL',
|
2: 'IO',
|
||||||
0x004: 'DEBUG',
|
3: 'HYPERCALL',
|
||||||
0x005: 'HLT',
|
4: 'DEBUG',
|
||||||
0x006: 'MMIO',
|
5: 'HLT',
|
||||||
0x007: 'IRQ_WINDOW_OPEN',
|
6: 'MMIO',
|
||||||
0x008: 'SHUTDOWN',
|
7: 'IRQ_WINDOW_OPEN',
|
||||||
0x009: 'FAIL_ENTRY',
|
8: 'SHUTDOWN',
|
||||||
0x010: 'INTR',
|
9: 'FAIL_ENTRY',
|
||||||
0x011: 'SET_TPR',
|
10: 'INTR',
|
||||||
0x012: 'TPR_ACCESS',
|
11: 'SET_TPR',
|
||||||
0x013: 'S390_SIEIC',
|
12: 'TPR_ACCESS',
|
||||||
0x014: 'S390_RESET',
|
13: 'S390_SIEIC',
|
||||||
0x015: 'DCR',
|
14: 'S390_RESET',
|
||||||
0x016: 'NMI',
|
15: 'DCR',
|
||||||
0x017: 'INTERNAL_ERROR',
|
16: 'NMI',
|
||||||
0x018: 'OSI',
|
17: 'INTERNAL_ERROR',
|
||||||
0x019: 'PAPR_HCALL',
|
18: 'OSI',
|
||||||
|
19: 'PAPR_HCALL',
|
||||||
|
20: 'S390_UCONTROL',
|
||||||
|
21: 'WATCHDOG',
|
||||||
|
22: 'S390_TSCH',
|
||||||
|
23: 'EPR',
|
||||||
}
|
}
|
||||||
|
|
||||||
vendor_exit_reasons = {
|
vendor_exit_reasons = {
|
||||||
'vmx': vmx_exit_reasons,
|
'vmx': vmx_exit_reasons,
|
||||||
'svm': svm_exit_reasons,
|
'svm': svm_exit_reasons,
|
||||||
'IBM/S390': s390_exit_reasons,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
syscall_numbers = {
|
syscall_numbers = {
|
||||||
@ -185,15 +189,14 @@ for line in file('/proc/cpuinfo').readlines():
|
|||||||
exit_reasons = vendor_exit_reasons[flag]
|
exit_reasons = vendor_exit_reasons[flag]
|
||||||
if flag in syscall_numbers:
|
if flag in syscall_numbers:
|
||||||
sc_perf_evt_open = syscall_numbers[flag]
|
sc_perf_evt_open = syscall_numbers[flag]
|
||||||
filters = {
|
|
||||||
'kvm_exit': ('exit_reason', exit_reasons)
|
|
||||||
}
|
|
||||||
|
|
||||||
def invert(d):
|
def invert(d):
|
||||||
return dict((x[1], x[0]) for x in d.iteritems())
|
return dict((x[1], x[0]) for x in d.iteritems())
|
||||||
|
|
||||||
for f in filters:
|
filters = {}
|
||||||
filters[f] = (filters[f][0], invert(filters[f][1]))
|
filters['kvm_userspace_exit'] = ('reason', invert(userspace_exit_reasons))
|
||||||
|
if exit_reasons:
|
||||||
|
filters['kvm_exit'] = ('exit_reason', invert(exit_reasons))
|
||||||
|
|
||||||
import ctypes, struct, array
|
import ctypes, struct, array
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user