linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: shuah <shuah@kernel.org>,
	mchehab@kernel.org, perex@perex.cz, tiwai@suse.com
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	alsa-devel@alsa-project.org
Subject: Re: [PATCH v9 0/4] Media Device Allocator API
Date: Thu, 24 Jan 2019 08:30:36 +0100	[thread overview]
Message-ID: <ecd0647c-4ee7-fe17-4324-4770f1f1dcdc@xs4all.nl> (raw)
In-Reply-To: <2ebe7776-d24d-79d5-bd38-efba4221b7c2@kernel.org>

On 1/24/19 2:35 AM, shuah wrote:
> On 1/21/19 7:46 AM, Hans Verkuil wrote:
>> Hi Shuah,
>>
>> On 12/18/2018 06:59 PM, shuah@kernel.org wrote:
>>> From: Shuah Khan <shuah@kernel.org>
>>>
>>> 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.
>>>
>>> - 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.
>>> - This patch series is tested on 4.20-rc6
>>> - 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.
>>>
>>> References:
>>> https://lkml.org/lkml/2018/11/2/169
>>> https://www.mail-archive.com/linux-media@vger.kernel.org/msg105854.html
>>
>> When I connect my au0828 to my laptop with your v9 patch series applied I get
>> these warnings:
>>
>> [   45.416047] xhci_hcd 0000:39:00.0: xHCI Host Controller
>> [   45.417882] xhci_hcd 0000:39:00.0: new USB bus registered, assigned bus number 3
>> [   45.419292] xhci_hcd 0000:39:00.0: hcc params 0x200077c1 hci version 0x110 quirks 0x0000000200009810
>> [   45.420835] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 5.00
>> [   45.420893] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
>> [   45.420899] usb usb3: Product: xHCI Host Controller
>> [   45.420905] usb usb3: Manufacturer: Linux 5.0.0-rc1-zen xhci-hcd
>> [   45.420911] usb usb3: SerialNumber: 0000:39:00.0
>> [   45.424290] hub 3-0:1.0: USB hub found
>> [   45.425274] hub 3-0:1.0: 2 ports detected
>> [   45.431061] xhci_hcd 0000:39:00.0: xHCI Host Controller
>> [   45.432436] xhci_hcd 0000:39:00.0: new USB bus registered, assigned bus number 4
>> [   45.432448] xhci_hcd 0000:39:00.0: Host supports USB 3.1 Enhanced SuperSpeed
>> [   45.433299] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 5.00
>> [   45.433354] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
>> [   45.433360] usb usb4: Product: xHCI Host Controller
>> [   45.433365] usb usb4: Manufacturer: Linux 5.0.0-rc1-zen xhci-hcd
>> [   45.433370] usb usb4: SerialNumber: 0000:39:00.0
>> [   45.436134] hub 4-0:1.0: USB hub found
>> [   45.436576] hub 4-0:1.0: 2 ports detected
>> [   45.750940] usb 3-1: new high-speed USB device number 2 using xhci_hcd
>> [   45.899927] usb 3-1: New USB device found, idVendor=2040, idProduct=721e, bcdDevice= 0.05
>> [   45.899949] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=10
>> [   45.899960] usb 3-1: Product: WinTV Aero-A
>> [   45.899970] usb 3-1: Manufacturer: Hauppauge
>> [   45.899979] usb 3-1: SerialNumber: 4033622430
>> [   46.053476] au0828: au0828 driver loaded
>> [   46.053726] WARNING: CPU: 1 PID: 1824 at kernel/module.c:262 module_assert_mutex+0x20/0x30
>> [   46.053818] Modules linked in: au0828(+) tveeprom dvb_core v4l2_common rfcomm bnep snd_hda_codec_hdmi snd_hda_codec_realtek
>> snd_hda_codec_generic uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2 videobuf2_common videodev media btusb btintel bluetooth
>> snd_soc_skl snd_soc_skl_ipc snd_soc_sst_ipc snd_soc_sst_dsp snd_soc_acpi_intel_match snd_soc_acpi snd_hda_ext_core x86_pkg_temp_thermal
>> snd_soc_core snd_compress ac97_bus snd_pcm_dmaengine snd_hda_intel iwlmvm snd_hda_codec snd_hda_core snd_hwdep snd_pcm snd_timer snd iwlwifi
>> i915 intel_gtt battery ac pcc_cpufreq thermal
>> [   46.053853] CPU: 1 PID: 1824 Comm: systemd-udevd Not tainted 5.0.0-rc1-zen #85
>> [   46.053856] Hardware name: ASUSTeK COMPUTER INC. UX490UA/UX490UA, BIOS UX490UA.312 04/09/2018
>> [   46.053862] RIP: 0010:module_assert_mutex+0x20/0x30
>> [   46.053867] Code: 5d c3 e8 f3 68 f5 ff 0f 1f 00 8b 05 d2 5a 7c 01 85 c0 75 01 c3 be ff ff ff ff 48 c7 c7 80 bc 86 82 e8 e4 27 fb ff 85 c0
>> 75 ea <0f> 0b c3 66 66 2e 0f 1f 84 00 00 00 00 00 66 90 53 48 89 fb e8 c7
>> [   46.053871] RSP: 0018:ffffc90002aa3ac8 EFLAGS: 00010246
>> [   46.053876] RAX: 0000000000000000 RBX: ffffffffa0573abf RCX: 0000000000000000
>> [   46.053880] RDX: 0000000000000000 RSI: ffffffff8286bc80 RDI: ffff8882a517d570
>> [   46.053883] RBP: ffff8882880e6000 R08: 0000000000000000 R09: ffff8882b1f5d000
>> [   46.053886] R10: 0000000000000001 R11: 0000000000000003 R12: ffffffffa0573abf
>> [   46.053890] R13: ffff8882880e60a0 R14: ffff8882880e6000 R15: ffffffffa0577200
>> [   46.053894] FS:  00007f0ac7d318c0(0000) GS:ffff8882b6a80000(0000) knlGS:0000000000000000
>> [   46.053898] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [   46.053902] CR2: 0000560d354ed800 CR3: 00000002880f9003 CR4: 00000000003606e0
>> [   46.053905] Call Trace:
>> [   46.053910]  find_module+0x9/0x20
>>
>> My .config is available upon request.
>>
> 
> Thanks for the config.
> 
> Thanks for finding this. find_module() should be called with
> module_mutex since 4.15. The media allocator patch was written
> before that.
> 
> I didn't realize I don't have CONFIG_DEBUG_MUTEXES=y when I switched
> to a new system.
> 
> I reproduced the problem and re-worked patch 1 and patch 4 in this
> series. I will resend the v10 for just those two patches tomorrow.
> 
> Please let me know if you want me to send the entire series.

Please send the entire series. Less chance of mistakes that way.

Thanks!

	Hans

      reply	other threads:[~2019-01-24  7:30 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-18 17:59 [PATCH v9 0/4] Media Device Allocator API shuah
2018-12-18 17:59 ` [PATCH v9 1/4] media: " shuah
2018-12-18 17:59 ` [PATCH v9 2/4] media: change au0828 to use " shuah
2018-12-18 17:59 ` [PATCH v9 3/4] media: media.h: Enable ALSA MEDIA_INTF_T* interface types shuah
2018-12-18 17:59 ` [PATCH v9 4/4] sound/usb: Use Media Controller API to share media resources shuah
2018-12-19 13:51   ` [alsa-devel] " Takashi Iwai
2019-01-11 14:57     ` shuah
2019-01-11 14:59       ` Hans Verkuil
2019-01-11 15:04         ` shuah
2019-01-18  8:36   ` Hans Verkuil
2019-01-18 21:54     ` shuah
2019-01-19  1:03       ` shuah
2019-01-19 10:30         ` Hans Verkuil
2019-01-20 19:32           ` shuah
2019-01-21 14:46 ` [PATCH v9 0/4] Media Device Allocator API Hans Verkuil
2019-01-24  1:35   ` shuah
2019-01-24  7:30     ` Hans Verkuil [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ecd0647c-4ee7-fe17-4324-4770f1f1dcdc@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=alsa-devel@alsa-project.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=perex@perex.cz \
    --cc=shuah@kernel.org \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).