RE: [PATCH v2 2/2] pci: AMD: Add CPM6 host controller support to AMD MDB PCIe driver

"Musham, Sai Krishna" <[email protected]> Mon, 3 Aug 2026 10:43:35 +0000
Newsgroups dev.linux.lists.sashiko-reviews,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-pci
Message-ID <IA4PR12MB9810B005A5C39C0ADD785861CDD52@IA4PR12MB9810.namprd12.prod.outlook.com>
QU1EIEdlbmVyYWwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBzYXNo
aWtvLWJvdEBrZXJuZWwub3JnIDxzYXNoaWtvLWJvdEBrZXJuZWwub3JnPg0KPiBTZW50OiBXZWRu
ZXNkYXksIEp1bHkgMjksIDIwMjYgMjowNCBBTQ0KPiBUbzogTXVzaGFtLCBTYWkgS3Jpc2huYSA8
c2FpLmtyaXNobmEubXVzaGFtQGFtZC5jb20+DQo+IENjOiBkZXZpY2V0cmVlQHZnZXIua2VybmVs
Lm9yZzsgbGludXgtcGNpQHZnZXIua2VybmVsLm9yZzsgcm9iaEBrZXJuZWwub3JnOw0KPiBjb25v
citkdEBrZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjIgMi8yXSBwY2k6IEFNRDog
QWRkIENQTTYgaG9zdCBjb250cm9sbGVyIHN1cHBvcnQgdG8NCj4gQU1EIE1EQiBQQ0llIGRyaXZl
cg0KPg0KPiBUaGFuayB5b3UgZm9yIHlvdXIgY29udHJpYnV0aW9uISBTYXNoaWtvIEFJIHJldmll
dyBmb3VuZCA4IHBvdGVudGlhbCBpc3N1ZShzKQ0KPiB0byBjb25zaWRlcjoNCj4NCj4gTmV3IGlz
c3VlczoNCj4gLSBbSGlnaF0gRG91YmxlLWZyZWUgYW5kIFVzZS1BZnRlci1GcmVlIG9mIGRldm0t
bWFuYWdlZCBpbnRlcnJ1cHRzIG9uDQo+IHByb2JlIGZhaWx1cmUuDQo+IC0gW0hpZ2hdIE1hc2tp
bmcgYSBzaW5nbGUgdmlydHVhbCBJTlR4IGxpbmUgb24gQ1BNNiB1bmNvbmRpdGlvbmFsbHkgZGlz
YWJsZXMNCj4gdGhlIGFnZ3JlZ2F0ZSBoYXJkd2FyZSBJTlR4IGludGVycnVwdCwgYnJlYWtpbmcg
b3RoZXIgZGV2aWNlcy4NCj4gLSBbSGlnaF0gVW5oYW5kbGVkIGJpdHMgaW4gYEFNRF9DUE02X1BD
SUVfRVJSX1NUQVRVU2AgYXJlIG5ldmVyIGNsZWFyZWQsDQo+IGxlYWRpbmcgdG8gYW4gdW5yZWNv
dmVyYWJsZSBpbmZpbml0ZSBJUlEgc3Rvcm0uDQo+IC0gW0hpZ2hdIEV4Y2x1c2l2ZSBpb3JlbWFw
IG9mIHRoZSBzaGFyZWQgYHNsY3JgIHJlZ2lvbiB3aWxsIGNhdXNlIHRoZSBzZWNvbmQNCj4gQ1BN
NiBob3N0IGNvbnRyb2xsZXIgdG8gZmFpbCBwcm9iaW5nLg0KPiAtIFtIaWdoXSBVbmNvb3JkaW5h
dGVkIFcxQyBjbGVhcmluZyBvZiB0aGUgc2hhcmVkIHN0aWNreSBhZ2dyZWdhdG9yIGJpdA0KPiBj
YXVzZXMgbG9zdCBpbnRlcnJ1cHRzIGZvciB0aGUgb3RoZXIgaG9zdC4NCj4NCj4gUHJlLWV4aXN0
aW5nIGlzc3VlczoNCj4gLSBbSGlnaF0gSU5UeEIsIElOVHhDLCBhbmQgSU5UeEQgaW50ZXJydXB0
cyBvbiBNREI1IGFyZSBzaWxlbnRseSBkcm9wcGVkDQo+IGJlY2F1c2UgdGhlaXIgaGFyZHdhcmUg
SVJRcyBhcmUgbmV2ZXIgbWFwcGVkLg0KPiAtIFtIaWdoXSBVc2UtQWZ0ZXItRnJlZSBvZiBpcnFf
ZG9tYWluIHRyaWdnZXJlZCBieSBjb25jdXJyZW50IGhhcmR3YXJlDQo+IGludGVycnVwdCBkdXJp
bmcgcHJvYmUgZXJyb3IgcGF0aC4NCj4gLSBbSGlnaF0gQ2xlYXJpbmcgc3RpY2t5IFcxQyBzdGF0
dXMgcmVnaXN0ZXJzIGF0IHRoZSBlbmQgb2YgdGhlIGludGVycnVwdCBoYW5kbGVyDQo+IGNyZWF0
ZXMgYSByYWNlIGNvbmRpdGlvbiB0aGF0IGxvc2VzIGNvbmN1cnJlbnQgZWRnZXMuDQo+IC0tDQo+
DQo+IC0tLSBQYXRjaCBbMl06IFtQQVRDSCB2MiAyLzJdIHBjaTogQU1EOiBBZGQgQ1BNNiBob3N0
IGNvbnRyb2xsZXIgc3VwcG9ydCB0bw0KPiBBTUQgTURCIFBDSWUgZHJpdmVyIC0tLQ0KPiBjb21t
aXQgNzJkYTMzNzE4YWI5ZjZhNWQ4NDY2Y2NjZWYxMThhZWZjNmMyNmY3Ng0KPiBBdXRob3I6IFNh
aSBLcmlzaG5hIE11c2hhbSA8c2FpLmtyaXNobmEubXVzaGFtQGFtZC5jb20+DQo+IFN1YmplY3Q6
IHBjaTogQU1EOiBBZGQgQ1BNNiBob3N0IGNvbnRyb2xsZXIgc3VwcG9ydCB0byBBTUQgTURCIFBD
SWUNCj4gZHJpdmVyDQo+DQo+IFRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgQU1EIE1EQiBQQ0llIGRy
aXZlciB0byBzdXBwb3J0IEFNRCBWZXJzYWwyIENQTTYNCj4gdmFyaWFudHMuIEl0IGFkZHMgdmFy
aWFudC1zcGVjaWZpYyByZWdpc3RlciBsYXlvdXRzIGFuZCBpbXBsZW1lbnRzIGEgc2hhcmVkDQo+
IGFnZ3JlZ2F0b3IgY2xlYXJpbmcgbWVjaGFuaXNtIGZvciB0aGUgbmV3IGludGVycnVwdCBhcmNo
aXRlY3R1cmUuDQo+DQo+IExpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2FsbC8yMDI2MDQw
MjE4MDAwNi40ODYyMjktMy0NCj4gc2FpLmtyaXNobmEubXVzaGFtQGFtZC5jb20vDQo+DQo+ID4g
ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYW1kLW1kYi5jDQo+
IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1hbWQtbWRiLmMNCj4gPiBpbmRleCBk
ZWUyOTVmMjgxYTMwLi5kYmYzNmNlOTkwMmM4IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGNp
L2NvbnRyb2xsZXIvZHdjL3BjaWUtYW1kLW1kYi5jDQo+ID4gKysrIGIvZHJpdmVycy9wY2kvY29u
dHJvbGxlci9kd2MvcGNpZS1hbWQtbWRiLmMNCj4gWyAuLi4gXQ0KPiA+IEBAIC0xNDgsNDIgKzI4
NywzNCBAQCBzdGF0aWMgdm9pZA0KPiBhbWRfbWRiX3BjaWVfY2xlYXJfYWdncmVnYXRvcnMoc3Ry
dWN0IGFtZF9tZGJfcGNpZSAqcGNpZSkNCj4gPiAgICAgd3JpdGVsX3JlbGF4ZWQobWVyZ2VkX21h
c2ssIHBjaWUtPnNsY3IgKw0KPiBBTURfQ1BNNl9NRVJHRURfU1RBVFVTKTsNCj4gPg0KPiA+ICAg
ICAvKg0KPiA+ICAgICAgKiBDbGVhciBNRVJHRUQgaW4gdGhlIFBTX01JU0Mgc2V2ZXJpdHkgcmVn
aXN0ZXIgc28gdGhlIG1pc2MgR0lDIGxpbmUNCj4gPiAgICAgICogZGUtYXNzZXJ0cy4NCj4gPiAg
ICAgICovDQo+ID4gICAgIHdyaXRlbF9yZWxheGVkKEFNRF9DUE02X1BTX0lSX01FUkdFRCwNCj4g
PiAgICAgICAgICAgICAgICAgICAgcGNpZS0+c2xjciArIEFNRF9DUE02X1BTX01JU0NfSVJfU1RB
VFVTKTsNCj4gPiAgfQ0KPg0KPiBbU2V2ZXJpdHk6IEhpZ2hdDQo+IERvZXMgYmxpbmRseSBjbGVh
cmluZyB0aGUgc2hhcmVkIHN0aWNreSBhZ2dyZWdhdG9yIGJpdCBkcm9wIGNvbmN1cnJlbnQNCj4g
aW50ZXJydXB0cyBmcm9tIHRoZSBvdGhlciBob3N0IGNvbnRyb2xsZXI/DQo+DQo+IFRoZSBjb21t
aXQgbWVudGlvbnMgdGhpcyBhZ2dyZWdhdG9yIGlzIHNoYXJlZCBiZXR3ZWVuIGNvbnRyb2xsZXJz
LiBJZiBIb3N0IDANCj4gY2xlYXJzIHRoaXMgVzFDIGJpdCB3aGlsZSBIb3N0IDEgaGFzIGEgcGVu
ZGluZyB1bnNlcnZpY2VkIGludGVycnVwdCBpbiB0aGUNCj4gTUVSR0VEIHJlZ2lzdGVyLCBIb3N0
IDEncyBlZGdlIG1pZ2h0IGJlIHN3YWxsb3dlZCBhbmQgbmV2ZXIgc2VydmljZWQuDQo+DQo+IERv
ZXMgdGhpcyBuZWVkIGNvb3JkaW5hdGVkIGxvY2tpbmcgdG8gZW5zdXJlIGl0IGlzIG9ubHkgY2xl
YXJlZCB3aGVuIG5vDQo+IG90aGVyIGhvc3RzIGhhdmUgcGVuZGluZyBpbnRlcnJ1cHRzPw0KPg0K
DQpObyBjb29yZGluYXRlZCBsb2NraW5nIGlzIG5lZWRlZC4gVGhlIFcxQyBjbGVhcnMgb25seSB0
aGlzIGhvc3QncyBNRVJHRUQNCkJpdHMgKEhPU1QwOiAxMy8xNCwgSE9TVDE6IDE2LzE3KSwgdGhl
IHBlZXIncyBiaXRzIGFyZSB1bnRvdWNoZWQuDQpQU19NSVNDIGJpdCAyMSAobWVyZ2VkX2ludGVy
cnVwdHNfMCkgaXMgYSBzdGlja3kgVzFDIGFnZ3JlZ2F0ZSBvZg0KTUVSR0VEX0lOVEVSUlVQVFMu
IHdoZXJlIGJvdGggaG9zdHMgbGl2ZTsgc2luY2UgdGhlIHBlZXIncyBNRVJHRUQNCmJpdHMgc3Rh
eSBzZXQsIGJpdCAyMSByZS1hc3NlcnRzIGFuZCB0aGUgcGVlcidzIGludGVycnVwdCBzdGlsbCBm
aXJlcy4NCg0KPiBbIC4uLiBdDQo+ID4gQEAgLTIxMywxMSArMjM3LDE1IEBAIHN0YXRpYyB2b2lk
IGFtZF9tZGJfaW50eF9pcnFfbWFzayhzdHJ1Y3QNCj4gaXJxX2RhdGEgKmRhdGEpDQo+ID4gICAg
IGlmIChwY2llLT52YXJpYW50LT52ZXJzaW9uID09IE1EQjUpDQo+ID4gICAgICAgICAgICAgdmFs
ID0gRklFTERfUFJFUChBTURfTURCX1RMUF9QQ0lFX0lOVFhfTUFTSywNCj4gPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFNRF9NREJfUENJRV9JTlRSX0lOVFhfQVNTRVJUKGRhdGEtDQo+
ID5od2lycSkpOw0KPiA+ICAgICBlbHNlDQo+ID4gICAgICAgICAgICAgdmFsID0gcGNpZS0+dmFy
aWFudC0+aW50eF9tYXNrOw0KPiA+DQo+ID4gICAgIC8qDQo+ID4gICAgICAqIFdyaXRpbmcgJzEn
IHRvIGEgYml0IGluIEFNRF9NREJfVExQX0lSX0RJU0FCTEVfTUlTQyBkaXNhYmxlcw0KPiB0aGF0
DQo+ID4gICAgICAqIGludGVycnVwdCwgd3JpdGluZyAnMCcgaGFzIG5vIGVmZmVjdC4NCj4gPiAg
ICAgICovDQo+ID4gLSAgIHdyaXRlbF9yZWxheGVkKHZhbCwgcGNpZS0+c2xjciArIEFNRF9NREJf
VExQX0lSX0RJU0FCTEVfTUlTQyk7DQo+ID4gKyAgIHdyaXRlbF9yZWxheGVkKHZhbCwgcGNpZS0+
aW50cl9iYXNlICsgcGNpZS0+dmFyaWFudC0NCj4gPm1pc2NfZGlzYWJsZV9yZWcpOw0KPg0KPiBb
U2V2ZXJpdHk6IEhpZ2hdDQo+IFdpbGwgbWFza2luZyBhIHNpbmdsZSB2aXJ0dWFsIElOVHggbGlu
ZSBvbiBDUE02IHVuY29uZGl0aW9uYWxseSBkaXNhYmxlIHRoZQ0KPiBhZ2dyZWdhdGUgaGFyZHdh
cmUgSU5UeCBpbnRlcnJ1cHQ/DQo+DQo+IE9uIENQTTYsIHRoZXJlIGFwcGVhcnMgdG8gYmUgb25s
eSBhIHNpbmdsZSBhZ2dyZWdhdGUgSU5UeCBoYXJkd2FyZSBpbnRlcnJ1cHQNCj4gYml0LiBJZiBh
biBlbmRwb2ludCBkcml2ZXIgdW5iaW5kcyBvciBjYWxscyBkaXNhYmxlX2lycSgpIG9uIElOVEEs
IHRoaXMNCj4gdW5jb25kaXRpb25hbGx5IHdyaXRlcyB0aGUgaW50eF9tYXNrIGJpdCB0byB0aGUg
ZGlzYWJsZSByZWdpc3Rlci4NCj4NCj4gRG9lcyB0aGlzIGRpc2FibGUgdGhlIGhhcmR3YXJlIGFn
Z3JlZ2F0ZSBpbnRlcnJ1cHQgY29tcGxldGVseSwgcG90ZW50aWFsbHkNCj4gc3RhcnZpbmcgb3Ro
ZXIgZW5kcG9pbnQgZGV2aWNlcyByZWx5aW5nIG9uIElOVEIsIElOVEMsIG9yIElOVEQ/DQo+DQo+
IFsgLi4uIF0NCj4gPiBAQCAtMzU0LDE2ICszNzUsMTkgQEAgc3RhdGljIGlycXJldHVybl90IGFt
ZF9tZGJfcGNpZV9ldmVudChpbnQgaXJxLA0KPiB2b2lkICphcmdzKQ0KPiA+ICAgICBldl9yYXcg
PSByZWFkbF9yZWxheGVkKHBjaWUtPmludHJfYmFzZSArIHBjaWUtPnZhcmlhbnQtDQo+ID5taXNj
X3N0YXR1c19yZWcpOw0KPiA+ICAgICB2YWwgPSBldl9yYXc7DQo+ID4gICAgIHZhbCAmPSB+cmVh
ZGxfcmVsYXhlZChwY2llLT5pbnRyX2Jhc2UgKyBwY2llLT52YXJpYW50LQ0KPiA+bWlzY19tYXNr
X3JlZyk7DQo+ID4NCj4gPiAgICAgaWYgKHBjaWUtPnZhcmlhbnQtPnZlcnNpb24gPT0gTURCNSkg
ew0KPiA+ICAgICAgICAgICAgIGZvcl9lYWNoX3NldF9iaXQoaSwgJnZhbCwgMzIpDQo+ID4gICAg
ICAgICAgICAgICAgICAgICBnZW5lcmljX2hhbmRsZV9kb21haW5faXJxKHBjaWUtPm1kYl9kb21h
aW4sIGkpOw0KPg0KPiBbU2V2ZXJpdHk6IEhpZ2hdDQo+IFRoaXMgaXMgYSBwcmUtZXhpc3Rpbmcg
aXNzdWUsIGJ1dCBhcmUgSU5UeEIsIElOVHhDLCBhbmQgSU5UeEQgaW50ZXJydXB0cw0KPiBzaWxl
bnRseSBkcm9wcGVkIG9uIE1EQjU/DQo+DQo+IFdoZW4gYW4gSU5UeCBvY2N1cnMsIGFtZF9tZGJf
cGNpZV9ldmVudCgpIGV4dHJhY3RzIHRoZSBhc3NlcnRlZCBiaXQgYW5kDQo+IGNhbGxzIGdlbmVy
aWNfaGFuZGxlX2RvbWFpbl9pcnEoKS4gSG93ZXZlciwgYW1kX21kYl9zZXR1cF9pcnEoKSBvbmx5
DQo+IGNyZWF0ZXMgYSBtYXBwaW5nIGZvciB0aGUgc2luZ2xlIGludHhfaHdpcnEgKElOVHhBKS4N
Cj4NCj4gQml0cyBjb3JyZXNwb25kaW5nIHRvIElOVHhCLCBJTlR4QywgYW5kIElOVHhEIGFyZSBu
ZXZlciBtYXBwZWQsIHNvDQo+IGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEoKSB3aWxsIHJldHVy
biAtRUlOVkFMIGFuZCB0aGUgaW50ZXJydXB0cyB3aWxsIGJlDQo+IGxvc3QuDQo+DQo+ID4gICAg
ICAgICAgICAgd3JpdGVsX3JlbGF4ZWQodmFsLCBwY2llLT5pbnRyX2Jhc2UgKyBwY2llLT52YXJp
YW50LQ0KPiA+bWlzY19zdGF0dXNfcmVnKTsNCj4gPiAgICAgICAgICAgICByZXR1cm4gSVJRX0hB
TkRMRUQ7DQo+ID4gICAgIH0NCj4gPg0KPiA+ICAgICB2YWwgJj0gcGNpZS0+dmFyaWFudC0+bWlz
Y19tYXNrX2FsbDsNCj4gPg0KPiA+ICAgICBmb3JfZWFjaF9zZXRfYml0KGksICZ2YWwsIDMyKQ0K
PiA+ICAgICAgICAgICAgIGdlbmVyaWNfaGFuZGxlX2RvbWFpbl9pcnEocGNpZS0+bWRiX2RvbWFp
biwgaSk7DQo+ID4NCj4gPiAgICAgLyogQ2xlYXIgaGFuZGxlZCArIGFueSB1bmhhbmRsZWQgc3Rp
Y2t5IGJpdHMgdG8gYXZvaWQgSVJRIHN0b3Jtcy4gKi8NCj4gPiAtICAgd3JpdGVsX3JlbGF4ZWQo
dmFsLCBwY2llLT5zbGNyICsgQU1EX01EQl9UTFBfSVJfU1RBVFVTX01JU0MpOw0KPiA+ICsgICB3
cml0ZWxfcmVsYXhlZChldl9yYXcsIHBjaWUtPmludHJfYmFzZSArIHBjaWUtPnZhcmlhbnQtDQo+
ID5taXNjX3N0YXR1c19yZWcpOw0KPg0KPiBbU2V2ZXJpdHk6IEhpZ2hdDQo+IFRoaXMgaXNuJ3Qg
YSBidWcgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLCBidXQgZG9lcyBjbGVhcmluZyB0aGUgc3Rp
Y2t5IFcxQw0KPiBzdGF0dXMgcmVnaXN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgaW50ZXJydXB0IGhh
bmRsZXIgY3JlYXRlIGEgcmFjZSBjb25kaXRpb24/DQo+DQo+IElmIGEgc2Vjb25kIGVkZ2Ugb2Yg
dGhlIHNhbWUgaW50ZXJydXB0IHR5cGUgb2NjdXJzIGR1cmluZyB0aGUgaGFuZGxpbmcNCj4gcGhh
c2UsIHdyaXRpbmcgZXZfcmF3IGJhY2sgdG8gdGhlIFcxQyByZWdpc3RlciBhdCB0aGUgdmVyeSBl
bmQgd2lsbCBjbGVhcg0KPiB0aGUgbmV3IGVkZ2Ugd2l0aG91dCBpdCBldmVyIGJlaW5nIHByb2Nl
c3NlZC4NCj4NCj4gU2hvdWxkIHRoZSBzdGF0dXMgcmVnaXN0ZXIgYmUgQUNLZWQgYmVmb3JlIGhh
bmRsaW5nIHRoZSBldmVudHMgc28gdGhhdCBuZXcNCj4gZWRnZXMgY2FuIGxhdGNoIGNvcnJlY3Rs
eT8NCj4NCg0KQWdyZWVkLiBUaGlzIGlzIHByZS1leGlzdGluZyBNREI1IGJlaGF2aW9yIGFuZCBB
Q0stYmVmb3JlLWhhbmRsZSBpcyB0aGUgcmlnaHQNCmhhcmRlbmluZy4gSSB3aWxsIHNlbmQgaXQg
YXMgYSBzZXBhcmF0ZSBwYXRjaCAocGVyIEJqb3JuKSwgcmF0aGVyIHRoYW4gbWl4aW5nIGl0DQp3
aXRoIENQTTYgc3VwcG9ydC4NCg0KPiA+ICsgICAvKiBPbiBDUE02IHRoZSBjb21wbGV0aW9uIHRp
bWVvdXQgaXMgcmVwb3J0ZWQgdmlhIHRoZSBQQ0lFX0VSUg0KPiByZWdpc3Rlci4gKi8NCj4gPiAr
ICAgZXJyID0gcmVhZGxfcmVsYXhlZChwY2llLT5pbnRyX2Jhc2UgKw0KPiBBTURfQ1BNNl9QQ0lF
X0VSUl9TVEFUVVMpOw0KPiA+ICsgICBlcnIgJj0gfnJlYWRsX3JlbGF4ZWQocGNpZS0+aW50cl9i
YXNlICsNCj4gQU1EX0NQTTZfUENJRV9FUlJfTUFTSyk7DQo+ID4gKyAgIGVyciAmPSBBTURfQ1BN
Nl9QQ0lFX0VSUl9NQVNLX0FMTDsNCj4gPiArICAgaWYgKGVycikgew0KPiA+ICsgICAgICAgICAg
IGRldl93YXJuKHBjaWUtPnBjaS5kZXYsICJDb21wbGV0aW9uIHRpbWVvdXRcbiIpOw0KPiA+ICsg
ICAgICAgICAgIHdyaXRlbF9yZWxheGVkKGVyciwgcGNpZS0+aW50cl9iYXNlICsNCj4gQU1EX0NQ
TTZfUENJRV9FUlJfU1RBVFVTKTsNCj4gPiArICAgfQ0KPg0KPiBbU2V2ZXJpdHk6IEhpZ2hdDQo+
IEFyZSB1bmhhbmRsZWQgYml0cyBpbiB0aGUgUENJRV9FUlJfU1RBVFVTIHJlZ2lzdGVyIG1hc2tl
ZCBvdXQgYW5kIG5ldmVyDQo+IGNsZWFyZWQ/DQo+DQo+IFRoZSBkcml2ZXIgbWFza3MgdGhlIHJl
YWQgdmFsdWUgd2l0aCBBTURfQ1BNNl9QQ0lFX0VSUl9NQVNLX0FMTCBhbmQNCj4gb25seQ0KPiB3
cml0ZXMgYmFjayB0aGUga25vd24gYml0cyB0byB0aGUgVzFDIHJlZ2lzdGVyLiBJZiBhbnkgdW5o
YW5kbGVkIGJpdCBpcw0KPiBzZXQsIGl0IHJlbWFpbnMgdW5jbGVhcmVkLg0KPg0KPiBTaW5jZSB0
aGlzIHJlZ2lzdGVyIGZlZWRzIGludG8gdGhlIHN0aWNreSBNRVJHRUQgYWdncmVnYXRvciwgd2ls
bCB0aGlzIGNhdXNlDQo+IHRoZSBoYXJkd2FyZSB0byBpbW1lZGlhdGVseSByZS1hc3NlcnQgdGhl
IG1haW4gcGFyZW50IGludGVycnVwdCBhbmQgY3JlYXRlDQo+IGFuIHVucmVjb3ZlcmFibGUgSVJR
IHN0b3JtPw0KPg0KPiBbIC4uLiBdDQo+ID4gQEAgLTQwMCwxMCArNDIxLDMwIEBAIHN0YXRpYyB2
b2lkDQo+IGFtZF9tZGJfcGNpZV9mcmVlX2lycV9kb21haW5zKHN0cnVjdCBhbWRfbWRiX3BjaWUg
KnBjaWUpDQo+ID4gKyAgICAgICAgICAgY29uc3Qgc3RydWN0IGFtZF9tZGJfaW50cl9jYXVzZSAq
aW50cl9jYXVzZSA9DQo+ID4gKyAgICAgICAgICAgICAgICAgICBwY2llLT52YXJpYW50LT52ZXJz
aW9uID09IE1EQjUgPw0KPiA+ICsgICAgICAgICAgICAgICAgICAgbWRiNV9pbnRyX2NhdXNlIDog
Y3BtNl9pbnRyX2NhdXNlOw0KPiA+ICsgICAgICAgICAgIGludCBpLCBpcnE7DQo+ID4gKw0KPiA+
ICsgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG1kYjVfaW50cl9jYXVzZSk7
IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgaWYgKCFpbnRyX2NhdXNlW2ldLnN0cikN
Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ID4gKyAgICAgICAg
ICAgICAgICAgICBpcnEgPSBpcnFfZmluZF9tYXBwaW5nKHBjaWUtPm1kYl9kb21haW4sIGkpOw0K
PiA+ICsgICAgICAgICAgICAgICAgICAgaWYgKGlycSkgew0KPiA+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaXNhYmxlX2lycShpcnEpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmVlX2lycShpcnEsIHBjaWUpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpcnFfZGlzcG9zZV9tYXBwaW5nKGlycSk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICB9DQo+
ID4gKyAgICAgICAgICAgfQ0KPg0KPiBbU2V2ZXJpdHk6IEhpZ2hdDQo+IElzIGl0IHNhZmUgdG8g
bWFudWFsbHkgY2FsbCBmcmVlX2lycSgpIG9uIGFuIGludGVycnVwdCBhbGxvY2F0ZWQgd2l0aA0K
PiBkZXZtX3JlcXVlc3RfaXJxKCk/DQo+DQo+IEluIGFtZF9tZGJfc2V0dXBfaXJxKCksIHRoZXNl
IGludGVycnVwdHMgYXJlIGFsbG9jYXRlZCB1bmRlciBkZXZyZXMNCj4gbWFuYWdlbWVudC4gT24g
cHJvYmUgZmFpbHVyZSwgdGhpcyBlcnJvciBwYXRoIG1hbnVhbGx5IGZyZWVzIHRoZW0uIFdoZW4N
Cj4gdGhlDQo+IGRyaXZlciB1bmJpbmRzLCBkZXZyZXMgd2lsbCBhdHRlbXB0IHRvIGZyZWUgdGhl
IHNhbWUgSVJRcyBhZ2Fpbi4NCj4NCj4gQ2FuIHRoaXMgY2F1c2UgYSBkb3VibGUtZnJlZSBvbiBh
IGRpc3Bvc2VkIHZpcnR1YWwgSVJRIG1hcHBpbmc/DQo+DQo+IFsgLi4uIF0NCj4gPiAgICAgICAg
ICAgICBpcnFfZG9tYWluX3JlbW92ZShwY2llLT5tZGJfZG9tYWluKTsNCj4gPiAgICAgICAgICAg
ICBwY2llLT5tZGJfZG9tYWluID0gTlVMTDsNCj4NCj4gW1NldmVyaXR5OiBIaWdoXQ0KPiBUaGlz
IGlzIGEgcHJlLWV4aXN0aW5nIGlzc3VlLCBidXQgY2FuIHRoaXMgbGVhZCB0byBhIHVzZS1hZnRl
ci1mcmVlIG9mIHRoZQ0KPiBpcnFfZG9tYWluIGlmIGEgaGFyZHdhcmUgaW50ZXJydXB0IGFycml2
ZXMgY29uY3VycmVudGx5Pw0KPg0KPiBUaGUgZXJyb3IgcGF0aCBkZXN0cm95cyBhbmQgZnJlZXMg
cGNpZS0+bWRiX2RvbWFpbiwgYnV0IGZhaWxzIHRvIGRpc2FibGUNCj4gdGhlIG1haW4gZXZlbnQg
aW50ZXJydXB0IGZpcnN0LiBJZiBhbiBpbnRlcnJ1cHQgZmlyZXMgY29uY3VycmVudGx5LA0KPiBh
bWRfbWRiX3BjaWVfZXZlbnQoKSBtaWdodCBkZXJlZmVyZW5jZSB0aGUgZnJlZWQgZG9tYWluIHBv
aW50ZXIgdG8NCj4gZGlzcGF0Y2gNCj4gY2hpbGQgaW50ZXJydXB0cy4NCj4NCg0KQWdyZWVkLCB0
aGlzIGlzIGEgcHJlLWV4aXN0aW5nIHByb2JsZW0uIFJlbW92aW5nIHRoZSBtYW51YWwgZnJlZSBs
b29wIGFib3ZlDQptYWtlcyB0aGUgd2luZG93IHNtYWxsZXIsIGJ1dCB0aGUgcmVhbCBmaXggLSBz
dG9wcGluZyB0aGUgcGFyZW50IGV2ZW50IElSUQ0KYmVmb3JlIHJlbW92aW5nIHRoZSBkb21haW5z
IC0gaXMgZ2VuZXJpYyBNREI1IGNvZGUuIEknbGwgZG8gdGhhdCBpbiBhDQpzZXBhcmF0ZSBwYXRj
aCBzbyBpdCBjYW4gYmUgYmFja3BvcnRlZCBvbiBpdHMgb3duLCBhcyBCam9ybiBzdWdnZXN0ZWQu
DQoNCj4gWyAuLi4gXQ0KPiA+IEBAIC02MzksMTIgKzY2MCwyNiBAQCBzdGF0aWMgaW50IGFtZF9t
ZGJfYWRkX3BjaWVfcG9ydChzdHJ1Y3QNCj4gYW1kX21kYl9wY2llICpwY2llLA0KPiA+ICAgICBw
Y2llLT5zbGNyID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAi
c2xjciIpOw0KPiA+ICAgICBpZiAoSVNfRVJSKHBjaWUtPnNsY3IpKQ0KPiA+ICAgICAgICAgICAg
IHJldHVybiBQVFJfRVJSKHBjaWUtPnNsY3IpOw0KPg0KPiBbU2V2ZXJpdHk6IEhpZ2hdDQo+IFdp
bGwgYW4gZXhjbHVzaXZlIGlvcmVtYXAgb2YgdGhlIHNoYXJlZCBzbGNyIHJlZ2lvbiBjYXVzZSB0
aGUgc2Vjb25kIENQTTYNCj4gaG9zdCBjb250cm9sbGVyIHRvIGZhaWwgcHJvYmluZz8NCj4NCj4g
VGhlIGNvbW1pdCBtZXNzYWdlIG5vdGVzIHRoZSBhZ2dyZWdhdGlvbiBsYXllciBpcyBzaGFyZWQg
YmV0d2VlbiB0aGUgdHdvDQo+IGNvbnRyb2xsZXJzLiBSZXF1ZXN0aW5nIGV4Y2x1c2l2ZSBhY2Nl
c3MgdG8gdGhlIG1lbW9yeSByZWdpb24gaGVyZSBtZWFucyB0aGUNCj4gZmlyc3QgZGV2aWNlIGNs
YWltcyBpdCwgYW5kIHRoZSBzZWNvbmQgZGV2aWNlIG1pZ2h0IGZhaWwgdG8gcHJvYmUgd2l0aCBh
DQo+IHJlc291cmNlIGNvbmZsaWN0Lg0KPg0KPiAtLQ0KPiBTYXNoaWtvIEFJIHJldmlldyDCtyBo
dHRwczovL3Nhc2hpa28uZGV2LyMvcGF0Y2hzZXQvMjAyNjA3MjgyMDIwNDQuMTc4NTk4Ni0NCj4g
MS1zYWkua3Jpc2huYS5tdXNoYW1AYW1kLmNvbT9wYXJ0PTINCg0KVGhhbmtzLA0KU2FpIEtyaXNo
bmENCg==