Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] AW: Re: Fifo Full - Problem while OSD active (with DXR3)



 
> I haven't checked the logs, yet - but since upgrading from ct'vdr 1.2.2 to
> 1.2.6 I often had DXR3 crashes when using the OSD. This happens
> reproduceable
> when I call the OSD within the first minutes after starting VDR. While use
> it
> happens sporadically, especially when switching between OSD table fastly
> (e.g. being in Timer-menu and pressing the macro key for Recordings-menu,
> which means the OSD is closed and reopened very fast).
> 
> I thougt I broke something myself, but as it seems you have such problems,
> too. The interesting is that VDR doesn't recover from such a crash. It
> seems
> VDR doesn't detect it.
> 
> Rene


That's the reason why I changed from C'ts VDR to selfcompiling (although I
love the debian paket management very much ;-)

With the C't Version the VDR gets stuck (doesn't recover). When
selfcompiling it's more a short freeze (interruptions in musik with
mp3-plugin) or disarranged OSD format ...

I found this part of the em8300_fifo.c to bet he responsible part for the
interrupt:
-----------  schnipp ---------------
if (!copy_size) {
//printk("Fifo Full %p\n", fifo);
interruptible_sleep_on_timeout(&fifo->wait, HZ);
if time_after_eq(jiffies, safe_jiff + HZ) {
printk("Fifo still full, trying stop %p\n", fifo);
em8300_video_setplaymode(fifo->em, 0_PLAYMODE_STOPPED);
em8300_video_setplaymode(fifo->em, EM8300_PLAYMODE_PLAY);
safe_jiff = jiffies;
interruptible_sleep_on_timeout(&fifo->wait, 3 * HZ);
if time_after_eq(jiffies, safe_jiff + (3 * HZ)) {
printk(KERN_ERR "em8300.o: FIFO sync timeout during blocking write, n = %d,
copy_size = %d, total = %d, free slots = $
return -EINTR;
}
}
-----------  schnapp ---------------

But I don't really know what the variable !copy_size stands for ...

-----------  schnipp ---------------
copy_size = em8300_fifo_write_nolock(fifo, n, userbuffer, flags);
if (copy_size < 0) {
return -EIO;
}
n -= copy_size;
userbuffer += copy_size;
total_bytes_written += copy_size;
-----------  schnapp ---------------

This ^^^^^ part (also em8300_fifo.c) defines !copy_size. Maybe someone can
tell _why_ (what's the reason for freezing) the OSD gots stuck, cause the
prob isn't realy reproducable (sometimes it freezes, sometimes not).
So even when not solving the problem, it should be possible to understand it
;-)

LG
Roman



-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index