VirtualBox

Changeset 76828 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jan 16, 2019 8:33:09 AM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
128185
Message:

VMM/IEM: Nested VMX: bugref:9180 Restore host FS, GS base properly. It is only undefined is -both- the segment is ununsable AND the VM-exit is not to 64-bit mode.

File:
1 edited

Legend:

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

    r76827 r76828  
    21952195            case X86_SREG_FS:
    21962196            {
    2197                 Assert(X86_IS_CANONICAL(pVmcs->u64HostFsBase.u));
    2198                 pVCpu->cpum.GstCtx.fs.u64Base = !fUnusable ? pVmcs->u64HostFsBase.u : 0;
     2197                if (   !fUnusable
     2198                    ||  fHostInLongMode)
     2199                {
     2200                    Assert(X86_IS_CANONICAL(pVmcs->u64HostFsBase.u));
     2201                    pVCpu->cpum.GstCtx.fs.u64Base = pVmcs->u64HostFsBase.u;
     2202                }
     2203                else
     2204                    pVCpu->cpum.GstCtx.fs.u64Base = 0;
    21992205                pVCpu->cpum.GstCtx.fs.Attr.n.u4Type        = X86_SEL_TYPE_RW | X86_SEL_TYPE_ACCESSED;
    22002206                pVCpu->cpum.GstCtx.fs.Attr.n.u1DescType    = 1;
     
    22092215            case X86_SREG_GS:
    22102216            {
    2211                 Assert(X86_IS_CANONICAL(pVmcs->u64HostGsBase.u));
    2212                 pVCpu->cpum.GstCtx.gs.u64Base = !fUnusable ? pVmcs->u64HostGsBase.u : 0;
     2217                if (   !fUnusable
     2218                    ||  fHostInLongMode)
     2219                {
     2220                    Assert(X86_IS_CANONICAL(pVmcs->u64HostGsBase.u));
     2221                    pVCpu->cpum.GstCtx.gs.u64Base = pVmcs->u64HostGsBase.u;
     2222                }
     2223                else
     2224                    pVCpu->cpum.GstCtx.gs.u64Base = 0;
    22132225                pVCpu->cpum.GstCtx.gs.Attr.n.u4Type        = X86_SEL_TYPE_RW | X86_SEL_TYPE_ACCESSED;
    22142226                pVCpu->cpum.GstCtx.gs.Attr.n.u1DescType    = 1;
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