Received: by 2002:ac0:c50a:0:0:0:0:0 with SMTP id y10csp1121145imi; Fri, 1 Jul 2022 03:38:31 -0700 (PDT) X-Google-Smtp-Source: AGRyM1v4NzStyKLqEcMj6hY0GFmVkH38bS6iooydxFt1ehjMf4Mi8Mf7ieBrcFjpXamtIeNi0Ok5 X-Received: by 2002:a17:907:c14:b0:726:9118:3326 with SMTP id ga20-20020a1709070c1400b0072691183326mr13833060ejc.68.1656671910929; Fri, 01 Jul 2022 03:38:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656671910; cv=none; d=google.com; s=arc-20160816; b=qAgMZcMC2p3DsBQa/mFgBEEebX95u/5VE0UnTf8LTdRQkmFbf0tax1sbH8DXGrLaaS uROegxcME/EJAqYqkeHe7lAZiQZ6KawU9P2/c/COeUXg4EUAs6kDSxYnNykyYMlbgl9+ J7a4HViezAL9hGwzNUmwG2T047Ur/5to1sN8Mko7kzc+PLYR+mACxmEXhSYxMpXk8dsP PnIS3uPshuMP1LvJsDp+VRjR9IOLSb4H1jcWcnbBqdkaMc0P6dr9FQL0eFOI9pxKc9KG JU3+5spFoeW5dBTCeI1iikJpCswMiBJI/YmtUfaBjz4AB+MN/i3ZEr4E3vthhFS/EYbD dNdg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=Bwahw1i0rhGNpxRD2oOZUgw5URb9IxdlhooQCmFaEos=; b=0bGdRoR5qg8aSIy9zl/i20PiEmIZHomPYPsU94QJ0vCtj5TwgzfNG6zkNjax9Sn4Ig CbPgD8iMVvsi8cjX3nOVDrKnbiG1RhdQ4M+mdReEn/tyydpbKRDBnObYQ/zs7gtZFr4R H6Pwtp+YK2+l+Dar8Bz2pKRF/O1ZAjKkDMJyBNFK/zEDvjS6OPBt2BS3b/6KXL8MV0Ue wYEH4a53OZyKO/zlsWlPOt/tsKTNaMw9+LawehuxylIYBcpe1nX4h1ToHILW+84KNB2O g5D2xI6ZqQ6Yq2y2gWTL7ox+LrARA7lly17mHvfehsZGQ8XEMiI5fAZ24hhmuVSrqsVR Dxow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UWsq++M5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l15-20020a170906794f00b007120074c1d4si774573ejo.747.2022.07.01.03.38.05; Fri, 01 Jul 2022 03:38:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UWsq++M5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S236418AbiGAKf0 (ORCPT + 99 others); Fri, 1 Jul 2022 06:35:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236333AbiGAKfW (ORCPT ); Fri, 1 Jul 2022 06:35:22 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ABE157969E; Fri, 1 Jul 2022 03:35:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 3B61062339; Fri, 1 Jul 2022 10:35:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A6C4C341C6; Fri, 1 Jul 2022 10:35:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1656671720; bh=5hX8oRoPZn4b5fAaXxxYWDQveykgB7sgy/RluBH/fJU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=UWsq++M5k0Wo3efjXd1fLAQzurXJaA8GNRq0b6drz75gynuFHQa39dFdvKWiH04u3 u89Q2AoTV2EoGcNYW3oH4iH1+CvKo0EWKBfUMEyz0xZlzarTk2K6bJkFVql7L82ddO LuY+yThHSOoxvhtr0vmohQ3P7cO/ZS7ygZl7sY6A= Date: Fri, 1 Jul 2022 12:35:17 +0200 From: Greg KH To: Ray Chi Cc: corbet@lwn.net, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Albert Wang Subject: Re: [PATCH] USB: hub: add module parameters to usbcore for port init retries Message-ID: References: <20220617102256.3253019-1-raychi@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 01, 2022 at 05:46:42PM +0800, Ray Chi wrote: > On Tue, Jun 21, 2022 at 3:20 PM Greg KH wrote: > > > > On Fri, Jun 17, 2022 at 06:22:56PM +0800, Ray Chi wrote: > > > Currently, there is a Kconfig (CONFIG_USB_FEW_INIT_RETRIES) to > > > reduce retries when the port initialization is failed. The retry > > > times are fixed and assigned in compile time. To improve the > > > flexibility, this patch add four module parameters: > > > port_reset_tries, set_address_tries, get_descriptor_tries, > > > and get_maxpacket0_tries, to replace the original default values. > > > > > > The default value of module parameters is the same as before > > > to preserve the existing behavior. > > > > > > Signed-off-by: Ray Chi > > > --- > > > .../admin-guide/kernel-parameters.txt | 16 ++++++++++ > > > drivers/usb/core/hub.c | 31 ++++++++++++++++--- > > > 2 files changed, 42 insertions(+), 5 deletions(-) > > > > > > diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt > > > index 8090130b544b..c467b2778128 100644 > > > --- a/Documentation/admin-guide/kernel-parameters.txt > > > +++ b/Documentation/admin-guide/kernel-parameters.txt > > > @@ -6277,6 +6277,22 @@ > > > USB_REQ_GET_DESCRIPTOR request in milliseconds > > > (default 5000 = 5.0 seconds). > > > > > > + usbcore.port_reset_tries= > > > + [USB] Set the retry time of port reset for each > > > + port initialization (default PORT_RESET_TRIES = 5). > > > + > > > + usbcore.set_address_tries= > > > + [USB] set the retry time of set address for each > > > + port initialization (default SET_ADDRESS_TRIES = 2). > > > + > > > + usbcore.get_descriptor_tries= > > > + [USB] set the retry time of set address for each > > > + port initialization (default GET_DESCRIPTOR_TRIES = 2). > > > + > > > + usbcore.get_maxpacket0_tries= > > > + [USB] set the retry time of get maxpacket0 for each > > > + port initialization (default GET_MAXPACKET0_TRIES = 3). > > > + > > > usbcore.nousb [USB] Disable the USB subsystem > > > > > > usbcore.quirks= > > > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c > > > index b7f66dcd1fe0..c5c695886424 100644 > > > --- a/drivers/usb/core/hub.c > > > +++ b/drivers/usb/core/hub.c > > > @@ -2788,6 +2788,27 @@ static unsigned hub_is_wusb(struct usb_hub *hub) > > > #define HUB_LONG_RESET_TIME 200 > > > #define HUB_RESET_TIMEOUT 800 > > > > > > +/* define retry time for port reset */ > > > +static int port_reset_tries = PORT_RESET_TRIES; > > > +module_param(port_reset_tries, int, S_IRUGO|S_IWUSR); > > > +MODULE_PARM_DESC(port_reset_tries, "retry times of port reset for each port initialization"); > > > > Please no. Module parameters are from the 1990's, let us never add new > > ones if at all possible. > > > > These are global options, for all devices in the system. Instead, use > > per-device settings if you really need to change these values. > > Sorry for the late reply. > Since the driver is using define macro to decide the retry time > currently, we can't > modify the value directly. Do you mean setting by device tree for > per-device settings? or other methods? Yes, anything other than a module parameter as you just modified the value of ALL devices in the system, which I do not think you really want, right? Odds are you just want to be able to work around a broken internal USB hub, and do not want this option changed for anything that a user plugs into the system, right? > > But I would even push back on that and ask why these values need to be > > changed at all. What hardware is broken so badly that our timeout > > settings do not work properly? Can we modify them gracefully to "just > > work" without any need for tweaking or requiring any modification by a > > user at all? That would be the better solution instead of requiring > > users to do this on their own when confronted by misbehaving hardware. > > I got some reports from end users, but I couldn't see the hardware > information due to > enumeration not being complete. There are too many hardwares owned by end users. > It is hard to make work for all of them. In addition, some users just > tried to reboot the Host device > when they found their connected hardware not working. It would cause > the device reset or hang > due to the retry mechanism. This is why I want to modify the retry times. So this is for external devices? Then just change the kernel build option for those systems? In all the 20+ years, we haven't seen a real need for this yet, what just changed to require it? thanks, greg k-h