• Stefan Bader's avatar
    x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap. · 4c1f10b9
    Stefan Bader authored
    Not in upstream above 2.6.27 due to change in the way this code works
    (has been fixed differently there.)
    
    Someone from the community found out, that after repeatedly unloading
    and loading a device driver that uses MSI IRQs, the system eventually
    assigned the vector initially reserved for IRQ0 to the device driver.
    
    The reason for this is, that although IRQ0 is tied to the
    FIRST_DEVICE_VECTOR when declaring the irq_vector table, the
    corresponding bit in the used_vectors map is not set. So, if vectors are
    released and assigned often enough, the vector will get assigned to
    another interrupt. This happens more often with MSI interrupts as those
    are exclusively using a vector.
    
    Fix this by setting the bit for the FIRST_DEVICE_VECTOR in the bitmap.
    Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>
    Acked-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    4c1f10b9
io_apic_32.c 69.1 KB