Changeset 108724 in vbox for trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
- Timestamp:
- Mar 24, 2025 6:53:21 PM (3 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168147
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r108481 r108724 75 75 #include <iprt/path.h> 76 76 #include <iprt/string.h> 77 #include <iprt/system.h> 77 78 #include <iprt/env.h> 78 79 #include <iprt/rand.h> … … 551 552 552 553 /* fake the GIP. */ 553 g_pSUPGlobalInfoPage = (PSUPGLOBALINFOPAGE)RTMemPageAllocZ( PAGE_SIZE);554 g_pSUPGlobalInfoPage = (PSUPGLOBALINFOPAGE)RTMemPageAllocZ(SUP_PAGE_SIZE); 554 555 if (g_pSUPGlobalInfoPage) 555 556 { 556 557 g_pSUPGlobalInfoPageR0 = g_pSUPGlobalInfoPage; 557 g_HCPhysSUPGlobalInfoPage = NIL_RTHCPHYS & ~(RTHCPHYS) PAGE_OFFSET_MASK;558 g_HCPhysSUPGlobalInfoPage = NIL_RTHCPHYS & ~(RTHCPHYS)SUP_PAGE_OFFSET_MASK; 558 559 /* the page is supposed to be invalid, so don't set the magic. */ 559 560 return VINF_SUCCESS; … … 1002 1003 SUPR3DECL(int) supR3PageLock(void *pvStart, size_t cPages, PSUPPAGE paPages) 1003 1004 { 1005 uint32_t const cbPage = SUP_PAGE_SIZE; 1006 1004 1007 /* 1005 1008 * Validate. 1006 1009 */ 1007 1010 AssertPtr(pvStart); 1008 AssertMsg(RT_ALIGN_P(pvStart, PAGE_SIZE) == pvStart, ("pvStart (%p) must be page aligned\n", pvStart));1011 AssertMsg(RT_ALIGN_P(pvStart, cbPage) == pvStart, ("pvStart (%p) must be page aligned\n", pvStart)); 1009 1012 AssertPtr(paPages); 1010 1013 … … 1012 1015 if (RT_UNLIKELY(g_uSupFakeMode)) 1013 1016 { 1014 RTHCPHYS Phys = (uintptr_t)pvStart + PAGE_SIZE* 1024;1017 RTHCPHYS Phys = (uintptr_t)pvStart + cbPage * 1024; 1015 1018 size_t iPage = cPages; 1016 1019 while (iPage-- > 0) 1017 paPages[iPage].Phys = Phys + (iPage << PAGE_SHIFT);1020 paPages[iPage].Phys = Phys + (iPage << SUP_PAGE_SHIFT); 1018 1021 return VINF_SUCCESS; 1019 1022 } … … 1068 1071 */ 1069 1072 AssertPtr(pvStart); 1070 AssertMsg(RT_ALIGN_P(pvStart, PAGE_SIZE) == pvStart, ("pvStart (%p) must be page aligned\n", pvStart));1073 AssertMsg(RT_ALIGN_P(pvStart, SUP_PAGE_SIZE) == pvStart, ("pvStart (%p) must be page aligned\n", pvStart)); 1071 1074 1072 1075 /* fake */ … … 1117 1120 1118 1121 1122 #ifdef VBOX_WITH_R0_MODULES 1119 1123 /** 1120 1124 * Fallback for SUPR3PageAllocEx on systems where RTR0MemObjPhysAllocNC isn't … … 1135 1139 return rc; 1136 1140 } 1141 #endif /* VBOX_WITH_R0_MODULES */ 1137 1142 1138 1143 … … 1148 1153 *pR0Ptr = NIL_RTR0PTR; 1149 1154 AssertPtrNullReturn(paPages, VERR_INVALID_POINTER); 1150 AssertMsgReturn(cPages > 0 && cPages <= VBOX_MAX_ALLOC_ PAGE_COUNT, ("cPages=%zu\n", cPages), VERR_PAGE_COUNT_OUT_OF_RANGE);1155 AssertMsgReturn(cPages > 0 && cPages <= VBOX_MAX_ALLOC_SIZE / SUP_PAGE_SIZE, ("cPages=%zu\n", cPages), VERR_PAGE_COUNT_OUT_OF_RANGE); 1151 1156 AssertReturn(!fFlags, VERR_INVALID_FLAGS); 1152 1157 … … 1157 1162 { 1158 1163 int rc = SUPR3PageAlloc(cPages, 0 /*fFlags*/, ppvPages); 1159 Assert(RT_FAILURE(rc) || ASMMemIsZero(*ppvPages, cPages << PAGE_SHIFT));1164 Assert(RT_FAILURE(rc) || ASMMemIsZero(*ppvPages, cPages << SUP_PAGE_SHIFT)); 1160 1165 if (pR0Ptr) 1161 1166 *pR0Ptr = NIL_RTR0PTR; … … 1176 1181 return VERR_WRONG_ORDER; 1177 1182 1183 #ifdef VBOX_WITH_R0_MODULES 1178 1184 /* 1179 1185 * Use fallback for non-R0 mapping? … … 1240 1246 rc = VERR_NO_TMP_MEMORY; 1241 1247 return rc; 1242 1243 } 1244 1245 1248 #else 1249 AssertFailedReturn(VERR_NOT_SUPPORTED); 1250 #endif /* VBOX_WITH_R0_MODULES */ 1251 } 1252 1253 1254 #ifdef VBOX_WITH_R0_MODULES 1246 1255 SUPR3DECL(int) SUPR3PageMapKernel(void *pvR3, uint32_t off, uint32_t cb, uint32_t fFlags, PRTR0PTR pR0Ptr) 1247 1256 { … … 1282 1291 return rc; 1283 1292 } 1293 #endif 1284 1294 1285 1295 … … 1290 1300 */ 1291 1301 AssertPtrReturn(pvR3, VERR_INVALID_POINTER); 1292 Assert(!(off & PAGE_OFFSET_MASK));1293 Assert(!(cb & PAGE_OFFSET_MASK) && cb);1302 Assert(!(off & SUP_PAGE_OFFSET_MASK)); 1303 Assert(!(cb & SUP_PAGE_OFFSET_MASK) && cb); 1294 1304 AssertReturn(!(fProt & ~(RTMEM_PROT_NONE | RTMEM_PROT_READ | RTMEM_PROT_WRITE | RTMEM_PROT_EXEC)), VERR_INVALID_PARAMETER); 1295 1305 … … 1476 1486 if (RT_UNLIKELY(g_uSupFakeMode)) 1477 1487 { 1478 *ppvPages = RTMemPageAllocZ((size_t)cPages * PAGE_SIZE);1488 *ppvPages = RTMemPageAllocZ((size_t)cPages * SUP_PAGE_SIZE); 1479 1489 if (!*ppvPages) 1480 1490 return VERR_NO_LOW_MEMORY; 1481 1491 1482 1492 /* fake physical addresses. */ 1483 RTHCPHYS Phys = (uintptr_t)*ppvPages + PAGE_SIZE * 1024;1493 RTHCPHYS Phys = (uintptr_t)*ppvPages + SUP_PAGE_SIZE * 1024; 1484 1494 size_t iPage = cPages; 1485 1495 while (iPage-- > 0) 1486 paPages[iPage].Phys = Phys + (iPage << PAGE_SHIFT);1496 paPages[iPage].Phys = Phys + (iPage << SUP_PAGE_SHIFT); 1487 1497 return VINF_SUCCESS; 1488 1498 } … … 1544 1554 if (RT_UNLIKELY(g_uSupFakeMode)) 1545 1555 { 1546 RTMemPageFree(pv, cPages * PAGE_SIZE);1556 RTMemPageFree(pv, cPages * SUP_PAGE_SIZE); 1547 1557 return VINF_SUCCESS; 1548 1558 }
Note:
See TracChangeset
for help on using the changeset viewer.