linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wesley Cheng <quic_wcheng@quicinc.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>,
	<perex@perex.cz>, <broonie@kernel.org>, <lgirdwood@gmail.com>,
	<krzysztof.kozlowski+dt@linaro.org>, <agross@kernel.org>,
	<Thinh.Nguyen@synopsys.com>, <bgoswami@quicinc.com>,
	<andersson@kernel.org>, <robh+dt@kernel.org>, <tiwai@suse.com>,
	<linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
	<alsa-devel@alsa-project.org>, <devicetree@vger.kernel.org>,
	<linux-usb@vger.kernel.org>, <quic_jackp@quicinc.com>,
	<quic_plai@quicinc.com>
Subject: Re: [PATCH v3 02/28] usb: xhci: Add XHCI APIs to support USB offloading
Date: Thu, 9 Mar 2023 11:51:03 -0800	[thread overview]
Message-ID: <74b92725-8596-2f86-02b9-8dbfd6df9d95@quicinc.com> (raw)
In-Reply-To: <ZAl+ydxOCoGXIj1Y@kroah.com>

Hi Greg,

On 3/8/2023 10:38 PM, Greg KH wrote:
> On Wed, Mar 08, 2023 at 03:57:25PM -0800, Wesley Cheng wrote:
>> Some use cases, such as USB audio offloading, will allow for a DSP to take
>> over issuing USB transfers to the host controller.  In order for the DSP to
>> submit transfers for a particular endpoint, and to handle its events, the
>> client driver will need to query for some parameters allocated by XHCI.
>>
>> - XHCI secondary interrupter event ring address
>> - XHCI transfer ring address (for a particular EP)
>> - Stop endpoint command API
>>
>> Once the resources are handed off to the DSP, the offload begins, and the
>> main processor can enter idle.  When stopped, since there are no URBs
>> submitted from the main processor, the client will just issue a stop
>> endpoint command to halt any pending transfers.
>>
>> Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
>> ---
>>   drivers/usb/host/xhci.c       | 130 ++++++++++++++++++++++++++++++++++
>>   include/linux/usb/xhci-intr.h |   8 +++
>>   2 files changed, 138 insertions(+)
> 
> Please use checkpatch.pl on your patches before sending them out :(
> 
> Some other minor comments:
> 

Thanks for taking the time to review these!

Hmm, I did run checkpatch, and cleaned up the warnings it did give. 
However, I think something changed with regards to the tools on my host 
env.  Will address those and make sure it runs properly next time.

Will fix the minor changes you mentioned, and focus on the general 
questions you had.

>> diff --git a/include/linux/usb/xhci-intr.h b/include/linux/usb/xhci-intr.h
>> index 738b0f0481a6..d42cc9a1e698 100644
>> --- a/include/linux/usb/xhci-intr.h
>> +++ b/include/linux/usb/xhci-intr.h
>> @@ -80,7 +80,15 @@ struct xhci_interrupter {
>>   	u64	s3_erst_dequeue;
>>   };
>>   
>> +/* Secondary interrupter */
>>   struct xhci_interrupter *
>>   xhci_create_secondary_interrupter(struct usb_hcd *hcd, int intr_num);
>>   void xhci_remove_secondary_interrupter(struct usb_hcd *hcd, struct xhci_interrupter *ir);
>> +
>> +/* Offload */
>> +int xhci_stop_endpoint(struct usb_device *udev,
>> +			struct usb_host_endpoint *ep);
>> +phys_addr_t xhci_get_xfer_resource(struct usb_device *udev,
>> +					struct usb_host_endpoint *ep, dma_addr_t *dma);
>> +phys_addr_t xhci_get_ir_resource(struct usb_device *udev, struct xhci_interrupter *ir);
> 
> Why are these functions unique to offload?
> 

Wanted to separate the set of APIs used for creating a secondary 
interrupter versus offload related ones.  In general, the APIs under the 
secondary interrupter portion can be used for other things other than 
offloading.  As Mathias pointed out, they had a use case where they 
wanted to utilize the secondary interrupter to actually route and 
receive interrupts on the secondary ring, not to suppress them. (which 
is opposite of what the offload concept is doing)

Now for the offload section, those are specific to that feature, because 
we need to pass certain memory information about what was allocated by 
XHCI to the entity that we are offloading the IO operations to.  Hence, 
why they are APIs which fetch the transfer ring and event ring 
addresses.  In addition, we do have the stop EP as well, since in the 
offload case, since the main processor doesn't submit TDs (transfer 
descriptors) then it isn't aware there are transfers in progress.  When 
the endpoint is released, then the offload driver needs to be the one 
that halts the EP.

As you mentioned, I will add documentation to better describe these.

Thanks
Wesley Cheng

  reply	other threads:[~2023-03-09 19:51 UTC|newest]

