Re: [ES40-developers] CDROM issue
Status: Alpha
Brought to you by:
iamcamiel
From: Brian W. <bdw...@in...> - 2008-03-18 13:55:25
|
Yes, that's exactly what's happening -- I write lock the registers prior to the execute() call, and since the read from cdrom takes so long, the lock times out. If anyone is knowledgeable about the workings of IDE, let me know if this makes sense: The alternate status register seems to be a semaphore in some respects: the host polls it to determine the 'busy' and 'drq' status to decide when to read/write from/to the rest of the registers. When busy (and/or drq) are asserted, the ide thread should have shut down so there won't be any contention with the cpu thread. So I did a couple of things: * removed all of the general register locking. * busmaster locking is still in place, but it might not be needed. This locking is pretty fine grained so nothing should time out waiting for it. * created an alt_status variable which gets updated when the real status becomes stable (i.e. at the end of the execute() run, after the drq status is changed, etc) Access to this variable is locked. * everything else is a free for all. This patch implements that methodology as well as an optional delayed interrupt. The OSes still lose interrupts sometimes and ATAPI is busted something fierce. If anyone wants to take a shot at it, feel free. I've been looking at it long enough that I'm out of ideas as to what is going wrong. Brian On Tue, 2008-03-18 at 13:13 +0100, Camiel Vanderhoeven wrote: > Brian, > > I think you're the one who understands the ATAPI state engine best; > could there be a point where the ATAPI engine is waiting for something > from the CPU, while keeping the registers mutex write-locked? > > Camiel. > > On Tue, Mar 18, 2008 at 12:36 PM, Fausto Saporito <fa...@un...> wrote: > > Hello all, > > > > I have to fix my previous post. > > > > I have the same error with a "file", not only with "device". > > > > regards, > > fausto > > > > > > > > Quoting Fausto Saporito <fa...@un...>: > > > > > Hello Brial et all, > > > > > > just for your info, with the latest cvs I have always a crash during a > > > cdrom mount, with the same error: > > > > > > Exception in CPU thread: Threading error: Locking error (Timeout: > > > c:\users\p\es4 > > > 0\src\Lock.h, line 581) trying to read-lock mutex ide1-registers from > > > thread cpu > > > 0. > > > : c:\users\p\es40\src\Lock.h, line 587. > > > > > > regards, > > > fausto > > > > > > PS > > > with file is ok. > > > > > > ------------------------------------------------------------------------- > > > This SF.net email is sponsored by: Microsoft > > > Defy all challenges. Microsoft(R) Visual Studio 2008. > > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > > _______________________________________________ > > > Es40-developers mailing list > > > Es4...@li... > > > https://lists.sourceforge.net/lists/listinfo/es40-developers > > > > > > > > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by: Microsoft > > Defy all challenges. Microsoft(R) Visual Studio 2008. > > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > > _______________________________________________ > > Es40-developers mailing list > > Es4...@li... > > https://lists.sourceforge.net/lists/listinfo/es40-developers > > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > Es40-developers mailing list > Es4...@li... > https://lists.sourceforge.net/lists/listinfo/es40-developers |