- Timestamp:
- May 20, 2021 2:05:41 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/iommu-intel.h
r89001 r89201 1555 1555 1556 1556 /** Invalidation Queue Error Information. */ 1557 typedef enum VTD _IQEI_T1557 typedef enum VTDIQEI 1558 1558 { 1559 kIqei_InfoNotAvailable = 0,1560 kIqei_InvalidTailPointer,1561 kIqei_FetchDescriptorError,1562 kIqei_InvalidDescriptorType,1563 kIqei_RsvdFieldViolation,1564 kIqei_InvalidDescriptorWidth,1565 kIqei_QueueTailNotAligned,1566 kIqei_InvalidTtm1567 } VTD _IQEI_T;1559 VTDIQEI_INFO_NOT_AVAILABLE, 1560 VTDIQEI_INVALID_TAIL_PTR, 1561 VTDIQEI_FETCH_DESCRIPTOR_ERR, 1562 VTDIQEI_INVALID_DESCRIPTOR_TYPE, 1563 VTDIQEI_RSVD_FIELD_VIOLATION, 1564 VTDIQEI_INVALID_DESCRIPTOR_WIDTH, 1565 VTDIQEI_QUEUE_TAIL_MISALIGNED, 1566 VTDIQEI_INVALID_TTM 1567 } VTDIQEI; 1568 1568 /** @} */ 1569 1569 … … 2298 2298 * In accordance with the Intel spec. 2299 2299 * @{ */ 2300 typedef enum VTD _IR_FAULT_T2300 typedef enum VTDINTRFAULT 2301 2301 { 2302 2302 /** Reserved bits invalid in remappable interrupt. */ 2303 kIrf_Remappable_Intr_Rsvd= 0x20,2303 VTDINTRFAULT_REMAPPABLE_INTR_RSVD = 0x20, 2304 2304 /** Interrupt index for remappable interrupt exceeds table size or referenced 2305 2305 * address above host address width (HAW) */ 2306 kIrf_Intr_Index_Invalid= 0x21,2306 VTDINTRFAULT_INTR_INDEX_INVALID = 0x21, 2307 2307 /** The IRTE is not present. */ 2308 kIrf_Irte_Not_Present= 0x22,2308 VTDINTRFAULT_IRTE_NOT_PRESENT = 0x22, 2309 2309 /** Reading IRTE from memory failed. */ 2310 kIrf_Irte_Read_Failed= 0x23,2310 VTDINTRFAULT_IRTE_READ_FAILED = 0x23, 2311 2311 /** IRTE reserved bits invalid for an IRTE with Present bit set. */ 2312 kIrf_Irte_Present_Rsvd= 0x24,2313 /** Compatibility format interrupt (CFI) blocked due to EIME isenabled or CFIs2314 * disabled. */2315 kIrf_Cfi_Blocked= 0x25,2312 VTDINTRFAULT_IRTE_PRESENT_RSVD = 0x24, 2313 /** Compatibility format interrupt (CFI) blocked due to EIME being enabled or CFIs 2314 * were disabled. */ 2315 VTDINTRFAULT_CFI_BLOCKED = 0x25, 2316 2316 /** IRTE SID, SVT, SQ bits invalid for an IRTE with Present bit set. */ 2317 kIrf_Irte_Present_Invalid= 0x26,2317 VTDINTRFAULT_IRTE_PRESENT_INVALID = 0x26, 2318 2318 /** Reading posted interrupt descriptor (PID) failed. */ 2319 kIrf_Pid_Read_Failed= 0x27,2319 VTDINTRFAULT_PID_READ_FAILED = 0x27, 2320 2320 /** PID reserved bits invalid. */ 2321 kIrf_Pid_Rsvd= 0x28,2321 VTDINTRFAULT_PID_RSVD = 0x28, 2322 2322 /** Untranslated interrupt requested (without PASID) is invalid. */ 2323 kIrf_Ir_Without_Pasid_Invalid = 0x29 2324 } VTD_IR_FAULT_T; 2323 VTDINTRFAULT_IR_WITHOUT_PASID_INVALID = 0x29 2324 } VTDINTRFAULT; 2325 /** @} */ 2326 2327 2328 /** @name Address Translation Fault Conditions. 2329 * In accordance with the Intel spec. 2330 * @{ */ 2331 typedef enum VTDADDRFAULT 2332 { 2333 /* Legacy root table faults (LRT). */ 2334 VTDADDRFAULT_LRT_1 = 0x8, 2335 VTDADDRFAULT_LRT_2 = 0x1, 2336 VTDADDRFAULT_LRT_3 = 0xa, 2337 2338 /* Legacy Context-Table Faults (LCT). */ 2339 VTDADDRFAULT_LCT_1 = 0x9, 2340 VTDADDRFAULT_LCT_2 = 0x2, 2341 VTDADDRFAULT_LCT_3 = 0xb, 2342 VTDADDRFAULT_LCT_4_0 = 0x3, 2343 VTDADDRFAULT_LCT_4_1 = 0x3, 2344 VTDADDRFAULT_LCT_4_2 = 0x3, 2345 VTDADDRFAULT_LCT_4_3 = 0x3, 2346 VTDADDRFAULT_LCT_5 = 0xd, 2347 2348 /* Legacy Second-Level Table Faults (LSL). */ 2349 VTDADDRFAULT_LSL_1 = 0x7, 2350 VTDADDRFAULT_LSL_2 = 0xc, 2351 2352 /* Legacy General Faults (LGN). */ 2353 VTDADDRFAULT_LGN_1_0 = 0x4, 2354 VTDADDRFAULT_LGN_1_1 = 0x4, 2355 VTDADDRFAULT_LGN_1_2 = 0x4, 2356 VTDADDRFAULT_LGN_1_3 = 0x4, 2357 VTDADDRFAULT_LGN_2 = 0x5, 2358 VTDADDRFAULT_LGN_3 = 0x6, 2359 VTDADDRFAULT_LGN_4 = 0xe, 2360 2361 /* Root-Table Address Register Faults (RTA). */ 2362 VTDADDRFAULT_RTA_1_0 = 0x30, 2363 VTDADDRFAULT_RTA_1_1 = 0x30, 2364 VTDADDRFAULT_RTA_1_2 = 0x30, 2365 VTDADDRFAULT_RTA_1_3 = 0x30, 2366 VTDADDRFAULT_RTA_2 = 0x31, 2367 VTDADDRFAULT_RTA_3 = 0x32, 2368 VTDADDRFAULT_RTA_4 = 0x33, 2369 2370 /* Scalable-Mode Root-Table Faults (SRT). */ 2371 VTDADDRFAULT_SRT_1 = 0x38, 2372 VTDADDRFAULT_SRT_2 = 0x39, 2373 VTDADDRFAULT_SRT_3 = 0x3a, 2374 2375 /* Scalable-Mode Context-Table Faults (SCT). */ 2376 VTDADDRFAULT_SCT_1 = 0x40, 2377 VTDADDRFAULT_SCT_2 = 0x41, 2378 VTDADDRFAULT_SCT_3 = 0x42, 2379 VTDADDRFAULT_SCT_4_0 = 0x43, 2380 VTDADDRFAULT_SCT_4_1 = 0x43, 2381 VTDADDRFAULT_SCT_4_2 = 0x43, 2382 VTDADDRFAULT_SCT_5 = 0x44, 2383 VTDADDRFAULT_SCT_6 = 0x45, 2384 VTDADDRFAULT_SCT_7 = 0x46, 2385 VTDADDRFAULT_SCT_8 = 0x47, 2386 VTDADDRFAULT_SCT_9 = 0x48, 2387 2388 /* Scalable-Mode PASID-Directory Faults (SPD). */ 2389 VTDADDRFAULT_SPD_1 = 0x50, 2390 VTDADDRFAULT_SPD_2 = 0x51, 2391 VTDADDRFAULT_SPD_3 = 0x52, 2392 2393 /* Scalable-Mode PASID-Table Faults (SPT). */ 2394 VTDADDRFAULT_SPT_1 = 0x58, 2395 VTDADDRFAULT_SPT_2 = 0x59, 2396 VTDADDRFAULT_SPT_3 = 0x5a, 2397 VTDADDRFAULT_SPT_4_0 = 0x5b, 2398 VTDADDRFAULT_SPT_4_1 = 0x5b, 2399 VTDADDRFAULT_SPT_4_2 = 0x5b, 2400 VTDADDRFAULT_SPT_4_3 = 0x5b, 2401 VTDADDRFAULT_SPT_4_4 = 0x5b, 2402 VTDADDRFAULT_SPT_5 = 0x5c, 2403 VTDADDRFAULT_SPT_6 = 0x5d, 2404 2405 /* Scalable-Mode First-Level Table Faults (SFL). */ 2406 VTDADDRFAULT_SFL_1 = 0x70, 2407 VTDADDRFAULT_SFL_2 = 0x71, 2408 VTDADDRFAULT_SFL_3 = 0x72, 2409 VTDADDRFAULT_SFL_4 = 0x73, 2410 VTDADDRFAULT_SFL_5 = 0x74, 2411 VTDADDRFAULT_SFL_6 = 0x75, 2412 VTDADDRFAULT_SFL_7 = 0x76, 2413 VTDADDRFAULT_SFL_8 = 0x77, 2414 VTDADDRFAULT_SFL_9 = 0x90, 2415 VTDADDRFAULT_SFL_10 = 0x91, 2416 2417 /* Scalable-Mode Second-Level Table Faults (SSL). */ 2418 VTDADDRFAULT_SSL_1 = 0x78, 2419 VTDADDRFAULT_SSL_2 = 0x79, 2420 VTDADDRFAULT_SSL_3 = 0x7a, 2421 VTDADDRFAULT_SSL_4 = 0x7b, 2422 VTDADDRFAULT_SSL_5 = 0x7c, 2423 VTDADDRFAULT_SSL_6 = 0x7d, 2424 2425 /* Scalable-Mode General Faults (SGN). */ 2426 VTDADDRFAULT_SGN_1 = 0x80, 2427 VTDADDRFAULT_SGN_2 = 0x81, 2428 VTDADDRFAULT_SGN_3 = 0x82, 2429 VTDADDRFAULT_SGN_4_0 = 0x83, 2430 VTDADDRFAULT_SGN_4_1 = 0x83, 2431 VTDADDRFAULT_SGN_4_2 = 0x83, 2432 VTDADDRFAULT_SGN_5 = 0x84, 2433 VTDADDRFAULT_SGN_6 = 0x85, 2434 VTDADDRFAULT_SGN_7 = 0x86, 2435 VTDADDRFAULT_SGN_8 = 0x87, 2436 VTDADDRFAULT_SGN_9 = 0x88, 2437 VTDADDRFAULT_SGN_10 = 0x89 2438 } VTDATFAULT; 2325 2439 /** @} */ 2326 2440 -
trunk/src/VBox/Devices/Bus/DevIommuIntel.cpp
r89195 r89201 661 661 * 662 662 * @returns @c true if qualified, @c false otherwise. 663 * @param enmI rFaultThe interrupt remapping fault condition.664 */ 665 static bool vtdIrFaultIsQualified(VTD _IR_FAULT_T enmIrFault)666 { 667 switch (enmI rFault)668 { 669 case kIrf_Irte_Not_Present:670 case kIrf_Irte_Present_Rsvd:671 case kIrf_Irte_Present_Invalid:672 case kIrf_Pid_Read_Failed:673 case kIrf_Pid_Rsvd:663 * @param enmIntrFault The interrupt remapping fault condition. 664 */ 665 static bool vtdIrFaultIsQualified(VTDINTRFAULT enmIntrFault) 666 { 667 switch (enmIntrFault) 668 { 669 case VTDINTRFAULT_IRTE_NOT_PRESENT: 670 case VTDINTRFAULT_IRTE_PRESENT_RSVD: 671 case VTDINTRFAULT_IRTE_PRESENT_INVALID: 672 case VTDINTRFAULT_PID_READ_FAILED: 673 case VTDINTRFAULT_PID_RSVD: 674 674 return true; 675 675 default: … … 1239 1239 * Records an interrupt request fault. 1240 1240 * 1241 * @param pDevIns The IOMMU device instance.1242 * @param enmDiag The diagnostic reason.1243 * @param enmI rFaultThe interrupt fault reason.1244 * @param idDevice The device ID (bus, device, function).1245 * @param idxIntr The interrupt index.1246 */ 1247 static void dmarIrFaultRecord(PPDMDEVINS pDevIns, DMARDIAG enmDiag, VTD _IR_FAULT_T enmIrFault, uint16_t idDevice,1241 * @param pDevIns The IOMMU device instance. 1242 * @param enmDiag The diagnostic reason. 1243 * @param enmIntrFault The interrupt fault reason. 1244 * @param idDevice The device ID (bus, device, function). 1245 * @param idxIntr The interrupt index. 1246 */ 1247 static void dmarIrFaultRecord(PPDMDEVINS pDevIns, DMARDIAG enmDiag, VTDINTRFAULT enmIntrFault, uint16_t idDevice, 1248 1248 uint16_t idxIntr) 1249 1249 { … … 1263 1263 /* Update the fault recording registers with the fault information. */ 1264 1264 uint64_t const uFrcdHi = RT_BF_MAKE(VTD_BF_1_FRCD_REG_SID, idDevice) 1265 | RT_BF_MAKE(VTD_BF_1_FRCD_REG_FR, enmI rFault)1265 | RT_BF_MAKE(VTD_BF_1_FRCD_REG_FR, enmIntrFault) 1266 1266 | RT_BF_MAKE(VTD_BF_1_FRCD_REG_F, 1); 1267 1267 uint64_t const uFrcdLo = (uint64_t)idxIntr << 48; … … 1286 1286 * in the IRTE. 1287 1287 * 1288 * @param pDevIns The IOMMU device instance.1289 * @param enmDiag The diagnostic reason.1290 * @param enmI rFaultThe interrupt fault reason.1291 * @param idDevice The device ID (bus, device, function).1292 * @param idxIntr The interrupt index.1293 * @param pIrte The IRTE that caused this fault.1294 */ 1295 static void dmarIrFaultRecordQualified(PPDMDEVINS pDevIns, DMARDIAG enmDiag, VTD _IR_FAULT_T enmIrFault, uint16_t idDevice,1288 * @param pDevIns The IOMMU device instance. 1289 * @param enmDiag The diagnostic reason. 1290 * @param enmIntrFault The interrupt fault reason. 1291 * @param idDevice The device ID (bus, device, function). 1292 * @param idxIntr The interrupt index. 1293 * @param pIrte The IRTE that caused this fault. 1294 */ 1295 static void dmarIrFaultRecordQualified(PPDMDEVINS pDevIns, DMARDIAG enmDiag, VTDINTRFAULT enmIntrFault, uint16_t idDevice, 1296 1296 uint16_t idxIntr, PCVTD_IRTE_T pIrte) 1297 1297 { 1298 Assert(vtdIrFaultIsQualified(enmI rFault));1298 Assert(vtdIrFaultIsQualified(enmIntrFault)); 1299 1299 Assert(pIrte); 1300 1300 if (!(pIrte->au64[0] & VTD_BF_0_IRTE_FPD_MASK)) 1301 return dmarIrFaultRecord(pDevIns, enmDiag, enmI rFault, idDevice, idxIntr);1301 return dmarIrFaultRecord(pDevIns, enmDiag, enmIntrFault, idDevice, idxIntr); 1302 1302 } 1303 1303 … … 1310 1310 * @param enmDiag The diagnostic reason. 1311 1311 */ 1312 static void dmarIqeFaultRecord(PPDMDEVINS pDevIns, DMARDIAG enmDiag, VTD _IQEI_TenmIqei)1312 static void dmarIqeFaultRecord(PPDMDEVINS pDevIns, DMARDIAG enmDiag, VTDIQEI enmIqei) 1313 1313 { 1314 1314 PDMAR pThis = PDMDEVINS_2_DATA(pDevIns, PDMAR); … … 1539 1539 /* Hardware treats bit 4 as RsvdZ in this situation, so clear it. */ 1540 1540 dmarRegChangeRaw32(pThis, offReg, ~RT_BIT(4), 0 /* fOrMask */); 1541 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqtReg_Qt_NotAligned, kIqei_QueueTailNotAligned);1541 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqtReg_Qt_NotAligned, VTDIQEI_QUEUE_TAIL_MISALIGNED); 1542 1542 } 1543 1543 return VINF_SUCCESS; … … 1570 1570 { /* likely */ } 1571 1571 else 1572 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqaReg_Dw_256_Invalid, kIqei_InvalidDescriptorWidth);1572 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqaReg_Dw_256_Invalid, VTDIQEI_INVALID_DESCRIPTOR_WIDTH); 1573 1573 } 1574 1574 /* else: 128-bit descriptor width is validated lazily, see explanation in dmarR3InvQueueProcessRequests. */ … … 1701 1701 1702 1702 DMAR_LOCK(pDevIns, pThisCC); 1703 uint32_t const uGstsReg = dmarRegReadRaw32(pThis, VTD_MMIO_OFF_GSTS_REG); 1703 uint32_t const uGstsReg = dmarRegReadRaw32(pThis, VTD_MMIO_OFF_GSTS_REG); 1704 uint64_t const uRtaddrReg = pThis->uRtaddrReg; 1704 1705 DMAR_UNLOCK(pDevIns, pThisCC); 1706 1705 1707 1706 1708 if (uGstsReg & VTD_BF_GSTS_REG_TES_MASK) … … 1710 1712 else 1711 1713 STAM_COUNTER_INC(&pThis->CTX_SUFF_Z(StatMemWrite)); 1714 1715 uint8_t const fTtm = RT_BF_GET(uRtaddrReg, VTD_BF_RTADDR_REG_TTM); 1716 switch (fTtm) 1717 { 1718 case VTD_TTM_LEGACY_MODE: 1719 case VTD_TTM_ABORT_DMA_MODE: 1720 { 1721 if (pThis->fExtCapReg & VTD_BF_ECAP_REG_ADMS_MASK) 1722 { 1723 1724 } 1725 } 1726 } 1712 1727 1713 1728 return VERR_NOT_IMPLEMENTED; … … 1884 1899 return VINF_SUCCESS; 1885 1900 } 1886 dmarIrFaultRecordQualified(pDevIns, kDmarDiag_Ir_Rfi_Irte_Mode_Invalid, kIrf_Irte_Present_Rsvd,1887 idDevice, idxIntr, &Irte);1901 dmarIrFaultRecordQualified(pDevIns, kDmarDiag_Ir_Rfi_Irte_Mode_Invalid, 1902 VTDINTRFAULT_IRTE_PRESENT_RSVD, idDevice, idxIntr, &Irte); 1888 1903 } 1889 1904 else 1890 dmarIrFaultRecordQualified(pDevIns, enmIrDiag, kIrf_Irte_Present_Rsvd, idDevice, idxIntr, &Irte); 1905 dmarIrFaultRecordQualified(pDevIns, enmIrDiag, VTDINTRFAULT_IRTE_PRESENT_RSVD, idDevice, idxIntr, 1906 &Irte); 1891 1907 } 1892 1908 else 1893 dmarIrFaultRecordQualified(pDevIns, kDmarDiag_Ir_Rfi_Irte_Rsvd, kIrf_Irte_Present_Rsvd, idDevice,1909 dmarIrFaultRecordQualified(pDevIns, kDmarDiag_Ir_Rfi_Irte_Rsvd, VTDINTRFAULT_IRTE_PRESENT_RSVD, idDevice, 1894 1910 idxIntr, &Irte); 1895 1911 } 1896 1912 else 1897 dmarIrFaultRecordQualified(pDevIns, kDmarDiag_Ir_Rfi_Irte_Not_Present, kIrf_Irte_Not_Present, idDevice,1898 id xIntr, &Irte);1913 dmarIrFaultRecordQualified(pDevIns, kDmarDiag_Ir_Rfi_Irte_Not_Present, VTDINTRFAULT_IRTE_NOT_PRESENT, 1914 idDevice, idxIntr, &Irte); 1899 1915 } 1900 1916 else 1901 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Rfi_Irte_Read_Failed, kIrf_Irte_Read_Failed, idDevice, idxIntr);1917 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Rfi_Irte_Read_Failed, VTDINTRFAULT_IRTE_READ_FAILED, idDevice, idxIntr); 1902 1918 } 1903 1919 else 1904 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Rfi_Intr_Index_Invalid, kIrf_Intr_Index_Invalid, idDevice, idxIntr);1920 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Rfi_Intr_Index_Invalid, VTDINTRFAULT_INTR_INDEX_INVALID, idDevice, idxIntr); 1905 1921 } 1906 1922 else 1907 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Rfi_Rsvd, kIrf_Remappable_Intr_Rsvd, idDevice, 0 /* idxIntr */);1923 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Rfi_Rsvd, VTDINTRFAULT_REMAPPABLE_INTR_RSVD, idDevice, 0 /* idxIntr */); 1908 1924 return VERR_IOMMU_INTR_REMAP_DENIED; 1909 1925 } … … 1949 1965 || !(uGstsReg & VTD_BF_GSTS_REG_CFIS_MASK)) 1950 1966 { 1951 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Cfi_Blocked, kIrf_Cfi_Blocked, idDevice, 0 /* idxIntr */);1967 dmarIrFaultRecord(pDevIns, kDmarDiag_Ir_Cfi_Blocked, VTDINTRFAULT_CFI_BLOCKED, idDevice, 0 /* idxIntr */); 1952 1968 return VERR_IOMMU_INTR_REMAP_DENIED; 1953 1969 } … … 2147 2163 { /* likely */ } 2148 2164 else 2149 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_IqaReg_Dw_128_Invalid, kIqei_InvalidDescriptorWidth);2165 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_IqaReg_Dw_128_Invalid, VTDIQEI_INVALID_DESCRIPTOR_WIDTH); 2150 2166 #endif 2151 2167 … … 2169 2185 { /* likely */ } 2170 2186 else 2171 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Inv_Wait_Dsc_Invalid, kIqei_InvalidDescriptorType);2187 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Inv_Wait_Dsc_Invalid, VTDIQEI_INVALID_DESCRIPTOR_TYPE); 2172 2188 2173 2189 /* Validate reserved bits. */ … … 2179 2195 { /* likely */ } 2180 2196 else 2181 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Inv_Wait_Dsc_0_1_Rsvd, kIqei_RsvdFieldViolation);2197 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Inv_Wait_Dsc_0_1_Rsvd, VTDIQEI_RSVD_FIELD_VIOLATION); 2182 2198 2183 2199 if (fDw == VTD_IQA_REG_DW_256_BIT) … … 2187 2203 { /* likely */ } 2188 2204 else 2189 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Inv_Wait_Dsc_2_3_Rsvd, kIqei_RsvdFieldViolation);2205 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Inv_Wait_Dsc_2_3_Rsvd, VTDIQEI_RSVD_FIELD_VIOLATION); 2190 2206 } 2191 2207 … … 2224 2240 /* Stop processing further requests. */ 2225 2241 LogFunc(("Invalid descriptor type: %#x\n", fDscType)); 2226 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Dsc_Type_Invalid, kIqei_InvalidDescriptorType);2242 DMAR_IQE_FAULT_RECORD_RET(kDmarDiag_Iqei_Dsc_Type_Invalid, VTDIQEI_INVALID_DESCRIPTOR_TYPE); 2227 2243 } 2228 2244 } … … 2366 2382 } 2367 2383 else 2368 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqaReg_Dsc_Fetch_Error, kIqei_FetchDescriptorError);2384 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqaReg_Dsc_Fetch_Error, VTDIQEI_FETCH_DESCRIPTOR_ERR); 2369 2385 } 2370 2386 else 2371 2387 { 2372 2388 if (fTtm == VTD_TTM_RSVD) 2373 dmarIqeFaultRecord(pDevIns, kDmarDiag_Iqei_Ttm_Rsvd, kIqei_InvalidTtm);2389 dmarIqeFaultRecord(pDevIns, kDmarDiag_Iqei_Ttm_Rsvd, VTDIQEI_INVALID_TTM); 2374 2390 else 2375 2391 { 2376 2392 Assert(offQueueTail >= cbQueue); 2377 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqtReg_Qt_Invalid, kIqei_InvalidTailPointer);2393 dmarIqeFaultRecord(pDevIns, kDmarDiag_IqtReg_Qt_Invalid, VTDIQEI_INVALID_TAIL_PTR); 2378 2394 } 2379 2395 }
Note:
See TracChangeset
for help on using the changeset viewer.