Hans,

A few questions:

1.  The handle member in struct cx18_stream is initialized and cleared
to 0xffffffff to indicated non-use.  BTW, the CX23418 appears to begin
assigning task handles starting with 0.  So what is
cx18_streams:cx18_find_handle() really trying to do?  Find the first
used handle or first unused handle?

   u32 cx18_find_handle(struct cx18 *cx)
   {
        int i;

        /* find first available handle to be used for global settings */
        for (i = 0; i < CX18_MAX_STREAMS; i++) {
                struct cx18_stream *s = &cx->streams[i];

                if (s->v4l2dev && s->handle)
                        return s->handle;
        }
        return 0;
   }

The above code will reject handle 0 and likely return either 0xffffffff
or 1 in the most common cases.



2. The CX23418 appears to reuse handles:

Aug 23 11:01:02 morgan kernel: cx18-0 info: Start feed: pid = 0x31 index = 0
Aug 23 11:01:02 morgan kernel: cx18-0 info: Starting Transport DMA
Aug 23 11:01:02 morgan kernel: cx18-0 info: Start encoder stream TS
Aug 23 11:01:02 morgan kernel: cx18-0 info: Stream TS task given handle 0 by 
CX23418
[...]
Aug 23 11:01:09 morgan kernel: cx18-0 info: Stopping Transport DMA
Aug 23 11:01:09 morgan kernel: cx18-0 info: Stop Capture
Aug 23 11:01:09 morgan kernel: cx180 irq: SW1: 10000  SW2: 0  HW2: 0
Aug 23 11:01:09 morgan kernel: cx180 irq: queue_get_buf_irq enter
Aug 23 11:01:09 morgan kernel: cx180 irq: queue_get_buf_irq normal exit
Aug 23 11:01:09 morgan kernel: cx18-0 info: Stop Capture mbox command sent
Aug 23 11:01:09 morgan kernel: cx18-0 info: Destroy task mbox command sent
Aug 23 11:01:09 morgan kernel: cx18-0 info: DSP0 interrupt mask altered
Aug 23 11:26:22 morgan kernel: cx18-0 info: Start encoder stream encoder MPEG
Aug 23 11:26:22 morgan kernel: cx18-0 info: Stream encoder MPEG task given 
handle 0 by CX23418

So without asking the CX23418 to release the MDLs at the end of a
capture, the CX23418 can later return a data buffer with a buffer id in
the wrong range for a stream type.   cx18_queue_get_buf_irq() will gripe
when this happens and the data in that buffer will be wrongly dropped.

In cx23418.h, CX18_CPU_DE_ReleaseMDL is commented out.  Is there a
problem with it, or is it OK to uncomment and use?

Regards,
Andy


_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel

Reply via email to