VirtualBox

Ignore:
Timestamp:
Jul 27, 2021 9:59:18 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145936
Message:

DevIoApic: Comment update for flip-flip case. bugref:10073

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/DevIoApic.cpp

    r90332 r90363  
    262262    /** The IRQ tags and source IDs for each pin (tracing purposes). */
    263263    uint32_t                au32TagSrc[IOAPIC_NUM_INTR_PINS];
    264     /** Bitmap keeping the flip-flop-ness of pending interrupts. */
     264    /** Bitmap keeping the flip-flop-ness of pending interrupts.
     265     * The information held here is only relevan between SetIrq and the
     266     * delivery, thus no real need to initialize or reset this. */
    265267    uint64_t                bmFlipFlop[(IOAPIC_NUM_INTR_PINS + 63) / 64];
    266268
     
    10041006             * after a flip-flop request. The de-assert is a NOP wrts to signaling an interrupt
    10051007             * hence just the assert is done.
    1006              */
     1008             *
     1009             * Update @bugref{10073}: We now de-assert the interrupt line once it has been
     1010             * delivered to the APIC to prevent it from getting re-delivered by accident (e.g.
     1011             * on RTE write or by buggy EOI code).  The XT-PIC works differently because of the
     1012             * INTA, so it's set IRQ function will do what's described above: first lower the
     1013             * interrupt line and then immediately raising it again, leaving the IRR flag set
     1014             * most of the time.  (How a real HPET/IOAPIC does this is a really good question
     1015             * and would be observable if we could get at the IRR register of the IOAPIC...
     1016             * Maybe by modifying the RTE? Our code will retrigger the interrupt that way.) */
    10071017            ASMBitSet(pThis->bmFlipFlop, idxRte);
    10081018            IOAPIC_ASSERT_IRQ(uBusDevFn, idxRte, uPinMask, true);
Note: See TracChangeset for help on using the changeset viewer.

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