From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mx.groups.io with SMTP id smtpd.web10.38449.1598601062773292206 for ; Fri, 28 Aug 2020 00:51:02 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=k2hGMvHr; spf=pass (domain: intel.com, ip: 192.55.52.93, mailfrom: hao.a.wu@intel.com) IronPort-SDR: TmnU3M8wNVZzdiBKsXCGiwWpa/B0CboydpVzFvw6bvc4sHy7fIoZAPADyTj9Z4n4Ga4pOYejOx I33Y3u0NIeDQ== X-IronPort-AV: E=McAfee;i="6000,8403,9726"; a="154172817" X-IronPort-AV: E=Sophos;i="5.76,362,1592895600"; d="scan'208,217";a="154172817" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Aug 2020 00:51:02 -0700 IronPort-SDR: sNOkH+ssN3eLlrs/gMSUNMukT53J8fUhO2CybOBUMtQg6yTTEPKHjZ129hyzs1MVRkeCR1MHJO TiSMP34+D7RA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,362,1592895600"; d="scan'208,217";a="337434410" Received: from orsmsx605.amr.corp.intel.com ([10.22.229.18]) by FMSMGA003.fm.intel.com with ESMTP; 28 Aug 2020 00:51:02 -0700 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Fri, 28 Aug 2020 00:51:00 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Fri, 28 Aug 2020 00:51:00 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.103) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 28 Aug 2020 00:51:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cIL4G5oZ6TrgoprhRmg5LyQSI48XINfF0lmLBd6Jt+XtaqCoOCRxPcaHFmXKRYm7Nmr1V0s3u062/4rccjEI0e+9CIgEoaQhY1wt5mog9F9ud22vDD19Dmnrk6jRcFAbWo4Z6g+Zp+MWmiOjoQBljZ+bklITr6NTzZnZpaz898odKMFkUKl63o5LzGfsc7DVMnRgSicCBzsKG59i6c94EUwC6ZtlgTOVaDLeksNVIr8Fd45awHJKfY5ezpK18UrXOYSrsj31xcNGAxBZnJwsmQC1Ob93swkcA90glnteHE2BRtps7CY80dNQaxu2/s1ga0rvZar+mRnLgAywfUUQ3A== 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-SenderADCheck; bh=pMnx4Kq9WURtSG9noRZhM1+i5CLkpWDE3fZnGozLqBo=; b=IGrqw1epDYcAUGYOYe9iWio9P81LJKQUWkXsSpar/H74F+4iXPGpj5NQHNqLB8jpMbjNDWJeMhbcP2+wtrxMFgj9xYvPnTY56/WOSMNBOVQo8+mdRGAxWA5NSGZQlleYEokgBhcdOi/lwrguQ1lDvek8PO8v/OJHu/oCgTh1XonoScGPIpHqSlV6WL9zeK6H+i9aeq/QNaq2dUr97E0lfsdCFWTrn+xiZ/9LNhNYULLMT4dpDQFhgGLJ89cISdWJIwUoq95PxxoXTvsFCP93mSTFu/8I6x8pjlM3rvOiFO+BRrjx/DAgGuuLl9aRsAIFxDZEK2HyOO5lqKhzUBDSlg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pMnx4Kq9WURtSG9noRZhM1+i5CLkpWDE3fZnGozLqBo=; b=k2hGMvHrg0sqgo4riL7WfGTuIeB4w6KI1VHr944zasKGg9BpIhjMwGlx2eRLZOXkbZ9TyoMqzwyFx8ZElXt4FpZUyMZyycHwRhREleBw5BrEYNj5yFZW+Jvw8exJ3HPlzQRz9M99fwHaKBByFm6qteIRsyyfaIpzyyhNLz5NREA= Received: from BN8PR11MB3666.namprd11.prod.outlook.com (2603:10b6:408:8c::19) by BN6PR11MB4132.namprd11.prod.outlook.com (2603:10b6:405:81::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.26; Fri, 28 Aug 2020 07:50:58 +0000 Received: from BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::78b6:7108:8852:7536]) by BN8PR11MB3666.namprd11.prod.outlook.com ([fe80::78b6:7108:8852:7536%7]) with mapi id 15.20.3305.032; Fri, 28 Aug 2020 07:50:57 +0000 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "lbfeng@zd-tech.com.cn" CC: "Jiang, Guomin" , "jeremy.linton@arm.com" , "Ni, Ray" , =?gb2312?B?1cWzrA==?= Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/UsbBusDxe: some USB PenDisk fails enumeration. Thread-Topic: [edk2-devel] [PATCH] MdeModulePkg/UsbBusDxe: some USB PenDisk fails enumeration. Thread-Index: AQHWfA5zLJ56rCUOUUiX/qh2B/15QKlNGtPw Date: Fri, 28 Aug 2020 07:50:57 +0000 Message-ID: References: <2a831532171eec3c9f5a0630621fc23c7f894935.1594953823.git.lbfeng@zd-tech.com.cn> <17776.1596677114830819456@groups.io> <16289366B25D4B9F.5756@groups.io> <13e9ce33.a5e4.173dced479d.Coremail.lbfeng@zd-tech.com.cn> <162A3294EE88D661.26440@groups.io> <3e41b01e.2b49.173e5b9005b.Coremail.lbfeng@zd-tech.com.cn> <44cc90be.c2c.1742d7423f9.Coremail.lbfeng@zd-tech.com.cn> In-Reply-To: <44cc90be.c2c.1742d7423f9.Coremail.lbfeng@zd-tech.com.cn> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.218] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7e79642e-27e5-41e5-fcf4-08d84b2719a4 x-ms-traffictypediagnostic: BN6PR11MB4132: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: RcvhYUW6j/c4YG5czs7V1HfClRnCYxhSYqYJdoix18oxzQsOBjdAog36FCjz0xaItBFsi39dO90VOKdnzAvHqOSthuprRQ/Tb7+KO44At0ZZseY8IuNiwFYZ4vAWyvHnbpvtin4NWRRvxQk6Yy+6y1FAz5bSNQ2CZHlq8AGBZ0kxWFttOXk1sGdCEyZAXKKlytiaFW8mY9nqOQp/32Q+kzYRGAKQLcdcpOQ6Q/d9wHbxNempbf92D1XuB6u15vcs2gHolhh//XRcoqGlqlEIHQF6jnD8Q9WQP4u7siyKe4beTGJkiGW2+uA0Hp+3SZUb53WqF3DR0qXE3iwX98l1LfgfinB+ML/1Pcy47AsHPmiL4nzx+xbc8QwaOctnrlGB725ySHaddpsdpPw9+wM7iQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN8PR11MB3666.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(346002)(39860400002)(376002)(166002)(45080400002)(30864003)(9686003)(9326002)(66446008)(52536014)(8936002)(53546011)(7696005)(76116006)(71200400001)(66556008)(64756008)(8676002)(83380400001)(66476007)(6506007)(55016002)(4326008)(33656002)(5660300002)(86362001)(966005)(186003)(316002)(66946007)(54906003)(110136005)(26005)(76236003)(2906002)(478600001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: ZpZcGSQgCoxl1j+nZx+/VG402C+5IINIPJWGRISK3AOBNA0Y5ijpwPJe/85OzFyeOsj2vvmMOjUMZx4x4Wv+i1fBVmivo17twNKu/MmBoFVwIdRmN/Sm1nb20GVK2mGk4Tqd0Wwq4W4uegTu2uXUE6u1N2F1QGgtYz6PJaZNJQhh6jvu/mAW4rn+CwY+QrtR5a//d2dC+BmVYBH+S5YaWL+mjVbRIHAEX2H7IWQBh/05mAlKjlFpLO66HvrDlCZFDBzNt8mlhDn2CcnnDg0n4N53eteXhVuXWeGa18p8pzKKqURfO44if7xcTj5kzUIRgLQiZwXRppW3QUd3JKRzwHhcOX3JFpgQP+r33v5n+YlBh0/HUAELKxAd2LCtvtxhBKICkdD1sK9frSwGrvUsDs59ShKb5hKMIDojSKwMMwWxJM9Jf0LxEpBpLW1tWeZ/HG8iZ8hV5tXyd3TkFJnbCIFIAhffeKjdy1HesdmfFMp8TqnfPYD3cDD25+A9qzpJvEGUk6Vq9BjYVlcfKdTQ/A7ofFJEWTFi9WNq8LI164Ih6xLJeWbx8mIWoGXI0L4d6mzTbz822ZuC4lnt1RlatycaPuLt+npAWX0+pTmM+m4XuQaAdcOTUmzUxS6Va/7HvxS3tVlUpdlXJdd5JBjzXQ== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN8PR11MB3666.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7e79642e-27e5-41e5-fcf4-08d84b2719a4 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Aug 2020 07:50:57.6897 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ycGzF1bZLRJKg71wk3PcrgbaMuU/e45KiaS2LUPmXq+3M++Rymk0dHGYOAjV8BuTSFXVoaraOteQULtETyfm4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB4132 Return-Path: hao.a.wu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_BN8PR11MB3666F2E445E0760C13FB59C3CA520BN8PR11MB3666namp_" --_000_BN8PR11MB3666F2E445E0760C13FB59C3CA520BN8PR11MB3666namp_ Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGVsbG8sDQoNCkFmdGVyIGxvb2tpbmcgaW50byB0aGUgcHJvcG9zZWQgcGF0Y2gsIEkgdGhpbmsg aXQgaXMgcmVhc29uYWJsZSB0byBhZGQgZW5oYW5jZWQgZXJyb3IgaGFuZGxpbmcgZm9yIHN1Y2gg VVNCIGRldmljZSB0aGF0IHdpbGwgZmFpbCB0aGUgMm5kIERldmljZSBEZXNjcmlwdG9yIHJlcXVl c3QuDQoNClRoZSBmbG93IG9mIHRoZSBjdXJyZW50IHByb3Bvc2FsIGlzOg0KMS4gRmlyc3QgUG9y dCBSZXNldA0KMi4gRmlyc3QgRGV2aWNlIERlc2NyaXB0b3IgUmVxdWVzdCBmb3IgYk1heFBhY2tl dFNpemUwDQozLiBTZWNvbmQgUG9ydCBSZXNldC4gYWRkIGV4dHJhIHJlc2V0DQo0LiBTZXQgVVNC IGFkZHJlc3MNCjUuIFNlY29uZCBEZXZpY2UgRGVzY3JpcHRvciBSZXF1ZXN0DQoNCkZvciB0aGUg YWJvdmUgZmxvdywgSSBoYXZlIGEgY29uY2VybiB0aGF0IGEgbWFuZGF0b3J5IDJuZCBwb3J0IHJl c2V0IG1heSBpbXBhY3QgdGhlIHBlcmZvcm1hbmNlIGR1cmluZyBVU0IgZGV2aWNlIGVudW1lcmF0 aW9uLg0KU28gaG93IGFib3V0Og0KMS4gRmlyc3QgUG9ydCBSZXNldA0KMi4gRmlyc3QgRGV2aWNl IERlc2NyaXB0b3IgUmVxdWVzdCBmb3IgYk1heFBhY2tldFNpemUwDQozLiBTZXQgVVNCIGFkZHJl c3MNCjQuIFNlY29uZCBEZXZpY2UgRGVzY3JpcHRvciBSZXF1ZXN0DQo1YS4gSWYgdGhlIHNlY29u ZCBkZXNjcmlwdG9yIHJlcXVlc3Qgc3VjY2VlZHMsIHRoZSBwcm9jZXNzIGp1c3QgZ28gb24uDQo1 Yi4gSWYgdGhlIHNlY29uZCByZXF1ZXN0IGZhaWxzOg0KICA1Yi0xKS4gUG9ydCBSZXNldA0KICA1 Yi0yKS4gU2V0IFVTQiBhZGRyZXNzDQogIDViLTMpLiBSZXF1ZXN0IHRoZSBkZXNjcmlwdG9yIGFn YWluDQogIDViLTRhKS4gSWYgdGhlIHJlcXVlc3Qgc3VjY2VlZHMsIHRoZSBwcm9jZXNzIGp1c3Qg Z28gb24uDQogIDViLTRiKS4gSWYgdGhlIHJlcXVlc3Qgc3RpbGwgZmFpbHMsIHRoZSBlbnVtZXJh dGlvbiBvZiB0aGUgZGV2aWNlIGZhaWxzLg0KDQpBbHNvLCBjb3VsZCB5b3UgaGVscCB0byBmaWxl IGEgQnVnemlsbGEgdHJhY2tlciBhdCBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvPw0K UGxlYXNlIGhlbHAgdG8gZGVzY3JpYmVkIHRoZSBpc3N1ZSBtZXQgaW4gdGhlIHRyYWNrZXIsIHRo YW5rcyBpbiBhZHZhbmNlLg0KDQpCZXN0IFJlZ2FyZHMsDQpIYW8gV3UNCg0KRnJvbTogZGV2ZWxA ZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgRmVuZyBM aWJvDQpTZW50OiBUaHVyc2RheSwgQXVndXN0IDI3LCAyMDIwIDk6MDcgQU0NClRvOiC34cGisqgg PGxiZmVuZ0B6ZC10ZWNoLmNvbS5jbj4NCkNjOiBKaWFuZywgR3VvbWluIDxndW9taW4uamlhbmdA aW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IGplcmVteS5saW50b25AYXJtLmNvbTsg V3UsIEhhbyBBIDxoYW8uYS53dUBpbnRlbC5jb20+OyBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29t Pjsg1cWzrCA8Y3poYW5nQHpkLXRlY2guY29tLmNuPg0KU3ViamVjdDogUmU6IFtlZGsyLWRldmVs XSBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9Vc2JCdXNEeGU6IHNvbWUgVVNCIFBlbkRpc2sgZmFpbHMg ZW51bWVyYXRpb24uDQoNCkhlbGxvLA0KDQpIb3cgYWJvdXQgdGhlIHByb2dyZXNzIG9mIHRoZSBQ YXRjaCBSZXZpZXc/DQoNClRoYW5rcw0KDQotLQ0KQmVzdCBSZWdhcmRzDQoNCkZlbmcgTGlibw0K WkQgVGVjaG5vbG9neSAoQmVpamluZykgQ28uLCBMdGQNCg0Kt6K8/sjLo7oit+HBorKoIiA8bGJm ZW5nQHpkLXRlY2guY29tLmNuPG1haWx0bzpsYmZlbmdAemQtdGVjaC5jb20uY24+Pg0Kt6LLzcjV xtqjujIwMjAtMDgtMTMgMTA6NDk6MzMNCsrVvP7Iy6O6IkppYW5nLCBHdW9taW4iIDxndW9taW4u amlhbmdAaW50ZWwuY29tPG1haWx0bzpndW9taW4uamlhbmdAaW50ZWwuY29tPj4NCrOty83Iy6O6 ImRldmVsQGVkazIuZ3JvdXBzLmlvPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4iIDxkZXZl bEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+PiwiamVyZW15Lmxp bnRvbkBhcm0uY29tPG1haWx0bzpqZXJlbXkubGludG9uQGFybS5jb20+IiA8amVyZW15LmxpbnRv bkBhcm0uY29tPG1haWx0bzpqZXJlbXkubGludG9uQGFybS5jb20+PiwiV3UsIEhhbyBBIiA8aGFv LmEud3VAaW50ZWwuY29tPG1haWx0bzpoYW8uYS53dUBpbnRlbC5jb20+PiwiTmksIFJheSIgPHJh eS5uaUBpbnRlbC5jb208bWFpbHRvOnJheS5uaUBpbnRlbC5jb20+Piwi1cWzrCIgPGN6aGFuZ0B6 ZC10ZWNoLmNvbS5jbjxtYWlsdG86Y3poYW5nQHpkLXRlY2guY29tLmNuPj4NCtb3zOKjulJlOlJF OiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQa2cvVXNiQnVzRHhlOiBzb21lIFVTQiBQ ZW5EaXNrIGZhaWxzIGVudW1lcmF0aW9uLg0KDQpIZWxsbywgTXIuIEppYW5nLA0KDQpNb3N0IFVT QiBQZW5EaXNrIHdvcmsgZmluZSB3aXRoIHRoZSBvcmlnaW5hbCBlbnVtZXJhdGlvbiBzZXF1ZW5j ZS4gQSBmZXcgY2FuJ3QuDQoNCkluIE1pY3Jvc29mdCBQb3N0LCB0aGV5IGV4cGxhaW5lZCB0aGUg Y2F1c2UgOg0KSW4gdGhlIGVhcmx5IGRheXMgb2YgVVNCIHNvbWUgVVNCIGRldmljZXMgd291bGQg YmVjb21lIGNvbmZ1c2VkIGJ5IGEgc2Vjb25kIHJlcXVlc3QgZm9yIHRoZSBEZXZpY2UgRGVzY3Jp cHRvciBpZiB0aGV5IGRpZCBub3QgcmV0dXJuIHRoZSBjb21wbGV0ZSBEZXZpY2UgRGVzY3JpcHRv ciBmb3IgdGhlIGZpcnN0IHJlcXVlc3QuICBUbyBhbGxvdyB0aGVzZSBkZXZpY2VzIHRvIGVudW1l cmF0ZSBzdWNjZXNzZnVsbHkgaXQgd2FzIG5lY2Vzc2FyeSB0byByZXNldCB0aGUgcG9ydCBiZXR3 ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIHJlcXVlc3RzIGZvciB0aGUgRGV2aWNlIERlc2NyaXB0 b3IuDQoNCkluIG91ciBleHBlcmllbmNlLCBvbmx5IHRocmVlIFBlbmRpc2sgd2l0aCBJbm5vc3Rv ciBVU0IgY29udHJvbGxlciBjaGlwIChWSUQ9MHgxRjc1LCBQSUQ9MHg5MTcsIFVTQjMuMSkgZmFp bCB0aGUgZW51bWVyYXRpb24uIFdlIGNhbiBvbmx5IG9ic2VydmVkIHRoZSBQZW5kaXNrIG5vdCBy ZXNwb25kaW5nIHRoZSBzZWNvbmQgRGV2aWNlIERlc2NyaXB0b3IgUmVxdWVzdCBmb3IgYSBmdWxs IERlc2NyaXB0b3IuIFRoZSBmaXJzdCBEZXZpY2UgRGVzY3JpcHRvciBSZXF1ZXN0IGNvdWxkIGlt cGFjdCBzb21lIFBlbmRpc2sgb3IgYXMgTWljcm9zb2Z0IHNhaWQgImNvbmZ1c2UiLg0KDQpTbywg V2UgYWRkIGEgc2Vjb25kIHBvcnQgcmVzZXQgYWZ0ZXIgdGhlIE1heFBhY2tldFNpemUwIHJlcXVl c3QuIGFuZCB0aGlzIHNlY29uZCByZXNldCBjYW4gY2xlYXIgdGhlIGFkZHJlc3MgdGhhdCBpcyBh bHJlYWR5IGFzc2lnbmVkLiBUaGVuLCB3ZSBtb3ZlIHRoZSBNYXhQYWNrZXRTaXplIHJlcXVlc3Qg YmVmb3JlIHRoZSBhZGRyZXNzIGFzc2lnbmF0aW9uLg0KDQpUaGF0IGlzIGFsbCBwYXRjaC4NCg0K RnVydGhlcm1vcmUsIHRoZSBVU0IgU3BlYyBzdGF0ZXMgdGhlIE1heFBhY2tldFNpemUgUmVxdWVz dCBjb3VsZCBiZSByZWFkIHRocm91Z2ggdGhlIGRlZmF1bHQgUGlwZSwgdGhlIGFkZHJlc3MgMC4g U28gSSB0aGluayBpdCBpbXBsaWVzIHRoZSBNYXhQYWNrZXRTaXplIFJlcXVlc3Qgc2hvdWxkIGJl IHByaW9yIHRvIHRoZSBhZGRyZXNzIGFzc2lnbmF0aW9uLCBqdXN0IGFzIHRoZSBlbnVtZXJhdGlv biBzZXF1ZW5jZSBpbiB0aGUgTWljcm9zb2Z0IFBvc3QuDQoNClRoYW5rcw0KDQotLQ0KQmVzdCBS ZWdhcmRzDQoNCkZlbmcgTGlibw0KWkQgVGVjaG5vbG9neSAoQmVpamluZykgQ28uLCBMdGQNCg0K t6K8/sjLo7oiSmlhbmcsIEd1b21pbiIgPGd1b21pbi5qaWFuZ0BpbnRlbC5jb208bWFpbHRvOmd1 b21pbi5qaWFuZ0BpbnRlbC5jb20+Pg0Kt6LLzcjVxtqjujIwMjAtMDgtMTIgMTY6MDM6NDINCsrV vP7Iy6O6ImRldmVsQGVkazIuZ3JvdXBzLmlvPG1haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5pbz4i IDxkZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+PiwiSmlh bmcsIEd1b21pbiIgPGd1b21pbi5qaWFuZ0BpbnRlbC5jb208bWFpbHRvOmd1b21pbi5qaWFuZ0Bp bnRlbC5jb20+PiwibGJmZW5nQHpkLXRlY2guY29tLmNuPG1haWx0bzpsYmZlbmdAemQtdGVjaC5j b20uY24+IiA8bGJmZW5nQHpkLXRlY2guY29tLmNuPG1haWx0bzpsYmZlbmdAemQtdGVjaC5jb20u Y24+Pg0Ks63LzcjLo7oiamVyZW15LmxpbnRvbkBhcm0uY29tPG1haWx0bzpqZXJlbXkubGludG9u QGFybS5jb20+IiA8amVyZW15LmxpbnRvbkBhcm0uY29tPG1haWx0bzpqZXJlbXkubGludG9uQGFy bS5jb20+PiwiV3UsIEhhbyBBIiA8aGFvLmEud3VAaW50ZWwuY29tPG1haWx0bzpoYW8uYS53dUBp bnRlbC5jb20+PiwiTmksIFJheSIgPHJheS5uaUBpbnRlbC5jb208bWFpbHRvOnJheS5uaUBpbnRl bC5jb20+Pg0K1vfM4qO6UkU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1kZU1vZHVsZVBrZy9Vc2JC dXNEeGU6IHNvbWUgVVNCIFBlbkRpc2sgZmFpbHMgZW51bWVyYXRpb24uDQoNCkhpIExpYm8sDQoN CkkgcmV2aWV3IHRoZSBVU0IgU3BlYyAyLjAgYW5kIGhhdmUgc29tZSBjb25mdXNpb24gd2hlbiBj aGVjayB0aGUgc3BlYyBhcyBiZWxvdzoNCkZyb20gdGhlIFVTQiAyLjAgc3BlYzoNCg0KU2VjdGlv biA1LjUuMyBDb250cm9sIFRyYW5zZmVyIFBhY2tldCBTaXplIENvbnN0cmFpbnRzDQouLi4NCklu IG9yZGVyIHRvIGRldGVybWluZSB0aGUgbWF4aW11bSBwYWNrZXQgc2l6ZSBmb3IgdGhlIERlZmF1 bHQgQ29udHJvbCBQaXBlLCB0aGUgVVNCIFN5c3RlbSBTb2Z0d2FyZQ0KcmVhZHMgdGhlIGRldmlj ZSBkZXNjcmlwdG9yLiBUaGUgaG9zdCB3aWxsIHJlYWQgdGhlIGZpcnN0IGVpZ2h0IGJ5dGVzIG9m IHRoZSBkZXZpY2UgZGVzY3JpcHRvci4gVGhlIGRldmljZQ0KYWx3YXlzIHJlc3BvbmRzIHdpdGgg YXQgbGVhc3QgdGhlc2UgaW5pdGlhbCBieXRlcyBpbiBhIHNpbmdsZSBwYWNrZXQuIEFmdGVyIHRo ZSBob3N0IHJlYWRzIHRoZSBpbml0aWFsIHBhcnQgb2YgdGhlDQpkZXZpY2UgZGVzY3JpcHRvciwg aXQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIHJlYWQgdGhpcyBkZWZhdWx0IHBpcGWhr3Mgd01heFBh Y2tldFNpemUgZmllbGQgKGJ5dGUgNyBvZiB0aGUNCmRldmljZSBkZXNjcmlwdG9yKS4gSXQgd2ls bCB0aGVuIGFsbG93IHRoZSBjb3JyZWN0IHNpemUgZm9yIGFsbCBzdWJzZXF1ZW50IHRyYW5zYWN0 aW9ucy4gRm9yIGFsbCBvdGhlciBjb250cm9sDQplbmRwb2ludHMsIHRoZSBtYXhpbXVtIGRhdGEg cGF5bG9hZCBzaXplIGlzIGtub3duIGFmdGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgVVNC IFN5c3RlbSBTb2Z0d2FyZQ0KY2FuIGVuc3VyZSB0aGF0IG5vIGRhdGEgcGF5bG9hZCB3aWxsIGJl IHNlbnQgdG8gdGhlIGVuZHBvaW50IHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIHN1cHBvcnRlZCBz aXplLg0KLi4uDQoNCkFsc28sDQpTZWN0aW9uIDkuMS4yIEJ1cyBFbnVtZXJhdGlvbg0KLi4uDQoz LiBOb3cgdGhhdCB0aGUgaG9zdCBrbm93cyB0aGUgcG9ydCB0byB3aGljaCB0aGUgbmV3IGRldmlj ZSBoYXMgYmVlbiBhdHRhY2hlZCwgdGhlIGhvc3QgdGhlbiB3YWl0cyBmb3IgYXQNCmxlYXN0IDEw MCBtcyB0byBhbGxvdyBjb21wbGV0aW9uIG9mIGFuIGluc2VydGlvbiBwcm9jZXNzIGFuZCBmb3Ig cG93ZXIgYXQgdGhlIGRldmljZSB0byBiZWNvbWUgc3RhYmxlLg0KVGhlIGhvc3QgdGhlbiBpc3N1 ZXMgYSBwb3J0IGVuYWJsZSBhbmQgcmVzZXQgY29tbWFuZCB0byB0aGF0IHBvcnQuIFJlZmVyIHRv IFNlY3Rpb24gNy4xLjcuNSBmb3INCnNlcXVlbmNlIG9mIGV2ZW50cyBhbmQgdGltaW5ncyBvZiBj b25uZWN0aW9uIHRocm91Z2ggZGV2aWNlIHJlc2V0Lg0KNC4gVGhlIGh1YiBwZXJmb3JtcyB0aGUg cmVxdWlyZWQgcmVzZXQgcHJvY2Vzc2luZyBmb3IgdGhhdCBwb3J0IChzZWUgU2VjdGlvbiAxMS41 LjEuNSkuIFdoZW4gdGhlIHJlc2V0DQpzaWduYWwgaXMgcmVsZWFzZWQsIHRoZSBwb3J0IGhhcyBi ZWVuIGVuYWJsZWQuIFRoZSBVU0IgZGV2aWNlIGlzIG5vdyBpbiB0aGUgRGVmYXVsdCBzdGF0ZSBh bmQgY2FuIGRyYXcNCm5vIG1vcmUgdGhhbiAxMDAgbUEgZnJvbSBWQlVTLiBBbGwgb2YgaXRzIHJl Z2lzdGVycyBhbmQgc3RhdGUgaGF2ZSBiZWVuIHJlc2V0IGFuZCBpdCBhbnN3ZXJzIHRvIHRoZQ0K ZGVmYXVsdCBhZGRyZXNzLg0KNS4gVGhlIGhvc3QgYXNzaWducyBhIHVuaXF1ZSBhZGRyZXNzIHRv IHRoZSBVU0IgZGV2aWNlLCBtb3ZpbmcgdGhlIGRldmljZSB0byB0aGUgQWRkcmVzcyBzdGF0ZS4N CjYuIEJlZm9yZSB0aGUgVVNCIGRldmljZSByZWNlaXZlcyBhIHVuaXF1ZSBhZGRyZXNzLCBpdHMg RGVmYXVsdCBDb250cm9sIFBpcGUgaXMgc3RpbGwgYWNjZXNzaWJsZSB2aWEgdGhlDQpkZWZhdWx0 IGFkZHJlc3MuIFRoZSBob3N0IHJlYWRzIHRoZSBkZXZpY2UgZGVzY3JpcHRvciB0byBkZXRlcm1p bmUgd2hhdCBhY3R1YWwgbWF4aW11bSBkYXRhIHBheWxvYWQNCnNpemUgdGhpcyBVU0IgZGV2aWNl oa9zIGRlZmF1bHQgcGlwZSBjYW4gdXNlLg0KNy4gVGhlIGhvc3QgcmVhZHMgdGhlIGNvbmZpZ3Vy YXRpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgZGV2aWNlIGJ5IHJlYWRpbmcgZWFjaCBjb25maWd1 cmF0aW9uIHplcm8gdG8NCm4tMSwgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIGNvbmZpZ3VyYXRp b25zLiBUaGlzIHByb2Nlc3MgbWF5IHRha2Ugc2V2ZXJhbCBtaWxsaXNlY29uZHMgdG8gY29tcGxl dGUuDQouLi4NCg0KSXQgc2VlbSB0aGF0IHRoZSBvcmlnaW5hbCBiZWhhdmlvciBmb2xsb3cgdGhl IHNwZWMsIGJ1dCBJIGRvbqGvdCBrbm93IHdoeSB0aGUgZGV2aWNlIHdpbGwgbm90IHJlc3BvbnNl IGFuZCBtdXN0IHJlc2V0IGl0Lg0KDQpJIG5vdGljZSB0aGF0ICB5b3Ugb2J0YWluIHRoZSBwYXRj aCBmcm9tIGh0dHBzOi8vdGVjaGNvbW11bml0eS5taWNyb3NvZnQuY29tL3Q1L21pY3Jvc29mdC11 c2ItYmxvZy9ob3ctZG9lcy11c2Itc3RhY2stZW51bWVyYXRlLWEtZGV2aWNlL2JhLXAvMjcwNjg1 Izp+OnRleHQ9JTIwSG93JTIwZG9lcyUyMFVTQiUyMHN0YWNrJTIwZW51bWVyYXRlJTIwYSUyMGRl dmljZSUzRixhJTIwcmVxdWVzdCUyMGZvciUyMHRoZSUyMFVTQiUyMERldmljZS4uLiUyME1vcmUl MjAuDQoNCkRvIHlvdSBrbm93IHRoZSBkZXZpY2UgYmVoYXZpb3IgZnJvbSB0aGUgZGV2aWNlIHNp ZGUgd2hlbiB0aGUgaXNzdWUgaGFwcGVuZWQ/DQoNClRoYW5rcy4NCkd1b21pbg0KRnJvbTogZGV2 ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPiA8ZGV2ZWxAZWRr Mi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPj4gT24gQmVoYWxmIE9mIEd1 b21pbiBKaWFuZw0KU2VudDogVHVlc2RheSwgQXVndXN0IDExLCAyMDIwIDc6MTcgUE0NClRvOiBk ZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+OyBsYmZlbmdA emQtdGVjaC5jb20uY248bWFpbHRvOmxiZmVuZ0B6ZC10ZWNoLmNvbS5jbj4NCkNjOiBqZXJlbXku bGludG9uQGFybS5jb208bWFpbHRvOmplcmVteS5saW50b25AYXJtLmNvbT47IFd1LCBIYW8gQSA8 aGFvLmEud3VAaW50ZWwuY29tPG1haWx0bzpoYW8uYS53dUBpbnRlbC5jb20+PjsgTmksIFJheSA8 cmF5Lm5pQGludGVsLmNvbTxtYWlsdG86cmF5Lm5pQGludGVsLmNvbT4+DQpTdWJqZWN0OiBSZTog W2VkazItZGV2ZWxdIFtQQVRDSF0gTWRlTW9kdWxlUGtnL1VzYkJ1c0R4ZTogc29tZSBVU0IgUGVu RGlzayBmYWlscyBlbnVtZXJhdGlvbi4NCg0KK0hhbywgUmF5LA0KDQpIaSBMaWJvLCB0aGFua3Mg Zm9yIHlvdXIgZXhwbGFuYXRpb24uDQoNClNvIEkgdGhpbmsgdGhlIHBhdGNoIGlzIGltcHJvdmVt ZW50IGZvciBjdXJyZW50IGxvZ2ljLg0KDQpIaSBIYW8gYW5kIFJheSwNCg0KQ2FuIHlvdSBnaXZl IHNvbWUgY29tbWVudHMgZm9yIHRoZSBjaGFuZ2UuDQoNCkhpIEplcmVteSwNCg0KSXQgbWF5IGJl IGhlbHBmdWwgZm9yIHRoZSBBU1NFUlQgaXNzdWUgaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2Rl dmVsL21lc3NhZ2UvNjI2NTEsY2FuIHlvdSB0cnkgaXQ/DQoNCkJlc3QgUmVnYXJkcw0KR3VvbWlu DQpGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+ IDxkZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+PiBPbiBC ZWhhbGYgT2YgRmVuZyBMaWJvDQpTZW50OiBUdWVzZGF5LCBBdWd1c3QgMTEsIDIwMjAgNTo1MCBQ TQ0KVG86IEppYW5nLCBHdW9taW4gPGd1b21pbi5qaWFuZ0BpbnRlbC5jb208bWFpbHRvOmd1b21p bi5qaWFuZ0BpbnRlbC5jb20+Pg0KQ2M6IGRldmVsQGVkazIuZ3JvdXBzLmlvPG1haWx0bzpkZXZl bEBlZGsyLmdyb3Vwcy5pbz47IGplcmVteS5saW50b25AYXJtLmNvbTxtYWlsdG86amVyZW15Lmxp bnRvbkBhcm0uY29tPg0KU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0hdIE1kZU1vZHVs ZVBrZy9Vc2JCdXNEeGU6IHNvbWUgVVNCIFBlbkRpc2sgZmFpbHMgZW51bWVyYXRpb24uDQoNCkhl bGxvLCBNci4gSmlhbmcsDQoNClRoYW5rIGZvciB0aGUgcmV2aWV3Lg0KDQpUaGUgb3JpZ2luYWwg ZW51bWVyYXRpb24gc3RlcHMgaW4gdGhlIGZ1bmN0aW9uIG9mIFVzYkVudW1lcmF0ZU5ld0RldiBv ZiBmaWxlIFVzYkVudW1lci5jOiAxIHJlc2V0IHRoZSBwb3J0LCAyIHNldCB0aGUgdXNiIGRldmlj ZSBhZGRyZXNzLCAzIGdldCB0aGUgTWF4IFBhY2tldCBTaXplLCA0IGdldCB0aGUgZnVsbCBkZXZp Y2UgZGVzY3JpcHRvci4gSG93ZXZlciwgd2hlbiBwbHVnZ2luZyBhIFVTQiBQZW5EaXNrIHdpdGgg SW5ub3N0b3IgVVNCDQpjb250cm9sbGVyIGNoaXAgKFZJRD0weDFGNzUsIFBJRD0weDkxNywgVVNC My4xKSwgdGhlIGZvdXJ0aCBzdGVwIGFsd2F5cyBmYWlscywgdHJhY2UgYXMgYmVsb3c6DQoNCj09 PT09PT09DQpYaGNDaGVja1VyYlJlc3VsdDogVFJBTlNBQ1RJT05fRVJST1IhIENvbXBsZXRlY29k ZSA9IDQgWGhjQ29udHJvbFRyYW5zZmVyOiBlcnJvciAtIERldmljZSBFcnJvciwgdHJhbnNmZXIg LSA0MCBVc2JHZXRPbmVDb25maWc6IGZhaWxlZCB0byBnZXQgZnVsbCBkZXNjcmlwdCBEZXZpY2Ug RXJyb3IgVXNiQnVpbGREZXNjVGFibGU6IGZhaWxlZCB0byBnZXQgY29uZmlndXJlIChpbmRleCAw KSBVc2JFbnVtZXJhdGVOZXdEZXY6IGZhaWxlZCB0byBidWlsZCBkZXNjcmlwdG9yIHRhYmxlIC0g RGV2aWNlIEVycm9yDQo9PT09PT09DQoNClRoZSBob3N0IGNvbnRyb2xsZXIgbmVlZCB0byBnZXQg dGhlIGZ1bGwgZGV2aWNlIGRlc2NyaXB0b3IsIGJ1dCB0aGlzIG1vbWVudCwgdGhlIFBlbmRpc2sg ZGV2aWNlIGRvZXNuJ3QgcmVzcG9uc2UgYW55IG1vcmUuIFRoZW4gdGltZW91dC4gYW5kIFVzYkVu dW1lcmF0ZU5ld0RldiBjb21wbGFpbnMgOiBmYWlsZWQgdG8gYnVpbGQgZGVzY3JpcHRvci4NCg0K V2UgaGF2ZSB0aHJlZSBQZW5kaXNrcyBmcm9tIGRpZmZlcmVudCBtYW51ZmFjdHVyZXJzLCBhbGwg d2l0aCBJbm5vc3RvciBVU0IgY29udHJvbGxlciBjaGlwLiB0aGV5IGFsbCBjYW4ndCBiZSBlbnVt ZXJhdGVkIGFsbC4gQW5kIHdlIG9ic2VydmVkIHRoZSBwcm9ibGVtIG9uIGJvdGggSHVhd2VpIEt1 blBlbmcou6rOqvbvxfSjqWFuZCBMb29nbnNvbqOowfrQvqOpcGxhdGZvcm1zLg0KDQpUaGUgdGhy ZWUgUGVuZGlza3MgYWx3YXlzIGZhaWwgdGhlIFVTQiBlbnVtZXJhdGlvbi4gT3RoZXIgVVNCIDIu MCBhbmQgVVNCIDMuMCBvbiBoYW5kIGNhbiB3b3JrIHdlbGwuDQoNCldpdGggdGhlIHBhdGNoLCB0 aGUgdGhyZWUgcGVuZGlza3MgYW5kIG90aGVyIHBlbmRpc2tzIGNhbiBhbGwgd29yayB3ZWxsLg0K DQpUSGFua3MNCg0KLS0NCkJlc3QgUmVnYXJkcw0KDQpGZW5nIExpYm8NClpEIFRlY2hub2xvZ3kg KEJlaWppbmcpIENvLiwgTHRkDQoNCreivP7Iy6O6IkppYW5nLCBHdW9taW4iIDxndW9taW4uamlh bmdAaW50ZWwuY29tPG1haWx0bzpndW9taW4uamlhbmdAaW50ZWwuY29tPj4NCreiy83I1cbao7oy MDIwLTA4LTExIDA4OjIxOjEwDQrK1bz+yMujuiJkZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86 ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IiA8ZGV2ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVs QGVkazIuZ3JvdXBzLmlvPj4sIkppYW5nLCBHdW9taW4iIDxndW9taW4uamlhbmdAaW50ZWwuY29t PG1haWx0bzpndW9taW4uamlhbmdAaW50ZWwuY29tPj4sImxiZmVuZ0B6ZC10ZWNoLmNvbS5jbjxt YWlsdG86bGJmZW5nQHpkLXRlY2guY29tLmNuPiIgPGxiZmVuZ0B6ZC10ZWNoLmNvbS5jbjxtYWls dG86bGJmZW5nQHpkLXRlY2guY29tLmNuPj4NCrOty83Iy6O6ImplcmVteS5saW50b25AYXJtLmNv bTxtYWlsdG86amVyZW15LmxpbnRvbkBhcm0uY29tPiIgPGplcmVteS5saW50b25AYXJtLmNvbTxt YWlsdG86amVyZW15LmxpbnRvbkBhcm0uY29tPj4NCtb3zOKjulJFOiBbZWRrMi1kZXZlbF0gW1BB VENIXSBNZGVNb2R1bGVQa2cvVXNiQnVzRHhlOiBzb21lIFVTQiBQZW5EaXNrIGZhaWxzIGVudW1l cmF0aW9uLg0KDQorSmVyZW15LA0KDQpJIHJldmlldyB0aGUgcGF0Y2ggYW5kIHRoaW5rIGl0IGlz IHJlYXNvbmFibGUsIGJ1dCBJIHdhbnQgdG8ga25vdyBzb21lIG1vcmUgZGV0YWlsIGluZm9ybWF0 aW9uDQoNCiAgMS4gIENhbiB5b3UgcHJvdmlkZSB0aGUgZGV0YWlsIGRlYnVnIGxvZyBhYm91dCBV U0I/DQogIDIuICBUaGUgc3ltcHRvbSBhbHdheXMgY2FuIGJlIHNlZW4gb3IgaGF2ZSBmYWlsIHJh dGU/DQoNCkJlc3QgUmVnYXJkcw0KR3VvbWluDQpGcm9tOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzxt YWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IDxkZXZlbEBlZGsyLmdyb3Vwcy5pbzxtYWlsdG86 ZGV2ZWxAZWRrMi5ncm91cHMuaW8+PiBPbiBCZWhhbGYgT2YgR3VvbWluIEppYW5nDQpTZW50OiBU aHVyc2RheSwgQXVndXN0IDYsIDIwMjAgMTI6MjkgUE0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5p bzxtYWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW8+OyBsYmZlbmdAemQtdGVjaC5jb20uY248bWFp bHRvOmxiZmVuZ0B6ZC10ZWNoLmNvbS5jbj4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BB VENIXSBNZGVNb2R1bGVQa2cvVXNiQnVzRHhlOiBzb21lIFVTQiBQZW5EaXNrIGZhaWxzIGVudW1l cmF0aW9uLg0KDQpJIHdpbGwgcmV2aWV3IGl0IGJ5IG5leHQgd2Vla2VuZCg4LzE0KS4NCg0KVGhh bmtzLg0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBz LmlvPiA8ZGV2ZWxAZWRrMi5ncm91cHMuaW88bWFpbHRvOmRldmVsQGVkazIuZ3JvdXBzLmlvPj4g T24gQmVoYWxmIE9mIEZlbmcgTGlibw0KU2VudDogVGh1cnNkYXksIEF1Z3VzdCA2LCAyMDIwIDk6 MjUgQU0NClRvOiBGZW5nIExpYm8gPGxiZmVuZ0B6ZC10ZWNoLmNvbS5jbjxtYWlsdG86bGJmZW5n QHpkLXRlY2guY29tLmNuPj47IGRldmVsQGVkazIuZ3JvdXBzLmlvPG1haWx0bzpkZXZlbEBlZGsy Lmdyb3Vwcy5pbz4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIXSBNZGVNb2R1bGVQ a2cvVXNiQnVzRHhlOiBzb21lIFVTQiBQZW5EaXNrIGZhaWxzIGVudW1lcmF0aW9uLg0KDQpIZWxs bywNCg0KY291bGQgYW55b25lIHJldmlldyB0aGlzIFBBVENIPw0KDQpXZSBlbmNvdW50ZXJlZCB0 aGUgVVNCIGVudW1lcmF0aW9uIHByb2JsZW0gYW5kIHRoZSBwYXRjaCBpcyBiYXNlZCBvbiB0aGUg TWljcm9zb2Z0IHBvc3QgYXMgYmVsb3cuDQoNCmh0dHBzOi8vdGVjaGNvbW11bml0eS5taWNyb3Nv ZnQuY29tL3Q1L21pY3Jvc29mdC11c2ItYmxvZy9ob3ctZG9lcy11c2Itc3RhY2stZW51bWVyYXRl LWEtZGV2aWNlL2JhLXAvMjcwNjg1Izp+OnRleHQ9JTIwSG93JTIwZG9lcyUyMFVTQiUyMHN0YWNr JTIwZW51bWVyYXRlJTIwYSUyMGRldmljZSUzRixhJTIwcmVxdWVzdCUyMGZvciUyMHRoZSUyMFVT QiUyMERldmljZS4uLiUyME1vcmUlMjANCg0KVGhhbmtzDQoNCkJlc3QgUmVnYXJkcw0KDQpGZW5n IExpYm8NCg0K --_000_BN8PR11MB3666F2E445E0760C13FB59C3CA520BN8PR11MB3666namp_ Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable

