VirtualBox

Changeset 61339 in vbox for trunk/src/VBox/VMM/VMMR0


Ignore:
Timestamp:
May 31, 2016 2:23:24 PM (9 years ago)
Author:
vboxsync
Message:

VMM, Devices: Added new I/O APIC implementation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp

    r60804 r61339  
    605605
    606606
     607/** @interface_method_impl{PDMAPICHLPR0,pfnBusBroadcastEoi} */
     608static DECLCALLBACK(void) pdmR0ApicHlp_BusBroadcastEoi(PPDMDEVINS pDevIns, uint8_t u8Vector)
     609{
     610    /* pfnSetEoi will be NULL in the old IOAPIC code as it's not implemented. */
     611#ifdef VBOX_WITH_NEW_IOAPIC
     612    PDMDEV_ASSERT_DEVINS(pDevIns);
     613    PVM pVM = pDevIns->Internal.s.CTX_SUFF(pVM);
     614
     615    /* At present, we support only a maximum of one I/O APIC for a VM. If we ever implement having
     616       multiple I/O APICs per-VM, we'll have to broadcast this EOI to all of the I/O APICs. */
     617    if (pVM->pdm.s.IoApic.CTX_SUFF(pDevIns))
     618    {
     619        Assert(pVM->pdm.s.IoApic.CTX_SUFF(pfnSetEoi));
     620        pdmLock(pVM);
     621        pVM->pdm.s.IoApic.CTX_SUFF(pfnSetEoi)(pVM->pdm.s.IoApic.CTX_SUFF(pDevIns), u8Vector);
     622        pdmUnlock(pVM);
     623    }
     624#endif
     625}
     626
     627
    607628/** @interface_method_impl{PDMAPICHLPR0,pfnCalcIrqTag} */
    608629static DECLCALLBACK(uint32_t) pdmR0ApicHlp_CalcIrqTag(PPDMDEVINS pDevIns, uint8_t u8Level)
     
    684705    pdmR0ApicHlp_SetInterruptFF,
    685706    pdmR0ApicHlp_ClearInterruptFF,
     707    pdmR0ApicHlp_BusBroadcastEoi,
    686708    pdmR0ApicHlp_CalcIrqTag,
    687709    pdmR0ApicHlp_ChangeFeature,
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette