Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa0cfc20 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  libata: improve phantom device detection
parents 8141c7f3 6a6b97d3
Loading
Loading
Loading
Loading
+11 −2
Original line number Original line Diff line number Diff line
@@ -1227,10 +1227,19 @@ int ata_sff_hsm_move(struct ata_port *ap, struct ata_queued_cmd *qc,
			/* ATA PIO protocol */
			/* ATA PIO protocol */
			if (unlikely((status & ATA_DRQ) == 0)) {
			if (unlikely((status & ATA_DRQ) == 0)) {
				/* handle BSY=0, DRQ=0 as error */
				/* handle BSY=0, DRQ=0 as error */
				if (likely(status & (ATA_ERR | ATA_DF)))
				if (likely(status & (ATA_ERR | ATA_DF))) {
					/* device stops HSM for abort/error */
					/* device stops HSM for abort/error */
					qc->err_mask |= AC_ERR_DEV;
					qc->err_mask |= AC_ERR_DEV;
				else {

					/* If diagnostic failed and this is
					 * IDENTIFY, it's likely a phantom
					 * device.  Mark hint.
					 */
					if (qc->dev->horkage &
					    ATA_HORKAGE_DIAGNOSTIC)
						qc->err_mask |=
							AC_ERR_NODEV_HINT;
				} else {
					/* HSM violation. Let EH handle this.
					/* HSM violation. Let EH handle this.
					 * Phantom devices also trigger this
					 * Phantom devices also trigger this
					 * condition.  Mark hint.
					 * condition.  Mark hint.