From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 174BD3F2101; Tue, 17 Mar 2026 16:46:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773765995; cv=none; b=bZbvUriRh1sbyuLP7t06weKQ3zNLNUn1ZTjijEzAYvjZIn7DKlab2KI8DEqe4z4O5dZLP/DpqnY+27ZHsFr5tq/b4eywHagSc01AqAsrvQapYZGfOEZNPpVTbg0s7wme7nQo92ESrBwFH6ak7TPNEcgVOZ07QbsO/8Tlz3cjAWw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773765995; c=relaxed/simple; bh=er2uH0mHoQuyNJMCTCRrM4m79iV2ptu4LCRD6vhlxt0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YnY+6qD2+IYuGJqwjJO7wJw79g/Crsndn4HLE82mr08mESxnuM2dSGmFQDMfoR57qVYREHonHBpvsTXGqIetIGk3uPMA/8M8rtes0zOUwnn3o2/CUKkksylZk94hGI/HqbayXwFlfspqHO+fax5ot6xurPg2JOweBSkxRWkrtSY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=qYv6mC0K; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="qYv6mC0K" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4573DC4CEF7; Tue, 17 Mar 2026 16:46:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1773765994; bh=er2uH0mHoQuyNJMCTCRrM4m79iV2ptu4LCRD6vhlxt0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qYv6mC0KgB7WirB93sEvJ6atJFDEGEg6zdCHHreIihlTOg167X7ys8qGhO5YRpe2f dU9j9tE6RGb2nJZaoI4uvg0tkEqOqmqJAG+QEUI5BId7EYI2dUaweYuW/7TpeVnfQV bzeR/BdsRFANSi2KZuIFKpHEd0CUSTBkMC9ooCCw= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Dayu Jiang , Mathias Nyman Subject: [PATCH 6.19 146/378] usb: xhci: Prevent interrupt storm on host controller error (HCE) Date: Tue, 17 Mar 2026 17:31:43 +0100 Message-ID: <20260317163012.386768467@linuxfoundation.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260317163006.959177102@linuxfoundation.org> References: <20260317163006.959177102@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 6.19-stable review patch. If anyone has any objections, please let me know. ------------------ From: Dayu Jiang commit d6d5febd12452b7fd951fdd15c3ec262f01901a4 upstream. The xHCI controller reports a Host Controller Error (HCE) in UAS Storage Device plug/unplug scenarios on Android devices. HCE is checked in xhci_irq() function and causes an interrupt storm (since the interrupt isn’t cleared), leading to severe system-level faults. When the xHC controller reports HCE in the interrupt handler, the driver only logs a warning and assumes xHC activity will stop as stated in xHCI specification. An interrupt storm does however continue on some hosts even after HCE, and only ceases after manually disabling xHC interrupt and stopping the controller by calling xhci_halt(). Add xhci_halt() to xhci_irq() function where STS_HCE status is checked, mirroring the existing error handling pattern used for STS_FATAL errors. This only fixes the interrupt storm. Proper HCE recovery requires resetting and re-initializing the xHC. CC: stable@vger.kernel.org Signed-off-by: Dayu Jiang Signed-off-by: Mathias Nyman Link: https://patch.msgid.link/20260304223639.3882398-3-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/xhci-ring.c | 1 + 1 file changed, 1 insertion(+) --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -3195,6 +3195,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd if (status & STS_HCE) { xhci_warn(xhci, "WARNING: Host Controller Error\n"); + xhci_halt(xhci); goto out; }