scripts/kvm/kvm_stat: Invert dictionaries
The exit reasons dictionaries were defined number -> value but later on were accessed the other way around. Therefore a invert function inverted them. Defining them the right way removes the need to invert them and therefore also speeds up the script's setup process. Signed-off-by: Janosch Frank <frankja@linux.vnet.ibm.com> Message-Id: <1452525484-32309-7-git-send-email-frankja@linux.vnet.ibm.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
dbedce0ebc
commit
a6ad61f987
@ -37,188 +37,188 @@ class DebugfsProvider(object):
|
|||||||
return dict([(key, val(key)) for key in self._fields])
|
return dict([(key, val(key)) for key in self._fields])
|
||||||
|
|
||||||
VMX_EXIT_REASONS = {
|
VMX_EXIT_REASONS = {
|
||||||
0: 'EXCEPTION_NMI',
|
'EXCEPTION_NMI': 0,
|
||||||
1: 'EXTERNAL_INTERRUPT',
|
'EXTERNAL_INTERRUPT': 1,
|
||||||
2: 'TRIPLE_FAULT',
|
'TRIPLE_FAULT': 2,
|
||||||
7: 'PENDING_INTERRUPT',
|
'PENDING_INTERRUPT': 7,
|
||||||
8: 'NMI_WINDOW',
|
'NMI_WINDOW': 8,
|
||||||
9: 'TASK_SWITCH',
|
'TASK_SWITCH': 9,
|
||||||
10: 'CPUID',
|
'CPUID': 10,
|
||||||
12: 'HLT',
|
'HLT': 12,
|
||||||
14: 'INVLPG',
|
'INVLPG': 14,
|
||||||
15: 'RDPMC',
|
'RDPMC': 15,
|
||||||
16: 'RDTSC',
|
'RDTSC': 16,
|
||||||
18: 'VMCALL',
|
'VMCALL': 18,
|
||||||
19: 'VMCLEAR',
|
'VMCLEAR': 19,
|
||||||
20: 'VMLAUNCH',
|
'VMLAUNCH': 20,
|
||||||
21: 'VMPTRLD',
|
'VMPTRLD': 21,
|
||||||
22: 'VMPTRST',
|
'VMPTRST': 22,
|
||||||
23: 'VMREAD',
|
'VMREAD': 23,
|
||||||
24: 'VMRESUME',
|
'VMRESUME': 24,
|
||||||
25: 'VMWRITE',
|
'VMWRITE': 25,
|
||||||
26: 'VMOFF',
|
'VMOFF': 26,
|
||||||
27: 'VMON',
|
'VMON': 27,
|
||||||
28: 'CR_ACCESS',
|
'CR_ACCESS': 28,
|
||||||
29: 'DR_ACCESS',
|
'DR_ACCESS': 29,
|
||||||
30: 'IO_INSTRUCTION',
|
'IO_INSTRUCTION': 30,
|
||||||
31: 'MSR_READ',
|
'MSR_READ': 31,
|
||||||
32: 'MSR_WRITE',
|
'MSR_WRITE': 32,
|
||||||
33: 'INVALID_STATE',
|
'INVALID_STATE': 33,
|
||||||
36: 'MWAIT_INSTRUCTION',
|
'MWAIT_INSTRUCTION': 36,
|
||||||
39: 'MONITOR_INSTRUCTION',
|
'MONITOR_INSTRUCTION': 39,
|
||||||
40: 'PAUSE_INSTRUCTION',
|
'PAUSE_INSTRUCTION': 40,
|
||||||
41: 'MCE_DURING_VMENTRY',
|
'MCE_DURING_VMENTRY': 41,
|
||||||
43: 'TPR_BELOW_THRESHOLD',
|
'TPR_BELOW_THRESHOLD': 43,
|
||||||
44: 'APIC_ACCESS',
|
'APIC_ACCESS': 44,
|
||||||
48: 'EPT_VIOLATION',
|
'EPT_VIOLATION': 48,
|
||||||
49: 'EPT_MISCONFIG',
|
'EPT_MISCONFIG': 49,
|
||||||
54: 'WBINVD',
|
'WBINVD': 54,
|
||||||
55: 'XSETBV',
|
'XSETBV': 55,
|
||||||
56: 'APIC_WRITE',
|
'APIC_WRITE': 56,
|
||||||
58: 'INVPCID',
|
'INVPCID': 58,
|
||||||
}
|
}
|
||||||
|
|
||||||
SVM_EXIT_REASONS = {
|
SVM_EXIT_REASONS = {
|
||||||
0x000: 'READ_CR0',
|
'READ_CR0': 0x000,
|
||||||
0x003: 'READ_CR3',
|
'READ_CR3': 0x003,
|
||||||
0x004: 'READ_CR4',
|
'READ_CR4': 0x004,
|
||||||
0x008: 'READ_CR8',
|
'READ_CR8': 0x008,
|
||||||
0x010: 'WRITE_CR0',
|
'WRITE_CR0': 0x010,
|
||||||
0x013: 'WRITE_CR3',
|
'WRITE_CR3': 0x013,
|
||||||
0x014: 'WRITE_CR4',
|
'WRITE_CR4': 0x014,
|
||||||
0x018: 'WRITE_CR8',
|
'WRITE_CR8': 0x018,
|
||||||
0x020: 'READ_DR0',
|
'READ_DR0': 0x020,
|
||||||
0x021: 'READ_DR1',
|
'READ_DR1': 0x021,
|
||||||
0x022: 'READ_DR2',
|
'READ_DR2': 0x022,
|
||||||
0x023: 'READ_DR3',
|
'READ_DR3': 0x023,
|
||||||
0x024: 'READ_DR4',
|
'READ_DR4': 0x024,
|
||||||
0x025: 'READ_DR5',
|
'READ_DR5': 0x025,
|
||||||
0x026: 'READ_DR6',
|
'READ_DR6': 0x026,
|
||||||
0x027: 'READ_DR7',
|
'READ_DR7': 0x027,
|
||||||
0x030: 'WRITE_DR0',
|
'WRITE_DR0': 0x030,
|
||||||
0x031: 'WRITE_DR1',
|
'WRITE_DR1': 0x031,
|
||||||
0x032: 'WRITE_DR2',
|
'WRITE_DR2': 0x032,
|
||||||
0x033: 'WRITE_DR3',
|
'WRITE_DR3': 0x033,
|
||||||
0x034: 'WRITE_DR4',
|
'WRITE_DR4': 0x034,
|
||||||
0x035: 'WRITE_DR5',
|
'WRITE_DR5': 0x035,
|
||||||
0x036: 'WRITE_DR6',
|
'WRITE_DR6': 0x036,
|
||||||
0x037: 'WRITE_DR7',
|
'WRITE_DR7': 0x037,
|
||||||
0x040: 'EXCP_BASE',
|
'EXCP_BASE': 0x040,
|
||||||
0x060: 'INTR',
|
'INTR': 0x060,
|
||||||
0x061: 'NMI',
|
'NMI': 0x061,
|
||||||
0x062: 'SMI',
|
'SMI': 0x062,
|
||||||
0x063: 'INIT',
|
'INIT': 0x063,
|
||||||
0x064: 'VINTR',
|
'VINTR': 0x064,
|
||||||
0x065: 'CR0_SEL_WRITE',
|
'CR0_SEL_WRITE': 0x065,
|
||||||
0x066: 'IDTR_READ',
|
'IDTR_READ': 0x066,
|
||||||
0x067: 'GDTR_READ',
|
'GDTR_READ': 0x067,
|
||||||
0x068: 'LDTR_READ',
|
'LDTR_READ': 0x068,
|
||||||
0x069: 'TR_READ',
|
'TR_READ': 0x069,
|
||||||
0x06a: 'IDTR_WRITE',
|
'IDTR_WRITE': 0x06a,
|
||||||
0x06b: 'GDTR_WRITE',
|
'GDTR_WRITE': 0x06b,
|
||||||
0x06c: 'LDTR_WRITE',
|
'LDTR_WRITE': 0x06c,
|
||||||
0x06d: 'TR_WRITE',
|
'TR_WRITE': 0x06d,
|
||||||
0x06e: 'RDTSC',
|
'RDTSC': 0x06e,
|
||||||
0x06f: 'RDPMC',
|
'RDPMC': 0x06f,
|
||||||
0x070: 'PUSHF',
|
'PUSHF': 0x070,
|
||||||
0x071: 'POPF',
|
'POPF': 0x071,
|
||||||
0x072: 'CPUID',
|
'CPUID': 0x072,
|
||||||
0x073: 'RSM',
|
'RSM': 0x073,
|
||||||
0x074: 'IRET',
|
'IRET': 0x074,
|
||||||
0x075: 'SWINT',
|
'SWINT': 0x075,
|
||||||
0x076: 'INVD',
|
'INVD': 0x076,
|
||||||
0x077: 'PAUSE',
|
'PAUSE': 0x077,
|
||||||
0x078: 'HLT',
|
'HLT': 0x078,
|
||||||
0x079: 'INVLPG',
|
'INVLPG': 0x079,
|
||||||
0x07a: 'INVLPGA',
|
'INVLPGA': 0x07a,
|
||||||
0x07b: 'IOIO',
|
'IOIO': 0x07b,
|
||||||
0x07c: 'MSR',
|
'MSR': 0x07c,
|
||||||
0x07d: 'TASK_SWITCH',
|
'TASK_SWITCH': 0x07d,
|
||||||
0x07e: 'FERR_FREEZE',
|
'FERR_FREEZE': 0x07e,
|
||||||
0x07f: 'SHUTDOWN',
|
'SHUTDOWN': 0x07f,
|
||||||
0x080: 'VMRUN',
|
'VMRUN': 0x080,
|
||||||
0x081: 'VMMCALL',
|
'VMMCALL': 0x081,
|
||||||
0x082: 'VMLOAD',
|
'VMLOAD': 0x082,
|
||||||
0x083: 'VMSAVE',
|
'VMSAVE': 0x083,
|
||||||
0x084: 'STGI',
|
'STGI': 0x084,
|
||||||
0x085: 'CLGI',
|
'CLGI': 0x085,
|
||||||
0x086: 'SKINIT',
|
'SKINIT': 0x086,
|
||||||
0x087: 'RDTSCP',
|
'RDTSCP': 0x087,
|
||||||
0x088: 'ICEBP',
|
'ICEBP': 0x088,
|
||||||
0x089: 'WBINVD',
|
'WBINVD': 0x089,
|
||||||
0x08a: 'MONITOR',
|
'MONITOR': 0x08a,
|
||||||
0x08b: 'MWAIT',
|
'MWAIT': 0x08b,
|
||||||
0x08c: 'MWAIT_COND',
|
'MWAIT_COND': 0x08c,
|
||||||
0x08d: 'XSETBV',
|
'XSETBV': 0x08d,
|
||||||
0x400: 'NPF',
|
'NPF': 0x400,
|
||||||
}
|
}
|
||||||
|
|
||||||
# EC definition of HSR (from arch/arm64/include/asm/kvm_arm.h)
|
# EC definition of HSR (from arch/arm64/include/asm/kvm_arm.h)
|
||||||
AARCH64_EXIT_REASONS = {
|
AARCH64_EXIT_REASONS = {
|
||||||
0x00: 'UNKNOWN',
|
'UNKNOWN': 0x00,
|
||||||
0x01: 'WFI',
|
'WFI': 0x01,
|
||||||
0x03: 'CP15_32',
|
'CP15_32': 0x03,
|
||||||
0x04: 'CP15_64',
|
'CP15_64': 0x04,
|
||||||
0x05: 'CP14_MR',
|
'CP14_MR': 0x05,
|
||||||
0x06: 'CP14_LS',
|
'CP14_LS': 0x06,
|
||||||
0x07: 'FP_ASIMD',
|
'FP_ASIMD': 0x07,
|
||||||
0x08: 'CP10_ID',
|
'CP10_ID': 0x08,
|
||||||
0x0C: 'CP14_64',
|
'CP14_64': 0x0C,
|
||||||
0x0E: 'ILL_ISS',
|
'ILL_ISS': 0x0E,
|
||||||
0x11: 'SVC32',
|
'SVC32': 0x11,
|
||||||
0x12: 'HVC32',
|
'HVC32': 0x12,
|
||||||
0x13: 'SMC32',
|
'SMC32': 0x13,
|
||||||
0x15: 'SVC64',
|
'SVC64': 0x15,
|
||||||
0x16: 'HVC64',
|
'HVC64': 0x16,
|
||||||
0x17: 'SMC64',
|
'SMC64': 0x17,
|
||||||
0x18: 'SYS64',
|
'SYS64': 0x18,
|
||||||
0x20: 'IABT',
|
'IABT': 0x20,
|
||||||
0x21: 'IABT_HYP',
|
'IABT_HYP': 0x21,
|
||||||
0x22: 'PC_ALIGN',
|
'PC_ALIGN': 0x22,
|
||||||
0x24: 'DABT',
|
'DABT': 0x24,
|
||||||
0x25: 'DABT_HYP',
|
'DABT_HYP': 0x25,
|
||||||
0x26: 'SP_ALIGN',
|
'SP_ALIGN': 0x26,
|
||||||
0x28: 'FP_EXC32',
|
'FP_EXC32': 0x28,
|
||||||
0x2C: 'FP_EXC64',
|
'FP_EXC64': 0x2C,
|
||||||
0x2F: 'SERROR',
|
'SERROR': 0x2F,
|
||||||
0x30: 'BREAKPT',
|
'BREAKPT': 0x30,
|
||||||
0x31: 'BREAKPT_HYP',
|
'BREAKPT_HYP': 0x31,
|
||||||
0x32: 'SOFTSTP',
|
'SOFTSTP': 0x32,
|
||||||
0x33: 'SOFTSTP_HYP',
|
'SOFTSTP_HYP': 0x33,
|
||||||
0x34: 'WATCHPT',
|
'WATCHPT': 0x34,
|
||||||
0x35: 'WATCHPT_HYP',
|
'WATCHPT_HYP': 0x35,
|
||||||
0x38: 'BKPT32',
|
'BKPT32': 0x38,
|
||||||
0x3A: 'VECTOR32',
|
'VECTOR32': 0x3A,
|
||||||
0x3C: 'BRK64',
|
'BRK64': 0x3C,
|
||||||
}
|
}
|
||||||
|
|
||||||
# From include/uapi/linux/kvm.h, KVM_EXIT_xxx
|
# From include/uapi/linux/kvm.h, KVM_EXIT_xxx
|
||||||
USERSPACE_EXIT_REASONS = {
|
USERSPACE_EXIT_REASONS = {
|
||||||
0: 'UNKNOWN',
|
'UNKNOWN': 0,
|
||||||
1: 'EXCEPTION',
|
'EXCEPTION': 1,
|
||||||
2: 'IO',
|
'IO': 2,
|
||||||
3: 'HYPERCALL',
|
'HYPERCALL': 3,
|
||||||
4: 'DEBUG',
|
'DEBUG': 4,
|
||||||
5: 'HLT',
|
'HLT': 5,
|
||||||
6: 'MMIO',
|
'MMIO': 6,
|
||||||
7: 'IRQ_WINDOW_OPEN',
|
'IRQ_WINDOW_OPEN': 7,
|
||||||
8: 'SHUTDOWN',
|
'SHUTDOWN': 8,
|
||||||
9: 'FAIL_ENTRY',
|
'FAIL_ENTRY': 9,
|
||||||
10: 'INTR',
|
'INTR': 10,
|
||||||
11: 'SET_TPR',
|
'SET_TPR': 11,
|
||||||
12: 'TPR_ACCESS',
|
'TPR_ACCESS': 12,
|
||||||
13: 'S390_SIEIC',
|
'S390_SIEIC': 13,
|
||||||
14: 'S390_RESET',
|
'S390_RESET': 14,
|
||||||
15: 'DCR',
|
'DCR': 15,
|
||||||
16: 'NMI',
|
'NMI': 16,
|
||||||
17: 'INTERNAL_ERROR',
|
'INTERNAL_ERROR': 17,
|
||||||
18: 'OSI',
|
'OSI': 18,
|
||||||
19: 'PAPR_HCALL',
|
'PAPR_HCALL': 19,
|
||||||
20: 'S390_UCONTROL',
|
'S390_UCONTROL': 20,
|
||||||
21: 'WATCHDOG',
|
'WATCHDOG': 21,
|
||||||
22: 'S390_TSCH',
|
'S390_TSCH': 22,
|
||||||
23: 'EPR',
|
'EPR': 23,
|
||||||
24: 'SYSTEM_EVENT',
|
'SYSTEM_EVENT': 24,
|
||||||
}
|
}
|
||||||
|
|
||||||
X86_EXIT_REASONS = {
|
X86_EXIT_REASONS = {
|
||||||
@ -297,13 +297,10 @@ def walkdir(path):
|
|||||||
"""
|
"""
|
||||||
return next(os.walk(path))
|
return next(os.walk(path))
|
||||||
|
|
||||||
def invert(d):
|
|
||||||
return dict((x[1], x[0]) for x in d.iteritems())
|
|
||||||
|
|
||||||
filters = {}
|
filters = {}
|
||||||
filters['kvm_userspace_exit'] = ('reason', invert(USERSPACE_EXIT_REASONS))
|
filters['kvm_userspace_exit'] = ('reason', USERSPACE_EXIT_REASONS)
|
||||||
if EXIT_REASONS:
|
if EXIT_REASONS:
|
||||||
filters['kvm_exit'] = ('exit_reason', invert(EXIT_REASONS))
|
filters['kvm_exit'] = ('exit_reason', EXIT_REASONS)
|
||||||
|
|
||||||
libc = ctypes.CDLL('libc.so.6')
|
libc = ctypes.CDLL('libc.so.6')
|
||||||
syscall = libc.syscall
|
syscall = libc.syscall
|
||||||
|
Loading…
x
Reference in New Issue
Block a user