All of lore.kernel.org
 help / color / mirror / Atom feed
From: <gregkh@suse.de>
To: torvalds@linux-foundation.org, akpm@linuxfoundation.org,
	gregkh@suse.de, greg@kroah.com, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org, oliver@neukum.org, pavel@suse.cz,
	rjw@sisk.pl, stern@rowland.harvard.edu
Subject: patch usb-don-t-use-reset-resume-if-drivers-don-t-support-it.patch added to gregkh-2.6 tree
Date: Tue, 10 Jun 2008 14:42:24 -0700	[thread overview]
Message-ID: <12131341443712@kroah.org> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0806101454480.3658-100000@iolanthe.rowland.org>


This is a note to let you know that I've just added the patch titled

     Subject: USB: don't use reset-resume if drivers don't support it

to my gregkh-2.6 tree.  Its filename is

     usb-don-t-use-reset-resume-if-drivers-don-t-support-it.patch

This tree can be found at 
    http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/


>From stern@rowland.harvard.edu  Tue Jun 10 14:31:37 2008
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Tue, 10 Jun 2008 14:59:43 -0400 (EDT)
Subject: USB: don't use reset-resume if drivers don't support it
To: Greg KH <greg@kroah.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,  Oliver Neukum <oliver@neukum.org>, Pavel Machek <pavel@suse.cz>,  USB list <linux-usb@vger.kernel.org>,  Andrew Morton <akpm@linuxfoundation.org>,  kernel list <linux-kernel@vger.kernel.org>,  "Rafael J. Wysocki" <rjw@sisk.pl>
Message-ID: <Pine.LNX.4.44L0.0806101454480.3658-100000@iolanthe.rowland.org>

From: Linus Torvalds <torvalds@linux-foundation.org>

This patch tries to identify which devices are able to accept
reset-resume handling, by checking that there is at least one
interface driver bound and that all of the drivers have a reset_resume
method defined.  If these conditions don't hold then during resume
processing, the device is logicall disconnected.

This is only a temporary fix.  Later on we will explicitly unbind
drivers that can't handle reset-resumes.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: Oliver Neukum <oliver@neukum.org>
Cc: Pavel Machek <pavel@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/usb/core/hub.c |   46 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -644,6 +644,48 @@ static void hub_stop(struct usb_hub *hub
 
 #ifdef CONFIG_PM
 
+/* Try to identify which devices need USB-PERSIST handling */
+static int persistent_device(struct usb_device *udev)
+{
+	int i;
+	int retval;
+	struct usb_host_config *actconfig;
+
+	/* Explicitly not marked persistent? */
+	if (!udev->persist_enabled)
+		return 0;
+
+	/* No active config? */
+	actconfig = udev->actconfig;
+	if (!actconfig)
+		return 0;
+
+	/* FIXME! We should check whether it's open here or not! */
+
+	/*
+	 * Check that all the interface drivers have a
+	 * 'reset_resume' entrypoint
+	 */
+	retval = 0;
+	for (i = 0; i < actconfig->desc.bNumInterfaces; i++) {
+		struct usb_interface *intf;
+		struct usb_driver *driver;
+
+		intf = actconfig->interface[i];
+		if (!intf->dev.driver)
+			continue;
+		driver = to_usb_driver(intf->dev.driver);
+		if (!driver->reset_resume)
+			return 0;
+		/*
+		 * We have at least one driver, and that one
+		 * has a reset_resume method.
+		 */
+		retval = 1;
+	}
+	return retval;
+}
+
 static void hub_restart(struct usb_hub *hub, int type)
 {
 	struct usb_device *hdev = hub->hdev;
@@ -689,8 +731,8 @@ static void hub_restart(struct usb_hub *
 		 * turn off the various status changes to prevent
 		 * khubd from disconnecting it later.
 		 */
-		if (udev->persist_enabled && status == 0 &&
-				!(portstatus & USB_PORT_STAT_ENABLE)) {
+		if (status == 0 && !(portstatus & USB_PORT_STAT_ENABLE) &&
+				persistent_device(udev)) {
 			if (portchange & USB_PORT_STAT_C_ENABLE)
 				clear_port_feature(hub->hdev, port1,
 						USB_PORT_FEAT_C_ENABLE);


Patches currently in gregkh-2.6 which might be from torvalds@linux-foundation.org are

usb.current/usb-don-t-use-reset-resume-if-drivers-don-t-support-it.patch

  parent reply	other threads:[~2008-06-10 21:44 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-06  9:25 2.6.25-rc6: CONFIG_USB_PERSIST forced on Pavel Machek
2008-06-06 14:39 ` Alan Stern
2008-06-07 19:52   ` Pavel Machek
2008-06-07 22:26     ` Linus Torvalds
2008-06-09  8:00       ` Pavel Machek
2008-06-09 15:03         ` Alan Stern
2008-06-09 15:12           ` Oliver Neukum
2008-06-09 15:44             ` Alan Stern
2008-06-09 19:50               ` Greg KH
2008-06-09 20:59                 ` Pavel Machek
2008-06-09 21:39                   ` Linus Torvalds
2008-06-09 21:52                     ` Oliver Neukum
2008-06-09 21:56                     ` Pavel Machek
2008-06-09 22:19                       ` Linus Torvalds
2008-06-10  8:55                       ` Oliver Neukum
2008-06-10 14:59                         ` Alan Stern
2008-06-10 15:50                         ` Linus Torvalds
2008-06-10 16:36                           ` Linus Torvalds
2008-06-10 18:59                             ` [PATCH] USB: don't use reset-resume if drivers don't support it Alan Stern
2008-06-10 19:10                               ` Linus Torvalds
2008-06-10 21:30                               ` Greg KH
2008-06-10 21:42                               ` gregkh [this message]
2008-06-09 19:56               ` 2.6.25-rc6: CONFIG_USB_PERSIST forced on Oliver Neukum
2008-06-09 15:35         ` Linus Torvalds

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=12131341443712@kroah.org \
    --to=gregkh@suse.de \
    --cc=akpm@linuxfoundation.org \
    --cc=greg@kroah.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=oliver@neukum.org \
    --cc=pavel@suse.cz \
    --cc=rjw@sisk.pl \
    --cc=stern@rowland.harvard.edu \
    --cc=torvalds@linux-foundation.org \
    /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.