VirtualBox

Changeset 59272 in vbox


Ignore:
Timestamp:
Jan 6, 2016 10:23:56 PM (9 years ago)
Author:
vboxsync
Message:

HDA: More SSM fixes; (optional) release logging.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevIchHda.cpp

    r59262 r59272  
    36313631    Assert(uPass == SSM_PASS_FINAL); NOREF(uPass);
    36323632
    3633     LogFlowFunc(("uVersion=%RU32, uPass=0x%x\n", uVersion, uPass));
     3633    LogRel2(("hdaLoadExec: uVersion=%RU32, uPass=0x%x\n", uVersion, uPass));
    36343634
    36353635    /*
     
    37433743            /* Output */
    37443744            rc = hdaStreamInit(pThis, &pThis->StrmStOut,    4 /* Stream number, hardcoded */);
    3745             AssertRCBreak(rc);
     3745            if (RT_FAILURE(rc))
     3746                break;
    37463747            HDA_SSM_LOAD_BDLE_STATE_PRE_V5(uVersion, (   pThis->StrmStOut.State.cBDLE
    37473748                                                      ? &pThis->StrmStOut.State.paBDLE[0].State : &StateBDLEDummy));
    37483749            /* Microphone-In */
    37493750            rc = hdaStreamInit(pThis, &pThis->StrmStMicIn,  2 /* Stream number, hardcoded */);
    3750             AssertRCBreak(rc);
     3751            if (RT_FAILURE(rc))
     3752                break;
    37513753            HDA_SSM_LOAD_BDLE_STATE_PRE_V5(uVersion, (   pThis->StrmStMicIn.State.cBDLE
    37523754                                                      ? &pThis->StrmStMicIn.State.paBDLE[0].State : &StateBDLEDummy));
    37533755            /* Line-In */
    37543756            rc = hdaStreamInit(pThis, &pThis->StrmStLineIn, 0 /* Stream number, hardcoded */);
    3755             AssertRCBreak(rc);
     3757            if (RT_FAILURE(rc))
     3758                break;
    37563759            HDA_SSM_LOAD_BDLE_STATE_PRE_V5(uVersion, (  pThis->StrmStLineIn.State.cBDLE
    37573760                                                      ? &pThis->StrmStLineIn.State.paBDLE[0].State : &StateBDLEDummy));
     
    37653768            uint32_t cStreams;
    37663769            rc = SSMR3GetU32(pSSM, &cStreams);
    3767             AssertRCBreak(rc);
     3770            if (RT_FAILURE(rc))
     3771                break;
     3772
     3773            LogRel2(("hdaLoadExec: cStreams=%RU32\n", cStreams));
    37683774
    37693775            /* Load stream states. */
     
    37723778                uint8_t uStreamID;
    37733779                rc = SSMR3GetU8(pSSM, &uStreamID);
    3774                 AssertRCBreak(rc);
     3780                if (RT_FAILURE(rc))
     3781                    break;
    37753782
    37763783                PHDASTREAM pStrm;
     
    37983805                RT_BZERO(pStrm, sizeof(HDASTREAM));
    37993806                rc = SSMR3GetStructEx(pSSM, &pStrm->State, sizeof(HDASTREAMSTATE), 0 /* fFlags */, g_aSSMStreamStateFields5, NULL);
    3800                 AssertRCBreak(rc);
     3807                if (RT_FAILURE(rc))
     3808                    break;
    38013809
    38023810                rc = hdaStreamInit(pThis, pStrm, uStreamID);
    3803                 AssertRCBreak(rc);
     3811                if (RT_FAILURE(rc))
     3812                {
     3813                    LogRel(("HDA: Stream #%RU32: Inititialization of stream (ID=%RU8, cBDLE=%RU32) failed, rc=%Rrc\n", i, uStreamID, pStrm->State.cBDLE, rc));
     3814                    break;
     3815                }
    38043816
    38053817                /* Load BDLE states. */
     
    38083820                for (uint32_t a = 0; a < pStrm->State.cBDLE; a++)
    38093821                {
    3810                     /* v5 did not save the BDLE state correctly, so skip. */
    3811                     pState = uVersion == HDA_SSM_VERSION_5
    3812                            ? &StateDummy : &pStrm->State.paBDLE[a].State;
    3813 
    3814                     rc = SSMR3GetStructEx(pSSM, pState, sizeof(HDABDLESTATE),
    3815                                           0 /* fFlags */, g_aSSMBDLEStateFields5, NULL);
    3816                     AssertRCBreak(rc);
     3822                    if (uVersion == HDA_SSM_VERSION_5)
     3823                    {
     3824                        /* v5 saved the entire HDABDLE struct instead of only HDABDLESTATE,
     3825                         * so skip. */
     3826                        rc = SSMR3Skip(pSSM, 0x120 /* sizeof(HDABLDE) in v5 */);
     3827                    }
     3828                    else
     3829                    {
     3830                        rc = SSMR3GetStructEx(pSSM, &pStrm->State.paBDLE[a].State, sizeof(HDABDLESTATE),
     3831                                              0 /* fFlags */, g_aSSMBDLEStateFields5, NULL);
     3832                    }
     3833                    if (RT_FAILURE(rc))
     3834                        break;
    38173835                }
    38183836
     
    38393857#ifdef VBOX_WITH_HDA_MIC_IN
    38403858        bool fEnableMicIn = RT_BOOL(HDA_SDCTL(pThis, 2 /** @todo Use a define. */) & HDA_REG_FIELD_FLAG_MASK(SDCTL, RUN));
    3841 #else
    3842         bool fEnableMicIn = fEnableIn; /* Mic In == Line In */
    38433859#endif
    38443860        bool fEnableOut   = RT_BOOL(HDA_SDCTL(pThis, 4 /** @todo Use a define. */) & HDA_REG_FIELD_FLAG_MASK(SDCTL, RUN));
     
    38503866            if (RT_FAILURE(rc))
    38513867                break;
     3868#ifdef VBOX_WITH_HDA_MIC_IN
    38523869            rc = pDrv->pConnector->pfnEnableIn(pDrv->pConnector, pDrv->MicIn.pStrmIn, fEnableMicIn);
    38533870            if (RT_FAILURE(rc))
    38543871                break;
     3872#endif
    38553873            rc = pDrv->pConnector->pfnEnableOut(pDrv->pConnector, pDrv->Out.pStrmOut, fEnableOut);
    38563874            if (RT_FAILURE(rc))
     
    38633881        pThis->u64CORBBase = RT_MAKE_U64(HDA_REG(pThis, CORBLBASE), HDA_REG(pThis, CORBUBASE));
    38643882        pThis->u64RIRBBase = RT_MAKE_U64(HDA_REG(pThis, RIRBLBASE), HDA_REG(pThis, RIRBUBASE));
    3865         pThis->u64DPBase   = RT_MAKE_U64(HDA_REG(pThis, DPLBASE), HDA_REG(pThis, DPUBASE));
     3883        pThis->u64DPBase   = RT_MAKE_U64(HDA_REG(pThis, DPLBASE),   HDA_REG(pThis, DPUBASE));
    38663884    }
    38673885    else
     
    41064124    {
    41074125        pDrv->pConnector->pfnEnableIn(pDrv->pConnector, pDrv->LineIn.pStrmIn, false /* Disable */);
     4126#ifdef VBOX_WITH_HDA_MIC_IN
    41084127        /* Ignore rc. */
    41094128        pDrv->pConnector->pfnEnableIn(pDrv->pConnector, pDrv->MicIn.pStrmIn, false /* Disable */);
     4129#endif
    41104130        /* Ditto. */
    41114131        pDrv->pConnector->pfnEnableOut(pDrv->pConnector, pDrv->Out.pStrmOut, false /* Disable */);
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