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 CCD3838D; Mon, 4 Aug 2025 00:36:46 +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=1754267806; cv=none; b=K3iLDpt0p2aA3jSeN9j7dx1mrB7XsdhWj52BSEwN3qUdS3bu3D95tHUluzPL02vHJqYSrlyh4CrOzfZdwbcLrtS4odw1rd6TZ2zo/MeteBBBVgeSjFV6D+WcSq4Z+QMz2Q/HEU+tRFebJqWQo6mYP9mwovDwaGQiMe2cYaYa/KY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754267806; c=relaxed/simple; bh=yKbbVryWxxY4ZM9YMZwtne7OvpArwEJTFfedaVVAdMk=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=lATHDujXECuvYvcRS7e6MCU0L5YoTUDANuP1z/Dkh6CFubYlriygchu5X80hOhRg1cLlXb3VQCi50oIT8S0DSsxD6s7hiNO5I9XTAfZKBUdRCvgd6Uj6HgeCOXpO1SRFp86VWY46Wrevi7y+Lq5WS5OzW9kTSedLu/cw8p4v83w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BcDPdT1A; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BcDPdT1A" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7F4A0C4CEEB; Mon, 4 Aug 2025 00:36:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754267806; bh=yKbbVryWxxY4ZM9YMZwtne7OvpArwEJTFfedaVVAdMk=; h=From:To:Cc:Subject:Date:From; b=BcDPdT1As0uIORvvIkIlmxn0BTmzTAgOU20qPQDDfGkmhp+CjH9ap7zbIctN+akTR MzudrSvZltNjIexcx9EUeQ4fIDfusiyCH9pmSA9GCbpG2XEVJ9W2aQF16olBy22dJ1 t64bh7UnsaK6aJHBnWspAvjYCS+SwyELFbp7nvX+7tQev12w5CXT3vEyMPHIEnIAx+ lw3qOgvMDhsnMaNKITtvI+O48FtKy3cXtCLQt3NfIRy8Y+kdNa/QHmgCmkW36yj29k suegTF8DGdQESEiAU/b1LaDqBTICy7AKdZPMo+2d3uQmh2DQ2a9P5013D0plPL5z44 Cy5ICwHNhhW3Q== From: Sasha Levin To: patches@lists.linux.dev, stable@vger.kernel.org Cc: Su Hui , Greg Kroah-Hartman , Sasha Levin , mathias.nyman@intel.com, linux-usb@vger.kernel.org Subject: [PATCH AUTOSEL 6.1 01/51] usb: xhci: print xhci->xhc_state when queue_command failed Date: Sun, 3 Aug 2025 20:35:53 -0400 Message-Id: <20250804003643.3625204-1-sashal@kernel.org> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.1.147 Content-Transfer-Encoding: 8bit From: Su Hui [ Upstream commit 7919407eca2ef562fa6c98c41cfdf6f6cdd69d92 ] When encounters some errors like these: xhci_hcd 0000:4a:00.2: xHCI dying or halted, can't queue_command xhci_hcd 0000:4a:00.2: FIXME: allocate a command ring segment usb usb5-port6: couldn't allocate usb_device It's hard to know whether xhc_state is dying or halted. So it's better to print xhc_state's value which can help locate the resaon of the bug. Signed-off-by: Su Hui Link: https://lore.kernel.org/r/20250725060117.1773770-1-suhui@nfschina.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- LLM Generated explanations, may be completely bogus: **Backport Status: YES** This commit is suitable for backporting to stable kernel trees for the following reasons: 1. **Enhanced Debugging for Real-World Issues**: The commit improves debugging of USB xHCI host controller failures by printing the actual `xhc_state` value when `queue_command` fails. The commit message shows real error messages users encounter ("xHCI dying or halted, can't queue_command"), demonstrating this is a real-world debugging problem. 2. **Minimal and Safe Change**: The change is extremely small and safe - it only modifies a debug print statement from: ```c xhci_dbg(xhci, "xHCI dying or halted, can't queue_command\n"); ``` to: ```c xhci_dbg(xhci, "xHCI dying or halted, can't queue_command. state: 0x%x\n", xhci->xhc_state); ``` 3. **No Functional Changes**: This is a pure diagnostic improvement. It doesn't change any logic, control flow, or data structures. It only adds the state value (0x%x format) to an existing debug message. 4. **Important for Troubleshooting**: The xHCI driver is critical for USB functionality, and when it fails with "dying or halted" states, knowing the exact state helps diagnose whether: - `XHCI_STATE_DYING` (0x1) - controller is dying - `XHCI_STATE_HALTED` (0x2) - controller is halted - Both states (0x3) - controller has both flags set This distinction is valuable for debugging hardware issues, driver bugs, or system problems. 5. **Zero Risk of Regression**: Adding a parameter to a debug print statement has no risk of introducing regressions. The worst case is the debug message prints the state value. 6. **Follows Stable Rules**: This meets stable kernel criteria as it: - Fixes a real debugging limitation - Is obviously correct - Has been tested (signed-off and accepted by Greg KH) - Is small (single line change) - Doesn't add new features, just improves existing diagnostics The commit helps system administrators and developers diagnose USB issues more effectively by providing the actual state value rather than just saying "dying or halted", making it a valuable debugging enhancement for stable kernels. drivers/usb/host/xhci-ring.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 0862fdd3e568..c4880b22f359 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -4421,7 +4421,8 @@ static int queue_command(struct xhci_hcd *xhci, struct xhci_command *cmd, if ((xhci->xhc_state & XHCI_STATE_DYING) || (xhci->xhc_state & XHCI_STATE_HALTED)) { - xhci_dbg(xhci, "xHCI dying or halted, can't queue_command\n"); + xhci_dbg(xhci, "xHCI dying or halted, can't queue_command. state: 0x%x\n", + xhci->xhc_state); return -ESHUTDOWN; } -- 2.39.5