lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <5ba0912a-4d8c-4321-9fa4-0bac89af8224@quicinc.com>
Date: Fri, 21 Mar 2025 13:06:43 -0700
From: Wesley Cheng <quic_wcheng@...cinc.com>
To: Luca Weiss <luca.weiss@...rphone.com>, <srinivas.kandagatla@...aro.org>,
        <mathias.nyman@...el.com>, <perex@...ex.cz>, <conor+dt@...nel.org>,
        <dmitry.torokhov@...il.com>, <corbet@....net>, <broonie@...nel.org>,
        <lgirdwood@...il.com>, <krzk+dt@...nel.org>,
        <pierre-louis.bossart@...ux.intel.com>, <Thinh.Nguyen@...opsys.com>,
        <tiwai@...e.com>, <robh@...nel.org>, <gregkh@...uxfoundation.org>
CC: <linux-kernel@...r.kernel.org>, <devicetree@...r.kernel.org>,
        <linux-sound@...r.kernel.org>, <linux-input@...r.kernel.org>,
        <linux-usb@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
        <linux-doc@...r.kernel.org>
Subject: Re: [PATCH v36 00/31] Introduce QC USB SND audio offloading support

Hi Luca,

On 3/21/2025 6:13 AM, Luca Weiss wrote:
> Hi Wesley,
> 
> On Wed Mar 19, 2025 at 1:51 AM CET, Wesley Cheng wrote:
>> Requesting to see if we can get some Acked-By tags, and merge on usb-next.
>>
>> Several Qualcomm based chipsets can support USB audio offloading to a
>> dedicated audio DSP, which can take over issuing transfers to the USB
>> host controller.  The intention is to reduce the load on the main
>> processors in the SoC, and allow them to be placed into lower power modes.
>> There are several parts to this design:
>>   1. Adding ASoC binding layer
>>   2. Create a USB backend for Q6DSP
>>   3. Introduce XHCI interrupter support
>>   4. Create vendor ops for the USB SND driver
>>
> 
> I was able to test this series (v35) on SM6350/SM7225 Fairphone 4
> smartphone and it appears to work as expected!

Thank you for taking the time to testing this :), much appreciated.

> 
> Based on the sm8350 branch you shared[0] I added similar dts bits for my
> device, I've pushed that branch here[1] for reference.
> 
> [0] https://git.codelinaro.org/clo/linux-kernel/kernel-qcom/-/commits/usb_audio_offload/
> [1] https://github.com/sm6350-mainline/linux/commits/sm6350-6.14-wip-usb-snd-offload/
> 
> And I've used these commands to test:
> 
> fairphone-4:~$ amixer -c0 cset name='USB Mixer MultiMedia2' On
> 
> fairphone-4:~$ aplay -l
> **** List of PLAYBACK Hardware Devices ****
> card 0: F4 [Fairphone 4], device 0: MultiMedia1 (*) []
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 0: F4 [Fairphone 4], device 1: MultiMedia2 (*) []
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> card 1: Audio [Hi-Res Audio], device 0: USB Audio [USB Audio]
> Subdevices: 1/1
> Subdevice #0: subdevice #0
> 
> fairphone-4:~$ ffmpeg -i test.m4a -acodec pcm_s16le test.wav
> 
> fairphone-4:~$ aplay --device=plughw:0,1 Music/test.wav
> Playing WAVE 'Music/test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
> 
> And then music was coming out of these headphones connected via a USB-C
> to 3.5mm dongle.
> 
> Every time I'm starting playback this error appears in dmesg, do you
> also see this on your test setup?
> 
> [ 1336.081525] q6afe-dai 3000000.remoteproc:glink-edge:apr:service@4:dais: AFE Port already open
> 

The print is coming because the Q6 USB backend DAI link is utilizing the
q6afe_port_get_from_id() API to fetch the proper AFE port to issue commands
to.  IMO, that log level should be decreased to at least dev_info() instead
of an error, but we can probably take that discussion into a different series.

To add, I also see this on my set up.

> 
> And if I'm not mistaken it's possible to check that actually the offload
> path is getting used by checking the interrupt counts of the xhci-hcd
> interrupt.
> 
> With regular USB audio card playback there's many interrupts per second
> happening:
> 
> fairphone-4:~$ aplay --device=plughw:1,0 Music/test.wav # regular USB
> fairphone-4:~$ cat /proc/interrupts | grep -i usb
> 188:     137524          0          0          0          0          0          0          0    GICv3 165 Level     xhci-hcd:usb1
> fairphone-4:~$ cat /proc/interrupts | grep -i usb
> 188:     137591          0          0          0          0          0          0          0    GICv3 165 Level     xhci-hcd:usb1
> 
> And with the offload card during playback there's no interrupts
> happening (just a few when initially starting playback):
> 
> fairphone-4:~$ aplay --device=plughw:0,1 Music/test.wav # offload
> fairphone-4:~$ cat /proc/interrupts | grep -i usb
> 188:     141947          0          0          0          0          0          0          0    GICv3 165 Level     xhci-hcd:usb1
> fairphone-4:~$ cat /proc/interrupts | grep -i usb
> 188:     141947          0          0          0          0          0          0          0    GICv3 165 Level     xhci-hcd:usb1
> 

This is correct.  With offload enabled, you should probably only see a few
interrupts from xHCI from the initial USB headset enumeration and control
transfers, but the data packets itself should result in no increase of the
xHCI IRQ.

Thanks
Wesley Cheng

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