Re: [PATCH v2 3/4] phy: rockchip-samsung-dcphy: model TX and RX as separate PHYs
楊智成 <[email protected]> Tue, 4 Aug 2026 13:38:40 +0800
| Newsgroups | org.infradead.lists.linux-rockchip,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-phy,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAPwA33Jnp6N7a=2tcrgEzFxXRpbxEO25ktrRDiea--9Uy5upNQ@mail.gmail.com> |
SGkgTWljaGFlbCwKClRoYW5rcyBmb3IgdGhlIHJldmlldy4KCj4gVGhpcyBtYXkgYmUgYmlrZS1z aGVkZGluZywgYnV0IEkgYW0gbm90IGEgYmlnIGZhbiBvZiB0aGUgbm90aW9uIG9mCj4gImRpcmVj dGlvbiIuIFRoaXMgaXMgYSBjb21ibyBQSFkgdGhhdCBpbiBlc3NlbmNlIGNvbnRhaW5zIGRpZmZl cmVudAo+IFBIWXMsIHNvIHdoeSBub3QgY2FsbCB0aGlzICJzYW1zdW5nX21pcGlfcGh5IiBvciBz b21ldGhpbmc/Cj4KPiAgICAgICAgIHN0cnVjdCBzYW1zdW5nX21pcGlfcGh5IHBoeXNbMl07Cj4K PiB3aGljaCBzZWVtcyBjbGVhbiBhbmQgc2ltcGxlIHRvIG1lLgoKVGhhdCByZWFkcyBiZXR0ZXIg LSB0aGUgcGVyLVBIWSBzdHJ1Y3R1cmUgYmVjb21lcyBzYW1zdW5nX21pcGlfcGh5LgoKVGFraW5n IHlvdXIgb3RoZXIgbmFtaW5nIGNvbW1lbnQgdG9nZXRoZXIgd2l0aCB0aGlzIG9uZToKCj4gQWdh aW4sIHRoaXMgbWF5IGJlIGJpa2Utc2hlZGRpbmcsIGJ1dCAicGQiIHNlZW1zIG1pc2xlYWRpbmcg dG8gbWUuCj4gUGxlYXNlIHJlY29uc2lkZXIgdGhlIG5hbWluZy4gTWF5YmUgInNhbXN1bmdfcGh5 IiBmb3IgdGhlIGluZGl2aWR1YWwKPiBQSFkgYW5kICJzYW1zdW5nIiBmb3IgdGhlIGNvbXBsZXRl IGNvbWJvIFBIWT8KClN1cmUsICJwZCIgYmVjb21lcyAic2Ftc3VuZ19waHkiLgoKPiBUaGlzIGFw cHJvYWNoIHdpdGggdGhlICJmaXJzdCIgdmFyaWFibGUgc2VlbXMgdW5pbnR1aXRpdmUuIElmIHlv dSBuZWVkCj4gcmVmZXJlbmNlIGNvdW50aW5nIG9uIHRoZSBCSUFTIGJsb2NrLCB0aGVuIHVzZSBh IHN0YXRlIHZhcmlhYmxlCj4gImJpYXNfcG93ZXJlZCIsIHVzZSBhIG11dGV4IHRoYXQgcHJvdGVj dHMgaXQsIGFuZCBjYWxsCj4gc2Ftc3VuZ19taXBpX2RjcGh5X2JpYXNfYmxvY2tfe2VuLGRpc31h YmxlIChmcm9tCj4gc2Ftc3VuZ19taXBpX2RjcGh5X3Bvd2Vye29uLCBvZmZ9KSB1bmNvbmRpdGlv bmFsbHkuIFRob3NlIG1ldGhvZHMgc2hhbGwKPiBhY3F1aXJlIHRoZSBtdXRleCwgY2hlY2sgdGhl IHN0YXRlIHZhcmlhYmxlLCB7ZW4sZGlzfWFibGUgdGhlIEJJQVMKPiBibG9jaywgc2V0IHRoZSBz dGF0ZSB2YXJpYWJsZSBhY2NvcmRpbmdseSwgcmVsZWFzZSB0aGUgbXV0ZXguCj4KPiBbLi4uXQo+ Cj4gTm90IHN1cmUgd2hldGhlciB5b3UgYWN0dWFsbHkgbmVlZCB0byB0cmFjayB0aGUgcG93ZXIg c3RhdHVzIG9mIHRoZQo+IGluZGl2aWR1YWwgUEhZcyAobWF5YmUgeW91IGFjdHVhbGx5IG5lZWQg dG8gdHJhY2sgdGhlIEJJQVMgYmxvY2sgc3RhdHVzCj4gYWxvbmUpIGJ1dCBhbnl3YXkgSSB3b3Vs ZCBhcHByZWNpYXRlIGlmCj4gInNhbXN1bmdfbWlwaV9kcGh5X3R4X3Bvd2VyX3tvbixvZmZ9IiB3 b3VsZCBzZXQgdGhlICJwZC0+cG93ZXJlZCIKPiB2YXJpYWJsZS4KCkJvdGggb2YgdGhlc2UgbGVh ZCB0byB0aGUgc2FtZSBjaGFuZ2UuIFlvdSBhcmUgcmlnaHQgdG8gYmUgdW5zdXJlCmFib3V0IHRo ZSBwZXItUEhZIGZsYWcgLSBJIGNoZWNrZWQsIGFuZCBpdHMgb25seSByZWFkZXJzIGFyZSB0aGUg dHdvCiJmaXJzdCIgY29tcHV0YXRpb25zLCB3aGljaCBvbmx5IGRlY2lkZSBhYm91dCB0aGUgc2hh cmVkIGJsb2NrLiBTbyB0aGUKdHdvIGZsYWdzIGJlY29tZSBvbmUgY291bnQgaW4gdGhlIHBhcmVu dCwgdGFrZW4gYW5kIGRyb3BwZWQgaW5zaWRlCnNhbXN1bmdfbWlwaV9kcGh5X3t0eCxyeH1fcG93 ZXJfe29uLG9mZn0sIGFuZCB0aGUgImZpcnN0IiBjb21wdXRhdGlvbnMKZ28gYXdheS4gSSB3ZW50 IGZvciBhIGNvdW50IHJhdGhlciB0aGFuIGEgc2luZ2xlIGZsYWcgYmVjYXVzZSB0aGUKcmVsZWFz ZSBzaWRlIGhhcyB0byBkaXN0aW5ndWlzaCAidGhlIG90aGVyIGRpcmVjdGlvbiBpcyBzdGlsbCB1 c2luZwppdCIgZnJvbSAibm9ib2R5IGlzIGxlZnQiLgoKVGhlIHNoYXJlZC1ibG9jayBoZWxwZXIg d2lsbCB1c2UgbG9ja2RlcF9hc3NlcnRfaGVsZCgpIHJhdGhlciB0aGFuCnRha2UgdGhlIG11dGV4 IGl0c2VsZiwgc2luY2Ugc2Ftc3VuZ19taXBpX2RjcGh5X3Bvd2VyX3tvbixvZmZ9IGFscmVhZHkK aG9sZCBpdCwgYXMgeW91IG5vdGVkLgoKT25lIHRoaW5nIEkgYW0gdW5zdXJlIGFib3V0IGlzIHRo ZSBlbmFibGUvZGlzYWJsZSBwYWlyaW5nLiBJIGNvdWxkIG5vdApmaW5kIGFuIGVuYWJsZSBmb3Ig dGhpcyBibG9jayAtIHRoZSBmb3VyIEJJQVMgcmVnaXN0ZXJzIG9ubHkgc2VsZWN0CmJpYXMgY3Vy cmVudHMsIHJlZmVyZW5jZSB2b2x0YWdlcywgdGhlIEhTIG91dHB1dCBsZXZlbCBhbmQgdGhlIEJH UgpjaG9wcGVyIGRpdmlkZXIsIHdoaWxlIFBMTF9DT04wIGluIHRoZSBzYW1lIGNvbW1vbiBibG9j ayBkb2VzIGhhdmUgYQpQTExfRU4uIElmIHRoYXQgcmVhZGluZyBpcyByaWdodCwgdGhlcmUgaXMg bm90aGluZyB0byB0dXJuIG9mZiBhbmQgdGhlCnJlbGVhc2Ugc2lkZSB3b3VsZCBvbmx5IGRyb3Ag dGhlIGNvdW50IC0gaW4gd2hpY2ggY2FzZSBtYXliZSB0aGUKImVuYWJsZSIgbmFtZSBpcyB3b3J0 aCByZXZpc2l0aW5nIGFzIHdlbGwuIERvZXMgdGhhdCBtYXRjaCB5b3VyCnVuZGVyc3RhbmRpbmcg b2YgdGhpcyBibG9jaz8KClNlcGFyYXRlbHksIEkgbm90aWNlZCAiZmlyc3QiIGFsc28gZ3VhcmRz IHRoZSBBUEIgcmVzZXQsIGFuZCBvbmx5IGluCnRoZSB0cmFuc21pdHRlciBwYXRoIC0gb25jZSA0 LzQgZW5hYmxlcyB0aGUgcmVjZWl2ZXIsIGEgcmVjZWl2ZXItZmlyc3QKcG93ZXItb24gZG9lcyBu b3QgZ2V0IG9uZS4gSSBwbGFuIHRvIG1vdmUgaXQgaW50byB0aGUgc2FtZSBzaGFyZWQtYmxvY2sK cGF0aCBzbyBib3RoIGRpcmVjdGlvbnMgYmVoYXZlIHRoZSBzYW1lLCBhbmQgY2hlY2sgYm90aCBw b3dlci1vbgpvcmRlcnMgb24gdGhlIGJvYXJkIGJlZm9yZSBzZW5kaW5nIHYzLgoKSSB3b3VsZCBs aWtlIHRvIGZvbGQgYWxsIG9mIHRoaXMgaW50byB2MyB0b2dldGhlciB3aXRoIHdoYXRldmVyIGNv bWVzCm91dCBvZiB0aGUgUEhZX1RZUEVfQ1NJL1BIWV9UWVBFX0RTSSBkaXNjdXNzaW9uIGluIHBh dGNoIDEvNCwgc2luY2UKdGhhdCBkZWNpZGVzIGhvdyB0aGUgdHdvIFBIWXMgYXJlIHRvbGQgYXBh cnQuCgpUaGFua3MsCkphc29uCgoKTWljaGFlbCBSaWVzY2ggPG1pY2hhZWwucmllc2NoQGNvbGxh Ym9yYS5jb20+IOaWvCAyMDI25bm0OOaciDPml6XpgLHkuIAg5LiL5Y2IODowNeWvq+mBk++8mgo+ Cj4gSGkgSmFzb24sCj4KPiBUaGFua3MgZm9yIHRoZSBwYXRjaCEKPgo+IE9uIDcvMjYvMjYgMTY6 NTUsIEphc29uIFlhbmcgdmlhIEI0IFJlbGF5IHdyb3RlOgo+ID4gRnJvbTogSmFzb24gWWFuZyA8 amFzb245ODE2NkBnbWFpbC5jb20+Cj4gPgo+ID4gVGhlIERDLVBIWSBkcml2ZXMgYSBNSVBJIERT SSB0cmFuc21pdHRlciBhbmQgYSBNSVBJIENTSSByZWNlaXZlciwgYW5kIG9uCj4gPiBSSzM1ODgg Ym90aCBjYW4gYmUgd2lyZWQgdG8gdGhlIHNhbWUgUEhZIGFzIGluZGVwZW5kZW50IGNvbnN1bWVy cy4gVGhlCj4gPiBQSFkgY29yZSByZWZlcmVuY2UtY291bnRzIHBvd2VyX29uKCkgcGVyIHN0cnVj dCBwaHksIHNvIGEgc2luZ2xlIHN0cnVjdAo+ID4gcGh5IGNhbm5vdCBicmluZyB0aGUgdHdvIGRp cmVjdGlvbnMgdXAgaW5kZXBlbmRlbnRseS4KPiA+Cj4gPiBSZWdpc3RlciBvbmUgc3RydWN0IHBo eSBwZXIgZGlyZWN0aW9uIGFuZCBtb3ZlIHRoZSBwZXItZGlyZWN0aW9uIHN0YXRlCj4gPiAoZGly ZWN0aW9uLCBQSFkgdHlwZSwgbGFuZSBjb3VudCBhbmQgcG93ZXJlZCBmbGFnKSBpbnRvIGl0cyBv d24gZHJpdmVyCj4gPiBkYXRhLiBvZl94bGF0ZSgpIGFjY2VwdHMgdGhlIGxlZ2FjeSBzaW5nbGUg Y2VsbCBhcyB0aGUgdHJhbnNtaXR0ZXIgYW5kCj4gPiBhbiBvcHRpb25hbCBzZWNvbmQgY2VsbCB0 aGF0IHNlbGVjdHMgdGhlIGRpcmVjdGlvbiwgc28gZXhpc3RpbmcKPiA+IHNpbmdsZS1jZWxsIERT SSBkZXZpY2UgdHJlZXMga2VlcCByZXNvbHZpbmcgdG8gdGhlIHRyYW5zbWl0dGVyLgo+ID4gY29u ZmlndXJlKCkgcmVqZWN0cyB0aGUgbm90IHlldCBzdXBwb3J0ZWQgcmVjZWl2ZXIgYmVmb3JlIHRv dWNoaW5nIGFueQo+ID4gc3RhdGUsIGFuZCBlYWNoIGRpcmVjdGlvbiBrZWVwcyBpdHMgb3duIGxh bmUgY291bnQuCj4gPgo+ID4gVGhlIFBIWSdzIGNvbW1vbiBibG9jayBjb250YWlucyBhIHNpbmds ZSBCSUFTIGJsb2NrIHNoYXJlZCBieSBib3RoCj4gPiBkaXJlY3Rpb25zIChSSzM1ODggVFJNIHNl Y3Rpb24gMjIuMiksIHNvIGl0IG11c3QgYmUgcHJvZ3JhbW1lZCBvbmx5Cj4gPiBvbmNlLiBXaGlj aGV2ZXIgZGlyZWN0aW9uIHBvd2VycyBvbiBmaXJzdCBlbmFibGVzIGl0OyBlYWNoIGRpcmVjdGlv bgo+ID4gcmVjb3JkcyBpdHMgcG93ZXJlZCBzdGF0ZSB1bmRlciB0aGUgcGVyLXByb3ZpZGVyIG11 dGV4IHNvIHRoYXQgcG93ZXJpbmcKPiA+IG9uZSBkaXJlY3Rpb24gb24gZG9lcyBub3QgZGlzdHVy YiBhbiBhbHJlYWR5IHJ1bm5pbmcgb25lLiBUaGUgQVBCIHJlc2V0Cj4gPiBpcyBpc3N1ZWQgb24g dGhlIHRyYW5zbWl0dGVyIGJyaW5nLXVwIHBhdGguCj4gPiBUaGUgcmVjZWl2ZXIgYnJpbmctdXAg aXRzZWxmIGlzIGFkZGVkIGluIGEgbGF0ZXIgY2hhbmdlLgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6 IEphc29uIFlhbmcgPGphc29uOTgxNjZAZ21haWwuY29tPgo+ID4gQXNzaXN0ZWQtYnk6IENsYXVk ZTpjbGF1ZGUtb3B1cy00LTgKPiA+IC0tLQo+ID4gIGRyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1y b2NrY2hpcC1zYW1zdW5nLWRjcGh5LmMgfCAxNDMgKysrKysrKysrKysrKysrLS0tLS0tLQo+ID4g IDEgZmlsZSBjaGFuZ2VkLCAxMDIgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCj4gPgo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1zYW1zdW5n LWRjcGh5LmMgYi9kcml2ZXJzL3BoeS9yb2NrY2hpcC9waHktcm9ja2NoaXAtc2Ftc3VuZy1kY3Bo eS5jCj4gPiBpbmRleCBkMGQ3NzQyMWJkNGIuLjk1ZWIxMjAwY2FiNCAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1zYW1zdW5nLWRjcGh5LmMKPiA+ICsr KyBiL2RyaXZlcnMvcGh5L3JvY2tjaGlwL3BoeS1yb2NrY2hpcC1zYW1zdW5nLWRjcGh5LmMKPiA+ IEBAIC01LDYgKzUsNyBAQAo+ID4gICAqICAgICAgR3VvY2h1biBIdWFuZyA8aGVyby5odWFuZ0By b2NrLWNoaXBzLmNvbT4KPiA+ICAgKi8KPiA+Cj4gPiArI2luY2x1ZGUgPGR0LWJpbmRpbmdzL3Bo eS9yb2NrY2hpcCxyazM1ODgtbWlwaS1kY3BoeS5oPgo+ID4gICNpbmNsdWRlIDxkdC1iaW5kaW5n cy9waHkvcGh5Lmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L2JpdGZpZWxkLmg+Cj4gPiAgI2luY2x1 ZGUgPGxpbnV4L2Nsay5oPgo+ID4gQEAgLTEzLDYgKzE0LDcgQEAKPiA+ICAjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L21mZC9zeXNjb24uaD4KPiA+ICAjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gPiAg I2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KPiA+ ICAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gPiBAQCAtMjgwLDYgKzI4Miwx OSBAQCBzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5X3BsYXRfZGF0YSB7Cj4gPiAgICAgICB1MzIg ZHBoeV90eF9tYXhfbGFuZV9rYnBzOwo+ID4gIH07Cj4gPgo+ID4gK3N0cnVjdCBzYW1zdW5nX21p cGlfZGNwaHk7Cj4gPiArCj4gPiArLyogT25lIFBIWSBwZXIgZGlyZWN0aW9uOiB0cmFuc21pdHRl ciAoRFNJKSBhbmQgcmVjZWl2ZXIgKENTSSkuICovCj4gPiArc3RydWN0IHNhbXN1bmdfbWlwaV9k Y3BoeV9kaXIgewo+Cj4gVGhpcyBtYXkgYmUgYmlrZS1zaGVkZGluZywgYnV0IEkgYW0gbm90IGEg YmlnIGZhbiBvZiB0aGUgbm90aW9uIG9mCj4gImRpcmVjdGlvbiIuIFRoaXMgaXMgYSBjb21ibyBQ SFkgdGhhdCBpbiBlc3NlbmNlIGNvbnRhaW5zIGRpZmZlcmVudAo+IFBIWXMsIHNvIHdoeSBub3Qg Y2FsbCB0aGlzICJzYW1zdW5nX21pcGlfcGh5IiBvciBzb21ldGhpbmc/Cj4KPiA+ICsgICAgIHN0 cnVjdCBwaHkgKnBoeTsKPiA+ICsgICAgIHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHkgKnBhcmVu dDsKPiA+ICsgICAgIHU4IGRpcjsKPiA+ICsgICAgIHU4IHR5cGU7Cj4gPiArICAgICB1bnNpZ25l ZCBpbnQgbGFuZXM7Cj4gPiArICAgICAvKiBXcml0dGVuIHVuZGVyIHRoZSBwYXJlbnQncyBsb2Nr LiAqLwo+ID4gKyAgICAgYm9vbCBwb3dlcmVkOwo+ID4gK307Cj4gPiArCj4gPiAgc3RydWN0IHNh bXN1bmdfbWlwaV9kY3BoeSB7Cj4gPiAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gPiAgICAg ICBzdHJ1Y3QgY2xrICpyZWZfY2xrOwo+ID4gQEAgLTI5MCw5ICszMDUsOSBAQCBzdHJ1Y3Qgc2Ft c3VuZ19taXBpX2RjcGh5IHsKPiA+ICAgICAgIHN0cnVjdCByZXNldF9jb250cm9sICpzX3BoeV9y c3Q7Cj4gPiAgICAgICBzdHJ1Y3QgcmVzZXRfY29udHJvbCAqYXBiX3JzdDsKPiA+ICAgICAgIHN0 cnVjdCByZXNldF9jb250cm9sICpncmZfYXBiX3JzdDsKPiA+IC0gICAgIHVuc2lnbmVkIGludCBs YW5lczsKPiA+IC0gICAgIHN0cnVjdCBwaHkgKnBoeTsKPiA+IC0gICAgIHU4IHR5cGU7Cj4gPiAr ICAgICBzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5X2RpciBwaHlzWzJdOwo+Cj4gVGhpcyB3b3Vs ZCBsb29rIGxpa2UgdGhpcyB0aGVuOgo+Cj4gICAgICAgICBzdHJ1Y3Qgc2Ftc3VuZ19taXBpX3Bo eSBwaHlzWzJdOwo+Cj4gd2hpY2ggc2VlbXMgY2xlYW4gYW5kIHNpbXBsZSB0byBtZS4KPgo+ID4g KyAgICAgLyogU2VyaWFsaXNlcyB0aGUgdHdvIGRpcmVjdGlvbnMnIGFjY2VzcyB0byB0aGUgc2hh cmVkIFBIWSBzdGF0ZS4gKi8KPiA+ICsgICAgIHN0cnVjdCBtdXRleCBsb2NrOwo+ID4KPiA+ICAg ICAgIGNvbnN0IHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHlfcGxhdF9kYXRhICpwZGF0YTsKPiA+ ICAgICAgIHN0cnVjdCB7Cj4gPiBAQCAtOTk1LDcgKzEwMTAsNyBAQCBzdGF0aWMgdm9pZCBzYW1z dW5nX21pcGlfZHBoeV9sYW5lX2VuYWJsZShzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5ICpzYW1z dW5nKQo+ID4gICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKHNhbXN1bmctPnJlZ21hcCwgRFBIWV9N Q19HTlJfQ09OMCwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICBQSFlfRU5BQkxFLCBQSFlf RU5BQkxFKTsKPiA+Cj4gPiAtICAgICBzd2l0Y2ggKHNhbXN1bmctPmxhbmVzKSB7Cj4gPiArICAg ICBzd2l0Y2ggKHNhbXN1bmctPnBoeXNbUktfRENQSFlfRElSX1RYXS5sYW5lcykgewo+ID4gICAg ICAgY2FzZSA0Ogo+ID4gICAgICAgICAgICAgICByZWdtYXBfd3JpdGUoc2Ftc3VuZy0+cmVnbWFw LCBEUEhZX01EM19HTlJfQ09OMSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfUEhZ X1JFQURZKDB4MjAwMCkpOwo+ID4gQEAgLTEwMjYsNyArMTA0MSw3IEBAIHN0YXRpYyB2b2lkIHNh bXN1bmdfbWlwaV9kcGh5X2xhbmVfZW5hYmxlKHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHkgKnNh bXN1bmcpCj4gPgo+ID4gIHN0YXRpYyB2b2lkIHNhbXN1bmdfbWlwaV9kcGh5X2xhbmVfZGlzYWJs ZShzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5ICpzYW1zdW5nKQo+ID4gIHsKPiA+IC0gICAgIHN3 aXRjaCAoc2Ftc3VuZy0+bGFuZXMpIHsKPiA+ICsgICAgIHN3aXRjaCAoc2Ftc3VuZy0+cGh5c1tS S19EQ1BIWV9ESVJfVFhdLmxhbmVzKSB7Cj4gPiAgICAgICBjYXNlIDQ6Cj4gPiAgICAgICAgICAg ICAgIHJlZ21hcF91cGRhdGVfYml0cyhzYW1zdW5nLT5yZWdtYXAsIERQSFlfTUQzX0dOUl9DT04w LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEhZX0VOQUJMRSwgMCk7Cj4g PiBAQCAtMTMzNCwxMSArMTM0OSwyMyBAQCBzYW1zdW5nX21pcGlfZHBoeV9kYXRhX2xhbmVfdGlt aW5nX2luaXQoc3RydWN0IHNhbXN1bmdfbWlwaV9kY3BoeSAqc2Ftc3VuZykKPiA+Cj4gPiAgc3Rh dGljIGludCBzYW1zdW5nX21pcGlfZHBoeV90eF9wb3dlcl9vbihzdHJ1Y3Qgc2Ftc3VuZ19taXBp X2RjcGh5ICpzYW1zdW5nKQo+ID4gIHsKPiA+ICsgICAgIGJvb2wgZmlyc3QgPSAhc2Ftc3VuZy0+ cGh5c1tSS19EQ1BIWV9ESVJfUlhdLnBvd2VyZWQ7Cj4KPiBOb3RlIHRvIG15c2VsZjogdGhlIGxv Y2sgaXMgYWNxdWlyZWQgaW4gdGhlIGNhbGxpbmcgbWV0aG9kLCBhbGwgaXMgd2VsbC4KPgo+ID4g ICAgICAgaW50IHJldDsKPiA+Cj4gPiArICAgICAvKgo+ID4gKyAgICAgICogVGhlIHNoYXJlZCBC SUFTIGJsb2NrIGlzIGJyb3VnaHQgdXAgYnkgd2hpY2hldmVyIGRpcmVjdGlvbiBwb3dlcnMKPiA+ ICsgICAgICAqIG9uIGZpcnN0LCBsZWF2aW5nIGFuIGFscmVhZHkgYWN0aXZlIHBlZXIgdW5kaXN0 dXJiZWQuCj4gPiArICAgICAgKi8KPiA+ICsgICAgIGlmIChmaXJzdCkgewo+ID4gKyAgICAgICAg ICAgICByZXNldF9jb250cm9sX2Fzc2VydChzYW1zdW5nLT5hcGJfcnN0KTsKPiA+ICsgICAgICAg ICAgICAgdWRlbGF5KDEpOwo+ID4gKyAgICAgICAgICAgICByZXNldF9jb250cm9sX2RlYXNzZXJ0 KHNhbXN1bmctPmFwYl9yc3QpOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gICAgICAgcmVzZXRfY29u dHJvbF9hc3NlcnQoc2Ftc3VuZy0+bV9waHlfcnN0KTsKPiA+Cj4gPiAtICAgICBzYW1zdW5nX21p cGlfZGNwaHlfYmlhc19ibG9ja19lbmFibGUoc2Ftc3VuZyk7Cj4gPiArICAgICBpZiAoZmlyc3Qp Cj4gPiArICAgICAgICAgICAgIHNhbXN1bmdfbWlwaV9kY3BoeV9iaWFzX2Jsb2NrX2VuYWJsZShz YW1zdW5nKTsKPgo+IFRoaXMgYXBwcm9hY2ggd2l0aCB0aGUgImZpcnN0IiB2YXJpYWJsZSBzZWVt cyB1bmludHVpdGl2ZS4gSWYgeW91IG5lZWQKPiByZWZlcmVuY2UgY291bnRpbmcgb24gdGhlIEJJ QVMgYmxvY2ssIHRoZW4gdXNlIGEgc3RhdGUgdmFyaWFibGUKPiAiYmlhc19wb3dlcmVkIiwgdXNl IGEgbXV0ZXggdGhhdCBwcm90ZWN0cyBpdCwgYW5kIGNhbGwKPiBzYW1zdW5nX21pcGlfZGNwaHlf Ymlhc19ibG9ja197ZW4sZGlzfWFibGUgKGZyb20KPiBzYW1zdW5nX21pcGlfZGNwaHlfcG93ZXJ7 b24sIG9mZn0pIHVuY29uZGl0aW9uYWxseS4gVGhvc2UgbWV0aG9kcyBzaGFsbAo+IGFjcXVpcmUg dGhlIG11dGV4LCBjaGVjayB0aGUgc3RhdGUgdmFyaWFibGUsIHtlbixkaXN9YWJsZSB0aGUgQklB Uwo+IGJsb2NrLCBzZXQgdGhlIHN0YXRlIHZhcmlhYmxlIGFjY29yZGluZ2x5LCByZWxlYXNlIHRo ZSBtdXRleC4KPgo+Cj4gPiAgICAgICBzYW1zdW5nX21pcGlfZGNwaHlfcGxsX2NvbmZpZ3VyZShz YW1zdW5nKTsKPiA+ICAgICAgIHNhbXN1bmdfbWlwaV9kcGh5X2Nsa19sYW5lX3RpbWluZ19pbml0 KHNhbXN1bmcpOwo+ID4gICAgICAgc2Ftc3VuZ19taXBpX2RwaHlfZGF0YV9sYW5lX3RpbWluZ19p bml0KHNhbXN1bmcpOwo+ID4gQEAgLTEzNjgsMzQgKzEzOTUsNDQgQEAgc3RhdGljIGludCBzYW1z dW5nX21pcGlfZHBoeV90eF9wb3dlcl9vZmYoc3RydWN0IHNhbXN1bmdfbWlwaV9kY3BoeSAqc2Ft c3VuZykKPiA+Cj4gPiAgc3RhdGljIGludCBzYW1zdW5nX21pcGlfZGNwaHlfcG93ZXJfb24oc3Ry dWN0IHBoeSAqcGh5KQo+ID4gIHsKPiA+IC0gICAgIHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHkg KnNhbXN1bmcgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiA+IC0KPiA+IC0gICAgIHJlc2V0X2Nv bnRyb2xfYXNzZXJ0KHNhbXN1bmctPmFwYl9yc3QpOwo+ID4gLSAgICAgdWRlbGF5KDEpOwo+ID4g LSAgICAgcmVzZXRfY29udHJvbF9kZWFzc2VydChzYW1zdW5nLT5hcGJfcnN0KTsKPiA+ICsgICAg IHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHlfZGlyICpwZCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkp Owo+Cj4gQWdhaW4sIHRoaXMgbWF5IGJlIGJpa2Utc2hlZGRpbmcsIGJ1dCAicGQiIHNlZW1zIG1p c2xlYWRpbmcgdG8gbWUuCj4gUGxlYXNlIHJlY29uc2lkZXIgdGhlIG5hbWluZy4gTWF5YmUgInNh bXN1bmdfcGh5IiBmb3IgdGhlIGluZGl2aWR1YWwgUEhZCj4gYW5kICJzYW1zdW5nIiBmb3IgdGhl IGNvbXBsZXRlIGNvbWJvIFBIWT8gT3IgInBoeV9kYXRhIiBhbmQKPiAiZGNwaHlfZGF0YSI/IC4u Lj8KPgo+ID4gKyAgICAgc3RydWN0IHNhbXN1bmdfbWlwaV9kY3BoeSAqc2Ftc3VuZyA9IHBkLT5w YXJlbnQ7Cj4gPiArICAgICBpbnQgcmV0Owo+ID4KPiA+IC0gICAgIHN3aXRjaCAoc2Ftc3VuZy0+ dHlwZSkgewo+ID4gLSAgICAgY2FzZSBQSFlfVFlQRV9EUEhZOgo+ID4gLSAgICAgICAgICAgICBy ZXR1cm4gc2Ftc3VuZ19taXBpX2RwaHlfdHhfcG93ZXJfb24oc2Ftc3VuZyk7Cj4gPiAtICAgICBk ZWZhdWx0Ogo+ID4gLSAgICAgICAgICAgICAvKiBDUEhZIHBhcnQgdG8gYmUgaW1wbGVtZW50ZWQg bGF0ZXIgKi8KPiA+ICsgICAgIGlmIChwZC0+dHlwZSAhPSBQSFlfVFlQRV9EUEhZKQo+ID4gICAg ICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICB9Cj4gPgo+ID4gLSAgICAg cmV0dXJuIDA7Cj4gPiArICAgICBtdXRleF9sb2NrKCZzYW1zdW5nLT5sb2NrKTsKPiA+ICsgICAg IGlmIChwZC0+ZGlyID09IFJLX0RDUEhZX0RJUl9SWCkKPiA+ICsgICAgICAgICAgICAgcmV0ID0g LUVPUE5PVFNVUFA7Cj4gPiArICAgICBlbHNlCj4gPiArICAgICAgICAgICAgIHJldCA9IHNhbXN1 bmdfbWlwaV9kcGh5X3R4X3Bvd2VyX29uKHNhbXN1bmcpOwo+ID4gKyAgICAgaWYgKCFyZXQpCj4g PiArICAgICAgICAgICAgIHBkLT5wb3dlcmVkID0gdHJ1ZTsKPgo+IE5vdCBzdXJlIHdoZXRoZXIg eW91IGFjdHVhbGx5IG5lZWQgdG8gdHJhY2sgdGhlIHBvd2VyIHN0YXR1cyBvZiB0aGUKPiBpbmRp dmlkdWFsIFBIWXMgKG1heWJlIHlvdSBhY3R1YWxseSBuZWVkIHRvIHRyYWNrIHRoZSBCSUFTIGJs b2NrIHN0YXR1cwo+IGFsb25lKSBidXQgYW55d2F5IEkgd291bGQgYXBwcmVjaWF0ZSBpZgo+ICJz YW1zdW5nX21pcGlfZHBoeV90eF9wb3dlcl97b24sb2ZmfSIgd291bGQgc2V0IHRoZSAicGQtPnBv d2VyZWQiIHZhcmlhYmxlLgo+Cj4gQmVzdCByZWdhcmRzLAo+IE1pY2hhZWwKPgo+Cj4gPiArICAg ICBtdXRleF91bmxvY2soJnNhbXN1bmctPmxvY2spOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIHJl dDsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbnQgc2Ftc3VuZ19taXBpX2RjcGh5X3Bvd2VyX29m ZihzdHJ1Y3QgcGh5ICpwaHkpCj4gPiAgewo+ID4gLSAgICAgc3RydWN0IHNhbXN1bmdfbWlwaV9k Y3BoeSAqc2Ftc3VuZyA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkpOwo+ID4gKyAgICAgc3RydWN0IHNh bXN1bmdfbWlwaV9kY3BoeV9kaXIgKnBkID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4gPiArICAg ICBzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5ICpzYW1zdW5nID0gcGQtPnBhcmVudDsKPiA+ICsg ICAgIGludCByZXQ7Cj4gPgo+ID4gLSAgICAgc3dpdGNoIChzYW1zdW5nLT50eXBlKSB7Cj4gPiAt ICAgICBjYXNlIFBIWV9UWVBFX0RQSFk6Cj4gPiAtICAgICAgICAgICAgIHJldHVybiBzYW1zdW5n X21pcGlfZHBoeV90eF9wb3dlcl9vZmYoc2Ftc3VuZyk7Cj4gPiAtICAgICBkZWZhdWx0Ogo+ID4g LSAgICAgICAgICAgICAvKiBDUEhZIHBhcnQgdG8gYmUgaW1wbGVtZW50ZWQgbGF0ZXIgKi8KPiA+ ICsgICAgIGlmIChwZC0+dHlwZSAhPSBQSFlfVFlQRV9EUEhZKQo+ID4gICAgICAgICAgICAgICBy ZXR1cm4gLUVPUE5PVFNVUFA7Cj4gPiAtICAgICB9Cj4gPiArCj4gPiArICAgICBpZiAocGQtPmRp ciA9PSBSS19EQ1BIWV9ESVJfUlgpCj4gPiArICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQ UDsKPiA+ICsKPiA+ICsgICAgIG11dGV4X2xvY2soJnNhbXN1bmctPmxvY2spOwo+ID4gKyAgICAg cmV0ID0gc2Ftc3VuZ19taXBpX2RwaHlfdHhfcG93ZXJfb2ZmKHNhbXN1bmcpOwo+ID4gKyAgICAg aWYgKCFyZXQpCj4gPiArICAgICAgICAgICAgIHBkLT5wb3dlcmVkID0gZmFsc2U7Cj4gPiArICAg ICBtdXRleF91bmxvY2soJnNhbXN1bmctPmxvY2spOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIHJl dDsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbnQKPiA+IEBAIC0xNDg4LDEwICsxNTI1LDE0IEBA IHNhbXN1bmdfbWlwaV9kY3BoeV9wbGxfY2FsY19yYXRlKHN0cnVjdCBzYW1zdW5nX21pcGlfZGNw aHkgKnNhbXN1bmcsCj4gPiAgc3RhdGljIGludCBzYW1zdW5nX21pcGlfZGNwaHlfY29uZmlndXJl KHN0cnVjdCBwaHkgKnBoeSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5pb24gcGh5X2NvbmZpZ3VyZV9vcHRzICpvcHRzKQo+ID4gIHsKPiA+IC0gICAgIHN0cnVj dCBzYW1zdW5nX21pcGlfZGNwaHkgKnNhbXN1bmcgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiA+ ICsgICAgIHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHlfZGlyICpwZCA9IHBoeV9nZXRfZHJ2ZGF0 YShwaHkpOwo+ID4gKyAgICAgc3RydWN0IHNhbXN1bmdfbWlwaV9kY3BoeSAqc2Ftc3VuZyA9IHBk LT5wYXJlbnQ7Cj4gPiAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGFyZ2V0X3JhdGUgPSBvcHRz LT5taXBpX2RwaHkuaHNfY2xrX3JhdGU7Cj4gPgo+ID4gLSAgICAgc2Ftc3VuZy0+bGFuZXMgPSBv cHRzLT5taXBpX2RwaHkubGFuZXMgPiA0ID8gNCA6IG9wdHMtPm1pcGlfZHBoeS5sYW5lczsKPiA+ ICsgICAgIGlmIChwZC0+ZGlyID09IFJLX0RDUEhZX0RJUl9SWCkKPiA+ICsgICAgICAgICAgICAg cmV0dXJuIC1FT1BOT1RTVVBQOwo+ID4gKwo+ID4gKyAgICAgcGQtPmxhbmVzID0gb3B0cy0+bWlw aV9kcGh5LmxhbmVzID4gNCA/IDQgOiBvcHRzLT5taXBpX2RwaHkubGFuZXM7Cj4gPgo+ID4gICAg ICAgc2Ftc3VuZ19taXBpX2RjcGh5X3BsbF9jYWxjX3JhdGUoc2Ftc3VuZywgdGFyZ2V0X3JhdGUp Owo+ID4gICAgICAgb3B0cy0+bWlwaV9kcGh5LmhzX2Nsa19yYXRlID0gc2Ftc3VuZy0+cGxsLnJh dGU7Cj4gPiBAQCAtMTUwMSwxNiArMTU0MiwxNiBAQCBzdGF0aWMgaW50IHNhbXN1bmdfbWlwaV9k Y3BoeV9jb25maWd1cmUoc3RydWN0IHBoeSAqcGh5LAo+ID4KPiA+ICBzdGF0aWMgaW50IHNhbXN1 bmdfbWlwaV9kY3BoeV9pbml0KHN0cnVjdCBwaHkgKnBoeSkKPiA+ICB7Cj4gPiAtICAgICBzdHJ1 Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5ICpzYW1zdW5nID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4g PiArICAgICBzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5X2RpciAqcGQgPSBwaHlfZ2V0X2RydmRh dGEocGh5KTsKPiA+Cj4gPiAtICAgICByZXR1cm4gcG1fcnVudGltZV9yZXN1bWVfYW5kX2dldChz YW1zdW5nLT5kZXYpOwo+ID4gKyAgICAgcmV0dXJuIHBtX3J1bnRpbWVfcmVzdW1lX2FuZF9nZXQo cGQtPnBhcmVudC0+ZGV2KTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbnQgc2Ftc3VuZ19taXBp X2RjcGh5X2V4aXQoc3RydWN0IHBoeSAqcGh5KQo+ID4gIHsKPiA+IC0gICAgIHN0cnVjdCBzYW1z dW5nX21pcGlfZGNwaHkgKnNhbXN1bmcgPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiA+ICsgICAg IHN0cnVjdCBzYW1zdW5nX21pcGlfZGNwaHlfZGlyICpwZCA9IHBoeV9nZXRfZHJ2ZGF0YShwaHkp Owo+ID4KPiA+IC0gICAgIHBtX3J1bnRpbWVfcHV0KHNhbXN1bmctPmRldik7Cj4gPiArICAgICBw bV9ydW50aW1lX3B1dChwZC0+cGFyZW50LT5kZXYpOwo+ID4KPiA+ICAgICAgIHJldHVybiAwOwo+ ID4gIH0KPiA+IEBAIC0xNTM2LDE5ICsxNTc3LDI5IEBAIHN0YXRpYyBzdHJ1Y3QgcGh5ICpzYW1z dW5nX21pcGlfZGNwaHlfeGxhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IG9mX3BoYW5kbGVfYXJn cyAqYXJncykKPiA+ICB7Cj4gPiAgICAgICBzdHJ1Y3Qgc2Ftc3VuZ19taXBpX2RjcGh5ICpzYW1z dW5nID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gPiArICAgICBzdHJ1Y3Qgc2Ftc3VuZ19taXBp X2RjcGh5X2RpciAqcGQ7Cj4gPiArICAgICB1OCBkaXIgPSBSS19EQ1BIWV9ESVJfVFg7Cj4gPgo+ ID4gLSAgICAgaWYgKGFyZ3MtPmFyZ3NfY291bnQgIT0gMSkgewo+ID4gKyAgICAgaWYgKGFyZ3Mt PmFyZ3NfY291bnQgPCAxIHx8IGFyZ3MtPmFyZ3NfY291bnQgPiAyKSB7Cj4gPiAgICAgICAgICAg ICAgIGRldl9lcnIoZGV2LCAiaW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzXG4iKTsKPiA+ICAg ICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gPiAgICAgICB9Cj4gPgo+ID4g LSAgICAgaWYgKHNhbXN1bmctPnR5cGUgIT0gUEhZX05PTkUgJiYgc2Ftc3VuZy0+dHlwZSAhPSBh cmdzLT5hcmdzWzBdKQo+ID4gLSAgICAgICAgICAgICBkZXZfd2FybihkZXYsICJwaHkgdHlwZSBz ZWxlY3QgJWQgb3ZlcndyaXRpbmcgdHlwZSAlZFxuIiwKPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgYXJncy0+YXJnc1swXSwgc2Ftc3VuZy0+dHlwZSk7Cj4gPiArICAgICBpZiAoYXJncy0+YXJn c19jb3VudCA9PSAyKSB7Cj4gPiArICAgICAgICAgICAgIGlmIChhcmdzLT5hcmdzWzFdID4gUktf RENQSFlfRElSX1JYKSB7Cj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJp bnZhbGlkIGRpcmVjdGlvbiAldVxuIiwgYXJncy0+YXJnc1sxXSk7Cj4gPiArICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gPiArICAgICAgICAgICAgIH0KPiA+ ICsgICAgICAgICAgICAgZGlyID0gYXJncy0+YXJnc1sxXTsKPiA+ICsgICAgIH0KPiA+Cj4gPiAt ICAgICBzYW1zdW5nLT50eXBlID0gYXJncy0+YXJnc1swXTsKPiA+ICsgICAgIHBkID0gJnNhbXN1 bmctPnBoeXNbZGlyXTsKPiA+ICsgICAgIGlmIChwZC0+dHlwZSAhPSBQSFlfTk9ORSAmJiBwZC0+ dHlwZSAhPSBhcmdzLT5hcmdzWzBdKQo+ID4gKyAgICAgICAgICAgICBkZXZfd2FybihkZXYsICJw aHkgdHlwZSBzZWxlY3QgJXUgb3ZlcndyaXRpbmcgdHlwZSAldVxuIiwKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgYXJncy0+YXJnc1swXSwgcGQtPnR5cGUpOwo+ID4gKyAgICAgcGQtPnR5cGUg PSBhcmdzLT5hcmdzWzBdOwo+ID4KPiA+IC0gICAgIHJldHVybiBzYW1zdW5nLT5waHk7Cj4gPiAr ICAgICByZXR1cm4gcGQtPnBoeTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbnQgc2Ftc3VuZ19t aXBpX2RjcGh5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gPiBAQCAtMTU1 OSw2ICsxNjEwLDcgQEAgc3RhdGljIGludCBzYW1zdW5nX21pcGlfZGNwaHlfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ICAgICAgIHN0cnVjdCBwaHlfcHJvdmlkZXIgKnBo eV9wcm92aWRlcjsKPiA+ICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVzOwo+ID4gICAgICAgdm9p ZCBfX2lvbWVtICpyZWdzOwo+ID4gKyAgICAgdW5zaWduZWQgaW50IGk7Cj4gPiAgICAgICBpbnQg cmV0Owo+ID4KPiA+ICAgICAgIHNhbXN1bmcgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnNh bXN1bmcpLCBHRlBfS0VSTkVMKTsKPiA+IEBAIC0xNTY4LDYgKzE2MjAsNyBAQCBzdGF0aWMgaW50 IHNhbXN1bmdfbWlwaV9kY3BoeV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ ID4gICAgICAgc2Ftc3VuZy0+ZGV2ID0gZGV2Owo+ID4gICAgICAgc2Ftc3VuZy0+cGRhdGEgPSBk ZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsKPiA+ICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIHNhbXN1bmcpOwo+ID4gKyAgICAgbXV0ZXhfaW5pdCgmc2Ftc3VuZy0+bG9jayk7Cj4g Pgo+ID4gICAgICAgcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0Vf TUVNLCAwKTsKPiA+ICAgICAgIHJlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZXMp Owo+ID4gQEAgLTE2MTMsMTEgKzE2NjYsMTkgQEAgc3RhdGljIGludCBzYW1zdW5nX21pcGlfZGNw aHlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiA+ICAgICAgICAgICAgICAg cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHNhbXN1bmctPmdyZl9hcGJfcnN0KSwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgc3lz dGVtIGdyZl9hcGJfcnN0IGNvbnRyb2xcbiIpOwo+ID4KPiA+IC0gICAgIHNhbXN1bmctPnBoeSA9 IGRldm1fcGh5X2NyZWF0ZShkZXYsIE5VTEwsICZzYW1zdW5nX21pcGlfZGNwaHlfb3BzKTsKPiA+ IC0gICAgIGlmIChJU19FUlIoc2Ftc3VuZy0+cGh5KSkKPiA+IC0gICAgICAgICAgICAgcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHNhbXN1bmctPnBoeSksICJGYWlsZWQgdG8gY3Jl YXRlIE1JUEkgREMtUEhZXG4iKTsKPiA+ICsgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHNhbXN1bmctPnBoeXMpOyBpKyspIHsKPiA+ICsgICAgICAgICAgICAgc3RydWN0IHBoeSAqcGh5 ID0gZGV2bV9waHlfY3JlYXRlKGRldiwgTlVMTCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZzYW1zdW5nX21pcGlfZGNwaHlfb3BzKTsKPiA+Cj4g PiAtICAgICBwaHlfc2V0X2RydmRhdGEoc2Ftc3VuZy0+cGh5LCBzYW1zdW5nKTsKPiA+ICsgICAg ICAgICAgICAgaWYgKElTX0VSUihwaHkpKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVy biBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihwaHkpLAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIE1JUEkgREMtUEhZXG4i KTsKPiA+ICsKPiA+ICsgICAgICAgICAgICAgc2Ftc3VuZy0+cGh5c1tpXS5waHkgPSBwaHk7Cj4g PiArICAgICAgICAgICAgIHNhbXN1bmctPnBoeXNbaV0ucGFyZW50ID0gc2Ftc3VuZzsKPiA+ICsg ICAgICAgICAgICAgc2Ftc3VuZy0+cGh5c1tpXS5kaXIgPSBpOwo+ID4gKyAgICAgICAgICAgICBw aHlfc2V0X2RydmRhdGEocGh5LCAmc2Ftc3VuZy0+cGh5c1tpXSk7Cj4gPiArICAgICB9Cj4gPgo+ ID4gICAgICAgcmV0ID0gZGV2bV9wbV9ydW50aW1lX2VuYWJsZShkZXYpOwo+ID4gICAgICAgaWYg KHJldCkKPiA+Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZy YWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGlu dXgtcm9ja2NoaXAK