lkml.org 
[lkml]   [2018]   [Mar]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [RFCv4,19/21] media: vim2m: add request support
    From
    Date
    Hi,

    On Tue, 2018-03-13 at 19:24 +0900, Alexandre Courbot wrote:
    > On Fri, Mar 9, 2018 at 11:35 PM, Paul Kocialkowski
    > <paul.kocialkowski@bootlin.com> wrote:
    > > Hi,
    > >
    > > On Thu, 2018-03-08 at 22:48 +0900, Alexandre Courbot wrote:
    > > > Hi Paul!
    > > >
    > > > Thanks a lot for taking the time to try this! I am also working on
    > > > getting it to work with an actual driver, but you apparently found
    > > > rough edges that I missed.
    > > >
    > > > On Thu, Mar 8, 2018 at 1:37 AM, Paul Kocialkowski
    > > > <paul.kocialkowski@bootlin.com> wrote:
    > > > > On Tue, 2018-02-20 at 13:44 +0900, Alexandre Courbot wrote:

    [...]

    > > > > > +static int vim2m_request_submit(struct media_request *req,
    > > > > > + struct media_request_entity_data
    > > > > > *_data)
    > > > > > +{
    > > > > > + struct v4l2_request_entity_data *data;
    > > > > > +
    > > > > > + data = to_v4l2_entity_data(_data);
    > > > >
    > > > > We need to call v4l2_m2m_try_schedule here so that m2m
    > > > > scheduling
    > > > > can
    > > > > happen when only 2 buffers were queued and no other action was
    > > > > taken
    > > > > from usespace. In that scenario, m2m scheduling currently
    > > > > doesn't
    > > > > happen.
    > > >
    > > > I don't think I understand the sequence of events that results in
    > > > v4l2_m2m_try_schedule() not being called. Do you mean something
    > > > like:
    > > >
    > > > *
    > > > * QBUF on output queue with request set
    > > > * QBUF on capture queue
    > > > * SUBMIT_REQUEST
    > > >
    > > > ?
    > > >
    > > > The call to vb2_request_submit() right after should trigger
    > > > v4l2_m2m_try_schedule(), since the buffers associated to the
    > > > request
    > > > will enter the vb2 queue and be passed to the m2m framework, which
    > > > will then call v4l2_m2m_try_schedule(). Or maybe you are thinking
    > > > about a different sequence of events?
    > >
    > > This is indeed the sequence of events that I'm seeing, but the
    > > scheduling call simply did not happen on vb2_request_submit. I
    > > suppose I will need to investigate some more to find out exactly
    > > why.
    > >
    > > IIRC, the m2m qbuf function is called (and fails to schedule) when
    > > the
    > > ioctl happens, not when the task is submitted.
    > >
    > > This issue is seen with vim2m as well as the rencently-submitted
    > > sunxi-
    > > cedrus driver (with the in-driver calls to v4l2_m2m_try_schedule
    > > removed, obviously). If needs be, I could provide a standalone test
    > > program to reproduce it.
    >
    > If you have a standalone program that can reproduce this on vim2m,
    > then I would like to see it indeed, if only to understand what I have
    > missed.

    You can find the test file for this use case at:
    https://gist.github.com/paulkocialkowski/4cfa350e1bbe8e3bf714480bba83ea72

    Cheers!

    --
    Paul Kocialkowski, Bootlin (formerly Free Electrons)
    Embedded Linux and kernel engineering
    https://bootlin.com[unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2018-03-14 14:28    [W:6.682 / U:0.452 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site