All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wesley Cheng <quic_wcheng@quicinc.com>
To: <srinivas.kandagatla@linaro.org>, <mathias.nyman@intel.com>,
	<perex@perex.cz>, <conor+dt@kernel.org>, <corbet@lwn.net>,
	<lgirdwood@gmail.com>, <andersson@kernel.org>,
	<krzysztof.kozlowski+dt@linaro.org>, <gregkh@linuxfoundation.org>,
	<Thinh.Nguyen@synopsys.com>, <broonie@kernel.org>,
	<bgoswami@quicinc.com>, <tiwai@suse.com>, <robh+dt@kernel.org>,
	<konrad.dybcio@linaro.org>
Cc: <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-sound@vger.kernel.org>, <linux-usb@vger.kernel.org>,
	<linux-arm-msm@vger.kernel.org>, <linux-doc@vger.kernel.org>,
	<alsa-devel@alsa-project.org>,
	Mathias Nyman <mathias.nyman@linux.intel.com>,
	Wesley Cheng <quic_wcheng@quicinc.com>
Subject: [PATCH v16 08/50] xhci: Don't check if the event ring is valid before every event TRB
Date: Thu, 15 Feb 2024 19:58:41 -0800	[thread overview]
Message-ID: <20240216035923.23392-9-quic_wcheng@quicinc.com> (raw)
In-Reply-To: <20240216035923.23392-1-quic_wcheng@quicinc.com>

From: Mathias Nyman <mathias.nyman@linux.intel.com>

Check if the event ring exists and is valid once when the event handler
is called, not before every individual event TRB.

At this point the interrupter is valid, so no need to check that.

Change-Id: I2d69fc39c194d8fa93afd0a1cf3e209b929cee43
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
---
 drivers/usb/host/xhci-ring.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 275164dc449d..d31599d46b92 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2972,12 +2972,6 @@ static int xhci_handle_event(struct xhci_hcd *xhci, struct xhci_interrupter *ir)
 	union xhci_trb *event;
 	u32 trb_type;
 
-	/* Event ring hasn't been allocated yet. */
-	if (!ir || !ir->event_ring || !ir->event_ring->dequeue) {
-		xhci_err(xhci, "ERROR interrupter not ready\n");
-		return -ENOMEM;
-	}
-
 	event = ir->event_ring->dequeue;
 
 	if (!unhandled_event_trb(ir->event_ring))
@@ -3081,6 +3075,12 @@ static int xhci_handle_events(struct xhci_hcd *xhci, struct xhci_interrupter *ir
 
 	xhci_clear_interrupt_pending(xhci, ir);
 
+	/* Event ring hasn't been allocated yet. */
+	if (!ir->event_ring || !ir->event_ring->dequeue) {
+		xhci_err(xhci, "ERROR interrupter event ring not ready\n");
+		return -ENOMEM;
+	}
+
 	if (xhci->xhc_state & XHCI_STATE_DYING ||
 	    xhci->xhc_state & XHCI_STATE_HALTED) {
 		xhci_dbg(xhci, "xHCI dying, ignoring interrupt. Shouldn't IRQs be disabled?\n");

  parent reply	other threads:[~2024-02-16  3:59 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-16  3:58 [PATCH v16 00/50] Introduce QC USB SND audio offloading support Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 01/50] xhci: Add interrupt pending autoclear flag to each interrupter Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 02/50] xhci: Add helper to set an interrupters interrupt moderation interval Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 03/50] xhci: make isoc_bei_interval variable interrupter specific Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 04/50] xhci: remove unnecessary event_ring_deq parameter from xhci_handle_event() Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 05/50] xhci: update event ring dequeue pointer position to controller correctly Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 06/50] xhci: move event processing for one interrupter to a separate function Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 07/50] xhci: add helper that checks for unhandled events on a event ring Wesley Cheng
