Changeset 108946 in vbox
- Timestamp:
- Apr 11, 2025 9:44:17 AM (4 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168457
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/include/VBox/gic.h ¶
r108877 r108946 723 723 /** @} */ 724 724 725 726 /** @name LPI configuration table entry. 727 * @{ */ 728 /** GITS LPI Configuration */ 729 /** GITS LPI CTE: Enable. */ 730 #define GITS_BF_LPI_CTE_ENABLE_SHIFT 0 731 #define GITS_BF_LPI_CTE_ENABLE_MASK UINT8_C(0x1) 732 /** GITS LPI CTE: Reserved (bit 1). */ 733 #define GITS_BF_LPI_CTE_RSVD_1_SHIFT 1 734 #define GITS_BF_LPI_CTE_RSVD_1_MASK UINT8_C(0x2) 735 /** GITS LPI CTE: Priority. */ 736 #define GITS_BF_LPI_CTE_PRIORITY_SHIFT 2 737 #define GITS_BF_LPI_CTE_PRIORITY_MASK UINT8_C(0xfc) 738 RT_BF_ASSERT_COMPILE_CHECKS(GITS_BF_LPI_CTE_, UINT8_C(0), UINT8_MAX, 739 (ENABLE, RSVD_1, PRIORITY)); 740 /** @} */ 741 725 742 #endif /* !VBOX_INCLUDED_gic_h */ 726 743 -
TabularUnified trunk/src/VBox/VMM/VMMAll/GICAll.cpp ¶
r108941 r108946 3110 3110 RT_ZERO(pGicDev->bmLpiPending); 3111 3111 pGicDev->uLpiConfigBaseReg.u = 0; 3112 pGicDev->uLpiPendingBaseReg.u = 0; 3112 3113 pGicDev->fEnableLpis = false; 3113 3114 } -
TabularUnified trunk/src/VBox/VMM/VMMAll/GITSAll.cpp ¶
r108941 r108946 180 180 181 181 182 #if 1183 182 static const char *gitsGetCommandName(uint8_t uCmdId) 184 183 { … … 210 209 } 211 210 } 212 #endif 213 214 215 static void gitsCmdQueueSetError(PPDMDEVINS pDevIns, PGITSDEV pGitsDev, GITSDIAG enmError, bool fStallQueue) 216 { 211 212 213 DECL_FORCE_INLINE(const char *) gitsGetDiagDescription(GITSDIAG enmDiag) 214 { 215 if (enmDiag < RT_ELEMENTS(g_apszGitsDiagDesc)) 216 return g_apszGitsDiagDesc[enmDiag]; 217 return "<Unknown>"; 218 } 219 220 221 static void gitsCmdQueueSetError(PPDMDEVINS pDevIns, PGITSDEV pGitsDev, GITSDIAG enmDiag, bool fStallQueue) 222 { 223 Log4Func(("enmDiag=%#RX32 (%s) fStallQueue=%RTbool\n", enmDiag, gitsGetDiagDescription(enmDiag))); 217 224 GITS_CRIT_SECT_ENTER(pDevIns); 218 225 219 226 /* Record the error and stall the queue. */ 220 pGitsDev->enmDiag = enm Error;227 pGitsDev->enmDiag = enmDiag; 221 228 pGitsDev->cCmdQueueErrors++; 222 229 if (fStallQueue) … … 258 265 static void gitsCmdQueueThreadWakeUpIfNeeded(PPDMDEVINS pDevIns, PGITSDEV pGitsDev) 259 266 { 267 Log4Func(("\n")); 260 268 Assert(GITS_CRIT_SECT_IS_OWNER(pDevIns)); 261 269 if ( gitsCmdQueueCanProcessRequests(pGitsDev) 262 270 && !gitsCmdQueueIsEmpty(pGitsDev)) 263 271 { 272 Log4Func(("Waking up command-queue thread\n")); 264 273 int const rc = PDMDevHlpSUPSemEventSignal(pDevIns, pGitsDev->hEvtCmdQueue); 265 274 AssertRC(rc); … … 294 303 295 304 case GITS_CTRL_REG_PIDR2_OFF: 296 {297 305 Assert(cb == 4); 298 306 Assert(pGitsDev->uArchRev <= GITS_CTRL_REG_PIDR2_ARCHREV_GICV4); 299 uint8_t const uIdCodeDes1 = GIC_JEDEC_JEP10_DES_1(GIC_JEDEC_JEP106_IDENTIFICATION_CODE); 300 uReg = RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_DES_1, uIdCodeDes1) 307 uReg = RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_DES_1, GIC_JEDEC_JEP10_DES_1(GIC_JEDEC_JEP106_IDENTIFICATION_CODE)) 301 308 | RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_JEDEC, 1) 302 309 | RT_BF_MAKE(GITS_BF_CTRL_REG_PIDR2_ARCHREV, pGitsDev->uArchRev); 303 310 break; 304 }305 311 306 312 case GITS_CTRL_REG_IIDR_OFF: … … 312 318 case GITS_CTRL_REG_TYPER_OFF: 313 319 case GITS_CTRL_REG_TYPER_OFF + 4: 314 {315 320 uReg = pGitsDev->uTypeReg.u >> ((offReg & 7) << 3 /* to bits */); 316 321 break; 317 }318 322 319 323 case GITS_CTRL_REG_CBASER_OFF: … … 361 365 Assert(cb == 8 || cb == 4); 362 366 Assert(!(offReg & 3)); 367 Log4Func(("offReg=%u uValue=%#RX64 cb=%u\n", offReg, uValue, cb)); 363 368 364 369 /* … … 435 440 Assert(cb == 8 || cb == 4); 436 441 Assert(!(offReg & 3)); 442 Log4Func(("offReg=%u uValue=%#RX64 cb=%u\n", offReg, uValue, cb)); 437 443 AssertReleaseMsgFailed(("offReg=%#x uValue=%#RX64 [%u-bit]\n", offReg, uValue, cb << 3)); 438 444 } … … 496 502 /* Basic info, GITS_CTLR and GITS_TYPER. */ 497 503 { 498 GITSDIAG const enmDiag = pGitsDev->enmDiag; 499 const char *const pszDiag = enmDiag < RT_ELEMENTS(g_apszGitsDiagDesc) ? g_apszGitsDiagDesc[enmDiag] : "(Unknown)"; 500 uint32_t const uCtrlReg = pGitsDev->uCtrlReg; 504 uint32_t const uCtrlReg = pGitsDev->uCtrlReg; 505 GITSDIAG const enmDiag = pGitsDev->enmDiag; 501 506 pHlp->pfnPrintf(pHlp, " uArchRev = %u\n", pGitsDev->uArchRev); 502 pHlp->pfnPrintf(pHlp, " Errors= %RU64\n", pGitsDev->cCmdQueueErrors);503 pHlp->pfnPrintf(pHlp, " Diagnostic = %#RX32 (%s)\n", enmDiag, pszDiag);507 pHlp->pfnPrintf(pHlp, " Cmd queue errors = %RU64\n", pGitsDev->cCmdQueueErrors); 508 pHlp->pfnPrintf(pHlp, " Last error = %#RX32 (%s)\n", enmDiag, gitsGetDiagDescription(enmDiag)); 504 509 pHlp->pfnPrintf(pHlp, " GITS_CTLR = %#RX32\n", uCtrlReg); 505 510 pHlp->pfnPrintf(pHlp, " Enabled = %RTbool\n", RT_BF_GET(uCtrlReg, GITS_BF_CTRL_REG_CTLR_ENABLED)); … … 584 589 DECL_HIDDEN_CALLBACK(int) gitsR3CmdQueueProcess(PPDMDEVINS pDevIns, PGITSDEV pGitsDev, void *pvBuf, uint32_t cbBuf) 585 590 { 591 Log4Func(("cbBuf=%RU32\n", cbBuf)); 592 586 593 /* Hold the critical section as we could be accessing the device state simultaneously with MMIO accesses. */ 587 594 GITS_CRIT_SECT_ENTER(pDevIns); … … 710 717 DECL_HIDDEN_CALLBACK(int) gitsSendMsi(PVMCC pVM, PCIBDF uBusDevFn, PCMSIMSG pMsi, uint32_t uEventId, uint32_t uTagSrc) 711 718 { 719 Log4Func(("uBusDevFn=%#RX32 uEventId=%#RX32\n", uBusDevFn, uEventId)); 712 720 RT_NOREF(pVM, uBusDevFn, pMsi, uEventId, uTagSrc); 713 721 return VERR_NOT_IMPLEMENTED; -
TabularUnified trunk/src/VBox/VMM/VMMR3/GICR3.cpp ¶
r108941 r108946 52 52 *********************************************************************************************************************************/ 53 53 /** GIC saved state version. */ 54 #define GIC_SAVED_STATE_VERSION 854 #define GIC_SAVED_STATE_VERSION 9 55 55 56 56 # define GIC_SYSREGRANGE(a_uFirst, a_uLast, a_szName) \ … … 341 341 pHlp->pfnPrintf(pHlp, " Outer cache = %#x\n", RT_BF_GET(uReg, GIC_BF_REDIST_REG_PROPBASER_OUTER_CACHE)); 342 342 } 343 344 /* */ 345 { 346 347 } 343 348 /** @todo Dump LPI config and LPI pending registers. */ 344 349 } … … 462 467 pHlp->pfnSSMPutMem(pSSM, &pGicDev->bmIntrRoutingMode[0], sizeof(pGicDev->bmIntrRoutingMode)); 463 468 469 /* LPI state. */ 464 470 /* We store the size followed by the data because we currently do not support the full LPI range. */ 465 471 pHlp->pfnSSMPutU32(pSSM, sizeof(pGicDev->abLpiConfig)); … … 467 473 pHlp->pfnSSMPutU32(pSSM, sizeof(pGicDev->bmLpiPending)); 468 474 pHlp->pfnSSMPutMem(pSSM, &pGicDev->bmLpiPending[0], sizeof(pGicDev->bmLpiPending)); 475 pHlp->pfnSSMPutU64(pSSM, pGicDev->uLpiConfigBaseReg.u); 476 pHlp->pfnSSMPutU64(pSSM, pGicDev->uLpiPendingBaseReg.u); 477 pHlp->pfnSSMPutBool(pSSM, pGicDev->fEnableLpis); 469 478 470 479 /** @todo GITS data. */ … … 578 587 cbData, sizeof(pGicDev->bmLpiPending)); 579 588 } 589 pHlp->pfnSSMGetU64(pSSM, &pGicDev->uLpiConfigBaseReg.u); 590 pHlp->pfnSSMGetU64(pSSM, &pGicDev->uLpiPendingBaseReg.u); 591 pHlp->pfnSSMGetBool(pSSM, &pGicDev->fEnableLpis); 580 592 581 593 /** @todo GITS data. */ -
TabularUnified trunk/src/VBox/VMM/include/GICInternal.h ¶
r108882 r108946 170 170 typedef GICDEV const *PCGICDEV; 171 171 AssertCompileMemberSizeAlignment(GICDEV, Gits, 8); 172 AssertCompileMemberAlignment(GICDEV, abLpiConfig, 8); 173 AssertCompileMemberAlignment(GICDEV, hMmioDist, 8); 172 174 173 175 /**
Note:
See TracChangeset
for help on using the changeset viewer.