Changeset 108946 in vbox for trunk/src/VBox/VMM/VMMAll/GITSAll.cpp
- Timestamp:
- Apr 11, 2025 9:44:17 AM (4 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168457
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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;
Note:
See TracChangeset
for help on using the changeset viewer.