Hello,

 

After looking into the proposed patch, I think it = is reasonable to add enhanced error handling for such USB device that will = fail the 2nd Device Descriptor request.

 

The flow of the current proposal is:

1. First Port Reset

2. First Device Descriptor Request for bMaxPacketS= ize0

3. Second Port Reset. add extra reset

4. Set USB address

5. Second Device Descriptor Request

 

For the above flow, I have a concern that a mandat= ory 2nd port reset may impact the performance during USB device = enumeration.

So how about:

1. First Port Reset

2. First Device Descriptor Request for bMaxPacketS= ize0

3. Set USB address

4. Second Device Descriptor Request

5a. If the second descriptor request succeeds, the= process just go on.

5b. If the second request fails:=

  5b-1). Port Reset

  5b-2). Set USB address

  5b-3). Request the descriptor again

  5b-4a). If the request succeeds, the proces= s just go on.

  5b-4b). If the request still fails, the enu= meration of the device fails.

 

Also, could you help to file a Bugzilla tracker at https://bugzilla.tianocore.org= /?

Please help to described the issue met in the trac= ker, thanks in advance.

 

Best Regards,

Hao Wu

 

From: devel@edk2.groups.io <deve= l@edk2.groups.io> On Behalf Of Feng Libo
Sent: Thursday, August 27, 2020 9:07 AM
To:
=B7=E1= =C1=A2=B2=A8 <lbfeng@zd-tech.com.cn>
Cc: Jiang, Guomin <guomin.jiang@intel.com>; devel@edk2.groups= .io; jeremy.linton@arm.com; Wu, Hao A <hao.a.wu@intel.com>; Ni, Ray &= lt;ray.ni@intel.com>;
=D5=C5=B3=AC= <czhang@zd-tech.com.cn>
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/UsbBusDxe: some USB = PenDisk fails enumeration.

 

