From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v3,2/2] usb/gadget: Add driver for Aspeed SoC virtual hub From: Benjamin Herrenschmidt Message-Id: <1516924736.2312.50.camel@kernel.crashing.org> Date: Fri, 26 Jan 2018 10:58:56 +1100 To: kbuild test robot Cc: kbuild-all@01.org, linux-usb@vger.kernel.org, Greg KH , Joel Stanley , Andrew Jeffery , Felipe Balbi List-ID: T24gV2VkLCAyMDE4LTAxLTI0IGF0IDExOjMwICswODAwLCBrYnVpbGQgdGVzdCByb2JvdCB3cm90 ZToKPiBIaSBCZW5qYW1pbiwKPiAKPiBJIGxvdmUgeW91ciBwYXRjaCEgUGVyaGFwcyBzb21ldGhp bmcgdG8gaW1wcm92ZToKPiAKPiBbYXV0byBidWlsZCB0ZXN0IFdBUk5JTkcgb24gYmFsYmktdXNi L25leHRdCj4gW2Fsc28gYnVpbGQgdGVzdCBXQVJOSU5HIG9uIHY0LjE1LXJjOSBuZXh0LTIwMTgw MTE5XQo+IFtpZiB5b3VyIHBhdGNoIGlzIGFwcGxpZWQgdG8gdGhlIHdyb25nIGdpdCB0cmVlLCBw bGVhc2UgZHJvcCB1cyBhIG5vdGUgdG8gaGVscCBpbXByb3ZlIHRoZSBzeXN0ZW1dCgpUaGlzIHNl ZW1zIHRvIGJlIGJvZ29zaXR5IGluIG0zMnIgbW9yZSB0aGFuIHByb2JsZW1zIHdpdGggdGhlIGRy aXZlci4uLgoKPiB1cmw6ICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8wZGF5LWNpL2xpbnV4L2NvbW1p dHMvQmVuamFtaW4tSGVycmVuc2NobWlkdC91c2ItZ2FkZ2V0LUFkZC1hbi1FUC1kaXNwb3NlLWNh bGxiYWNrLWZvci1FUC1saWZldGltZS10cmFja2luZy8yMDE4MDEyNC0wNjU2MzUKPiBiYXNlOiAg IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JhbGJpL3Vz Yi5naXQgbmV4dAo+IGNvbmZpZzogbTMyci1hbGx5ZXNjb25maWcgKGF0dGFjaGVkIGFzIC5jb25m aWcpCj4gY29tcGlsZXI6IG0zMnItbGludXgtZ2NjIChHQ0MpIDcuMi4wCj4gcmVwcm9kdWNlOgo+ ICAgICAgICAgd2dldCBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vaW50ZWwvbGtw LXRlc3RzL21hc3Rlci9zYmluL21ha2UuY3Jvc3MgLU8gfi9iaW4vbWFrZS5jcm9zcwo+ICAgICAg ICAgY2htb2QgK3ggfi9iaW4vbWFrZS5jcm9zcwo+ICAgICAgICAgIyBzYXZlIHRoZSBhdHRhY2hl ZCAuY29uZmlnIHRvIGxpbnV4IGJ1aWxkIHRyZWUKPiAgICAgICAgIG1ha2UuY3Jvc3MgQVJDSD1t MzJyIAo+IAo+IEFsbCB3YXJuaW5ncyAobmV3IG9uZXMgcHJlZml4ZWQgYnkgPj4pOgo+IAo+ICAg IEluIGZpbGUgaW5jbHVkZWQgZnJvbSBhcmNoL20zMnIvaW5jbHVkZS91YXBpL2FzbS9ieXRlb3Jk ZXIuaDo4OjAsCj4gICAgICAgICAgICAgICAgICAgICBmcm9tIGFyY2gvbTMyci9pbmNsdWRlL2Fz bS9iaXRvcHMuaDoyMiwKPiAgICAgICAgICAgICAgICAgICAgIGZyb20gaW5jbHVkZS9saW51eC9i aXRvcHMuaDozOCwKPiAgICAgICAgICAgICAgICAgICAgIGZyb20gaW5jbHVkZS9saW51eC9rZXJu ZWwuaDoxMSwKPiAgICAgICAgICAgICAgICAgICAgIGZyb20gZHJpdmVycy91c2IvZ2FkZ2V0L3Vk Yy9hc3BlZWQtdmh1Yi9jb3JlLmM6MTQ6Cj4gICAgaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvYmln X2VuZGlhbi5oOjg6Mjogd2FybmluZzogI3dhcm5pbmcgaW5jb25zaXN0ZW50IGNvbmZpZ3VyYXRp b24sIG5lZWRzIENPTkZJR19DUFVfQklHX0VORElBTiBbLVdjcHBdCj4gICAgICN3YXJuaW5nIGlu Y29uc2lzdGVudCBjb25maWd1cmF0aW9uLCBuZWVkcyBDT05GSUdfQ1BVX0JJR19FTkRJQU4KPiAg ICAgIF5+fn5+fn4KCk5vdCBzdXJlIHdoYXQgdGhhdCBvbmUgaXMsIGxvb2tzIGxpa2Ugc29tZSB0 b29sY2hhaW4gb3IgYXJjaCBwcm9ibGVtLi4uCgo+ICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSBp bmNsdWRlL2xpbnV4L3ByaW50ay5oOjMyOTowLAo+ICAgICAgICAgICAgICAgICAgICAgZnJvbSBp bmNsdWRlL2xpbnV4L2tlcm5lbC5oOjE0LAo+ICAgICAgICAgICAgICAgICAgICAgZnJvbSBkcml2 ZXJzL3VzYi9nYWRnZXQvdWRjL2FzcGVlZC12aHViL2NvcmUuYzoxNDoKPiAgICBkcml2ZXJzL3Vz Yi9nYWRnZXQvdWRjL2FzcGVlZC12aHViL2NvcmUuYzogSW4gZnVuY3Rpb24gJ2FzdF92aHViX2ly cSc6Cj4gPiA+IGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvYXNwZWVkLXZodWIvY29yZS5jOjEyNzox Njogd2FybmluZzogZm9ybWF0ICcleCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICd1bnNpZ25l ZCBpbnQnLCBidXQgYXJndW1lbnQgNSBoYXMgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnIFstV2Zv cm1hdD1dCj4gCj4gICAgICBVRENWREJHKHZodWIsICJpcnEgc3RhdHVzPSUwOHgsIGVwX2Fja3M9 JTA4eCBlcF9uYWNrcz0lMDh4XG4iLAoKVGhpcyBpcyByYXRoZXIgYm9ndXMgdG9vLiBtMzJyJ3Mg cmVhZGwoKSBpcyByZXR1cm5pbmcgdW5zaWduZWQgbG9uZywgaXQKc2hvdWxkIGJlIHVuc2lnbmVk IGludCBvciB1MzIuCgo+ICAgICAgICAgICAgICAgICAgICBeCj4gICAgaW5jbHVkZS9saW51eC9k eW5hbWljX2RlYnVnLmg6MTM1OjM5OiBub3RlOiBpbiBkZWZpbml0aW9uIG9mIG1hY3JvICdkeW5h bWljX2Rldl9kYmcnCj4gICAgICAgX19keW5hbWljX2Rldl9kYmcoJmRlc2NyaXB0b3IsIGRldiwg Zm10LCBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+Cj4g ICAgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hc3BlZWQtdmh1Yi92aHViLmg6NDA1OjI4OiBub3Rl OiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ2Rldl9kYmcnCj4gICAgICNkZWZpbmUgVURDVkRCRyh1 LCBmbXQuLi4pIGRldl9kYmcoJih1KS0+cGRldi0+ZGV2LCBmbXQpCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF5+fn5+fn4KPiAgICBkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2FzcGVl ZC12aHViL2NvcmUuYzoxMjc6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdVRENWREJH Jwo+ICAgICAgVURDVkRCRyh2aHViLCAiaXJxIHN0YXR1cz0lMDh4LCBlcF9hY2tzPSUwOHggZXBf bmFja3M9JTA4eFxuIiwKPiAgICAgIF5+fn5+fn4KPiAgICBkcml2ZXJzL3VzYi9nYWRnZXQvdWRj L2FzcGVlZC12aHViL2NvcmUuYzoxMjc6MTY6IHdhcm5pbmc6IGZvcm1hdCAnJXgnIGV4cGVjdHMg YXJndW1lbnQgb2YgdHlwZSAndW5zaWduZWQgaW50JywgYnV0IGFyZ3VtZW50IDYgaGFzIHR5cGUg J2xvbmcgdW5zaWduZWQgaW50JyBbLVdmb3JtYXQ9XQo+ICAgICAgVURDVkRCRyh2aHViLCAiaXJx IHN0YXR1cz0lMDh4LCBlcF9hY2tzPSUwOHggZXBfbmFja3M9JTA4eFxuIiwKPiAgICAgICAgICAg ICAgICAgICAgXgo+ICAgIGluY2x1ZGUvbGludXgvZHluYW1pY19kZWJ1Zy5oOjEzNTozOTogbm90 ZTogaW4gZGVmaW5pdGlvbiBvZiBtYWNybyAnZHluYW1pY19kZXZfZGJnJwo+ICAgICAgIF9fZHlu YW1pY19kZXZfZGJnKCZkZXNjcmlwdG9yLCBkZXYsIGZtdCwgXAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF5+fgo+ICAgIGRyaXZlcnMvdXNiL2dhZGdldC91ZGMv YXNwZWVkLXZodWIvdmh1Yi5oOjQwNToyODogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdk ZXZfZGJnJwo+ICAgICAjZGVmaW5lIFVEQ1ZEQkcodSwgZm10Li4uKSBkZXZfZGJnKCYodSktPnBk ZXYtPmRldiwgZm10KQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+Cj4g ICAgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hc3BlZWQtdmh1Yi9jb3JlLmM6MTI3OjI6IG5vdGU6 IGluIGV4cGFuc2lvbiBvZiBtYWNybyAnVURDVkRCRycKPiAgICAgIFVEQ1ZEQkcodmh1YiwgImly cSBzdGF0dXM9JTA4eCwgZXBfYWNrcz0lMDh4IGVwX25hY2tzPSUwOHhcbiIsCj4gICAgICBefn5+ fn5+Cj4gLS0KPiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gYXJjaC9tMzJyL2luY2x1ZGUvdWFw aS9hc20vYnl0ZW9yZGVyLmg6ODowLAo+ICAgICAgICAgICAgICAgICAgICAgZnJvbSBhcmNoL20z MnIvaW5jbHVkZS9hc20vYml0b3BzLmg6MjIsCj4gICAgICAgICAgICAgICAgICAgICBmcm9tIGlu Y2x1ZGUvbGludXgvYml0b3BzLmg6MzgsCj4gICAgICAgICAgICAgICAgICAgICBmcm9tIGluY2x1 ZGUvbGludXgva2VybmVsLmg6MTEsCj4gICAgICAgICAgICAgICAgICAgICBmcm9tIGRyaXZlcnMv dXNiL2dhZGdldC91ZGMvYXNwZWVkLXZodWIvZXBuLmM6MTQ6Cj4gICAgaW5jbHVkZS9saW51eC9i eXRlb3JkZXIvYmlnX2VuZGlhbi5oOjg6Mjogd2FybmluZzogI3dhcm5pbmcgaW5jb25zaXN0ZW50 IGNvbmZpZ3VyYXRpb24sIG5lZWRzIENPTkZJR19DUFVfQklHX0VORElBTiBbLVdjcHBdCj4gICAg ICN3YXJuaW5nIGluY29uc2lzdGVudCBjb25maWd1cmF0aW9uLCBuZWVkcyBDT05GSUdfQ1BVX0JJ R19FTkRJQU4KPiAgICAgIF5+fn5+fn4KPiAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gaW5jbHVk ZS9saW51eC9wcmludGsuaDozMjk6MCwKPiAgICAgICAgICAgICAgICAgICAgIGZyb20gaW5jbHVk ZS9saW51eC9rZXJuZWwuaDoxNCwKPiAgICAgICAgICAgICAgICAgICAgIGZyb20gZHJpdmVycy91 c2IvZ2FkZ2V0L3VkYy9hc3BlZWQtdmh1Yi9lcG4uYzoxNDoKPiAgICBkcml2ZXJzL3VzYi9nYWRn ZXQvdWRjL2FzcGVlZC12aHViL2Vwbi5jOiBJbiBmdW5jdGlvbiAnYXN0X3ZodWJfZXBuX2tpY2tf ZGVzYyc6Cj4gPiA+IGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvYXNwZWVkLXZodWIvdmh1Yi5oOjQw OTozOiB3YXJuaW5nOiBmb3JtYXQgJyV4JyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ3Vuc2ln bmVkIGludCcsIGJ1dCBhcmd1bWVudCA3IGhhcyB0eXBlICdsb25nIHVuc2lnbmVkIGludCcgWy1X Zm9ybWF0PV0KPiAKPiAgICAgICAiJXM6RVAlZCAiIGZtdCwgICAgXAo+ICAgICAgIF4KPiAgICBp bmNsdWRlL2xpbnV4L2R5bmFtaWNfZGVidWcuaDoxMzU6Mzk6IG5vdGU6IGluIGRlZmluaXRpb24g b2YgbWFjcm8gJ2R5bmFtaWNfZGV2X2RiZycKPiAgICAgICBfX2R5bmFtaWNfZGV2X2RiZygmZGVz Y3JpcHRvciwgZGV2LCBmbXQsIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBefn4KPiAgICBkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2FzcGVlZC12aHViL3ZodWIu aDo0MDg6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdkZXZfZGJnJwo+ICAgICAgZGV2 X2RiZygmKGVwKS0+dmh1Yi0+cGRldi0+ZGV2LCAgIFwKPiAgICAgIF5+fn5+fn4KPiAgICBkcml2 ZXJzL3VzYi9nYWRnZXQvdWRjL2FzcGVlZC12aHViL2Vwbi5jOjIzMzoyOiBub3RlOiBpbiBleHBh bnNpb24gb2YgbWFjcm8gJ0VQVkRCRycKPiAgICAgIEVQVkRCRyhlcCwgIkhXIGtpY2tlZCwgZF9u ZXh0PSVkIGRzdGF0PSUwOHhcbiIsCj4gICAgICBefn5+fn4KPiAgICBkcml2ZXJzL3VzYi9nYWRn ZXQvdWRjL2FzcGVlZC12aHViL2Vwbi5jOjIzMzo0NDogbm90ZTogZm9ybWF0IHN0cmluZyBpcyBk ZWZpbmVkIGhlcmUKPiAgICAgIEVQVkRCRyhlcCwgIkhXIGtpY2tlZCwgZF9uZXh0PSVkIGRzdGF0 PSUwOHhcbiIsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ fn5eCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlMDhseAo+ IAo+IHZpbSArMTI3IGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvYXNwZWVkLXZodWIvY29yZS5jCj4g Cj4gICA+IDE0CSNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiAgICAgMTUJI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+ICAgICAxNgkjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4gICAgIDE3CSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICAgICAxOAkjaW5jbHVkZSA8bGlu dXgvaW9wb3J0Lmg+Cj4gICAgIDE5CSNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gICAgIDIwCSNp bmNsdWRlIDxsaW51eC9lcnJuby5oPgo+ICAgICAyMQkjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ ICAgICAyMgkjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gICAgIDIzCSNpbmNsdWRlIDxs aW51eC9wcm9jX2ZzLmg+Cj4gICAgIDI0CSNpbmNsdWRlIDxsaW51eC9wcmVmZXRjaC5oPgo+ICAg ICAyNQkjaW5jbHVkZSA8bGludXgvY2xrLmg+Cj4gICAgIDI2CSNpbmNsdWRlIDxsaW51eC91c2Iv Z2FkZ2V0Lmg+Cj4gICAgIDI3CSNpbmNsdWRlIDxsaW51eC9vZi5oPgo+ICAgICAyOAkjaW5jbHVk ZSA8bGludXgvb2ZfZ3Bpby5oPgo+ICAgICAyOQkjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4g ICAgIDMwCSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgo+ICAgICAzMQkKPiAgICAgMzIJ I2luY2x1ZGUgInZodWIuaCIKPiAgICAgMzMJCj4gICAgIDM0CXN0YXRpYyBib29sIGZvcmNlX3Vz YjEgPSBmYWxzZTsKPiAgICAgMzUJc3RhdGljIGJvb2wgbm9fZG1hX2Rlc2MgPSBmYWxzZTsKPiAg ICAgMzYJCj4gICAgIDM3CW1vZHVsZV9wYXJhbV9uYW1lZChmb3JjZV91c2IxLCBmb3JjZV91c2Ix LCBib29sLCAwNjQ0KTsKPiAgICAgMzgJTU9EVUxFX1BBUk1fREVTQyhmb3JjZV91c2IxLCAiU2V0 IHRvIHRydWUgdG8gZm9yY2UgdG8gVVNCMSBzcGVlZCIpOwo+ICAgICAzOQltb2R1bGVfcGFyYW1f bmFtZWQobm9fZG1hX2Rlc2MsIG5vX2RtYV9kZXNjLCBib29sLCAwNjQ0KTsKPiAgICAgNDAJTU9E VUxFX1BBUk1fREVTQyhub19kbWFfZGVzYywgIlNldCB0byB0cnVlIHRvIGRpc2FibGUgdXNlIG9m IERNQSBkZXNjcmlwdG9ycyIpOwo+ICAgICA0MQkKPiAgICAgNDIJdm9pZCBhc3Rfdmh1Yl9kb25l KHN0cnVjdCBhc3Rfdmh1Yl9lcCAqZXAsIHN0cnVjdCBhc3Rfdmh1Yl9yZXEgKnJlcSwKPiAgICAg NDMJCQkgICBpbnQgc3RhdHVzKQo+ICAgICA0NAl7Cj4gICAgIDQ1CQlib29sIGludGVybmFsID0g cmVxLT5pbnRlcm5hbDsKPiAgICAgNDYJCj4gICAgIDQ3CQlFUFZEQkcoZXAsICJjb21wbGV0aW5n IHJlcXVlc3QgQCVwLCBzdGF0dXMgJWRcbiIsIHJlcSwgc3RhdHVzKTsKPiAgICAgNDgJCj4gICAg IDQ5CQlsaXN0X2RlbF9pbml0KCZyZXEtPnF1ZXVlKTsKPiAgICAgNTAJCj4gICAgIDUxCQlpZiAo cmVxLT5yZXEuc3RhdHVzID09IC1FSU5QUk9HUkVTUykKPiAgICAgNTIJCQlyZXEtPnJlcS5zdGF0 dXMgPSBzdGF0dXM7Cj4gICAgIDUzCQo+ICAgICA1NAkJaWYgKHJlcS0+cmVxLmRtYSkgewo+ICAg ICA1NQkJCWlmICghV0FSTl9PTighZXAtPmRldikpCj4gICAgIDU2CQkJCXVzYl9nYWRnZXRfdW5t YXBfcmVxdWVzdCgmZXAtPmRldi0+Z2FkZ2V0LAo+ICAgICA1NwkJCQkJCQkgJnJlcS0+cmVxLCBl cC0+ZXBuLmlzX2luKTsKPiAgICAgNTgJCQlyZXEtPnJlcS5kbWEgPSAwOwo+ICAgICA1OQkJfQo+ ICAgICA2MAkKPiAgICAgNjEJCS8qCj4gICAgIDYyCQkgKiBJZiB0aGlzIGlzbid0IGFuIGludGVy bmFsIEVQMCByZXF1ZXN0LCBjYWxsIHRoZSBjb3JlCj4gICAgIDYzCQkgKiB0byBjYWxsIHRoZSBn YWRnZXQgY29tcGxldGlvbi4KPiAgICAgNjQJCSAqLwo+ICAgICA2NQkJaWYgKCFpbnRlcm5hbCkg ewo+ICAgICA2NgkJCXNwaW5fdW5sb2NrKCZlcC0+dmh1Yi0+bG9jayk7Cj4gICAgIDY3CQkJdXNi X2dhZGdldF9naXZlYmFja19yZXF1ZXN0KCZlcC0+ZXAsICZyZXEtPnJlcSk7Cj4gICAgIDY4CQkJ c3Bpbl9sb2NrKCZlcC0+dmh1Yi0+bG9jayk7Cj4gICAgIDY5CQl9Cj4gICAgIDcwCX0KPiAgICAg NzEJCj4gICAgIDcyCXZvaWQgYXN0X3ZodWJfbnVrZShzdHJ1Y3QgYXN0X3ZodWJfZXAgKmVwLCBp bnQgc3RhdHVzKQo+ICAgICA3Mwl7Cj4gICAgIDc0CQlzdHJ1Y3QgYXN0X3ZodWJfcmVxICpyZXE7 Cj4gICAgIDc1CQo+ICAgICA3NgkJRVBEQkcoZXAsICJOdWtpbmdcbiIpOwo+ICAgICA3NwkKPiAg ICAgNzgJCS8qIHRlcm1pbmF0ZSBhbnkgcmVxdWVzdCBpbiB0aGUgcXVldWUgKi8KPiAgICAgNzkJ CWlmIChsaXN0X2VtcHR5KCZlcC0+cXVldWUpKQo+ICAgICA4MAkJCXJldHVybjsKPiAgICAgODEJ Cj4gICAgIDgyCQkvKiBCZXdhcmUsIGxvY2sgd2lsbCBiZSBkcm9wcGVkICYgcmVxLWFjcXVpcmVk IGJ5IGRvbmUoKSAqLwo+ICAgICA4MwkJd2hpbGUgKCFsaXN0X2VtcHR5KCZlcC0+cXVldWUpKSB7 Cj4gICAgIDg0CQkJcmVxID0gbGlzdF9maXJzdF9lbnRyeSgmZXAtPnF1ZXVlLCBzdHJ1Y3QgYXN0 X3ZodWJfcmVxLCBxdWV1ZSk7Cj4gICAgIDg1CQkJYXN0X3ZodWJfZG9uZShlcCwgcmVxLCBzdGF0 dXMpOwo+ICAgICA4NgkJfQo+ICAgICA4Nwl9Cj4gICAgIDg4CQo+ICAgICA4OQlzdHJ1Y3QgdXNi X3JlcXVlc3QgKmFzdF92aHViX2FsbG9jX3JlcXVlc3Qoc3RydWN0IHVzYl9lcCAqdV9lcCwKPiAg ICAgOTAJCQkJCQkgICBnZnBfdCBnZnBfZmxhZ3MpCj4gICAgIDkxCXsKPiAgICAgOTIJCXN0cnVj dCBhc3Rfdmh1Yl9yZXEgKnJlcTsKPiAgICAgOTMJCj4gICAgIDk0CQlyZXEgPSBremFsbG9jKHNp emVvZigqcmVxKSwgZ2ZwX2ZsYWdzKTsKPiAgICAgOTUJCWlmICghcmVxKQo+ICAgICA5NgkJCXJl dHVybiBOVUxMOwo+ICAgICA5NwkJSU5JVF9MSVNUX0hFQUQoJnJlcS0+cXVldWUpOwo+ICAgICA5 OAkJcmV0dXJuICZyZXEtPnJlcTsKPiAgICAgOTkJfQo+ICAgIDEwMAkKPiAgICAxMDEJdm9pZCBh c3Rfdmh1Yl9mcmVlX3JlcXVlc3Qoc3RydWN0IHVzYl9lcCAqdV9lcCwgc3RydWN0IHVzYl9yZXF1 ZXN0ICp1X3JlcSkKPiAgICAxMDIJewo+ICAgIDEwMwkJc3RydWN0IGFzdF92aHViX3JlcSAqcmVx ID0gdG9fYXN0X3JlcSh1X3JlcSk7Cj4gICAgMTA0CQo+ICAgIDEwNQkJa2ZyZWUocmVxKTsKPiAg ICAxMDYJfQo+ICAgIDEwNwkKPiAgICAxMDgJc3RhdGljIGlycXJldHVybl90IGFzdF92aHViX2ly cSAoaW50IGlycSwgdm9pZCAqZGF0YSkKPiAgICAxMDkJewo+ICAgIDExMAkJc3RydWN0IGFzdF92 aHViICp2aHViID0gZGF0YTsKPiAgICAxMTEJCWlycXJldHVybl90IGlyZXQgPSBJUlFfTk9ORTsK PiAgICAxMTIJCXUzMiBpc3RhdDsKPiAgICAxMTMJCj4gICAgMTE0CQkvKiBTdGFsZSBpbnRlcnJ1 cHQgd2hpbGUgdGVhcmluZyBkb3duICovCj4gICAgMTE1CQlpZiAoIXZodWItPmVwMF9idWZzKQo+ ICAgIDExNgkJCXJldHVybiBJUlFfTk9ORTsKPiAgICAxMTcJCj4gICAgMTE4CQlzcGluX2xvY2so JnZodWItPmxvY2spOwo+ICAgIDExOQkKPiAgICAxMjAJCS8qIFJlYWQgYW5kIEFDSyBpbnRlcnJ1 cHRzICovCj4gICAgMTIxCQlpc3RhdCA9IHJlYWRsKHZodWItPnJlZ3MgKyBBU1RfVkhVQl9JU1Ip Owo+ICAgIDEyMgkJaWYgKCFpc3RhdCkKPiAgICAxMjMJCQlnb3RvIGJhaWw7Cj4gICAgMTI0CQl3 cml0ZWwoaXN0YXQsIHZodWItPnJlZ3MgKyBBU1RfVkhVQl9JU1IpOwo+ICAgIDEyNQkJaXJldCA9 IElSUV9IQU5ETEVEOwo+ICAgIDEyNgkKPiAgPiAxMjcJCVVEQ1ZEQkcodmh1YiwgImlycSBzdGF0 dXM9JTA4eCwgZXBfYWNrcz0lMDh4IGVwX25hY2tzPSUwOHhcbiIsCj4gICAgMTI4CQkgICAgICAg aXN0YXQsCj4gICAgMTI5CQkgICAgICAgcmVhZGwodmh1Yi0+cmVncyArIEFTVF9WSFVCX0VQX0FD S19JU1IpLAo+ICAgIDEzMAkJICAgICAgIHJlYWRsKHZodWItPnJlZ3MgKyBBU1RfVkhVQl9FUF9O QUNLX0lTUikpOwo+ICAgIDEzMQkKPiAgICAxMzIJCS8qIEhhbmRsZSBnZW5lcmljIEVQcyBmaXJz dCAqLwo+ICAgIDEzMwkJaWYgKGlzdGF0ICYgVkhVQl9JUlFfRVBfUE9PTF9BQ0tfU1RBTEwpIHsK PiAgICAxMzQJCQl1MzIgaSwgZXBfYWNrcyA9IHJlYWRsKHZodWItPnJlZ3MgKyBBU1RfVkhVQl9F UF9BQ0tfSVNSKTsKPiAgICAxMzUJCQl3cml0ZWwoZXBfYWNrcywgdmh1Yi0+cmVncyArIEFTVF9W SFVCX0VQX0FDS19JU1IpOwo+ICAgIDEzNgkKPiAgICAxMzcJCQkvKiBDaGVjayBpZiB3ZSBoYXZl IGEgdXNlZnVsIGZmcyBvbiBhcm0gLi4uICovCj4gICAgMTM4CQkJZm9yIChpID0gMDsgZXBfYWNr cyAmJiBpIDwgQVNUX1ZIVUJfTlVNX0dFTl9FUHM7IGkrKykgewo+ICAgIDEzOQkJCQl1MzIgbWFz ayA9IDEgPDwgaTsKPiAgICAxNDAJCQkJaWYgKGVwX2Fja3MgJiBtYXNrKSB7Cj4gICAgMTQxCQkJ CQlhc3Rfdmh1Yl9lcG5fYWNrX2lycSgmdmh1Yi0+ZXBuc1tpXSk7Cj4gICAgMTQyCQkJCQllcF9h Y2tzICY9IH5tYXNrOwo+ICAgIDE0MwkJCQl9Cj4gICAgMTQ0CQkJfQo+ICAgIDE0NQkJfQo+ICAg IDE0NgkKPiAgICAxNDcJCS8qIEhhbmRsZSBkZXZpY2UgaW50ZXJydXB0cyAqLwo+ICAgIDE0OAkJ aWYgKGlzdGF0ICYgKFZIVUJfSVJRX0RFVklDRTEgfAo+ICAgIDE0OQkJCSAgICAgVkhVQl9JUlFf REVWSUNFMiB8Cj4gICAgMTUwCQkJICAgICBWSFVCX0lSUV9ERVZJQ0UzIHwKPiAgICAxNTEJCQkg ICAgIFZIVUJfSVJRX0RFVklDRTQgfAo+ICAgIDE1MgkJCSAgICAgVkhVQl9JUlFfREVWSUNFNSkp IHsKPiAgICAxNTMJCQlpZiAoaXN0YXQgJiBWSFVCX0lSUV9ERVZJQ0UxKQo+ICAgIDE1NAkJCQlh c3Rfdmh1Yl9kZXZfaXJxKCZ2aHViLT5wb3J0c1swXS5kZXYpOwo+ICAgIDE1NQkJCWlmIChpc3Rh dCAmIFZIVUJfSVJRX0RFVklDRTIpCj4gICAgMTU2CQkJCWFzdF92aHViX2Rldl9pcnEoJnZodWIt PnBvcnRzWzFdLmRldik7Cj4gICAgMTU3CQkJaWYgKGlzdGF0ICYgVkhVQl9JUlFfREVWSUNFMykK PiAgICAxNTgJCQkJYXN0X3ZodWJfZGV2X2lycSgmdmh1Yi0+cG9ydHNbMl0uZGV2KTsKPiAgICAx NTkJCQlpZiAoaXN0YXQgJiBWSFVCX0lSUV9ERVZJQ0U0KQo+ICAgIDE2MAkJCQlhc3Rfdmh1Yl9k ZXZfaXJxKCZ2aHViLT5wb3J0c1szXS5kZXYpOwo+ICAgIDE2MQkJCWlmIChpc3RhdCAmIFZIVUJf SVJRX0RFVklDRTUpCj4gICAgMTYyCQkJCWFzdF92aHViX2Rldl9pcnEoJnZodWItPnBvcnRzWzRd LmRldik7Cj4gICAgMTYzCQl9Cj4gICAgMTY0CQo+ICAgIDE2NQkJLyogSGFuZGxlIHRvcC1sZXZl bCB2SHViIEVQMCBpbnRlcnJ1cHRzICovCj4gICAgMTY2CQlpZiAoaXN0YXQgJiAoVkhVQl9JUlFf SFVCX0VQMF9PVVRfQUNLX1NUQUxMIHwKPiAgICAxNjcJCQkgICAgIFZIVUJfSVJRX0hVQl9FUDBf SU5fQUNLX1NUQUxMIHwKPiAgICAxNjgJCQkgICAgIFZIVUJfSVJRX0hVQl9FUDBfU0VUVVApKSB7 Cj4gICAgMTY5CQkJaWYgKGlzdGF0ICYgVkhVQl9JUlFfSFVCX0VQMF9JTl9BQ0tfU1RBTEwpCj4g ICAgMTcwCQkJCWFzdF92aHViX2VwMF9oYW5kbGVfYWNrKCZ2aHViLT5lcDAsIHRydWUpOwo+ICAg IDE3MQkJCWlmIChpc3RhdCAmIFZIVUJfSVJRX0hVQl9FUDBfT1VUX0FDS19TVEFMTCkKPiAgICAx NzIJCQkJYXN0X3ZodWJfZXAwX2hhbmRsZV9hY2soJnZodWItPmVwMCwgZmFsc2UpOwo+ICAgIDE3 MwkJCWlmIChpc3RhdCAmIFZIVUJfSVJRX0hVQl9FUDBfU0VUVVApCj4gICAgMTc0CQkJCWFzdF92 aHViX2VwMF9oYW5kbGVfc2V0dXAoJnZodWItPmVwMCk7Cj4gICAgMTc1CQl9Cj4gICAgMTc2CQo+ ICAgIDE3NwkJLyogVmFyaW91cyB0b3AgbGV2ZWwgYnVzIGV2ZW50cyAqLwo+ICAgIDE3OAkJaWYg KGlzdGF0ICYgKFZIVUJfSVJRX0JVU19SRVNVTUUgfAo+ICAgIDE3OQkJCSAgICAgVkhVQl9JUlFf QlVTX1NVU1BFTkQgfAo+ICAgIDE4MAkJCSAgICAgVkhVQl9JUlFfQlVTX1JFU0VUKSkgewo+ICAg IDE4MQkJCWlmIChpc3RhdCAmIFZIVUJfSVJRX0JVU19SRVNVTUUpCj4gICAgMTgyCQkJCWFzdF92 aHViX2h1Yl9yZXN1bWUodmh1Yik7Cj4gICAgMTgzCQkJaWYgKGlzdGF0ICYgVkhVQl9JUlFfQlVT X1NVU1BFTkQpCj4gICAgMTg0CQkJCWFzdF92aHViX2h1Yl9zdXNwZW5kKHZodWIpOwo+ICAgIDE4 NQkJCWlmIChpc3RhdCAmIFZIVUJfSVJRX0JVU19SRVNFVCkKPiAgICAxODYJCQkJYXN0X3ZodWJf aHViX3Jlc2V0KHZodWIpOwo+ICAgIDE4NwkJfQo+ICAgIDE4OAkKPiAgICAxODkJIGJhaWw6Cj4g ICAgMTkwCQlzcGluX3VubG9jaygmdmh1Yi0+bG9jayk7Cj4gICAgMTkxCQlyZXR1cm4gaXJldDsK PiAgICAxOTIJfQo+ICAgIDE5MwkKPiAKPiAtLS0KPiAwLURBWSBrZXJuZWwgdGVzdCBpbmZyYXN0 cnVjdHVyZSAgICAgICAgICAgICAgICBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgo+IGh0 dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9rYnVpbGQtYWxsICAgICAgICAgICAgICAgICAg IEludGVsIENvcnBvcmF0aW9uCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2Vu ZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgtdXNiIiBpbgp0aGUgYm9keSBvZiBhIG1lc3Nh Z2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBo dHRwOi8vdmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK