VirtualBox

Changeset 2811 in vbox for trunk/src


Ignore:
Timestamp:
May 23, 2007 2:48:38 PM (18 years ago)
Author:
vboxsync
Message:

Updates for 64 bits descriptors.

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

Legend:

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

    r2797 r2811  
    302302            if (val & VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT)
    303303                LogRel(("HWACCM:    VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT\n"));
     304            val = pVM->hwaccm.s.vmx.msr.vmx_pin_ctls;
     305            if (val & VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_EXT_INT_EXIT)
     306                LogRel(("HWACCM:    VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_EXT_INT_EXIT *must* be set\n"));
     307            if (val & VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT)
     308                LogRel(("HWACCM:    VMX_VMCS_CTRL_PIN_EXEC_CONTROLS_NMI_EXIT *must* be set\n"));
    304309
    305310            LogRel(("HWACCM: MSR_IA32_VMX_PROCBASED_CTLS   = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_proc_ctls));
     
    337342            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT)
    338343                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT\n"));
     344            val = pVM->hwaccm.s.vmx.msr.vmx_proc_ctls;
     345            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT)
     346                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT *must* be set\n"));
     347            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_TSC_OFFSET)
     348                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_TSC_OFFSET *must* be set\n"));
     349            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_HLT_EXIT)
     350                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_HLT_EXIT *must* be set\n"));
     351            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_INVLPG_EXIT)
     352                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_INVLPG_EXIT *must* be set\n"));
     353            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MWAIT_EXIT)
     354                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MWAIT_EXIT *must* be set\n"));
     355            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDPMC_EXIT)
     356                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDPMC_EXIT *must* be set\n"));
     357            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT)
     358                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_RDTSC_EXIT *must* be set\n"));
     359            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_LOAD_EXIT)
     360                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_LOAD_EXIT *must* be set\n"));
     361            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_STORE_EXIT)
     362                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_CR8_STORE_EXIT *must* be set\n"));
     363            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_TPR_SHADOW)
     364                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_TPR_SHADOW *must* be set\n"));
     365            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT)
     366                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MOV_DR_EXIT *must* be set\n"));
     367            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_UNCOND_IO_EXIT)
     368                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_UNCOND_IO_EXIT *must* be set\n"));
     369            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_IO_BITMAPS)
     370                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_IO_BITMAPS *must* be set\n"));
     371            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_MSR_BITMAPS)
     372                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_USE_MSR_BITMAPS *must* be set\n"));
     373            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_EXIT)
     374                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_MONITOR_EXIT *must* be set\n"));
     375            if (val & VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT)
     376                LogRel(("HWACCM:    VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_PAUSE_EXIT *must* be set\n"));
    339377
    340378            LogRel(("HWACCM: MSR_IA32_VMX_ENTRY_CTLS       = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_entry));
     
    346384            if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON)
    347385                LogRel(("HWACCM:    VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON\n"));
     386            val = pVM->hwaccm.s.vmx.msr.vmx_entry;
     387            if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_IA64_MODE)
     388                LogRel(("HWACCM:    VMX_VMCS_CTRL_ENTRY_CONTROLS_IA64_MODE *must* be set\n"));
     389            if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_ENTRY_SMM)
     390                LogRel(("HWACCM:    VMX_VMCS_CTRL_ENTRY_CONTROLS_ENTRY_SMM *must* be set\n"));
     391            if (val & VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON)
     392                LogRel(("HWACCM:    VMX_VMCS_CTRL_ENTRY_CONTROLS_DEACTIVATE_DUALMON *must* be set\n"));
    348393   
    349394            LogRel(("HWACCM: MSR_IA32_VMX_EXIT_CTLS        = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_exit));
     
    353398            if (val & VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ)
    354399                LogRel(("HWACCM:    VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ\n"));
     400            val = pVM->hwaccm.s.vmx.msr.vmx_exit;
     401            if (val & VMX_VMCS_CTRL_EXIT_CONTROLS_HOST_AMD64)
     402                LogRel(("HWACCM:    VMX_VMCS_CTRL_EXIT_CONTROLS_HOST_AMD64 *must* be set\n"));
     403            if (val & VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ)
     404                LogRel(("HWACCM:    VMX_VMCS_CTRL_EXIT_CONTROLS_ACK_EXTERNAL_IRQ *must* be set\n"));
    355405
    356406            LogRel(("HWACCM: MSR_IA32_VMX_MISC             = %VX64\n", pVM->hwaccm.s.vmx.msr.vmx_misc));
  • trunk/src/VBox/VMM/HWACCMInternal.h

    r2699 r2811  
    297297#ifdef VBOX_STRICT
    298298HWACCMR0DECL(void) HWACCMDumpRegs(PCPUMCTX pCtx);
    299 HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PVBOXDESC  Desc, RTSEL Sel, const char *pszMsg);
     299HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PX86DESCHC  Desc, RTSEL Sel, const char *pszMsg);
    300300#else
    301301#define HWACCMDumpRegs(a)                   do { } while (0)
  • trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp

    r1283 r2811  
    315315 * @param   pszMsg  Message to prepend the log entry with.
    316316 */
    317 HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PVBOXDESC Desc, RTSEL Sel, const char *pszMsg)
     317HWACCMR0DECL(void) HWACCMR0DumpDescriptor(PX86DESCHC Desc, RTSEL Sel, const char *pszMsg)
    318318{
    319319    /*
     
    327327    {
    328328        #define STRENTRY(str) { sizeof(str) - 1, str }
     329
    329330        /* system */
     331#if HC_ARCH_BITS == 64
     332        STRENTRY("Reserved0 "),                  /* 0x00 */
     333        STRENTRY("Reserved1 "),                  /* 0x01 */
     334        STRENTRY("LDT "),                        /* 0x02 */
     335        STRENTRY("Reserved3 "),                  /* 0x03 */
     336        STRENTRY("Reserved4 "),                  /* 0x04 */
     337        STRENTRY("Reserved5 "),                  /* 0x05 */
     338        STRENTRY("Reserved6 "),                  /* 0x06 */
     339        STRENTRY("Reserved7 "),                  /* 0x07 */
     340        STRENTRY("Reserved8 "),                  /* 0x08 */
     341        STRENTRY("TSS64Avail "),                 /* 0x09 */
     342        STRENTRY("ReservedA "),                  /* 0x0a */
     343        STRENTRY("TSS64Busy "),                  /* 0x0b */
     344        STRENTRY("Call64 "),                     /* 0x0c */
     345        STRENTRY("ReservedD "),                  /* 0x0d */
     346        STRENTRY("Int64 "),                      /* 0x0e */
     347        STRENTRY("Trap64 "),                     /* 0x0f */
     348#else
    330349        STRENTRY("Reserved0 "),                  /* 0x00 */
    331350        STRENTRY("TSS16Avail "),                 /* 0x01 */
     
    344363        STRENTRY("Int32 "),                      /* 0x0e */
    345364        STRENTRY("Trap32 "),                     /* 0x0f */
     365#endif
    346366        /* non system */
    347367        STRENTRY("DataRO "),                     /* 0x10 */
     
    374394    else
    375395        ADD_STR(psz, "Not-Present ");
     396#if HC_ARCH_BITS == 64
     397    if (Desc->Gen.u1Long)
     398        ADD_STR(psz, "64-bit ");
     399    else
     400        ADD_STR(psz, "Comp   ");
     401#else
    376402    if (Desc->Gen.u1Granularity)
    377403        ADD_STR(psz, "Page ");
     
    380406    else
    381407        ADD_STR(psz, "16-bit ");
     408#endif
    382409    #undef ADD_STR
    383410    *psz = '\0';
     
    389416    if (Desc->Gen.u1Granularity)
    390417        u32Limit = u32Limit << PAGE_SHIFT | PAGE_OFFSET_MASK;
     418
     419#if HC_ARCH_BITS == 64
     420    uint64_t    u32Base =  Desc->Gen.u32BaseHigh3 << 32 | Desc->Gen.u8BaseHigh2 << 24 | Desc->Gen.u8BaseHigh1 << 16 | Desc->Gen.u16BaseLow;
     421
     422    Log(("%s %04x - %08x %08x - base=%VX64 limit=%08x dpl=%d %s\n", pszMsg,
     423         Sel, Desc->au32[0], Desc->au32[1], u32Base, u32Limit, Desc->Gen.u2Dpl, szMsg));
     424#else
    391425    uint32_t    u32Base =  Desc->Gen.u8BaseHigh2 << 24 | Desc->Gen.u8BaseHigh1 << 16 | Desc->Gen.u16BaseLow;
    392426
    393427    Log(("%s %04x - %08x %08x - base=%08x limit=%08x dpl=%d %s\n", pszMsg,
    394428         Sel, Desc->au32[0], Desc->au32[1], u32Base, u32Limit, Desc->Gen.u2Dpl, szMsg));
     429#endif
    395430}
    396431
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r2800 r2811  
    442442    if (pVM->hwaccm.s.fContextUseFlags & HWACCM_CHANGED_HOST_CONTEXT)
    443443    {
    444         RTIDTR    idtr;
    445         RTGDTR    gdtr;
    446         RTSEL     SelTR;
    447         PVBOXDESC pDesc;
    448         uintptr_t trBase;
     444        RTIDTR      idtr;
     445        RTGDTR      gdtr;
     446        RTSEL       SelTR;
     447        PX86DESCHC pDesc;
     448        uintptr_t   trBase;
    449449
    450450        /* Control registers */
     
    494494        }
    495495
    496         pDesc  = &((PVBOXDESC)gdtr.pGdt)[SelTR >> X86_SEL_SHIFT];
     496        pDesc  = &((PX86DESCHC)gdtr.pGdt)[SelTR >> X86_SEL_SHIFT];
    497497        trBase = pDesc->Gen.u16BaseLow | (pDesc->Gen.u8BaseHigh1 << 16) | (pDesc->Gen.u8BaseHigh2 << 24);
    498498        rc = VMXWriteVMCS(VMX_VMCS_HOST_TR_BASE, trBase);
     
    979979    STAM_PROFILE_ADV_START(&pVM->hwaccm.s.StatInGC, x);
    980980    if (pVM->hwaccm.s.vmx.fResumeVM == false)
    981     {
    982981        rc = VMXStartVM(pCtx);
    983     }
    984982    else
    985     {
    986983        rc = VMXResumeVM(pCtx);
    987     }
    988984
    989985    /* In case we execute a goto ResumeExecution later on. */
     
    10191015        if (rc1 == VINF_SUCCESS)
    10201016        {
    1021             RTGDTR    gdtr;
    1022             PVBOXDESC pDesc;
     1017            RTGDTR     gdtr;
     1018            PX86DESCHC pDesc;
    10231019
    10241020            ASMGetGDTR(&gdtr);
     
    10521048            if (val < gdtr.cbGdt)
    10531049            {
    1054                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1050                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    10551051                HWACCMR0DumpDescriptor(pDesc, val, "CS: ");
    10561052            }
     
    10601056            if (val < gdtr.cbGdt)
    10611057            {
    1062                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1058                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    10631059                HWACCMR0DumpDescriptor(pDesc, val, "DS: ");
    10641060            }
     
    10681064            if (val < gdtr.cbGdt)
    10691065            {
    1070                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1066                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    10711067                HWACCMR0DumpDescriptor(pDesc, val, "ES: ");
    10721068            }
     
    10761072            if (val < gdtr.cbGdt)
    10771073            {
    1078                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1074                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    10791075                HWACCMR0DumpDescriptor(pDesc, val, "FS: ");
    10801076            }
     
    10841080            if (val < gdtr.cbGdt)
    10851081            {
    1086                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1082                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    10871083                HWACCMR0DumpDescriptor(pDesc, val, "GS: ");
    10881084            }
     
    10921088            if (val < gdtr.cbGdt)
    10931089            {
    1094                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1090                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    10951091                HWACCMR0DumpDescriptor(pDesc, val, "SS: ");
    10961092            }
     
    11001096            if (val < gdtr.cbGdt)
    11011097            {
    1102                 pDesc  = &((PVBOXDESC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
     1098                pDesc  = &((PX86DESCHC)gdtr.pGdt)[val >> X86_SEL_SHIFT];
    11031099                HWACCMR0DumpDescriptor(pDesc, val, "TR: ");
    11041100            }
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