Changeset 60573 in vbox
- Timestamp:
- Apr 19, 2016 1:27:45 PM (8 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
-
VMMAll/APICAll.cpp (modified) (12 diffs)
-
VMMAll/PDMAll.cpp (modified) (1 diff)
-
VMMR0/HMVMXR0.cpp (modified) (1 diff)
-
VMMR3/TRPM.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/APICAll.cpp
r60542 r60573 629 629 { 630 630 if (VMCPUSET_IS_PRESENT(pDestCpuSet, idCpu)) 631 { 632 Log4(("APIC: apicSendIntr: Raising SMI on VCPU%u\n", idCpu)); 631 633 APICSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_SMI); 634 } 632 635 } 633 636 break; … … 640 643 if ( VMCPUSET_IS_PRESENT(pDestCpuSet, idCpu) 641 644 && apicIsEnabled(&pVM->aCpus[idCpu])) 645 { 646 Log4(("APIC: apicSendIntr: Raising NMI on VCPU%u\n", idCpu)); 642 647 APICSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_NMI); 648 } 643 649 } 644 650 break; … … 650 656 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 651 657 if (VMCPUSET_IS_PRESENT(pDestCpuSet, idCpu)) 658 { 659 Log4(("APIC: apicSendIntr: Issuing INIT to VCPU%u\n", idCpu)); 652 660 VMMR3SendInitIpi(pVM, idCpu); 661 } 653 662 #else 654 663 /* We need to return to ring-3 to deliver the INIT. */ … … 663 672 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 664 673 if (VMCPUSET_IS_PRESENT(pDestCpuSet, idCpu)) 674 { 675 Log4(("APIC: apicSendIntr: Issuing SIPI to VCPU%u\n", idCpu)); 665 676 VMMR3SendStartupIpi(pVM, idCpu, uVector); 677 } 666 678 #else 667 679 /* We need to return to ring-3 to deliver the SIPI. */ … … 675 687 for (VMCPUID idCpu = 0; idCpu < cCpus; idCpu++) 676 688 if (VMCPUSET_IS_PRESENT(pDestCpuSet, idCpu)) 689 { 690 Log4(("APIC: apicSendIntr: Raising EXTINT on VCPU%u\n", idCpu)); 677 691 APICSetInterruptFF(&pVM->aCpus[idCpu], PDMAPICIRQ_EXTINT); 692 } 678 693 break; 679 694 } … … 911 926 912 927 PXAPICPAGE pXApicPage = VMCPU_TO_XAPICPAGE(pVCpu); 913 XAPICDELIVERYMODE constenmDeliveryMode = (XAPICDELIVERYMODE)pXApicPage->icr_lo.u.u3DeliveryMode;928 XAPICDELIVERYMODE const enmDeliveryMode = (XAPICDELIVERYMODE)pXApicPage->icr_lo.u.u3DeliveryMode; 914 929 XAPICDESTMODE const enmDestMode = (XAPICDESTMODE)pXApicPage->icr_lo.u.u1DestMode; 915 XAPICINITLEVEL enmInitLevel = (XAPICINITLEVEL)pXApicPage->icr_lo.u.u1Level;916 XAPICTRIGGERMODE enmTriggerMode = (XAPICTRIGGERMODE)pXApicPage->icr_lo.u.u1TriggerMode;930 XAPICINITLEVEL const enmInitLevel = (XAPICINITLEVEL)pXApicPage->icr_lo.u.u1Level; 931 XAPICTRIGGERMODE const enmTriggerMode = (XAPICTRIGGERMODE)pXApicPage->icr_lo.u.u1TriggerMode; 917 932 XAPICDESTSHORTHAND const enmDestShorthand = (XAPICDESTSHORTHAND)pXApicPage->icr_lo.u.u2DestShorthand; 918 933 uint8_t const uVector = pXApicPage->icr_lo.u.u8Vector; … … 924 939 /* 925 940 * INIT Level De-assert is not support on Pentium 4 and Xeon processors. 941 * See AMD spec. 16.5 "Interprocessor Interrupts (IPI)" for a table of valid ICR combinations. 926 942 */ 927 943 if (RT_UNLIKELY( enmDeliveryMode == XAPICDELIVERYMODE_INIT_LEVEL_DEASSERT … … 929 945 && enmTriggerMode == XAPICTRIGGERMODE_LEVEL)) 930 946 { 947 Log4(("APIC%u: INIT level de-assert unsupported, ignoring!\n", pVCpu->idCpu)); 931 948 return VINF_SUCCESS; 932 949 } 933 934 enmInitLevel = XAPICINITLEVEL_ASSERT;935 enmTriggerMode = XAPICTRIGGERMODE_EDGE;936 950 #else 937 951 # error "Implement Pentium and P6 family APIC architectures" … … 1015 1029 Log4(("APIC%u: apicSetIcrLo: uIcrLo=%#RX32\n", pVCpu->idCpu, pXApicPage->icr_lo.all.u32IcrLo)); 1016 1030 1017 apicSendIpi(pVCpu, rcRZ); 1018 return VINF_SUCCESS; 1031 return apicSendIpi(pVCpu, rcRZ); 1019 1032 } 1020 1033 … … 2263 2276 2264 2277 PXAPICPAGE pXApicPage = VMCPU_TO_XAPICPAGE(pVCpu); 2265 if ( apicIsEnabled(pVCpu) 2278 bool const fApicHwEnabled = apicIsEnabled(pVCpu); 2279 if ( fApicHwEnabled 2266 2280 && pXApicPage->svr.u.fApicSoftwareEnable) 2267 2281 { … … 2295 2309 return uVector; 2296 2310 } 2297 } 2298 } 2311 else 2312 Log4(("APIC%u: APICGetInterrupt: Interrupt's priority is not higher than the PPR uVector=%#x PPR=%#x\n", 2313 pVCpu->idCpu, uVector, uPpr)); 2314 } 2315 else 2316 Log4(("APIC%u: APICGetInterrupt: No pending bits in IRR\n", pVCpu->idCpu)); 2317 } 2318 else 2319 Log4(("APIC%u: APICGetInterrupt: APIC %s disabled\n", pVCpu->idCpu, !fApicHwEnabled ? "hardware" : "software")); 2299 2320 2300 2321 return -1; … … 2318 2339 STAM_COUNTER_INC(&pVCpu->apic.s.CTX_SUFF(StatMmioRead)); 2319 2340 2320 Log4(("APIC%u: ApicReadMmio: offReg=%#RX16\n", pVCpu->idCpu, offReg));2321 2322 2341 int rc = apicReadRegister(pApicDev, pVCpu, offReg, &uValue); 2323 2342 *(uint32_t *)pv = uValue; 2343 2344 Log4(("APIC%u: ApicReadMmio: offReg=%#RX16 uValue=%#RX32\n", pVCpu->idCpu, offReg, uValue)); 2324 2345 return rc; 2325 2346 } -
trunk/src/VBox/VMM/VMMAll/PDMAll.cpp
r60396 r60573 61 61 uint32_t uTagSrc; 62 62 int i = pVM->pdm.s.Apic.CTX_SUFF(pfnGetInterrupt)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns), pVCpu, &uTagSrc); 63 #ifndef VBOX_WITH_NEW_APIC 63 64 AssertMsg(i <= 255 && i >= 0, ("i=%d\n", i)); 65 #endif 64 66 if (i >= 0) 65 67 { -
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r60380 r60573 7444 7444 else 7445 7445 { 7446 /** @todo Does this actually happen? If not turn it into an assertion. */ 7446 /* This can happen with the new APIC code. */ 7447 #ifndef VBOX_WITH_NEW_APIC 7447 7448 Assert(!VMCPU_FF_IS_PENDING(pVCpu, (VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC))); 7449 #endif 7448 7450 STAM_COUNTER_INC(&pVCpu->hm.s.StatSwitchGuestIrq); 7449 7451 } -
trunk/src/VBox/VMM/VMMR3/TRPM.cpp
r58123 r60573 1555 1555 else 1556 1556 { 1557 #ifndef VBOX_WITH_NEW_APIC 1557 1558 AssertRC(rc); 1559 #endif 1558 1560 return HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM : VINF_EM_RESCHEDULE_REM; /* (Heed the halted state if this is changed!) */ 1559 1561 }
Note:
See TracChangeset
for help on using the changeset viewer.