Hello, 

 

How about the progress of the Patch Revi= ew?

 

Thanks

 

--

Best Regards

 

Feng Libo

ZD Technology (Beijing) Co., Ltd


=B7=A2= =BC=FE=C8=CB=A3=BA"=B7=E1=C1=A2=B2=A8&quo= t; <lbfeng@zd-tech.com.cn>= ;
=B7=A2= =CB=CD=C8=D5=C6=DA=A3=BA2020-08-13 10:49:33
=CA=D5= =BC=FE=C8=CB=A3=BA"Jiang, Guomin" <guomin.jiang@intel.com>
=B3=AD= =CB=CD=C8=CB=A3=BA"devel@edk2.groups.io" <devel@edk2.groups.io>,"jeremy.linton@arm.com" <jeremy.linton@arm.com>= ;,"Wu, Hao A" <hao.a.wu@= intel.com>,"Ni, Ray" <ray.ni@intel.com>,"=D5=C5=B3=AC" <czhang@zd-tech.com.cn>= ;
=D6=F7= =CC=E2=A3=BARe:RE: [edk2-devel] [PATCH] MdeModulePkg/Usb= BusDxe: some USB PenDisk fails enumeration.

Hello, Mr. Jiang,

 

Most USB PenDisk work fine with the orig= inal enumeration sequence. A few can't.

 

