• Dan Williams's avatar
    ioat: switch watchdog and reset handler from workqueue to timer · 09c8a5b8
    Dan Williams authored
    In order to support dynamic resizing of the descriptor ring or polling
    for a descriptor in the presence of a hung channel the reset handler
    needs to make progress while in a non-preemptible context.  The current
    workqueue implementation precludes polling channel reset completion
    under spin_lock().
    
    This conversion also allows us to return to opportunistic cleanup in the
    ioat2 case as the timer implementation guarantees at least one cleanup
    after every descriptor is submitted.  This means the worst case
    completion latency becomes the timer frequency (for exceptional
    circumstances), but with the benefit of avoiding busy waiting when the
    lock is contended.
    Signed-off-by: default avatarMaciej Sosnowski <maciej.sosnowski@intel.com>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    09c8a5b8
dma.c 30.2 KB