VirtualBox

Changeset 90309 in vbox


Ignore:
Timestamp:
Jul 23, 2021 2:04:22 PM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
145865
Message:

DevIoApic: Tenative fix for re-triggering edge interrupts in EOI callback. bugref:10073 oem2ticketref:43

File:
1 edited

Legend:

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

    r90308 r90309  
    875875    {
    876876        uint64_t const u64Rte = pThis->au64RedirTable[idxRte];
    877 /** @todo r=bird: bugref:10073: Ignore edge triggered entries here since
    878  * the APIC will only call us for those?  Not doing so confuses ended up
    879  * with spurious HPET/RTC IRQs in SMP linux because of it sharing the vector
    880  * with a level-triggered IRQ (like vboxguest) delivered on a different CPU.
    881  * Alternatively, make the call specify the APIC number of use that in the
    882  * filter too/instead. */
    883         if (IOAPIC_RTE_GET_VECTOR(u64Rte) == u8Vector)
     877/** @todo r=bird: bugref:10073: I've changed it to ignore edge triggered
     878 * entries here since the APIC will only call us for those?  Not doing so
     879 * confuses ended up with spurious HPET/RTC IRQs in SMP linux because of it
     880 * sharing the vector with a level-triggered IRQ (like vboxguest) delivered on a
     881 * different CPU.
     882 *
     883 * Maybe we should also/instead filter on the source APIC number? */
     884        if (   IOAPIC_RTE_GET_VECTOR(u64Rte) == u8Vector
     885            && IOAPIC_RTE_GET_TRIGGER_MODE(u64Rte) != IOAPIC_RTE_TRIGGER_MODE_EDGE)
    884886        {
    885887#ifdef DEBUG_ramshankar
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