VirtualBox

Changeset 63045 in vbox for trunk/src


Ignore:
Timestamp:
Aug 5, 2016 1:54:39 PM (9 years ago)
Author:
vboxsync
Message:

DevIoApic: bugref:8386:39 Allow writing the remote IRR bit while writing the RTE when emulating the ICH9 specification of the I/O APIC.

File:
1 edited

Legend:

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

    r63043 r63045  
    134134/** Redirection table entry - Gets the vector. */
    135135#define IOAPIC_RTE_GET_VECTOR(a_Reg)            ((a_Reg) & IOAPIC_RTE_VECTOR)
     136
     137#if IOAPIC_HARDWARE_VERSION == IOAPIC_HARDWARE_VERSION_82093AA
    136138/** Redirection table entry - Valid write mask. */
    137139#define IOAPIC_RTE_VALID_WRITE_MASK             (  IOAPIC_RTE_DEST     | IOAPIC_RTE_MASK      | IOAPIC_RTE_TRIGGER_MODE \
    138140                                                 | IOAPIC_RTE_POLARITY | IOAPIC_RTE_DEST_MODE | IOAPIC_RTE_DELIVERY_MODE \
    139141                                                 | IOAPIC_RTE_VECTOR)
    140 
    141 #if IOAPIC_HARDWARE_VERSION == IOAPIC_HARDWARE_VERSION_82093AA
    142142/** Redirection table entry - Valid read mask. */
    143143# define IOAPIC_RTE_VALID_READ_MASK             (  IOAPIC_RTE_DEST       | IOAPIC_RTE_MASK          | IOAPIC_RTE_TRIGGER_MODE \
     
    145145                                                 | IOAPIC_RTE_DEST_MODE  | IOAPIC_RTE_DELIVERY_MODE | IOAPIC_RTE_VECTOR)
    146146#elif IOAPIC_HARDWARE_VERSION == IOAPIC_HARDWARE_VERSION_ICH9
    147 /** Redirection table entry - Valid read mask. */
     147/** Redirection table entry - Valid write mask (incl. remote IRR). */
     148#define IOAPIC_RTE_VALID_WRITE_MASK             (  IOAPIC_RTE_DEST       | IOAPIC_RTE_MASK      | IOAPIC_RTE_TRIGGER_MODE \
     149                                                 | IOAPIC_RTE_REMOTE_IRR | IOAPIC_RTE_POLARITY  | IOAPIC_RTE_DEST_MODE \
     150                                                 | IOAPIC_RTE_DELIVERY_MODE | IOAPIC_RTE_VECTOR)
     151/** Redirection table entry - Valid read mask (incl. ExtDestID). */
    148152# define IOAPIC_RTE_VALID_READ_MASK             (  IOAPIC_RTE_DEST            | IOAPIC_RTE_EXT_DEST_ID | IOAPIC_RTE_MASK \
    149153                                                 | IOAPIC_RTE_TRIGGER_MODE    | IOAPIC_RTE_REMOTE_IRR  | IOAPIC_RTE_POLARITY \
     
    620624
    621625        IOAPIC_UNLOCK(pThis);
    622 #ifdef DEBUG_ramshankar
    623         /* Seems this can trigger if the guest reprograms the I/O APIC before an EOI, see @bugref{8386#c37}. */
    624626        AssertMsg(fRemoteIrrCleared, ("Failed to clear remote IRR for vector %#x (%u)\n", u8Vector, u8Vector));
    625 #endif
    626627    }
    627628    else
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