From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753614AbcEBNpw (ORCPT ); Mon, 2 May 2016 09:45:52 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:36757 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751045AbcEBNpn (ORCPT ); Mon, 2 May 2016 09:45:43 -0400 Date: Mon, 2 May 2016 15:45:41 +0200 From: Johan Hovold To: Grigori Goronzy Cc: Johan Hovold , Greg Kroah-Hartman , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: Re: [PATCH v4 01/13] USB: ch341: fix error handling on resume Message-ID: <20160502134541.GD3154@localhost> References: <1460754856-27908-1-git-send-email-greg@chown.ath.cx> <1460754856-27908-2-git-send-email-greg@chown.ath.cx> <20160429121601.GE22229@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Apr 29, 2016 at 05:11:13PM +0200, Grigori Goronzy wrote: > On 2016-04-29 14:16, Johan Hovold wrote: > > On Fri, Apr 15, 2016 at 11:14:04PM +0200, Grigori Goronzy wrote: > >> This may fail, do not assume it always works. > >> > >> Signed-off-by: Grigori Goronzy > >> --- > >> drivers/usb/serial/ch341.c | 4 +--- > >> 1 file changed, 1 insertion(+), 3 deletions(-) > >> > >> diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c > >> index c73808f..63df8ce 100644 > >> --- a/drivers/usb/serial/ch341.c > >> +++ b/drivers/usb/serial/ch341.c > >> @@ -544,9 +544,7 @@ static int ch341_reset_resume(struct usb_serial > >> *serial) > >> priv = usb_get_serial_port_data(serial->port[0]); > >> > >> /* reconfigure ch341 serial port after bus-reset */ > >> - ch341_configure(serial->dev, priv); > >> - > >> - return 0; > >> + return ch341_configure(serial->dev, priv); > > > > This is correct, but have noticed that resume is currently broken in > > that the interrupt urb is never resubmitted on resume in case the port > > is > > already open? > > > > Also ch341_configure must not use GFP_KERNEL either if called from a > > resume path (use GFP_NOIO). > > > > Care to fix this up as well? > > > > Sure. How can I trigger a reset properly? AFAIR, I tried USBDEVFS_RESET > and it didn't really do what I wanted, at least the reset_resume > callback wasn't invoked. You should be able to use the USB persistent-device functionality or temporarily enable the USB_QUIRK_RESET_RESUME quirk for your device to have reset_resume be called on system resume, but note that a resume callback also needs to be implemented for normal (system and runtime) resume. Also note that reset_resume for usb-serial is currently broken in mainline (since 4.5). Thanks, Johan