Skip to content

Commit b71735e

Browse files
updated bundled hyperkit to latest upstream
Signed-off-by: António Meireles <antonio.meireles@reformi.st>
1 parent e2d11ff commit b71735e

3 files changed

Lines changed: 133 additions & 64 deletions

File tree

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ BUILDDATE = $(shell /bin/date "+%FT%T%Z")
2121

2222
OPAMROOT ?= ~/.opam
2323
HYPERKIT_GIT = "https://github.com/docker/hyperkit.git"
24-
HYPERKIT_COMMIT = 6ffa03337e9353d126a85401fb6ada1ad5d62dbe
24+
HYPERKIT_COMMIT = 7ddb7db34edadfa0184c2893d799660e87919e83
2525

2626
MKDIR = /bin/mkdir -p
2727
CP = /bin/cp
@@ -89,7 +89,7 @@ hyperkit: force
8989
# - 1st run
9090
# - brew install opam libev
9191
# - opam init -y
92-
# - opam install --yes uri qcow-format ocamlfind conf-libev
92+
# - opam install --yes uri qcow.0.7.0 ocamlfind conf-libev logs fmt
9393
# - maintenance
9494
# - opam update && opam upgrade -y
9595
# - build

examples/dtrace/eptfault.d

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,80 @@
77

88
#pragma D option quiet
99

10+
string lapic_map[uint32_t];
11+
1012
dtrace:::BEGIN
1113
{
12-
printf("Tracing... Hit Ctrl-C to end.\n");
14+
start = timestamp;
15+
16+
// from src/include/xhyve/vmm/io/vlapic_priv.h
17+
lapic_map[0x20] = "ID";
18+
lapic_map[0x30] = "VER";
19+
lapic_map[0x80] = "TPR";
20+
lapic_map[0x90] = "APR";
21+
lapic_map[0xA0] = "PPR";
22+
lapic_map[0xB0] = "EOI";
23+
lapic_map[0xC0] = "RRR";
24+
lapic_map[0xD0] = "LDR";
25+
lapic_map[0xE0] = "DFR";
26+
lapic_map[0xF0] = "SVR";
27+
lapic_map[0x100] = "ISR0";
28+
lapic_map[0x110] = "ISR1";
29+
lapic_map[0x130] = "ISR3";
30+
lapic_map[0x150] = "ISR5";
31+
lapic_map[0x170] = "ISR7";
32+
lapic_map[0x190] = "TMR1";
33+
lapic_map[0x1B0] = "TMR3";
34+
lapic_map[0x1D0] = "TMR5";
35+
lapic_map[0x1F0] = "TMR7";
36+
lapic_map[0x210] = "IRR1";
37+
lapic_map[0x230] = "IRR3";
38+
lapic_map[0x250] = "IRR5";
39+
lapic_map[0x270] = "IRR7";
40+
lapic_map[0x2F0] = "CMCI_LVT";
41+
lapic_map[0x300] = "ICR_LOW";
42+
lapic_map[0x310] = "ICR_HI";
43+
lapic_map[0x330] = "THERM_LVT";
44+
lapic_map[0x340] = "PERF_LVT";
45+
lapic_map[0x350] = "LINT0_LVT";
46+
lapic_map[0x360] = "LINT1_LVT";
47+
lapic_map[0x370] = "ERROR_LVT";
48+
lapic_map[0x380] = "TIMER_ICR";
49+
lapic_map[0x390] = "TIMER_CCR";
50+
lapic_map[0x3E0] = "TIMER_DCR";
51+
lapic_map[0x3F0] = "SELF_IPI";
52+
53+
printf("Tracing... Hit Ctrl-C to end.\n");
1354
}
1455

