From: Sujit Reddy Thumma Date: Mon, 26 May 2014 05:29:13 +0000 (+0530) Subject: scsi: ufs: Fix hardware race conditions while aborting a command X-Git-Tag: omap-for-v3.16/fixes-against-rc1~13^2~61 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f20810d8d0bbe70dc6bb526213c31171f7e54751;p=pandora-kernel.git scsi: ufs: Fix hardware race conditions while aborting a command There is a possible race condition in the hardware when the abort command is issued to terminate the ongoing SCSI command as described below: - A bit in the door-bell register is set in the controller for a new SCSI command. - In some rare situations, before controller get a chance to issue the command to the device, the software issued an abort command. - If the device recieves abort command first then it returns success because the command itself is not present. - Now if the controller commits the command to device it will be processed. - Software thinks that command is aborted and proceed while still the device is processing it. - The software, controller and device may go out of sync because of this race condition. To avoid this, query task presence in the device before sending abort task command so that after the abort operation, the command is guaranteed to be non-existent in both controller and the device. Signed-off-by: Sujit Reddy Thumma Reviewed-by: Yaniv Gardi Tested-by: Dolev Raviv Acked-by: Vinayak Holikatti Signed-off-by: Christoph Hellwig --- Reading git-diff-tree failed