On Tue, 5 Sep 2006 11:26:48 -0400 (EDT) Alan Stern wrote:
> Index: mm/Documentation/usb/persist.txt
> ===================================================================
> --- /dev/null
> +++ mm/Documentation/usb/persist.txt
> @@ -0,0 +1,154 @@
> +
> + What is the solution?
> +
> +Setting the "persist=y" module parameter for usbcore will cause the
persist=1 ??
> +kernel to work around these issues. If usbcore is build into the
s/build/built/
> +main kernel instead of as a separate module, you can put
> +"usbcore.persist=1" on the boot command line. You can also change the
> +kernel's behavior on the fly using sysfs: Type
> +
> + echo y >/sys/module/usbcore/parameters/persist
Does sysfs treat 'y' as '1'?
Anyway, it would be Good to be consistent.
> +to turn the option on, and replace the 'y' with an 'n' to turn it off.
> +
> +The "persist" option enables a mode in which the core USB device data
> +structures are allowed to persist across a power-session disruption.
> +It works like this. If the kernel sees that a USB host controller is
> +not in the expected state during resume (i.e., if the controller was
> +reset or otherwise had lost power) then it applies a persistence check
> +to each of the USB devices below that controller. It doesn't try to
> +resume the device; that can't work once the power session is gone.
> +Instead it issues a USB port reset followed by a re-enumeration.
> +(This is exactly the same thing that happens whenever a USB device is
> +reset.) If the re-enumeration shows that the device now attached to
> +that port has the same descriptors as before, including the Vendor and
> +Product IDs, then the kernel continues to use the same device
> +structure. In effect, the kernel treats the device as though it had
> +merely been reset instead of unplugged.
so does the USB device also retain its same USB address?
> Index: mm/drivers/usb/core/message.c
> ===================================================================
> --- mm.orig/drivers/usb/core/message.c
> +++ mm/drivers/usb/core/message.c
> @@ -764,7 +764,7 @@ int usb_string(struct usb_device *dev, i
> err = -EINVAL;
> goto errout;
> } else {
> - dev->have_langid = -1;
> + dev->have_langid = 1;
> dev->string_langid = tbuf[2] | (tbuf[3]<< 8);
> /* always use the first langid listed */
> dev_dbg (&dev->dev, "default language 0x%04x\n",
Different patch (?).
---
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]