Re: [PATCH v10 0/4] Media Device Allocator API

From: Sakari Ailus
Date: Fri Jan 25 2019 - 10:29:33 EST


Hi Shuah,

On Thu, Jan 24, 2019 at 01:32:37PM -0700, Shuah Khan wrote:
> Media Device Allocator API to allows multiple drivers share a media device.
> This API solves a very common use-case for media devices where one physical
> device (an USB stick) provides both audio and video. When such media device
> exposes a standard USB Audio class, a proprietary Video class, two or more
> independent drivers will share a single physical USB bridge. In such cases,
> it is necessary to coordinate access to the shared resource.
>
> Using this API, drivers can allocate a media device with the shared struct
> device as the key. Once the media device is allocated by a driver, other
> drivers can get a reference to it. The media device is released when all
> the references are released.

Thanks for the update. I have to apologise I haven't ended up reviewing the
set for some time. After taking a look at the current version, I'm happy to
see that a number of issues recognised during earlier review rounds have
been addressed.

Would you happen to have a media graph (media-ctl --print-dot and media-ctl
-p) from the device? That'd help understanding the device a bit better for
those who are not familiar with it.

>
> - This patch series is tested on 5.0-rc3 and addresses comments on
> v9 series from Hans Verkuil.
> - v9 was tested on 4.20-rc6.
> - Tested sharing resources with kaffeine, vlc, xawtv, tvtime, and
> arecord. When analog is streaming, digital and audio user-space
> applications detect that the tuner is busy and exit. When digital
> is streaming, analog and audio applications detect that the tuner is
> busy and exit. When arecord is owns the tuner, digital and analog
> detect that the tuner is busy and exit.
> - Tested media device allocator API with bind/unbind testing on
> snd-usb-audio and au0828 drivers to make sure /dev/mediaX is released
> only when the last driver is unbound.
> - Addressed review comments from Hans on the RFC v8 (rebased on 4.19)
> - Updated change log to describe the use-case more clearly.
> - No changes to 0001,0002 code since the v7 referenced below.
> - 0003 is a new patch to enable ALSA defines that have been
> disabled for kernel between 4.9 and 4.19.
> - Minor merge conflict resolution in 0004.
> - Added SPDX to new files.
>
> Changes since v9:
> - Patch 1: Fix mutex assert warning from find_module() calls. This
> code was written before the change to find_module() that requires
> callers to hold module_mutex. I missed this during my testing on
> 4.20-rc6. Hans Verkuil reported the problem.
> - Patch 4: sound/usb: Initializes all the entities it can before
> registering the device based on comments from Hans Verkuil
> - Carried Reviewed-by tag from Takashi Iwai for the sound from v9.
> - No changes to Patches 2 and 3.
>
> References:
> https://lkml.org/lkml/2018/11/2/169
> https://www.mail-archive.com/linux-media@xxxxxxxxxxxxxxx/msg105854.html
>
> Shuah Khan (4):
> media: Media Device Allocator API
> media: change au0828 to use Media Device Allocator API
> media: media.h: Enable ALSA MEDIA_INTF_T* interface types
> sound/usb: Use Media Controller API to share media resources
>
> Documentation/media/kapi/mc-core.rst | 41 ++++
> drivers/media/Makefile | 4 +
> drivers/media/media-dev-allocator.c | 144 +++++++++++
> drivers/media/usb/au0828/au0828-core.c | 12 +-
> drivers/media/usb/au0828/au0828.h | 1 +
> include/media/media-dev-allocator.h | 53 ++++
> include/uapi/linux/media.h | 25 +-
> sound/usb/Kconfig | 4 +
> sound/usb/Makefile | 2 +
> sound/usb/card.c | 14 ++
> sound/usb/card.h | 3 +
> sound/usb/media.c | 327 +++++++++++++++++++++++++
> sound/usb/media.h | 74 ++++++
> sound/usb/mixer.h | 3 +
> sound/usb/pcm.c | 29 ++-
> sound/usb/quirks-table.h | 1 +
> sound/usb/stream.c | 2 +
> sound/usb/usbaudio.h | 6 +
> 18 files changed, 723 insertions(+), 22 deletions(-)
> create mode 100644 drivers/media/media-dev-allocator.c
> create mode 100644 include/media/media-dev-allocator.h
> create mode 100644 sound/usb/media.c
> create mode 100644 sound/usb/media.h
>

--
Kind regards,

Sakari Ailus