VirtualBox

Changeset 51563 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 6, 2014 6:09:36 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
94221
Message:

VMM/GIM: bits.

Location:
trunk/src/VBox/VMM
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/GIMAll.cpp

    r51560 r51563  
    102102
    103103
     104VMMDECL(bool) GIMIsParavirtTscEnabled(PVM pVM)
     105{
     106    if (!pVM->gim.s.fEnabled)
     107        return false;
     108
     109    switch (pVM->gim.s.enmProviderId)
     110    {
     111        case GIMPROVIDERID_HYPERV:
     112            return GIMHvIsParavirtTscEnabled(pVM);
     113
     114        default:
     115            break;
     116    }
     117    return false;
     118}
     119
     120
    104121/**
    105122 * Invokes the read-MSR handler for the GIM provider configured for the VM.
     
    142159VMM_INT_DECL(int) GIMWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t uValue, uint64_t uRawValue)
    143160{
    144     Assert(pVCpu);
     161    AssertPtr(pVCpu);
     162    NOREF(uValue);
     163
    145164    PVM pVM = pVCpu->CTX_SUFF(pVM);
    146165    Assert(GIMIsEnabled(pVM));
     
    150169    {
    151170        case GIMPROVIDERID_HYPERV:
    152             return GIMHvWriteMsr(pVCpu, idMsr, pRange, uValue, uRawValue);
     171            return GIMHvWriteMsr(pVCpu, idMsr, pRange, uRawValue);
    153172
    154173        default:
  • trunk/src/VBox/VMM/VMMAll/GIMAllHv.cpp

    r51560 r51563  
    3737 * @param   pCtx            Pointer to the guest-CPU context.
    3838 */
    39 VMMDECL(int) GIMHvHypercall(PVMCPU pVCpu, PCPUMCTX pCtx)
     39VMM_INT_DECL(int) GIMHvHypercall(PVMCPU pVCpu, PCPUMCTX pCtx)
    4040{
    4141    return VINF_SUCCESS;
     42}
     43
     44
     45/**
     46 * Returns whether the guest has configured and enabled the use of Hyper-V's
     47 * paravirtualized TSC.
     48 *
     49 * @returns true if paravirt. TSC is enabled, false otherwise.
     50 * @param   pVM     Pointer to the VM.
     51 */
     52VMM_INT_DECL(bool) GIMHvIsParavirtTscEnabled(PVM pVM)
     53{
     54    return MSR_GIM_HV_REF_TSC_IS_ENABLED(pVM->gim.s.u.Hv.u64TscPageMsr);
    4255}
    4356
     
    5164 * @thread EMT(pVCpu)
    5265 */
    53 VMMDECL(int) GIMHvUpdateParavirtTsc(PVM pVM, uint64_t u64Offset)
     66VMM_INT_DECL(int) GIMHvUpdateParavirtTsc(PVM pVM, uint64_t u64Offset)
    5467{
    5568    Assert(GIMIsEnabled(pVM));
     
    8194 * @param   puValue     Where to store the MSR value read.
    8295 */
    83 VMMDECL(int) GIMHvReadMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t *puValue)
     96VMM_INT_DECL(int) GIMHvReadMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t *puValue)
    8497{
    8598    NOREF(pRange);
     
    140153 * @param   idMsr       The MSR being written.
    141154 * @param   pRange      The range this MSR belongs to.
    142  * @param   uValue      The value to set, ignored bits masked.
    143155 * @param   uRawValue   The raw value with the ignored bits not masked.
    144156 */
    145 VMMDECL(int) GIMHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t uValue, uint64_t uRawValue)
    146 {
    147     NOREF(pRange); NOREF(uValue);
     157VMM_INT_DECL(int) GIMHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t uRawValue)
     158{
     159    NOREF(pRange);
    148160    PVM    pVM = pVCpu->CTX_SUFF(pVM);
    149161    PGIMHV pHv = &pVM->gim.s.u.Hv;
  • trunk/src/VBox/VMM/include/GIMHvInternal.h

    r51560 r51563  
    477477
    478478#ifdef IN_RING0
    479 VMMR0_INT_DECL(int)     GIMR0HvInitVM(PVM pVM);
    480 VMMR0_INT_DECL(int)     GIMR0HvTermVM(PVM pVM);
     479VMMR0_INT_DECL(int)             GIMR0HvInitVM(PVM pVM);
     480VMMR0_INT_DECL(int)             GIMR0HvTermVM(PVM pVM);
    481481#endif /* IN_RING0 */
    482482
    483483#ifdef IN_RING3
    484 VMMR3_INT_DECL(int)     GIMR3HvInit(PVM pVM);
    485 VMMR3_INT_DECL(void)    GIMR3HvRelocate(PVM pVM, RTGCINTPTR offDelta);
    486 VMMR3_INT_DECL(void)    GIMR3HvReset(PVM pVM);
     484VMMR3_INT_DECL(int)             GIMR3HvInit(PVM pVM);
     485VMMR3_INT_DECL(void)            GIMR3HvRelocate(PVM pVM, RTGCINTPTR offDelta);
     486VMMR3_INT_DECL(void)            GIMR3HvReset(PVM pVM);
    487487VMMR3_INT_DECL(PGIMMMIO2REGION) GIMR3HvGetMmio2Regions(PVM pVM, uint32_t *pcRegions);
    488488#endif /* IN_RING3 */
    489489
    490 VMMDECL(int)            GIMHvUpdateParavirtTsc(PVM pVM, uint64_t u64Offset);
    491 VMMDECL(int)            GIMHvHypercall(PVMCPU pVCpu, PCPUMCTX pCtx);
    492 VMMDECL(int)            GIMHvReadMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t *puValue);
    493 VMMDECL(int)            GIMHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t uValue, uint64_t uRawValue);
     490VMM_INT_DECL(bool)              GIMHvIsParavirtTscEnabled(PVM pVM);
     491VMM_INT_DECL(int)               GIMHvUpdateParavirtTsc(PVM pVM, uint64_t u64Offset);
     492VMM_INT_DECL(int)               GIMHvHypercall(PVMCPU pVCpu, PCPUMCTX pCtx);
     493VMM_INT_DECL(int)               GIMHvReadMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t *puValue);
     494VMM_INT_DECL(int)               GIMHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSRRANGE pRange, uint64_t uRawValue);
    494495
    495496RT_C_DECLS_END
Note: See TracChangeset for help on using the changeset viewer.

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