In Microsoft Post, they explained the ca= use :

In the early days of USB some USB devices would become co= nfused by a second request for the Device Descriptor   To = allow these devices to enumerate successfully it was necessary to reset the= port between the first and second requests for the Device Descriptor.

 

In our experience, only three Pendisk wi= th Innostor USB controller chip (VID=3D0x= 1F75, PID=3D0x917, USB3.1) fail the enumeration. We can only observed the Pendi= sk not responding the second Device Descriptor Request for a full Descripto= r. The first Device Descriptor Request could impact some Pendisk or as Micr= osoft said "confuse".  

 

So, We add a second port reset after the= MaxPacketSize0 request. and this second reset can clear the address that i= s already assigned. Then, we move the MaxPacketSize request before the address assignation.

 

That is all patch.

 

Furthermore, the USB Spec states the Max= PacketSize Request could be read through the default Pipe, the address 0. S= o I think it implies the MaxPacketSize Request should be prior to the address assignation, just as the enumeration seque= nce in the Microsoft Post.

 

Thanks

 

--

Best Regards

 

Feng Libo

ZD Technology (Beijing) Co., Ltd


=B7=A2= =BC=FE=C8=CB=A3=BA"Jiang, Guomin" <guomin.jiang@intel.com>
=B7=A2= =CB=CD=C8=D5=C6=DA=A3=BA2020-08-12 16:03:42
=CA=D5= =BC=FE=C8=CB=A3=BA"devel@edk2.groups.io" <devel@edk2.groups.io>,"Jiang, Guomin" <guomin.jiang@i= ntel.com>,"lbfeng@zd-t= ech.com.cn" <lbfeng@zd= -tech.com.cn>
=B3=AD= =CB=CD=C8=CB=A3=BA"jeremy.linton@arm.com" <jeremy.linton@arm.com>,"Wu, Hao A" <hao.a.wu@intel.com<= /a>>,"Ni, Ray" <ray.ni@= intel.com>
=D6=F7= =CC=E2=A3=BARE: [edk2-devel] [PATCH] MdeModulePkg/UsbBus= Dxe: some USB PenDisk fails enumeration.

