VirtualBox

Changeset 15439 in vbox


Ignore:
Timestamp:
Dec 13, 2008 12:48:22 PM (16 years ago)
Author:
vboxsync
Message:

Enable 64 bits guest support on 32 bits hosts. Only use rem64 if the guest OS type is 64 bits.

Location:
trunk/src/VBox
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/ConsoleImpl2.cpp

    r15404 r15439  
    219219        /* Indicate whether 64-bit guests are supported or not. */
    220220        /** @todo This is currently only forced off on 32-bit hosts only because it
    221          *        makes a lof of differnese there (REM and Solaris performance). This
    222          *        will later be done on all platforms, see @bugref{3383}. */
     221         *        makes a lof of difference there (REM and Solaris performance).
     222         */
    223223
    224224        Bstr osTypeId;
     
    243243#endif
    244244        }
    245 #if ARCH_BITS == 32 /* Until we've got a check box on/off thing, 32-bit only. */
     245#if ARCH_BITS == 32 /* 32-bit guests only. */
    246246        else
    247247        {
  • trunk/src/VBox/VMM/HWACCM.cpp

    r15414 r15439  
    215215        pVM->fHWACCMEnabled = true;
    216216
    217 #ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
     217#if HC_ARCH_BITS == 32
    218218    /* 64-bit mode is configurable and it depends on both the kernel mode and VT-x.
    219219     * (To use the default, don't set 64bitEnabled in CFGM.) */
    220     rc = CFGMR3QueryBoolDef(pHWVirtExt, "64bitEnabled", &pVM->hwaccm.s.fAllow64BitGuests,
    221                             VMMIsHwVirtExtForced(pVM) && SUPGetPagingMode() >= SUPPAGINGMODE_AMD64);
     220    rc = CFGMR3QueryBoolDef(pHWVirtExt, "64bitEnabled", &pVM->hwaccm.s.fAllow64BitGuests, false);
    222221    AssertLogRelRCReturn(rc, rc);
    223222    if (pVM->hwaccm.s.fAllow64BitGuests)
    224223    {
     224# ifdef RT_OS_DARWIN
    225225        if (!VMMIsHwVirtExtForced(pVM))
    226             return VM_SET_ERROR(pVM, VERR_INVALID_PARAMETER, "64-bit was requested without also enabling VT-x.");
    227         LogRel(( "HWACCM: Enabled support for 64-bit guests.\n"));
    228     }
     226# else
     227        if (!pVM->hwaccm.s.fAllowed)
     228# endif
     229            return VM_SET_ERROR(pVM, VERR_INVALID_PARAMETER, "64-bit guest support was requested without also enabling VT-x.");
     230    }
     231#else
     232    /* We always allow 64 bits guests on 64 bits hosts. */
     233    pVM->hwaccm.s.fAllow64BitGuests = true;
    229234#endif
    230235
     
    820825                CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_SEP);
    821826#ifdef VBOX_ENABLE_64_BITS_GUESTS
    822 # ifdef VBOX_WITH_HYBRID_32BIT_KERNEL /* remove */
    823827                if (pVM->hwaccm.s.fAllow64BitGuests)
    824 # endif
    825828                {
    826829                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_PAE);
     
    832835#endif
    833836                LogRel(("HWACCM: VMX enabled!\n"));
    834 #if defined(VBOX_ENABLE_64_BITS_GUESTS) && defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    835837                LogRel((pVM->hwaccm.s.fAllow64BitGuests
    836838                        ? "HWACCM: 32-bit and 64-bit guest supported.\n"
    837839                        : "HWACCM: 32-bit guest supported.\n"));
    838 #endif
    839840                if (pVM->hwaccm.s.fNestedPaging)
    840841                {
     
    935936                CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_RDTSCP);
    936937#ifdef VBOX_ENABLE_64_BITS_GUESTS
    937 # ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    938938                if (pVM->hwaccm.s.fAllow64BitGuests)
    939 # endif
    940939                {
    941940                    CPUMSetGuestCpuIdFeature(pVM, CPUMCPUIDFEATURE_PAE);
     
    945944                }
    946945#endif
     946                LogRel((pVM->hwaccm.s.fAllow64BitGuests
     947                        ? "HWACCM:    32-bit and 64-bit guest supported.\n"
     948                        : "HWACCM:    32-bit guest supported.\n"));
    947949            }
    948950            else
  • trunk/src/VBox/VMM/HWACCMInternal.h

    r15414 r15439  
    3535#include <iprt/mp.h>
    3636
    37 #if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL) // || defined (VBOX_WITH_64_BITS_GUESTS)
     37#if HC_ARCH_BITS == 64 || defined(VBOX_WITH_HYBRID_32BIT_KERNEL) || defined (VBOX_WITH_64_BITS_GUESTS)
    3838/* Enable 64 bits guest support. */
    3939# define VBOX_ENABLE_64_BITS_GUESTS
     
    201201    bool                        fInjectNMI;
    202202
    203 #ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    204203    /** Set if we can support 64-bit guests or not. */
    205204    bool                        fAllow64BitGuests;
    206 #endif
    207205
    208206    /** Explicit alignment padding to make 32-bit gcc align u64RegisterMask
    209207     *  naturally. */
    210 #ifdef VBOX_WITH_HYBRID_32BIT_KERNEL
    211208    bool                        padding[1];
    212 #else
    213     bool                        padding[2];
    214 #endif
    215209
    216210    /** And mask for copying register contents. */
     
    220214    RTUINT                      uMaxASID;
    221215
    222 #if HC_ARCH_BITS == 32 && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     216#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    223217    /** 32 to 64 bits switcher entrypoint. */
    224218    R0PTRTYPE(PFNHWACCMSWITCHERHC) pfnHost32ToGuest64R0;
  • trunk/src/VBox/VMM/VMMR0/CPUMR0.cpp

    r15417 r15439  
    168168    }
    169169
    170 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     170#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    171171    if (CPUMIsGuestInLongModeEx(pCtx))
    172172    {
     
    258258    AssertReturn((pVCpu->cpum.s.fUseFlags & CPUM_USED_FPU), VINF_SUCCESS);
    259259
    260 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     260#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    261261    if (CPUMIsGuestInLongModeEx(pCtx))
    262262    {
     
    321321
    322322    /* Save the guest's debug state. The caller is responsible for DR7. */
    323 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     323#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    324324    if (CPUMIsGuestInLongModeEx(pCtx))
    325325    {
     
    397397
    398398    /* Activate the guest state DR0-3; DR7 is left to the caller. */
    399 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     399#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    400400    if (CPUMIsGuestInLongModeEx(pCtx))
    401401    {
  • trunk/src/VBox/VMM/VMMR0/HWACCMR0.cpp

    r15414 r15439  
    10711071
    10721072
    1073 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     1073#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    10741074/**
    10751075 * Save guest FPU/XMM state (64 bits guest mode & 32 bits host only)
  • trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp

    r15414 r15439  
    22982298}
    22992299
    2300 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     2300#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    23012301/**
    23022302 * Prepares for and executes VMRUN (64 bits guests from a 32 bits hosts).
     
    23552355}
    23562356
    2357 #endif /* HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) */
     2357#endif /* HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) */
  • trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp

    r15414 r15439  
    35093509}
    35103510
    3511 #if HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     3511#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    35123512/**
    35133513 * Prepares for and executes VMLAUNCH (64 bits guest mode)
     
    36283628}
    36293629
    3630 #endif /* HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL) */
     3630#endif /* HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL) */
    36313631
    36323632
  • trunk/src/VBox/VMM/VMMR0/VMMR0.cpp

    r15414 r15439  
    925925
    926926
    927 #if defined(DEBUG) && HC_ARCH_BITS == 32 && defined(VBOX_WITH_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
     927#if defined(DEBUG) && HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS) && !defined(VBOX_WITH_HYBRID_32BIT_KERNEL)
    928928        case VMMR0_DO_TEST_SWITCHER3264:
    929929            return HWACCMR0TestSwitcher3264(pVM);
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