Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f482038 authored by Julius Werner's avatar Julius Werner Committed by Greg Kroah-Hartman
Browse files

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: default avatarJulius Werner <jwerner@chromium.org>
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 70b55c2a
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -27,6 +27,22 @@ config USB_ANNOUNCE_NEW_DEVICES
comment "Miscellaneous USB options"
	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
	bool "Dynamic USB minor allocation"
	depends on USB
+5 −11
Original line number Diff line number Diff line
@@ -201,20 +201,14 @@ void usb_detect_quirks(struct usb_device *udev)
		dev_dbg(&udev->dev, "USB quirks for this device: %x\n",
			udev->quirks);

	/* For the present, all devices default to USB-PERSIST enabled */
#if 0		/* was: #ifdef CONFIG_PM */
	/* Hubs are automatically enabled for USB-PERSIST */
	if (udev->descriptor.bDeviceClass == USB_CLASS_HUB)
#ifdef CONFIG_USB_DEFAULT_PERSIST
	if (!(udev->quirks & USB_QUIRK_RESET))
		udev->persist_enabled = 1;

#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))
	/* Hubs are automatically enabled for USB-PERSIST */
	if (udev->descriptor.bDeviceClass == USB_CLASS_HUB)
		udev->persist_enabled = 1;
#endif	/* CONFIG_PM */
#endif	/* CONFIG_USB_DEFAULT_PERSIST */
}

void usb_detect_interface_quirks(struct usb_device *udev)