Hi Libo,

 

I review the USB Spec 2.0= and have some confusion when check the spec as below:

From the USB 2.0 spec:<= /span>

 

Section 5.5.3 Control Transfer Packet Size Constr= aints

...

In order to determine the maximum packet size for= the Default Control Pipe, the USB System Software

reads the device descriptor. The host will read = the first eight bytes of the device descriptor. The device

always res= ponds with at least these initial bytes in a single packet. After the host reads the initial part of the

device des= criptor, it is guaranteed to have read this default pipe=A1=AFs wMaxPacketSize field (byte 7 of the

device des= criptor). It will then allow the correct size for all subsequent transactions. For all other con= trol

endpoints, the maximum data payload size is known= after configuration so that the USB System Software

can ensure that no data payload will be sent to t= he endpoint that is larger than the supported size.

...

 

Also,

Section 9.1.2 Bus Enumeration

...

3. Now that the host knows the port to which the = new device has been attached, the host then waits for at

least 100 ms to allow completion of an insertion = process and for power at the device to become stable.

The host then issues a port enable and reset comm= and to that port. Refer to Section 7.1.7.5 for

sequence of events and timings of connection thro= ugh device reset.

4. The hub performs the required reset processing= for that port (see Section 11.5.1.5). When the reset

signal is released, the port has been enabled. Th= e USB device is now in the Default state and can draw

