Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Re: Red freeze

Re: 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 Holden
Received on 2003-03-31

Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy