From nobody Fri Mar 29 14:37:09 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of seabios.org designates 78.46.105.101 as permitted sender) client-ip=78.46.105.101; envelope-from=seabios-bounces@seabios.org; helo=coreboot.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of seabios.org designates 78.46.105.101 as permitted sender) smtp.mailfrom=seabios-bounces@seabios.org; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=outlook.com Return-Path: Received: from coreboot.org (coreboot.org [78.46.105.101]) by mx.zohomail.com with SMTPS id 1668430789832618.5772109007171; Mon, 14 Nov 2022 04:59:49 -0800 (PST) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by coreboot.org (Postfix) with ESMTPA id 99DE72B9EC; Mon, 14 Nov 2022 12:59:45 +0000 (UTC) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) by coreboot.org (Postfix) with ESMTP id D7FC121F1D for ; Mon, 14 Nov 2022 12:59:29 +0000 (UTC) Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) SY4P282MB1947.AUSP282.PROD.OUTLOOK.COM (2603:10c6:10:c3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.17; Mon, 14 Nov 2022 12:59:25 +0000 Received: from authenticated-user (PRIMARY_HOSTNAME [PUBLIC_IP]) ([fe80::9186:3ad5:ee12:a877]) by SYZP282MB3252.AUSP282.PROD.OUTLOOK.COM ([fe80::9186:3ad5:ee12:a877%3]) with mapi id 15.20.5813.017; Mon, 14 Nov 2022 12:59:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lRhAQD5RJODWGNIePRmyanr0GDqsrCUZE93/qDnAjbehTeqz4RCUGdJoSO7pKHalrGbGYk0whD+8gmu3G7hGLmD4rpcRTXNiMzJLMd7yu8fdQZfN3yYPPutl4DWwwoC7K3YpZtRxVScGlUkQaOvco8E7PvLX2PxI319H0KjR3bEPcDbkvPMUnsYpzCbTjkTw6H9PQuoSaXky5spQoU+xOhzqmaSiasyFGT58ZTr/C2K2Cw444g3uWZQG6pzluIWrMS4CDazUw265Oj7hgw3jXFE4CLz3yuL2OsfjE1QJBpLNRxNcjDIbPyt1n2GnnM16KMAEg/qf6+CnGj0yfPxPow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iir+c3i602bbuBrX87hmvIcTAOS9YQualCp7UFgrG34=; b=GYQd0V8X/4VFwxhA+Ln+VAev66BrHnLvungUaZTqUTbAospbn9VXqUyo2Umlu6YnhkTTkQhR/AVh/Ppj9z40adm2PL7ge4zuDw7fMtSrnC9lCnli//iUqfKcekaA1lVV5bLVHmlzVv0ZebU2ATeLeyYHl/ZbCINKj3HF+J58D84aeZ/s/BuShxqfJdmsitn6lgPbWS3V/0jShQspSe2b0Z3WhEh5uff2ak/RbQOyD/RhaeneGkidGab70gS3RP1lMPCovdg8FkCWrzeHFOge6aUxlHbjkDaAi+70+NYGEpA3ELOTahYvuk6KUWashJJiHdGlkQYXn3ENbc5EFv/NZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iir+c3i602bbuBrX87hmvIcTAOS9YQualCp7UFgrG34=; b=n4kpF2bjNdacpBXmVJoELerDuPS1KP7mc8qZQng03bCDE5NVWUTxeOEu5/rK9jxQm7kHMXlfVzetn7OvaN0c/U5FlAcsdvFLZjcVkdTgjP+V0sMN7uxU3Yb9oT7Lu7pqQvZNX+s+uj2qRgAH0aLB1nxkUKKaf2Gf1W4JdyazqVgKPyf//S0iNzbagL36AAZAGV6aO8TEx7uaaNi+YNqjVPiwERZpdrh6Q/+8k1IUE9jA85R3HPGA7y2Oan3hxxLqnxVB6y1FCa0ByypzvFZM1SjAtg4+2nAE8/OYGomXH/KhOQzmUbeNTdkrIsSXmvVGVpmzLe6yYAB/2v67vIiDJA== From: qi zhou To: "seabios@seabios.org" Thread-Topic: [PATCH] fix wrong init of keyboard/mouse's if first interface is not boot protocol Thread-Index: AQHY+CiUwZq49N9z4keT8mcA80nVzQ== Date: Mon, 14 Nov 2022 12:59:25 +0000 Message-ID: Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Txy9AYuc5HQ2nlq5QUKHvSo57MSp3Cyv] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SYZP282MB3252:EE_|SY4P282MB1947:EE_ x-ms-office365-filtering-correlation-id: 217e0e38-cf3e-475c-bcd2-08dac6400f04 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TKFCrHksxTl5Hc4bEUlVyHwp/bDHIwf9vJLWBqwdQYSC9DZuURh26gGCqCRPsZFPz+Yv2FcbJvlt8uWRvgc+dVBiPuoH72ZxeX7rMWykKTkPZG2ZPKWB3/ydEwNX0L2XgdyLOP1N0iT7Yy3ehrEP/p1kbm9Wt85se3gNo0dsPC08zbYF3eeMjFNrbB+5IJWQJoZV/Sjn3upF0j5FvoBNqUaTCR0WyU/27Zxc5tAKeCoxk4UtALDBjyphN9Wq4XqVpqkDkAConDoNApdEg9FM3MUphB81cOOW3uvAhL2/pfIAfQSMNFnMrNfg4vwwn1fi7lg3L0ewrHCry7715yttVXFgU/Mls7cieNhoP3DlwuvClJGEfrY8fF7MAjXzBmvW9Vfs/u7SHTkecd9eMds3bRtAvTvcfNaMvn9A4iQmxuOx3MSAnNvqzpv5iNcDQrrD5HncT5/jw9W0nHMUZzNr3C4VSKX2HsLTBpJyQB8M04HENTcTuYEXKpSAcz712jopNIV0QIkmUu8/IqgvEyLQvPsIapdt8Y2EGeSiAyEhLbPemPh6ZlKdZOCWyP8yOftxImnhVT0aQSIvfC5UZeleCDo+ZueFfz67A28V7zx3xrQPLkQnNRdJI1ZDkAOT2La2 x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?CwrFzg5JHx3BKERrDSukeCe4KXl6Iz+PmHt/MsL2LHoa9Snq7qSgq9jX7G?= =?iso-8859-1?Q?6dpV1ArMVYbzIvgHZvblgpJdPcQPbHv+sfTBWdG/fS3VI4jqE3Ellcyd2j?= =?iso-8859-1?Q?f8FwM+mQRIFwUHU4ArC2s9VlU81rS418XImKHMzsR26YGBYQ05V9iZhN0m?= =?iso-8859-1?Q?rXGtdQxPE+4sEJ7bgRtLOFKevXxou/H9PXXFAcy3J2tOzDlu5tnflxsK6I?= =?iso-8859-1?Q?HSWTQeO4GqSKMmsHFn1srHQSxqrlxYQp0ik+bUot8s+Hgx83fsK82AdLgd?= =?iso-8859-1?Q?6XJDvPms7p3OPyf6qCqXvSrZlG5/1UqHdC2Aw7RTLLhf+gEhi63uFXfGuv?= =?iso-8859-1?Q?oGz1BwjOCSgZXVcYUSrbHFQ767u9qqs1UAtkY+sE22KorB++XQI2q1csVL?= =?iso-8859-1?Q?t3R66T3wWHaNttDQPAwC2W83m+QXKHhbTqOsK1INRm0XRqBTzrhl31lkR0?= =?iso-8859-1?Q?jgbB4Juw2i8Qz5KlPYxEftZQTMe4R/R9mboavHuIJ/6+c5UYa70OCGorP3?= =?iso-8859-1?Q?sLIaoGnqHddsqGCf9Iv4imfvxnBcPgs3+kXl6kEKvU1wHZ1VI7xRAEz+q2?= =?iso-8859-1?Q?wBTdRL+DyY4i89W4aZY1dbj3cfjpx65uGPFiuXglfOEzn+XQ7/BOfSHmsJ?= =?iso-8859-1?Q?miNQloKvi5W1uAqmO9J3F2+MX912r/hSDHoDrI1LAR3Zj4IxyDReNVYAiS?= =?iso-8859-1?Q?VdKY1jJpkgFY8qbSE1/ghcxVjx4k1IxkQjkaIxC7QKwD4yH0rswbMVox2h?= =?iso-8859-1?Q?x9DlHp9mUQFCV+gQlL80+Kx2vPbP34a8mEI2y3iWjcTupJxsOT3bVqhVsH?= =?iso-8859-1?Q?Km8z6e6A9s8QMcU2z0aE+p39H+7Ufdm3+zFFP0gX0BkdmW0WhGtx7ZRRC5?= =?iso-8859-1?Q?ebDxbEIXdjI6VWSGuKq+m8ZOIvDs6kqbHeb0kVqJ9aryy1QqqFTir/31jt?= =?iso-8859-1?Q?QXhNs5i0v/NL/6ofgvdvMj4wgczQPqRhjeUVj5lxwMUR8iUvzM4w/EjPDO?= =?iso-8859-1?Q?nzFdtsJZrlFFw0Xz+k3nmbz11IxkZ0pw1dNXZvCzvWq2z3yNbavI5ZApn3?= =?iso-8859-1?Q?ck0Ut/9YhoQErZblv33ieHRSZii5Fh9N497RgYeQInKs7lDVkgFeQ3Qvu0?= =?iso-8859-1?Q?0Ii8olodxcBFIjUCowFj6oeVirjFkZUOWApMBV58uvLavynNfFN/Wjz57n?= =?iso-8859-1?Q?6cQFuO5Jjrt8ZHiBCBXaE3ZSuTNLOsGL2EA+DUOU9fdKVpp9ut1DZyWWWc?= =?iso-8859-1?Q?30CJUJfxhqqH5IexoKYBTblHGBTkxkdsjGbWZmO5REwVtEEepKF54StLt8?= =?iso-8859-1?Q?toAQ?= MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SYZP282MB3252.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: 217e0e38-cf3e-475c-bcd2-08dac6400f04 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Nov 2022 12:59:25.7896 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY4P282MB1947 Message-ID-Hash: MYFHFAX2EPFOJ2KYCULZOSP5YSYSXJL6 X-Message-ID-Hash: MYFHFAX2EPFOJ2KYCULZOSP5YSYSXJL6 X-MailFrom: atmgnd@outlook.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-seabios.seabios.org-0; header-match-seabios.seabios.org-1; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.6b1 Precedence: list Subject: [SeaBIOS] [PATCH] fix wrong init of keyboard/mouse's if first interface is not boot protocol List-Id: SeaBIOS mailing list Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable Authentication-Results: coreboot.org; auth=pass smtp.auth=mailman@coreboot.org smtp.mailfrom=seabios-bounces@seabios.org X-Spamd-Bar: / X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1668430790503100001 Content-Type: text/plain; charset="utf-8" From 987b295099267bac3012fd401dc3ea34c3e40071 Mon Sep 17 00:00:00 2001 From: Qi Zhou Date: Mon, 14 Nov 2022 20:55:44 +0800 Subject: [PATCH] fix wrong init of keyboard/mouse's if first interface is n= ot boot protocol There is always some endpoint descriptors after each interface descriptor, = We should only decrement num_iface if interface type is USB_DT_INTERFACE, see https://www.beyondlogic.org/usbnutshell/usb5.shtml#ConfigurationDescriptors Signed-off-by: Qi Zhou Reviewed-by: Gerd Hoffmann --- src/hw/usb-hid.c | 13 ++++++++----- src/hw/usb.c | 12 +++++++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/hw/usb-hid.c b/src/hw/usb-hid.c index 92c6b19..dec198a 100644 --- a/src/hw/usb-hid.c +++ b/src/hw/usb-hid.c @@ -22,13 +22,13 @@ struct usb_pipe *mouse_pipe VARFSEG; =20 // Send USB HID protocol message. static int -set_protocol(struct usb_pipe *pipe, u16 val) +set_protocol(struct usb_pipe *pipe, u16 val, u16 inferface) { struct usb_ctrlrequest req; req.bRequestType =3D USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFAC= E; req.bRequest =3D HID_REQ_SET_PROTOCOL; req.wValue =3D val; - req.wIndex =3D 0; + req.wIndex =3D inferface; req.wLength =3D 0; return usb_send_default_control(pipe, &req, NULL); } @@ -76,9 +76,12 @@ usb_kbd_setup(struct usbdevice_s *usbdev } =20 // Enable "boot" protocol. - int ret =3D set_protocol(usbdev->defpipe, 0); - if (ret) + int ret =3D set_protocol(usbdev->defpipe, 0, usbdev->iface->bInterface= Number); + if (ret) { + dprintf(3, "Failed to set boot protocol\n"); return -1; + } + // Periodically send reports to enable key repeat. ret =3D set_idle(usbdev->defpipe, KEYREPEATMS); if (ret) @@ -118,7 +121,7 @@ usb_mouse_setup(struct usbdevice_s *usbdev } =20 // Enable "boot" protocol. - int ret =3D set_protocol(usbdev->defpipe, 0); + int ret =3D set_protocol(usbdev->defpipe, 0, usbdev->iface->bInterface= Number); if (ret) return -1; =20 diff --git a/src/hw/usb.c b/src/hw/usb.c index 38a866a..409da8c 100644 --- a/src/hw/usb.c +++ b/src/hw/usb.c @@ -372,17 +372,19 @@ configure_usb_device(struct usbdevice_s *usbdev) void *config_end =3D (void*)config + config->wTotalLength; struct usb_interface_descriptor *iface =3D (void*)(&config[1]); for (;;) { - if (!num_iface-- || (void*)iface + iface->bLength > config_end) + if (!num_iface || (void*)iface + iface->bLength > config_end) // Not a supported device. goto fail; - if (iface->bDescriptorType =3D=3D USB_DT_INTERFACE - && (iface->bInterfaceClass =3D=3D USB_CLASS_HUB + if (iface->bDescriptorType =3D=3D USB_DT_INTERFACE) { + num_iface--; + if (iface->bInterfaceClass =3D=3D USB_CLASS_HUB || (iface->bInterfaceClass =3D=3D USB_CLASS_MASS_STORAGE && (iface->bInterfaceProtocol =3D=3D US_PR_BULK || iface->bInterfaceProtocol =3D=3D US_PR_UAS)) || (iface->bInterfaceClass =3D=3D USB_CLASS_HID - && iface->bInterfaceSubClass =3D=3D USB_INTERFACE_SUBC= LASS_BOOT))) - break; + && iface->bInterfaceSubClass =3D=3D USB_INTERFACE_SUBC= LASS_BOOT)) + break; + } iface =3D (void*)iface + iface->bLength; } =20 --=20 2.25.1 _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-leave@seabios.org