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: staging: typec: handle vendor defined part and modify drp toggling flow From: =?utf-8?b?c2h1ZmFuX2xlZSjmnY7mm7jluIYp?= Message-Id: <1519789258692.80587@richtek.com> Date: Wed, 28 Feb 2018 03:40:58 +0000 To: Jun Li , ShuFanLee , "heikki.krogerus@linux.intel.com" , "linux@roeck-us.net" , "greg@kroah.com" Cc: =?big5?B?Y3lfaHVhbmcotsCx0q3sKQ==?= , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , dl-linux-imx List-ID: SGkgSnVuLA0KDQogIEZvciB0aGUgcXVlc3Rpb25zIG9mIGRycF90b2dnbGluZywgb3VyIHRlc3Qg aXMgYXMgZm9sbG93aW5nOg0KDQogIEFjY29yZGluZyB0byBUQ1BDSSA0LjQuNS4yDQpJdCBpcyBy ZWNvbW1lbmRlZCB0aGUgVENQTSB3cml0ZSBST0xFX0NPTlRST0wuRFJQPTAgYmVmb3JlIHdyaXRp bmcgdG8NClBPV0VSX0NPTlRST0wuQXV0b0Rpc2NoYXJnZURpc2Nvbm5lY3QgYW5kIHN0YXJ0aW5n IHRoZSBEUlAgdG9nZ2xpbmcgdXNpbmcNCkNPTU1BTkQuTG9vazRDb25uZWN0aW9uLg0KDQogIFdl J3ZlIGVuY291bnRlciBhIHNpdHVhdGlvbiB3aGlsZSB0ZXN0aW5nIHdpdGggUlQxNzExSCBhcyBm b2xsb3dpbmc6DQogIFdlIHJlcGVhdGVkbHkgcGx1ZyBpbi9vdXQgYSBkZXZpY2UgKHdpdGggUmQp LCBhbmQgbm90IHRvIHByb3ZpZGUgVkJVUyg1Vikgd2hpbGUgcGx1Z2dpbmcgaW4uDQogIElmIHdl IHBsdWcgb3V0IHRoZSBkZXZpY2UgcmlnaHQgYWZ0ZXIgVENQQyBkZXRlY3RzIGl0IGFuZCBzdG9w cyB0b2dnbGluZywgVENQTSB3aWxsIHRyeSB0byByZXN0YXJ0IGRycF90b2dnbGluZy4NCiAgSGVy ZSwgd2UgcmUtcGx1ZyBpbiB0aGUgZGV2aWNlIGJlZm9yZSBUQ1BNIGNhbGxzIGRycF90b2dnbGlu Zy4gVW5kZXIgdGhpcyBjaXJjdW1zdGFuY2UsIFJUMTcxMUggcmVwb3J0cyBvcGVuL29wZW4gYWZ0 ZXIgZHJwX3RvZ2dsaW5nIGlzIGNhbGxlZC4NCiAgRm9yIGN1cnJlbnQgVENQTSwgaXQgc3RvcHMg aWYgb3Blbi9vcGVuIGlzIHJlcG9ydGVkIGF0IGRycF90b2dnbGluZyBzdGF0ZS4NCg0KICBUaGUg ZGV0YWlsZWQgZmxvdyB0aGF0IGNhdXNlcyBSVDE3MTFIIHJlcG9ydGluZyBvcGVuL29wZW4gaXMg ZGVzY3JpYmVkIGFzIGZvbGxvd2luZzoNCiAgMS4gUlQxNzExSCBkZXRlY3RzIHRoZSBkZXZpY2Us IHN0b3BzIHRvZ2dsaW5nIGFuZCByZXBvcnRzIHRvIFRDUE0uDQogIDIuIFJkIGlzIHBsdWdnZWQg b3V0IGJlZm9yZSBzZXRfY2MgaXMgY2FsbGVkLiBTbywgUk9MRV9DT05UUk9MLkRSUCBpcyBzdGls bCAxLg0KICAzLiBQbHVnIGluIHRoZSBkZXZpY2UgYmVmb3JlIFRDUE0gcmVzdGFydHMgZHJwX3Rv Z2dsaW5nDQogIDQuIFRoZSBkZXZpY2UgaXMgZGV0ZWN0ZWQgYnkgUlQxNzExSCdzIGludGVybmFs IGZpcm13YXJlIGFnYWluKFRDUEMgY2hpcCdzIGludGVybmFsIGZpcm13YXJlKS4NCiAgNS4gVENQ TSBjYWxscyBkcnBfdG9nZ2xpbmcgYmVmb3JlIGNjX2NoYW5nZSB0cmlnZ2VyZWQgYnkgc3RlcCA0 IGlzIGhhbmRsZWQuDQogIDYuIFRDUE0gc2V0cyBST0xFX0NPTlRST0wuRFJQID0gMSwgUmQvUmQg YW5kIHN0YXJ0IGRycF90b2dnbGluZy4NCkFjY29yZGluZyB0byBUQ1BDSSA0LjQuNS4yDQpUaGUg VENQTSBzaGFsbCB3cml0ZSBCNiAoRFJQKSA9IDBiIGFuZCBCMy4uMCAoQ0MxL0NDMikgaWYgaXQg d2lzaGVzIHRvIGNvbnRyb2wgdGhlIFJwL1JkDQpkaXJlY3RseSBpbnN0ZWFkIG9mIGhhdmluZyB0 aGUgVENQQyBwZXJmb3JtIERSUCB0b2dnbGluZyBhdXRvbm9tb3VzbC4NClNvLCBSZC9SZCBzZXQg aW4gc3RlcCA2IHdpbGwgbm90IHdvcmsuIChCZWNhdXNlIFJPTEVfQ09OVFJPTC5EUlAgaXMgMSBz aW5jZSB0aGUgZmlyc3Qgc3RlcC4pDQogIDcuIFJUMTcxMUggd2lsbCBzdG9wIHRvZ2dsaW5nIGlt bWVkaWF0ZWx5IChCZWNhdXNlIGl0J3MgaW50ZXJuYWwgZmlybXdhcmUgYWxyZWFkeSBkZXRlY3Rz IGRldmljZSBhdCBzdGVwIDQpIGFuZCByZXBvcnQgb3Blbi9vcGVuIChCZWNhdXNlIENDMS9DQzIg d2lsbCBiZSBjaGFuZ2VkIHRvIFJkIGJ5IFJUMTcxMUggYWZ0ZXIgTE9PSzRDT05ORUNUSU9OIGlz IHNldC4gUlQxNzExSCBzZXRzIHRvIFJkIGFuZCBkZXZpY2UgaXMgUmQgc28gb3BlbiBpcyByZXBv cnRlZCkNCiAgOC4gVENQQ0kgcmVwb3J0cyBvcGVuL29wZW4gdG8gVENQTSBhdCBkcnBfdG9nZ2xp bmcgc3RhdGUNCg0KICBUaGF0J3Mgd2h5IHdlIGFsd2F5cyBzZXQgUk9MRV9DT05UUk9MLkRSUCB0 byAwIHdoaWxlIHNldHRpbmcgUmQvUmQuDQogIElmIHRoaXMgY2lyY3Vtc3RhbmNlIGlzIG5vdCBh IGdlbmVyYWwgY2FzZSwgd2UgY2FuIGFsc28gdXNlIGEgdmVuZG9yIG9wcyB0byByZXBsYWNlIGl0 Lg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQoNCkkgZG9uJ3QgY2F0Y2ggdGhlIHBvaW50IG9mIGhvdyB5b3Ug aGFuZGxlIHByaXZhdGUgZXZlbnRzIGJ5IGFib3ZlIGNoYW5nZSwNCm1heWJlIHBvc3QgeW91ciBS VDE3MTFIIHBhcnQgYXMgYSB1c2VyIGluIG9uZSBzZXJpZXMgY2FuIG1ha2UgaXQgY2xlYXIsDQpJ IGFzc3VtZSB0aGlzIGNhbiBiZSBkb25lIGluIGV4aXN0aW5nIHRjcGNpX2lycSBsaWtlIGFib3Zl IHZlbmRlciBzcGVjaWZpYw0KaGFuZGxpbmcgYXMgd2VsbDoNCg0KRm9yIGV2ZXJ5IGdsdWUgZHJp dmVyLCBpdCByZWdpc3RlcnMgaXRzIG93biBpcnEgaGFuZGxlciBhbmQgY2FsbHMgdGNwY2lfaXJx IGluIHRoZSBoYW5kbGVyLg0KDQpUYWtlIFJUMTcxMUggYXMgYW4gZXhhbXBsZToNCkl0IHJlZ2lz dGVycyBpdHMgb3duIGlycSBoYW5kbGVyIGluIHByb2JlIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdmVu ZG9yIGRlZmluZWQgaW50ZXJydXB0cyBiZWZvcmUgY2FsbGluZyBnZW5lcmFsIHRjcGNpX2lycToN Cg0Kc3RhdGljIGlycXJldHVybl90IF90Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0K ew0KICAgICAgICBzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwID0gZGV2X2lkOw0KDQogICAgICAg IC8qIGhhbmRsZSB2ZW5kb3IgZGVmaW5lZCBpbnRlcnJ1cHRzIGhlcmUgKi8NCg0KICAgICAgICAv KiBjYWxsIGdlbmVyYWwgdGNwY2lfaXJxICovDQogICAgICAgIHJldHVybiB0Y3BjaV9pcnEoY2hp cC0+dGNwY2kpOw0KfQ0KDQpzdGF0aWMgaW50IHJ0MTcxMWhfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkNCnsNCiAgICAg ICAgLi4uLg0KICAgICAgICByZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtPmRl diwgY2xpZW50LT5pcnEsIE5VTEwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfdGNwY2lfaXJxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9UUklHR0VSX0xPVywNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKCZjbGllbnQtPmRldiksIGNoaXApOw0K fQ0KDQoNCkJlc3QgUmVnYXJkcywNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqDQpTaHUtRmFuIExlZQ0KUmljaHRlayBUZWNobm9sb2d5IENvcnBvcmF0aW9uDQpURUw6 ICs4ODYtMy01NTI2Nzg5ICMyMzU5DQpGQVg6ICs4ODYtMy01NTI2NjEyDQoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQrlr4Tku7bogIU6IEp1biBMaSA8anVuLmxpQG54cC5jb20+DQrlr4Tk u7bml6XmnJ86IDIwMTjlubQy5pyIMjLml6Ug5LiL5Y2IIDA2OjE2DQrmlLbku7bogIU6IFNodUZh bkxlZTsgaGVpa2tpLmtyb2dlcnVzQGxpbnV4LmludGVsLmNvbTsgbGludXhAcm9lY2stdXMubmV0 OyBncmVnQGtyb2FoLmNvbQ0K5Ymv5pysOiBzaHVmYW5fbGVlKOadjuabuOW4hik7IGN5X2h1YW5n KOm7g+WVn+WOnyk7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LXVzYkB2Z2Vy Lmtlcm5lbC5vcmc7IGRsLWxpbnV4LWlteA0K5Li75peoOiBSRTogW1BBVENIXSBzdGFnaW5nOiB0 eXBlYzogaGFuZGxlIHZlbmRvciBkZWZpbmVkIHBhcnQgYW5kIG1vZGlmeSBkcnAgdG9nZ2xpbmcg Zmxvdw0KDQpIaSwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBsaW51 eC11c2Itb3duZXJAdmdlci5rZXJuZWwub3JnDQo+IFttYWlsdG86bGludXgtdXNiLW93bmVyQHZn ZXIua2VybmVsLm9yZ10gT24gQmVoYWxmIE9mIFNodUZhbkxlZQ0KPiBTZW50OiAyMDE45bm0Muac iDIx5pelIDIzOjAyDQo+IFRvOiBoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tOyBsaW51 eEByb2Vjay11cy5uZXQ7IGdyZWdAa3JvYWguY29tDQo+IENjOiBzaHVmYW5fbGVlQHJpY2h0ZWsu Y29tOyBjeV9odWFuZ0ByaWNodGVrLmNvbTsNCj4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9y ZzsgbGludXgtdXNiQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBbUEFUQ0hdIHN0YWdpbmc6 IHR5cGVjOiBoYW5kbGUgdmVuZG9yIGRlZmluZWQgcGFydCBhbmQgbW9kaWZ5IGRycA0KPiB0b2dn bGluZyBmbG93DQo+DQo+IEZyb206IFNodUZhbkxlZSA8c2h1ZmFuX2xlZUByaWNodGVrLmNvbT4N Cj4NCj4gSGFuZGxlIHZlbmRvciBkZWZpbmVkIGJlaGF2aW9yIGluIHRjcGNpX2luaXQsIHRjcGNp X3NldF92Y29ubiBhbmQgZXhwb3J0DQo+IHRjcGNpX2lycS4NCj4gTW9yZSBvcGVyYXRpb25zIGNh biBiZSBleHRlbmRlZCBpbiB0Y3BjaV9kYXRhIGlmIG5lZWRlZC4NCj4gQWNjb3JkaW5nIHRvIFRD UENJIHNwZWNpZmljYXRpb24sIDQuNC41LjIgUk9MRV9DT05UUk9MLCBUQ1BDIHNoYWxsIG5vdA0K PiBzdGFydCBEUlAgdG9nZ2xpbmcgdW50aWwgc3Vic2VxdWVudGx5IHRoZSBUQ1BNIHdyaXRlcyB0 byB0aGUgQ09NTUFORA0KPiByZWdpc3RlciB0byBzdGFydCBEUlAgdG9nZ2xpbmcuDQoNCk15IHVu ZGVyc3RhbmRpbmcgb2YgYWJvdmUgc3RhdGVtZW50IGlzIFRDUE0odGhpcyBMaW51eCBkcml2ZXIp IGNhbiBlbmFibGUNCkRSUCBhbmQgQ0MxL0NDMiBpbiBvbmUgc2hvdCwgYnV0IFRDUEMoeW91ciB0 eXBlYyBjaGlwIGludGVybmFsIGZpcm13YXJlKQ0KbmVlZHMgd2FpdCB1bnRpbCBUQ1BNIHdyaXRl cyB0byBDT01NQU5EIHJlZ2lzdGVyIHRvIHN0YXJ0IGRycCB0b2dnbGluZy4NCg0KPiBEUlAgdG9n Z2xpbmcgZmxvdyBpcyBjaGFnbmVkIGFzIGZvbGxvd2luZzoNCj4gICAtIFdyaXRlIERSUCA9IDAg JiBSZC9SZA0KDQpXaHkgZml4ZWQgdG8gYmUgUmQvUmQ/IGluIHRoaXMgY2FzZSwgaXQgbWVhbnMg dGhlIHN0YXJ0aW5nIHZhbHVlOg0KDQpUY3BjaSA0LjQuNS4yOg0KIldoZW4gaW5pdGlhdGluZyBh dXRvbm9tb3VzIERSUCB0b2dnbGluZywgdGhlIFRDUE0gc2hhbGwgd3JpdGUgQjYgKERSUCkgPTFi DQphbmQgdGhlIHN0YXJ0aW5nIHZhbHVlIG9mIFJwL1JkIHRvIEIzLi4wIChDQzEvQ0MyKSB0byBp bmRpY2F0ZSBEUlAgYXV0b25vbW91cw0KdG9nZ2xpbmcgbW9kZSB0byB0aGUgVENQQy4iDQoNCj4g ICAtIFdyaXRlIERSUCA9IDENCg0KV2hhdCdzIHlvdXIgcHJvYmxlbSBpZiBjb21iaW5lIGFib3Zl IDIgaW4gb25lIHNob3Q/DQoNCj4gICAtIFNldCBMT09LNENPTk5FQ1RJT04gY29tbWFuZA0KPg0K PiBTaWduZWQtb2ZmLWJ5OiBTaHVGYW5MZWUgPHNodWZhbl9sZWVAcmljaHRlay5jb20+DQo+IC0t LQ0KPiAgZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMgfCAxMjgNCj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tDQo+ICBkcml2ZXJzL3N0YWdpbmcvdHlwZWMv dGNwY2kuaCB8ICAxMyArKysrKw0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygr KSwgMjYgZGVsZXRpb25zKC0pDQo+DQo+ICBwYXRjaCBjaGFuZ2Vsb2dzIGJldHdlZW4gdjEgJiB2 Mg0KPiAgLSBSZW1vdmUgdW5uZWNlc3NhcnkgaTJjX2NsaWVudCBpbiB0aGUgc3RydWN0dXJlIG9m IHRjcGNpDQo+ICAtIFJlbmFtZSBzdHJ1Y3R1cmUgb2YgdGNwY2lfdmVuZG9yX2RhdGEgdG8gdGNw Y2lfZGF0YQ0KPiAgLSBOb3QgZXhwb3J0aW5nIHRjcGNpIHJlYWQvd3JpdGUgd3JhcHBlcnMgYnV0 IHJlZ2lzdGVyIGkyYyByZWdtYXAgaW4gZ2x1ZQ0KPiBkcml2ZXINCj4gIC0gQWRkIHNldF92Y29u biBvcHMgaW4gdGNwY2lfZGF0YQ0KPiAgICAoSXQgaXMgbmVjZXNzYXJ5IGZvciBSVDE3MTFIIHRv IGVuYWJsZS9kaXNhYmxlIGlkbGUgbW9kZSBiZWZvcmUNCj4gZGlzYWJsaW5nL2VuYWJsaW5nIHZj b25uKQ0KPiAgLSBFeHBvcnQgdGNwY2lfaXJxIHNvIHRoYXQgdmVuZG9yIGNhbiBjYWxsIGl0IGlu IHRoZWlyIG93biBJUlEgaGFuZGxlcg0KPg0KPiAgcGF0Y2ggY2hhbmdlbG9ncyBiZXR3ZWVuIHYy ICYgdjMNCj4gIC0gQ2hhbmdlIHRoZSByZXR1cm4gdHlwZSBvZiB0Y3BjaV9pcnEgZnJvbSBpbnQg dG8gaXJxcmV0dXJuX3QNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90 Y3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMNCj4gaW5kZXggOWJkNDQxMi4u NDk1OWM2OSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMNCj4g KysrIGIvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMNCj4gQEAgLTIxLDcgKzIxLDYgQEAN Cj4NCj4gIHN0cnVjdCB0Y3BjaSB7DQo+ICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsNCj4gLSAg ICAgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudDsNCj4NCj4gICAgICAgc3RydWN0IHRjcG1fcG9y dCAqcG9ydDsNCj4NCj4gQEAgLTMwLDYgKzI5LDEyIEBAIHN0cnVjdCB0Y3BjaSB7DQo+ICAgICAg IGJvb2wgY29udHJvbHNfdmJ1czsNCj4NCj4gICAgICAgc3RydWN0IHRjcGNfZGV2IHRjcGM7DQo+ ICsgICAgIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhOw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHRj cGNpX2NoaXAgew0KPiArICAgICBzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0KPiArICAgICBzdHJ1Y3Qg dGNwY2lfZGF0YSBkYXRhOw0KPiAgfTsNCj4NCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHRjcGNp ICp0Y3BjX3RvX3RjcGNpKHN0cnVjdCB0Y3BjX2RldiAqdGNwYykgQEAgLTM3LDgNCj4gKzQyLDcg QEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdGNwY2kgKnRjcGNfdG9fdGNwY2koc3RydWN0IHRjcGNf ZGV2ICp0Y3BjKQ0KPiAgICAgICByZXR1cm4gY29udGFpbmVyX29mKHRjcGMsIHN0cnVjdCB0Y3Bj aSwgdGNwYyk7ICB9DQo+DQo+IC1zdGF0aWMgaW50IHRjcGNpX3JlYWQxNihzdHJ1Y3QgdGNwY2kg KnRjcGNpLCB1bnNpZ25lZCBpbnQgcmVnLA0KPiAtICAgICAgICAgICAgICAgICAgICAgdTE2ICp2 YWwpDQo+ICtzdGF0aWMgaW50IHRjcGNpX3JlYWQxNihzdHJ1Y3QgdGNwY2kgKnRjcGNpLCB1bnNp Z25lZCBpbnQgcmVnLCB1MTYNCj4gKyp2YWwpDQo+ICB7DQo+ICAgICAgIHJldHVybiByZWdtYXBf cmF3X3JlYWQodGNwY2ktPnJlZ21hcCwgcmVnLCB2YWwsIHNpemVvZih1MTYpKTsgIH0gQEANCj4g LTk4LDggKzEwMiwxMCBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF9jYyhzdHJ1Y3QgdGNwY19kZXYg KnRjcGMsIGVudW0NCj4gdHlwZWNfY2Nfc3RhdHVzIGNjKSAgc3RhdGljIGludCB0Y3BjaV9zdGFy dF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2DQo+ICp0Y3BjLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSB0eXBlY19jY19zdGF0dXMgY2MpDQo+ICB7DQo+ICsg ICAgIGludCByZXQ7DQo+ICAgICAgIHN0cnVjdCB0Y3BjaSAqdGNwY2kgPSB0Y3BjX3RvX3RjcGNp KHRjcGMpOw0KPiAtICAgICB1bnNpZ25lZCBpbnQgcmVnID0gVENQQ19ST0xFX0NUUkxfRFJQOw0K PiArICAgICB1bnNpZ25lZCBpbnQgcmVnID0gKFRDUENfUk9MRV9DVFJMX0NDX1JEIDw8DQo+IFRD UENfUk9MRV9DVFJMX0NDMV9TSElGVCkgfA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgKFRD UENfUk9MRV9DVFJMX0NDX1JEIDw8DQo+IFRDUENfUk9MRV9DVFJMX0NDMl9TSElGVCk7DQo+DQo+ ICAgICAgIHN3aXRjaCAoY2MpIHsNCj4gICAgICAgZGVmYXVsdDoNCj4gQEAgLTExNyw3ICsxMjMs MTkgQEAgc3RhdGljIGludCB0Y3BjaV9zdGFydF9kcnBfdG9nZ2xpbmcoc3RydWN0IHRjcGNfZGV2 DQo+ICp0Y3BjLA0KPiAgICAgICAgICAgICAgIGJyZWFrOw0KPiAgICAgICB9DQo+DQo+IC0gICAg IHJldHVybiByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJlZyk7 DQo+ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RS TCwgcmVnKTsNCj4gKyAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIHJl dDsNCj4gKyAgICAgdXNsZWVwX3JhbmdlKDUwMCwgMTAwMCk7DQoNCldoeSBuZWVkIGEgd2FpdCBo ZXJlPyBJdCBzZWVtcyB5b3UgYWN0dWFsbHkgZG9uJ3Qgd2FudCB0byBkbyBhdXRvbm9tb3VzbHkg dG9nZ2xpbmcNCmZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLCBpbnN0ZWFkLCB5b3UgYmVnaW4gd2l0 aCBhIGRpcmVjdGx5IGNvbnRyb2wgb24gQ0MsIGtlZXAgaXQoUmQpDQpmb3Igc29tZSB0aW1lLCB0 aGVuIHN3aXRjaCB0byB1c2UgYXV0b25vbW91c2x5IHRvZ2dsaW5nLCB3aHkgeW91IG5lZWQgc3Vj aCBraW5kIG9mDQpzZXF1ZW5jZT8gSSB0aGluayBpdCdzIHNwZWNpYWwgYW5kIG5vdCBmb2xsb3dp bmcgdGNwY2kgc3BlYy4NCg0KPiArICAgICByZWcgfD0gVENQQ19ST0xFX0NUUkxfRFJQOw0KPiAr ICAgICByZXQgPSByZWdtYXBfd3JpdGUodGNwY2ktPnJlZ21hcCwgVENQQ19ST0xFX0NUUkwsIHJl Zyk7DQo+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX0NPTU1BTkQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBUQ1BDX0NNRF9MT09LNENPTk5FQ1RJT04pOw0KPiAr ICAgICBpZiAocmV0IDwgMCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICBy ZXR1cm4gMDsNCj4gIH0NCj4NCj4gIHN0YXRpYyBlbnVtIHR5cGVjX2NjX3N0YXR1cyB0Y3BjaV90 b190eXBlY19jYyh1bnNpZ25lZCBpbnQgY2MsIGJvb2wgc2luaykNCj4gQEAgLTE3OCw2ICsxOTYs MTYgQEAgc3RhdGljIGludCB0Y3BjaV9zZXRfdmNvbm4oc3RydWN0IHRjcGNfZGV2ICp0Y3BjLA0K PiBib29sIGVuYWJsZSkNCj4gICAgICAgc3RydWN0IHRjcGNpICp0Y3BjaSA9IHRjcGNfdG9fdGNw Y2kodGNwYyk7DQo+ICAgICAgIGludCByZXQ7DQo+DQo+ICsgICAgIC8qIEhhbmRsZSB2ZW5kb3Ig c2V0IHZjb25uICovDQo+ICsgICAgIGlmICh0Y3BjaS0+ZGF0YSkgew0KPiArICAgICAgICAgICAg IGlmICh0Y3BjaS0+ZGF0YS0+c2V0X3Zjb25uKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICBy ZXQgPSB0Y3BjaS0+ZGF0YS0+c2V0X3Zjb25uKHRjcGNpLCB0Y3BjaS0+ZGF0YSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlKTsNCj4g KyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiAr DQo+ICAgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3BjaS0+cmVnbWFwLCBUQ1BDX1BPV0VSX0NU UkwsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgPyBUQ1BDX1BPV0VSX0NUUkxf VkNPTk5fRU5BQkxFIDogMCk7DQo+ICAgICAgIGlmIChyZXQgPCAwKQ0KPiBAQCAtMzIzLDYgKzM1 MSwxNSBAQCBzdGF0aWMgaW50IHRjcGNpX2luaXQoc3RydWN0IHRjcGNfZGV2ICp0Y3BjKQ0KPiAg ICAgICBpZiAodGltZV9hZnRlcihqaWZmaWVzLCB0aW1lb3V0KSkNCj4gICAgICAgICAgICAgICBy ZXR1cm4gLUVUSU1FRE9VVDsNCj4NCj4gKyAgICAgLyogSGFuZGxlIHZlbmRvciBpbml0ICovDQo+ ICsgICAgIGlmICh0Y3BjaS0+ZGF0YSkgew0KPiArICAgICAgICAgICAgIGlmICh0Y3BjaS0+ZGF0 YS0+aW5pdCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdGNwY2ktPmRhdGEtPmlu aXQodGNwY2ksIHRjcGNpLT5kYXRhKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQg PCAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAg ICAgICAgICAgIH0NCj4gKyAgICAgfQ0KPiArDQo+ICAgICAgIC8qIENsZWFyIGFsbCBldmVudHMg Ki8NCj4gICAgICAgcmV0ID0gdGNwY2lfd3JpdGUxNih0Y3BjaSwgVENQQ19BTEVSVCwgMHhmZmZm KTsNCj4gICAgICAgaWYgKHJldCA8IDApDQo+IEBAIC0zNDQsOSArMzgxLDE1IEBAIHN0YXRpYyBp bnQgdGNwY2lfaW5pdChzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpDQo+ICAgICAgIHJldHVybiB0Y3Bj aV93cml0ZTE2KHRjcGNpLCBUQ1BDX0FMRVJUX01BU0ssIHJlZyk7ICB9DQo+DQo+IC1zdGF0aWMg aXJxcmV0dXJuX3QgdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4gK3N0YXRpYyBp cnFyZXR1cm5fdCBfdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4gIHsNCj4gICAg ICAgc3RydWN0IHRjcGNpICp0Y3BjaSA9IGRldl9pZDsNCj4gKw0KPiArICAgICByZXR1cm4gdGNw Y2lfaXJxKHRjcGNpKTsNCj4gK30NCj4gKw0KPiAraXJxcmV0dXJuX3QgdGNwY2lfaXJxKHN0cnVj dCB0Y3BjaSAqdGNwY2kpIHsNCj4gICAgICAgdTE2IHN0YXR1czsNCj4NCj4gICAgICAgdGNwY2lf cmVhZDE2KHRjcGNpLCBUQ1BDX0FMRVJULCAmc3RhdHVzKTsgQEAgLTQxMiw2ICs0NTUsNyBAQA0K PiBzdGF0aWMgaXJxcmV0dXJuX3QgdGNwY2lfaXJxKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCj4N Cj4gICAgICAgcmV0dXJuIElSUV9IQU5ETEVEOw0KPiAgfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwo dGNwY2lfaXJxKTsNCg0KSSBkb24ndCBjYXRjaCB0aGUgcG9pbnQgb2YgaG93IHlvdSBoYW5kbGUg cHJpdmF0ZSBldmVudHMgYnkgYWJvdmUgY2hhbmdlLA0KbWF5YmUgcG9zdCB5b3VyIFJUMTcxMUgg cGFydCBhcyBhIHVzZXIgaW4gb25lIHNlcmllcyBjYW4gbWFrZSBpdCBjbGVhciwNCkkgYXNzdW1l IHRoaXMgY2FuIGJlIGRvbmUgaW4gZXhpc3RpbmcgdGNwY2lfaXJxIGxpa2UgYWJvdmUgdmVuZGVy IHNwZWNpZmljDQpoYW5kbGluZyBhcyB3ZWxsOg0KICAgICAgdGNwY2ktPmRhdGEtPnByaXZfZXZl bnRzKHRjcGNpLCB0Y3BjaS0+ZGF0YSk7DQoNCkxpIEp1bg0KPg0KPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCByZWdtYXBfY29uZmlnIHRjcGNpX3JlZ21hcF9jb25maWcgPSB7DQo+ICAgICAgIC5yZWdf Yml0cyA9IDgsDQo+IEBAIC00MzUsMjIgKzQ3OSwxOCBAQCBzdGF0aWMgaW50IHRjcGNpX3BhcnNl X2NvbmZpZyhzdHJ1Y3QgdGNwY2kgKnRjcGNpKQ0KPiAgICAgICByZXR1cm4gMDsNCj4gIH0NCj4N Cj4gLXN0YXRpYyBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudCwNCj4g LSAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkN Cj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJfcG9ydChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCB0Y3BjaV9kYXRhDQo+ICsqZGF0YSkNCj4gIHsNCj4gICAgICAgc3RydWN0IHRjcGNp ICp0Y3BjaTsNCj4gICAgICAgaW50IGVycjsNCj4NCj4gLSAgICAgdGNwY2kgPSBkZXZtX2t6YWxs b2MoJmNsaWVudC0+ZGV2LCBzaXplb2YoKnRjcGNpKSwgR0ZQX0tFUk5FTCk7DQo+ICsgICAgIHRj cGNpID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCp0Y3BjaSksIEdGUF9LRVJORUwpOw0KPiAg ICAgICBpZiAoIXRjcGNpKQ0KPiAtICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiArICAg ICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOw0KPg0KPiAtICAgICB0Y3BjaS0+Y2xp ZW50ID0gY2xpZW50Ow0KPiAtICAgICB0Y3BjaS0+ZGV2ID0gJmNsaWVudC0+ZGV2Ow0KPiAtICAg ICBpMmNfc2V0X2NsaWVudGRhdGEoY2xpZW50LCB0Y3BjaSk7DQo+IC0gICAgIHRjcGNpLT5yZWdt YXAgPSBkZXZtX3JlZ21hcF9pbml0X2kyYyhjbGllbnQsICZ0Y3BjaV9yZWdtYXBfY29uZmlnKTsN Cj4gLSAgICAgaWYgKElTX0VSUih0Y3BjaS0+cmVnbWFwKSkNCj4gLSAgICAgICAgICAgICByZXR1 cm4gUFRSX0VSUih0Y3BjaS0+cmVnbWFwKTsNCj4gKyAgICAgdGNwY2ktPmRldiA9IGRldjsNCj4g KyAgICAgdGNwY2ktPmRhdGEgPSBkYXRhOw0KPiArICAgICB0Y3BjaS0+cmVnbWFwID0gZGF0YS0+ cmVnbWFwOw0KPg0KPiAgICAgICB0Y3BjaS0+dGNwYy5pbml0ID0gdGNwY2lfaW5pdDsNCj4gICAg ICAgdGNwY2ktPnRjcGMuZ2V0X3ZidXMgPSB0Y3BjaV9nZXRfdmJ1czsgQEAgLTQ2NywyNyArNTA3 LDYzIEBAIHN0YXRpYw0KPiBpbnQgdGNwY2lfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVu dCwNCj4NCj4gICAgICAgZXJyID0gdGNwY2lfcGFyc2VfY29uZmlnKHRjcGNpKTsNCj4gICAgICAg aWYgKGVyciA8IDApDQo+IC0gICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gKyAgICAgICAgICAg ICByZXR1cm4gRVJSX1BUUihlcnIpOw0KPiArDQo+ICsgICAgIHRjcGNpLT5wb3J0ID0gdGNwbV9y ZWdpc3Rlcl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNwYyk7DQo+ICsgICAgIGlmIChQVFJf RVJSX09SX1pFUk8odGNwY2ktPnBvcnQpKQ0KPiArICAgICAgICAgICAgIHJldHVybiBFUlJfQ0FT VCh0Y3BjaS0+cG9ydCk7DQo+DQo+IC0gICAgIC8qIERpc2FibGUgY2hpcCBpbnRlcnJ1cHRzICov DQo+IC0gICAgIHRjcGNpX3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlRfTUFTSywgMCk7DQo+ICsg ICAgIHJldHVybiB0Y3BjaTsNCj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3JlZ2lz dGVyX3BvcnQpOw0KPiArDQo+ICt2b2lkIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChzdHJ1Y3QgdGNw Y2kgKnRjcGNpKSB7DQo+ICsgICAgIHRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNpLT5wb3J0KTsN Cj4gK30NCj4gK0VYUE9SVF9TWU1CT0xfR1BMKHRjcGNpX3VucmVnaXN0ZXJfcG9ydCk7DQo+DQo+ IC0gICAgIGVyciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEodGNwY2ktPmRldiwgY2xpZW50 LT5pcnEsIE5VTEwsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNw Y2lfaXJxLA0KPiArc3RhdGljIGludCB0Y3BjaV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50LA0KPiArICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAq aTJjX2lkKSB7DQo+ICsgICAgIHN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwOw0KPiArICAgICBpbnQg ZXJyOw0KPiArICAgICB1MTYgdmFsID0gMDsNCj4gKw0KPiArICAgICBjaGlwID0gZGV2bV9remFs bG9jKCZjbGllbnQtPmRldiwgc2l6ZW9mKCpjaGlwKSwgR0ZQX0tFUk5FTCk7DQo+ICsgICAgIGlm ICghY2hpcCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgICBj aGlwLT5kYXRhLnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwNCj4gJnRjcGNp X3JlZ21hcF9jb25maWcpOw0KPiArICAgICBpZiAoSVNfRVJSKGNoaXAtPmRhdGEucmVnbWFwKSkN Cj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjaGlwLT5kYXRhLnJlZ21hcCk7DQo+ICsN Cj4gKyAgICAgLyogRGlzYWJsZSBjaGlwIGludGVycnVwdHMgYmVmb3JlIHJlcXVlc3RpbmcgaXJx ICovDQo+ICsgICAgIGVyciA9IHJlZ21hcF9yYXdfd3JpdGUoY2hpcC0+ZGF0YS5yZWdtYXAsIFRD UENfQUxFUlRfTUFTSywgJnZhbCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YodTE2KSk7DQo+ICsgICAgIGlmIChlcnIgPCAwKQ0KPiArICAgICAgICAgICAgIHJldHVybiBl cnI7DQo+ICsNCj4gKyAgICAgZXJyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmY2xpZW50 LT5kZXYsIGNsaWVudC0+aXJxLCBOVUxMLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF90Y3BjaV9pcnEsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9UUklHR0VSX0xPVywNCj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZfbmFtZSh0Y3BjaS0+ZGV2KSwgdGNwY2kpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKCZjbGllbnQtPmRl diksIGNoaXApOw0KPiAgICAgICBpZiAoZXJyIDwgMCkNCj4gICAgICAgICAgICAgICByZXR1cm4g ZXJyOw0KPg0KPiAtICAgICB0Y3BjaS0+cG9ydCA9IHRjcG1fcmVnaXN0ZXJfcG9ydCh0Y3BjaS0+ ZGV2LCAmdGNwY2ktPnRjcGMpOw0KPiAtICAgICByZXR1cm4gUFRSX0VSUl9PUl9aRVJPKHRjcGNp LT5wb3J0KTsNCj4gKyAgICAgY2hpcC0+dGNwY2kgPSB0Y3BjaV9yZWdpc3Rlcl9wb3J0KCZjbGll bnQtPmRldiwgJmNoaXAtPmRhdGEpOw0KPiArICAgICBpZiAoUFRSX0VSUl9PUl9aRVJPKGNoaXAt PnRjcGNpKSkNCj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjaGlwLT50Y3BjaSk7DQo+ ICsNCj4gKyAgICAgaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgY2hpcCk7DQo+ICsgICAgIHJl dHVybiAwOw0KPiAgfQ0KPg0KPiAgc3RhdGljIGludCB0Y3BjaV9yZW1vdmUoc3RydWN0IGkyY19j bGllbnQgKmNsaWVudCkgIHsNCj4gLSAgICAgc3RydWN0IHRjcGNpICp0Y3BjaSA9IGkyY19nZXRf Y2xpZW50ZGF0YShjbGllbnQpOw0KPiArICAgICBzdHJ1Y3QgdGNwY2lfY2hpcCAqY2hpcCA9IGky Y19nZXRfY2xpZW50ZGF0YShjbGllbnQpOw0KPg0KPiAtICAgICB0Y3BtX3VucmVnaXN0ZXJfcG9y dCh0Y3BjaS0+cG9ydCk7DQo+ICsgICAgIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChjaGlwLT50Y3Bj aSk7DQo+DQo+ICAgICAgIHJldHVybiAwOw0KPiAgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL3R5cGVjL3RjcGNpLmggYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaA0KPiBp bmRleCBmZGZiMDZjLi40MDAyNWIyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHlw ZWMvdGNwY2kuaA0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaA0KPiBAQCAt NTksNiArNTksNyBAQA0KPiAgI2RlZmluZSBUQ1BDX1BPV0VSX0NUUkxfVkNPTk5fRU5BQkxFIEJJ VCgwKQ0KPg0KPiAgI2RlZmluZSBUQ1BDX0NDX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAg MHgxZA0KPiArI2RlZmluZSBUQ1BDX0NDX1NUQVRVU19EUlBSU1QgICAgICAgICAgICAgICAgQklU KDUpDQo+ICAjZGVmaW5lIFRDUENfQ0NfU1RBVFVTX1RFUk0gICAgICAgICAgQklUKDQpDQo+ICAj ZGVmaW5lIFRDUENfQ0NfU1RBVFVTX0NDMl9TSElGVCAgICAgMg0KPiAgI2RlZmluZSBUQ1BDX0ND X1NUQVRVU19DQzJfTUFTSyAgICAgICAgICAgICAgMHgzDQo+IEBAIC0xMjEsNCArMTIyLDE2IEBA DQo+ICAjZGVmaW5lIFRDUENfVkJVU19WT0xUQUdFX0FMQVJNX0hJX0NGRyAgICAgICAgICAgICAg IDB4NzYNCj4gICNkZWZpbmUgVENQQ19WQlVTX1ZPTFRBR0VfQUxBUk1fTE9fQ0ZHICAgICAgICAg ICAgICAgMHg3OA0KPg0KPiArc3RydWN0IHRjcGNpOw0KPiArc3RydWN0IHRjcGNpX2RhdGEgew0K PiArICAgICBzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7DQo+ICsgICAgIGludCAoKmluaXQpKHN0cnVj dCB0Y3BjaSAqdGNwY2ksIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhKTsNCj4gKyAgICAgaW50ICgq c2V0X3Zjb25uKShzdHJ1Y3QgdGNwY2kgKnRjcGNpLCBzdHJ1Y3QgdGNwY2lfZGF0YSAqZGF0YSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZSk7DQo+ICt9Ow0KPiArDQo+ICtz dHJ1Y3QgdGNwY2kgKnRjcGNpX3JlZ2lzdGVyX3BvcnQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgdGNwY2lfZGF0YQ0KPiArKmRhdGEpOyB2b2lkIHRjcGNpX3VucmVnaXN0ZXJfcG9ydChzdHJ1 Y3QgdGNwY2kgKnRjcGNpKTsgaXJxcmV0dXJuX3QNCj4gK3RjcGNpX2lycShzdHJ1Y3QgdGNwY2kg KnRjcGNpKTsNCj4gKw0KPiAgI2VuZGlmIC8qIF9fTElOVVhfVVNCX1RDUENJX0ggKi8NCj4gLS0N Cj4gMS45LjENCj4NCj4gLS0NCj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlzIGxpc3Q6IHNlbmQg dGhlIGxpbmUgInVuc3Vic2NyaWJlIGxpbnV4LXVzYiIgaW4gdGhlDQo+IGJvZHkgb2YgYSBtZXNz YWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcgTW9yZSBtYWpvcmRvbW8gaW5mbyBhdA0K PiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0 dHAlM0ElMkYlMkZ2Z2VyDQo+IC5rZXJuZWwub3JnJTJGbWFqb3Jkb21vLWluZm8uaHRtbCZkYXRh PTAyJTdDMDElN0NqdW4ubGklNDBueHAuY29tDQo+ICU3QzQ0ZDExYWYyN2UwMjQ0ZmE0ZDExMDhk NTc5M2MzZGM0JTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkOTljDQo+IDVjMzAxNjM1JTdDMCU3QzEl N0M2MzY1NDgyMjIwMDg5MDUyMDYmc2RhdGE9em4yb3VnS1J2cyUyQmJtSA0KPiBRZzJjOFJqajd2 TmUwWmlpVktkYXI3R2RQYSUyQjNvJTNEJnJlc2VydmVkPTANCioqKioqKioqKioqKiogRW1haWwg Q29uZmlkZW50aWFsaXR5IE5vdGljZSAqKioqKioqKioqKioqKioqKioqKg0KDQpUaGUgaW5mb3Jt YXRpb24gY29udGFpbmVkIGluIHRoaXMgZS1tYWlsIG1lc3NhZ2UgKGluY2x1ZGluZyBhbnkgYXR0 YWNobWVudHMpIG1heSBiZSBjb25maWRlbnRpYWwsIHByb3ByaWV0YXJ5LCBwcml2aWxlZ2VkLCBv ciBvdGhlcndpc2UgZXhlbXB0IGZyb20gZGlzY2xvc3VyZSB1bmRlciBhcHBsaWNhYmxlIGxhd3Mu IEl0IGlzIGludGVuZGVkIHRvIGJlIGNvbnZleWVkIG9ubHkgdG8gdGhlIGRlc2lnbmF0ZWQgcmVj aXBpZW50KHMpLiBBbnkgdXNlLCBkaXNzZW1pbmF0aW9uLCBkaXN0cmlidXRpb24sIHByaW50aW5n LCByZXRhaW5pbmcgb3IgY29weWluZyBvZiB0aGlzIGUtbWFpbCAoaW5jbHVkaW5nIGl0cyBhdHRh Y2htZW50cykgYnkgdW5pbnRlbmRlZCByZWNpcGllbnQocykgaXMgc3RyaWN0bHkgcHJvaGliaXRl ZCBhbmQgbWF5IGJlIHVubGF3ZnVsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCByZWNpcGll bnQgb2YgdGhpcyBlLW1haWwsIG9yIGJlbGlldmUgdGhhdCB5b3UgaGF2ZSByZWNlaXZlZCB0aGlz IGUtbWFpbCBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IChi eSByZXBseWluZyB0byB0aGlzIGUtbWFpbCksIGRlbGV0ZSBhbnkgYW5kIGFsbCBjb3BpZXMgb2Yg dGhpcyBlLW1haWwgKGluY2x1ZGluZyBhbnkgYXR0YWNobWVudHMpIGZyb20geW91ciBzeXN0ZW0s IGFuZCBkbyBub3QgZGlzY2xvc2UgdGhlIGNvbnRlbnQgb2YgdGhpcyBlLW1haWwgdG8gYW55IG90 aGVyIHBlcnNvbi4gVGhhbmsgeW91IQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Cyrus-Session-Id: sloti22d1t05-3200099-1519789282-2-13516578790657803616 X-Sieve: CMU Sieve 3.0 X-Spam-known-sender: no X-Spam-score: 0.0 X-Spam-hits: BAYES_00 -1.9, HEADER_FROM_DIFFERENT_DOMAINS 0.249, ME_NOAUTH 0.01, RCVD_IN_DNSWL_HI -5, T_RP_MATCHES_RCVD -0.01, LANGUAGES en, BAYES_USED global, SA_VERSION 3.4.0 X-Spam-source: IP='209.132.180.67', Host='vger.kernel.org', Country='CN', FromHeader='com', MailFrom='org', XOriginatingCountry='TW' X-Spam-charsets: from='big5', cc='big5', subject='big5', plain='big5' X-Resolved-to: greg@kroah.com X-Delivered-to: greg@kroah.com X-Mail-from: linux-usb-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; cv=none; d=messagingengine.com; s=arctest; t=1519789280; b=HC0s3vdtzdWEXhjC1+fs288NNe0/YIuazbbeOEsjo3c3vQQ GA4yx/onnS1rGXtQFM044RMmDSg7jwtBfxBC903Ob7M1wX9oC8wyh3KD52NvBuD3 VYqfpiLFLTbLSoci2/avdRXcKdEILO7iF6tVpc4mmrKMrXmK/m2KLn3aT+hqIIdI br5WXm6qPTC0SiVOsEDN3q39M5igSBgqQsGeZTCddbItC5yLg4Yn5G3yPWh68vy/ mIYEdlG1VRigurMp/f2swSBtxZX5cLK/3EMQhNaCIZ/Vev2nOdKfMeZ2kvO2ZcUs 7f0yyuD37WlBLGkwsCK9KPh6TuIZcFlWxMXcYOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=from:to:cc:subject:date:message-id :references:in-reply-to:content-type:content-transfer-encoding :mime-version:sender:list-id; s=arctest; t=1519789280; bh=l1eiVV XvZv6zYQpXGnuJMudctfYsvxf6s6NXn/oOZEw=; b=nV8WFD7R2T/rldos10exEU LXnyFgLrUQvxgdxnYSTDrt9yb3TECPbLwyQdoevTAgQJdVzEjG+/kMKTYY9URD0X ZN4oxatZYgg6rm3dicdQYww3g/5O3MIelM9bzV0puU58C2sXTgzCTxGX/EM7xtbY hPmRMOoe7HKRphBRzXwFtAZEQM05de+jCspEahqqULddb47PadCHVkxm3ffmSROm s/V1XDehIwcEy5Ls+MphvYqdifoDsll4dSmDd/cRd3vb+c4OoUVubQAZ8hbT4ykf tYbZUx63y5/96zf+pkB3uqDBnK/CbiEPYjIyBC0B3pXzMOXJ6XwCa9drQParlATA == ARC-Authentication-Results: i=1; mx1.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=richtek.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=richtek.com header.result=pass header_is_org_domain=yes Authentication-Results: mx1.messagingengine.com; arc=none (no signatures found); dkim=none (no signatures found); dmarc=none (p=none,has-list-id=yes,d=none) header.from=richtek.com; iprev=pass policy.iprev=209.132.180.67 (vger.kernel.org); spf=none smtp.mailfrom=linux-usb-owner@vger.kernel.org smtp.helo=vger.kernel.org; x-aligned-from=fail; x-ptr=pass x-ptr-helo=vger.kernel.org x-ptr-lookup=vger.kernel.org; x-return-mx=pass smtp.domain=vger.kernel.org smtp.result=pass smtp_org.domain=kernel.org smtp_org.result=pass smtp_is_org_domain=no header.domain=richtek.com header.result=pass header_is_org_domain=yes Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751707AbeB1DlF (ORCPT ); Tue, 27 Feb 2018 22:41:05 -0500 Received: from mg.richtek.com ([220.130.44.152]:39648 "EHLO mg.richtek.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751566AbeB1DlE (ORCPT ); Tue, 27 Feb 2018 22:41:04 -0500 X-MailGates: (flag:4,DYNAMIC,BADHELO,RELAY,NOHOST:PASS)(compute_score:DE LIVER,40,3) From: =?big5?B?c2h1ZmFuX2xlZSin9a7Rpnwp?= To: Jun Li , ShuFanLee , "heikki.krogerus@linux.intel.com" , "linux@roeck-us.net" , "greg@kroah.com" CC: =?big5?B?Y3lfaHVhbmcotsCx0q3sKQ==?= , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , dl-linux-imx Subject: =?big5?B?pl7C0DogW1BBVENIXSBzdGFnaW5nOiB0eXBlYzogaGFuZGxlIHZlbmRvciBkZWZp?= =?big5?Q?ned_part_and_modify_drp_toggling_flow?= Thread-Topic: [PATCH] staging: typec: handle vendor defined part and modify drp toggling flow Thread-Index: AQHTsDn66L1NkbiNXkiptPCkoWfwdw== Date: Wed, 28 Feb 2018 03:40:58 +0000 Message-ID: <1519789258692.80587@richtek.com> References: <1519225343-2929-1-git-send-email-leechu729@gmail.com>, In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [114.32.235.24] Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-usb-owner@vger.kernel.org X-Mailing-List: linux-usb@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-Mailing-List: linux-kernel@vger.kernel.org List-ID: SGkgSnVuLA0KDQogIEZvciB0aGUgcXVlc3Rpb25zIG9mIGRycF90b2dnbGluZywgb3VyIHRlc3Qg aXMgYXMgZm9sbG93aW5nOg0KDQogIEFjY29yZGluZyB0byBUQ1BDSSA0LjQuNS4yDQpJdCBpcyBy ZWNvbW1lbmRlZCB0aGUgVENQTSB3cml0ZSBST0xFX0NPTlRST0wuRFJQPTAgYmVmb3JlIHdyaXRp bmcgdG8NClBPV0VSX0NPTlRST0wuQXV0b0Rpc2NoYXJnZURpc2Nvbm5lY3QgYW5kIHN0YXJ0aW5n IHRoZSBEUlAgdG9nZ2xpbmcgdXNpbmcNCkNPTU1BTkQuTG9vazRDb25uZWN0aW9uLg0KDQogIFdl J3ZlIGVuY291bnRlciBhIHNpdHVhdGlvbiB3aGlsZSB0ZXN0aW5nIHdpdGggUlQxNzExSCBhcyBm b2xsb3dpbmc6DQogIFdlIHJlcGVhdGVkbHkgcGx1ZyBpbi9vdXQgYSBkZXZpY2UgKHdpdGggUmQp LCBhbmQgbm90IHRvIHByb3ZpZGUgVkJVUyg1Vikgd2hpbGUgcGx1Z2dpbmcgaW4uDQogIElmIHdl IHBsdWcgb3V0IHRoZSBkZXZpY2UgcmlnaHQgYWZ0ZXIgVENQQyBkZXRlY3RzIGl0IGFuZCBzdG9w cyB0b2dnbGluZywgVENQTSB3aWxsIHRyeSB0byByZXN0YXJ0IGRycF90b2dnbGluZy4NCiAgSGVy ZSwgd2UgcmUtcGx1ZyBpbiB0aGUgZGV2aWNlIGJlZm9yZSBUQ1BNIGNhbGxzIGRycF90b2dnbGlu Zy4gVW5kZXIgdGhpcyBjaXJjdW1zdGFuY2UsIFJUMTcxMUggcmVwb3J0cyBvcGVuL29wZW4gYWZ0 ZXIgZHJwX3RvZ2dsaW5nIGlzIGNhbGxlZC4NCiAgRm9yIGN1cnJlbnQgVENQTSwgaXQgc3RvcHMg aWYgb3Blbi9vcGVuIGlzIHJlcG9ydGVkIGF0IGRycF90b2dnbGluZyBzdGF0ZS4NCg0KICBUaGUg ZGV0YWlsZWQgZmxvdyB0aGF0IGNhdXNlcyBSVDE3MTFIIHJlcG9ydGluZyBvcGVuL29wZW4gaXMg ZGVzY3JpYmVkIGFzIGZvbGxvd2luZzoNCiAgMS4gUlQxNzExSCBkZXRlY3RzIHRoZSBkZXZpY2Us IHN0b3BzIHRvZ2dsaW5nIGFuZCByZXBvcnRzIHRvIFRDUE0uDQogIDIuIFJkIGlzIHBsdWdnZWQg b3V0IGJlZm9yZSBzZXRfY2MgaXMgY2FsbGVkLiBTbywgUk9MRV9DT05UUk9MLkRSUCBpcyBzdGls bCAxLg0KICAzLiBQbHVnIGluIHRoZSBkZXZpY2UgYmVmb3JlIFRDUE0gcmVzdGFydHMgZHJwX3Rv Z2dsaW5nDQogIDQuIFRoZSBkZXZpY2UgaXMgZGV0ZWN0ZWQgYnkgUlQxNzExSCdzIGludGVybmFs IGZpcm13YXJlIGFnYWluKFRDUEMgY2hpcCdzIGludGVybmFsIGZpcm13YXJlKS4NCiAgNS4gVENQ TSBjYWxscyBkcnBfdG9nZ2xpbmcgYmVmb3JlIGNjX2NoYW5nZSB0cmlnZ2VyZWQgYnkgc3RlcCA0 IGlzIGhhbmRsZWQuDQogIDYuIFRDUE0gc2V0cyBST0xFX0NPTlRST0wuRFJQID0gMSwgUmQvUmQg YW5kIHN0YXJ0IGRycF90b2dnbGluZy4NCkFjY29yZGluZyB0byBUQ1BDSSA0LjQuNS4yDQpUaGUg VENQTSBzaGFsbCB3cml0ZSBCNiAoRFJQKSA9IDBiIGFuZCBCMy4uMCAoQ0MxL0NDMikgaWYgaXQg d2lzaGVzIHRvIGNvbnRyb2wgdGhlIFJwL1JkDQpkaXJlY3RseSBpbnN0ZWFkIG9mIGhhdmluZyB0 aGUgVENQQyBwZXJmb3JtIERSUCB0b2dnbGluZyBhdXRvbm9tb3VzbC4NClNvLCBSZC9SZCBzZXQg aW4gc3RlcCA2IHdpbGwgbm90IHdvcmsuIChCZWNhdXNlIFJPTEVfQ09OVFJPTC5EUlAgaXMgMSBz aW5jZSB0aGUgZmlyc3Qgc3RlcC4pDQogIDcuIFJUMTcxMUggd2lsbCBzdG9wIHRvZ2dsaW5nIGlt bWVkaWF0ZWx5IChCZWNhdXNlIGl0J3MgaW50ZXJuYWwgZmlybXdhcmUgYWxyZWFkeSBkZXRlY3Rz IGRldmljZSBhdCBzdGVwIDQpIGFuZCByZXBvcnQgb3Blbi9vcGVuIChCZWNhdXNlIENDMS9DQzIg d2lsbCBiZSBjaGFuZ2VkIHRvIFJkIGJ5IFJUMTcxMUggYWZ0ZXIgTE9PSzRDT05ORUNUSU9OIGlz IHNldC4gUlQxNzExSCBzZXRzIHRvIFJkIGFuZCBkZXZpY2UgaXMgUmQgc28gb3BlbiBpcyByZXBv cnRlZCkNCiAgOC4gVENQQ0kgcmVwb3J0cyBvcGVuL29wZW4gdG8gVENQTSBhdCBkcnBfdG9nZ2xp bmcgc3RhdGUNCg0KICBUaGF0J3Mgd2h5IHdlIGFsd2F5cyBzZXQgUk9MRV9DT05UUk9MLkRSUCB0 byAwIHdoaWxlIHNldHRpbmcgUmQvUmQuDQogIElmIHRoaXMgY2lyY3Vtc3RhbmNlIGlzIG5vdCBh IGdlbmVyYWwgY2FzZSwgd2UgY2FuIGFsc28gdXNlIGEgdmVuZG9yIG9wcyB0byByZXBsYWNlIGl0 Lg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQoNCkkgZG9uJ3QgY2F0Y2ggdGhlIHBvaW50IG9mIGhvdyB5b3Ug aGFuZGxlIHByaXZhdGUgZXZlbnRzIGJ5IGFib3ZlIGNoYW5nZSwNCm1heWJlIHBvc3QgeW91ciBS VDE3MTFIIHBhcnQgYXMgYSB1c2VyIGluIG9uZSBzZXJpZXMgY2FuIG1ha2UgaXQgY2xlYXIsDQpJ IGFzc3VtZSB0aGlzIGNhbiBiZSBkb25lIGluIGV4aXN0aW5nIHRjcGNpX2lycSBsaWtlIGFib3Zl IHZlbmRlciBzcGVjaWZpYw0KaGFuZGxpbmcgYXMgd2VsbDoNCg0KRm9yIGV2ZXJ5IGdsdWUgZHJp dmVyLCBpdCByZWdpc3RlcnMgaXRzIG93biBpcnEgaGFuZGxlciBhbmQgY2FsbHMgdGNwY2lfaXJx IGluIHRoZSBoYW5kbGVyLg0KDQpUYWtlIFJUMTcxMUggYXMgYW4gZXhhbXBsZToNCkl0IHJlZ2lz dGVycyBpdHMgb3duIGlycSBoYW5kbGVyIGluIHByb2JlIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdmVu ZG9yIGRlZmluZWQgaW50ZXJydXB0cyBiZWZvcmUgY2FsbGluZyBnZW5lcmFsIHRjcGNpX2lycToN Cg0Kc3RhdGljIGlycXJldHVybl90IF90Y3BjaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0K ew0KICAgICAgICBzdHJ1Y3QgcnQxNzExaF9jaGlwICpjaGlwID0gZGV2X2lkOw0KDQogICAgICAg IC8qIGhhbmRsZSB2ZW5kb3IgZGVmaW5lZCBpbnRlcnJ1cHRzIGhlcmUgKi8NCg0KICAgICAgICAv KiBjYWxsIGdlbmVyYWwgdGNwY2lfaXJxICovDQogICAgICAgIHJldHVybiB0Y3BjaV9pcnEoY2hp cC0+dGNwY2kpOw0KfQ0KDQpzdGF0aWMgaW50IHJ0MTcxMWhfcHJvYmUoc3RydWN0IGkyY19jbGll bnQgKmNsaWVudCwgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKmkyY19pZCkNCnsNCiAgICAg ICAgLi4uLg0KICAgICAgICByZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGNoaXAtPmRl diwgY2xpZW50LT5pcnEsIE5VTEwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBfdGNwY2lfaXJxLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSVJRRl9PTkVTSE9UIHwgSVJRRl9UUklHR0VSX0xPVywNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9uYW1lKCZjbGllbnQtPmRldiksIGNoaXApOw0K fQ0KDQoNCkJlc3QgUmVnYXJkcywNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqDQpTaHUtRmFuIExlZQ0KUmljaHRlayBUZWNobm9sb2d5IENvcnBvcmF0aW9uDQpURUw6 ICs4ODYtMy01NTI2Nzg5ICMyMzU5DQpGQVg6ICs4ODYtMy01NTI2NjEyDQoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQqxSKXzqsw6IEp1biBMaSA8anVuLmxpQG54cC5jb20+DQqxSKXzpOm0 wTogMjAxOKZ+MqTrMjKk6SCkVaTIIDA2OjE2DQqmrKXzqsw6IFNodUZhbkxlZTsgaGVpa2tpLmty b2dlcnVzQGxpbnV4LmludGVsLmNvbTsgbGludXhAcm9lY2stdXMubmV0OyBncmVnQGtyb2FoLmNv bQ0KsMaluzogc2h1ZmFuX2xlZSin9a7RpnwpOyBjeV9odWFuZyi2wLHSrewpOyBsaW51eC1rZXJu ZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC11c2JAdmdlci5rZXJuZWwub3JnOyBkbC1saW51eC1p bXgNCqVEpq46IFJFOiBbUEFUQ0hdIHN0YWdpbmc6IHR5cGVjOiBoYW5kbGUgdmVuZG9yIGRlZmlu ZWQgcGFydCBhbmQgbW9kaWZ5IGRycCB0b2dnbGluZyBmbG93DQoNCkhpLA0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGxpbnV4LXVzYi1vd25lckB2Z2VyLmtlcm5lbC5v cmcNCj4gW21haWx0bzpsaW51eC11c2Itb3duZXJAdmdlci5rZXJuZWwub3JnXSBPbiBCZWhhbGYg T2YgU2h1RmFuTGVlDQo+IFNlbnQ6IDIwMTimfjKk6zIxpOkgMjM6MDINCj4gVG86IGhlaWtraS5r cm9nZXJ1c0BsaW51eC5pbnRlbC5jb207IGxpbnV4QHJvZWNrLXVzLm5ldDsgZ3JlZ0Brcm9haC5j b20NCj4gQ2M6IHNodWZhbl9sZWVAcmljaHRlay5jb207IGN5X2h1YW5nQHJpY2h0ZWsuY29tOw0K PiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC11c2JAdmdlci5rZXJuZWwub3Jn DQo+IFN1YmplY3Q6IFtQQVRDSF0gc3RhZ2luZzogdHlwZWM6IGhhbmRsZSB2ZW5kb3IgZGVmaW5l ZCBwYXJ0IGFuZCBtb2RpZnkgZHJwDQo+IHRvZ2dsaW5nIGZsb3cNCj4NCj4gRnJvbTogU2h1RmFu TGVlIDxzaHVmYW5fbGVlQHJpY2h0ZWsuY29tPg0KPg0KPiBIYW5kbGUgdmVuZG9yIGRlZmluZWQg YmVoYXZpb3IgaW4gdGNwY2lfaW5pdCwgdGNwY2lfc2V0X3Zjb25uIGFuZCBleHBvcnQNCj4gdGNw Y2lfaXJxLg0KPiBNb3JlIG9wZXJhdGlvbnMgY2FuIGJlIGV4dGVuZGVkIGluIHRjcGNpX2RhdGEg aWYgbmVlZGVkLg0KPiBBY2NvcmRpbmcgdG8gVENQQ0kgc3BlY2lmaWNhdGlvbiwgNC40LjUuMiBS T0xFX0NPTlRST0wsIFRDUEMgc2hhbGwgbm90DQo+IHN0YXJ0IERSUCB0b2dnbGluZyB1bnRpbCBz dWJzZXF1ZW50bHkgdGhlIFRDUE0gd3JpdGVzIHRvIHRoZSBDT01NQU5EDQo+IHJlZ2lzdGVyIHRv IHN0YXJ0IERSUCB0b2dnbGluZy4NCg0KTXkgdW5kZXJzdGFuZGluZyBvZiBhYm92ZSBzdGF0ZW1l bnQgaXMgVENQTSh0aGlzIExpbnV4IGRyaXZlcikgY2FuIGVuYWJsZQ0KRFJQIGFuZCBDQzEvQ0My IGluIG9uZSBzaG90LCBidXQgVENQQyh5b3VyIHR5cGVjIGNoaXAgaW50ZXJuYWwgZmlybXdhcmUp DQpuZWVkcyB3YWl0IHVudGlsIFRDUE0gd3JpdGVzIHRvIENPTU1BTkQgcmVnaXN0ZXIgdG8gc3Rh cnQgZHJwIHRvZ2dsaW5nLg0KDQo+IERSUCB0b2dnbGluZyBmbG93IGlzIGNoYWduZWQgYXMgZm9s bG93aW5nOg0KPiAgIC0gV3JpdGUgRFJQID0gMCAmIFJkL1JkDQoNCldoeSBmaXhlZCB0byBiZSBS ZC9SZD8gaW4gdGhpcyBjYXNlLCBpdCBtZWFucyB0aGUgc3RhcnRpbmcgdmFsdWU6DQoNClRjcGNp IDQuNC41LjI6DQoiV2hlbiBpbml0aWF0aW5nIGF1dG9ub21vdXMgRFJQIHRvZ2dsaW5nLCB0aGUg VENQTSBzaGFsbCB3cml0ZSBCNiAoRFJQKSA9MWINCmFuZCB0aGUgc3RhcnRpbmcgdmFsdWUgb2Yg UnAvUmQgdG8gQjMuLjAgKENDMS9DQzIpIHRvIGluZGljYXRlIERSUCBhdXRvbm9tb3VzDQp0b2dn bGluZyBtb2RlIHRvIHRoZSBUQ1BDLiINCg0KPiAgIC0gV3JpdGUgRFJQID0gMQ0KDQpXaGF0J3Mg eW91ciBwcm9ibGVtIGlmIGNvbWJpbmUgYWJvdmUgMiBpbiBvbmUgc2hvdD8NCg0KPiAgIC0gU2V0 IExPT0s0Q09OTkVDVElPTiBjb21tYW5kDQo+DQo+IFNpZ25lZC1vZmYtYnk6IFNodUZhbkxlZSA8 c2h1ZmFuX2xlZUByaWNodGVrLmNvbT4NCj4gLS0tDQo+ICBkcml2ZXJzL3N0YWdpbmcvdHlwZWMv dGNwY2kuYyB8IDEyOA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0NCj4gIGRyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oIHwgIDEzICsrKysrDQo+ICAyIGZp bGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkNCj4NCj4gIHBh dGNoIGNoYW5nZWxvZ3MgYmV0d2VlbiB2MSAmIHYyDQo+ICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBp MmNfY2xpZW50IGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGNwY2kNCj4gIC0gUmVuYW1lIHN0cnVjdHVy ZSBvZiB0Y3BjaV92ZW5kb3JfZGF0YSB0byB0Y3BjaV9kYXRhDQo+ICAtIE5vdCBleHBvcnRpbmcg dGNwY2kgcmVhZC93cml0ZSB3cmFwcGVycyBidXQgcmVnaXN0ZXIgaTJjIHJlZ21hcCBpbiBnbHVl DQo+IGRyaXZlcg0KPiAgLSBBZGQgc2V0X3Zjb25uIG9wcyBpbiB0Y3BjaV9kYXRhDQo+ICAgIChJ dCBpcyBuZWNlc3NhcnkgZm9yIFJUMTcxMUggdG8gZW5hYmxlL2Rpc2FibGUgaWRsZSBtb2RlIGJl Zm9yZQ0KPiBkaXNhYmxpbmcvZW5hYmxpbmcgdmNvbm4pDQo+ICAtIEV4cG9ydCB0Y3BjaV9pcnEg c28gdGhhdCB2ZW5kb3IgY2FuIGNhbGwgaXQgaW4gdGhlaXIgb3duIElSUSBoYW5kbGVyDQo+DQo+ ICBwYXRjaCBjaGFuZ2Vsb2dzIGJldHdlZW4gdjIgJiB2Mw0KPiAgLSBDaGFuZ2UgdGhlIHJldHVy biB0eXBlIG9mIHRjcGNpX2lycSBmcm9tIGludCB0byBpcnFyZXR1cm5fdA0KPg0KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9zdGFnaW5nL3R5cGVjL3RjcGNpLmMgYi9kcml2ZXJzL3N0YWdpbmcvdHlw ZWMvdGNwY2kuYw0KPiBpbmRleCA5YmQ0NDEyLi40OTU5YzY5IDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuYw0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvdHlwZWMv dGNwY2kuYw0KPiBAQCAtMjEsNyArMjEsNiBAQA0KPg0KPiAgc3RydWN0IHRjcGNpIHsNCj4gICAg ICAgc3RydWN0IGRldmljZSAqZGV2Ow0KPiAtICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50 Ow0KPg0KPiAgICAgICBzdHJ1Y3QgdGNwbV9wb3J0ICpwb3J0Ow0KPg0KPiBAQCAtMzAsNiArMjks MTIgQEAgc3RydWN0IHRjcGNpIHsNCj4gICAgICAgYm9vbCBjb250cm9sc192YnVzOw0KPg0KPiAg ICAgICBzdHJ1Y3QgdGNwY19kZXYgdGNwYzsNCj4gKyAgICAgc3RydWN0IHRjcGNpX2RhdGEgKmRh dGE7DQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdGNwY2lfY2hpcCB7DQo+ICsgICAgIHN0cnVjdCB0 Y3BjaSAqdGNwY2k7DQo+ICsgICAgIHN0cnVjdCB0Y3BjaV9kYXRhIGRhdGE7DQo+ICB9Ow0KPg0K PiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdGNwY2kgKnRjcGNfdG9fdGNwY2koc3RydWN0IHRjcGNf ZGV2ICp0Y3BjKSBAQCAtMzcsOA0KPiArNDIsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCB0Y3Bj aSAqdGNwY190b190Y3BjaShzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpDQo+ICAgICAgIHJldHVybiBj b250YWluZXJfb2YodGNwYywgc3RydWN0IHRjcGNpLCB0Y3BjKTsgIH0NCj4NCj4gLXN0YXRpYyBp bnQgdGNwY2lfcmVhZDE2KHN0cnVjdCB0Y3BjaSAqdGNwY2ksIHVuc2lnbmVkIGludCByZWcsDQo+ IC0gICAgICAgICAgICAgICAgICAgICB1MTYgKnZhbCkNCj4gK3N0YXRpYyBpbnQgdGNwY2lfcmVh ZDE2KHN0cnVjdCB0Y3BjaSAqdGNwY2ksIHVuc2lnbmVkIGludCByZWcsIHUxNg0KPiArKnZhbCkN Cj4gIHsNCj4gICAgICAgcmV0dXJuIHJlZ21hcF9yYXdfcmVhZCh0Y3BjaS0+cmVnbWFwLCByZWcs IHZhbCwgc2l6ZW9mKHUxNikpOyAgfSBAQA0KPiAtOTgsOCArMTAyLDEwIEBAIHN0YXRpYyBpbnQg dGNwY2lfc2V0X2NjKHN0cnVjdCB0Y3BjX2RldiAqdGNwYywgZW51bQ0KPiB0eXBlY19jY19zdGF0 dXMgY2MpICBzdGF0aWMgaW50IHRjcGNpX3N0YXJ0X2RycF90b2dnbGluZyhzdHJ1Y3QgdGNwY19k ZXYNCj4gKnRjcGMsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHR5 cGVjX2NjX3N0YXR1cyBjYykNCj4gIHsNCj4gKyAgICAgaW50IHJldDsNCj4gICAgICAgc3RydWN0 IHRjcGNpICp0Y3BjaSA9IHRjcGNfdG9fdGNwY2kodGNwYyk7DQo+IC0gICAgIHVuc2lnbmVkIGlu dCByZWcgPSBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICsgICAgIHVuc2lnbmVkIGludCByZWcgPSAo VENQQ19ST0xFX0NUUkxfQ0NfUkQgPDwNCj4gVENQQ19ST0xFX0NUUkxfQ0MxX1NISUZUKSB8DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAoVENQQ19ST0xFX0NUUkxfQ0NfUkQgPDwNCj4gVENQ Q19ST0xFX0NUUkxfQ0MyX1NISUZUKTsNCj4NCj4gICAgICAgc3dpdGNoIChjYykgew0KPiAgICAg ICBkZWZhdWx0Og0KPiBAQCAtMTE3LDcgKzEyMywxOSBAQCBzdGF0aWMgaW50IHRjcGNpX3N0YXJ0 X2RycF90b2dnbGluZyhzdHJ1Y3QgdGNwY19kZXYNCj4gKnRjcGMsDQo+ICAgICAgICAgICAgICAg YnJlYWs7DQo+ICAgICAgIH0NCj4NCj4gLSAgICAgcmV0dXJuIHJlZ21hcF93cml0ZSh0Y3BjaS0+ cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsNCj4gKyAgICAgcmV0ID0gcmVnbWFwX3dyaXRl KHRjcGNpLT5yZWdtYXAsIFRDUENfUk9MRV9DVFJMLCByZWcpOw0KPiArICAgICBpZiAocmV0IDwg MCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICB1c2xlZXBfcmFuZ2UoNTAw LCAxMDAwKTsNCg0KV2h5IG5lZWQgYSB3YWl0IGhlcmU/IEl0IHNlZW1zIHlvdSBhY3R1YWxseSBk b24ndCB3YW50IHRvIGRvIGF1dG9ub21vdXNseSB0b2dnbGluZw0KZnJvbSB0aGUgdmVyeSBiZWdp bm5pbmcsIGluc3RlYWQsIHlvdSBiZWdpbiB3aXRoIGEgZGlyZWN0bHkgY29udHJvbCBvbiBDQywg a2VlcCBpdChSZCkNCmZvciBzb21lIHRpbWUsIHRoZW4gc3dpdGNoIHRvIHVzZSBhdXRvbm9tb3Vz bHkgdG9nZ2xpbmcsIHdoeSB5b3UgbmVlZCBzdWNoIGtpbmQgb2YNCnNlcXVlbmNlPyBJIHRoaW5r IGl0J3Mgc3BlY2lhbCBhbmQgbm90IGZvbGxvd2luZyB0Y3BjaSBzcGVjLg0KDQo+ICsgICAgIHJl ZyB8PSBUQ1BDX1JPTEVfQ1RSTF9EUlA7DQo+ICsgICAgIHJldCA9IHJlZ21hcF93cml0ZSh0Y3Bj aS0+cmVnbWFwLCBUQ1BDX1JPTEVfQ1RSTCwgcmVnKTsNCj4gKyAgICAgaWYgKHJldCA8IDApDQo+ ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKyAgICAgcmV0ID0gcmVnbWFwX3dyaXRlKHRj cGNpLT5yZWdtYXAsIFRDUENfQ09NTUFORCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFRD UENfQ01EX0xPT0s0Q09OTkVDVElPTik7DQo+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAg ICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgIHJldHVybiAwOw0KPiAgfQ0KPg0KPiAgc3RhdGlj IGVudW0gdHlwZWNfY2Nfc3RhdHVzIHRjcGNpX3RvX3R5cGVjX2NjKHVuc2lnbmVkIGludCBjYywg Ym9vbCBzaW5rKQ0KPiBAQCAtMTc4LDYgKzE5NiwxNiBAQCBzdGF0aWMgaW50IHRjcGNpX3NldF92 Y29ubihzdHJ1Y3QgdGNwY19kZXYgKnRjcGMsDQo+IGJvb2wgZW5hYmxlKQ0KPiAgICAgICBzdHJ1 Y3QgdGNwY2kgKnRjcGNpID0gdGNwY190b190Y3BjaSh0Y3BjKTsNCj4gICAgICAgaW50IHJldDsN Cj4NCj4gKyAgICAgLyogSGFuZGxlIHZlbmRvciBzZXQgdmNvbm4gKi8NCj4gKyAgICAgaWYgKHRj cGNpLT5kYXRhKSB7DQo+ICsgICAgICAgICAgICAgaWYgKHRjcGNpLT5kYXRhLT5zZXRfdmNvbm4p IHsNCj4gKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRjcGNpLT5kYXRhLT5zZXRfdmNvbm4o dGNwY2ksIHRjcGNpLT5kYXRhLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbmFibGUpOw0KPiArICAgICAgICAgICAgICAgICAgICAgaWYgKHJl dCA8IDApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsg ICAgICAgICAgICAgfQ0KPiArICAgICB9DQo+ICsNCj4gICAgICAgcmV0ID0gcmVnbWFwX3dyaXRl KHRjcGNpLT5yZWdtYXAsIFRDUENfUE9XRVJfQ1RSTCwNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGVuYWJsZSA/IFRDUENfUE9XRVJfQ1RSTF9WQ09OTl9FTkFCTEUgOiAwKTsNCj4gICAgICAg aWYgKHJldCA8IDApDQo+IEBAIC0zMjMsNiArMzUxLDE1IEBAIHN0YXRpYyBpbnQgdGNwY2lfaW5p dChzdHJ1Y3QgdGNwY19kZXYgKnRjcGMpDQo+ICAgICAgIGlmICh0aW1lX2FmdGVyKGppZmZpZXMs IHRpbWVvdXQpKQ0KPiAgICAgICAgICAgICAgIHJldHVybiAtRVRJTUVET1VUOw0KPg0KPiArICAg ICAvKiBIYW5kbGUgdmVuZG9yIGluaXQgKi8NCj4gKyAgICAgaWYgKHRjcGNpLT5kYXRhKSB7DQo+ ICsgICAgICAgICAgICAgaWYgKHRjcGNpLT5kYXRhLT5pbml0KSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICByZXQgPSB0Y3BjaS0+ZGF0YS0+aW5pdCh0Y3BjaSwgdGNwY2ktPmRhdGEpOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgICAgICAgICAgfQ0KPiArICAgICB9DQo+ICsN Cj4gICAgICAgLyogQ2xlYXIgYWxsIGV2ZW50cyAqLw0KPiAgICAgICByZXQgPSB0Y3BjaV93cml0 ZTE2KHRjcGNpLCBUQ1BDX0FMRVJULCAweGZmZmYpOw0KPiAgICAgICBpZiAocmV0IDwgMCkNCj4g QEAgLTM0NCw5ICszODEsMTUgQEAgc3RhdGljIGludCB0Y3BjaV9pbml0KHN0cnVjdCB0Y3BjX2Rl diAqdGNwYykNCj4gICAgICAgcmV0dXJuIHRjcGNpX3dyaXRlMTYodGNwY2ksIFRDUENfQUxFUlRf TUFTSywgcmVnKTsgIH0NCj4NCj4gLXN0YXRpYyBpcnFyZXR1cm5fdCB0Y3BjaV9pcnEoaW50IGly cSwgdm9pZCAqZGV2X2lkKQ0KPiArc3RhdGljIGlycXJldHVybl90IF90Y3BjaV9pcnEoaW50IGly cSwgdm9pZCAqZGV2X2lkKQ0KPiAgew0KPiAgICAgICBzdHJ1Y3QgdGNwY2kgKnRjcGNpID0gZGV2 X2lkOw0KPiArDQo+ICsgICAgIHJldHVybiB0Y3BjaV9pcnEodGNwY2kpOw0KPiArfQ0KPiArDQo+ ICtpcnFyZXR1cm5fdCB0Y3BjaV9pcnEoc3RydWN0IHRjcGNpICp0Y3BjaSkgew0KPiAgICAgICB1 MTYgc3RhdHVzOw0KPg0KPiAgICAgICB0Y3BjaV9yZWFkMTYodGNwY2ksIFRDUENfQUxFUlQsICZz dGF0dXMpOyBAQCAtNDEyLDYgKzQ1NSw3IEBADQo+IHN0YXRpYyBpcnFyZXR1cm5fdCB0Y3BjaV9p cnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQ0KPg0KPiAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7 DQo+ICB9DQo+ICtFWFBPUlRfU1lNQk9MX0dQTCh0Y3BjaV9pcnEpOw0KDQpJIGRvbid0IGNhdGNo IHRoZSBwb2ludCBvZiBob3cgeW91IGhhbmRsZSBwcml2YXRlIGV2ZW50cyBieSBhYm92ZSBjaGFu Z2UsDQptYXliZSBwb3N0IHlvdXIgUlQxNzExSCBwYXJ0IGFzIGEgdXNlciBpbiBvbmUgc2VyaWVz IGNhbiBtYWtlIGl0IGNsZWFyLA0KSSBhc3N1bWUgdGhpcyBjYW4gYmUgZG9uZSBpbiBleGlzdGlu ZyB0Y3BjaV9pcnEgbGlrZSBhYm92ZSB2ZW5kZXIgc3BlY2lmaWMNCmhhbmRsaW5nIGFzIHdlbGw6 DQogICAgICB0Y3BjaS0+ZGF0YS0+cHJpdl9ldmVudHModGNwY2ksIHRjcGNpLT5kYXRhKTsNCg0K TGkgSnVuDQo+DQo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9jb25maWcgdGNwY2lfcmVn bWFwX2NvbmZpZyA9IHsNCj4gICAgICAgLnJlZ19iaXRzID0gOCwNCj4gQEAgLTQzNSwyMiArNDc5 LDE4IEBAIHN0YXRpYyBpbnQgdGNwY2lfcGFyc2VfY29uZmlnKHN0cnVjdCB0Y3BjaSAqdGNwY2kp DQo+ICAgICAgIHJldHVybiAwOw0KPiAgfQ0KPg0KPiAtc3RhdGljIGludCB0Y3BjaV9wcm9iZShz dHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPiAtICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgaTJjX2RldmljZV9pZCAqaTJjX2lkKQ0KPiArc3RydWN0IHRjcGNpICp0Y3BjaV9yZWdp c3Rlcl9wb3J0KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHRjcGNpX2RhdGENCj4gKypkYXRh KQ0KPiAgew0KPiAgICAgICBzdHJ1Y3QgdGNwY2kgKnRjcGNpOw0KPiAgICAgICBpbnQgZXJyOw0K Pg0KPiAtICAgICB0Y3BjaSA9IGRldm1fa3phbGxvYygmY2xpZW50LT5kZXYsIHNpemVvZigqdGNw Y2kpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgdGNwY2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXpl b2YoKnRjcGNpKSwgR0ZQX0tFUk5FTCk7DQo+ICAgICAgIGlmICghdGNwY2kpDQo+IC0gICAgICAg ICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7DQo+DQo+IC0gICAgIHRjcGNpLT5jbGllbnQgPSBjbGllbnQ7DQo+IC0gICAgIHRjcGNp LT5kZXYgPSAmY2xpZW50LT5kZXY7DQo+IC0gICAgIGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQs IHRjcGNpKTsNCj4gLSAgICAgdGNwY2ktPnJlZ21hcCA9IGRldm1fcmVnbWFwX2luaXRfaTJjKGNs aWVudCwgJnRjcGNpX3JlZ21hcF9jb25maWcpOw0KPiAtICAgICBpZiAoSVNfRVJSKHRjcGNpLT5y ZWdtYXApKQ0KPiAtICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHRjcGNpLT5yZWdtYXApOw0K PiArICAgICB0Y3BjaS0+ZGV2ID0gZGV2Ow0KPiArICAgICB0Y3BjaS0+ZGF0YSA9IGRhdGE7DQo+ ICsgICAgIHRjcGNpLT5yZWdtYXAgPSBkYXRhLT5yZWdtYXA7DQo+DQo+ICAgICAgIHRjcGNpLT50 Y3BjLmluaXQgPSB0Y3BjaV9pbml0Ow0KPiAgICAgICB0Y3BjaS0+dGNwYy5nZXRfdmJ1cyA9IHRj cGNpX2dldF92YnVzOyBAQCAtNDY3LDI3ICs1MDcsNjMgQEAgc3RhdGljDQo+IGludCB0Y3BjaV9w cm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50LA0KPg0KPiAgICAgICBlcnIgPSB0Y3BjaV9w YXJzZV9jb25maWcodGNwY2kpOw0KPiAgICAgICBpZiAoZXJyIDwgMCkNCj4gLSAgICAgICAgICAg ICByZXR1cm4gZXJyOw0KPiArICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKGVycik7DQo+ICsN Cj4gKyAgICAgdGNwY2ktPnBvcnQgPSB0Y3BtX3JlZ2lzdGVyX3BvcnQodGNwY2ktPmRldiwgJnRj cGNpLT50Y3BjKTsNCj4gKyAgICAgaWYgKFBUUl9FUlJfT1JfWkVSTyh0Y3BjaS0+cG9ydCkpDQo+ ICsgICAgICAgICAgICAgcmV0dXJuIEVSUl9DQVNUKHRjcGNpLT5wb3J0KTsNCj4NCj4gLSAgICAg LyogRGlzYWJsZSBjaGlwIGludGVycnVwdHMgKi8NCj4gLSAgICAgdGNwY2lfd3JpdGUxNih0Y3Bj aSwgVENQQ19BTEVSVF9NQVNLLCAwKTsNCj4gKyAgICAgcmV0dXJuIHRjcGNpOw0KPiArfQ0KPiAr RVhQT1JUX1NZTUJPTF9HUEwodGNwY2lfcmVnaXN0ZXJfcG9ydCk7DQo+ICsNCj4gK3ZvaWQgdGNw Y2lfdW5yZWdpc3Rlcl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kpIHsNCj4gKyAgICAgdGNwbV91 bnJlZ2lzdGVyX3BvcnQodGNwY2ktPnBvcnQpOw0KPiArfQ0KPiArRVhQT1JUX1NZTUJPTF9HUEwo dGNwY2lfdW5yZWdpc3Rlcl9wb3J0KTsNCj4NCj4gLSAgICAgZXJyID0gZGV2bV9yZXF1ZXN0X3Ro cmVhZGVkX2lycSh0Y3BjaS0+ZGV2LCBjbGllbnQtPmlycSwgTlVMTCwNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BjaV9pcnEsDQo+ICtzdGF0aWMgaW50IHRjcGNp X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsDQo+ICsgICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppMmNfaWQpIHsNCj4gKyAgICAgc3RydWN0IHRj cGNpX2NoaXAgKmNoaXA7DQo+ICsgICAgIGludCBlcnI7DQo+ICsgICAgIHUxNiB2YWwgPSAwOw0K PiArDQo+ICsgICAgIGNoaXAgPSBkZXZtX2t6YWxsb2MoJmNsaWVudC0+ZGV2LCBzaXplb2YoKmNo aXApLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgaWYgKCFjaGlwKQ0KPiArICAgICAgICAgICAgIHJl dHVybiAtRU5PTUVNOw0KPiArDQo+ICsgICAgIGNoaXAtPmRhdGEucmVnbWFwID0gZGV2bV9yZWdt YXBfaW5pdF9pMmMoY2xpZW50LA0KPiAmdGNwY2lfcmVnbWFwX2NvbmZpZyk7DQo+ICsgICAgIGlm IChJU19FUlIoY2hpcC0+ZGF0YS5yZWdtYXApKQ0KPiArICAgICAgICAgICAgIHJldHVybiBQVFJf RVJSKGNoaXAtPmRhdGEucmVnbWFwKTsNCj4gKw0KPiArICAgICAvKiBEaXNhYmxlIGNoaXAgaW50 ZXJydXB0cyBiZWZvcmUgcmVxdWVzdGluZyBpcnEgKi8NCj4gKyAgICAgZXJyID0gcmVnbWFwX3Jh d193cml0ZShjaGlwLT5kYXRhLnJlZ21hcCwgVENQQ19BTEVSVF9NQVNLLCAmdmFsLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1MTYpKTsNCj4gKyAgICAgaWYgKGVyciA8 IDApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gKw0KPiArICAgICBlcnIgPSBkZXZt X3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZjbGllbnQtPmRldiwgY2xpZW50LT5pcnEsIE5VTEwsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RjcGNpX2lycSwNCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUlFGX09ORVNIT1QgfCBJUlFGX1RS SUdHRVJfTE9XLA0KPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldl9u YW1lKHRjcGNpLT5kZXYpLCB0Y3BjaSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGV2X25hbWUoJmNsaWVudC0+ZGV2KSwgY2hpcCk7DQo+ICAgICAgIGlmIChlcnIg PCAwKQ0KPiAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+DQo+IC0gICAgIHRjcGNpLT5wb3J0 ID0gdGNwbV9yZWdpc3Rlcl9wb3J0KHRjcGNpLT5kZXYsICZ0Y3BjaS0+dGNwYyk7DQo+IC0gICAg IHJldHVybiBQVFJfRVJSX09SX1pFUk8odGNwY2ktPnBvcnQpOw0KPiArICAgICBjaGlwLT50Y3Bj aSA9IHRjcGNpX3JlZ2lzdGVyX3BvcnQoJmNsaWVudC0+ZGV2LCAmY2hpcC0+ZGF0YSk7DQo+ICsg ICAgIGlmIChQVFJfRVJSX09SX1pFUk8oY2hpcC0+dGNwY2kpKQ0KPiArICAgICAgICAgICAgIHJl dHVybiBQVFJfRVJSKGNoaXAtPnRjcGNpKTsNCj4gKw0KPiArICAgICBpMmNfc2V0X2NsaWVudGRh dGEoY2xpZW50LCBjaGlwKTsNCj4gKyAgICAgcmV0dXJuIDA7DQo+ICB9DQo+DQo+ICBzdGF0aWMg aW50IHRjcGNpX3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KSAgew0KPiAtICAgICBz dHJ1Y3QgdGNwY2kgKnRjcGNpID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+ICsgICAg IHN0cnVjdCB0Y3BjaV9jaGlwICpjaGlwID0gaTJjX2dldF9jbGllbnRkYXRhKGNsaWVudCk7DQo+ DQo+IC0gICAgIHRjcG1fdW5yZWdpc3Rlcl9wb3J0KHRjcGNpLT5wb3J0KTsNCj4gKyAgICAgdGNw Y2lfdW5yZWdpc3Rlcl9wb3J0KGNoaXAtPnRjcGNpKTsNCj4NCj4gICAgICAgcmV0dXJuIDA7DQo+ ICB9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHlwZWMvdGNwY2kuaCBiL2RyaXZl cnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oDQo+IGluZGV4IGZkZmIwNmMuLjQwMDI1YjIgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy90eXBlYy90Y3BjaS5oDQo+ICsrKyBiL2RyaXZlcnMv c3RhZ2luZy90eXBlYy90Y3BjaS5oDQo+IEBAIC01OSw2ICs1OSw3IEBADQo+ICAjZGVmaW5lIFRD UENfUE9XRVJfQ1RSTF9WQ09OTl9FTkFCTEUgQklUKDApDQo+DQo+ICAjZGVmaW5lIFRDUENfQ0Nf U1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAweDFkDQo+ICsjZGVmaW5lIFRDUENfQ0NfU1RB VFVTX0RSUFJTVCAgICAgICAgICAgICAgICBCSVQoNSkNCj4gICNkZWZpbmUgVENQQ19DQ19TVEFU VVNfVEVSTSAgICAgICAgICBCSVQoNCkNCj4gICNkZWZpbmUgVENQQ19DQ19TVEFUVVNfQ0MyX1NI SUZUICAgICAyDQo+ICAjZGVmaW5lIFRDUENfQ0NfU1RBVFVTX0NDMl9NQVNLICAgICAgICAgICAg ICAweDMNCj4gQEAgLTEyMSw0ICsxMjIsMTYgQEANCj4gICNkZWZpbmUgVENQQ19WQlVTX1ZPTFRB R0VfQUxBUk1fSElfQ0ZHICAgICAgICAgICAgICAgMHg3Ng0KPiAgI2RlZmluZSBUQ1BDX1ZCVVNf Vk9MVEFHRV9BTEFSTV9MT19DRkcgICAgICAgICAgICAgICAweDc4DQo+DQo+ICtzdHJ1Y3QgdGNw Y2k7DQo+ICtzdHJ1Y3QgdGNwY2lfZGF0YSB7DQo+ICsgICAgIHN0cnVjdCByZWdtYXAgKnJlZ21h cDsNCj4gKyAgICAgaW50ICgqaW5pdCkoc3RydWN0IHRjcGNpICp0Y3BjaSwgc3RydWN0IHRjcGNp X2RhdGEgKmRhdGEpOw0KPiArICAgICBpbnQgKCpzZXRfdmNvbm4pKHN0cnVjdCB0Y3BjaSAqdGNw Y2ksIHN0cnVjdCB0Y3BjaV9kYXRhICpkYXRhLA0KPiArICAgICAgICAgICAgICAgICAgICAgIGJv b2wgZW5hYmxlKTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCB0Y3BjaSAqdGNwY2lfcmVnaXN0ZXJf cG9ydChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCB0Y3BjaV9kYXRhDQo+ICsqZGF0YSk7IHZv aWQgdGNwY2lfdW5yZWdpc3Rlcl9wb3J0KHN0cnVjdCB0Y3BjaSAqdGNwY2kpOyBpcnFyZXR1cm5f dA0KPiArdGNwY2lfaXJxKHN0cnVjdCB0Y3BjaSAqdGNwY2kpOw0KPiArDQo+ICAjZW5kaWYgLyog X19MSU5VWF9VU0JfVENQQ0lfSCAqLw0KPiAtLQ0KPiAxLjkuMQ0KPg0KPiAtLQ0KPiBUbyB1bnN1 YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgbGludXgt dXNiIiBpbiB0aGUNCj4gYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21vQHZnZXIua2VybmVs Lm9yZyBNb3JlIG1ham9yZG9tbyBpbmZvIGF0DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5w cm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRnZnZXINCj4gLmtlcm5lbC5v cmclMkZtYWpvcmRvbW8taW5mby5odG1sJmRhdGE9MDIlN0MwMSU3Q2p1bi5saSU0MG54cC5jb20N Cj4gJTdDNDRkMTFhZjI3ZTAyNDRmYTRkMTEwOGQ1NzkzYzNkYzQlN0M2ODZlYTFkM2JjMmI0YzZm YTkyY2Q5OWMNCj4gNWMzMDE2MzUlN0MwJTdDMSU3QzYzNjU0ODIyMjAwODkwNTIwNiZzZGF0YT16 bjJvdWdLUnZzJTJCYm1IDQo+IFFnMmM4UmpqN3ZOZTBaaWlWS2RhcjdHZFBhJTJCM28lM0QmcmVz ZXJ2ZWQ9MA0KKioqKioqKioqKioqKiBFbWFpbCBDb25maWRlbnRpYWxpdHkgTm90aWNlICoqKioq KioqKioqKioqKioqKioqDQoNClRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhpcyBlLW1h aWwgbWVzc2FnZSAoaW5jbHVkaW5nIGFueSBhdHRhY2htZW50cykgbWF5IGJlIGNvbmZpZGVudGlh bCwgcHJvcHJpZXRhcnksIHByaXZpbGVnZWQsIG9yIG90aGVyd2lzZSBleGVtcHQgZnJvbSBkaXNj bG9zdXJlIHVuZGVyIGFwcGxpY2FibGUgbGF3cy4gSXQgaXMgaW50ZW5kZWQgdG8gYmUgY29udmV5 ZWQgb25seSB0byB0aGUgZGVzaWduYXRlZCByZWNpcGllbnQocykuIEFueSB1c2UsIGRpc3NlbWlu YXRpb24sIGRpc3RyaWJ1dGlvbiwgcHJpbnRpbmcsIHJldGFpbmluZyBvciBjb3B5aW5nIG9mIHRo aXMgZS1tYWlsIChpbmNsdWRpbmcgaXRzIGF0dGFjaG1lbnRzKSBieSB1bmludGVuZGVkIHJlY2lw aWVudChzKSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkIGFuZCBtYXkgYmUgdW5sYXdmdWwuIElmIHlv dSBhcmUgbm90IGFuIGludGVuZGVkIHJlY2lwaWVudCBvZiB0aGlzIGUtbWFpbCwgb3IgYmVsaWV2 ZSB0aGF0IHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgZS1tYWlsIGluIGVycm9yLCBwbGVhc2Ugbm90 aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgKGJ5IHJlcGx5aW5nIHRvIHRoaXMgZS1tYWlsKSwg ZGVsZXRlIGFueSBhbmQgYWxsIGNvcGllcyBvZiB0aGlzIGUtbWFpbCAoaW5jbHVkaW5nIGFueSBh dHRhY2htZW50cykgZnJvbSB5b3VyIHN5c3RlbSwgYW5kIGRvIG5vdCBkaXNjbG9zZSB0aGUgY29u dGVudCBvZiB0aGlzIGUtbWFpbCB0byBhbnkgb3RoZXIgcGVyc29uLiBUaGFuayB5b3UhDQo=