Thread overview: 81+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-08 23:57 [PATCH v3 00/28] Introduce QC USB SND audio offloading support Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 01/28] xhci: Add support to allocate several interrupters Wesley Cheng
2023-03-09 10:34   ` Oliver Neukum
2023-03-09 10:51   ` Takashi Iwai
2023-03-10 15:07   ` Mathias Nyman
2023-03-13 20:08     ` Wesley Cheng
2023-04-25  1:17       ` Wesley Cheng
2023-03-13 20:32     ` Wesley Cheng
2023-06-23 22:37       ` Wesley Cheng
2023-06-26 13:55         ` Mathias Nyman
2023-06-26 15:05           ` Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 02/28] usb: xhci: Add XHCI APIs to support USB offloading Wesley Cheng
2023-03-09  6:38   ` Greg KH
2023-03-09 19:51     ` Wesley Cheng [this message]
2023-03-10 12:17   ` Claudiu.Beznea
2023-03-08 23:57 ` [PATCH v3 03/28] usb: host: xhci-mem: Cleanup pending secondary event ring events Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 04/28] ASoC: Add SOC USB APIs for adding an USB backend Wesley Cheng
2023-03-09  6:41   ` Greg KH
2023-03-08 23:57 ` [PATCH v3 05/28] ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port Wesley Cheng
2023-03-09  9:00   ` Srinivas Kandagatla
2023-03-08 23:57 ` [PATCH v3 06/28] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng
2023-03-09  9:01   ` Srinivas Kandagatla
2023-03-08 23:57 ` [PATCH v3 07/28] ASoC: qdsp6: q6afe: Increase APR timeout Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 08/28] ASoC: qcom: Add USB backend ASoC driver for Q6 Wesley Cheng
2023-03-09  9:01   ` Srinivas Kandagatla
2023-03-09 19:38     ` Wesley Cheng
2023-03-10  7:21       ` Srinivas Kandagatla
2023-03-25  1:15         ` Wesley Cheng
2023-03-10 12:22   ` Claudiu.Beznea
2023-03-08 23:57 ` [PATCH v3 09/28] sound: usb: card: Introduce USB SND platform op callbacks Wesley Cheng
2023-03-09  6:44   ` Greg KH
2023-03-09 14:10     ` Takashi Iwai
2023-03-09 11:16   ` Oliver Neukum
2023-03-08 23:57 ` [PATCH v3 10/28] sound: usb: Export USB SND APIs for modules Wesley Cheng
2023-03-09  6:29   ` Greg KH
2023-03-08 23:57 ` [PATCH v3 11/28] dt-bindings: usb: dwc3: Add snps,num-hc-interrupters definition Wesley Cheng
2023-03-10  8:50   ` Krzysztof Kozlowski
2023-03-11 13:40   ` Rob Herring
2023-08-29  2:05     ` Wesley Cheng
2023-08-29  6:33       ` Krzysztof Kozlowski
2023-08-29  7:19         ` Wesley Cheng
2023-08-29  7:42           ` Krzysztof Kozlowski
2023-08-29  7:50             ` Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 12/28] usb: dwc3: Add DT parameter to specify maximum number of interrupters Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 13/28] usb: host: xhci-plat: Set XHCI max interrupters if property is present Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 14/28] sound: usb: pcm: Export fixed rate check USB SND API Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 15/28] sound: usb: Introduce QC USB SND offloading support Wesley Cheng
2023-03-09  8:29   ` Takashi Sakamoto
2023-03-09 17:54   ` Pierre-Louis Bossart
2023-03-08 23:57 ` [PATCH v3 16/28] sound: usb: card: Check for support for requested audio format Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 17/28] sound: soc: soc-usb: Add PCM format check API for USB backend Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 18/28] sound: soc: qcom: qusb6: Ensure PCM format is supported by USB audio device Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 19/28] sound: usb: Prevent starting of audio stream if in use Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 20/28] ASoC: dt-bindings: Add Q6USB backend bindings Wesley Cheng
2023-03-10  8:54   ` Krzysztof Kozlowski
2023-06-23  0:15     ` Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 21/28] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng
2023-03-10  8:56   ` Krzysztof Kozlowski
2023-06-23  0:51     ` Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 22/28] ASoC: qcom: qdsp6: q6afe: Split USB AFE dev_token param into separate API Wesley Cheng
2023-03-09  9:01   ` Srinivas Kandagatla
2023-03-09 19:39     ` Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 23/28] sound: Pass USB SND card and PCM information to SOC USB Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 24/28] sound: soc: qdsp6: Add SND kcontrol to select offload device Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 25/28] sound: soc: qdsp6: Add SND kcontrol for fetching offload status Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 26/28] sound: usb: qc_audio_offload: Use card and PCM index from QMI request Wesley Cheng
2023-03-08 23:57 ` [PATCH v3 27/28] sound: usb: card: Allow for rediscovery of connected USB SND devices Wesley Cheng
2023-03-09 11:32   ` Oliver Neukum
2023-03-08 23:57 ` [PATCH v3 28/28] sound: soc: soc-usb: Rediscover USB SND devices on USB port add Wesley Cheng
2023-03-09  6:46 ` [PATCH v3 00/28] Introduce QC USB SND audio offloading support Greg KH
2023-03-09 17:13 ` Pierre-Louis Bossart
2023-03-09 21:10   ` Wesley Cheng
2023-03-10  0:37     ` Pierre-Louis Bossart
2023-03-13 23:43       ` Wesley Cheng
2023-03-14  0:42         ` Pierre-Louis Bossart
2023-03-14  1:42           ` Wesley Cheng
2023-03-14  2:22             ` Pierre-Louis Bossart
2023-03-15  0:08               ` Wesley Cheng
2023-03-15 14:30                 ` Pierre-Louis Bossart
2023-03-15 16:29                   ` Mark Brown
2023-03-15 19:42                   ` Wesley Cheng

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=74b92725-8596-2f86-02b9-8dbfd6df9d95@quicinc.com \
    --to=quic_wcheng@quicinc.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=agross@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=andersson@kernel.org \
    --cc=bgoswami@quicinc.com \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=perex@perex.cz \
    --cc=quic_jackp@quicinc.com \
    --cc=quic_plai@quicinc.com \
    --cc=robh+dt@kernel.org \
    --cc=srinivas.kandagatla@linaro.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).