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