Changeset 18046 in vbox
- Timestamp:
- Mar 17, 2009 10:30:35 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 44651
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/MM.cpp
r17547 r18046 605 605 if (RT_FAILURE(rc)) 606 606 return rc; 607 if (cPages != pVM->mm.s.cBasePages) 608 { 609 LogRel(("mmR3Load: Memory configuration has changed. cPages=%#RX64 saved=%#RX64\n", pVM->mm.s.cBasePages, cPages)); 610 return VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH; 611 } 607 #ifdef VBOX_WITH_NEW_PHYS_CODE 608 AssertLogRelMsgReturn(cPages <= pVM->mm.s.cBasePages, /* shadowed rom is counted twice, exact match here isn't really important. */ 609 ("Memory configuration has changed. cPages=%#RX64 saved=%#RX64\n", pVM->mm.s.cBasePages, cPages), 610 VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH); 611 #else 612 AssertLogRelMsgReturn(cPages == pVM->mm.s.cBasePages, 613 ("Memory configuration has changed. cPages=%#RX64 saved=%#RX64\n", pVM->mm.s.cBasePages, cPages), 614 VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH); 615 #endif 612 616 613 617 /* cbRamBase */ … … 622 626 if (RT_FAILURE(rc)) 623 627 return rc; 624 if (cb != pVM->mm.s.cbRamBase) 625 { 626 LogRel(("mmR3Load: Memory configuration has changed. cbRamBase=%#RX64 save=%#RX64\n", pVM->mm.s.cbRamBase, cb)); 627 return VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH; 628 } 628 AssertLogRelMsgReturn(cb == pVM->mm.s.cbRamBase, 629 ("Memory configuration has changed. cbRamBase=%#RX64 save=%#RX64\n", pVM->mm.s.cbRamBase, cb), 630 VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH); 629 631 630 632 /* (PGM restores the physical memory.) */ -
trunk/src/VBox/VMM/PGM.cpp
r17660 r18046 2338 2338 } 2339 2339 else 2340 { 2341 SSMR3PutU8(pSSM, uType); 2340 2342 rc = pgmR3SavePage(pVM, pSSM, pPage, GCPhysPage, pRam); 2343 } 2341 2344 if (RT_FAILURE(rc)) 2342 2345 break; … … 2447 2450 * Match up the type, dealing with MMIO2 aliases (dropped). 2448 2451 */ 2449 if ( PGM_PAGE_GET_TYPE(pPage) != uType 2450 && uType != PGMPAGETYPE_INVALID) 2451 { 2452 AssertLogRelMsgRCReturn(rc, ("pPage=%R[pgmpage] GCPhys=%#x %s\n", pPage, GCPhys, pRam->pszDesc), rc); 2453 return VERR_SSM_UNEXPECTED_DATA; 2454 } 2452 AssertLogRelMsgReturn( PGM_PAGE_GET_TYPE(pPage) == uType 2453 || uType == PGMPAGETYPE_INVALID, 2454 ("pPage=%R[pgmpage] GCPhys=%#x %s\n", pPage, GCPhys, pRam->pszDesc), 2455 VERR_SSM_UNEXPECTED_DATA); 2455 2456 2456 2457 /* … … 2481 2482 uint8_t uState; 2482 2483 int rc = SSMR3GetU8(pSSM, &uState); 2483 AssertLogRelMsgRCReturn(rc, ("pPage=%R[pgmpage] GCPhys=%#x %s \n", pPage, GCPhys, pRam->pszDesc), rc);2484 AssertLogRelMsgRCReturn(rc, ("pPage=%R[pgmpage] GCPhys=%#x %s rc=%Rrc\n", pPage, GCPhys, pRam->pszDesc, rc), rc); 2484 2485 if (uState == 0 /* zero */) 2485 2486 rc = pgmR3LoadPageZero(pVM, uType, pPage, GCPhys, pRam); … … 2488 2489 else 2489 2490 rc = VERR_INTERNAL_ERROR; 2490 AssertLogRelMsgRCReturn(rc, ("pPage=%R[pgmpage] uState=%d uType=%d GCPhys=% #x %s\n",2491 AssertLogRelMsgRCReturn(rc, ("pPage=%R[pgmpage] uState=%d uType=%d GCPhys=%RGp %s rc=%Rrc\n", 2491 2492 pPage, uState, uType, GCPhys, pRam->pszDesc), 2492 2493 rc); … … 2579 2580 if (RT_FAILURE(rc)) 2580 2581 return rc; 2581 if (cbRamSize != pPGM->cbRamSize)2582 return VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH;2582 AssertLogRelMsgReturn(cbRamSize == pPGM->cbRamSize, ("%#x != %#x\n", cbRamSize, pPGM->cbRamSize), 2583 VERR_SSM_LOAD_MEMORY_SIZE_MISMATCH); 2583 2584 SSMR3GetGCPhys(pSSM, &pPGM->GCPhysA20Mask); 2584 2585 … … 2720 2721 && ( u32Version != PGM_SAVED_STATE_VERSION_OLD_PHYS_CODE 2721 2722 || GCPhys != UINT32_C(0xfff80000) 2722 || GCPhysLast != UINT32_C(0xfff 80000)2723 || GCPhysLast != UINT32_C(0xffffffff) 2723 2724 || pRam->GCPhysLast != GCPhysLast 2724 2725 || pRam->GCPhys < GCPhys … … 2782 2783 * Old format. 2783 2784 */ 2784 AssertLogRelReturn( pVM->pgm.s.fRamPreAlloc, VERR_NOT_SUPPORTED); /* can't be detected. */2785 AssertLogRelReturn(!pVM->pgm.s.fRamPreAlloc, VERR_NOT_SUPPORTED); /* can't be detected. */ 2785 2786 2786 2787 /* Of the page flags, pick up MMIO2 and ROM/RESERVED for the !fHaveBits case. … … 2796 2797 2797 2798 /* Load the bits */ 2798 if (!fHaveBits) 2799 if ( !fHaveBits 2800 && GCPhysLast < UINT32_C(0xe0000000)) 2799 2801 { 2800 2802 /* 2801 2803 * Dynamic chunks. 2802 2804 */ 2803 const uint32_t cPagesInChunk = (1*1024*1024) >> PAGE_SHIFT; ;2805 const uint32_t cPagesInChunk = (1*1024*1024) >> PAGE_SHIFT; 2804 2806 AssertLogRelMsgReturn(cPages % cPagesInChunk == 0, 2805 2807 ("cPages=%#x cPagesInChunk=%#x\n", cPages, cPagesInChunk, pRam->GCPhys, pRam->pszDesc), … … 2811 2813 rc = SSMR3GetU8(pSSM, &fPresent); 2812 2814 AssertLogRelMsgRCReturn(rc, ("rc=%Rrc iPage=%#x GCPhys=%#x %s\n", rc, iPage, pRam->GCPhys, pRam->pszDesc), rc); 2813 AssertLogRelMsgReturn(fPresent == true || fPresent ==false,2815 AssertLogRelMsgReturn(fPresent == (uint8_t)true || fPresent == (uint8_t)false, 2814 2816 ("fPresent=%#x iPage=%#x GCPhys=%#x %s\n", fPresent, iPage, pRam->GCPhys, pRam->pszDesc), 2815 2817 VERR_SSM_DATA_UNIT_FORMAT_CHANGED); 2816 2818 2817 for ( i = 0; i < cPagesInChunk; i++, iPage++)2819 for (uint32_t iChunkPage = 0; iChunkPage < cPagesInChunk; iChunkPage++, iPage++) 2818 2820 { 2819 2821 RTGCPHYS const GCPhysPage = ((RTGCPHYS)iPage << PAGE_SHIFT) + pRam->GCPhys; 2820 2822 PPGMPAGE pPage = &pRam->aPages[iPage]; 2821 2823 if (fPresent) 2822 rc = pgmR3LoadPageBits(pVM, pSSM, PGMPAGETYPE_INVALID, pPage, GCPhysPage, pRam); 2824 { 2825 if (PGM_PAGE_GET_TYPE(pPage) == PGMPAGETYPE_MMIO) 2826 rc = pgmR3LoadPageToDevNull(pSSM); 2827 else 2828 rc = pgmR3LoadPageBits(pVM, pSSM, PGMPAGETYPE_INVALID, pPage, GCPhysPage, pRam); 2829 } 2823 2830 else 2824 2831 rc = pgmR3LoadPageZero(pVM, PGMPAGETYPE_INVALID, pPage, GCPhysPage, pRam); … … 2832 2839 * MMIO2. 2833 2840 */ 2834 AssertLogRelMsgReturn((fFlags & 0x0 3) == RT_BIT(3) /*MM_RAM_FLAGS_MMIO2*/,2841 AssertLogRelMsgReturn((fFlags & 0x0f) == RT_BIT(3) /*MM_RAM_FLAGS_MMIO2*/, 2835 2842 ("fFlags=%#x GCPhys=%#x %s\n", fFlags, pRam->GCPhys, pRam->pszDesc), 2836 2843 VERR_SSM_DATA_UNIT_FORMAT_CHANGED); … … 2841 2848 rc = SSMR3GetMem(pSSM, pRam->pvR3, pRam->cb); 2842 2849 AssertLogRelMsgRCReturn(rc, ("GCPhys=%#x %s\n", pRam->GCPhys, pRam->pszDesc), rc); 2850 } 2851 else if (GCPhysLast < UINT32_C(0xfff80000)) 2852 { 2853 /* 2854 * PCI MMIO, no pages saved. 2855 */ 2843 2856 } 2844 2857 else -
trunk/src/VBox/VMM/PGMInternal.h
r17910 r18046 2486 2486 RTGCPHYS GCPhysA20Mask; 2487 2487 /** A20 gate state - boolean! */ 2488 RTUINTfA20Enabled;2488 bool fA20Enabled; 2489 2489 2490 2490 /** What needs syncing (PGM_SYNC_*). -
trunk/src/VBox/VMM/PGMPhys.cpp
r17660 r18046 356 356 static void pgmR3PhysLinkRamRange(PVM pVM, PPGMRAMRANGE pNew, PPGMRAMRANGE pPrev) 357 357 { 358 AssertMsg(pNew->pszDesc, ("%RGp-%RGp\n", pNew->GCPhys, pNew->GCPhysLast)); 359 358 360 pgmLock(pVM); 359 361
Note:
See TracChangeset
for help on using the changeset viewer.