no more than 100 mA from VBUS. All of its registe= rs and state have been reset and it answers to the

default address.=

5. The host assigns a unique address to the USB d= evice, moving the device to the Address state.

6. Before = the USB device receives a unique address, its Default Control Pipe is still accessible via the=

default ad= dress. The host reads the device descriptor to determine what actual maximum data payload<= /p>

size this = USB device=A1=AFs default pipe can use.

7. The host reads the configuration information f= rom the device by reading each configuration zero to

n-1, where n is the number of configurations. Thi= s process may take several milliseconds to complete.

...

 

It seem that the original behavior follow the spec, = but I don=A1=AFt know why the device will not response and must reset it.

 

I notice that  you obtain the patch from https://techcommunity.microsoft.com/t5/micr= osoft-usb-blog/how-does-usb-stack-enumerate-a-device/ba-p/270685#:~:text=3D= %20How%20does%20USB%20stack%20enumerate%20a%20device%3F,a%20request%20for%2= 0the%20USB%20Device...%20More%20.

 

Do you know the device be= havior from the device side when the issue happened?=

 

Thanks.

Guomin

 

+Hao, Ray,

 

Hi Libo, thanks for your = explanation.

 

So I think the patch is i= mprovement for current logic.

 

Hi Hao and Ray,

 

