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