Changeset 52530 in vbox
- Timestamp:
- Aug 29, 2014 3:17:52 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95783
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Bus/DevPciIch9.cpp
r51485 r52530 608 608 int iIrq, int iLevel, uint32_t uTagSrc) 609 609 { 610 611 if (PCIDevIsIntxDisabled(pPciDev)) 612 { 613 if (MsiIsEnabled(pPciDev)) 614 { 615 LogFlowFunc(("PCI Dev %p : MSI\n", pPciDev)); 616 PPDMDEVINS pDevIns = pGlobals->aPciBus.CTX_SUFF(pDevIns); 617 MsiNotify(pDevIns, pGlobals->aPciBus.CTX_SUFF(pPciHlp), pPciDev, iIrq, iLevel, uTagSrc); 618 } 619 620 if (MsixIsEnabled(pPciDev)) 621 { 622 LogFlowFunc(("PCI Dev %p : MSI-X\n", pPciDev)); 623 PPDMDEVINS pDevIns = pGlobals->aPciBus.CTX_SUFF(pDevIns); 624 MsixNotify(pDevIns, pGlobals->aPciBus.CTX_SUFF(pPciHlp), pPciDev, iIrq, iLevel, uTagSrc); 625 } 610 /* If MSI or MSI-X is enabled, PCI INTx# signals are disabled regardless of the PCI command 611 * register interrupt bit state. 612 * PCI 3.0 (section 6.8) forbids MSI and MSI-X to be enabled at the same time and makes 613 * that undefined behavior. We check for MSI first, then MSI-X. 614 */ 615 if (MsiIsEnabled(pPciDev)) 616 { 617 Assert(!MsixIsEnabled(pPciDev)); /* Not allowed -- see note above. */ 618 LogFlowFunc(("PCI Dev %p : MSI\n", pPciDev)); 619 PPDMDEVINS pDevIns = pGlobals->aPciBus.CTX_SUFF(pDevIns); 620 MsiNotify(pDevIns, pGlobals->aPciBus.CTX_SUFF(pPciHlp), pPciDev, iIrq, iLevel, uTagSrc); 621 return; 622 } 623 624 if (MsixIsEnabled(pPciDev)) 625 { 626 LogFlowFunc(("PCI Dev %p : MSI-X\n", pPciDev)); 627 PPDMDEVINS pDevIns = pGlobals->aPciBus.CTX_SUFF(pDevIns); 628 MsixNotify(pDevIns, pGlobals->aPciBus.CTX_SUFF(pPciHlp), pPciDev, iIrq, iLevel, uTagSrc); 626 629 return; 627 630 }
Note:
See TracChangeset
for help on using the changeset viewer.