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==