Skip to content
  • Gabriel L. Somlo's avatar
    qemu: x86: ignore ioapic polarity · 220c8ed5
    Gabriel L. Somlo authored
    
    
    Both QEMU and KVM have already accumulated a significant number of
    optimizations based on the hard-coded assumption that ioapic polarity
    will always use the ActiveHigh convention, where the logical and
    physical states of level-triggered irq lines always match (i.e.,
    active(asserted) == high == 1, inactive == low == 0). QEMU guests
    are expected to follow directions given via ACPI and configure the
    ioapic with polarity 0 (ActiveHigh). However, even when misbehaving
    guests (e.g. OS X <= 10.9) set the ioapic polarity to 1 (ActiveLow),
    QEMU will still use the ActiveHigh signaling convention when
    interfacing with the emulated ioapic.
    
    This patch modifies the emulated ioapic to completely ignore polarity
    as set by the guest OS, enabling misbehaving guests to work alongside
    those which comply with the ActiveHigh polarity specified by QEMU's
    ACPI tables.
    
    Signed-off-by: default avatarGabriel L. Somlo <somlo@cmu.edu>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    220c8ed5