• Lukas Wunner's avatar
    PCI: pciehp: Handle events synchronously · 0e94916e
    Lukas Wunner authored
    Up until now, pciehp's IRQ handler schedules a work item for each event,
    which in turn schedules a work item to enable or disable the slot.  This
    double indirection was necessary because sleeping wasn't allowed in the
    IRQ handler.
    
    However it is now that pciehp has been converted to threaded IRQ handling
    and polling, so handle events synchronously in pciehp_ist() and remove
    the work item infrastructure (with the exception of work items to handle
    a button press after the 5 second delay).
    
    For link or presence change events, move the register read to determine
    the current link or presence state behind acquisition of the slot lock
    to prevent it from becoming stale while the lock is contended.
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    0e94916e
pciehp_ctrl.c 10.3 KB