VirtualBox

Changeset 53631 in vbox for trunk


Ignore:
Timestamp:
Jan 1, 2015 11:53:43 PM (10 years ago)
Author:
vboxsync
Message:

vmexit trace points.

Location:
trunk/src/VBox/VMM
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VBoxVMM.d

    r41338 r53631  
    55
    66/*
    7  * Copyright (C) 2009-2012 Oracle Corporation
     7 * Copyright (C) 2009-2015 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    3636    /*^^VMM-ALT-TP: "vm=%#x cpu=%#x rc=%d", (a_fGlobal), (a_fLocal), (a_rc) */
    3737
    38     probe em__ff__all_ret(struct VMCPU *a_pVCpu, int a_rc);
     38    probe em__ff__all__ret(struct VMCPU *a_pVCpu, int a_rc);
    3939    /*^^VMM-ALT-TP: "%d", (a_rc) */
    4040
     
    5252
    5353    probe r0__gvmm__vm__created(void *a_pGVM, void *a_pVM, uint32_t a_Pid, void *a_hEMT0, uint32_t a_cCpus);
    54     probe r0__hmsvm__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitCode,
    55                             uint64_t a_ExitInfo1, uint64_t a_ExitInfo2, uint64_t a_ExitIntInfo,
    56                             uint64_t a_TestArgument);
    57     probe r0__hmvmx__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitReason);
     54    probe r0__hmsvm__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitCode, struct SVMVMCB *a_pVmcb);
     55    probe r0__hmvmx__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitReason, uint64_t a_ExitQualification);
     56    probe r0__hmvmx__vmexit__noctx(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pIncompleteCtx, uint64_t a_ExitReason);
    5857
    5958};
  • trunk/src/VBox/VMM/VMMR0/HMSVMR0.cpp

    r53629 r53631  
    3131#include <VBox/vmm/tm.h>
    3232#include <VBox/vmm/gim.h>
     33#include "dtrace/VBoxVMM.h"
    3334
    3435#ifdef DEBUG_ramshankar
     
    33003301        HMSVM_EXITCODE_STAM_COUNTER_INC(SvmTransient.u64ExitCode);
    33013302        STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatExit1, &pVCpu->hm.s.StatExit2, x);
     3303        VBOXVMM_R0_HMSVM_VMEXIT(pVCpu, pCtx, SvmTransient.u64ExitCode, (PSVMVMCB)pVCpu->hm.s.svm.pvVmcb);
    33023304        rc = hmR0SvmHandleExit(pVCpu, pCtx, &SvmTransient);
    33033305        STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExit2, x);
     
    33773379        HMSVM_EXITCODE_STAM_COUNTER_INC(SvmTransient.u64ExitCode);
    33783380        STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatExit1, &pVCpu->hm.s.StatExit2, x);
     3381        VBOXVMM_R0_HMSVM_VMEXIT(pVCpu, pCtx, SvmTransient.u64ExitCode, (PSVMVMCB)pVCpu->hm.s.svm.pvVmcb);
    33793382        rc = hmR0SvmHandleExit(pVCpu, pCtx, &SvmTransient);
    33803383        STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExit2, x);
  • trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp

    r53628 r53631  
    3737# include <VBox/vmm/rem.h>
    3838#endif
     39# include "dtrace/VBoxVMM.h"
     40
    3941#ifdef DEBUG_ramshankar
    4042# define HMVMX_ALWAYS_SAVE_GUEST_RFLAGS
     
    88328834        }
    88338835
    8834         /* Handle the VM-exit. */
     8836        /* Profiling the VM-exit. */
    88358837        AssertMsg(VmxTransient.uExitReason <= VMX_EXIT_MAX, ("%#x\n", VmxTransient.uExitReason));
    88368838        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitAll);
     
    88388840        STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatExit1, &pVCpu->hm.s.StatExit2, x);
    88398841        HMVMX_START_EXIT_DISPATCH_PROF();
     8842
     8843        VBOXVMM_R0_HMVMX_VMEXIT_NOCTX(pVCpu, pCtx, VmxTransient.uExitReason);
     8844        if (RT_UNLIKELY(VBOXVMM_R0_HMVMX_VMEXIT_ENABLED()))
     8845        {
     8846            hmR0VmxReadExitQualificationVmcs(pVCpu, &VmxTransient);
     8847            hmR0VmxSaveGuestState(pVCpu, pCtx);
     8848            VBOXVMM_R0_HMVMX_VMEXIT(pVCpu, pCtx, VmxTransient.uExitReason, VmxTransient.uExitQualification);
     8849        }
     8850
     8851        /* Handle the VM-exit. */
    88408852#ifdef HMVMX_USE_FUNCTION_TABLE
    88418853        rc = g_apfnVMExitHandlers[VmxTransient.uExitReason](pVCpu, pCtx, &VmxTransient);
     
    89058917            return VBOXSTRICTRC_TODO(rcStrict);
    89068918        }
    8907 
    8908         /* Handle the VM-exit - we quit earlier on certain VM-exits, see hmR0VmxHandleExitStep(). */
     8919        /* Profiling the VM-exit. */
    89098920        AssertMsg(VmxTransient.uExitReason <= VMX_EXIT_MAX, ("%#x\n", VmxTransient.uExitReason));
    89108921        STAM_COUNTER_INC(&pVCpu->hm.s.StatExitAll);
     
    89128923        STAM_PROFILE_ADV_STOP_START(&pVCpu->hm.s.StatExit1, &pVCpu->hm.s.StatExit2, x);
    89138924        HMVMX_START_EXIT_DISPATCH_PROF();
     8925
     8926        VBOXVMM_R0_HMVMX_VMEXIT_NOCTX(pVCpu, pCtx, VmxTransient.uExitReason);
     8927        if (RT_UNLIKELY(VBOXVMM_R0_HMVMX_VMEXIT_ENABLED()))
     8928        {
     8929            hmR0VmxReadExitQualificationVmcs(pVCpu, &VmxTransient);
     8930            hmR0VmxSaveGuestState(pVCpu, pCtx);
     8931            VBOXVMM_R0_HMVMX_VMEXIT(pVCpu, pCtx, VmxTransient.uExitReason, VmxTransient.uExitQualification);
     8932        }
     8933
     8934        /* Handle the VM-exit - we quit earlier on certain VM-exits, see hmR0VmxHandleExitStep(). */
    89148935        rcStrict = hmR0VmxHandleExitStep(pVCpu, pCtx, &VmxTransient, VmxTransient.uExitReason, uCsStart, uRipStart);
    89158936        STAM_PROFILE_ADV_STOP(&pVCpu->hm.s.StatExit2, x);
  • trunk/src/VBox/VMM/dtrace/vmexit-rip-aggregation-1.d

    r41274 r53631  
    1818#pragma D option quiet
    1919
     20
    2021vboxvmm:::r0-hmsvm-vmexit,vboxvmm:::r0-hmvmx-vmexit
    2122{
    22     /* printf("cs:rip=%02x:%08llx", args[1]->cs, args[1]->rip.rip);*/
     23    /*printf("cs:rip=%02x:%08llx", args[1]->cs.Sel, args[1]->rip.rip);*/
    2324    @g_aRips[args[1]->rip.rip] = count();
    2425    /*@g_aRips[args[0]->cpum.s.Guest.rip.rip] = count(); - alternative access route */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette