- Timestamp:
- Jun 6, 2020 10:01:54 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pdmdev.h
r84677 r84714 417 417 typedef PDMDEVREGR3 const *PCPDMDEVREGR3; 418 418 /** Current DEVREGR3 version number. */ 419 #define PDM_DEVREGR3_VERSION PDM_VERSION_MAKE(0xffff, 4, 0)419 #define PDM_DEVREGR3_VERSION PDM_VERSION_MAKE(0xffff, 5, 0) 420 420 421 421 … … 641 641 typedef PDMDEVREGR0 const *PCPDMDEVREGR0; 642 642 /** Current DEVREGR0 version number. */ 643 #define PDM_DEVREGR0_VERSION PDM_VERSION_MAKE(0xff80, 1, 0)643 #define PDM_DEVREGR0_VERSION PDM_VERSION_MAKE(0xff80, 2, 0) 644 644 645 645 … … 711 711 typedef PDMDEVREGRC const *PCPDMDEVREGRC; 712 712 /** Current DEVREGRC version number. */ 713 #define PDM_DEVREGRC_VERSION PDM_VERSION_MAKE(0xff81, 1, 0)713 #define PDM_DEVREGRC_VERSION PDM_VERSION_MAKE(0xff81, 2, 0) 714 714 715 715 … … 3380 3380 3381 3381 /** 3382 * Send an MSI straight to the I/O APIC.3383 *3384 * @param pDevIns PCI device instance.3385 * @param GCPhys Physical address MSI request was written.3386 * @param uValue Value written.3387 * @thread Any thread, but will involve the emulation thread.3388 */3389 DECLR3CALLBACKMEMBER(void, pfnIoApicSendMsi,(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue));3390 3391 /**3392 3382 * Attaches a driver (chain) to the device. 3393 3383 * … … 4471 4461 4472 4462 /** 4473 * Send an MSI straight to the I/O APIC.4474 *4475 * @param pDevIns PCI device instance.4476 * @param GCPhys Physical address MSI request was written.4477 * @param uValue Value written.4478 * @thread Any thread, but will involve the emulation thread.4479 */4480 DECLRCCALLBACKMEMBER(void, pfnIoApicSendMsi,(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue));4481 4482 /**4483 4463 * Read physical memory. 4484 4464 * … … 4919 4899 */ 4920 4900 DECLR0CALLBACKMEMBER(void, pfnISASetIrq,(PPDMDEVINS pDevIns, int iIrq, int iLevel)); 4921 4922 /**4923 * Send an MSI straight to the I/O APIC.4924 *4925 * @param pDevIns PCI device instance.4926 * @param GCPhys Physical address MSI request was written.4927 * @param uValue Value written.4928 * @thread Any thread, but will involve the emulation thread.4929 */4930 DECLR0CALLBACKMEMBER(void, pfnIoApicSendMsi,(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue));4931 4901 4932 4902 /** … … 7290 7260 } 7291 7261 7292 /**7293 * @copydoc PDMDEVHLPR3::pfnIoApicSendMsi7294 */7295 DECLINLINE(void) PDMDevHlpIoApicSendMsi(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue)7296 {7297 pDevIns->CTX_SUFF(pHlp)->pfnIoApicSendMsi(pDevIns, GCPhys, uValue);7298 }7299 7300 7262 #ifdef IN_RING3 7301 7263 -
trunk/src/VBox/VMM/VMMR0/PDMR0DevHlp.cpp
r84678 r84714 312 312 313 313 314 /** @interface_method_impl{PDMDEVHLPR0,pfnIoApicSendMsi} */315 static DECLCALLBACK(void) pdmR0DevHlp_IoApicSendMsi(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue)316 {317 PDMDEV_ASSERT_DEVINS(pDevIns);318 LogFlow(("pdmR0DevHlp_IoApicSendMsi: caller=%p/%d: GCPhys=%RGp uValue=%#x\n", pDevIns, pDevIns->iInstance, GCPhys, uValue));319 PGVM pGVM = pDevIns->Internal.s.pGVM;320 321 uint32_t uTagSrc;322 pDevIns->Internal.s.pIntR3R0->uLastIrqTag = uTagSrc = pdmCalcIrqTag(pGVM, pDevIns->Internal.s.pInsR3R0->idTracing);323 VBOXVMM_PDM_IRQ_HILO(VMMGetCpu(pGVM), RT_LOWORD(uTagSrc), RT_HIWORD(uTagSrc));324 325 if (pGVM->pdm.s.IoApic.pDevInsR0)326 pGVM->pdm.s.IoApic.pfnSendMsiR0(pGVM->pdm.s.IoApic.pDevInsR0, GCPhys, uValue, uTagSrc);327 else328 AssertFatalMsgFailed(("Lazy bastards!"));329 330 LogFlow(("pdmR0DevHlp_IoApicSendMsi: caller=%p/%d: returns void; uTagSrc=%#x\n", pDevIns, pDevIns->iInstance, uTagSrc));331 }332 333 334 314 /** @interface_method_impl{PDMDEVHLPR0,pfnPhysRead} */ 335 315 static DECLCALLBACK(int) pdmR0DevHlp_PhysRead(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, void *pvBuf, size_t cbRead, uint32_t fFlags) … … 1279 1259 pdmR0DevHlp_PCISetIrq, 1280 1260 pdmR0DevHlp_ISASetIrq, 1281 pdmR0DevHlp_IoApicSendMsi,1282 1261 pdmR0DevHlp_PhysRead, 1283 1262 pdmR0DevHlp_PhysWrite, -
trunk/src/VBox/VMM/VMMR3/PDMDevHlp.cpp
r84459 r84714 1962 1962 { 1963 1963 pdmR3DevHlp_ISASetIrq(pDevIns, iIrq, iLevel); 1964 }1965 1966 1967 /** @interface_method_impl{PDMDEVHLPR3,pfnIoApicSendMsi} */1968 static DECLCALLBACK(void) pdmR3DevHlp_IoApicSendMsi(PPDMDEVINS pDevIns, RTGCPHYS GCPhys, uint32_t uValue)1969 {1970 PDMDEV_ASSERT_DEVINS(pDevIns);1971 LogFlow(("pdmR3DevHlp_IoApicSendMsi: caller='%s'/%d: GCPhys=%RGp uValue=%#x\n", pDevIns->pReg->szName, pDevIns->iInstance, GCPhys, uValue));1972 1973 /*1974 * Validate input.1975 */1976 Assert(GCPhys != 0);1977 Assert(uValue != 0);1978 1979 PVM pVM = pDevIns->Internal.s.pVMR3;1980 1981 /*1982 * Do the job.1983 */1984 pdmLock(pVM);1985 uint32_t uTagSrc;1986 pDevIns->Internal.s.uLastIrqTag = uTagSrc = pdmCalcIrqTag(pVM, pDevIns->idTracing);1987 VBOXVMM_PDM_IRQ_HILO(VMMGetCpu(pVM), RT_LOWORD(uTagSrc), RT_HIWORD(uTagSrc));1988 1989 PDMIoApicSendMsi(pVM, GCPhys, uValue, uTagSrc); /* (The API takes the lock recursively.) */1990 1991 pdmUnlock(pVM);1992 1993 LogFlow(("pdmR3DevHlp_IoApicSendMsi: caller='%s'/%d: returns void\n", pDevIns->pReg->szName, pDevIns->iInstance));1994 1964 } 1995 1965 … … 4214 4184 pdmR3DevHlp_ISASetIrq, 4215 4185 pdmR3DevHlp_ISASetIrqNoWait, 4216 pdmR3DevHlp_IoApicSendMsi,4217 4186 pdmR3DevHlp_DriverAttach, 4218 4187 pdmR3DevHlp_DriverDetach, … … 5063 5032 pdmR3DevHlp_ISASetIrq, 5064 5033 pdmR3DevHlp_ISASetIrqNoWait, 5065 pdmR3DevHlp_IoApicSendMsi,5066 5034 pdmR3DevHlp_DriverAttach, 5067 5035 pdmR3DevHlp_DriverDetach,
Note:
See TracChangeset
for help on using the changeset viewer.