i just attempted ftrace with kvm.ko:

It clearly shows who is the caller and who is the callee.  This is
only two level.   With systemtap u can do stacktrace, which is a lot
more level of caller/callee being dump on the stack.

qemu-system-x86-19828 [000]  2794.001785: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001786: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001787: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001787: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.001788: kvm_vcpu_kick <-__apic_accept_irq
 qemu-system-x86-19828 [000]  2794.001788: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.001788: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001789: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001789: kvm_lapic_get_cr8 <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001789: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001790: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001790: kvm_cpu_get_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001790: kvm_get_apic_interrupt <-kvm_cpu_get_interrupt
 qemu-system-x86-19828 [000]  2794.001790: kvm_apic_has_interrupt <-kvm_get_apic_interrupt
 qemu-system-x86-19828 [000]  2794.001791: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001791: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001791: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001792: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001794: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001795: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001795: kvm_mmu_page_fault <-handle_exception
 qemu-system-x86-19828 [000]  2794.001795: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001796: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001796: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001796: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001797: kvm_release_pfn_clean <-paging32_page_fault
 qemu-system-x86-19828 [000]  2794.001798: kvm_read_guest_virt <-do_insn_fetch
 qemu-system-x86-19828 [000]  2794.001798: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001798: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001799: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001799: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001799: kvm_read_guest <-kvm_read_guest_virt
 qemu-system-x86-19828 [000]  2794.001799: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001800: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001801: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001801: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001801: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001802: kvm_ioapic_update_eoi <-apic_mmio_write
 qemu-system-x86-19828 [000]  2794.001802: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001803: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.001803: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.001803: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001804: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001804: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001804: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001804: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001805: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001810: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001810: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001811: kvm_mmu_page_fault <-handle_exception
 qemu-system-x86-19828 [000]  2794.001811: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001811: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001812: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001812: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001812: kvm_release_pfn_clean <-paging32_page_fault
 qemu-system-x86-19828 [000]  2794.001813: kvm_read_guest_virt <-do_insn_fetch
 qemu-system-x86-19828 [000]  2794.001813: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001813: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001814: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001814: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001814: kvm_read_guest <-kvm_read_guest_virt
 qemu-system-x86-19828 [000]  2794.001815: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001815: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001816: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001816: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.001816: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.001818: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.001818: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.001818: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.001819: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001819: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001819: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.001820: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001820: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.001820: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002182: kvm_sched_out <-__schedule
 qemu-system-x86-19828 [000]  2794.002183: kvm_arch_vcpu_put <-kvm_sched_out
 qemu-system-x86-19828 [000]  2794.002265: kvm_sched_in <-finish_task_switch
 qemu-system-x86-19828 [000]  2794.002265: kvm_arch_vcpu_load <-kvm_sched_in
 qemu-system-x86-19828 [000]  2794.002266: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002266: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002267: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002267: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002267: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002268: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002269: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002269: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002269: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002270: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002270: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002442: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002443: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002443: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002443: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002444: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002444: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002444: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002445: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002445: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002445: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002445: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002788: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002789: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002789: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002789: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002790: kvm_vcpu_kick <-__apic_accept_irq
 qemu-system-x86-19828 [000]  2794.002790: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002790: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002791: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002791: kvm_lapic_get_cr8 <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002791: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002792: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002792: kvm_cpu_get_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002792: kvm_get_apic_interrupt <-kvm_cpu_get_interrupt
 qemu-system-x86-19828 [000]  2794.002792: kvm_apic_has_interrupt <-kvm_get_apic_interrupt
 qemu-system-x86-19828 [000]  2794.002793: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002793: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002793: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002794: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002796: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002797: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002797: kvm_mmu_page_fault <-handle_exception
 qemu-system-x86-19828 [000]  2794.002798: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002798: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002799: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002799: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002800: kvm_release_pfn_clean <-paging32_page_fault
 qemu-system-x86-19828 [000]  2794.002801: kvm_read_guest_virt <-do_insn_fetch
 qemu-system-x86-19828 [000]  2794.002801: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002802: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002802: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002802: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002803: kvm_read_guest <-kvm_read_guest_virt
 qemu-system-x86-19828 [000]  2794.002803: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002805: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002805: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002805: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002805: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002806: kvm_ioapic_update_eoi <-apic_mmio_write
 qemu-system-x86-19828 [000]  2794.002807: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002807: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002808: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002808: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002808: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002808: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002809: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002809: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002809: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002817: kvm_lapic_sync_from_vapic <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002817: kvm_handle_exit <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002817: kvm_mmu_page_fault <-handle_exception
 qemu-system-x86-19828 [000]  2794.002818: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002818: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002818: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002819: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002819: kvm_release_pfn_clean <-paging32_page_fault
 qemu-system-x86-19828 [000]  2794.002820: kvm_read_guest_virt <-do_insn_fetch
 qemu-system-x86-19828 [000]  2794.002820: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002820: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002821: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002821: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002821: kvm_read_guest <-kvm_read_guest_virt
 qemu-system-x86-19828 [000]  2794.002821: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002822: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002822: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002823: kvm_read_guest <-paging32_walk_addr
 qemu-system-x86-19828 [000]  2794.002823: kvm_read_guest_page <-kvm_read_guest
 qemu-system-x86-19828 [000]  2794.002824: kvm_inject_pending_timer_irqs <-kvm_arch_vcpu_ioctl_run
 qemu-system-x86-19828 [000]  2794.002825: kvm_inject_apic_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002825: kvm_inject_pit_timer_irqs <-kvm_inject_pending_timer_irqs
 qemu-system-x86-19828 [000]  2794.002825: kvm_lapic_enabled <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002825: kvm_lapic_find_highest_irr <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002826: kvm_cpu_has_interrupt <-vmx_intr_assist
 qemu-system-x86-19828 [000]  2794.002826: kvm_apic_has_interrupt <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002826: kvm_apic_accept_pic_intr <-kvm_cpu_has_interrupt
 qemu-system-x86-19828 [000]  2794.002827: kvm_lapic_sync_to_vapic <-kvm_arch_vcpu_ioctl_run

Reply via email to