From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Ding, Pixel" Subject: Re: [PATCH 3/3] drm/amdgpu: busywait KIQ register accessing v2 Date: Tue, 17 Oct 2017 08:38:49 +0000 Message-ID: References: <1508222267-18627-1-git-send-email-Pixel.Ding@amd.com> <1508222267-18627-4-git-send-email-Pixel.Ding@amd.com> <7f22595c-ae6d-f859-3ba6-42fe30a24707@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7f22595c-ae6d-f859-3ba6-42fe30a24707-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Koenig, Christian" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Liu, Monk" Cc: "Sun, Gary" , "Li, Bingley" DQpPbiAxNy8xMC8yMDE3LCA0OjIwIFBNLCAiS29lbmlnLCBDaHJpc3RpYW4iIDxDaHJpc3RpYW4u S29lbmlnQGFtZC5jb20+IHdyb3RlOg0KDQo+QW0gMTcuMTAuMjAxNyB1bSAwODozNyBzY2hyaWVi IFBpeGVsIERpbmc6DQo+PiBGcm9tOiBwZGluZyA8UGl4ZWwuRGluZ0BhbWQuY29tPg0KPj4NCj4+ IFJlZ2lzdGVyIGFjY2Vzc2luZyBpcyBwZXJmb3JtZWQgd2hlbiBJUlEgaXMgZGlzYWJsZWQuIE5l dmVyIHNsZWVwIGluDQo+PiB0aGlzIGZ1bmN0aW9uLg0KPj4NCj4+IEtub3duIGlzc3VlOiBkZWFk IHNsZWVwIGluIG1hbnkgdXNlIGNhc2VzIG9mIGluZGV4L2RhdGEgcmVnaXN0ZXJzLg0KPj4NCj4+ IHYyOiB3cmFwIHBvbGxpbmcgZmVuY2UgZnVuY3Rpb25zLiBkb24ndCB0cmlnZ2VyIElSUSBmb3Ig cG9sbGluZyBpbg0KPj4gY2FzZSBvZiB3cm9uZ2x5IGZlbmNlIHNpZ25hbC4NCj4+DQo+PiBTaWdu ZWQtb2ZmLWJ5OiBwZGluZyA8UGl4ZWwuRGluZ0BhbWQuY29tPg0KPj4gLS0tDQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICAgICAgfCAgMiArLQ0KPj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jIHwgIDQg Ky0NCj4+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjku YyB8ICA0ICstDQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2Uu YyAgICAgICAgfCAgOCArLS0tDQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9mZW5jZS5jICAgICAgICAgfCA1MyArKysrKysrKysrKysrKysrKysrKysrKw0KPj4gICBkcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmMgICAgICAgICAgIHwgIDIgKy0NCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaCAgICAgICAgICB8ICA0 ICsrDQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMgICAgICAg ICAgfCAzMCArKysrKystLS0tLS0tDQo+PiAgIDggZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9u cygrKSwgMjkgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 LmgNCj4+IGluZGV4IGNhMjEyZWYuLmNjMDZlNjIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgNCj4+IEBAIC04ODUsNyArODg1LDcgQEAgc3RydWN0IGFtZGdwdV9tZWMg ew0KPj4gICBzdHJ1Y3QgYW1kZ3B1X2tpcSB7DQo+PiAgIAl1NjQJCQllb3BfZ3B1X2FkZHI7DQo+ PiAgIAlzdHJ1Y3QgYW1kZ3B1X2JvCSplb3Bfb2JqOw0KPj4gLQlzdHJ1Y3QgbXV0ZXgJCXJpbmdf bXV0ZXg7DQo+PiArCXNwaW5sb2NrX3QgICAgICAgICAgICAgIHJpbmdfbG9jazsNCj4+ICAgCXN0 cnVjdCBhbWRncHVfcmluZwlyaW5nOw0KPj4gICAJc3RydWN0IGFtZGdwdV9pcnFfc3JjCWlycTsN Cj4+ICAgfTsNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYW1ka2ZkX2dmeF92OC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Ft ZGtmZF9nZnhfdjguYw0KPj4gaW5kZXggOWQ5OTY1ZC4uNmQ4MzU3MyAxMDA2NDQNCj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMNCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMNCj4+ IEBAIC03ODgsNyArNzg4LDcgQEAgc3RhdGljIGludCBpbnZhbGlkYXRlX3RsYnNfd2l0aF9raXEo c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQxNl90IHBhc2lkKQ0KPj4gICAJc3RydWN0 IGRtYV9mZW5jZSAqZjsNCj4+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZhZGV2LT5n Zngua2lxLnJpbmc7DQo+PiAgIA0KPj4gLQltdXRleF9sb2NrKCZhZGV2LT5nZngua2lxLnJpbmdf bXV0ZXgpOw0KPj4gKwlzcGluX2xvY2soJmFkZXYtPmdmeC5raXEucmluZ19sb2NrKTsNCj4+ICAg CWFtZGdwdV9yaW5nX2FsbG9jKHJpbmcsIDEyKTsgLyogZmVuY2UgKyBpbnZhbGlkYXRlX3RsYnMg cGFja2FnZSovDQo+PiAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNf SU5WQUxJREFURV9UTEJTLCAwKSk7DQo+PiAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLA0KPj4g QEAgLTc5Niw3ICs3OTYsNyBAQCBzdGF0aWMgaW50IGludmFsaWRhdGVfdGxic193aXRoX2tpcShz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDE2X3QgcGFzaWQpDQo+PiAgIAkJCVBBQ0tF VDNfSU5WQUxJREFURV9UTEJTX1BBU0lEKHBhc2lkKSk7DQo+PiAgIAlhbWRncHVfZmVuY2VfZW1p dChyaW5nLCAmZik7DQo+PiAgIAlhbWRncHVfcmluZ19jb21taXQocmluZyk7DQo+PiAtCW11dGV4 X3VubG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX211dGV4KTsNCj4+ICsJc3Bpbl91bmxvY2soJmFk ZXYtPmdmeC5raXEucmluZ19sb2NrKTsNCj4+ICAgDQo+PiAgIAlyID0gZG1hX2ZlbmNlX3dhaXQo ZiwgZmFsc2UpOw0KPj4gICAJaWYgKHIpDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjkuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMNCj4+IGluZGV4IGVkYmFlMTkuLmM5MjIxN2Yg MTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2Zk X2dmeF92OS5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dmeF92OS5jDQo+PiBAQCAtOTczLDcgKzk3Myw3IEBAIHN0YXRpYyBpbnQgaW52YWxpZGF0 ZV90bGJzX3dpdGhfa2lxKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MTZfdCBwYXNp ZCkNCj4+ICAgCXN0cnVjdCBkbWFfZmVuY2UgKmY7DQo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcgPSAmYWRldi0+Z2Z4LmtpcS5yaW5nOw0KPj4gICANCj4+IC0JbXV0ZXhfbG9jaygmYWRl di0+Z2Z4LmtpcS5yaW5nX211dGV4KTsNCj4+ICsJc3Bpbl9sb2NrKCZhZGV2LT5nZngua2lxLnJp bmdfbG9jayk7DQo+PiAgIAlhbWRncHVfcmluZ19hbGxvYyhyaW5nLCAxMik7IC8qIGZlbmNlICsg aW52YWxpZGF0ZV90bGJzIHBhY2thZ2UqLw0KPj4gICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywg UEFDS0VUMyhQQUNLRVQzX0lOVkFMSURBVEVfVExCUywgMCkpOw0KPj4gICAJYW1kZ3B1X3Jpbmdf d3JpdGUocmluZywNCj4+IEBAIC05ODMsNyArOTgzLDcgQEAgc3RhdGljIGludCBpbnZhbGlkYXRl X3RsYnNfd2l0aF9raXEoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQxNl90IHBhc2lk KQ0KPj4gICAJCQlQQUNLRVQzX0lOVkFMSURBVEVfVExCU19GTFVTSF9UWVBFKDIpKTsNCj4+ICAg CWFtZGdwdV9mZW5jZV9lbWl0KHJpbmcsICZmKTsNCj4+ICAgCWFtZGdwdV9yaW5nX2NvbW1pdChy aW5nKTsNCj4+IC0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5nZngua2lxLnJpbmdfbXV0ZXgpOw0KPj4g KwlzcGluX3VubG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2spOw0KPj4gICANCj4+ICAgCXIg PSBkbWFfZmVuY2Vfd2FpdChmLCBmYWxzZSk7DQo+PiAgIAlpZiAocikNCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4+IGluZGV4IGFiOGYwZDYuLjExOTcy NzQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2 aWNlLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2Uu Yw0KPj4gQEAgLTEwOSwxMCArMTA5LDggQEAgdWludDMyX3QgYW1kZ3B1X21tX3JyZWcoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHJlZywNCj4+ICAgew0KPj4gICAJdWludDMy X3QgcmV0Ow0KPj4gICANCj4+IC0JaWYgKCEoYWNjX2ZsYWdzICYgQU1ER1BVX1JFR1NfTk9fS0lR KSAmJiBhbWRncHVfc3Jpb3ZfcnVudGltZShhZGV2KSkgew0KPj4gLQkJQlVHX09OKGluX2ludGVy cnVwdCgpKTsNCj4+ICsJaWYgKCEoYWNjX2ZsYWdzICYgQU1ER1BVX1JFR1NfTk9fS0lRKSAmJiBh bWRncHVfc3Jpb3ZfcnVudGltZShhZGV2KSkNCj4+ICAgCQlyZXR1cm4gYW1kZ3B1X3ZpcnRfa2lx X3JyZWcoYWRldiwgcmVnKTsNCj4+IC0JfQ0KPj4gICANCj4+ICAgCWlmICgocmVnICogNCkgPCBh ZGV2LT5ybW1pb19zaXplICYmICEoYWNjX2ZsYWdzICYgQU1ER1BVX1JFR1NfSURYKSkNCj4+ICAg CQlyZXQgPSByZWFkbCgoKHZvaWQgX19pb21lbSAqKWFkZXYtPnJtbWlvKSArIChyZWcgKiA0KSk7 DQo+PiBAQCAtMTM3LDEwICsxMzUsOCBAQCB2b2lkIGFtZGdwdV9tbV93cmVnKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHYsDQo+PiAgIAkJYWRldi0+ bGFzdF9tbV9pbmRleCA9IHY7DQo+PiAgIAl9DQo+PiAgIA0KPj4gLQlpZiAoIShhY2NfZmxhZ3Mg JiBBTURHUFVfUkVHU19OT19LSVEpICYmIGFtZGdwdV9zcmlvdl9ydW50aW1lKGFkZXYpKSB7DQo+ PiAtCQlCVUdfT04oaW5faW50ZXJydXB0KCkpOw0KPj4gKwlpZiAoIShhY2NfZmxhZ3MgJiBBTURH UFVfUkVHU19OT19LSVEpICYmIGFtZGdwdV9zcmlvdl9ydW50aW1lKGFkZXYpKQ0KPj4gICAJCXJl dHVybiBhbWRncHVfdmlydF9raXFfd3JlZyhhZGV2LCByZWcsIHYpOw0KPj4gLQl9DQo+PiAgIA0K Pj4gICAJaWYgKChyZWcgKiA0KSA8IGFkZXYtPnJtbWlvX3NpemUgJiYgIShhY2NfZmxhZ3MgJiBB TURHUFVfUkVHU19JRFgpKQ0KPj4gICAJCXdyaXRlbCh2LCAoKHZvaWQgX19pb21lbSAqKWFkZXYt PnJtbWlvKSArIChyZWcgKiA0KSk7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2ZlbmNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZmVuY2UuYw0KPj4gaW5kZXggNjg4NzQwZS4uNjhhNWU5MCAxMDA2NDQNCj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9mZW5jZS5jDQo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZmVuY2UuYw0KPj4gQEAgLTE2OSw2ICsxNjksMzIg QEAgaW50IGFtZGdwdV9mZW5jZV9lbWl0KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0 IGRtYV9mZW5jZSAqKmYpDQo+PiAgIH0NCj4+ICAgDQo+PiAgIC8qKg0KPj4gKyAqIGFtZGdwdV9m ZW5jZV9lbWl0X3BvbGxpbmcgLSBlbWl0IGEgZmVuY2Ugb24gdGhlIHJlcXVlc3RlIHJpbmcNCj4+ ICsgKg0KPj4gKyAqIEByaW5nOiByaW5nIHRoZSBmZW5jZSBpcyBhc3NvY2lhdGVkIHdpdGgNCj4+ ICsgKiBAczogcmVzdWx0aW5nIHNlcXVlbmNlIG51bWJlcg0KPj4gKyAqDQo+PiArICogRW1pdHMg YSBmZW5jZSBjb21tYW5kIG9uIHRoZSByZXF1ZXN0ZWQgcmluZyAoYWxsIGFzaWNzKS4NCj4+ICsg KiBVc2VkIEZvciBwb2xsaW5nIGZlbmNlLg0KPj4gKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCAt RU5PTUVNIG9uIGZhaWx1cmUuDQo+PiArICovDQo+PiAraW50IGFtZGdwdV9mZW5jZV9lbWl0X3Bv bGxpbmcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCAqcykNCj4+ICt7DQo+PiAr CXVpbnQzMl90IHNlcTsNCj4+ICsNCj4+ICsJaWYgKCFzKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+PiArDQo+PiArCXNlcSA9ICsrcmluZy0+ZmVuY2VfZHJ2LnN5bmNfc2VxOw0KPj4gKwlhbWRn cHVfcmluZ19lbWl0X2ZlbmNlKHJpbmcsIHJpbmctPmZlbmNlX2Rydi5ncHVfYWRkciwNCj4+ICsJ CQkgICAgICAgc2VxLCBBTURHUFVfRkVOQ0VfRkxBR19JTlQpOw0KPj4gKw0KPj4gKwkqcyA9IHNl cTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0KPj4gICAgKiBh bWRncHVfZmVuY2Vfc2NoZWR1bGVfZmFsbGJhY2sgLSBzY2hlZHVsZSBmYWxsYmFjayBjaGVjaw0K Pj4gICAgKg0KPj4gICAgKiBAcmluZzogcG9pbnRlciB0byBzdHJ1Y3QgYW1kZ3B1X3JpbmcNCj4+ IEBAIC0yODEsNiArMzA3LDMzIEBAIGludCBhbWRncHVfZmVuY2Vfd2FpdF9lbXB0eShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpDQo+PiAgIAlyZXR1cm4gcjsNCj4+ICAgfQ0KPj4gICANCj4NCj5Q bGVhc2UgYWRkIHNvbWUgZG9jdW1lbnRhdGlvbiBoZXJlIHRoYXQgdGltZW91dCBpcyBpbiB1c2Vj Lg0KW1BpeGVsXSBzdXJlLg0KPg0KPj4gK3NpZ25lZCBsb25nIGFtZGdwdV9mZW5jZV93YWl0X3Bv bGxpbmcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLA0KPj4gKwkJCQkgICAgICB1aW50MzJfdCB3 YWl0X3NlcSwNCj4+ICsJCQkJICAgICAgc2lnbmVkIGxvbmcgdGltZW91dCkNCj4+ICt7DQo+PiAr CXVpbnQzMl90IHNlcSwgbGFzdF9zZXE7DQo+PiArCXN0cnVjdCBhbWRncHVfZmVuY2VfZHJpdmVy ICpkcnYgPSAmcmluZy0+ZmVuY2VfZHJ2Ow0KPj4gKw0KPj4gKwlsYXN0X3NlcSA9IGF0b21pY19y ZWFkKCZyaW5nLT5mZW5jZV9kcnYubGFzdF9zZXEpOw0KPj4gKw0KPj4gKwlkbyB7DQo+PiArCQlz ZXEgPSBhbWRncHVfZmVuY2VfcmVhZChyaW5nKTsNCj4+ICsNCj4+ICsJCWlmICh1bmxpa2VseShz ZXEgPT0gbGFzdF9zZXEpKQ0KPj4gKwkJCWJyZWFrOw0KPg0KPlRoYXQgZG9lc24ndCBsb29rIGNv cnJlY3QgdG8gbWUsIGl0IHdpbGwgYWJvcnQgdGhlIGJ1c3kgd2FpdCBhcyBzb29uIGFzIA0KPndl IHNlZSB0aGUgbGFzdCB2YWx1ZSB3ZSBoYXZlIHNlZW4uDQo+W3BpeGVsXXlvdeKAmXJlIHJpZ2h0 LiBNeSBpbnRlbnRpb24gaXMgdG8gdXNlIHRoZSDigJxzZXEiIGFzIGxhdGVzdCBzdWJtaXR0ZWQg b25lKHN5bmNfc2VxKSwgdGhlbiBpdCBtZWFucyBhbGwgc3VibWl0dGVkIHNlcXMgYXJlIG5vdGlm aWVkLiBUaGlzIGNvbmRpdGlvbiBjb3VsZCBiZSByZW1vdmVkLg0KPj4gKwkJaWYgKHNlcSA+PSB3 YWl0X3NlcSAmJiB3YWl0X3NlcSA+PSBsYXN0X3NlcSkNCj4+ICsJCQlicmVhazsNCj4+ICsJCWlm IChzZXEgPD0gbGFzdF9zZXEgJiYNCj4+ICsJCSAgICAod2FpdF9zZXEgPD0gc2VxIHx8IHdhaXRf c2VxID49IGxhc3Rfc2VxKSkNCj4+ICsJCQlicmVhazsNCj4NCj5XaHkgbm90IGp1c3QgIihpbnQz Ml90KSh3YWl0X3NlcSAtIHNlcSkgPiAwIiA/IElJUkMgdGhhdCBzaG91bGQgYmUgDQo+c3VmZmlj aWVudCBmb3IgYSB3cmFwIGFyb3VuZCB0ZXN0Lg0KPltwaXhlbF0gc2VxIGNvdWxkIGJlIGxhcmdl ciAoZXhlY3V0ZWQpIG9yIHNtYWxsZXIgKG5vdCB5ZXQpIHRoYW4gd2FpdF9zZXEgZXZlbiB3aXRo b3V0IGEgd3JhcCByb3VuZCwgSSB0aGluayB5b3UgbWVhbiAiKGludDMyX3QpKGxhc3Rfc2VxIC0g c2VxKSA+IDDigJ0NCj5pdCBhY3R1YWxseSBjYW4ga25vdyB0aGVyZeKAmXMgYSB3cmFwIGFyb3Vu ZCwgYnV0IGl0IHN0aWxsIGRvZXNuJ3Qga25vdyBpZiB0aGUgd2FpdGVkIHNlcSBpcyBpbiB0aGUg cmFuZ2UgYmV0d2VlbiBvciBub3QsIHdlIHN0aWxsIG5lZWQgb3RoZXIgY29uZGl0aW9ucy4gQ29k ZSBoZXJlIGlzIHRvIGlkZW50aWZ5IGNhc2VzIHRvIGJyZWFrIGFzOg0KDQo9PT1sYXN0X3NlcT09 PT09d2FpdF9zZXE9PT09c2VxPT09DQo9PT13YWl0X3NlcT09c2VxPT09PT09PT1sYXN0X3NlcT09 DQo9PXNlcT09PT09PT09PT1sYXN0X3NlcT09d2FpdF9zZXE9DQoNCkRvZXMgaXQgbWFrZSBzZW5z ZT8NCg0KUmVnYXJkcy4NClBpeGVsDQo+DQo+PiArCQl1ZGVsYXkoNSk7DQo+PiArCQl0aW1lb3V0 IC09IDU7DQo+PiArCX0gd2hpbGUgKHRpbWVvdXQgPiAwKTsNCj4+ICsNCj4+ICsJYXRvbWljX2Nt cHhjaGcoJmRydi0+bGFzdF9zZXEsIGxhc3Rfc2VxLCB3YWl0X3NlcSk7DQo+PiArDQo+PiArCXJl dHVybiB0aW1lb3V0Ow0KPj4gK30NCj4+ICAgLyoqDQo+PiAgICAqIGFtZGdwdV9mZW5jZV9jb3Vu dF9lbWl0dGVkIC0gZ2V0IHRoZSBjb3VudCBvZiBlbWl0dGVkIGZlbmNlcw0KPj4gICAgKg0KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZnguYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZnguYw0KPj4gaW5kZXggNGY2YzY4Zi4u ZTVhOTA3NyAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdw dV9nZnguYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dmeC5j DQo+PiBAQCAtMTg1LDcgKzE4NSw3IEBAIGludCBhbWRncHVfZ2Z4X2tpcV9pbml0X3Jpbmcoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+PiAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0g JmFkZXYtPmdmeC5raXE7DQo+PiAgIAlpbnQgciA9IDA7DQo+PiAgIA0KPj4gLQltdXRleF9pbml0 KCZraXEtPnJpbmdfbXV0ZXgpOw0KPj4gKwlzcGluX2xvY2tfaW5pdCgma2lxLT5yaW5nX2xvY2sp Ow0KPj4gICANCj4+ICAgCXIgPSBhbWRncHVfd2JfZ2V0KGFkZXYsICZhZGV2LT52aXJ0LnJlZ192 YWxfb2Zmcyk7DQo+PiAgIAlpZiAocikNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcmluZy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaA0KPj4gaW5kZXggYWY4ZTU0NC4uOWRlODllYSAxMDA2NDQNCj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgNCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgNCj4+IEBAIC04OSw4ICs4OSwxMiBAQCBp bnQgYW1kZ3B1X2ZlbmNlX2RyaXZlcl9zdGFydF9yaW5nKHN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZywNCj4+ICAgdm9pZCBhbWRncHVfZmVuY2VfZHJpdmVyX3N1c3BlbmQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpOw0KPj4gICB2b2lkIGFtZGdwdV9mZW5jZV9kcml2ZXJfcmVzdW1lKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KTsNCj4+ICAgaW50IGFtZGdwdV9mZW5jZV9lbWl0KHN0cnVj dCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsNCj4+ICtpbnQg YW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQz Ml90ICpzKTsNCj4+ICAgdm9pZCBhbWRncHVfZmVuY2VfcHJvY2VzcyhzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcpOw0KPj4gICBpbnQgYW1kZ3B1X2ZlbmNlX3dhaXRfZW1wdHkoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nKTsNCj4+ICtzaWduZWQgbG9uZyBhbWRncHVfZmVuY2Vfd2FpdF9wb2xsaW5n KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywNCj4+ICsJCQkJICAgICAgdWludDMyX3Qgd2FpdF9z ZXEsDQo+PiArCQkJCSAgICAgIHNpZ25lZCBsb25nIHRpbWVvdXQpOw0KPj4gICB1bnNpZ25lZCBh bWRncHVfZmVuY2VfY291bnRfZW1pdHRlZChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOw0KPj4g ICANCj4+ICAgLyoNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfdmlydC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZpcnQuYw0K Pj4gaW5kZXggYWIwNTEyMS4uMTc3ZmUxMCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV92aXJ0LmMNCj4+IEBAIC0yMiw3ICsyMiw3IEBADQo+PiAgICAqLw0KPj4g ICANCj4+ICAgI2luY2x1ZGUgImFtZGdwdS5oIg0KPj4gLSNkZWZpbmUgTUFYX0tJUV9SRUdfV0FJ VAkxMDAwMDANCj4+ICsjZGVmaW5lIE1BWF9LSVFfUkVHX1dBSVQJMTAwMDAwMDAwIC8qIGluIHVz ZWNzICovDQo+PiAgIA0KPj4gICBpbnQgYW1kZ3B1X2FsbG9jYXRlX3N0YXRpY19jc2Eoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAgIHsNCj4+IEBAIC0xMTQsMjcgKzExNCwyNCBAQCB2 b2lkIGFtZGdwdV92aXJ0X2luaXRfc2V0dGluZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikN Cj4+ICAgdWludDMyX3QgYW1kZ3B1X3ZpcnRfa2lxX3JyZWcoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsIHVpbnQzMl90IHJlZykNCj4+ICAgew0KPj4gICAJc2lnbmVkIGxvbmcgcjsNCj4+IC0J dWludDMyX3QgdmFsOw0KPj4gLQlzdHJ1Y3QgZG1hX2ZlbmNlICpmOw0KPj4gKwl1aW50MzJfdCB2 YWwsIHNlcTsNCj4+ICAgCXN0cnVjdCBhbWRncHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsN Cj4+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZraXEtPnJpbmc7DQo+PiAgIA0KPj4g ICAJQlVHX09OKCFyaW5nLT5mdW5jcy0+ZW1pdF9ycmVnKTsNCj4+ICAgDQo+PiAtCW11dGV4X2xv Y2soJmtpcS0+cmluZ19tdXRleCk7DQo+PiArCXNwaW5fbG9jaygma2lxLT5yaW5nX2xvY2spOw0K Pj4gICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywgMzIpOw0KPj4gICAJYW1kZ3B1X3JpbmdfZW1p dF9ycmVnKHJpbmcsIHJlZyk7DQo+PiAtCWFtZGdwdV9mZW5jZV9lbWl0KHJpbmcsICZmKTsNCj4+ ICsJYW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAmc2VxKTsNCj4+ICAgCWFtZGdwdV9y aW5nX2NvbW1pdChyaW5nKTsNCj4+IC0JbXV0ZXhfdW5sb2NrKCZraXEtPnJpbmdfbXV0ZXgpOw0K Pj4gKwlzcGluX3VubG9jaygma2lxLT5yaW5nX2xvY2spOw0KPj4gICANCj4+IC0JciA9IGRtYV9m ZW5jZV93YWl0X3RpbWVvdXQoZiwgZmFsc2UsIG1zZWNzX3RvX2ppZmZpZXMoTUFYX0tJUV9SRUdf V0FJVCkpOw0KPj4gLQlkbWFfZmVuY2VfcHV0KGYpOw0KPj4gKwlyID0gYW1kZ3B1X2ZlbmNlX3dh aXRfcG9sbGluZyhyaW5nLCBzZXEsIE1BWF9LSVFfUkVHX1dBSVQpOw0KPj4gICAJaWYgKHIgPCAx KSB7DQo+PiAtCQlEUk1fRVJST1IoIndhaXQgZm9yIGtpcSBmZW5jZSBlcnJvcjogJWxkLlxuIiwg cik7DQo+PiArCQlEUk1fRVJST1IoIndhaXQgZm9yIGtpcSBmZW5jZSBlcnJvcjogJWxkXG4iLCBy KTsNCj4+ICAgCQlyZXR1cm4gfjA7DQo+PiAgIAl9DQo+PiAtDQo+PiAgIAl2YWwgPSBhZGV2LT53 Yi53YlthZGV2LT52aXJ0LnJlZ192YWxfb2Zmc107DQo+PiAgIA0KPj4gICAJcmV0dXJuIHZhbDsN Cj4+IEBAIC0xNDMsMjMgKzE0MCwyMiBAQCB1aW50MzJfdCBhbWRncHVfdmlydF9raXFfcnJlZyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgcmVnKQ0KPj4gICB2b2lkIGFtZGdw dV92aXJ0X2tpcV93cmVnKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1aW50MzJfdCByZWcs IHVpbnQzMl90IHYpDQo+PiAgIHsNCj4+ICAgCXNpZ25lZCBsb25nIHI7DQo+PiAtCXN0cnVjdCBk bWFfZmVuY2UgKmY7DQo+PiArCXVpbnQzMl90IHNlcTsNCj4+ICAgCXN0cnVjdCBhbWRncHVfa2lx ICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsNCj4+ICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9 ICZraXEtPnJpbmc7DQo+PiAgIA0KPj4gICAJQlVHX09OKCFyaW5nLT5mdW5jcy0+ZW1pdF93cmVn KTsNCj4+ICAgDQo+PiAtCW11dGV4X2xvY2soJmtpcS0+cmluZ19tdXRleCk7DQo+PiArCXNwaW5f bG9jaygma2lxLT5yaW5nX2xvY2spOw0KPj4gICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywgMzIp Ow0KPj4gICAJYW1kZ3B1X3JpbmdfZW1pdF93cmVnKHJpbmcsIHJlZywgdik7DQo+PiAtCWFtZGdw dV9mZW5jZV9lbWl0KHJpbmcsICZmKTsNCj4+ICsJYW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhy aW5nLCAmc2VxKTsNCj4+ICAgCWFtZGdwdV9yaW5nX2NvbW1pdChyaW5nKTsNCj4+IC0JbXV0ZXhf dW5sb2NrKCZraXEtPnJpbmdfbXV0ZXgpOw0KPj4gKwlzcGluX3VubG9jaygma2lxLT5yaW5nX2xv Y2spOw0KPj4gICANCj4+IC0JciA9IGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZiwgZmFsc2UsIG1z ZWNzX3RvX2ppZmZpZXMoTUFYX0tJUV9SRUdfV0FJVCkpOw0KPj4gKwlyID0gYW1kZ3B1X2ZlbmNl X3dhaXRfcG9sbGluZyhyaW5nLCBzZXEsIE1BWF9LSVFfUkVHX1dBSVQpOw0KPj4gICAJaWYgKHIg PCAxKQ0KPj4gLQkJRFJNX0VSUk9SKCJ3YWl0IGZvciBraXEgZmVuY2UgZXJyb3I6ICVsZC5cbiIs IHIpOw0KPj4gLQlkbWFfZmVuY2VfcHV0KGYpOw0KPj4gKwkJRFJNX0VSUk9SKCJ3YWl0IGZvciBr aXEgZmVuY2UgZXJyb3I6ICVsZFxuIiwgcik7DQo+PiAgIH0NCj4+ICAgDQo+PiAgIC8qKg0KPg0K Pg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdm eCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==