From nobody Sat May 9 09:28:59 2026 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3D52B1DA636 for ; Fri, 24 Jan 2025 07:59:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737705566; cv=none; b=sCY7m0vGRu6D3YX+a1odDEjbZ1DUcUbuG5aJwMpiRsl5Ve3fDNebNFvIk7IdQElHFHOI/nOFsG9xhVQ2oqc4bF2fk9OmM+CRbjT+M+eBiw7H9tVv00nmnP7Vsh2BqZhw1KKLJGnyq/rEw5MVqFPcx3MI3lVf09pRvpOjaGJ6wj8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737705566; c=relaxed/simple; bh=SEAr4o2GPcY/VIxC0WU6recjoscaZQy6zHJEuMQywso=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=U/R6cwVbHOSjLkMt7JLp8WCZmp2rVd2Euuq4EKfS3EXQhj2Nju2b2JCvz6S8cFIo65ssi4Zh2wTUMkGEpO/fdSuLJ4yzHyKg1QqgmbShMxfKwNk8XP63WAVqP/kiJScnYp2VwJt7NdCWk8r5+Ai79DYjpVFrhZklIE36MuSNY9s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--badhri.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ZbeLAsxW; arc=none smtp.client-ip=209.85.216.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--badhri.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ZbeLAsxW" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-2f2a9f056a8so3822917a91.2 for ; Thu, 23 Jan 2025 23:59:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1737705564; x=1738310364; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=tvMIp44R3FtpENPY8qJDGodHaD57T8o35D4CEU3mG5w=; b=ZbeLAsxWBpl4TwcettOqTZnVdS0PgAYnsZyLUaSTcbgrU1+FV3e2+ZUemDPkSTXux8 FZgVEkmIRd/+eEDWu3HrifCc6eeGcNH9yCbYpOlm/JNQRlaLjhsoalmqI6il6tUFp7ai l22VHjSzLzOPBUEGJVqAnd4uW8syYzDGFyVcgjrKWF3I0JYZ4xFrjceKqWsQc3wLb9FC FPwWRtQqUjeZUziHCsCw3jh4+jrQZkhSgwWZ2qNs/wAMwxFb8+DJPCIy9bdEIbXfrVze 6Q9abQyOvDq7Hq/eXPIbPpcYHixyAGOzmN7uSX3wd+g+9XtFarjjCx8+06ebpvh4t+53 jwww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737705564; x=1738310364; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=tvMIp44R3FtpENPY8qJDGodHaD57T8o35D4CEU3mG5w=; b=JSPqOaYsK37r0SthE2FSU9ULuX/Rvw0VorWd/uacqQr2d/maOp1ypznn22L9ZGeBFB nuYoB60crDG5zCgAcly6WDcGN/soPo1sVvW7bgyTZJoPbfynmCIZdKoM5Ks2Qqa+hGHF E8pwZ+mcZq/Qp2UuEDOQXBg8YDRL9pG6E+nvA13OMFcxSQ73KPexp9ShgISARCYkvoCl 2kLQ5pA24fGR6omTyzv3qJlOcDxc7f9eDztqms8JI+G/Otpqd9JQsHRvqdIRcDoUQRIv SyrQPnJvucOWk8iv2eh5HtHudJo71k7OzWD5WQzRKCdQaIDsGV5PtVmHbMjXsxf/a8bh hgSQ== X-Forwarded-Encrypted: i=1; AJvYcCVlJBwZ7jfPhdyGsFeSksRSN0yvVxMnI8ry36kW8RHBDSmpkVlflLh4l2Bk2tKHD+0iqx7uEkEQDE8QX5c=@vger.kernel.org X-Gm-Message-State: AOJu0Yyv+r0YytokcjwrHCbndkweeX8kqE0K9c7RiajnAwKGi5pHlPmj wZDjXdjP8buNC5muv0KP2f87KSRtRYZx0qX9m/n1fH4JM/Go7m2jCd1ty3Yq0caWdtBGUVXhj19 17A== X-Google-Smtp-Source: AGHT+IEx/v7k7nacKRbtPfWnK44BqfMKeMONJ12VeacG3MfZDZ51XHDmPYjzUrL/FZdGk6UIwsbdjTXWrDo= X-Received: from pfbcr10.prod.google.com ([2002:a05:6a00:f0a:b0:728:e76c:253f]) (user=badhri job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:918b:b0:1e1:aba4:2095 with SMTP id adf61e73a8af0-1eb21585e6fmr57281225637.32.1737705564412; Thu, 23 Jan 2025 23:59:24 -0800 (PST) Date: Fri, 24 Jan 2025 07:59:10 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.48.1.262.g85cc9f2d1e-goog Message-ID: <20250124075911.811594-1-badhri@google.com> Subject: [PATCH v1] usb: dwc3: gadget: Prevent irq storm when TH re-executes From: Badhri Jagan Sridharan To: Thinh.Nguyen@synopsys.com, gregkh@linuxfoundation.org, felipe.balbi@linux.intel.com Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, jameswei@google.com, Badhri Jagan Sridharan , stable@kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" While commit d325a1de49d6 ("usb: dwc3: gadget: Prevent losing events in event cache") makes sure that top half(TH) does not end up overwriting the cached events before processing them when the TH gets invoked more than one time, returning IRQ_HANDLED results in occasional irq storm where the TH hogs the CPU. The irq storm can be prevented if IRQ_WAKE_THREAD is returned. ftrace event stub during dwc3 irq storm: irq/504_dwc3-1111 ( 1111) [000] .... 70.000866: irq_handler_exit: irq= =3D14 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000872: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000874: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000881: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000883: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000889: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000892: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000898: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000901: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000907: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000909: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000915: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000918: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000924: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000927: irq_handler_exit: irq= =3D504 ret=3Dhandled irq/504_dwc3-1111 ( 1111) [000] .... 70.000933: irq_handler_entry: irq= =3D504 name=3Ddwc3 irq/504_dwc3-1111 ( 1111) [000] .... 70.000935: irq_handler_exit: irq= =3D504 ret=3Dhandled .... Cc: stable@kernel.org Fixes: d325a1de49d6 ("usb: dwc3: gadget: Prevent losing events in event cac= he") Signed-off-by: Badhri Jagan Sridharan --- drivers/usb/dwc3/gadget.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index d27af65eb08a..376ab75adc4e 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -4519,7 +4519,7 @@ static irqreturn_t dwc3_check_event_buf(struct dwc3_e= vent_buffer *evt) * losing events. */ if (evt->flags & DWC3_EVENT_PENDING) - return IRQ_HANDLED; + return IRQ_WAKE_THREAD; =20 count =3D dwc3_readl(dwc->regs, DWC3_GEVNTCOUNT(0)); count &=3D DWC3_GEVNTCOUNT_MASK; base-commit: 70cd0576aa39c55aabd227851cba0c601e811fb6 --=20 2.48.1.262.g85cc9f2d1e-goog