Commit 2740ac33 authored by Johannes Brüderl's avatar Johannes Brüderl Committed by Greg Kroah-Hartman
Browse files

usb: core: add USB_QUIRK_NO_BOS for devices that hang on BOS descriptor

Add USB_QUIRK_NO_BOS quirk flag to skip requesting the BOS descriptor
for devices that cannot handle it.

Add Elgato 4K X (0fd9:009b) to the quirk table. This device hangs when
the BOS descriptor is requested at SuperSpeed Plus (10Gbps).

Link: https://bugzilla.kernel.org/show_bug.cgi?id=220027


Cc: stable <stable@kernel.org>
Signed-off-by: default avatarJohannes Brüderl <johannes.bruederl@gmail.com>
Link: https://patch.msgid.link/20251207090220.14807-1-johannes.bruederl@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1d32389d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1040,6 +1040,11 @@ int usb_get_bos_descriptor(struct usb_device *dev)
	__u8 cap_type;
	int ret;

	if (dev->quirks & USB_QUIRK_NO_BOS) {
		dev_dbg(ddev, "skipping BOS descriptor\n");
		return -ENOMSG;
	}

	bos = kzalloc(sizeof(*bos), GFP_KERNEL);
	if (!bos)
		return -ENOMEM;
+3 −0
Original line number Diff line number Diff line
@@ -450,6 +450,9 @@ static const struct usb_device_id usb_quirk_list[] = {
	{ USB_DEVICE(0x0c45, 0x7056), .driver_info =
			USB_QUIRK_IGNORE_REMOTE_WAKEUP },

	/* Elgato 4K X - BOS descriptor fetch hangs at SuperSpeed Plus */
	{ USB_DEVICE(0x0fd9, 0x009b), .driver_info = USB_QUIRK_NO_BOS },

	/* Sony Xperia XZ1 Compact (lilac) smartphone in fastboot mode */
	{ USB_DEVICE(0x0fce, 0x0dde), .driver_info = USB_QUIRK_NO_LPM },

+3 −0
Original line number Diff line number Diff line
@@ -75,4 +75,7 @@
/* short SET_ADDRESS request timeout */
#define USB_QUIRK_SHORT_SET_ADDRESS_REQ_TIMEOUT	BIT(16)

/* skip BOS descriptor request */
#define USB_QUIRK_NO_BOS			BIT(17)

#endif /* __LINUX_USB_QUIRKS_H */