VirtualBox

Changeset 44340 in vbox for trunk/src/VBox/Main


Ignore:
Timestamp:
Jan 23, 2013 4:20:07 PM (12 years ago)
Author:
vboxsync
Message:

VMM,Main,Debugger,REM: VM API cleanup, prefering PUVM over PVM so we can use real reference counting and not have the memory backing the VM structure disappear on us.

Location:
trunk/src/VBox/Main
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r44322 r44340  
    1542415424    <attribute name="VM" type="long long" readonly="yes" wsmap="suppress">
    1542515425      <desc>
    15426         Gets the VM handle. This is only for internal use while
    15427         we carve the details of this interface.
     15426        Gets the user-mode VM handle, with a reference.  Must be passed to
     15427        VMR3ReleaseUVM when done.  This is only for internal use while we carve
     15428        the details of this interface.
    1542815429      </desc>
    1542915430    </attribute>
  • trunk/src/VBox/Main/include/ConsoleImpl.h

    r44191 r44340  
    544544                               bool fForceUnmount,
    545545                               bool fHotplug,
    546                                PVM pVM,
     546                               PUVM pUVM,
    547547                               DeviceType_T *paLedDevType);
    548548    int configMedium(PCFGMNODE pLunL0,
     
    560560                     HRESULT *phrc);
    561561    static DECLCALLBACK(int) reconfigureMediumAttachment(Console *pConsole,
    562                                                          PVM pVM,
     562                                                         PUVM pUVM,
    563563                                                         const char *pcszDevice,
    564564                                                         unsigned uInstance,
     
    573573                                                         HRESULT *phrc);
    574574    static DECLCALLBACK(int) changeRemovableMedium(Console *pThis,
    575                                                    PVM pVM,
     575                                                   PUVM pUVM,
    576576                                                   const char *pcszDevice,
    577577                                                   unsigned uInstance,
     
    592592                      bool fAttachDetach, bool fIgnoreConnectFailure);
    593593
    594     static DECLCALLBACK(int) configGuestProperties(void *pvConsole, PVM pVM);
     594    static DECLCALLBACK(int) configGuestProperties(void *pvConsole, PUVM pUVM);
    595595    static DECLCALLBACK(int) configGuestControl(void *pvConsole);
    596596    static DECLCALLBACK(void) vmstateChangeCallback(PVM aVM, VMSTATE aState,
     
    598598    static DECLCALLBACK(int) unplugCpu(Console *pThis, PVM pVM, unsigned uCpu);
    599599    static DECLCALLBACK(int) plugCpu(Console *pThis, PVM pVM, unsigned uCpu);
    600     HRESULT doMediumChange(IMediumAttachment *aMediumAttachment, bool fForce, PVM pVM);
     600    HRESULT doMediumChange(IMediumAttachment *aMediumAttachment, bool fForce, PUVM pUVM);
    601601    HRESULT doCPURemove(ULONG aCpu, PVM pVM);
    602602    HRESULT doCPUAdd(ULONG aCpu, PVM pVM);
    603603
    604     HRESULT doNetworkAdapterChange(PVM pVM, const char *pszDevice, unsigned uInstance,
     604    HRESULT doNetworkAdapterChange(PUVM pUVM, const char *pszDevice, unsigned uInstance,
    605605                                   unsigned uLun, INetworkAdapter *aNetworkAdapter);
    606     static DECLCALLBACK(int) changeNetworkAttachment(Console *pThis, PVM pVM, const char *pszDevice,
     606    static DECLCALLBACK(int) changeNetworkAttachment(Console *pThis, PUVM pUVM, const char *pszDevice,
    607607                                                     unsigned uInstance, unsigned uLun,
    608608                                                     INetworkAdapter *aNetworkAdapter);
     
    615615    HRESULT detachUSBDevice(const ComObjPtr<OUSBDevice> &aHostDevice);
    616616
    617     static DECLCALLBACK(int) usbAttachCallback(Console *that, PVM pVM, IUSBDevice *aHostDevice, PCRTUUID aUuid,
     617    static DECLCALLBACK(int) usbAttachCallback(Console *that, PUVM pUVM, IUSBDevice *aHostDevice, PCRTUUID aUuid,
    618618                       bool aRemote, const char *aAddress, void *pvRemoteBackend, USHORT aPortVersion, ULONG aMaskedIfs);
    619     static DECLCALLBACK(int) usbDetachCallback(Console *that, PVM pVM, PCRTUUID aUuid);
     619    static DECLCALLBACK(int) usbDetachCallback(Console *that, PUVM pUVM, PCRTUUID aUuid);
    620620#endif
    621621
    622622    static DECLCALLBACK(int) attachStorageDevice(Console *pThis,
    623                                                  PVM pVM,
     623                                                 PUVM pUVM,
    624624                                                 const char *pcszDevice,
    625625                                                 unsigned uInstance,
     
    628628                                                 IMediumAttachment *aMediumAtt);
    629629    static DECLCALLBACK(int) detachStorageDevice(Console *pThis,
    630                                                  PVM pVM,
     630                                                 PUVM pUVM,
    631631                                                 const char *pcszDevice,
    632632                                                 unsigned uInstance,
    633633                                                 StorageBus_T enmBus,
    634634                                                 IMediumAttachment *aMediumAtt);
    635     HRESULT doStorageDeviceAttach(IMediumAttachment *aMediumAttachment, PVM pVM);
    636     HRESULT doStorageDeviceDetach(IMediumAttachment *aMediumAttachment, PVM pVM);
     635    HRESULT doStorageDeviceAttach(IMediumAttachment *aMediumAttachment, PUVM pUVM);
     636    HRESULT doStorageDeviceDetach(IMediumAttachment *aMediumAttachment, PUVM pUVM);
    637637
    638638    static DECLCALLBACK(int)    fntTakeSnapshotWorker(RTTHREAD Thread, void *pvUser);
     
    648648                                                          const char *pszErrorId, const char *pszFormat, va_list va);
    649649
    650     HRESULT                     captureUSBDevices(PVM pVM);
     650    HRESULT                     captureUSBDevices(PUVM pUVM);
    651651    void                        detachAllUSBDevices(bool aDone);
    652652
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r44288 r44340  
    157157          mServerProgress(aServerProgress),
    158158          mpVM(NULL),
     159          mpUVM(NULL),
    159160          mRC(E_FAIL),
    160161          mpSafeVMPtr(NULL)
     
    168169            mpSafeVMPtr = new Console::SafeVMPtr(aConsole);
    169170            if (mpSafeVMPtr->isOk())
     171            {
    170172                mpVM = mpSafeVMPtr->raw();
     173                mpUVM = mpSafeVMPtr->rawUVM();
     174            }
    171175            else
    172176                mRC = mpSafeVMPtr->rc();
     
    198202    const ComPtr<IProgress>     mServerProgress;
    199203    PVM                         mpVM;
     204    PUVM                        mpUVM;
    200205
    201206private:
     
    22292234    alock.release();
    22302235
    2231     int vrc = VMR3Reset(ptrVM);
     2236    int vrc = VMR3Reset(ptrVM.rawUVM());
    22322237
    22332238    HRESULT rc = RT_SUCCESS(vrc) ? S_OK :
     
    22552260HRESULT Console::doCPURemove(ULONG aCpu, PVM pVM)
    22562261{
     2262    PUVM pUVM = VMR3GetUVM(pVM);
    22572263    HRESULT rc = S_OK;
    22582264
     
    22972303        /* Notify the guest if possible. */
    22982304        uint32_t idCpuCore, idCpuPackage;
    2299         vrc = VMR3GetCpuCoreAndPackageIdFromCpuId(pVM, aCpu, &idCpuCore, &idCpuPackage); AssertRC(vrc);
     2305        vrc = VMR3GetCpuCoreAndPackageIdFromCpuId(pUVM, aCpu, &idCpuCore, &idCpuPackage); AssertRC(vrc);
    23002306        if (RT_SUCCESS(vrc))
    23012307            vrc = pVmmDevPort->pfnCpuHotUnplug(pVmmDevPort, idCpuCore, idCpuPackage);
     
    23292335         */
    23302336        PVMREQ pReq;
    2331         vrc = VMR3ReqCall(pVM, 0, &pReq, 0 /* no wait! */, VMREQFLAGS_VBOX_STATUS,
    2332                           (PFNRT)Console::unplugCpu, 3,
    2333                           this, pVM, aCpu);
     2337        vrc = VMR3ReqCallU(pUVM, 0, &pReq, 0 /* no wait! */, VMREQFLAGS_VBOX_STATUS,
     2338                           (PFNRT)Console::unplugCpu, 3,
     2339                           this, pVM, aCpu);
    23342340        if (vrc == VERR_TIMEOUT || RT_SUCCESS(vrc))
    23352341        {
     
    23442350        {
    23452351            /* Detach it from the VM  */
    2346             vrc = VMR3HotUnplugCpu(pVM, aCpu);
     2352            vrc = VMR3HotUnplugCpu(pUVM, aCpu);
    23472353            AssertRC(vrc);
    23482354        }
     
    23622368/*static*/ DECLCALLBACK(int) Console::plugCpu(Console *pThis, PVM pVM, unsigned uCpu)
    23632369{
     2370    PUVM pUVM = VMR3GetUVM(pVM);
    23642371    LogFlowFunc(("pThis=%p uCpu=%u\n", pThis, uCpu));
    23652372
    23662373    AssertReturn(pThis, VERR_INVALID_PARAMETER);
    23672374
    2368     int rc = VMR3HotPlugCpu(pVM, uCpu);
     2375    int rc = VMR3HotPlugCpu(pUVM, uCpu);
    23692376    AssertRC(rc);
    23702377
    2371     PCFGMNODE pInst = CFGMR3GetChild(CFGMR3GetRoot(pVM), "Devices/acpi/0/");
     2378    PCFGMNODE pInst = CFGMR3GetChild(CFGMR3GetRootU(pUVM), "Devices/acpi/0/");
    23722379    AssertRelease(pInst);
    23732380    /* nuke anything which might have been left behind. */
     
    23992406HRESULT Console::doCPUAdd(ULONG aCpu, PVM pVM)
    24002407{
     2408    PUVM pUVM = VMR3GetUVM(pVM);
    24012409    HRESULT rc = S_OK;
    24022410
     
    24352443     */
    24362444    PVMREQ pReq;
    2437     int vrc = VMR3ReqCall(pVM, 0, &pReq, 0 /* no wait! */, VMREQFLAGS_VBOX_STATUS,
    2438                           (PFNRT)Console::plugCpu, 3,
    2439                           this, pVM, aCpu);
     2445    int vrc = VMR3ReqCallU(pUVM, 0, &pReq, 0 /* no wait! */, VMREQFLAGS_VBOX_STATUS,
     2446                           (PFNRT)Console::plugCpu, 3,
     2447                           this, pVM, aCpu);
    24402448
    24412449    /* release the lock before a VMR3* call (EMT will call us back)! */
     
    24602468        /* Notify the guest if possible. */
    24612469        uint32_t idCpuCore, idCpuPackage;
    2462         vrc = VMR3GetCpuCoreAndPackageIdFromCpuId(pVM, aCpu, &idCpuCore, &idCpuPackage); AssertRC(vrc);
     2470        vrc = VMR3GetCpuCoreAndPackageIdFromCpuId(pUVM, aCpu, &idCpuCore, &idCpuPackage); AssertRC(vrc);
    24632471        if (RT_SUCCESS(vrc))
    24642472            vrc = pDevPort->pfnCpuHotPlug(pDevPort, idCpuCore, idCpuPackage);
     
    25062514    alock.release();
    25072515
    2508     int vrc = VMR3Suspend(ptrVM);
     2516    int vrc = VMR3Suspend(ptrVM.rawUVM());
    25092517
    25102518    HRESULT hrc = S_OK;
     
    25482556    if (RT_SUCCESS(vrc))
    25492557    {
    2550         if (VMR3GetState(ptrVM) == VMSTATE_CREATED)
    2551             vrc = VMR3PowerOn(ptrVM); /* (PowerUpPaused) */
     2558        if (VMR3GetStateU(ptrVM.rawUVM()) == VMSTATE_CREATED)
     2559            vrc = VMR3PowerOn(ptrVM.rawUVM()); /* (PowerUpPaused) */
    25522560        else
    2553             vrc = VMR3Resume(ptrVM);
     2561            vrc = VMR3Resume(ptrVM.rawUVM());
    25542562    }
    25552563
     
    27852793        /* release the lock before a VMR3* call (EMT will call us back)! */
    27862794        alock.release();
    2787         int vrc = VMR3Suspend(ptrVM);
     2795        int vrc = VMR3Suspend(ptrVM.rawUVM());
    27882796        alock.acquire();
    27892797
     
    28932901            {
    28942902                alock.release();
    2895                 VMR3Resume(ptrVM);
     2903                VMR3Resume(ptrVM.rawUVM());
    28962904                alock.acquire();
    28972905            }
     
    36603668 * @param aMediumAttachment The medium attachment with the new medium state.
    36613669 * @param fForce            Force medium chance, if it is locked or not.
    3662  * @param pVM               Safe VM handle.
     3670 * @param pUVM              Safe VM handle.
    36633671 *
    36643672 * @note Locks this object for writing.
    36653673 */
    3666 HRESULT Console::doMediumChange(IMediumAttachment *aMediumAttachment, bool fForce, PVM pVM)
     3674HRESULT Console::doMediumChange(IMediumAttachment *aMediumAttachment, bool fForce, PUVM pUVM)
    36673675{
    36683676    AutoCaller autoCaller(this);
     
    37283736     */
    37293737    PVMREQ pReq;
    3730     int vrc = VMR3ReqCall(pVM,
    3731                           VMCPUID_ANY,
    3732                           &pReq,
    3733                           0 /* no wait! */,
    3734                           VMREQFLAGS_VBOX_STATUS,
    3735                           (PFNRT)Console::changeRemovableMedium,
    3736                           8,
    3737                           this,
    3738                           pVM,
    3739                           pszDevice,
    3740                           uInstance,
    3741                           enmBus,
    3742                           fUseHostIOCache,
    3743                           aMediumAttachment,
    3744                           fForce);
     3738    int vrc = VMR3ReqCallU(pUVM,
     3739                           VMCPUID_ANY,
     3740                           &pReq,
     3741                           0 /* no wait! */,
     3742                           VMREQFLAGS_VBOX_STATUS,
     3743                           (PFNRT)Console::changeRemovableMedium,
     3744                           8,
     3745                           this,
     3746                           pUVM,
     3747                           pszDevice,
     3748                           uInstance,
     3749                           enmBus,
     3750                           fUseHostIOCache,
     3751                           aMediumAttachment,
     3752                           fForce);
    37453753
    37463754    /* release the lock before waiting for a result (EMT will call us back!) */
     
    37783786 *
    37793787 * @param   pThis           Pointer to the Console object.
    3780  * @param   pVM             The VM handle.
     3788 * @param   pUVM            The VM handle.
    37813789 * @param   pcszDevice      The PDM device name.
    37823790 * @param   uInstance       The PDM device instance.
     
    37933801 */
    37943802DECLCALLBACK(int) Console::changeRemovableMedium(Console *pConsole,
    3795                                                  PVM pVM,
     3803                                                 PUVM pUVM,
    37963804                                                 const char *pcszDevice,
    37973805                                                 unsigned uInstance,
     
    38163824     */
    38173825    bool fResume;
    3818     VMSTATE enmVMState = VMR3GetState(pVM);
     3826    VMSTATE enmVMState = VMR3GetStateU(pUVM);
    38193827    switch (enmVMState)
    38203828    {
     
    38253833            /* disable the callback to prevent Console-level state change */
    38263834            pConsole->mVMStateChangeCallbackDisabled = true;
    3827             int rc = VMR3Suspend(pVM);
     3835            int rc = VMR3Suspend(pUVM);
    38283836            pConsole->mVMStateChangeCallbackDisabled = false;
    38293837            AssertRCReturn(rc, rc);
     
    38533861    /* Determine the base path for the device instance. */
    38543862    PCFGMNODE pCtlInst;
    3855     pCtlInst = CFGMR3GetChildF(CFGMR3GetRoot(pVM), "Devices/%s/%u/", pcszDevice, uInstance);
     3863    pCtlInst = CFGMR3GetChildF(CFGMR3GetRootU(pUVM), "Devices/%s/%u/", pcszDevice, uInstance);
    38563864    AssertReturn(pCtlInst, VERR_INTERNAL_ERROR);
    38573865
     
    38743882                                             fForce /* fForceUnmount */,
    38753883                                             false  /* fHotplug */,
    3876                                              pVM,
     3884                                             pUVM,
    38773885                                             NULL /* paLedDevType */);
    38783886    /** @todo this dumps everything attached to this device instance, which
     
    38883896        /* disable the callback to prevent Console-level state change */
    38893897        pConsole->mVMStateChangeCallbackDisabled = true;
    3890         rc = VMR3Resume(pVM);
     3898        rc = VMR3Resume(pUVM);
    38913899        pConsole->mVMStateChangeCallbackDisabled = false;
    38923900        AssertRC(rc);
     
    38943902        {
    38953903            /* too bad, we failed. try to sync the console state with the VMM state */
    3896             vmstateChangeCallback(pVM, VMSTATE_SUSPENDED, enmVMState, pConsole);
     3904            vmstateChangeCallback(VMR3GetVM(pUVM), VMSTATE_SUSPENDED, enmVMState, pConsole);
    38973905        }
    38983906        /// @todo (r=dmik) if we failed with drive mount, then the VMR3Resume
     
    39143922 *
    39153923 * @param aMediumAttachment The medium attachment which is added.
    3916  * @param pVM               Safe VM handle.
     3924 * @param pUVM              Safe VM handle.
    39173925 *
    39183926 * @note Locks this object for writing.
    39193927 */
    3920 HRESULT Console::doStorageDeviceAttach(IMediumAttachment *aMediumAttachment, PVM pVM)
     3928HRESULT Console::doStorageDeviceAttach(IMediumAttachment *aMediumAttachment, PUVM pUVM)
    39213929{
    39223930    AutoCaller autoCaller(this);
     
    39823990     */
    39833991    PVMREQ pReq;
    3984     int vrc = VMR3ReqCall(pVM,
    3985                           VMCPUID_ANY,
    3986                           &pReq,
    3987                           0 /* no wait! */,
    3988                           VMREQFLAGS_VBOX_STATUS,
    3989                           (PFNRT)Console::attachStorageDevice,
    3990                           7,
    3991                           this,
    3992                           pVM,
    3993                           pszDevice,
    3994                           uInstance,
    3995                           enmBus,
    3996                           fUseHostIOCache,
    3997                           aMediumAttachment);
     3992    int vrc = VMR3ReqCallU(pUVM,
     3993                           VMCPUID_ANY,
     3994                           &pReq,
     3995                           0 /* no wait! */,
     3996                           VMREQFLAGS_VBOX_STATUS,
     3997                           (PFNRT)Console::attachStorageDevice,
     3998                           7,
     3999                           this,
     4000                           pUVM,
     4001                           pszDevice,
     4002                           uInstance,
     4003                           enmBus,
     4004                           fUseHostIOCache,
     4005                           aMediumAttachment);
    39984006
    39994007    /* release the lock before waiting for a result (EMT will call us back!) */
     
    40324040 *
    40334041 * @param   pThis           Pointer to the Console object.
    4034  * @param   pVM             The VM handle.
     4042 * @param   pUVM            The VM handle.
    40354043 * @param   pcszDevice      The PDM device name.
    40364044 * @param   uInstance       The PDM device instance.
     
    40394047 */
    40404048DECLCALLBACK(int) Console::attachStorageDevice(Console *pConsole,
    4041                                                PVM pVM,
     4049                                               PUVM pUVM,
    40424050                                               const char *pcszDevice,
    40434051                                               unsigned uInstance,
     
    40614069     */
    40624070    bool fResume;
    4063     VMSTATE enmVMState = VMR3GetState(pVM);
     4071    VMSTATE enmVMState = VMR3GetStateU(pUVM);
    40644072    switch (enmVMState)
    40654073    {
     
    40704078            /* disable the callback to prevent Console-level state change */
    40714079            pConsole->mVMStateChangeCallbackDisabled = true;
    4072             int rc = VMR3Suspend(pVM);
     4080            int rc = VMR3Suspend(pUVM);
    40734081            pConsole->mVMStateChangeCallbackDisabled = false;
    40744082            AssertRCReturn(rc, rc);
     
    40984106    /* Determine the base path for the device instance. */
    40994107    PCFGMNODE pCtlInst;
    4100     pCtlInst = CFGMR3GetChildF(CFGMR3GetRoot(pVM), "Devices/%s/%u/", pcszDevice, uInstance);
     4108    pCtlInst = CFGMR3GetChildF(CFGMR3GetRootU(pUVM), "Devices/%s/%u/", pcszDevice, uInstance);
    41014109    AssertReturn(pCtlInst, VERR_INTERNAL_ERROR);
    41024110
     
    41194127                                             false /* fForceUnmount */,
    41204128                                             true   /* fHotplug */,
    4121                                              pVM,
     4129                                             pUVM,
    41224130                                             NULL /* paLedDevType */);
    41234131    /** @todo this dumps everything attached to this device instance, which
     
    41334141        /* disable the callback to prevent Console-level state change */
    41344142        pConsole->mVMStateChangeCallbackDisabled = true;
    4135         rc = VMR3Resume(pVM);
     4143        rc = VMR3Resume(pUVM);
    41364144        pConsole->mVMStateChangeCallbackDisabled = false;
    41374145        AssertRC(rc);
     
    41394147        {
    41404148            /* too bad, we failed. try to sync the console state with the VMM state */
    4141             vmstateChangeCallback(pVM, VMSTATE_SUSPENDED, enmVMState, pConsole);
     4149            vmstateChangeCallback(VMR3GetVM(pUVM), VMSTATE_SUSPENDED, enmVMState, pConsole);
    41424150        }
    41434151        /** @todo: if we failed with drive mount, then the VMR3Resume
     
    41594167 *
    41604168 * @param aMediumAttachment The medium attachment which is added.
    4161  * @param pVM               Safe VM handle.
     4169 * @param pUVM              Safe VM handle.
    41624170 *
    41634171 * @note Locks this object for writing.
    41644172 */
    4165 HRESULT Console::doStorageDeviceDetach(IMediumAttachment *aMediumAttachment, PVM pVM)
     4173HRESULT Console::doStorageDeviceDetach(IMediumAttachment *aMediumAttachment, PUVM pUVM)
    41664174{
    41674175    AutoCaller autoCaller(this);
     
    42244232     */
    42254233    PVMREQ pReq;
    4226     int vrc = VMR3ReqCall(pVM,
    4227                           VMCPUID_ANY,
    4228                           &pReq,
    4229                           0 /* no wait! */,
    4230                           VMREQFLAGS_VBOX_STATUS,
    4231                           (PFNRT)Console::detachStorageDevice,
    4232                           6,
    4233                           this,
    4234                           pVM,
    4235                           pszDevice,
    4236                           uInstance,
    4237                           enmBus,
    4238                           aMediumAttachment);
     4234    int vrc = VMR3ReqCallU(pUVM,
     4235                           VMCPUID_ANY,
     4236                           &pReq,
     4237                           0 /* no wait! */,
     4238                           VMREQFLAGS_VBOX_STATUS,
     4239                           (PFNRT)Console::detachStorageDevice,
     4240                           6,
     4241                           this,
     4242                           pUVM,
     4243                           pszDevice,
     4244                           uInstance,
     4245                           enmBus,
     4246                           aMediumAttachment);
    42394247
    42404248    /* release the lock before waiting for a result (EMT will call us back!) */
     
    42724280 *
    42734281 * @param   pThis           Pointer to the Console object.
    4274  * @param   pVM             The VM handle.
     4282 * @param   pUVM            The VM handle.
    42754283 * @param   pcszDevice      The PDM device name.
    42764284 * @param   uInstance       The PDM device instance.
     
    42794287 */
    42804288DECLCALLBACK(int) Console::detachStorageDevice(Console *pConsole,
    4281                                                PVM pVM,
     4289                                               PUVM pUVM,
    42824290                                               const char *pcszDevice,
    42834291                                               unsigned uInstance,
     
    43004308     */
    43014309    bool fResume;
    4302     VMSTATE enmVMState = VMR3GetState(pVM);
     4310    VMSTATE enmVMState = VMR3GetStateU(pUVM);
    43034311    switch (enmVMState)
    43044312    {
     
    43094317            /* disable the callback to prevent Console-level state change */
    43104318            pConsole->mVMStateChangeCallbackDisabled = true;
    4311             int rc = VMR3Suspend(pVM);
     4319            int rc = VMR3Suspend(pUVM);
    43124320            pConsole->mVMStateChangeCallbackDisabled = false;
    43134321            AssertRCReturn(rc, rc);
     
    43374345    /* Determine the base path for the device instance. */
    43384346    PCFGMNODE pCtlInst;
    4339     pCtlInst = CFGMR3GetChildF(CFGMR3GetRoot(pVM), "Devices/%s/%u/", pcszDevice, uInstance);
     4347    pCtlInst = CFGMR3GetChildF(CFGMR3GetRootU(pUVM), "Devices/%s/%u/", pcszDevice, uInstance);
    43404348    AssertReturn(pCtlInst, VERR_INTERNAL_ERROR);
    43414349
     
    43634371    if (pLunL0)
    43644372    {
    4365         rc = PDMR3DeviceDetach(pVM, pcszDevice, uInstance, uLUN, 0);
     4373        rc = PDMR3DeviceDetach(VMR3GetVM(pUVM), pcszDevice, uInstance, uLUN, 0);
    43664374        if (rc == VERR_PDM_NO_DRIVER_ATTACHED_TO_LUN)
    43674375            rc = VINF_SUCCESS;
     
    43864394        /* disable the callback to prevent Console-level state change */
    43874395        pConsole->mVMStateChangeCallbackDisabled = true;
    4388         rc = VMR3Resume(pVM);
     4396        rc = VMR3Resume(pUVM);
    43894397        pConsole->mVMStateChangeCallbackDisabled = false;
    43904398        AssertRC(rc);
     
    43924400        {
    43934401            /* too bad, we failed. try to sync the console state with the VMM state */
    4394             vmstateChangeCallback(pVM, VMSTATE_SUSPENDED, enmVMState, pConsole);
     4402            vmstateChangeCallback(VMR3GetVM(pUVM), VMSTATE_SUSPENDED, enmVMState, pConsole);
    43954403        }
    43964404        /** @todo: if we failed with drive mount, then the VMR3Resume
     
    44744482                    if (RT_SUCCESS(vrc) && changeAdapter)
    44754483                    {
    4476                         VMSTATE enmVMState = VMR3GetState(ptrVM);
     4484                        VMSTATE enmVMState = VMR3GetStateU(ptrVM.rawUVM());
    44774485                        if (    enmVMState == VMSTATE_RUNNING    /** @todo LiveMigration: Forbid or deal correctly with the _LS variants */
    44784486                            ||  enmVMState == VMSTATE_SUSPENDED)
     
    44844492                            }
    44854493
    4486                             rc = doNetworkAdapterChange(ptrVM, pszAdapterName, ulInstance, 0, aNetworkAdapter);
     4494                            rc = doNetworkAdapterChange(ptrVM.rawUVM(), pszAdapterName, ulInstance, 0, aNetworkAdapter);
    44874495
    44884496                            if (fTraceEnabled && fCableConnected && pINetCfg)
     
    46154623 * @returns COM status code.
    46164624 *
    4617  * @parma   pVM                 The VM handle (caller hold this safely).
     4625 * @parma   pUVM                The VM handle (caller hold this safely).
    46184626 * @param   pszDevice           The PDM device name.
    46194627 * @param   uInstance           The PDM device instance.
     
    46214629 * @param   aNetworkAdapter     The network adapter whose attachment needs to be changed
    46224630 */
    4623 HRESULT Console::doNetworkAdapterChange(PVM pVM,
     4631HRESULT Console::doNetworkAdapterChange(PUVM pUVM,
    46244632                                        const char *pszDevice,
    46254633                                        unsigned uInstance,
     
    46324640    AutoCaller autoCaller(this);
    46334641    AssertComRCReturnRC(autoCaller.rc());
    4634 
    4635     /* Get the VM handle. */
    4636     SafeVMPtr ptrVM(this);
    4637     if (!ptrVM.isOk())
    4638         return ptrVM.rc();
    46394642
    46404643    /*
     
    46444647     */
    46454648    PVMREQ pReq;
    4646     int vrc = VMR3ReqCall(pVM, 0 /*idDstCpu*/, &pReq, 0 /* no wait! */, VMREQFLAGS_VBOX_STATUS,
    4647                           (PFNRT) Console::changeNetworkAttachment, 6,
    4648                           this, ptrVM.raw(), pszDevice, uInstance, uLun, aNetworkAdapter);
     4649    int vrc = VMR3ReqCallU(pUVM, 0 /*idDstCpu*/, &pReq, 0 /* no wait! */, VMREQFLAGS_VBOX_STATUS,
     4650                           (PFNRT)Console::changeNetworkAttachment, 6,
     4651                           this, pUVM, pszDevice, uInstance, uLun, aNetworkAdapter);
    46494652
    46504653    if (vrc == VERR_TIMEOUT || RT_SUCCESS(vrc))
     
    46754678 *
    46764679 * @param   pThis               Pointer to the Console object.
    4677  * @param   pVM                 The VM handle.
     4680 * @param   pUVM                The VM handle.
    46784681 * @param   pszDevice           The PDM device name.
    46794682 * @param   uInstance           The PDM device instance.
     
    46854688 */
    46864689DECLCALLBACK(int) Console::changeNetworkAttachment(Console *pThis,
    4687                                                    PVM pVM,
     4690                                                   PUVM pUVM,
    46884691                                                   const char *pszDevice,
    46894692                                                   unsigned uInstance,
     
    47244727     */
    47254728    bool fResume;
    4726     VMSTATE enmVMState = VMR3GetState(pVM);
     4729    VMSTATE enmVMState = VMR3GetStateU(pUVM);
    47274730    switch (enmVMState)
    47284731    {
     
    47334736            /* disable the callback to prevent Console-level state change */
    47344737            pThis->mVMStateChangeCallbackDisabled = true;
    4735             int rc = VMR3Suspend(pVM);
     4738            int rc = VMR3Suspend(pUVM);
    47364739            pThis->mVMStateChangeCallbackDisabled = false;
    47374740            AssertRCReturn(rc, rc);
     
    47554758    PCFGMNODE pCfg = NULL;          /* /Devices/Dev/.../Config/ */
    47564759    PCFGMNODE pLunL0 = NULL;        /* /Devices/Dev/0/LUN#0/ */
    4757     PCFGMNODE pInst = CFGMR3GetChildF(CFGMR3GetRoot(pVM), "Devices/%s/%d/", pszDevice, uInstance);
     4760    PCFGMNODE pInst = CFGMR3GetChildF(CFGMR3GetRootU(pUVM), "Devices/%s/%d/", pszDevice, uInstance);
    47584761    AssertRelease(pInst);
    47594762
     
    47694772        /* disable the callback to prevent Console-level state change */
    47704773        pThis->mVMStateChangeCallbackDisabled = true;
    4771         rc = VMR3Resume(pVM);
     4774        rc = VMR3Resume(pUVM);
    47724775        pThis->mVMStateChangeCallbackDisabled = false;
    47734776        AssertRC(rc);
     
    47754778        {
    47764779            /* too bad, we failed. try to sync the console state with the VMM state */
    4777             vmstateChangeCallback(pVM, VMSTATE_SUSPENDED, enmVMState, pThis);
     4780            vmstateChangeCallback(VMR3GetVM(pUVM), VMSTATE_SUSPENDED, enmVMState, pThis);
    47784781        }
    47794782        /// @todo (r=dmik) if we failed with drive mount, then the VMR3Resume
     
    48554858    if (ptrVM.isOk())
    48564859    {
    4857         rc = doMediumChange(aMediumAttachment, !!aForce, ptrVM);
     4860        rc = doMediumChange(aMediumAttachment, !!aForce, ptrVM.rawUVM());
    48584861        ptrVM.release();
    48594862    }
     
    49264929        {
    49274930            /* No need to call in the EMT thread. */
    4928             rc = VMR3SetCpuExecutionCap(ptrVM, aExecutionCap);
     4931            rc = VMR3SetCpuExecutionCap(ptrVM.rawUVM(), aExecutionCap);
    49294932        }
    49304933        else
     
    53895392    {
    53905393        if (aRemove)
    5391             rc = doStorageDeviceDetach(aMediumAttachment, ptrVM);
     5394            rc = doStorageDeviceDetach(aMediumAttachment, ptrVM.rawUVM());
    53925395        else
    5393             rc = doStorageDeviceAttach(aMediumAttachment, ptrVM);
     5396            rc = doStorageDeviceAttach(aMediumAttachment, ptrVM.rawUVM());
    53945397        ptrVM.release();
    53955398    }
     
    57125715
    57135716    /* Pause the VM, as it might have pending IO on this drive */
    5714     VMSTATE enmVMState = VMR3GetState(ptrVM);
     5717    VMSTATE enmVMState = VMR3GetStateU(ptrVM.rawUVM());
    57155718    if (mMachineState == MachineState_DeletingSnapshotOnline)
    57165719    {
     
    57185721        /* disable the callback to prevent Console-level state change */
    57195722        mVMStateChangeCallbackDisabled = true;
    5720         int vrc2 = VMR3Suspend(ptrVM);
     5723        int vrc2 = VMR3Suspend(ptrVM.rawUVM());
    57215724        mVMStateChangeCallbackDisabled = false;
    57225725        AssertRCReturn(vrc2, E_FAIL);
    57235726    }
    57245727
    5725     vrc = VMR3ReqCallWait(ptrVM,
    5726                           VMCPUID_ANY,
    5727                           (PFNRT)reconfigureMediumAttachment,
    5728                           13,
    5729                           this,
    5730                           ptrVM.raw(),
    5731                           pcszDevice,
    5732                           uInstance,
    5733                           enmBus,
    5734                           fUseHostIOCache,
    5735                           fBuiltinIOCache,
    5736                           true /* fSetupMerge */,
    5737                           aSourceIdx,
    5738                           aTargetIdx,
    5739                           aMediumAttachment,
    5740                           mMachineState,
    5741                           &rc);
     5728    vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(),
     5729                           VMCPUID_ANY,
     5730                           (PFNRT)reconfigureMediumAttachment,
     5731                           13,
     5732                           this,
     5733                           ptrVM.rawUVM(),
     5734                           pcszDevice,
     5735                           uInstance,
     5736                           enmBus,
     5737                           fUseHostIOCache,
     5738                           fBuiltinIOCache,
     5739                           true /* fSetupMerge */,
     5740                           aSourceIdx,
     5741                           aTargetIdx,
     5742                           aMediumAttachment,
     5743                           mMachineState,
     5744                           &rc);
    57425745    /* error handling is after resuming the VM */
    57435746
     
    57475750        /* disable the callback to prevent Console-level state change */
    57485751        mVMStateChangeCallbackDisabled = true;
    5749         int vrc2 = VMR3Resume(ptrVM);
     5752        int vrc2 = VMR3Resume(ptrVM.rawUVM());
    57505753        mVMStateChangeCallbackDisabled = false;
    57515754        if (RT_FAILURE(vrc2))
     
    57835786
    57845787    /* Pause the VM, as it might have pending IO on this drive */
    5785     enmVMState = VMR3GetState(ptrVM);
     5788    enmVMState = VMR3GetStateU(ptrVM.rawUVM());
    57865789    if (mMachineState == MachineState_DeletingSnapshotOnline)
    57875790    {
     
    57895792        /* disable the callback to prevent Console-level state change */
    57905793        mVMStateChangeCallbackDisabled = true;
    5791         int vrc2 = VMR3Suspend(ptrVM);
     5794        int vrc2 = VMR3Suspend(ptrVM.rawUVM());
    57925795        mVMStateChangeCallbackDisabled = false;
    57935796        AssertRCReturn(vrc2, E_FAIL);
     
    57995802                                           ComSafeArrayInArg(aChildrenToReparent));
    58005803
    5801     vrc = VMR3ReqCallWait(ptrVM,
    5802                           VMCPUID_ANY,
    5803                           (PFNRT)reconfigureMediumAttachment,
    5804                           13,
    5805                           this,
    5806                           ptrVM.raw(),
    5807                           pcszDevice,
    5808                           uInstance,
    5809                           enmBus,
    5810                           fUseHostIOCache,
    5811                           fBuiltinIOCache,
    5812                           false /* fSetupMerge */,
    5813                           0 /* uMergeSource */,
    5814                           0 /* uMergeTarget */,
    5815                           aMediumAttachment,
    5816                           mMachineState,
    5817                           &rc);
     5804    vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(),
     5805                           VMCPUID_ANY,
     5806                           (PFNRT)reconfigureMediumAttachment,
     5807                           13,
     5808                           this,
     5809                           ptrVM.rawUVM(),
     5810                           pcszDevice,
     5811                           uInstance,
     5812                           enmBus,
     5813                           fUseHostIOCache,
     5814                           fBuiltinIOCache,
     5815                           false /* fSetupMerge */,
     5816                           0 /* uMergeSource */,
     5817                           0 /* uMergeTarget */,
     5818                           aMediumAttachment,
     5819                           mMachineState,
     5820                           &rc);
    58185821    /* error handling is after resuming the VM */
    58195822
     
    58235826        /* disable the callback to prevent Console-level state change */
    58245827        mVMStateChangeCallbackDisabled = true;
    5825         int vrc2 = VMR3Resume(ptrVM);
     5828        int vrc2 = VMR3Resume(ptrVM.rawUVM());
    58265829        mVMStateChangeCallbackDisabled = false;
    58275830        AssertRC(vrc2);
     
    61986201        return a_Quiet
    61996202            ? E_ACCESSDENIED
    6200             : setError(E_ACCESSDENIED, tr("The virtual machine is was powered off"));
     6203            : setError(E_ACCESSDENIED, tr("The virtual machine is powered off"));
    62016204
    62026205    /*
     
    62076210        return a_Quiet
    62086211            ? E_ACCESSDENIED
    6209             : setError(E_ACCESSDENIED, tr("The virtual machine is was powered off"));
     6212            : setError(E_ACCESSDENIED, tr("The virtual machine is powered off"));
    62106213
    62116214    PVM pVM = VMR3GetVM(pUVM);
     
    62156218        return a_Quiet
    62166219            ? E_ACCESSDENIED
    6217             : setError(E_ACCESSDENIED, tr("The virtual machine is was powered off"));
     6220            : setError(E_ACCESSDENIED, tr("The virtual machine is powered off"));
    62186221    }
    62196222
     
    69366939        LogFlowThisFunc(("Powering off the VM...\n"));
    69376940        alock.release();
    6938         vrc = VMR3PowerOff(VMR3GetVM(pUVM));
     6941        vrc = VMR3PowerOff(pUVM);
    69396942#ifdef VBOX_WITH_EXTPACK
    69406943        mptrExtPackManager->callAllVmPowerOffHooks(this, VMR3GetVM(pUVM));
     
    70047007        alock.release();
    70057008
    7006         vrc = VMR3Destroy(VMR3GetVM(pUVM));
     7009        vrc = VMR3Destroy(pUVM);
    70077010
    70087011        /* take the lock again */
     
    79587961    Assert(portVersion == 1 || portVersion == 2);
    79597962
    7960     int vrc = VMR3ReqCallWait(ptrVM, 0 /* idDstCpu (saved state, see #6232) */,
    7961                               (PFNRT)usbAttachCallback, 9,
    7962                               this, ptrVM.raw(), aHostDevice, uuid.raw(), fRemote, Address.c_str(), pvRemoteBackend, portVersion, aMaskedIfs);
     7963    int vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(), 0 /* idDstCpu (saved state, see #6232) */,
     7964                               (PFNRT)usbAttachCallback, 9,
     7965                               this, ptrVM.rawUVM(), aHostDevice, uuid.raw(), fRemote,
     7966                               Address.c_str(), pvRemoteBackend, portVersion, aMaskedIfs);
    79637967
    79647968    if (RT_SUCCESS(vrc))
     
    79867990        {
    79877991            case VERR_VUSB_NO_PORTS:
    7988                 hrc = setError(E_FAIL,
    7989                     tr("Failed to attach the USB device. (No available ports on the USB controller)."));
     7992                hrc = setError(E_FAIL, tr("Failed to attach the USB device. (No available ports on the USB controller)."));
    79907993                break;
    79917994            case VERR_VUSB_USBFS_PERMISSION:
    7992                 hrc = setError(E_FAIL,
    7993                     tr("Not permitted to open the USB device, check usbfs options"));
     7995                hrc = setError(E_FAIL, tr("Not permitted to open the USB device, check usbfs options"));
    79947996                break;
    79957997            default:
    7996                 hrc = setError(E_FAIL,
    7997                     tr("Failed to create a proxy device for the USB device. (Error: %Rrc)"),
    7998                     vrc);
     7998                hrc = setError(E_FAIL, tr("Failed to create a proxy device for the USB device. (Error: %Rrc)"), vrc);
    79997999                break;
    80008000        }
     
    80158015//static
    80168016DECLCALLBACK(int)
    8017 Console::usbAttachCallback(Console *that, PVM pVM, IUSBDevice *aHostDevice, PCRTUUID aUuid, bool aRemote, const char *aAddress, void *pvRemoteBackend, USHORT aPortVersion, ULONG aMaskedIfs)
     8017Console::usbAttachCallback(Console *that, PUVM pUVM, IUSBDevice *aHostDevice, PCRTUUID aUuid, bool aRemote,
     8018                           const char *aAddress, void *pvRemoteBackend, USHORT aPortVersion, ULONG aMaskedIfs)
    80188019{
    80198020    LogFlowFuncEnter();
     
    80238024    AssertReturn(!that->isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE);
    80248025
    8025     int vrc = PDMR3USBCreateProxyDevice(pVM, aUuid, aRemote, aAddress, pvRemoteBackend,
     8026    int vrc = PDMR3USBCreateProxyDevice(VMR3GetVM(pUVM), aUuid, aRemote, aAddress, pvRemoteBackend,
    80268027                                        aPortVersion == 1 ? VUSB_STDVER_11 : VUSB_STDVER_20, aMaskedIfs);
    80278028    LogFlowFunc(("vrc=%Rrc\n", vrc));
     
    80738074
    80748075    alock.release();
    8075     int vrc = VMR3ReqCallWait(ptrVM, 0 /* idDstCpu (saved state, see #6232) */,
    8076                               (PFNRT)usbDetachCallback, 5,
    8077                               this, ptrVM.raw(), pUuid);
     8076    int vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(), 0 /* idDstCpu (saved state, see #6232) */,
     8077                               (PFNRT)usbDetachCallback, 5,
     8078                               this, ptrVM.rawUVM(), pUuid);
    80788079    if (RT_SUCCESS(vrc))
    80798080    {
     
    80918092/**
    80928093 * USB device detach callback used by DetachUSBDevice().
     8094 *
    80938095 * Note that DetachUSBDevice() doesn't return until this callback is executed,
    80948096 * so we don't use AutoCaller and don't care about reference counters of
     
    80998101//static
    81008102DECLCALLBACK(int)
    8101 Console::usbDetachCallback(Console *that, PVM pVM, PCRTUUID aUuid)
     8103Console::usbDetachCallback(Console *that, PUVM pUVM, PCRTUUID aUuid)
    81028104{
    81038105    LogFlowFuncEnter();
     
    81078109    AssertReturn(!that->isWriteLockOnCurrentThread(), VERR_GENERAL_FAILURE);
    81088110
    8109     int vrc = PDMR3USBDetachDevice(pVM, aUuid);
     8111    int vrc = PDMR3USBDetachDevice(VMR3GetVM(pUVM), aUuid);
    81108112
    81118113    LogFlowFunc(("vrc=%Rrc\n", vrc));
     
    84938495 * Called at VM startup.
    84948496 *
    8495  * @param   pVM     The VM handle.
     8497 * @param   pUVM    The VM handle.
    84968498 */
    8497 HRESULT Console::captureUSBDevices(PVM pVM)
     8499HRESULT Console::captureUSBDevices(PUVM pUVM)
    84988500{
    84998501    LogFlowThisFunc(("\n"));
     
    85068508     * capture devices */
    85078509    PPDMIBASE pBase;
    8508     int vrc = PDMR3QueryLun(pVM, "usb-ohci", 0, 0, &pBase);
     8510    int vrc = PDMR3QueryLun(VMR3GetVM(pUVM), "usb-ohci", 0, 0, &pBase);
    85098511    if (RT_SUCCESS(vrc))
    85108512    {
     
    88718873        /*
    88728874         * Create the VM
    8873          */
    8874         PVM pVM;
    8875         /*
    8876          * release the lock since EMT will call Console. It's safe because
    8877          * mMachineState is either Starting or Restoring state here.
     8875         *
     8876         * Note! Release the lock since EMT will call Console. It's safe because
     8877         *       mMachineState is either Starting or Restoring state here.
    88788878         */
    88798879        alock.release();
    88808880
     8881        PVM pVM;
    88818882        vrc = VMR3Create(cCpus,
    88828883                         pConsole->mpVmm2UserMethods,
     
    88858886                         task->mConfigConstructor,
    88868887                         static_cast<Console *>(pConsole),
    8887                          &pVM);
     8888                         &pVM, NULL);
    88888889
    88898890        alock.acquire();
     
    89558956                 * Capture USB devices.
    89568957                 */
    8957                 rc = pConsole->captureUSBDevices(pVM);
    8958                 if (FAILED(rc)) break;
     8958                rc = pConsole->captureUSBDevices(pConsole->mpUVM);
     8959                if (FAILED(rc))
     8960                    break;
    89598961
    89608962                /* Load saved state? */
     
    89648966                                 task->mSavedStateFile.c_str()));
    89658967
    8966                     vrc = VMR3LoadFromFile(pVM,
     8968                    vrc = VMR3LoadFromFile(pConsole->mpUVM,
    89678969                                           task->mSavedStateFile.c_str(),
    89688970                                           Console::stateProgressCallback,
     
    89818983#endif
    89828984                            if (RT_SUCCESS(vrc))
    8983                                 vrc = VMR3Resume(pVM);
     8985                                vrc = VMR3Resume(pConsole->mpUVM);
    89848986                            AssertLogRelRC(vrc);
    89858987                        }
     
    89898991                    if (RT_FAILURE(vrc))
    89908992                    {
    8991                         int vrc2 = VMR3PowerOff(pVM); AssertLogRelRC(vrc2);
     8993                        int vrc2 = VMR3PowerOff(pConsole->mpUVM); AssertLogRelRC(vrc2);
    89928994#ifdef VBOX_WITH_EXTPACK
    89938995                        pConsole->mptrExtPackManager->callAllVmPowerOffHooks(pConsole, pVM);
     
    89999001                    /* -> ConsoleImplTeleporter.cpp */
    90009002                    bool fPowerOffOnFailure;
    9001                     rc = pConsole->teleporterTrg(VMR3GetUVM(pVM), pMachine, &task->mErrorMsg, task->mStartPaused,
     9003                    rc = pConsole->teleporterTrg(pConsole->mpUVM, pMachine, &task->mErrorMsg, task->mStartPaused,
    90029004                                                 task->mProgress, &fPowerOffOnFailure);
    90039005                    if (FAILED(rc) && fPowerOffOnFailure)
    90049006                    {
    90059007                        ErrorInfoKeeper eik;
    9006                         int vrc2 = VMR3PowerOff(pVM); AssertLogRelRC(vrc2);
     9008                        int vrc2 = VMR3PowerOff(pConsole->mpUVM); AssertLogRelRC(vrc2);
    90079009#ifdef VBOX_WITH_EXTPACK
    90089010                        pConsole->mptrExtPackManager->callAllVmPowerOffHooks(pConsole, pVM);
     
    90659067#endif
    90669068                    if (RT_SUCCESS(vrc))
    9067                         vrc = VMR3PowerOn(pVM);
     9069                        vrc = VMR3PowerOn(pConsole->mpUVM);
    90689070                    AssertLogRelRC(vrc);
    90699071                }
     
    90959097                 */
    90969098                alock.release();
    9097                 VMR3AtErrorDeregister(pVM, Console::genericVMSetErrorCallback, &task->mErrorMsg);
     9099                VMR3AtErrorDeregister(pConsole->mpUVM, Console::genericVMSetErrorCallback, &task->mErrorMsg);
    90989100                /** @todo register another VMSetError callback? */
    90999101                alock.acquire();
     
    91969198 *
    91979199 * @param   pConsole      Reference to the console object.
    9198  * @param   pVM           The VM handle.
     9200 * @param   pUVM          The VM handle.
    91999201 * @param   lInstance     The instance of the controller.
    92009202 * @param   pcszDevice    The name of the controller type.
     
    92109212/* static */
    92119213DECLCALLBACK(int) Console::reconfigureMediumAttachment(Console *pConsole,
    9212                                                        PVM pVM,
     9214                                                       PUVM pUVM,
    92139215                                                       const char *pcszDevice,
    92149216                                                       unsigned uInstance,
     
    92239225                                                       HRESULT *phrc)
    92249226{
    9225     LogFlowFunc(("pVM=%p aMediumAtt=%p phrc=%p\n", pVM, aMediumAtt, phrc));
     9227    LogFlowFunc(("pUVM=%p aMediumAtt=%p phrc=%p\n", pUVM, aMediumAtt, phrc));
    92269228
    92279229    int             rc;
     
    92419243    /* Determine the base path for the device instance. */
    92429244    PCFGMNODE pCtlInst;
    9243     pCtlInst = CFGMR3GetChildF(CFGMR3GetRoot(pVM), "Devices/%s/%u/", pcszDevice, uInstance);
     9245    pCtlInst = CFGMR3GetChildF(CFGMR3GetRootU(pUVM), "Devices/%s/%u/", pcszDevice, uInstance);
    92449246    AssertReturn(pCtlInst, VERR_INTERNAL_ERROR);
    92459247
     
    92609262                                          false /* fForceUnmount */,
    92619263                                          false /* fHotplug */,
    9262                                           pVM,
     9264                                          pUVM,
    92639265                                          NULL /* paLedDevType */);
    92649266    /** @todo this dumps everything attached to this device instance, which
     
    93689370                alock.release();
    93699371                LogFlowFunc(("VMR3Save...\n"));
    9370                 vrc = VMR3Save(ptrVM,
     9372                vrc = VMR3Save(ptrVM.rawUVM(),
    93719373                               strSavedStateFile.c_str(),
    93729374                               true /*fContinueAfterwards*/,
     
    94499451                 * isn't going to need the Console lock.
    94509452                 */
    9451                 vrc = VMR3ReqCallWait(ptrVM,
    9452                                       VMCPUID_ANY,
    9453                                       (PFNRT)reconfigureMediumAttachment,
    9454                                       13,
    9455                                       that,
    9456                                       ptrVM.raw(),
    9457                                       pcszDevice,
    9458                                       lInstance,
    9459                                       enmBus,
    9460                                       fUseHostIOCache,
    9461                                       fBuiltinIOCache,
    9462                                       false /* fSetupMerge */,
    9463                                       0 /* uMergeSource */,
    9464                                       0 /* uMergeTarget */,
    9465                                       atts[i],
    9466                                       that->mMachineState,
    9467                                       &rc);
     9453                vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(),
     9454                                       VMCPUID_ANY,
     9455                                       (PFNRT)reconfigureMediumAttachment,
     9456                                       13,
     9457                                       that,
     9458                                       ptrVM.rawUVM(),
     9459                                       pcszDevice,
     9460                                       lInstance,
     9461                                       enmBus,
     9462                                       fUseHostIOCache,
     9463                                       fBuiltinIOCache,
     9464                                       false /* fSetupMerge */,
     9465                                       0 /* uMergeSource */,
     9466                                       0 /* uMergeTarget */,
     9467                                       atts[i],
     9468                                       that->mMachineState,
     9469                                       &rc);
    94689470                if (RT_FAILURE(vrc))
    94699471                    throw setErrorStatic(E_FAIL, Console::tr("%Rrc"), vrc);
     
    95229524                SafeVMPtr ptrVM(that);
    95239525                alock.release();
    9524                 int vrc = VMR3Resume(ptrVM);
     9526                int vrc = VMR3Resume(ptrVM.rawUVM());
    95259527                alock.acquire();
    95269528                if (RT_FAILURE(vrc))
     
    95809582                        SafeVMPtr ptrVM(that);
    95819583                        alock.release();
    9582                         int vrc = VMR3Resume(ptrVM); AssertLogRelRC(vrc);
     9584                        int vrc = VMR3Resume(ptrVM.rawUVM()); AssertLogRelRC(vrc);
    95839585                        alock.acquire();
    95849586                        if (RT_FAILURE(vrc))
     
    96409642
    96419643    bool fSuspenededBySave;
    9642     int vrc = VMR3Save(task->mpVM,
     9644    int vrc = VMR3Save(task->mpUVM,
    96439645                       task->mSavedStateFile.c_str(),
    96449646                       false, /*fContinueAfterwards*/
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r44191 r44340  
    707707int Console::configConstructorInner(PVM pVM, AutoWriteLock *pAlock)
    708708{
    709     VMMDev *pVMMDev = m_pVMMDev;
    710     Assert(pVMMDev);
    711 
     709    PUVM            pUVM      = VMR3GetUVM(pVM);
     710    VMMDev         *pVMMDev   = m_pVMMDev; Assert(pVMMDev);
    712711    ComPtr<IMachine> pMachine = machine();
    713712
     
    17951794                                            false /* fForceUnmount */,
    17961795                                            false /* fHotplug */,
    1797                                             pVM,
     1796                                            pUVM,
    17981797                                            paLedDevType);
    17991798                if (RT_FAILURE(rc))
     
    26592658         */
    26602659
    2661         rc = configGuestProperties(this, pVM);
     2660        rc = configGuestProperties(this, pUVM);
    26622661#endif /* VBOX_WITH_GUEST_PROPS defined */
    26632662
     
    28352834     * Register VM state change handler.
    28362835     */
    2837     int rc2 = VMR3AtStateRegister(pVM, Console::vmstateChangeCallback, this);
     2836    int rc2 = VMR3AtStateRegister(pUVM, Console::vmstateChangeCallback, this);
    28382837    AssertRC(rc2);
    28392838    if (RT_SUCCESS(rc))
     
    28432842     * Register VM runtime error handler.
    28442843     */
    2845     rc2 = VMR3AtRuntimeErrorRegister(pVM, Console::setVMRuntimeErrorCallback, this);
     2844    rc2 = VMR3AtRuntimeErrorRegister(pUVM, Console::setVMRuntimeErrorCallback, this);
    28462845    AssertRC(rc2);
    28472846    if (RT_SUCCESS(rc))
     
    31203119                                    bool fForceUnmount,
    31213120                                    bool fHotplug,
    3122                                     PVM pVM,
     3121                                    PUVM pUVM,
    31233122                                    DeviceType_T *paLedDevType)
    31243123{
     
    31583157                    /* Unmount existing media only for floppy and DVD drives. */
    31593158                    PPDMIBASE pBase;
    3160                     rc = PDMR3QueryLun(pVM, pcszDevice, uInstance, uLUN, &pBase);
     3159                    rc = PDMR3QueryLun(VMR3GetVM(pUVM), pcszDevice, uInstance, uLUN, &pBase);
    31613160                    if (RT_FAILURE(rc))
    31623161                    {
     
    31803179                }
    31813180
    3182                 rc = PDMR3DeviceDetach(pVM, pcszDevice, uInstance, uLUN, fHotplug ? 0 : PDM_TACH_FLAGS_NOT_HOT_PLUG);
     3181                rc = PDMR3DeviceDetach(VMR3GetVM(pUVM), pcszDevice, uInstance, uLUN, fHotplug ? 0 : PDM_TACH_FLAGS_NOT_HOT_PLUG);
    31833182                if (rc == VERR_PDM_NO_DRIVER_ATTACHED_TO_LUN)
    31843183                    rc = VINF_SUCCESS;
     
    32843283                    const char *pszUnit;
    32853284                    uint64_t u64Print = formatDiskSize((uint64_t)i64Size, &pszUnit);
    3286                     setVMRuntimeErrorCallbackF(pVM, this, 0,
     3285                    setVMRuntimeErrorCallbackF(VMR3GetVM(pUVM), this, 0,
    32873286                            "FatPartitionDetected",
    32883287                            N_("The medium '%ls' has a logical size of %RU64%s "
     
    33163315                            uint64_t u64PrintSiz = formatDiskSize((LONG64)i64Size, &pszUnitSiz);
    33173316                            uint64_t u64PrintMax = formatDiskSize(maxSize, &pszUnitMax);
    3318                             setVMRuntimeErrorCallbackF(pVM, this, 0,
     3317                            setVMRuntimeErrorCallbackF(VMR3GetVM(pUVM), this, 0,
    33193318                                    "FatPartitionDetected", /* <= not exact but ... */
    33203319                                    N_("The medium '%ls' has a logical size of %RU64%s "
     
    33403339                    const char *pszUnit;
    33413340                    uint64_t u64Print = formatDiskSize(i64Size, &pszUnit);
    3342                     setVMRuntimeErrorCallbackF(pVM, this, 0,
     3341                    setVMRuntimeErrorCallbackF(VMR3GetVM(pUVM), this, 0,
    33433342                            "FatPartitionDetected",
    33443343#ifdef RT_OS_WINDOWS
     
    33823381                        || enmFsTypeFile == RTFSTYPE_XFS)
    33833382                    {
    3384                         setVMRuntimeErrorCallbackF(pVM, this, 0,
     3383                        setVMRuntimeErrorCallbackF(VMR3GetVM(pUVM), this, 0,
    33853384                                "Ext4PartitionDetected",
    33863385                                N_("The host I/O cache for at least one controller is disabled "
     
    34003399                             && !mfSnapshotFolderExt4WarningShown)
    34013400                    {
    3402                         setVMRuntimeErrorCallbackF(pVM, this, 0,
     3401                        setVMRuntimeErrorCallbackF(VMR3GetVM(pUVM), this, 0,
    34033402                                "Ext4PartitionDetected",
    34043403                                N_("The host I/O cache for at least one controller is disabled "
     
    34753474        {
    34763475            /* Attach the new driver. */
    3477             rc = PDMR3DeviceAttach(pVM, pcszDevice, uInstance, uLUN,
    3478                                 fHotplug ? 0 : PDM_TACH_FLAGS_NOT_HOT_PLUG, NULL /*ppBase*/);
     3476            rc = PDMR3DeviceAttach(VMR3GetVM(pUVM), pcszDevice, uInstance, uLUN,
     3477                                   fHotplug ? 0 : PDM_TACH_FLAGS_NOT_HOT_PLUG, NULL /*ppBase*/);
    34793478            AssertRCReturn(rc, rc);
    34803479
     
    38493848        AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    38503849
    3851         PVM pVM = VMR3GetVM(mpUVM);     /* We're on an EMT, so this is safe. */
    3852 
    38533850        ComPtr<IMachine> pMachine = machine();
    38543851
     
    38753872        if (fAttachDetach)
    38763873        {
    3877             rc = PDMR3DeviceDetach(pVM, pszDevice, uInstance, uLun, 0 /*fFlags*/);
     3874            rc = PDMR3DeviceDetach(VMR3GetVM(mpUVM), pszDevice, uInstance, uLun, 0 /*fFlags*/);
    38783875            if (rc == VINF_PDM_NO_DRIVER_ATTACHED_TO_LUN)
    38793876                rc = VINF_SUCCESS;
     
    40814078                    {
    40824079                        case VERR_ACCESS_DENIED:
    4083                             return VMSetError(pVM, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,  N_(
     4080                            return VMSetError(VMR3GetVM(mpUVM), VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,  N_(
    40844081                                            "Failed to open '/dev/net/tun' for read/write access. Please check the "
    40854082                                            "permissions of that node. Either run 'chmod 0666 /dev/net/tun' or "
     
    40894086                        default:
    40904087                            AssertMsgFailed(("Could not attach to host interface! Bad!\n"));
    4091                             return VMSetError(pVM, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS, N_(
     4088                            return VMSetError(VMR3GetVM(mpUVM), VERR_HOSTIF_INIT_FAILED, RT_SRC_POS, N_(
    40924089                                            "Failed to initialize Host Interface Networking"));
    40934090                    }
     
    41324129//                     * hrc = aNetworkAdapter->Detach();                                   H();
    41334130//                     */
    4134 //                     return VMSetError(pVM, VERR_INTERNAL_ERROR, RT_SRC_POS,
     4131//                     return VMSetError(VMR3GetVM(mpUVM), VERR_INTERNAL_ERROR, RT_SRC_POS,
    41354132//                                       N_("Malformed host interface networking name '%ls'"),
    41364133//                                       BridgedIfName.raw());
     
    41684165                {
    41694166                    AssertLogRelMsgFailed(("NetworkAttachmentType_Bridged: FindByName failed, rc=%Rhrc (0x%x)", hrc, hrc));
    4170                     return VMSetError(pVM, VERR_INTERNAL_ERROR, RT_SRC_POS,
     4167                    return VMSetError(VMR3GetVM(mpUVM), VERR_INTERNAL_ERROR, RT_SRC_POS,
    41714168                                      N_("Nonexistent host networking interface, name '%ls'"),
    41724169                                      BridgedIfName.raw());
     
    41834180                if (eIfType != HostNetworkInterfaceType_Bridged)
    41844181                {
    4185                     return VMSetError(pVM, VERR_INTERNAL_ERROR, RT_SRC_POS,
     4182                    return VMSetError(VMR3GetVM(mpUVM), VERR_INTERNAL_ERROR, RT_SRC_POS,
    41864183                                      N_("Interface ('%ls') is not a Bridged Adapter interface"),
    41874184                                      BridgedIfName.raw());
     
    42804277                        {
    42814278                            case VERR_ACCESS_DENIED:
    4282                                 return VMSetError(pVM, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,  N_(
     4279                                return VMSetError(VMR3GetVM(mpUVM), VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,  N_(
    42834280                                                "Failed to open '/dev/%s' for read/write access.  Please check the "
    42844281                                                "permissions of that node, and that the net.link.tap.user_open "
     
    42884285                            default:
    42894286                                AssertMsgFailed(("Could not attach to tap interface! Bad!\n"));
    4290                                 return VMSetError(pVM, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS, N_(
     4287                                return VMSetError(VMR3GetVM(mpUVM), VERR_HOSTIF_INIT_FAILED, RT_SRC_POS, N_(
    42914288                                                "Failed to initialize Host Interface Networking"));
    42924289                        }
     
    43164313                        if (ioctl(iSock, SIOCGIFFLAGS, &Req) >= 0)
    43174314                            if ((Req.ifr_flags & IFF_UP) == 0)
    4318                                 setVMRuntimeErrorCallbackF(pVM, this, 0, "BridgedInterfaceDown",
     4315                                setVMRuntimeErrorCallbackF(VMR3GetVM(mpUVM), this, 0, "BridgedInterfaceDown",
    43194316                                                           "Bridged interface %s is down. Guest will not be able to use this interface",
    43204317                                                           pszBridgedIfName);
     
    45394536                {
    45404537                    LogRel(("NetworkAttachmentType_HostOnly: FindByName failed, rc (0x%x)\n", rc));
    4541                     return VMSetError(pVM, VERR_INTERNAL_ERROR, RT_SRC_POS,
     4538                    return VMSetError(VMR3GetVM(mpUVM), VERR_INTERNAL_ERROR, RT_SRC_POS,
    45424539                                      N_("Nonexistent host networking interface, name '%ls'"),
    45434540                                      HostOnlyName.raw());
     
    45644561
    45654562                if (eIfType != HostNetworkInterfaceType_HostOnly)
    4566                     return VMSetError(pVM, VERR_INTERNAL_ERROR, RT_SRC_POS,
     4563                    return VMSetError(VMR3GetVM(mpUVM), VERR_INTERNAL_ERROR, RT_SRC_POS,
    45674564                                      N_("Interface ('%ls') is not a Host-Only Adapter interface"),
    45684565                                      HostOnlyName.raw());
     
    47634760                    if (fAttachDetach)
    47644761                    {
    4765                         rc = PDMR3DriverAttach(pVM, pszDevice, uInstance, uLun, 0 /*fFlags*/, NULL /* ppBase */);
     4762                        rc = PDMR3DriverAttach(VMR3GetVM(mpUVM), pszDevice, uInstance, uLun, 0 /*fFlags*/, NULL /* ppBase */);
    47664763                        //AssertRC(rc);
    47674764                    }
     
    49154912 * the machine XML and set a couple of initial properties.
    49164913 */
    4917 /* static */ int Console::configGuestProperties(void *pvConsole, PVM pVM)
     4914/* static */ int Console::configGuestProperties(void *pvConsole, PUVM pUVM)
    49184915{
    49194916#ifdef VBOX_WITH_GUEST_PROPS
     
    49474944                PFNDBGFHANDLEREXT pfnHandler = (PFNDBGFHANDLEREXT)(uintptr_t)Params[0].u.pointer.addr;
    49484945                void *pService = (void*)Params[1].u.pointer.addr;
    4949                 DBGFR3InfoRegisterExternal(pVM, "guestprops", "Display the guest properties", pfnHandler, pService);
     4946                DBGFR3InfoRegisterExternal(VMR3GetVM(pUVM), "guestprops", "Display the guest properties", pfnHandler, pService);
    49504947            }
    49514948        }
  • trunk/src/VBox/Main/src-client/ConsoleImplTeleporter.cpp

    r40257 r44340  
    686686    RTSocketRetain(pState->mhSocket);
    687687    void *pvUser = static_cast<void *>(static_cast<TeleporterState *>(pState));
    688     vrc = VMR3Teleport(VMR3GetVM(pState->mpUVM),
     688    vrc = VMR3Teleport(pState->mpUVM,
    689689                       pState->mcMsMaxDowntime,
    690690                       &g_teleporterTcpOps,         pvUser,
     
    887887                        {
    888888                            autoLock.release();
    889                             int rc = VMR3Resume(VMR3GetVM(pState->mpUVM));
     889                            int rc = VMR3Resume(pState->mpUVM);
    890890                            AssertLogRelMsgRC(rc, ("VMR3Resume -> %Rrc\n", rc));
    891891                            autoLock.acquire();
     
    13381338                break;
    13391339
    1340             int vrc2 = VMR3AtErrorRegisterU(pState->mpUVM,
    1341                                             Console::genericVMSetErrorCallback, &pState->mErrorText); AssertRC(vrc2);
     1340            int vrc2 = VMR3AtErrorRegister(pState->mpUVM,
     1341                                           Console::genericVMSetErrorCallback, &pState->mErrorText); AssertRC(vrc2);
    13421342            RTSocketRetain(pState->mhSocket); /* For concurrent access by I/O thread and EMT. */
    13431343            pState->moffStream = 0;
    13441344
    13451345            void *pvUser2 = static_cast<void *>(static_cast<TeleporterState *>(pState));
    1346             vrc = VMR3LoadFromStream(VMR3GetVM(pState->mpUVM),
     1346            vrc = VMR3LoadFromStream(pState->mpUVM,
    13471347                                     &g_teleporterTcpOps, pvUser2,
    13481348                                     teleporterProgressCallback, pvUser2);
    13491349
    13501350            RTSocketRelease(pState->mhSocket);
    1351             vrc2 = VMR3AtErrorDeregister(VMR3GetVM(pState->mpUVM), Console::genericVMSetErrorCallback, &pState->mErrorText); AssertRC(vrc2);
     1351            vrc2 = VMR3AtErrorDeregister(pState->mpUVM, Console::genericVMSetErrorCallback, &pState->mErrorText); AssertRC(vrc2);
    13521352
    13531353            if (RT_FAILURE(vrc))
     
    14121412                {
    14131413                    if (!strcmp(szCmd, "hand-over-resume"))
    1414                         vrc = VMR3Resume(VMR3GetVM(pState->mpUVM));
     1414                        vrc = VMR3Resume(pState->mpUVM);
    14151415                    else
    14161416                        pState->mptrConsole->setMachineState(MachineState_Paused);
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r44130 r44340  
    223223    uint32_t cyPNG = 0;
    224224
    225     Console::SafeVMPtr pVM (that->mParent);
    226     if (SUCCEEDED(pVM.rc()))
     225    Console::SafeVMPtr ptrVM(that->mParent);
     226    if (ptrVM.isOk())
    227227    {
    228228        /* Query RGB bitmap. */
     
    264264    else
    265265    {
    266         LogFunc(("Failed to get VM pointer 0x%x\n", pVM.rc()));
     266        LogFunc(("Failed to get VM pointer 0x%x\n", ptrVM.rc()));
    267267    }
    268268
     
    859859        {
    860860            /* protect mpVM */
    861             Console::SafeVMPtr pVM (mParent);
    862             AssertComRC (pVM.rc());
    863 
    864             STAM_REG(pVM, &StatDisplayRefresh, STAMTYPE_PROFILE, "/PROF/Display/Refresh", STAMUNIT_TICKS_PER_CALL, "Time spent in EMT for display updates.");
     861            Console::SafeVMPtr ptrVM (mParent);
     862            AssertComRC (ptrVM.rc());
     863
     864            STAM_REG(ptrVM.raw(), &StatDisplayRefresh, STAMTYPE_PROFILE, "/PROF/Display/Refresh", STAMUNIT_TICKS_PER_CALL, "Time spent in EMT for display updates.");
    865865            stam = 1;
    866866        }
     
    20692069}
    20702070
    2071 STDMETHODIMP Display::SetFramebuffer (ULONG aScreenId,
    2072     IFramebuffer *aFramebuffer)
     2071STDMETHODIMP Display::SetFramebuffer(ULONG aScreenId, IFramebuffer *aFramebuffer)
    20732072{
    20742073    LogRelFlowFunc (("\n"));
     
    20782077
    20792078    AutoCaller autoCaller(this);
    2080     if (FAILED(autoCaller.rc())) return autoCaller.rc();
     2079    if (FAILED(autoCaller.rc()))
     2080        return autoCaller.rc();
    20812081
    20822082    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    20832083
    2084     Console::SafeVMPtrQuiet pVM (mParent);
    2085     if (pVM.isOk())
     2084    Console::SafeVMPtrQuiet ptrVM(mParent);
     2085    if (ptrVM.isOk())
    20862086    {
    20872087        /* Must release the lock here because the changeFramebuffer will
     
    20902090
    20912091        /* send request to the EMT thread */
    2092         int vrc = VMR3ReqCallWait (pVM, VMCPUID_ANY,
    2093                                    (PFNRT) changeFramebuffer, 3, this, aFramebuffer, aScreenId);
     2092        int vrc = VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY,
     2093                                   (PFNRT)changeFramebuffer, 3, this, aFramebuffer, aScreenId);
    20942094
    20952095        alock.acquire();
     
    23232323}
    23242324
    2325 static int displayTakeScreenshot(PVM pVM, Display *pDisplay, struct DRVMAINDISPLAY *pDrv, ULONG aScreenId, BYTE *address, ULONG width, ULONG height)
     2325static int displayTakeScreenshot(PUVM pUVM, Display *pDisplay, struct DRVMAINDISPLAY *pDrv, ULONG aScreenId,
     2326                                 BYTE *address, ULONG width, ULONG height)
    23262327{
    23272328    uint8_t *pu8Data = NULL;
     
    23382339                 it would be nice to have an accurate screenshot for the bug
    23392340                 report if the VM deadlocks. */
    2340         vrc = VMR3ReqPriorityCallWait(pVM, VMCPUID_ANY, (PFNRT)Display::displayTakeScreenshotEMT, 6,
    2341                                       pDisplay, aScreenId, &pu8Data, &cbData, &cx, &cy);
     2341        vrc = VMR3ReqPriorityCallWaitU(pUVM, VMCPUID_ANY, (PFNRT)Display::displayTakeScreenshotEMT, 6,
     2342                                       pDisplay, aScreenId, &pu8Data, &cbData, &cx, &cy);
    23422343        if (vrc != VERR_TRY_AGAIN)
    23432344        {
     
    24172418    CHECK_CONSOLE_DRV(mpDrv);
    24182419
    2419     Console::SafeVMPtr pVM(mParent);
    2420     if (FAILED(pVM.rc())) return pVM.rc();
     2420    Console::SafeVMPtr ptrVM(mParent);
     2421    if (!ptrVM.isOk())
     2422        return ptrVM.rc();
    24212423
    24222424    HRESULT rc = S_OK;
     
    24312433    alock.release();
    24322434
    2433     int vrc = displayTakeScreenshot(pVM, this, mpDrv, aScreenId, address, width, height);
     2435    int vrc = displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, address, width, height);
    24342436
    24352437    if (vrc == VERR_NOT_IMPLEMENTED)
     
    24692471    CHECK_CONSOLE_DRV(mpDrv);
    24702472
    2471     Console::SafeVMPtr pVM(mParent);
    2472     if (FAILED(pVM.rc())) return pVM.rc();
     2473    Console::SafeVMPtr ptrVM(mParent);
     2474    if (!ptrVM.isOk())
     2475        return ptrVM.rc();
    24732476
    24742477    HRESULT rc = S_OK;
     
    24892492        return E_OUTOFMEMORY;
    24902493
    2491     int vrc = displayTakeScreenshot(pVM, this, mpDrv, aScreenId, pu8Data, width, height);
     2494    int vrc = displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, pu8Data, width, height);
    24922495
    24932496    if (RT_SUCCESS(vrc))
     
    25452548    CHECK_CONSOLE_DRV(mpDrv);
    25462549
    2547     Console::SafeVMPtr pVM(mParent);
    2548     if (FAILED(pVM.rc())) return pVM.rc();
     2550    Console::SafeVMPtr ptrVM(mParent);
     2551    if (!ptrVM.isOk())
     2552        return ptrVM.rc();
    25492553
    25502554    HRESULT rc = S_OK;
     
    25652569        return E_OUTOFMEMORY;
    25662570
    2567     int vrc = displayTakeScreenshot(pVM, this, mpDrv, aScreenId, pu8Data, width, height);
     2571    int vrc = displayTakeScreenshot(ptrVM.rawUVM(), this, mpDrv, aScreenId, pu8Data, width, height);
    25682572
    25692573    if (RT_SUCCESS(vrc))
     
    27322736    CHECK_CONSOLE_DRV (mpDrv);
    27332737
    2734     Console::SafeVMPtr pVM(mParent);
    2735     if (FAILED(pVM.rc())) return pVM.rc();
     2738    Console::SafeVMPtr ptrVM(mParent);
     2739    if (!ptrVM.isOk())
     2740        return ptrVM.rc();
    27362741
    27372742    /* Release lock because the call scheduled on EMT may also try to take it. */
     
    27422747     * dirty conversion work.
    27432748     */
    2744     int rcVBox = VMR3ReqCallWait(pVM, VMCPUID_ANY, (PFNRT)Display::drawToScreenEMT, 7,
    2745                                  this, aScreenId, address, x, y, width, height);
     2749    int rcVBox = VMR3ReqCallWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::drawToScreenEMT, 7,
     2750                                  this, aScreenId, address, x, y, width, height);
    27462751
    27472752    /*
     
    28522857    CHECK_CONSOLE_DRV (mpDrv);
    28532858
    2854     Console::SafeVMPtr pVM(mParent);
    2855     if (FAILED(pVM.rc())) return pVM.rc();
     2859    Console::SafeVMPtr ptrVM(mParent);
     2860    if (!ptrVM.isOk())
     2861        return ptrVM.rc();
    28562862
    28572863    HRESULT rc = S_OK;
     
    28632869
    28642870    /* pdm.h says that this has to be called from the EMT thread */
    2865     int rcVBox = VMR3ReqCallVoidWait(pVM, VMCPUID_ANY, (PFNRT)Display::InvalidateAndUpdateEMT,
    2866                                      1, this);
     2871    int rcVBox = VMR3ReqCallVoidWaitU(ptrVM.rawUVM(), VMCPUID_ANY, (PFNRT)Display::InvalidateAndUpdateEMT,
     2872                                      1, this);
    28672873    alock.acquire();
    28682874
     
    29792985     *  time-critical method.
    29802986     */
    2981     Console::SafeVMPtrQuiet pVM (mParent);
    2982     if (pVM.isOk())
    2983         VM_ASSERT_EMT (pVM.raw());
     2987    Console::SafeVMPtrQuiet ptrVM (mParent);
     2988    if (ptrVM.isOk())
     2989        Assert(VM_IS_EMT(ptrVM.raw()));
    29842990#endif
    29852991
  • trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp

    r43387 r44340  
    2828#include <VBox/vmm/csam.h>
    2929#include <VBox/vmm/vm.h>
     30#include <VBox/vmm/uvm.h>
    3031#include <VBox/vmm/tm.h>
    3132#include <VBox/vmm/hm.h>
     
    826827
    827828/**
    828  * Hack for getting the VM handle.
     829 * Hack for getting the user mode VM handle (UVM).
    829830 *
    830831 * This is only temporary (promise) while prototyping the debugger.
     
    834835 *                      uintptr_t in COM, we're using the max integer.
    835836 *                      (No, ULONG is not pointer sized!)
    836  */
    837 STDMETHODIMP MachineDebugger::COMGETTER(VM)(LONG64 *a_u64Vm)
    838 {
    839     CheckComArgOutPointerValid(a_u64Vm);
     837 * @remarks The returned handle must be passed to VMR3ReleaseUVM()!
     838 * @remarks Prior to 4.3 this returned PVM.
     839 */
     840STDMETHODIMP MachineDebugger::COMGETTER(VM)(LONG64 *a_i64Vm)
     841{
     842    CheckComArgOutPointerValid(a_i64Vm);
    840843
    841844    AutoCaller autoCaller(this);
     
    848851        hrc = ptrVM.rc();
    849852        if (SUCCEEDED(hrc))
    850             *a_u64Vm = (intptr_t)ptrVM.raw();
     853        {
     854            VMR3RetainUVM(ptrVM.rawUVM());
     855            *a_i64Vm = (intptr_t)ptrVM.rawUVM();
     856        }
    851857
    852858        /*
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