Changeset 60307 in vbox for trunk/src/VBox/VMM/VMMRC
- Timestamp:
- Apr 4, 2016 3:23:11 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMRC/PDMRCDevice.cpp
r58126 r60307 409 409 PDMDEV_ASSERT_DEVINS(pDevIns); 410 410 PVM pVM = pDevIns->Internal.s.pVMRC; 411 PVMCPU pVCpu = &pVM->aCpus[0]; /* for PIC we always deliver to CPU 0, MP use APIC */ 411 412 412 413 if (pVM->pdm.s.Apic.pfnLocalInterruptRC) … … 415 416 pDevIns, pDevIns->iInstance)); 416 417 /* Raise the LAPIC's LINT0 line instead of signaling the CPU directly. */ 417 pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, 0, 1); 418 /** @todo 'rcRZ' propagation to pfnLocalInterrupt from caller. */ 419 pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, pVCpu, 0 /* u8Pin */, 1 /* u8Level*/, 420 VINF_SUCCESS /*rcRZ*/); 418 421 return; 419 422 } 420 421 PVMCPU pVCpu = &pVM->aCpus[0]; /* for PIC we always deliver to CPU 0, MP use APIC */422 423 423 424 LogFlow(("pdmRCPicHlp_SetInterruptFF: caller=%p/%d: VMMCPU_FF_INTERRUPT_PIC %d -> 1\n", … … 433 434 PDMDEV_ASSERT_DEVINS(pDevIns); 434 435 PVM pVM = pDevIns->Internal.s.CTX_SUFF(pVM); 436 PVMCPU pVCpu = &pVM->aCpus[0]; /* for PIC we always deliver to CPU 0, MP use APIC */ 435 437 436 438 if (pVM->pdm.s.Apic.pfnLocalInterruptRC) … … 440 442 pDevIns, pDevIns->iInstance)); 441 443 /* Lower the LAPIC's LINT0 line instead of signaling the CPU directly. */ 442 pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, 0, 0); 444 /** @todo 'rcRZ' propagation to pfnLocalInterrupt from caller. */ 445 pVM->pdm.s.Apic.pfnLocalInterruptRC(pVM->pdm.s.Apic.pDevInsRC, pVCpu, 0 /* u8Pin */, 0 /* u8Level */, 446 VINF_SUCCESS /* rcRZ */); 443 447 return; 444 448 } 445 446 PVMCPU pVCpu = &pVM->aCpus[0]; /* for PIC we always deliver to CPU 0, MP use APIC */447 449 448 450 LogFlow(("pdmRCPicHlp_ClearInterruptFF: caller=%p/%d: VMCPU_FF_INTERRUPT_PIC %d -> 0\n", … … 574 576 575 577 /** @interface_method_impl{PDMAPICHLPRC,pfnChangeFeature} */ 576 static DECLCALLBACK(void) pdmRCApicHlp_ChangeFeature(PPDMDEVINS pDevIns, PDMAPIC VERSION enmVersion)577 { 578 PDMDEV_ASSERT_DEVINS(pDevIns); 579 LogFlow(("pdmRCApicHlp_ChangeFeature: caller=%p/%d: version=%d\n", pDevIns, pDevIns->iInstance, (int)enmVersion));580 switch (enm Version)581 { 582 case PDMAPIC VERSION_NONE:578 static DECLCALLBACK(void) pdmRCApicHlp_ChangeFeature(PPDMDEVINS pDevIns, PDMAPICMODE enmMode) 579 { 580 PDMDEV_ASSERT_DEVINS(pDevIns); 581 LogFlow(("pdmRCApicHlp_ChangeFeature: caller=%p/%d: mode=%d\n", pDevIns, pDevIns->iInstance, (int)enmMode)); 582 switch (enmMode) 583 { 584 case PDMAPICMODE_NONE: 583 585 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_APIC); 584 586 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_X2APIC); 585 587 break; 586 case PDMAPIC VERSION_APIC:588 case PDMAPICMODE_APIC: 587 589 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_APIC); 588 590 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_X2APIC); 589 591 break; 590 case PDMAPIC VERSION_X2APIC:592 case PDMAPICMODE_X2APIC: 591 593 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_X2APIC); 592 594 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_APIC); 593 595 break; 594 596 default: 595 AssertMsgFailed(("Unknown APIC version: %d\n", (int)enmVersion));597 AssertMsgFailed(("Unknown APIC mode: %d\n", (int)enmMode)); 596 598 } 597 599 }
Note:
See TracChangeset
for help on using the changeset viewer.