KVM MMU
Investigate kvm_mmu_pages and mmu_page_path in mmu_zap_unsync_children
global started
probe begin { started = 0 }
probe module("kvm").statement("*@arch/x86/kvm/mmu.c:2605")
{
level_2 = 0
for (i = 0; i < $pages->nr; i++) {
if ($pages->page[i]->sp->role->level == 2)
level_2++
}
printf("level2 %d\n", level_2);
if (level_2 < 2)
next;
started = $parent;
printf("Dump pages after mmu_unsync_walk \n");
printf("--------------------------------\n");
printf("SP Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\n");
printf("SP Level:");
for (i = 0; i < $pages->nr; i++) {
printf("%3d", $pages->page[i]->sp->role->level);
}
printf("\n");
for (i = 0; i < $pages->nr; i++) {
printf("[%d]: %x\n", i, $pages->page[i]->sp);
}
}
probe module("kvm*").function("mmu_zap_unsync_children").return
{
if (started == @entry($parent))
exit();
}
probe module("kvm*").statement("*@arch/x86/kvm/mmu.c:2609")
{
if (!started)
next;
printf("Dump parents after for_each_sp \n");
printf("--------------------------------\n");
printf("Current sp : [%d]%x\n", $i, $sp);
printf("Level in Parents:");
for (idx = 0; idx < 5; idx++) {
if (!$parents->parent[idx])
break;
printf("%3d", $parents->parent[idx]->role->level);
}
printf("\n");
printf("SP in Parents:\n")
for (idx = 0; idx < 5; idx++) {
if (!$parents->parent[idx])
break;
printf("[%d]: %x\n", idx, $parents->parent[idx]);
}
}Dump vcpu root_hpa
Investigate ROOT_HPA Invalidation
Last updated