From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH 01/13] drm/amd/display: Add MST atomic routines Date: Thu, 31 Oct 2019 13:16:24 +0000 Message-ID: <289bb3c9-7cff-31c1-ed3e-17478fcb9864@amd.com> References: <20191030192431.5798-1-mikita.lipski@amd.com> <20191030192431.5798-2-mikita.lipski@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191030192431.5798-2-mikita.lipski@amd.com> Content-Language: en-US Content-ID: <8972B59D45900246B09FEBC73D0016C3@namprd12.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Lipski, Mikita" , "amd-gfx@lists.freedesktop.org" Cc: "Zuo, Jerry" , "Lei, Jun" , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gMjAxOS0xMC0zMCAzOjI0IHAubS4sIG1pa2l0YS5saXBza2lAYW1kLmNvbSB3cm90ZToNCj4g RnJvbTogTWlraXRhIExpcHNraSA8bWlraXRhLmxpcHNraUBhbWQuY29tPg0KPiANCj4gLSBBZGRp bmcgZW5jb2RlciBhdG9taWMgY2hlY2sgdG8gZmluZCB2Y3BpIHNsb3RzIGZvciBhIGNvbm5lY3Rv cg0KPiAtIFVzaW5nIERSTSBoZWxwZXIgZnVuY3Rpb25zIHRvIGNhbGN1bGF0ZSBQQk4NCj4gLSBB ZGRpbmcgY29ubmVjdG9yIGF0b21pYyBjaGVjayB0byByZWxlYXNlIHZjcGkgc2xvdHMgaWYgY29u bmVjdG9yDQo+IGxvc2VzIENSVEMNCj4gLSBDYWxjdWxhdGUgIFBCTiBhbmQgVkNQSSBzbG90cyBv bmx5IG9uY2UgZHVyaW5nIGF0b21pYw0KPiBjaGVjayBhbmQgc3RvcmUgdGhlbSBvbiBjcnRjX3N0 YXRlIHRvIGVsaW1pbmF0ZQ0KPiByZWR1bmRhbnQgY2FsY3VsYXRpb24NCj4gLSBDYWxsIGRybV9k cF9tc3RfYXRvbWljX2NoZWNrIHRvIHZlcmlmeSB2YWxpZGl0eSBvZiBNU1QgdG9wb2xvZ3kNCj4g ZHVyaW5nIHN0YXRlIGF0b21pYyBjaGVjaw0KPiANCj4gdjI6IHNxdWFzaGVkIHByZXZpb3VzIDMg c2VwYXJhdGUgcGF0Y2hlcywgcmVtb3ZlZCBEU0MgUEJOIGNhbGN1bGF0aW9uLA0KPiBhbmQgYWRk ZWQgUEJOIGFuZCBWQ1BJIHNsb3RzIHByb3BlcnRpZXMgdG8gYW1kZ3B1IGNvbm5lY3Rvcg0KPiAN Cj4gdjM6DQo+IC0gbW92ZWQgdmNwaV9zbG90cyBhbmQgcGJuIHByb3BlcnRpZXMgdG8gZG1fY3J0 Y19zdGF0ZSBhbmQgZGNfc3RyZWFtX3N0YXRlDQo+IC0gdXBkYXRlcyBzdHJlYW0ncyB2Y3BpX3Ns b3RzIGFuZCBwYm4gb24gY29tbWl0DQo+IC0gc2VwYXJhdGVkIHBhdGNoIGZyb20gdGhlIERTQyBN U1Qgc2VyaWVzDQo+IA0KPiB2NDoNCj4gLSBzZXQgdmNwaV9zbG90cyBhbmQgcGJuIHByb3BlcnRp ZXMgdG8gZG1fY29ubmVjdG9yX3N0YXRlDQo+IC0gY29weSBwb3JwZXJ0aWVzIGZyb20gY29ubmVj dG9yIHN0YXRlIG9uIHRvIGNydGMgc3RhdGUNCj4gDQo+IHY1Og0KPiAtIGtlZXAgdGhlIHBibiBh bmQgdmNwaSB2YWx1ZXMgb25seSBvbiBjb25ubmVjdG9yIHN0YXRlDQo+IC0gYWRkZWQgYSB2b2lk IHBvaW50ZXIgdG8gdGhlIHN0cmVhbSBzdGF0ZSBpbnN0ZWFkIG9uIHR3byBpbnRzLA0KPiBiZWNh dXNlIGRjX3N0cmVhbV9zdGF0ZSBpcyBPUyBhZ25vc3RpYy4gUG9pbnRlciBwb2ludHMgdG8gdGhl DQo+IGN1cnJlbnQgZG1fY29ubmVjdG9yX3N0YXRlLg0KPiANCj4gdjY6DQo+IC0gUmVtb3ZlIG5l dyBwYXJhbSBmcm9tIHN0cmVhbQ0KPiANCj4gdjc6DQo+IC0gRml4IGVycm9yIHdpdGggdXNpbmcg bWF4IGNhcGFibGUgYnBjDQo+IA0KPiBDYzogSnVuIExlaSA8SnVuLkxlaUBhbWQuY29tPg0KPiBD YzogSmVycnkgWnVvIDxKZXJyeS5adW9AYW1kLmNvbT4NCj4gQ2M6IEhhcnJ5IFdlbnRsYW5kIDxo YXJyeS53ZW50bGFuZEBhbWQuY29tPg0KPiBDYzogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9s YXMua2F6bGF1c2thc0BhbWQuY29tPg0KPiBDYzogTHl1ZGUgUGF1bCA8bHl1ZGVAcmVkaGF0LmNv bT4NCj4gU2lnbmVkLW9mZi1ieTogTWlraXRhIExpcHNraSA8bWlraXRhLmxpcHNraUBhbWQuY29t Pg0KDQpSZXZpZXdlZC1ieTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2th c0BhbWQuY29tPg0KDQpZb3UgbWlnaHQgd2FudCB0byB2ZXJpZnkgdGhhdCB0aGlzIHN0aWxsIHdv cmtzIGFzIHlvdSBleHBlY3Qgd2hlbiANCmNoYW5naW5nICJtYXggYnBjIiBvbiBhbiBNU1QgZGlz cGxheS4NCg0KTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0J2Qgc3RpbGwgZm9yY2UgYSBuZXcg bW9kZXNldCBiZWZvcmUgZW5jb2RlciANCmF0b21pYyBjaGVjayBpcyBjYWxsZWQgc28geW91ICpz aG91bGQqIGhhdmUgdGhlIGNvcnJlY3QgYnBjIHZhbHVlIGR1cmluZyANCk1TVCBjYWxjdWxhdGlv bnMuDQoNCj4gLS0tDQo+ICAgLi4uL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdw dV9kbS5jIHwgNjUgKysrKysrKysrKysrKysrKysrLQ0KPiAgIC4uLi9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uaCB8ICAyICsNCj4gICAuLi4vYW1kL2Rpc3BsYXkvYW1k Z3B1X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMgfCA1MSArKysrLS0tLS0tLS0tLS0NCj4gICAuLi4v ZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jICAgfCAzMiArKysrKysrKysN Cj4gICA0IGZpbGVzIGNoYW5nZWQsIDEwOSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkN Cj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2Rt L2FtZGdwdV9kbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRn cHVfZG0uYw0KPiBpbmRleCA0OGY1YjQzZTI2OTguLmQ3NTcyNjAxMzQzNiAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYw0KPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jDQo+ IEBAIC00MTgwLDcgKzQxODAsOCBAQCB2b2lkIGFtZGdwdV9kbV9jb25uZWN0b3JfZnVuY3NfcmVz ZXQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4gICAJCXN0YXRlLT51bmRlcnNj YW5faGJvcmRlciA9IDA7DQo+ICAgCQlzdGF0ZS0+dW5kZXJzY2FuX3Zib3JkZXIgPSAwOw0KPiAg IAkJc3RhdGUtPmJhc2UubWF4X3JlcXVlc3RlZF9icGMgPSA4Ow0KPiAtDQo+ICsJCXN0YXRlLT52 Y3BpX3Nsb3RzID0gMDsNCj4gKwkJc3RhdGUtPnBibiA9IDA7DQo+ICAgCQlpZiAoY29ubmVjdG9y LT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQ0KPiAgIAkJCXN0YXRl LT5hYm1fbGV2ZWwgPSBhbWRncHVfZG1fYWJtX2xldmVsOw0KPiAgIA0KPiBAQCAtNDIwOSw3ICs0 MjEwLDggQEAgYW1kZ3B1X2RtX2Nvbm5lY3Rvcl9hdG9taWNfZHVwbGljYXRlX3N0YXRlKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+ICAgCW5ld19zdGF0ZS0+dW5kZXJzY2FuX2Vu YWJsZSA9IHN0YXRlLT51bmRlcnNjYW5fZW5hYmxlOw0KPiAgIAluZXdfc3RhdGUtPnVuZGVyc2Nh bl9oYm9yZGVyID0gc3RhdGUtPnVuZGVyc2Nhbl9oYm9yZGVyOw0KPiAgIAluZXdfc3RhdGUtPnVu ZGVyc2Nhbl92Ym9yZGVyID0gc3RhdGUtPnVuZGVyc2Nhbl92Ym9yZGVyOw0KPiAtDQo+ICsJbmV3 X3N0YXRlLT52Y3BpX3Nsb3RzID0gc3RhdGUtPnZjcGlfc2xvdHM7DQo+ICsJbmV3X3N0YXRlLT5w Ym4gPSBzdGF0ZS0+cGJuOw0KPiAgIAlyZXR1cm4gJm5ld19zdGF0ZS0+YmFzZTsNCj4gICB9DQo+ ICAgDQo+IEBAIC00NjA2LDEwICs0NjA4LDY0IEBAIHN0YXRpYyB2b2lkIGRtX2VuY29kZXJfaGVs cGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQ0KPiAgIA0KPiAgIH0NCj4g ICANCj4gK3N0YXRpYyBpbnQgY29udmVydF9kY19jb2xvcl9kZXB0aF9pbnRvX2JwYyAoZW51bSBk Y19jb2xvcl9kZXB0aCBkaXNwbGF5X2NvbG9yX2RlcHRoKQ0KPiArew0KPiArCXN3aXRjaCAoZGlz cGxheV9jb2xvcl9kZXB0aCkgew0KPiArCQljYXNlIENPTE9SX0RFUFRIXzY2NjoNCj4gKwkJCXJl dHVybiA2Ow0KPiArCQljYXNlIENPTE9SX0RFUFRIXzg4ODoNCj4gKwkJCXJldHVybiA4Ow0KPiAr CQljYXNlIENPTE9SX0RFUFRIXzEwMTAxMDoNCj4gKwkJCXJldHVybiAxMDsNCj4gKwkJY2FzZSBD T0xPUl9ERVBUSF8xMjEyMTI6DQo+ICsJCQlyZXR1cm4gMTI7DQo+ICsJCWNhc2UgQ09MT1JfREVQ VEhfMTQxNDE0Og0KPiArCQkJcmV0dXJuIDE0Ow0KPiArCQljYXNlIENPTE9SX0RFUFRIXzE2MTYx NjoNCj4gKwkJCXJldHVybiAxNjsNCj4gKwkJZGVmYXVsdDoNCj4gKwkJCWJyZWFrOw0KPiArCQl9 DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gICBzdGF0aWMgaW50IGRtX2VuY29kZXJfaGVs cGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsDQo+ICAgCQkJCQkg IHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gICAJCQkJCSAgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpDQo+ICAgew0KPiArCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUtPnN0YXRlOw0KPiArCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7DQo+ICsJc3RydWN0IGFt ZGdwdV9kbV9jb25uZWN0b3IgKmFjb25uZWN0b3IgPSB0b19hbWRncHVfZG1fY29ubmVjdG9yKGNv bm5lY3Rvcik7DQo+ICsJc3RydWN0IGRtX2Nvbm5lY3Rvcl9zdGF0ZSAqZG1fbmV3X2Nvbm5lY3Rv cl9zdGF0ZSA9IHRvX2RtX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsNCj4gKwljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5hZGp1 c3RlZF9tb2RlOw0KPiArCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbXN0X21ncjsN Cj4gKwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICptc3RfcG9ydDsNCj4gKwllbnVtIGRjX2NvbG9y X2RlcHRoIGNvbG9yX2RlcHRoOw0KPiArCWludCBjbG9jaywgYnBwID0gMDsNCj4gKw0KPiArCWlm ICghYWNvbm5lY3Rvci0+cG9ydCB8fCAhYWNvbm5lY3Rvci0+ZGNfc2luaykNCj4gKwkJcmV0dXJu IDA7DQo+ICsNCj4gKwltc3RfcG9ydCA9IGFjb25uZWN0b3ItPnBvcnQ7DQo+ICsJbXN0X21nciA9 ICZhY29ubmVjdG9yLT5tc3RfcG9ydC0+bXN0X21ncjsNCj4gKw0KPiArCWlmICghY3J0Y19zdGF0 ZS0+Y29ubmVjdG9yc19jaGFuZ2VkICYmICFjcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQpDQo+ICsJ CXJldHVybiAwOw0KPiArDQo+ICsJaWYgKCFzdGF0ZS0+ZHVwbGljYXRlZCkgew0KPiArCQljb2xv cl9kZXB0aCA9IGNvbnZlcnRfY29sb3JfZGVwdGhfZnJvbV9kaXNwbGF5X2luZm8oY29ubmVjdG9y LCBjb25uX3N0YXRlKTsNCj4gKwkJYnBwID0gY29udmVydF9kY19jb2xvcl9kZXB0aF9pbnRvX2Jw Yyhjb2xvcl9kZXB0aCkgKiAzOw0KDQpNaW5vciBuaXRwaWNrIGhlcmUgLSB0aGlzIGlzIGNvbnZl cnRpbmcgZnJvbSBhIG51bWVyaWNhbCBicGMgdG8gYSBEQyANCmVudW0gYW5kIHRoZW4gZnJvbSB0 aGUgREMgZW51bSBiYWNrIHRvIGEgbnVtZXJpY2FsIGJwYy4gQWxtb3N0IHNlZW1zIA0KbGlrZSB3 ZSBzaG91bGQganVzdCBoYXZlIGEgaGVscGVyIHRvIGdldCB0aGUgbnVtZXJpY2FsIGJwYy4NCg0K TG9naWMgc2VlbXMgZmluZSB0aG91Z2guDQoNCj4gKwkJY2xvY2sgPSBhZGp1c3RlZF9tb2RlLT5j bG9jazsNCj4gKwkJZG1fbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+cGJuID0gZHJtX2RwX2NhbGNfcGJu X21vZGUoY2xvY2ssIGJwcCk7DQo+ICsJfQ0KPiArCWRtX25ld19jb25uZWN0b3Jfc3RhdGUtPnZj cGlfc2xvdHMgPSBkcm1fZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyhzdGF0ZSwNCj4gKwkJCQkJ CQkJCSAgIG1zdF9tZ3IsDQo+ICsJCQkJCQkJCQkgICBtc3RfcG9ydCwNCj4gKwkJCQkJCQkJCSAg IGRtX25ld19jb25uZWN0b3Jfc3RhdGUtPnBibik7DQo+ICsJaWYgKGRtX25ld19jb25uZWN0b3Jf c3RhdGUtPnZjcGlfc2xvdHMgPCAwKSB7DQo+ICsJCURSTV9ERUJVR19BVE9NSUMoImZhaWxlZCBm aW5kaW5nIHZjcGkgc2xvdHM6ICVkXG4iLCAoaW50KWRtX25ld19jb25uZWN0b3Jfc3RhdGUtPnZj cGlfc2xvdHMpOw0KPiArCQlyZXR1cm4gZG1fbmV3X2Nvbm5lY3Rvcl9zdGF0ZS0+dmNwaV9zbG90 czsNCj4gKwl9DQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gQEAgLTc2NTEsNiArNzcw NywxMSBAQCBzdGF0aWMgaW50IGFtZGdwdV9kbV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZp Y2UgKmRldiwNCj4gICAJaWYgKHJldCkNCj4gICAJCWdvdG8gZmFpbDsNCj4gICANCj4gKwkvKiBQ ZXJmb3JtIHZhbGlkYXRpb24gb2YgTVNUIHRvcG9sb2d5IGluIHRoZSBzdGF0ZSovDQo+ICsJcmV0 ID0gZHJtX2RwX21zdF9hdG9taWNfY2hlY2soc3RhdGUpOw0KPiArCWlmIChyZXQpDQo+ICsJCWdv dG8gZmFpbDsNCj4gKw0KPiAgIAlpZiAoc3RhdGUtPmxlZ2FjeV9jdXJzb3JfdXBkYXRlKSB7DQo+ ICAgCQkvKg0KPiAgIAkJICogVGhpcyBpcyBhIGZhc3QgY3Vyc29yIHVwZGF0ZSBjb21pbmcgZnJv bSB0aGUgcGxhbmUgdXBkYXRlDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5 L2FtZGdwdV9kbS9hbWRncHVfZG0uaA0KPiBpbmRleCBjNmZkZWJlZTcxODkuLjkxMGM4NTk4ZmFm OSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG0uaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2Rt L2FtZGdwdV9kbS5oDQo+IEBAIC0zNjAsNiArMzYwLDggQEAgc3RydWN0IGRtX2Nvbm5lY3Rvcl9z dGF0ZSB7DQo+ICAgCWJvb2wgZnJlZXN5bmNfZW5hYmxlOw0KPiAgIAlib29sIGZyZWVzeW5jX2Nh cGFibGU7DQo+ICAgCXVpbnQ4X3QgYWJtX2xldmVsOw0KPiArCXVpbnQ2NF90IHZjcGlfc2xvdHM7 DQo+ICsJdWludDY0X3QgcGJuOw0KPiAgIH07DQo+ICAgDQo+ICAgI2RlZmluZSB0b19kbV9jb25u ZWN0b3Jfc3RhdGUoeClcDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMNCj4gaW5kZXggMTFlNTc4NGFhNjJh Li4xYjJjYzg1YjQ4MTUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hlbHBlcnMuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9oZWxwZXJzLmMNCj4gQEAgLTE4MiwxNSAr MTgyLDIwIEBAIGJvb2wgZG1faGVscGVyc19kcF9tc3Rfd3JpdGVfcGF5bG9hZF9hbGxvY2F0aW9u X3RhYmxlKA0KPiAgIAkJYm9vbCBlbmFibGUpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Rt X2Nvbm5lY3RvciAqYWNvbm5lY3RvcjsNCj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yOw0KPiArCXN0cnVjdCBkbV9jb25uZWN0b3Jfc3RhdGUgKmRtX2Nvbm5fc3RhdGU7DQo+ICAg CXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbXN0X21ncjsNCj4gICAJc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqbXN0X3BvcnQ7DQo+IC0JaW50IHNsb3RzID0gMDsNCj4gICAJYm9vbCBy ZXQ7DQo+IC0JaW50IGNsb2NrOw0KPiAtCWludCBicHAgPSAwOw0KPiAtCWludCBwYm4gPSAwOw0K PiAgIA0KPiAgIAlhY29ubmVjdG9yID0gKHN0cnVjdCBhbWRncHVfZG1fY29ubmVjdG9yICopc3Ry ZWFtLT5kbV9zdHJlYW1fY29udGV4dDsNCj4gKwkvKiBBY2Nlc3NpbmcgdGhlIGNvbm5lY3RvciBz dGF0ZSBpcyByZXF1aXJlZCBmb3IgdmNwaV9zbG90cyBhbGxvY2F0aW9uDQo+ICsJICogYW5kIGRp cmVjdGx5IHJlbGllcyBvbiBiZWhhdmlvdXIgaW4gY29tbWl0IGNoZWNrDQo+ICsJICogdGhhdCBi bG9ja3MgYmVmb3JlIGNvbW1pdCBndWFyYW50ZWVpbmcgdGhhdCB0aGUgc3RhdGUNCj4gKwkgKiBp cyBub3QgZ29ubmEgYmUgc3dhcHBlZCB3aGlsZSBzdGlsbCBpbiB1c2UgaW4gY29tbWl0IHRhaWwg Ki8NCj4gKw0KPiArCWRtX2Nvbm5fc3RhdGUgPSB0b19kbV9jb25uZWN0b3Jfc3RhdGUoYWNvbm5l Y3Rvci0+YmFzZS5zdGF0ZSk7DQo+ICsNCj4gICANCj4gICAJaWYgKCFhY29ubmVjdG9yIHx8ICFh Y29ubmVjdG9yLT5tc3RfcG9ydCkNCj4gICAJCXJldHVybiBmYWxzZTsNCj4gQEAgLTIwMyw0MiAr MjA4LDEwIEBAIGJvb2wgZG1faGVscGVyc19kcF9tc3Rfd3JpdGVfcGF5bG9hZF9hbGxvY2F0aW9u X3RhYmxlKA0KPiAgIAltc3RfcG9ydCA9IGFjb25uZWN0b3ItPnBvcnQ7DQo+ICAgDQo+ICAgCWlm IChlbmFibGUpIHsNCj4gLQkJY2xvY2sgPSBzdHJlYW0tPnRpbWluZy5waXhfY2xrXzEwMGh6IC8g MTA7DQo+IC0NCj4gLQkJc3dpdGNoIChzdHJlYW0tPnRpbWluZy5kaXNwbGF5X2NvbG9yX2RlcHRo KSB7DQo+IC0NCj4gLQkJY2FzZSBDT0xPUl9ERVBUSF82NjY6DQo+IC0JCQlicHAgPSA2Ow0KPiAt CQkJYnJlYWs7DQo+IC0JCWNhc2UgQ09MT1JfREVQVEhfODg4Og0KPiAtCQkJYnBwID0gODsNCj4g LQkJCWJyZWFrOw0KPiAtCQljYXNlIENPTE9SX0RFUFRIXzEwMTAxMDoNCj4gLQkJCWJwcCA9IDEw Ow0KPiAtCQkJYnJlYWs7DQo+IC0JCWNhc2UgQ09MT1JfREVQVEhfMTIxMjEyOg0KPiAtCQkJYnBw ID0gMTI7DQo+IC0JCQlicmVhazsNCj4gLQkJY2FzZSBDT0xPUl9ERVBUSF8xNDE0MTQ6DQo+IC0J CQlicHAgPSAxNDsNCj4gLQkJCWJyZWFrOw0KPiAtCQljYXNlIENPTE9SX0RFUFRIXzE2MTYxNjoN Cj4gLQkJCWJwcCA9IDE2Ow0KPiAtCQkJYnJlYWs7DQo+IC0JCWRlZmF1bHQ6DQo+IC0JCQlBU1NF UlQoYnBwICE9IDApOw0KPiAtCQkJYnJlYWs7DQo+IC0JCX0NCj4gLQ0KPiAtCQlicHAgPSBicHAg KiAzOw0KPiAtDQo+IC0JCS8qIFRPRE8gbmVlZCB0byBrbm93IGxpbmsgcmF0ZSAqLw0KPiAtDQo+ IC0JCXBibiA9IGRybV9kcF9jYWxjX3Bibl9tb2RlKGNsb2NrLCBicHApOw0KPiAtDQo+IC0JCXNs b3RzID0gZHJtX2RwX2ZpbmRfdmNwaV9zbG90cyhtc3RfbWdyLCBwYm4pOw0KPiAtCQlyZXQgPSBk cm1fZHBfbXN0X2FsbG9jYXRlX3ZjcGkobXN0X21nciwgbXN0X3BvcnQsIHBibiwgc2xvdHMpOw0K PiAgIA0KPiArCQlyZXQgPSBkcm1fZHBfbXN0X2FsbG9jYXRlX3ZjcGkobXN0X21nciwgbXN0X3Bv cnQsDQo+ICsJCQkJCSAgICAgICBkbV9jb25uX3N0YXRlLT5wYm4sDQo+ICsJCQkJCSAgICAgICBk bV9jb25uX3N0YXRlLT52Y3BpX3Nsb3RzKTsNCj4gICAJCWlmICghcmV0KQ0KPiAgIAkJCXJldHVy biBmYWxzZTsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9k aXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG1fbXN0X3R5cGVzLmMNCj4gaW5kZXggNzc5ZDBiNjBj YWM5Li4xYTE3ZWExYjQyZTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jDQo+IEBAIC0y NTEsMTAgKzI1MSw0MiBAQCBkbV9tc3RfYXRvbWljX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLA0KPiAgIAlyZXR1cm4gJnRvX2FtZGdwdV9kbV9jb25uZWN0b3Io Y29ubmVjdG9yKS0+bXN0X2VuY29kZXItPmJhc2U7DQo+ICAgfQ0KPiAgIA0KPiArc3RhdGljIGlu dCBkbV9kcF9tc3RfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is DQo+ICsJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPiArew0KPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfY29ubl9zdGF0ZSA9DQo+ICsJCQlkcm1fYXRvbWlj X2dldF9uZXdfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOw0KPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSA9DQo+ICsJCQlkcm1fYXRvbWljX2dl dF9vbGRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOw0KPiArCXN0cnVjdCBhbWRn cHVfZG1fY29ubmVjdG9yICphY29ubmVjdG9yID0gdG9fYW1kZ3B1X2RtX2Nvbm5lY3Rvcihjb25u ZWN0b3IpOw0KPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7DQo+ICsJ c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptc3RfbWdyOw0KPiArCXN0cnVjdCBkcm1f ZHBfbXN0X3BvcnQgKm1zdF9wb3J0Ow0KPiArDQo+ICsJbXN0X3BvcnQgPSBhY29ubmVjdG9yLT5w b3J0Ow0KPiArCW1zdF9tZ3IgPSAmYWNvbm5lY3Rvci0+bXN0X3BvcnQtPm1zdF9tZ3I7DQo+ICsN Cj4gKwlpZiAoIW9sZF9jb25uX3N0YXRlLT5jcnRjKQ0KPiArCQlyZXR1cm4gMDsNCj4gKw0KPiAr CWlmIChuZXdfY29ubl9zdGF0ZS0+Y3J0Yykgew0KPiArCQluZXdfY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBuZXdfY29ubl9zdGF0ZS0+Y3J0Yyk7DQo+ ICsJCWlmICghbmV3X2NydGNfc3RhdGUgfHwNCj4gKwkJICAgICFkcm1fYXRvbWljX2NydGNfbmVl ZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkgfHwNCj4gKwkJICAgIG5ld19jcnRjX3N0YXRlLT5l bmFibGUpDQo+ICsJCQlyZXR1cm4gMDsNCj4gKwkJfQ0KPiArDQo+ICsJcmV0dXJuIGRybV9kcF9h dG9taWNfcmVsZWFzZV92Y3BpX3Nsb3RzKHN0YXRlLA0KPiArCQkJCQkJbXN0X21nciwNCj4gKwkJ CQkJCW1zdF9wb3J0KTsNCj4gK30NCj4gKw0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3MgZG1fZHBfbXN0X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7 DQo+ICAgCS5nZXRfbW9kZXMgPSBkbV9kcF9tc3RfZ2V0X21vZGVzLA0KPiAgIAkubW9kZV92YWxp ZCA9IGFtZGdwdV9kbV9jb25uZWN0b3JfbW9kZV92YWxpZCwNCj4gICAJLmF0b21pY19iZXN0X2Vu Y29kZXIgPSBkbV9tc3RfYXRvbWljX2Jlc3RfZW5jb2RlciwNCj4gKwkuYXRvbWljX2NoZWNrID0g ZG1fZHBfbXN0X2F0b21pY19jaGVjaywNCj4gICB9Ow0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIGFt ZGdwdV9kbV9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQ0KPiAN Cg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs