• D
    ioatdma: fix race between updating ioat->head and IOAT_COMPLETION_PENDING · 4dec23d7
    Dave Jiang 提交于
    There is a race that can hit during __cleanup() when the ioat->head pointer is
    incremented during descriptor submission. The __cleanup() can clear the
    PENDING flag when it does not see any active descriptors. This causes new
    submitted descriptors to be ignored because the COMPLETION_PENDING flag is
    cleared. This was introduced when code was adapted from ioatdma v1 to ioatdma
    v2. For v2 and v3, IOAT_COMPLETION_PENDING flag will be abandoned and a new
    flag IOAT_CHAN_ACTIVE will be utilized. This flag will also be protected under
    the prep_lock when being modified in order to avoid the race.
    Signed-off-by: NDave Jiang <dave.jiang@intel.com>
    Reviewed-by: NDan Williams <djbw@fb.com>
    Signed-off-by: NVinod Koul <vinod.koul@intel.com>
    4dec23d7
dma_v3.c 38.9 KB