VirtualBox

Changeset 24125 in vbox for trunk/include


Ignore:
Timestamp:
Oct 28, 2009 9:58:41 AM (15 years ago)
Author:
vboxsync
Message:

DevAPIC/PDM: Properly route PIC interrupts through local APIC (fixes double time interrupt delivery in some Linux kernels).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/pdmdev.h

    r23988 r24125  
    10431043                                                uint8_t iVector, uint8_t u8Polarity, uint8_t u8TriggerMode));
    10441044
     1045    /**
     1046     * Deliver a signal to CPU's local interrupt pins (LINT0/LINT1). Used for
     1047     * virtual wire mode when interrupts from the PIC are passed through LAPIC.
     1048     *
     1049     * @returns status code.
     1050     * @param   pDevIns         Device instance of the APIC.
     1051     * @param   u8Pin           Local pin number (0 or 1 for current CPUs).
     1052     */
     1053    DECLR3CALLBACKMEMBER(int,  pfnLocalInterruptR3,(PPDMDEVINS pDevIns, uint8_t u8Pin, uint8_t u8Level));
     1054
    10451055    /** The name of the RC GetInterrupt entry point. */
    10461056    const char         *pszGetInterruptRC;
     
    10611071    /** The name of the RC BusDeliver entry point. */
    10621072    const char         *pszBusDeliverRC;
     1073    /** The name of the RC LocalInterrupt entry point. */
     1074    const char         *pszLocalInterruptRC;
    10631075
    10641076    /** The name of the R0 GetInterrupt entry point. */
     
    10801092    /** The name of the R0 BusDeliver entry point. */
    10811093    const char         *pszBusDeliverR0;
     1094    /** The name of the R0 LocalInterrupt entry point. */
     1095    const char         *pszLocalInterruptR0;
    10821096
    10831097} PDMAPICREG;
     
    11191133    /** SMI. */
    11201134    PDMAPICIRQ_SMI,
     1135    /** ExtINT (HW interrupt via PIC). */
     1136    PDMAPICIRQ_EXTINT,
    11211137    /** The usual 32-bit paranoia. */
    11221138    PDMAPICIRQ_32BIT_HACK = 0x7fffffff
     
    11451161     *
    11461162     * @param   pDevIns         Device instance of the APIC.
     1163     * @param   enmType         IRQ type.
    11471164     * @param   idCpu           Virtual CPU to clear flag upon.
    11481165     */
    1149     DECLRCCALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, VMCPUID idCpu));
     1166    DECLRCCALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, PDMAPICIRQ enmType, VMCPUID idCpu));
    11501167
    11511168    /**
     
    12141231     *
    12151232     * @param   pDevIns         Device instance of the APIC.
     1233     * @param   enmType         IRQ type.
    12161234     * @param   idCpu           Virtual CPU to clear flag upon.
    12171235     */
    1218     DECLR0CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, VMCPUID idCpu));
     1236    DECLR0CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, PDMAPICIRQ enmType, VMCPUID idCpu));
    12191237
    12201238    /**
     
    12821300     *
    12831301     * @param   pDevIns         Device instance of the APIC.
     1302     * @param   enmType         IRQ type.
    12841303     * @param   idCpu           Virtual CPU to clear flag upon.
    12851304     */
    1286     DECLR3CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, VMCPUID idCpu));
     1305    DECLR3CALLBACKMEMBER(void, pfnClearInterruptFF,(PPDMDEVINS pDevIns, PDMAPICIRQ enmType, VMCPUID idCpu));
    12871306
    12881307    /**
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