Skip to content
  • Akihiko Odaki's avatar
    ad431f0f
    e1000e: Notify only new interrupts · ad431f0f
    Akihiko Odaki authored
    
    
    In MSI-X mode, if there are interrupts already notified but not cleared
    and a new interrupt arrives, e1000e incorrectly notifies the notified
    ones again along with the new one.
    
    To fix this issue, replace e1000e_update_interrupt_state() with
    two new functions: e1000e_raise_interrupts() and
    e1000e_lower_interrupts(). These functions don't only raise or lower
    interrupts, but it also performs register writes which updates the
    interrupt state. Before it performs a register write, these function
    determines the interrupts already raised, and compares with the
    interrupts raised after the register write to determine the interrupts
    to notify.
    
    The introduction of these functions made tracepoints which assumes that
    the caller of e1000e_update_interrupt_state() performs register writes
    obsolete. These tracepoints are now removed, and alternative ones are
    added to the new functions.
    
    Signed-off-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
    ad431f0f
    e1000e: Notify only new interrupts
    Akihiko Odaki authored
    
    
    In MSI-X mode, if there are interrupts already notified but not cleared
    and a new interrupt arrives, e1000e incorrectly notifies the notified
    ones again along with the new one.
    
    To fix this issue, replace e1000e_update_interrupt_state() with
    two new functions: e1000e_raise_interrupts() and
    e1000e_lower_interrupts(). These functions don't only raise or lower
    interrupts, but it also performs register writes which updates the
    interrupt state. Before it performs a register write, these function
    determines the interrupts already raised, and compares with the
    interrupts raised after the register write to determine the interrupts
    to notify.
    
    The introduction of these functions made tracepoints which assumes that
    the caller of e1000e_update_interrupt_state() performs register writes
    obsolete. These tracepoints are now removed, and alternative ones are
    added to the new functions.
    
    Signed-off-by: default avatarAkihiko Odaki <akihiko.odaki@daynix.com>
    Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Loading