1556
hyperkit$target:::vmx-ept-fault
57+
/(arg1 & 0xfff00000) == 0xfee00000/
1658
{
17-
@num[arg1, arg0] = count();
59+
// LAPIC FAULTS
60+
61+
@lapic_faults[lapic_map[arg1 & 0x000fffff], arg0] = count();
62+
}
63+
64+
hyperkit$target:::vmx-ept-fault
65+
{
66+
@all_faults[arg1, arg0] = count();
1867
}
1968

2069
dtrace:::END
2170
{
22-
printf("%18s %-4s %8s\n", "ADDRESS", "vCPU", "COUNT");
23-
printa("%18x %-4d %@8d\n", @num);
71+
#ifdef TOTAL
72+
printf("%18s %-4s %10s\n", "ADDRESS", "vCPU", "COUNT");
73+
#else
74+
printf("%18s %-4s %10s\n", "ADDRESS", "vCPU", "RATE (1/s)");
75+
normalize(@all_faults, (timestamp - start) / 1000000000);
76+
#endif
77+
printa("%18x %-4d %@10d\n", @all_faults);
78+
79+
#ifdef TOTAL
80+
printf("%18s %-4s %10s\n", "LAPIC REGISTER", "vCPU", "COUNT");
81+
#else
82+
printf("%18s %-4s %10s\n", "LAPIC REGISTER", "vCPU", "RATE (1/s)");
83+
normalize(@lapic_faults, (timestamp - start) / 1000000000);
84+
#endif
85+
printa("%18s %-4d %@10d\n", @lapic_faults);
2486
}

examples/dtrace/vmxexit.d

Lines changed: 65 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -11,71 +11,78 @@ string reasons[int];
1111

