mirror of https://gitee.com/openkylin/linux.git
usb: Make USB persist default configurable
Commit 9214d1d8
set the USB persist flag as a default for all devices.
This might be desirable for some distributions, but it certainly has its
trade-offs... most importantly, it can significantly increase system
resume time, because the kernel blocks on resuming (and sometimes
resetting) USB devices before it unfreezes userspace.
This patch introduces a new config option CONFIG_USB_DEFAULT_PERSIST,
which allows distributions to make this decision on their own without
the need to carry a custom patch or revert the kernel's setting in
userspace.
[edited the Kconfig help text a bit - gregkh]
Signed-off-by: Julius Werner <jwerner@chromium.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
70b55c2ad0
commit
4f48203881
|
@ -27,6 +27,22 @@ config USB_ANNOUNCE_NEW_DEVICES
|
||||||
comment "Miscellaneous USB options"
|
comment "Miscellaneous USB options"
|
||||||
depends on USB
|
depends on USB
|
||||||
|
|
||||||
|
config USB_DEFAULT_PERSIST
|
||||||
|
bool "Enable USB persist by default"
|
||||||
|
depends on USB
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Say N here if you don't want USB power session persistance
|
||||||
|
enabled by default. If you say N it will make suspended USB
|
||||||
|
devices that lose power get reenumerated as if they had been
|
||||||
|
unplugged, causing any mounted filesystems to be lost. The
|
||||||
|
persist feature can still be enabled for individual devices
|
||||||
|
through the power/persist sysfs node. See
|
||||||
|
Documentation/usb/persist.txt for more info.
|
||||||
|
|
||||||
|
If you have any questions about this, say Y here, only say N
|
||||||
|
if you know exactly what you are doing.
|
||||||
|
|
||||||
config USB_DYNAMIC_MINORS
|
config USB_DYNAMIC_MINORS
|
||||||
bool "Dynamic USB minor allocation"
|
bool "Dynamic USB minor allocation"
|
||||||
depends on USB
|
depends on USB
|
||||||
|
|
|
@ -201,20 +201,14 @@ void usb_detect_quirks(struct usb_device *udev)
|
||||||
dev_dbg(&udev->dev, "USB quirks for this device: %x\n",
|
dev_dbg(&udev->dev, "USB quirks for this device: %x\n",
|
||||||
udev->quirks);
|
udev->quirks);
|
||||||
|
|
||||||
/* For the present, all devices default to USB-PERSIST enabled */
|
#ifdef CONFIG_USB_DEFAULT_PERSIST
|
||||||
#if 0 /* was: #ifdef CONFIG_PM */
|
if (!(udev->quirks & USB_QUIRK_RESET))
|
||||||
|
udev->persist_enabled = 1;
|
||||||
|
#else
|
||||||
/* Hubs are automatically enabled for USB-PERSIST */
|
/* Hubs are automatically enabled for USB-PERSIST */
|
||||||
if (udev->descriptor.bDeviceClass == USB_CLASS_HUB)
|
if (udev->descriptor.bDeviceClass == USB_CLASS_HUB)
|
||||||
udev->persist_enabled = 1;
|
udev->persist_enabled = 1;
|
||||||
|
#endif /* CONFIG_USB_DEFAULT_PERSIST */
|
||||||
#else
|
|
||||||
/* In the absence of PM, we can safely enable USB-PERSIST
|
|
||||||
* for all devices. It will affect things like hub resets
|
|
||||||
* and EMF-related port disables.
|
|
||||||
*/
|
|
||||||
if (!(udev->quirks & USB_QUIRK_RESET))
|
|
||||||
udev->persist_enabled = 1;
|
|
||||||
#endif /* CONFIG_PM */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void usb_detect_interface_quirks(struct usb_device *udev)
|
void usb_detect_interface_quirks(struct usb_device *udev)
|
||||||
|
|
Loading…
Reference in New Issue