Changeset 61794 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Jun 21, 2016 2:11:06 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 108192
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/APICAll.cpp
r61776 r61794 529 529 { 530 530 Log2(("APIC%u: apicSignalNextPendingIntr: Signaling pending interrupt. uVector=%#x\n", pVCpu->idCpu, uVector)); 531 APICSetInterruptFF(pVCpu, PDMAPICIRQ_HARDWARE);531 apicSetInterruptFF(pVCpu, PDMAPICIRQ_HARDWARE); 532 532 } 533 533 else … … 541 541 { 542 542 Log2(("APIC%u: apicSignalNextPendingIntr: APIC software-disabled, clearing pending interrupt\n", pVCpu->idCpu)); 543 APICClearInterruptFF(pVCpu, PDMAPICIRQ_HARDWARE);543 apicClearInterruptFF(pVCpu, PDMAPICIRQ_HARDWARE); 544 544 } 545 545 } … … 614 614 if ( VMCPUSET_IS_PRESENT(pDestCpuSet, idCpu) 615 615 && apicIsEnabled(&pVM->aCpus[idCpu])) 616 APICPostInterrupt(&pVM->aCpus[idCpu], uVector, enmTriggerMode);616 apicPostInterrupt(&pVM->aCpus[idCpu], uVector, enmTriggerMode); 617 617 } 618 618 break; … … 624 624 if ( idCpu < pVM->cCpus 625 625 && apicIsEnabled(&pVM->aCpus[idCpu])) 626 APICPostInterrupt(&pVM->aCpus[idCpu], uVector, enmTriggerMode);626 apicPostInterrupt(&pVM->aCpus[idCpu], uVector, enmTriggerMode); 627 627 else 628 628 Log2(("APIC: apicSendIntr: No CPU found for lowest-priority delivery mode!\n")); … … 637 637 { 638 638 Log2(("APIC: apicSendIntr: Raising SMI on VCPU%u\n", idCpu)); 639 APICSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_SMI);639 apicSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_SMI); 640 640 } 641 641 } … … 651 651 { 652 652 Log2(("APIC: apicSendIntr: Raising NMI on VCPU%u\n", idCpu)); 653 APICSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_NMI);653 apicSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_NMI); 654 654 } 655 655 } … … 696 696 { 697 697 Log2(("APIC: apicSendIntr: Raising EXTINT on VCPU%u\n", idCpu)); 698 APICSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_EXTINT);698 apicSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_EXTINT); 699 699 } 700 700 break; … … 1419 1419 pXApicPage->timer_ccr.u32CurrentCount = uInitialCount; 1420 1420 if (uInitialCount) 1421 APICStartTimer(pVCpu, uInitialCount);1421 apicStartTimer(pVCpu, uInitialCount); 1422 1422 else 1423 APICStopTimer(pVCpu);1423 apicStopTimer(pVCpu); 1424 1424 TMTimerUnlock(pTimer); 1425 1425 } … … 1793 1793 * @interface_method_impl{PDMAPICREG,pfnReadMsrR3} 1794 1794 */ 1795 VMM DECL(VBOXSTRICTRC) APICReadMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t *pu64Value)1795 VMM_INT_DECL(VBOXSTRICTRC) apicReadMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t *pu64Value) 1796 1796 { 1797 1797 /* … … 1900 1900 * @interface_method_impl{PDMAPICREG,pfnWriteMsrR3} 1901 1901 */ 1902 VMM DECL(VBOXSTRICTRC) APICWriteMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t u64Value)1902 VMM_INT_DECL(VBOXSTRICTRC) apicWriteMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint32_t u32Reg, uint64_t u64Value) 1903 1903 { 1904 1904 /* … … 1990 1990 { 1991 1991 uint8_t const uVector = XAPIC_SELF_IPI_GET_VECTOR(u32Value); 1992 APICPostInterrupt(pVCpu, uVector, XAPICTRIGGERMODE_EDGE);1992 apicPostInterrupt(pVCpu, uVector, XAPICTRIGGERMODE_EDGE); 1993 1993 rcStrict = VINF_SUCCESS; 1994 1994 break; … … 2037 2037 * @interface_method_impl{PDMAPICREG,pfnSetBaseMsrR3} 2038 2038 */ 2039 VMMDECL(VBOXSTRICTRC) APICSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t u64BaseMsr)2039 VMMDECL(VBOXSTRICTRC) apicSetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint64_t u64BaseMsr) 2040 2040 { 2041 2041 Assert(pVCpu); … … 2094 2094 * need to update the CPUID leaf ourselves. 2095 2095 */ 2096 APICR3Reset(pVCpu, false /* fResetApicBaseMsr */);2096 apicR3ResetEx(pVCpu, false /* fResetApicBaseMsr */); 2097 2097 uBaseMsr &= ~(MSR_IA32_APICBASE_EN | MSR_IA32_APICBASE_EXTD); 2098 2098 CPUMSetGuestCpuIdPerCpuApicFeature(pVCpu, false /*fVisible*/); … … 2174 2174 * @interface_method_impl{PDMAPICREG,pfnGetBaseMsrR3} 2175 2175 */ 2176 VMM DECL(uint64_t) APICGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu)2176 VMM_INT_DECL(uint64_t) apicGetBaseMsr(PPDMDEVINS pDevIns, PVMCPU pVCpu) 2177 2177 { 2178 2178 VMCPU_ASSERT_EMT_OR_NOT_RUNNING(pVCpu); … … 2186 2186 * @interface_method_impl{PDMAPICREG,pfnSetTprR3} 2187 2187 */ 2188 VMM DECL(void) APICSetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Tpr)2188 VMM_INT_DECL(void) apicSetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Tpr) 2189 2189 { 2190 2190 apicSetTpr(pVCpu, u8Tpr); … … 2218 2218 * @interface_method_impl{PDMAPICREG,pfnGetTprR3} 2219 2219 */ 2220 VMMDECL(uint8_t) APICGetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, bool *pfPending, uint8_t *pu8PendingIntr)2220 VMMDECL(uint8_t) apicGetTpr(PPDMDEVINS pDevIns, PVMCPU pVCpu, bool *pfPending, uint8_t *pu8PendingIntr) 2221 2221 { 2222 2222 VMCPU_ASSERT_EMT(pVCpu); … … 2239 2239 * @interface_method_impl{PDMAPICREG,pfnGetTimerFreqR3} 2240 2240 */ 2241 VMM DECL(uint64_t) APICGetTimerFreq(PPDMDEVINS pDevIns)2241 VMM_INT_DECL(uint64_t) apicGetTimerFreq(PPDMDEVINS pDevIns) 2242 2242 { 2243 2243 PVM pVM = PDMDevHlpGetVM(pDevIns); … … 2253 2253 * @remarks This is a private interface between the IOAPIC and the APIC. 2254 2254 */ 2255 VMM DECL(int) APICBusDeliver(PPDMDEVINS pDevIns, uint8_t uDest, uint8_t uDestMode, uint8_t uDeliveryMode, uint8_t uVector,2255 VMM_INT_DECL(int) apicBusDeliver(PPDMDEVINS pDevIns, uint8_t uDest, uint8_t uDestMode, uint8_t uDeliveryMode, uint8_t uVector, 2256 2256 uint8_t uPolarity, uint8_t uTriggerMode, uint32_t uTagSrc) 2257 2257 { … … 2287 2287 * @remarks This is a private interface between the PIC and the APIC. 2288 2288 */ 2289 VMM DECL(VBOXSTRICTRC) APICLocalInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Pin, uint8_t u8Level, int rcRZ)2289 VMM_INT_DECL(VBOXSTRICTRC) apicLocalInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t u8Pin, uint8_t u8Level, int rcRZ) 2290 2290 { 2291 2291 NOREF(pDevIns); … … 2401 2401 u8Level ? "Raising" : "Lowering", u8Pin)); 2402 2402 if (u8Level) 2403 APICSetInterruptFF(pVCpu, PDMAPICIRQ_EXTINT);2403 apicSetInterruptFF(pVCpu, PDMAPICIRQ_EXTINT); 2404 2404 else 2405 APICClearInterruptFF(pVCpu, PDMAPICIRQ_EXTINT);2405 apicClearInterruptFF(pVCpu, PDMAPICIRQ_EXTINT); 2406 2406 break; 2407 2407 } … … 2429 2429 u8Level ? "raising" : "lowering")); 2430 2430 if (u8Level) 2431 APICSetInterruptFF(pVCpu, PDMAPICIRQ_EXTINT);2431 apicSetInterruptFF(pVCpu, PDMAPICIRQ_EXTINT); 2432 2432 else 2433 APICClearInterruptFF(pVCpu, PDMAPICIRQ_EXTINT);2433 apicClearInterruptFF(pVCpu, PDMAPICIRQ_EXTINT); 2434 2434 } 2435 2435 else … … 2437 2437 /* LINT1 behaves as NMI. */ 2438 2438 Log2(("APIC%u: APICLocalInterrupt: APIC hardware-disabled, raising NMI\n", pVCpu->idCpu)); 2439 APICSetInterruptFF(pVCpu, PDMAPICIRQ_NMI);2439 apicSetInterruptFF(pVCpu, PDMAPICIRQ_NMI); 2440 2440 } 2441 2441 } … … 2448 2448 * @interface_method_impl{PDMAPICREG,pfnGetInterruptR3} 2449 2449 */ 2450 VMM DECL(int) APICGetInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t *pu8Vector, uint32_t *pu32TagSrc)2450 VMM_INT_DECL(int) apicGetInterrupt(PPDMDEVINS pDevIns, PVMCPU pVCpu, uint8_t *pu8Vector, uint32_t *pu32TagSrc) 2451 2451 { 2452 2452 VMCPU_ASSERT_EMT(pVCpu); … … 2520 2520 * @callback_method_impl{FNIOMMMIOREAD} 2521 2521 */ 2522 VMM DECL(int) APICReadMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)2522 VMM_INT_DECL(int) apicReadMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb) 2523 2523 { 2524 2524 NOREF(pvUser); … … 2544 2544 * @callback_method_impl{FNIOMMMIOWRITE} 2545 2545 */ 2546 VMM DECL(int) APICWriteMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb)2546 VMM_INT_DECL(int) apicWriteMmio(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void const *pv, unsigned cb) 2547 2547 { 2548 2548 NOREF(pvUser); … … 2557 2557 STAM_COUNTER_INC(&pVCpu->apic.s.CTX_SUFF(StatMmioWrite)); 2558 2558 2559 Log2(("APIC%u: APICWriteMmio: offReg=%#RX16 uValue=%#RX32\n", pVCpu->idCpu, offReg, uValue));2559 Log2(("APIC%u: apicWriteMmio: offReg=%#RX16 uValue=%#RX32\n", pVCpu->idCpu, offReg, uValue)); 2560 2560 2561 2561 int rc = VBOXSTRICTRC_VAL(apicWriteRegister(pApicDev, pVCpu, offReg, uValue)); … … 2570 2570 * @param enmType The IRQ type. 2571 2571 */ 2572 VMM DECL(void) APICSetInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType)2572 VMM_INT_DECL(void) apicSetInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType) 2573 2573 { 2574 2574 PVM pVM = pVCpu->CTX_SUFF(pVM); … … 2584 2584 * @param enmType The IRQ type. 2585 2585 */ 2586 VMM DECL(void) APICClearInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType)2586 VMM_INT_DECL(void) apicClearInterruptFF(PVMCPU pVCpu, PDMAPICIRQ enmType) 2587 2587 { 2588 2588 PVM pVM = pVCpu->CTX_SUFF(pVM); … … 2606 2606 * @thread Any. 2607 2607 */ 2608 VMM_INT_DECL(void) APICPostInterrupt(PVMCPU pVCpu, uint8_t uVector, XAPICTRIGGERMODE enmTriggerMode)2608 VMM_INT_DECL(void) apicPostInterrupt(PVMCPU pVCpu, uint8_t uVector, XAPICTRIGGERMODE enmTriggerMode) 2609 2609 { 2610 2610 Assert(pVCpu); … … 2642 2642 { 2643 2643 Log2(("APIC: APICPostInterrupt: Setting UPDATE_APIC FF for edge-triggered intr. uVector=%#x\n", uVector)); 2644 APICSetInterruptFF(pVCpu, PDMAPICIRQ_UPDATE_PENDING);2644 apicSetInterruptFF(pVCpu, PDMAPICIRQ_UPDATE_PENDING); 2645 2645 } 2646 2646 } … … 2657 2657 { 2658 2658 Log2(("APIC: APICPostInterrupt: Setting UPDATE_APIC FF for level-triggered intr. uVector=%#x\n", uVector)); 2659 APICSetInterruptFF(pVCpu, PDMAPICIRQ_UPDATE_PENDING);2659 apicSetInterruptFF(pVCpu, PDMAPICIRQ_UPDATE_PENDING); 2660 2660 } 2661 2661 } … … 2683 2683 * @thread Any. 2684 2684 */ 2685 VMM_INT_DECL(void) APICStartTimer(PVMCPU pVCpu, uint32_t uInitialCount)2685 VMM_INT_DECL(void) apicStartTimer(PVMCPU pVCpu, uint32_t uInitialCount) 2686 2686 { 2687 2687 Assert(pVCpu); … … 2715 2715 * @thread Any. 2716 2716 */ 2717 VMM_INT_DECL(void) APICStopTimer(PVMCPU pVCpu)2717 VMM_INT_DECL(void) apicStopTimer(PVMCPU pVCpu) 2718 2718 { 2719 2719 Assert(pVCpu);
Note:
See TracChangeset
for help on using the changeset viewer.