All of lore.kernel.org
 help / color / mirror / Atom feed
From: Youngjoon Lee <getfeus@gmail.com>
To: Mathias Nyman <mathias.nyman@intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Niklas Neronin <niklas.neronin@linux.intel.com>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH] usb: xhci: fix ERST max field conversion
Date: Thu, 27 Aug 2026 05:37:48 +0000	[thread overview]
Message-ID: <20260827053748.3755-1-getfeus@gmail.com> (raw)

Commit 6d45e9556d4a ("usb: xhci: standardize multi bit-field
macros") converted the ERST maximum calculation from BIT() to a
left shift. These operations are not equivalent because the
HCS_ERST_MAX field contains an exponent.

On an MT8173 xHCI controller where HCS_ERST_MAX is zero, the new
calculation produces zero event ring segments. This reaches
dma_alloc_coherent() with a zero size, triggers a page allocator
warning, and prevents xHCI from probing with -ENOMEM.

Preserve the original calculation by applying BIT() to the value
extracted with FIELD_GET().

This restores the USB 2.0 and USB 3.0 root hubs on MT8173. A USB
webcam and both USB 2.0 and USB 3.0 hubs enumerate successfully,
and the previous ERST allocation failure is no longer present.

Fixes: 6d45e9556d4a ("usb: xhci: standardize multi bit-field macros")
Signed-off-by: Youngjoon Lee <getfeus@gmail.com>
---
 drivers/usb/host/xhci-mem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index 7a21ac81f9c8..af8d4b74c4ba 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -2301,7 +2301,7 @@ xhci_alloc_interrupter(struct xhci_hcd *xhci, unsigned int segs, gfp_t flags)
 	if (!segs)
 		segs = ERST_DEFAULT_SEGS;
 
-	max_segs = FIELD_GET(HCS_ERST_MAX, xhci->hcs_params2) << 2;
+	max_segs = BIT(FIELD_GET(HCS_ERST_MAX, xhci->hcs_params2));
 	segs = min(segs, max_segs);
 
 	ir = kzalloc_node(sizeof(*ir), flags, dev_to_node(dev));
-- 
2.55.0


             reply	other threads:[~2026-08-27  5:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-27  5:37 Youngjoon Lee [this message]
2026-08-27  6:34 ` [PATCH] usb: xhci: fix ERST max field conversion Neronin, Niklas

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=20260827053748.3755-1-getfeus@gmail.com \
    --to=getfeus@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    --cc=niklas.neronin@linux.intel.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.