VirtualBox

Changeset 3750 in vbox


Ignore:
Timestamp:
Jul 20, 2007 4:38:23 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
23058
Message:

Check if SVM is disabled in the BIOS. Otherwise enabling it with wrmsr will cause a #GP.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp

    r3301 r3750  
    156156                uint64_t val;
    157157
    158                 /* Turn on SVM in the EFER MSR. */
    159                 val = ASMRdMsr(MSR_K6_EFER);
    160                 if (!(val & MSR_K6_EFER_SVME))
     158                /* Check if SVM is disabled */
     159                val = ASMRdMsr(MSR_K8_VM_CR);
     160                if (!(val & MSR_K8_VM_CR_SVM_DISABLE))
    161161                {
    162                     ASMWrMsr(MSR_K6_EFER, val | MSR_K6_EFER_SVME);
    163                 }
    164                 /* Paranoia. */
    165                 val = ASMRdMsr(MSR_K6_EFER);
    166                 if (val & MSR_K6_EFER_SVME)
    167                 {
    168                     /* Query AMD features. */
    169                     ASMCpuId(0x8000000A, &pVM->hwaccm.s.svm.u32Rev, &pVM->hwaccm.s.svm.u32MaxASID, &u32Dummy, &u32Dummy);
    170 
    171                     pVM->hwaccm.s.svm.fSupported = true;
     162                    /* Turn on SVM in the EFER MSR. */
     163                    val = ASMRdMsr(MSR_K6_EFER);
     164                    if (!(val & MSR_K6_EFER_SVME))
     165                    {
     166                        ASMWrMsr(MSR_K6_EFER, val | MSR_K6_EFER_SVME);
     167                    }
     168                    /* Paranoia. */
     169                    val = ASMRdMsr(MSR_K6_EFER);
     170                    if (val & MSR_K6_EFER_SVME)
     171                    {
     172                        /* Query AMD features. */
     173                        ASMCpuId(0x8000000A, &pVM->hwaccm.s.svm.u32Rev, &pVM->hwaccm.s.svm.u32MaxASID, &u32Dummy, &u32Dummy);
     174
     175                        pVM->hwaccm.s.svm.fSupported = true;
     176                    }
     177                    else
     178                    {
     179                        pVM->hwaccm.s.ulLastError = VERR_SVM_ILLEGAL_EFER_MSR;
     180                        AssertFailed();
     181                    }
    172182                }
    173183                else
    174                 {
    175                     pVM->hwaccm.s.ulLastError = VERR_SVM_ILLEGAL_EFER_MSR;
    176                     AssertFailed();
    177                 }
     184                    pVM->hwaccm.s.ulLastError = VERR_SVM_DISABLED;
    178185            }
    179186            else
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