VirtualBox

Changeset 71415 in vbox for trunk/src/VBox/VMM/VMMAll


Ignore:
Timestamp:
Mar 21, 2018 9:29:22 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121382
Message:

VMM/HM: Get rid of lazy FPU loading for AMD-V. Nested Hw.virt: Fix FPU related issues while executing nested-KVM DSL guests.

File:
1 edited

Legend:

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

    r71340 r71415  
    150150        PSVMNESTEDVMCBCACHE pNstGstVmcbCache = &pVCpu->hm.s.svm.NstGstVmcbCache;
    151151
     152        /*
     153         * The fields that are guaranteed to be read-only during SVM guest execution
     154         * can safely be restored from our VMCB cache. Other fields like control registers
     155         * can potentially be modified (if the nested-hypervisor is not intercepting writes)
     156         * and thus we save the actual virtual CPU values of these registers.
     157         */
    152158        pVmcbNstGstCtrl->u16InterceptRdCRx             = pNstGstVmcbCache->u16InterceptRdCRx;
    153159        pVmcbNstGstCtrl->u16InterceptWrCRx             = pNstGstVmcbCache->u16InterceptWrCRx;
     
    156162        pVmcbNstGstCtrl->u32InterceptXcpt              = pNstGstVmcbCache->u32InterceptXcpt;
    157163        pVmcbNstGstCtrl->u64InterceptCtrl              = pNstGstVmcbCache->u64InterceptCtrl;
    158         pVmcbNstGstState->u64CR0                       = pNstGstVmcbCache->u64CR0;
    159         pVmcbNstGstState->u64CR3                       = pNstGstVmcbCache->u64CR3;
    160         pVmcbNstGstState->u64CR4                       = pNstGstVmcbCache->u64CR4;
    161         pVmcbNstGstState->u64EFER                      = pNstGstVmcbCache->u64EFER;
     164        pVmcbNstGstState->u64CR0                       = pCtx->cr0;
     165        pVmcbNstGstState->u64CR3                       = pCtx->cr3;
     166        pVmcbNstGstState->u64CR4                       = pCtx->cr4;
     167        pVmcbNstGstState->u64EFER                      = pCtx->msrEFER;
    162168        pVmcbNstGstState->u64DBGCTL                    = pNstGstVmcbCache->u64DBGCTL;
    163169        pVmcbNstGstCtrl->u32VmcbCleanBits              = pNstGstVmcbCache->u32VmcbCleanBits;
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