Aha, a smoking gun!

> #define WAITFIFO(n) if(ps3v->NoPCIRetry) \
>        while(((INREG(SUBSYS_STAT_REG) >> 8) & 0x1f) < n){}
> 
> So the NoPCIRetry option disables/enables the wait , if i understand
> correct.

Right.

This macro loops until there are at least n free entries in the FIFO,
but only when NoPCIRetry is set.
 
> Altough at the moment i have a bit of the problem understanding it.
> when NoPCIRetry is true it does the wait for FIFO space, and else the
> PCI
> chipset does the retry by itself ?? 

I remember that the meaning of "retry" is confusing in this case.  But
it doesn't really matter since it's clear that this loop has to run, to
avoid hanging the machine on a full FIFO.

Nice work.  

The next step is to try to convince every video driver writer to have
the equivalent of this loop in their driver enabled by default.  It's
not just a RTL issue - these hangups can hose lots of other time
sensitive code as well.

John


-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/

Reply via email to