- Timestamp:
- Nov 19, 2013 1:07:10 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 90738
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/pdmdev.h
r49441 r49548 1313 1313 1314 1314 /** 1315 * Modifies APIC-related bits in the CPUID feature mask. 1316 * 1317 * @param pDevIns Device instance of the APIC. 1318 * @param enmVersion Supported APIC version. 1319 */ 1320 DECLRCCALLBACKMEMBER(void, pfnChangeFeature,(PPDMDEVINS pDevIns, PDMAPICVERSION enmVersion)); 1321 1322 /** 1315 1323 * Acquires the PDM lock. 1316 1324 * … … 1345 1353 1346 1354 /** Current PDMAPICHLPRC version number. */ 1347 #define PDM_APICHLPRC_VERSION PDM_VERSION_MAKE(0xfff5, 3, 0)1355 #define PDM_APICHLPRC_VERSION PDM_VERSION_MAKE(0xfff5, 2, 0) 1348 1356 1349 1357 … … 1382 1390 */ 1383 1391 DECLR0CALLBACKMEMBER(uint32_t, pfnCalcIrqTag,(PPDMDEVINS pDevIns, uint8_t u8Level)); 1392 1393 /** 1394 * Modifies APIC-related bits in the CPUID feature mask. 1395 * 1396 * @param pDevIns Device instance of the APIC. 1397 * @param enmVersion Supported APIC version. 1398 */ 1399 DECLR0CALLBACKMEMBER(void, pfnChangeFeature,(PPDMDEVINS pDevIns, PDMAPICVERSION enmVersion)); 1384 1400 1385 1401 /** … … 1416 1432 1417 1433 /** Current PDMAPICHLPR0 version number. */ 1418 #define PDM_APICHLPR0_VERSION PDM_VERSION_MAKE(0xfff4, 3, 0)1434 #define PDM_APICHLPR0_VERSION PDM_VERSION_MAKE(0xfff4, 2, 0) 1419 1435 1420 1436 /** -
trunk/src/VBox/Devices/PC/DevAPIC.cpp
r49442 r49548 607 607 /* Clear any pending APIC interrupt action flag. */ 608 608 apicCpuClearInterrupt(pDev, pApic); 609 /* See @bugref{7097}. Intel IA-32/64 Spec 10.4.3: 610 * "When IA32_APIC_BASE[11] is 0, the processor is functionally equivalent to 611 * an IA-32 processor without an on-chip APIC. The CPUID feature flag for the 612 * APIC (see Section 10.4.2, 'Presence of the Local APIC') is also set to 0." 613 */ 614 pDev->CTX_SUFF(pApicHlp)->pfnChangeFeature(pDevIns, PDMAPICVERSION_NONE); 609 615 break; 610 616 } -
trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp
r49441 r49548 599 599 600 600 601 /** @interface_method_impl{PDMAPICHLPR0,pfnChangeFeature} */ 602 static DECLCALLBACK(void) pdmR0ApicHlp_ChangeFeature(PPDMDEVINS pDevIns, PDMAPICVERSION enmVersion) 603 { 604 PDMDEV_ASSERT_DEVINS(pDevIns); 605 LogFlow(("pdmR0ApicHlp_ChangeFeature: caller=%p/%d: version=%d\n", pDevIns, pDevIns->iInstance, (int)enmVersion)); 606 switch (enmVersion) 607 { 608 case PDMAPICVERSION_NONE: 609 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMR0, CPUMCPUIDFEATURE_APIC); 610 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMR0, CPUMCPUIDFEATURE_X2APIC); 611 break; 612 case PDMAPICVERSION_APIC: 613 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMR0, CPUMCPUIDFEATURE_APIC); 614 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMR0, CPUMCPUIDFEATURE_X2APIC); 615 break; 616 case PDMAPICVERSION_X2APIC: 617 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMR0, CPUMCPUIDFEATURE_X2APIC); 618 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMR0, CPUMCPUIDFEATURE_APIC); 619 break; 620 default: 621 AssertMsgFailed(("Unknown APIC version: %d\n", (int)enmVersion)); 622 } 623 } 624 625 601 626 /** @interface_method_impl{PDMAPICHLPR0,pfnLock} */ 602 627 static DECLCALLBACK(int) pdmR0ApicHlp_Lock(PPDMDEVINS pDevIns, int rc) … … 632 657 pdmR0ApicHlp_ClearInterruptFF, 633 658 pdmR0ApicHlp_CalcIrqTag, 659 pdmR0ApicHlp_ChangeFeature, 634 660 pdmR0ApicHlp_Lock, 635 661 pdmR0ApicHlp_Unlock, -
trunk/src/VBox/VMM/VMMRC/PDMRCDevice.cpp
r49441 r49548 562 562 563 563 564 /** @interface_method_impl{PDMAPICHLPRC,pfnChangeFeature} */ 565 static DECLCALLBACK(void) pdmRCApicHlp_ChangeFeature(PPDMDEVINS pDevIns, PDMAPICVERSION enmVersion) 566 { 567 PDMDEV_ASSERT_DEVINS(pDevIns); 568 LogFlow(("pdmRCApicHlp_ChangeFeature: caller=%p/%d: version=%d\n", pDevIns, pDevIns->iInstance, (int)enmVersion)); 569 switch (enmVersion) 570 { 571 case PDMAPICVERSION_NONE: 572 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_APIC); 573 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_X2APIC); 574 break; 575 case PDMAPICVERSION_APIC: 576 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_APIC); 577 CPUMClearGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_X2APIC); 578 break; 579 case PDMAPICVERSION_X2APIC: 580 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_X2APIC); 581 CPUMSetGuestCpuIdFeature(pDevIns->Internal.s.pVMRC, CPUMCPUIDFEATURE_APIC); 582 break; 583 default: 584 AssertMsgFailed(("Unknown APIC version: %d\n", (int)enmVersion)); 585 } 586 } 587 588 564 589 /** @interface_method_impl{PDMAPICHLPRC,pfnLock} */ 565 590 static DECLCALLBACK(int) pdmRCApicHlp_Lock(PPDMDEVINS pDevIns, int rc) … … 595 620 pdmRCApicHlp_ClearInterruptFF, 596 621 pdmRCApicHlp_CalcIrqTag, 622 pdmRCApicHlp_ChangeFeature, 597 623 pdmRCApicHlp_Lock, 598 624 pdmRCApicHlp_Unlock,
Note:
See TracChangeset
for help on using the changeset viewer.