Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2530177pxj; Mon, 10 May 2021 05:17:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwNjZPRsN6uODuPaLiQT2mPYLn/1wKwPMX1ozIA+GrWyuRDKSkrzifv9elzEzTmI0m7x3Ni X-Received: by 2002:a6b:dc16:: with SMTP id s22mr17707033ioc.170.1620649028469; Mon, 10 May 2021 05:17:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620649028; cv=none; d=google.com; s=arc-20160816; b=tiWKU69bP9v4lhAOkKjV2RraEI463vffC2PcpG5fbl7DOgCYd+gXU8gY+gcPYTbYli ROtgkEW2754FJBB/42v1wK50LQvzRIXdkDyMLC6ZGlAwjqOPczUPyF/97Mwb1o8fVZtT sTz7nfYdf3KXPtBdt8Livy8AvcTLpaVhFcI+WZxxHSRqdwwrfEP38o4wFbq5gHd1viyI jQOed16SVdU+UIfiaOWzRS+1MP8t5eOqhA/qHHHzOoYAPDjQtz8ylGYt6KJYa6PxJHZv 0Ikm2kljPHKlz3F+PLEV5YP//61armWMi6Yl23CqTof/Wce06AM8/XoIdSg+x9/gpTWM 4+LQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=PYxvXjIN/SKP7qfor6T5cmEHfs8+SOkd1o+OIyVZHUc=; b=cLUBR/y/TTjfJgf7tH8pQrPF0YkYav4xknI4ga6NxCCUZmbg4hgFAUoanFIfTQMhdW F1bb5hvoO87PH3EGxFyNCmQq9ZgedQznTO0k8d8y8eC6m/rArIJ28jGRBt/wNnKEnIBc iqvJlSilRC+22uc25CSQt14hUrhlO3h79qAqj8Yl4C6Ht8FivbNeQ2bTIUuLoiElEwED Nzgcj0vfN8uODvjmg/qzmUqXdXRCtfiLcoh8nGF0qaDPtzKYZ3w1t/jt5wkUD2a89viz xsYbHFis0F2d5jBpGKXu/Z7f/1TyvVneL7I49yPETmPziNVYqhPRe+1UL1KaOmC1jrNN cXHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=jT8o2+tN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j1si15343124ilo.38.2021.05.10.05.16.56; Mon, 10 May 2021 05:17:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=jT8o2+tN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233758AbhEJMG2 (ORCPT + 99 others); Mon, 10 May 2021 08:06:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:45870 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236391AbhEJLH6 (ORCPT ); Mon, 10 May 2021 07:07:58 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id A8AAD61990; Mon, 10 May 2021 11:00:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620644440; bh=yjv83xeYuwyma2z/uwMdnT0GY8PGJ9xn6q6JHn+3dtk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jT8o2+tNE+9p0klmmH5xgxlx6z6kNo5TmV9pKB/eIpTpNC2y/pUbWOgUXID/MxxrY s85dWwCYWGmFoKxvKJIYugpWAxwBjYGYSes3FJFws0UEdeYhWSQO4XQv6fvt87Ls3C HdDVUipYtZAmW4PvghMPhJss+TqtLopefLLLdL+8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mathias Nyman , Thinh Nguyen , Sasha Levin Subject: [PATCH 5.12 084/384] usb: xhci: Fix port minor revision Date: Mon, 10 May 2021 12:17:53 +0200 Message-Id: <20210510102017.659845757@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210510102014.849075526@linuxfoundation.org> References: <20210510102014.849075526@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thinh Nguyen [ Upstream commit 64364bc912c01b33bba6c22e3ccb849bfca96398 ] Some hosts incorrectly use sub-minor version for minor version (i.e. 0x02 instead of 0x20 for bcdUSB 0x320 and 0x01 for bcdUSB 0x310). Currently the xHCI driver works around this by just checking for minor revision > 0x01 for USB 3.1 everywhere. With the addition of USB 3.2, checking this gets a bit cumbersome. Since there is no USB release with bcdUSB 0x301 to 0x309, we can assume that sub-minor version 01 to 09 is incorrect. Let's try to fix this and use the minor revision that matches with the USB/xHCI spec to help with the version checking within the driver. Acked-by: Mathias Nyman Signed-off-by: Thinh Nguyen Link: https://lore.kernel.org/r/ed330e95a19dc367819c5b4d78bf7a541c35aa0a.1615432770.git.Thinh.Nguyen@synopsys.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/host/xhci-mem.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c index f2c4ee7c4786..3708432f5f69 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -2129,6 +2129,15 @@ static void xhci_add_in_port(struct xhci_hcd *xhci, unsigned int num_ports, if (major_revision == 0x03) { rhub = &xhci->usb3_rhub; + /* + * Some hosts incorrectly use sub-minor version for minor + * version (i.e. 0x02 instead of 0x20 for bcdUSB 0x320 and 0x01 + * for bcdUSB 0x310). Since there is no USB release with sub + * minor version 0x301 to 0x309, we can assume that they are + * incorrect and fix it here. + */ + if (minor_revision > 0x00 && minor_revision < 0x10) + minor_revision <<= 4; } else if (major_revision <= 0x02) { rhub = &xhci->usb2_rhub; } else { -- 2.30.2