VirtualBox

Changeset 3292 in vbox


Ignore:
Timestamp:
Jun 26, 2007 2:15:29 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
22395
Message:

Write the exact reason for VMX/SVM detection failure to the release log.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/HWACCM.cpp

    r2981 r3292  
    442442            {
    443443                LogRel(("HWACCM: VMX setup failed with rc=%Vrc!\n", rc));
     444                LogRel(("HWACCM: Last instruction error %x\n", pVM->hwaccm.s.vmx.ulLastInstrError));
    444445                pVM->fHWACCMEnabled = false;
    445446            }
     
    476477            }
    477478        }
     479    }
     480    else
     481    {
     482        LogRel(("HWACCM: No VMX or SVM CPU extension found. Reason %Vrc\n", pVM->hwaccm.s.ulLastError));
    478483    }
    479484
  • trunk/src/VBox/VMM/HWACCMInternal.h

    r2981 r3292  
    192192            uint64_t                vmx_vmcs_enum;
    193193        } msr;
     194
     195        /* Last instruction error */
     196        uint32_t                    ulLastInstrError;
    194197    } vmx;
    195198
     
    250253        uint64_t                    intInfo;
    251254    } Event;
     255
     256    /** Saved error from detection */
     257    uint32_t                ulLastError;
    252258
    253259    /** Currenty shadow paging mode. */
  • trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp

    r2981 r3292  
    6060
    6161#ifndef VBOX_WITH_HYBIRD_32BIT_KERNEL /* paranoia */
     62
     63    pVM->hwaccm.s.ulLastError = VINF_SUCCESS;
    6264
    6365    /*
     
    123125                    }
    124126                }
     127                else
     128                    pVM->hwaccm.s.ulLastError = VERR_VMX_ILLEGAL_FEATURE_CONTROL_MSR;
    125129            }
     130            else
     131                pVM->hwaccm.s.ulLastError = VERR_VMX_NO_VMX;
    126132        }
    127133        else
     
    158164                }
    159165                else
     166                {
     167                    pVM->hwaccm.s.ulLastError = VERR_SVM_ILLEGAL_EFER_MSR;
    160168                    AssertFailed();
     169                }
    161170            }
     171            else
     172                pVM->hwaccm.s.ulLastError = VERR_SVM_NO_SVM;
    162173        }
    163     }
     174        else
     175            pVM->hwaccm.s.ulLastError = VERR_HWACCM_UNKNOWN_CPU;
     176    }
     177    else
     178        pVM->hwaccm.s.ulLastError = VERR_HWACCM_NO_CPUID;
     179
    164180#endif /* !VBOX_WITH_HYBIRD_32BIT_KERNEL */
    165181
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r3279 r3292  
    4646
    4747
     48static void VMXR0CheckError(PVM pVM, int rc)
     49{
     50    if (rc == VERR_VMX_GENERIC)
     51    {
     52        RTCCUINTREG instrError;
     53
     54        VMXReadVMCS(VMX_VMCS_RO_VM_INSTR_ERROR, &instrError);
     55        Log(("VMXR0CheckError -> generic error %x\n", instrError));
     56
     57        pVM->hwaccm.s.vmx.ulLastInstrError = instrError;
     58    }
     59    else
     60    {
     61        Log(("VMXR0CheckError failed with %Vrc\n", rc));
     62    }
     63    pVM->hwaccm.s.ulLastError = rc;
     64}
     65
    4866/**
    4967 * Sets up and activates VMX
     
    7997    if (VBOX_FAILURE(rc))
    8098    {
    81 #ifdef DEBUG
    82         if (rc == VERR_VMX_GENERIC)
    83         {
    84             RTCCUINTREG instrError;
    85 
    86             VMXReadVMCS(VMX_VMCS_RO_VM_INSTR_ERROR, &instrError);
    87             Log(("VMXEnable -> generic error %x\n", instrError));
    88         }
    89         else
    90             Log(("VMXEnable failed with %Vrc\n", rc));
    91 #endif
     99        VMXR0CheckError(pVM, rc);
    92100        return rc;
    93101    }
     
    269277
    270278vmx_end:
     279    VMXR0CheckError(pVM, rc);
    271280    /* Leave VMX Root Mode. */
    272281    VMXDisable();
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