Changeset 60456 in vbox
- Timestamp:
- Apr 12, 2016 1:26:53 PM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 106544
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/APICAll.cpp
r60432 r60456 2223 2223 if (enmTriggerMode == XAPICTRIGGERMODE_EDGE) 2224 2224 { 2225 Assert(CTX_SUFF(pApicCpu->pvApicPib)); 2225 2226 apicSetVectorInPib(CTX_SUFF(pApicCpu->pvApicPib), uVector); 2226 2227 bool const fAlreadySet = apicSetNotificationBitInPib(CTX_SUFF(pApicCpu->pvApicPib)); -
trunk/src/VBox/VMM/VMMR3/APIC.cpp
r60435 r60456 299 299 * and AMD spec 16.3.2 "APIC Registers". 300 300 */ 301 ASMMemZero32(&pXApicPage->irr,sizeof(pXApicPage->irr));302 ASMMemZero32(&pXApicPage->isr,sizeof(pXApicPage->isr));303 ASMMemZero32(&pXApicPage->tmr,sizeof(pXApicPage->tmr));304 ASMMemZero32(&pXApicPage->icr_hi,sizeof(pXApicPage->icr_hi));305 ASMMemZero32(&pXApicPage->icr_lo,sizeof(pXApicPage->icr_lo));306 ASMMemZero32(&pXApicPage->ldr,sizeof(pXApicPage->ldr));307 ASMMemZero32(&pXApicPage->tpr,sizeof(pXApicPage->tpr));308 ASMMemZero32(&pXApicPage->timer_icr, sizeof(pXApicPage->timer_icr));309 ASMMemZero32(&pXApicPage->timer_ccr, sizeof(pXApicPage->timer_ccr));310 ASMMemZero32(&pXApicPage->timer_dcr, sizeof(pXApicPage->timer_dcr));301 memset((void *)&pXApicPage->irr, 0, sizeof(pXApicPage->irr)); 302 memset((void *)&pXApicPage->isr, 0, sizeof(pXApicPage->isr)); 303 memset((void *)&pXApicPage->tmr, 0, sizeof(pXApicPage->tmr)); 304 memset((void *)&pXApicPage->icr_hi, 0, sizeof(pXApicPage->icr_hi)); 305 memset((void *)&pXApicPage->icr_lo, 0, sizeof(pXApicPage->icr_lo)); 306 memset((void *)&pXApicPage->ldr, 0, sizeof(pXApicPage->ldr)); 307 memset((void *)&pXApicPage->tpr, 0, sizeof(pXApicPage->tpr)); 308 memset((void *)&pXApicPage->timer_icr, 0, sizeof(pXApicPage->timer_icr)); 309 memset((void *)&pXApicPage->timer_ccr, 0, sizeof(pXApicPage->timer_ccr)); 310 memset((void *)&pXApicPage->timer_dcr, 0, sizeof(pXApicPage->timer_dcr)); 311 311 312 312 pXApicPage->dfr.u.u4Model = XAPICDESTFORMAT_FLAT; … … 315 315 /** @todo CMCI. */ 316 316 317 ASMMemZero32(&pXApicPage->lvt_timer, sizeof(pXApicPage->lvt_timer));317 memset((void *)&pXApicPage->lvt_timer, 0, sizeof(pXApicPage->lvt_timer)); 318 318 pXApicPage->lvt_timer.u.u1Mask = 1; 319 319 320 320 #if XAPIC_HARDWARE_VERSION == XAPIC_HARDWARE_VERSION_P4 321 ASMMemZero32(&pXApicPage->lvt_thermal, sizeof(pXApicPage->lvt_thermal));321 memset((void *)&pXApicPage->lvt_thermal, 0, sizeof(pXApicPage->lvt_thermal)); 322 322 pXApicPage->lvt_thermal.u.u1Mask = 1; 323 323 #endif 324 324 325 ASMMemZero32(&pXApicPage->lvt_perf, sizeof(pXApicPage->lvt_perf));325 memset((void *)&pXApicPage->lvt_perf, 0, sizeof(pXApicPage->lvt_perf)); 326 326 pXApicPage->lvt_perf.u.u1Mask = 1; 327 327 328 ASMMemZero32(&pXApicPage->lvt_lint0, sizeof(pXApicPage->lvt_lint0));328 memset((void *)&pXApicPage->lvt_lint0, 0, sizeof(pXApicPage->lvt_lint0)); 329 329 pXApicPage->lvt_lint0.u.u1Mask = 1; 330 330 331 ASMMemZero32(&pXApicPage->lvt_lint1, sizeof(pXApicPage->lvt_lint1));331 memset((void *)&pXApicPage->lvt_lint1, 0, sizeof(pXApicPage->lvt_lint1)); 332 332 pXApicPage->lvt_lint1.u.u1Mask = 1; 333 333 334 ASMMemZero32(&pXApicPage->lvt_error, sizeof(pXApicPage->lvt_error));334 memset((void *)&pXApicPage->lvt_error, 0, sizeof(pXApicPage->lvt_error)); 335 335 pXApicPage->lvt_error.u.u1Mask = 1; 336 336 337 ASMMemZero32(&pXApicPage->svr, sizeof(pXApicPage->svr));337 memset((void *)&pXApicPage->svr, 0, sizeof(pXApicPage->svr)); 338 338 pXApicPage->svr.u.u8SpuriousVector = 0xff; 339 339 340 /* The self-IPI register is 0. See Intel spec. 10.12.5.1 "x2APIC States" */340 /* The self-IPI register is reset to 0. See Intel spec. 10.12.5.1 "x2APIC States" */ 341 341 PX2APICPAGE pX2ApicPage = VMCPU_TO_X2APICPAGE(pVCpu); 342 ASMMemZero32(&pX2ApicPage->self_ipi, sizeof(pX2ApicPage->self_ipi));342 memset((void *)&pX2ApicPage->self_ipi, 0, sizeof(pX2ApicPage->self_ipi)); 343 343 344 344 /* Clear the posted interrupt bitmaps. */ 345 345 PAPICCPU pApicCpu = VMCPU_TO_APICCPU(pVCpu); 346 ASMMemZero32(&pApicCpu->ApicPibLevel, sizeof(APICPIB));347 ASMMemZero32(&pApicCpu->pvApicPibR3, sizeof(APICPIB));346 memset((void *)&pApicCpu->ApicPibLevel, 0, sizeof(APICPIB)); 347 memset((void *)pApicCpu->pvApicPibR3, 0, sizeof(APICPIB)); 348 348 } 349 349 … … 963 963 PAPIC pApic = VM_TO_APIC(pVM); 964 964 PAPICDEV pApicDev = PDMINS_2_DATA(pDevIns, PAPICDEV); 965 966 LogFlow(("APIC: apicR3Relocate: pDevIns=%p offDelta=%RGi\n", pDevIns, offDelta)); 965 LogFlow(("APIC: apicR3Relocate: pVM=%p pDevIns=%p offDelta=%RGi\n", pVM, pDevIns, offDelta)); 967 966 968 967 pApicDev->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns); … … 972 971 pApic->pApicDevRC = PDMINS_2_DATA_RCPTR(pDevIns); 973 972 if (pApic->pvApicPibRC) 974 pApic->pvApicPibRC = MMHyperR3ToRC(pVM, ( void *)pApic->pvApicPibR3);973 pApic->pvApicPibRC = MMHyperR3ToRC(pVM, (RTR3PTR)pApic->pvApicPibR3); 975 974 976 975 for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++) … … 981 980 982 981 if (pApicCpu->pvApicPageRC) 983 pApicCpu->pvApicPageRC = MMHyperR3ToRC(pVM, ( void *)pApicCpu->pvApicPageR3);982 pApicCpu->pvApicPageRC = MMHyperR3ToRC(pVM, (RTR3PTR)pApicCpu->pvApicPageR3); 984 983 if (pApicCpu->pvApicPibRC) 985 pApicCpu->pvApicPibRC = MMHyperR3ToRC(pVM, ( void *)pApicCpu->pvApicPibR3);984 pApicCpu->pvApicPibRC = MMHyperR3ToRC(pVM, (RTR3PTR)pApicCpu->pvApicPibR3); 986 985 } 987 986 } … … 996 995 { 997 996 PAPIC pApic = VM_TO_APIC(pVM); 997 LogFlow(("APIC: apicR3TermState: pVM=%p\n", pVM)); 998 998 999 if (pApic->pvApicPibR3) 999 1000 { … … 1014 1015 SUPR3PageFreeEx((void *)pApicCpu->pvApicPageR3, 1 /* cPages */); 1015 1016 pApicCpu->pvApicPageR3 = NULL; 1017 pApicCpu->pvApicPibR3 = NULL; 1016 1018 } 1017 1019 } … … 1029 1031 PAPIC pApic = VM_TO_APIC(pVM); 1030 1032 bool const fNeedGCMapping = !HMIsEnabled(pVM); 1033 LogFlow(("APIC: apicR3InitState: pVM=%p\n", pVM)); 1031 1034 1032 1035 /* … … 1116 1119 /* Associate the per-VCPU PIB pointers to the per-VM PIB mapping. */ 1117 1120 size_t const offApicPib = idCpu * sizeof(APICPIB); 1118 pApicCpu->pvApicPibR0 = (RTR0PTR)(( const uint8_t *)pApic->pvApicPibR0 + offApicPib);1119 pApicCpu->pvApicPibR3 = (RTR3PTR)(( const uint8_t *)pApic->pvApicPibR3 + offApicPib);1121 pApicCpu->pvApicPibR0 = (RTR0PTR)((RTR0UINTPTR)pApic->pvApicPibR0 + offApicPib); 1122 pApicCpu->pvApicPibR3 = (RTR3PTR)((RTR3UINTPTR)pApic->pvApicPibR3 + offApicPib); 1120 1123 if (fNeedGCMapping) 1121 1124 pApicCpu->pvApicPibRC += offApicPib; … … 1124 1127 memset((void *)pApicCpu->pvApicPageR3, 0, pApicCpu->cbApicPage); 1125 1128 APICR3Reset(pVCpu); 1129 1130 #ifdef VBOX_STRICT 1131 Assert(pApicCpu->pvApicPageR3); 1132 Assert(pApicCpu->pvApicPageR0); 1133 Assert(!fNeedGCMapping || pApicCpu->pvApicPageRC); 1134 Assert(pApicCpu->pvApicPibR3); 1135 Assert(pApicCpu->pvApicPibR0); 1136 Assert(!fNeedGCMapping || pApicCpu->pvApicPibRC); 1137 #endif 1126 1138 } 1127 1139 else … … 1133 1145 } 1134 1146 1147 #ifdef VBOX_STRICT 1148 Assert(pApic->pvApicPibR0); 1149 Assert(pApic->pvApicPibR3); 1150 Assert(!fNeedGCMapping || pApic->pvApicPibRC); 1151 #endif 1135 1152 return VINF_SUCCESS; 1136 1153 }
Note:
See TracChangeset
for help on using the changeset viewer.