Changeset 65850 in vbox for trunk/src/VBox/Devices/EFI
- Timestamp:
- Feb 23, 2017 10:16:04 AM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 113619
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/DevEFI.cpp
r65714 r65850 191 191 /** Number of virtual CPUs. (Config) */ 192 192 uint32_t cCpus; 193 /** RAM below 4GB (in bytes). (Config) */194 uint32_t cbBelow4GB;195 /** RAM above 4GB (in bytes). (Config) */196 uint64_t cbAbove4GB;197 /** The total amount of memory. */198 uint64_t cbRam;199 /** The size of the RAM hole below 4GB. */200 uint64_t cbRamHole;201 193 202 194 /** The size of the DMI tables. */ … … 1744 1736 PDEVEFI pThis = PDMINS_2_DATA(pDevIns, PDEVEFI); 1745 1737 1738 PVM pVM = PDMDevHlpGetVM(pDevIns); 1739 uint64_t const cbRamSize = MMR3PhysGetRamSize(pVM); 1740 uint32_t const cbBelow4GB = MMR3PhysGetRamSizeBelow4GB(pVM); 1741 uint64_t const cbAbove4GB = MMR3PhysGetRamSizeAbove4GB(pVM); 1742 NOREF(cbAbove4GB); 1743 1746 1744 /* 1747 1745 * Memory sizes. 1748 1746 */ 1749 uint64_t const offRamHole = _4G - pThis->cbRamHole;1750 1747 uint32_t u32Low = 0; 1751 1748 uint32_t u32Chunks = 0; 1752 if ( pThis->cbRam> 16 * _1M)1753 { 1754 u32Low = (uint32_t)RT_MIN(RT_MIN(pThis->cbRam, offRamHole), UINT32_C(0xffe00000));1749 if (cbRamSize > 16 * _1M) 1750 { 1751 u32Low = RT_MIN(cbBelow4GB, UINT32_C(0xffe00000)); 1755 1752 u32Chunks = (u32Low - 16U * _1M) / _64K; 1756 1753 } … … 1758 1755 cmosWrite(pDevIns, 0x35, RT_BYTE2(u32Chunks)); 1759 1756 1760 if (u32Low < pThis->cbRam)1761 { 1762 uint64_t u64 = pThis->cbRam- u32Low;1757 if (u32Low < cbRamSize) 1758 { 1759 uint64_t u64 = cbRamSize - u32Low; 1763 1760 u32Chunks = (uint32_t)(u64 / _64K); 1764 1761 cmosWrite(pDevIns, 0x5b, RT_BYTE1(u32Chunks)); … … 2142 2139 if (!CFGMR3AreValuesValid(pCfg, 2143 2140 "EfiRom\0" 2144 "RamSize\0"2145 "RamHoleSize\0"2146 2141 "NumCPUs\0" 2147 2142 "UUID\0" … … 2221 2216 uuid.Gen.u16TimeHiAndVersion = RT_H2BE_U16(uuid.Gen.u16TimeHiAndVersion); 2222 2217 memcpy(&pThis->aUuid, &uuid, sizeof pThis->aUuid); 2223 2224 /*2225 * RAM sizes2226 */2227 rc = CFGMR3QueryU64(pCfg, "RamSize", &pThis->cbRam);2228 AssertLogRelRCReturn(rc, rc);2229 rc = CFGMR3QueryU64(pCfg, "RamHoleSize", &pThis->cbRamHole);2230 AssertLogRelRCReturn(rc, rc);2231 pThis->cbBelow4GB = RT_MIN(pThis->cbRam, _4G - pThis->cbRamHole);2232 pThis->cbAbove4GB = pThis->cbRam - pThis->cbBelow4GB;2233 2218 2234 2219 /*
Note:
See TracChangeset
for help on using the changeset viewer.