All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/5] Make sure .device_run is always called in non-atomic context
@ 2018-10-18 18:02 Ezequiel Garcia
  2018-10-18 18:02 ` [PATCH v5 1/5] mem2mem: Require capture and output mutexes to match Ezequiel Garcia
                   ` (6 more replies)
  0 siblings, 7 replies; 12+ messages in thread
From: Ezequiel Garcia @ 2018-10-18 18:02 UTC (permalink / raw)
  To: linux-media
  Cc: Hans Verkuil, kernel, paul.kocialkowski, maxime.ripard,
	Sakari Ailus, Ezequiel Garcia

This series goal is to avoid drivers from having ad-hoc code
to call .device_run in non-atomic context. Currently, .device_run
can be called via v4l2_m2m_job_finish(), not only running
in interrupt context, but also creating a nasty re-entrant
path into mem2mem drivers.

The proposed solution is to add a per-device worker that is scheduled
by v4l2_m2m_job_finish, which replaces drivers having a threaded interrupt
or similar.

This change allows v4l2_m2m_job_finish() to be called in interrupt
context, separating .device_run and v4l2_m2m_job_finish() contexts.

It's worth mentioning that v4l2_m2m_cancel_job() doesn't need
to flush or cancel the new worker, because the job_spinlock
synchronizes both and also because the core prevents simultaneous
jobs. Either v4l2_m2m_cancel_job() will wait for the worker, or the
worker will be unable to run a new job.

Patches apply on top of Request API and the Cedrus VPU
driver.

Tested with cedrus driver using v4l2-request-test and
vicodec driver using gstreamer.

Ezequiel Garcia (4):
  mem2mem: Require capture and output mutexes to match
  v4l2-ioctl.c: Simplify locking for m2m devices
  v4l2-mem2mem: Avoid calling .device_run in v4l2_m2m_job_finish
  media: cedrus: Get rid of interrupt bottom-half

Sakari Ailus (1):
  v4l2-mem2mem: Simplify exiting the function in __v4l2_m2m_try_schedule

 drivers/media/v4l2-core/v4l2-ioctl.c          | 47 +------------
 drivers/media/v4l2-core/v4l2-mem2mem.c        | 66 ++++++++++++-------
 .../staging/media/sunxi/cedrus/cedrus_hw.c    | 26 ++------
 3 files changed, 51 insertions(+), 88 deletions(-)

-- 
2.19.1

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2018-11-13 18:59 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-18 18:02 [PATCH v5 0/5] Make sure .device_run is always called in non-atomic context Ezequiel Garcia
2018-10-18 18:02 ` [PATCH v5 1/5] mem2mem: Require capture and output mutexes to match Ezequiel Garcia
2018-10-18 18:02 ` [PATCH v5 2/5] v4l2-ioctl.c: Simplify locking for m2m devices Ezequiel Garcia
2018-10-18 18:02 ` [PATCH v5 3/5] v4l2-mem2mem: Simplify exiting the function in __v4l2_m2m_try_schedule Ezequiel Garcia
2018-10-18 18:02 ` [PATCH v5 4/5] v4l2-mem2mem: Avoid calling .device_run in v4l2_m2m_job_finish Ezequiel Garcia
2018-10-18 18:02 ` [PATCH v5 5/5] media: cedrus: Get rid of interrupt bottom-half Ezequiel Garcia
2018-11-12 16:53   ` Paul Kocialkowski
2018-11-11 21:26 ` [PATCH v5 0/5] Make sure .device_run is always called in non-atomic context Ezequiel Garcia
2018-11-12 16:52   ` Paul Kocialkowski
2018-11-12 21:05     ` Ezequiel Garcia
2018-11-13  9:01       ` Paul Kocialkowski
2018-11-13  9:01 ` Paul Kocialkowski

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.