2024-02-16  3:58 ` Wesley Cheng [this message]
2024-02-16  3:58 ` [PATCH v16 09/50] xhci: Decouple handling an event from checking for unhandled events Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 10/50] xhci: add helper to stop endpoint and wait for completion Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 11/50] usb: host: xhci: Export enable and disable interrupter APIs Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 12/50] usb: host: xhci: Repurpose event handler for skipping interrupter events Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 13/50] xhci: export XHCI IMOD setting helper for interrupters Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 14/50] xhci: sideband: add initial api to register a sideband entity Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 15/50] usb: host: xhci-sideband: Expose a sideband interrupter enable API Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 16/50] usb: host: xhci-mem: Cleanup pending secondary event ring events Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 17/50] usb: host: xhci-mem: Allow for interrupter clients to choose specific index Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 18/50] ASoC: Add SOC USB APIs for adding an USB backend Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 19/50] ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 20/50] ASoC: qcom: qdsp6: Introduce USB AFE port to q6dsp Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 21/50] ASoC: qdsp6: q6afe: Increase APR timeout Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 22/50] ASoC: qcom: qdsp6: Add USB backend ASoC driver for Q6 Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 23/50] ALSA: usb-audio: Introduce USB SND platform op callbacks Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 24/50] ALSA: usb-audio: Export USB SND APIs for modules Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 25/50] ALSA: usb-audio: Save UAC sample size information Wesley Cheng
2024-02-16  3:58 ` [PATCH v16 26/50] usb: dwc3: Specify maximum number of XHCI interrupters Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 27/50] usb: host: xhci-plat: Set XHCI max interrupters if property is present Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 28/50] ALSA: usb-audio: qcom: Add USB QMI definitions Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 29/50] ALSA: usb-audio: qcom: Introduce QC USB SND offloading support Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 30/50] ALSA: usb-audio: Check for support for requested audio format Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 31/50] ASoC: usb: Add PCM format check API for USB backend Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 32/50] ASoC: qcom: qdsp6: Ensure PCM format is supported by USB audio device Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 33/50] ALSA: usb-audio: Prevent starting of audio stream if in use Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 34/50] ALSA: usb-audio: Do not allow USB offload path if PCM device is " Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 35/50] ASoC: dt-bindings: Add Q6USB backend Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 36/50] ASoC: dt-bindings: Update example for enabling USB offload on SM8250 Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 37/50] ALSA: usb-audio: qcom: Populate PCM and USB chip information Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 38/50] ASoC: qcom: qdsp6: Add support to track available USB PCM devices Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 39/50] ASoC: Introduce SND kcontrols to select sound card and PCM device Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 40/50] ASoC: qcom: qdsp6: Add SOC USB offload select get/put callbacks Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 41/50] ASoC: Introduce SND kcontrols to track USB offloading state Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 42/50] ASoC: qcom: qdsp6: Add PCM ops to track current state Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 43/50] ASoC: usb: Create SOC USB SND jack kcontrol Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 44/50] ASoC: qcom: qdsp6: Add headphone jack for offload connection status Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 45/50] ASoC: usb: Fetch ASoC sound card information Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 46/50] ALSA: usb-audio: Add USB offloading capable kcontrol Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 47/50] ALSA: usb-audio: qcom: Use card and PCM index from QMI request Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 48/50] ASoC: usb: Rediscover USB SND devices on USB port add Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 49/50] ASoC: qcom: Populate SoC components string Wesley Cheng
2024-02-16  3:59 ` [PATCH v16 50/50] ASoC: doc: Add documentation for SOC USB Wesley Cheng
2024-02-16 23:36 ` [PATCH v16 00/50] Introduce QC USB SND audio offloading support 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=20240216035923.23392-9-quic_wcheng@quicinc.com \
    --to=quic_wcheng@quicinc.com \
    --cc=Thinh.Nguyen@synopsys.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=andersson@kernel.org \
    --cc=bgoswami@quicinc.com \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=mathias.nyman@linux.intel.com \
    --cc=perex@perex.cz \
    --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 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.