Can you give some comment= s for the change.

 

Hi Jeremy,

 

It may be helpful for the= ASSERT issue https://edk2.groups.io/g/devel/message/62651,can you try it?<= /o:p>

 

Best Regards

Guomin

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Feng Libo
Sent: Tuesday, August 11, 2020 5:50 PM
To: Jiang, Guomin <guo= min.jiang@intel.com>
Cc: devel@edk2.groups.io; jeremy.linton@arm.com
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/UsbBusDxe: some USB = PenDisk fails enumeration.

 

Hello, Mr. Jiang,

 

Thank for the review.

 

The original enumeration steps in the function of UsbE= numerateNewDev of file UsbEnumer.c: 1 reset the port, 2 set the usb device address, 3 get the Max Packet Size, 4 get the full d= evice descriptor. However, when plugging a USB PenDisk with Innostor USB

controller chip (VID=3D0x1F75, PID=3D0x917, USB3= .1), the fourth step always fails, trace as below:

 

=3D=3D=3D=3D=3D=3D=3D=3D<= /o:p>

XhcCheckUrbResult: TRANSACTION_ERROR! Completeco= de =3D 4 XhcControlTransfer: error - Device Error, transfer - 40 UsbGetOneConfig: failed to get full descript Device Error U= sbBuildDescTable: failed to get configure (index 0) UsbEnumerateNewDev: fai= led to build descriptor table - Device Error

