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,
  gentle ping as I wish this to go in for v6.13

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