1212
dtrace:::BEGIN
1313
{
14-
reasons[0] = "EXCEPTION";
15-
reasons[1] = "EXT_INTR";
16-
reasons[2] = "TRIPLE_FAULT";
17-
reasons[3] = "INIT";
18-
reasons[4] = "SIPI";
19-
reasons[5] = "IO_SMI";
20-
reasons[6] = "SMI";
21-
reasons[7] = "INTR_WINDOW";
22-
reasons[8] = "NMI_WINDOW";
23-
reasons[9] = "TASK_SWITCH";
24-
reasons[10] = "CPUID";
25-
reasons[11] = "GETSEC";
26-
reasons[12] = "HLT";
27-
reasons[13] = "INVD";
28-
reasons[14] = "INVLPG";
29-
reasons[15] = "RDPMC";
30-
reasons[16] = "RDTSC";
31-
reasons[17] = "RSM";
32-
reasons[18] = "VMCALL";
33-
reasons[19] = "VMCLEAR";
34-
reasons[20] = "VMLAUNCH";
35-
reasons[21] = "VMPTRLD";
36-
reasons[22] = "VMPTRST";
37-
reasons[23] = "VMREAD";
38-
reasons[24] = "VMRESUME";
39-
reasons[25] = "VMWRITE";
40-
reasons[26] = "VMXOFF";
41-
reasons[27] = "VMXON";
42-
reasons[28] = "CR_ACCESS";
43-
reasons[29] = "DR_ACCESS";
44-
reasons[30] = "INOUT";
45-
reasons[31] = "RDMSR";
46-
reasons[32] = "WRMSR";
47-
reasons[33] = "INVAL_VMCS";
48-
reasons[34] = "INVAL_MSR";
49-
reasons[36] = "MWAIT";
50-
reasons[37] = "MTF";
51-
reasons[39] = "MONITOR";
52-
reasons[40] = "PAUSE";
53-
reasons[41] = "MCE_DURING_ENTRY";
54-
reasons[43] = "TPR";
55-
reasons[44] = "APIC_ACCESS";
56-
reasons[45] = "VIRTUALIZED_EOI";
57-
reasons[46] = "GDTR_IDTR";
58-
reasons[47] = "LDTR_TR";
59-
reasons[48] = "EPT_FAULT";
60-
reasons[49] = "EPT_MISCONFIG";
61-
reasons[50] = "INVEPT";
62-
reasons[51] = "RDTSCP";
63-
reasons[52] = "VMX_PREEMPT";
64-
reasons[53] = "INVVPID";
65-
reasons[54] = "WBINVD";
66-
reasons[55] = "XSETBV";
67-
reasons[56] = "APIC_WRITE";
14+
start = timestamp;
6815

69-
printf("Tracing... Hit Ctrl-C to end.\n");
16+
reasons[0] = "EXCEPTION";
17+
reasons[1] = "EXT_INTR";
18+
reasons[2] = "TRIPLE_FAULT";
19+
reasons[3] = "INIT";
20+
reasons[4] = "SIPI";
21+
reasons[5] = "IO_SMI";
22+
reasons[6] = "SMI";
23+
reasons[7] = "INTR_WINDOW";
24+
reasons[8] = "NMI_WINDOW";
25+
reasons[9] = "TASK_SWITCH";
26+
reasons[10] = "CPUID";
27+
reasons[11] = "GETSEC";
28+
reasons[12] = "HLT";
29+
reasons[13] = "INVD";
30+
reasons[14] = "INVLPG";
31+
reasons[15] = "RDPMC";
32+
reasons[16] = "RDTSC";
33+
reasons[17] = "RSM";
34+
reasons[18] = "VMCALL";
35+
reasons[19] = "VMCLEAR";
36+
reasons[20] = "VMLAUNCH";
37+
reasons[21] = "VMPTRLD";
38+
reasons[22] = "VMPTRST";
39+
reasons[23] = "VMREAD";
40+
reasons[24] = "VMRESUME";
41+
reasons[25] = "VMWRITE";
42+
reasons[26] = "VMXOFF";
43+
reasons[27] = "VMXON";
44+
reasons[28] = "CR_ACCESS";
45+
reasons[29] = "DR_ACCESS";
46+
reasons[30] = "INOUT";
47+
reasons[31] = "RDMSR";
48+
reasons[32] = "WRMSR";
49+
reasons[33] = "INVAL_VMCS";
50+
reasons[34] = "INVAL_MSR";
51+
reasons[36] = "MWAIT";
52+
reasons[37] = "MTF";
53+
reasons[39] = "MONITOR";
54+
reasons[40] = "PAUSE";
55+
reasons[41] = "MCE_DURING_ENTRY";
56+
reasons[43] = "TPR";
57+
reasons[44] = "APIC_ACCESS";
58+
reasons[45] = "VIRTUALIZED_EOI";
59+
reasons[46] = "GDTR_IDTR";
60+
reasons[47] = "LDTR_TR";
61+
reasons[48] = "EPT_FAULT";
62+
reasons[49] = "EPT_MISCONFIG";
63+
reasons[50] = "INVEPT";
64+
reasons[51] = "RDTSCP";
65+
reasons[52] = "VMX_PREEMPT";
66+
reasons[53] = "INVVPID";
67+
reasons[54] = "WBINVD";
68+
reasons[55] = "XSETBV";
69+
reasons[56] = "APIC_WRITE";
70+
71+
printf("Tracing... Hit Ctrl-C to end.\n");
7072
}
7173

7274
hyperkit$target:::vmx-exit
7375
{
74-
@num[reasons[arg1], arg0] = count();
76+
@num[reasons[arg1], arg0] = count();
7577
}
7678

7779
dtrace:::END
7880
{
79-
printf("%16s %-4s %8s\n", "REASON", "vCPU", "COUNT");
80-
printa("%16s %-4d %@8d\n", @num);
81+
#ifdef TOTAL
82+
printf("%16s %-4s %8s\n", "REASON", "vCPU", "COUNT");
83+
#else
84+
printf("%16s %-4s %8s\n", "REASON", "vCPU", "RATE (1/s)");
85+
normalize(@num, (timestamp - start) / 1000000000);
86+
#endif
87+
printa("%16s %-4d %@8d\n", @num);
8188
}

0 commit comments

Comments
 (0)