=3D=3D=3D=3D=3D=3D=3D

 

The host controller need to get the full device descri= ptor, but this moment, the Pendisk device doesn't response any more. Then timeout. and UsbEnumerateNewDev complains : faile= d to build descriptor.

 

We have three Pendisks from different manufacturers, a= ll with Innostor USB controller chip. they all can't be enumerated all. And we observed th= e problem on both Huawei KunPeng(=BB=AA=CE=AA=F6=EF=C5=F4=A3=A9and Loognson=A3=A8=C1=FA=D0=BE=A3=A9platforms.

 

The three Pendisks always fail the USB enumerati= on. Other USB 2.0 and USB 3.0 on hand can work well.=

 

With the patch, the three pendisks and other pen= disks can all work well.

 

THanks

 

--

Best Regards

 

Feng Libo

ZD Technology (Beijing) Co., Ltd


=B7=A2= =BC=FE=C8=CB=A3=BA"Jiang, Guomin" <guomin.jiang@intel.com>
=B7=A2= =CB=CD=C8=D5=C6=DA=A3=BA2020-08-11 08:21:10
=CA=D5= =BC=FE=C8=CB=A3=BA"devel@edk2.groups.io" <devel@edk2.groups.io>,"Jiang, Guomin" <guomin.jiang@i= ntel.com>,"lbfeng@zd-t= ech.com.cn" <lbfeng@zd= -tech.com.cn>
=B3=AD= =CB=CD=C8=CB=A3=BA"jeremy.linton@arm.com" <jeremy.linton@arm.com>
=D6=F7= =CC=E2=A3=BARE: [edk2-devel] [PATCH] MdeModulePkg/UsbBus= Dxe: some USB PenDisk fails enumeration.

+Jeremy,

 

I review the patch and think it is reasonable, but I w= ant to know some more detail information

  1. Can you provide the detail debug log about USB?
  2. <= span style=3D"font-size:10.5pt;font-family:"Arial",sans-serif">Th= e symptom always can be seen or have fail rate?

 

Best Regards

Guomin

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Guomin Jiang
Sent: Thursday, August 6, 2020 12:29 PM
To: devel@edk2.groups.io; lbfeng@zd-tech.com.cn
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/UsbBusDxe: some USB = PenDisk fails enumeration.

 

I will review it by next weekend(8/14).

 

Thanks.

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Feng Libo
Sent: Thursday, August 6, 2020 9:25 AM
To: Feng Libo <lbfeng@z= d-tech.com.cn>; devel@edk2.groups.io
Subject: Re: [edk2-devel] [PATCH] MdeModulePkg/UsbBusDxe: some USB = PenDisk fails enumeration.

 

Hello, 

could anyone review this PATCH?

We encountered the USB enumeration problem and the patch is based on the M= icrosoft post as below.

https://techcommunity.microsoft.com/t5/microsoft-usb-blog/how= -does-usb-stack-enumerate-a-device/ba-p/270685#:~:text=3D%20How%20does%20US= B%20stack%20enumerate%20a%20device%3F,a%20request%20for%20the%20USB%20Devic= e...%20More%20

Thanks

Best Regards

Feng Libo

--_000_BN8PR11MB3666F2E445E0760C13FB59C3CA520BN8PR11MB3666namp_--