Changeset 109206 in vbox for trunk/src/VBox/VMM/VMMAll/GITSAll.cpp
- Timestamp:
- May 8, 2025 12:02:48 PM (11 days ago)
- svn:sync-xref-src-repo-rev:
- 168783
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/GITSAll.cpp
r109205 r109206 37 37 #include <VBox/vmm/pdmdev.h> 38 38 #include <VBox/vmm/dbgf.h> 39 #include <VBox/vmm/vm.h> /* pVM->cCpus */ 39 40 #include <iprt/errcore.h> /* VINF_SUCCESS */ 40 41 #include <iprt/string.h> /* RT_ZERO */ … … 68 69 69 70 /* Command queue: INVALL. */ 71 GITSDIAG_DESC(CmdQueue_Cmd_Invall_Cte_Unmapped), 70 72 GITSDIAG_DESC(CmdQueue_Cmd_Invall_Icid_Invalid), 71 73 … … 940 942 case GITS_CMD_ID_INV: 941 943 { 942 uint64_t const uReg = pGitsDev->aItsTableRegs[0].u; 943 AssertMsgFailed(("aItsTableRegs[0].u=%#RX64 (%#RGp %#RGp) Valid=%RTbool\n", uReg, 944 uReg & GITS_BF_CTRL_REG_BASER_PHYS_ADDR_MASK, gitsGetBaseRegPhysAddr(uReg), 945 RT_BOOL(RT_BF_GET(uReg, GITS_BF_CTRL_REG_BASER_VALID)))); 946 NOREF(uReg); 944 /* Reading the table is likely to take the same time as reading just one entry. */ 945 gicDistReadLpiConfigTableFromMem(pDevIns); 947 946 break; 948 947 } … … 958 957 uint64_t const uDw2 = pCmd->au64[2].u; 959 958 uint16_t const uIcId = RT_BF_GET(uDw2, GITS_BF_CMD_INVALL_DW2_IC_ID); 960 if (RT_LIKELY(uIcId < RT_ELEMENTS(pGitsDev->aCtes))) 961 gicDistReadLpiConfigTableFromMem(pDevIns); 959 PCVMCC pVM = PDMDevHlpGetVM(pDevIns); 960 if (uIcId < RT_ELEMENTS(pGitsDev->aCtes)) 961 { 962 if (pGitsDev->aCtes[uIcId].idTargetCpu < pVM->cCpus) 963 gicDistReadLpiConfigTableFromMem(pDevIns); 964 else 965 gitsCmdQueueSetError(pDevIns, pGitsDev, kGitsDiag_CmdQueue_Cmd_Invall_Cte_Unmapped, 966 false /* fStall */); 967 } 962 968 else 963 969 gitsCmdQueueSetError(pDevIns, pGitsDev, kGitsDiag_CmdQueue_Cmd_Invall_Icid_Invalid,
Note:
See TracChangeset
for help on using the changeset viewer.