Hello!
On 16.02.2019 6:42, Jason Yan wrote:
For internal cmds, we will unmap DMA memory associated with the cmd
before we abort the cmd. If DMA transfering data before the aborting,
ÂÂ Transferring.
bus error will occured.
ÂÂ Occur.
ata_exec_internal_sg
ÂÂ ->ata_port_freeze if timeout
ÂÂÂÂ ->ata_qc_complete
ÂÂÂÂÂÂ ->ata_sg_clean
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ dma transfering data = bus error
ÂÂ ->ap->ops->post_internal_cmd
ÂÂÂÂ ->sas_ata_post_internal
ÂÂÂÂÂÂ ->sas_ata_internal_abort
ÂÂÂÂÂÂÂÂ ->abort the cmd
Fix this by move post_internal_cmd() before unmapping the DMA memory
ÂÂ Moving.
when time out. Notice that we have to set ATA_QCFLAG_FAILED flag before[...]
calling post_internal_cmd() so that the aborting will work.
Reported-by: luojian <luojian5@xxxxxxxxxx>
Signed-off-by: Jason Yan <yanaijie@xxxxxxxxxx>
MBR, Sergei