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

Commit 4f701d1e authored by Alan Cox's avatar Alan Cox Committed by Jeff Garzik
Browse files

ata_timing: ensure t->cycle is always correct



Russell King hit a case where quantisation errors accumulated such that
the cycle time was shorter than rather than equal to the active/recovery
time. The code already knows how to stretch times to fit the cycle time
but does not know about the reverse.

Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent c1c4e8d5
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2640,6 +2640,12 @@ int ata_timing_compute(struct ata_device *adev, unsigned short speed,
		t->recover = t->cycle - t->active;
	}
	
	/* In a few cases quantisation may produce enough errors to
	   leave t->cycle too low for the sum of active and recovery
	   if so we must correct this */
	if (t->active + t->recover > t->cycle)
		t->cycle = t->active + t->recover;

	return 0;
}