VirtualBox

Changeset 52767 in vbox


Ignore:
Timestamp:
Sep 16, 2014 4:51:51 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
96137
Message:

VMM/GIM: Get rid of separate fEnabled field, just use the provider to figure out whether it's enabled or not.

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

Legend:

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

    r52006 r52767  
    4040VMMDECL(bool) GIMIsEnabled(PVM pVM)
    4141{
    42     return pVM->gim.s.fEnabled;
     42    return pVM->gim.s.enmProviderId != GIMPROVIDERID_NONE;
    4343}
    4444
     
    116116VMM_INT_DECL(bool) GIMIsParavirtTscEnabled(PVM pVM)
    117117{
    118     if (!pVM->gim.s.fEnabled)
    119         return false;
    120 
    121118    switch (pVM->gim.s.enmProviderId)
    122119    {
  • trunk/src/VBox/VMM/VMMR0/GIMR0.cpp

    r51643 r52767  
    9090VMMR0_INT_DECL(int) GIMR0UpdateParavirtTsc(PVM pVM, uint64_t u64Offset)
    9191{
    92     if (!pVM->gim.s.fEnabled)
    93         return VERR_GIM_NOT_ENABLED;
    94 
    9592    switch (pVM->gim.s.enmProviderId)
    9693    {
    9794        case GIMPROVIDERID_HYPERV:
    9895            return GIMR0HvUpdateParavirtTsc(pVM, u64Offset);
     96
     97        case GIMPROVIDERID_NONE:
     98            return VERR_GIM_NOT_ENABLED;
    9999
    100100        default:
  • trunk/src/VBox/VMM/VMMR3/GIM.cpp

    r52764 r52767  
    119119    LogRel(("GIM: Using provider \"%s\" (Implementation version: %u)\n", szProvider, uVersion));
    120120    if (!RTStrCmp(szProvider, "None"))
    121     {
    122         Assert(!pVM->gim.s.fEnabled);
    123121        pVM->gim.s.enmProviderId = GIMPROVIDERID_NONE;
    124     }
    125122    else
    126123    {
    127         pVM->gim.s.fEnabled = true;
    128124        pVM->gim.s.u32Version = uVersion;
    129125        /** @todo r=bird: Because u32Version is saved, it should be translated to the
     
    160156VMMR3_INT_DECL(int) GIMR3InitCompleted(PVM pVM)
    161157{
    162     if (!pVM->gim.s.fEnabled)
    163         return VINF_SUCCESS;
    164 
    165158    switch (pVM->gim.s.enmProviderId)
    166159    {
     
    191184    LogFlow(("GIMR3Relocate\n"));
    192185
    193     if (   !pVM->gim.s.fEnabled
     186    if (   pVM->gim.s.enmProviderId == GIMPROVIDERID_NONE
    194187        || HMIsEnabled(pVM))
    195188    {
     
    234227
    235228    /** @todo Save per-CPU data. */
    236     int rc;
     229    int rc = VINF_SUCCESS;
    237230#if 0
    238231    SSMR3PutU32(pSSM, pVM->cCpus);
     
    246239     * Save per-VM data.
    247240     */
    248     SSMR3PutBool(pSSM, pVM->gim.s.fEnabled);
    249241    SSMR3PutU32(pSSM, pVM->gim.s.enmProviderId);
    250     rc = SSMR3PutU32(pSSM, pVM->gim.s.u32Version);
    251     AssertRCReturn(rc, rc);
     242    SSMR3PutU32(pSSM, pVM->gim.s.u32Version);
    252243
    253244    /*
    254245     * Save provider-specific data.
    255246     */
    256     if (pVM->gim.s.fEnabled)
    257     {
    258         switch (pVM->gim.s.enmProviderId)
    259         {
    260             case GIMPROVIDERID_HYPERV:
    261                 rc = GIMR3HvSave(pVM, pSSM);
    262                 AssertRCReturn(rc, rc);
    263                 break;
    264 
    265             default:
    266                 break;
    267         }
     247    switch (pVM->gim.s.enmProviderId)
     248    {
     249        case GIMPROVIDERID_HYPERV:
     250            rc = GIMR3HvSave(pVM, pSSM);
     251            AssertRCReturn(rc, rc);
     252            break;
     253
     254        default:
     255            break;
    268256    }
    269257
     
    301289     * Load per-VM data.
    302290     */
    303     bool fEnabled;
    304     SSMR3GetBool(pSSM, &fEnabled);
    305291    uint32_t uProviderId;
    306     SSMR3GetU32(pSSM, &uProviderId);
    307292    uint32_t uProviderVersion;
    308     rc = SSMR3GetU32(pSSM, &uProviderVersion);
    309     AssertRCReturn(rc, rc);
     293
     294    rc = SSMR3GetU32(pSSM, &uProviderId);           AssertRCReturn(rc, rc);
     295    rc = SSMR3GetU32(pSSM, &uProviderVersion);      AssertRCReturn(rc, rc);
    310296
    311297    if ((GIMPROVIDERID)uProviderId != pVM->gim.s.enmProviderId)
     
    323309     * Load provider-specific data.
    324310     */
    325     if (pVM->gim.s.fEnabled)
    326     {
    327         switch (pVM->gim.s.enmProviderId)
    328         {
    329             case GIMPROVIDERID_HYPERV:
    330                 rc = GIMR3HvLoad(pVM, pSSM, uVersion);
    331                 AssertRCReturn(rc, rc);
    332                 break;
    333 
    334             default:
    335                 break;
    336         }
    337     }
    338 
    339     return rc;
     311    switch (pVM->gim.s.enmProviderId)
     312    {
     313        case GIMPROVIDERID_HYPERV:
     314            rc = GIMR3HvLoad(pVM, pSSM, uVersion);
     315            AssertRCReturn(rc, rc);
     316            break;
     317
     318        default:
     319            break;
     320    }
     321
     322    return VINF_SUCCESS;
    340323}
    341324
     
    352335VMMR3_INT_DECL(int) GIMR3Term(PVM pVM)
    353336{
    354     if (!pVM->gim.s.fEnabled)
    355         return VINF_SUCCESS;
    356 
    357337    switch (pVM->gim.s.enmProviderId)
    358338    {
     
    378358VMMR3_INT_DECL(void) GIMR3Reset(PVM pVM)
    379359{
    380     if (!pVM->gim.s.fEnabled)
    381         return;
    382 
    383360    switch (pVM->gim.s.enmProviderId)
    384361    {
     
    422399
    423400    *pcRegions = 0;
    424     if (!pVM->gim.s.fEnabled)
    425         return NULL;
    426 
    427401    switch (pVM->gim.s.enmProviderId)
    428402    {
  • trunk/src/VBox/VMM/include/GIMInternal.h

    r52765 r52767  
    4040typedef struct GIM
    4141{
    42     /** Whether GIM is enabled for this VM or not. */
    43     bool                             fEnabled;
    4442    /** The provider that is active for this VM. */
    4543    GIMPROVIDERID                    enmProviderId;
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