|
Rockbox mail archiveSubject: Re: Red freezeRe: Red freeze
From: Mike Holden <rockbox_at_mikeholden.uklinux.net>
Date: Mon, 31 Mar 2003 11:52:19 +0100 (BST) Mike Holden said: > We hit a disk error and the mpeg thread skips to the next track. It then > tries to start loading the next track, and gets as far as the > perform_soft_reset() at the top of ata_read_sectors(). This calls > wait_for_rdy() which calls wait_for_busy(). Both of these function calls > will wait for 10 seconds each before timing out and returning. On top of > this, the perform_soft_reset() then loops round calling wait_for_rdy() 9 > times (the count is 8, but it loops 9 times!), thus giving 9 * 20 > seconds = 3 ___minutes___ (the comment says "up to 30 seconds")!!!! > perform_soft_reset() thus fails, and we return -1 from > ata_read_sectors(). This failure takes at least 3 minutes. The mpeg code > then skips to the next track and the whole process starts again. Just looked at the code again, and this is not quite right. If wait_for_bsy() fails, then wait_for_rdy() returns immediately, thus giving a total delay of 10 seconds per loop, so 90 seconds total wait rather than 3 minutes. Still a lot though! -- Mike HoldenReceived on 2003-03-31 Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy |