linux icon indicating copy to clipboard operation
linux copied to clipboard

media: pisp-be: Split jobs creation and scheduling

Open jmondi opened this issue 6 months ago • 3 comments

Before submitting the same change to mainline, I would like to know what you think about this. This change will make it easier to support multi-context handling without duplicating the media graph instances.


Currently the 'pispbe_schedule()' function does two things:

  1. Tries to assemble a job by inspecting all the video node queues to make sure all the required buffers are available
  2. Submit the job to the hardware

The pispbe_schedule() function is called at:

  • video device start_streaming() time
  • video device qbuf() time
  • irq handler

As assembling a job requires inspecting all queues, it is a rather time consuming operation which is better not run in IRQ context.

To avoid the executing the time consuming job creation in interrupt context split the job creation and job scheduling in two distinct operations. When a well-formed job is created, append it to the newly introduced 'pispbe->job_queue' where it will be dequeued from by the scheduling routine.

At start_streaming() and qbuf() time immediately try to schedule a job if one has been created as the irq handler routing is only called when a job has completed, and we can't solely rely on it for scheduling new jobs.

jmondi avatar Aug 05 '24 15:08 jmondi