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 DBB0E1DB356; Mon, 4 Aug 2025 00:40:44 +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=1754268045; cv=none; b=f706Ql2myyzN8UYfy02rcsr0lYQE1Ny/mV2bfOVzP8t91igI/2I02IQ3Uxosf/HOJMJxgKRCGeVQjHnxziabMJii5AOuCn+DkEVC2SsLpqgCpSLjhkU71lurjuyBhj+1B0yuZOLJsBG9sk3zLrFAnFfR6UxfsDKDYh5KnL3im4Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754268045; c=relaxed/simple; bh=smLYCcPa/HMfGs23Q4A48TTlAGvuIcRj3a7Hp+6s5Ug=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=eEeeI+wmvmSedU9v9woFEEk7CZnP2n5uYfNiUII759a2rA9hog7G3O1pejjwxAcXrwy7swSBZpngdoDijuaVaGiSACtIs0wToj4K7ECKVR9LCV3+iF9US+dVnXlajWZbKlakbGILmziF0Iug7WME20Kz0lk7OwwT3yLYAFOqCeQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GxLYTfxH; 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="GxLYTfxH" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29F3AC4CEEB; Mon, 4 Aug 2025 00:40:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754268044; bh=smLYCcPa/HMfGs23Q4A48TTlAGvuIcRj3a7Hp+6s5Ug=; h=From:To:Cc:Subject:Date:From; b=GxLYTfxHTNKiTu6JWxJQbQwXuqtZGsE+AJCI/2OGXPor7dl1gj9fO+rckr6yeEJwH 9o37DU1i4voyelsJwUJSmOil85omLwNBvsThLts+V3mais/kxe13q4/ot8wy77Ir2m dki6OGzyKX+qwrSwRWnPUFg39HWWaL5zSoIV9wlZMXTa+EqoD1Q1+5mTafoabSSQ7J op6FBAPT1xCdVOG/5j8374UOtXimSIxx0wqOz672xvoCuDTW0/DE7h5J58lymJQdnu pBsQALsH8Y0xorTftM9sWXtpMebFiyWm5UQbfSGHkv8zh3Oz8eD0joPZOLgMQwPqLn u1MKU4cmtxDEw== 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 5.10 01/39] usb: xhci: print xhci->xhc_state when queue_command failed Date: Sun, 3 Aug 2025 20:40:03 -0400 Message-Id: <20250804004041.3628812-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 5.10.240 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 954cd962e113..c026e7cc0af1 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -4183,7 +4183,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