Re: [PATCH v6 0/4] media: pisp-be: Split jobs creation and scheduling

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

 



Hi

On Mon, Oct 14, 2024 at 08:55:00AM +0200, Jacopo Mondi wrote:
> Hi,
>   gentle ping as I wish this to go in for v6.13

    gentle ping as I wish this to go in for v6.14

>
> On Mon, Sep 30, 2024 at 10:32:56AM GMT, Jacopo Mondi wrote:
> > v5->v6:
> > - Make the driver depend on PM
> >   - Simplify the probe() routine by using pm_runtime_
> >   - Remove suspend call from remove()
> >
> > v4->v5:
> > - Use appropriate locking constructs:
> >   - spin_lock_irq() for pispbe_prepare_job() called from non irq context
> >   - spin_lock_irqsave() for pispbe_schedule() called from irq context
> >   - Remove hw_lock from ready_queue accesses in stop_streaming and
> >     start_streaming
> >   - Fix trivial indentation mistake in 4/4
> >
> > v3->v4:
> > - Expand commit message in 2/4 to explain why removing validation in schedule()
> >   is safe
> > - Drop ready_lock spinlock
> > - Use non _irqsave version of safe_guard(spinlock
> > - Support !CONFIG_PM in 4/4 by calling the enable/disable routines directly
> >   and adjust pm_runtime usage as suggested by Laurent
> >
> > v2->v3:
> > - Mark pispbe_runtime_resume() as __maybe_unused
> > - Add fixes tags where appropriate
> >
> > v1->v2:
> > - Add two patches to address Laurent's comments separately
> > - use scoped_guard() when possible
> > - Add patch to fix runtime_pm imbalance
> >
> > 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 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 routine is only called when
> > a job has completed, and we can't solely rely on it for scheduling new
> > jobs.
> >
> > Signed-off-by: Jacopo Mondi <jacopo.mondi@xxxxxxxxxxxxxxxx>
> > ---
> > Jacopo Mondi (4):
> >       media: pisp_be: Drop reference to non-existing function
> >       media: pisp_be: Remove config validation from schedule()
> >       media: pisp_be: Split jobs creation and scheduling
> >       media: pisp_be: Fix pm_runtime underrun in probe
> >
> >  drivers/media/platform/raspberrypi/pisp_be/Kconfig |   1 +
> >  .../media/platform/raspberrypi/pisp_be/pisp_be.c   | 183 ++++++++++-----------
> >  2 files changed, 88 insertions(+), 96 deletions(-)
> > ---
> > base-commit: 81ee62e8d09ee3c7107d11c8bbfd64073ab601ad
> > change-id: 20240930-pispbe-mainline-split-jobs-handling-v6-15dc16e11e3a
> >
> > Best regards,
> > --
> > Jacopo Mondi <jacopo.mondi@xxxxxxxxxxxxxxxx>
> >
> >
>




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux