From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: Re: [PATCH v5 3/6] drm/scheduler: rework job destruction Date: Mon, 22 Apr 2019 12:48:58 +0000 Message-ID: <9f7112b1-0348-b4f6-374d-e44c0d448112@amd.com> References: <1555599624-12285-1-git-send-email-andrey.grodzovsky@amd.com> <1555599624-12285-3-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1555599624-12285-3-git-send-email-andrey.grodzovsky@amd.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Grodzovsky, Andrey" , "dri-devel@lists.freedesktop.org" , "amd-gfx@lists.freedesktop.org" , "eric@anholt.net" , "etnaviv@lists.freedesktop.org" , "ckoenig.leichtzumerken@gmail.com" Cc: "Kazlauskas, Nicholas" , "Koenig, Christian" List-Id: dri-devel@lists.freedesktop.org SGkgQW5kcmV5LA0KDQpzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcHJvY2Vzc19qb2Ioc3RydWN0IGRt YV9mZW5jZSAqZiwgc3RydWN0IA0KZG1hX2ZlbmNlX2NiICpjYikNCnsNCi4uLg0KIMKgwqDCoMKg wqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0K IMKgwqDCoMKgwqDCoMKgIC8qIHJlbW92ZSBqb2IgZnJvbSByaW5nX21pcnJvcl9saXN0ICovDQog wqDCoMKgwqDCoMKgwqAgbGlzdF9kZWxfaW5pdCgmc19qb2ItPm5vZGUpOw0KIMKgwqDCoMKgwqDC oMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7 DQpbRGF2aWRdIEhvdyBhYm91dCBqdXN0IHJlbW92ZSBhYm92ZSB0byB3b3JrZXIgZnJvbSBpcnEg cHJvY2Vzcz8gQW55IA0KcHJvYmxlbT8gTWF5YmUgSSBtaXNzZWQgcHJldmlvdXMgeW91ciBkaXNj dXNzaW9uLCBidXQgSSB0aGluayByZW1vdmluZyANCmxvY2sgZm9yIGxpc3QgaXMgYSByaXNrIGZv ciBmdXR1cmUgbWFpbnRlbmFuY2UgYWx0aG91Z2ggeW91IG1ha2Ugc3VyZSANCnRocmVhZCBzYWZl IGN1cnJlbnRseS4NCg0KLURhdmlkDQoNCi4uLg0KDQogwqDCoMKgwqDCoMKgwqAgc2NoZWR1bGVf d29yaygmc19qb2ItPmZpbmlzaF93b3JrKTsNCn0NCg0K5ZyoIDIwMTkvNC8xOCAyMzowMCwgQW5k cmV5IEdyb2R6b3Zza3kg5YaZ6YGTOg0KPiBGcm9tOiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3Rp YW4ua29lbmlnQGFtZC5jb20+DQo+DQo+IFdlIG5vdyBkZXN0cm95IGZpbmlzaGVkIGpvYnMgZnJv bSB0aGUgd29ya2VyIHRocmVhZCB0byBtYWtlIHN1cmUgdGhhdA0KPiB3ZSBuZXZlciBkZXN0cm95 IGEgam9iIGN1cnJlbnRseSBpbiB0aW1lb3V0IHByb2Nlc3NpbmcuDQo+IEJ5IHRoaXMgd2UgYXZv aWQgaG9sZGluZyBsb2NrIGFyb3VuZCByaW5nIG1pcnJvciBsaXN0IGluIGRybV9zY2hlZF9zdG9w DQo+IHdoaWNoIHNob3VsZCBzb2x2ZSBhIGRlYWRsb2NrIHJlcG9ydGVkIGJ5IGEgdXNlci4NCj4N Cj4gdjI6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuDQo+IHY0OiBNb3ZlIGd1aWx0eSBqb2IgZnJl ZSBpbnRvIHNjaGVkIGNvZGUuDQo+IHY1Og0KPiBNb3ZlIHNjaGVkLT5od19ycV9jb3VudCB0byBk cm1fc2NoZWRfc3RhcnQgdG8gYWNjb3VudCBmb3IgY291bnRlcg0KPiBkZWNyZW1lbnQgaW4gZHJt X3NjaGVkX3N0b3AgZXZlbiB3aGVuIHdlIGRvbid0IGNhbGwgcmVzdWJtaXQgam9icw0KPiBpZiBn dWlseSBqb2IgZGlkIHNpZ25hbC4NCj4NCj4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVz a3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTY5Mg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBDaHJp c3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6 IEFuZHJleSBHcm9kem92c2t5IDxhbmRyZXkuZ3JvZHpvdnNreUBhbWQuY29tPg0KPiAtLS0NCj4g ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgfCAgIDkgKy0NCj4g ICBkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2R1bXAuYyAgICAgfCAgIDQgLQ0KPiAg IGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfc2NoZWQuYyAgICB8ICAgMiArLQ0KPiAg IGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYyAgICAgICAgICB8ICAgMiArLQ0KPiAg IGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9qb2IuYyAgICB8ICAgMiArLQ0KPiAg IGRyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvc2NoZWRfbWFpbi5jICAgICB8IDE1OSArKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3NjaGVk LmMgICAgICAgICAgICB8ICAgMiArLQ0KPiAgIGluY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaCAg ICAgICAgICAgICAgICB8ICAgNiArLQ0KPiAgIDggZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlv bnMoKyksIDg0IGRlbGV0aW9ucygtKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2RldmljZS5jDQo+IGluZGV4IDdjZWUyNjkuLmEwZTE2NWMgMTAwNjQ0DQo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYw0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMNCj4gQEAgLTMzMzQsNyArMzMz NCw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2RldmljZV9wcmVfYXNpY19yZXNldChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwNCj4gICAJCWlmICghcmluZyB8fCAhcmluZy0+c2NoZWQudGhyZWFk KQ0KPiAgIAkJCWNvbnRpbnVlOw0KPiAgIA0KPiAtCQlkcm1fc2NoZWRfc3RvcCgmcmluZy0+c2No ZWQpOw0KPiArCQlkcm1fc2NoZWRfc3RvcCgmcmluZy0+c2NoZWQsICZqb2ItPmJhc2UpOw0KPiAg IA0KPiAgIAkJLyogYWZ0ZXIgYWxsIGh3IGpvYnMgYXJlIHJlc2V0LCBodyBmZW5jZSBpcyBtZWFu aW5nbGVzcywgc28gZm9yY2VfY29tcGxldGlvbiAqLw0KPiAgIAkJYW1kZ3B1X2ZlbmNlX2RyaXZl cl9mb3JjZV9jb21wbGV0aW9uKHJpbmcpOw0KPiBAQCAtMzM0Myw4ICszMzQzLDYgQEAgc3RhdGlj IGludCBhbWRncHVfZGV2aWNlX3ByZV9hc2ljX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2LA0KPiAgIAlpZihqb2IpDQo+ICAgCQlkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoJmpvYi0+ YmFzZSk7DQo+ICAgDQo+IC0NCj4gLQ0KPiAgIAlpZiAoIWFtZGdwdV9zcmlvdl92ZihhZGV2KSkg ew0KPiAgIA0KPiAgIAkJaWYgKCFuZWVkX2Z1bGxfcmVzZXQpDQo+IEBAIC0zNDgyLDggKzM0ODAs NyBAQCBzdGF0aWMgaW50IGFtZGdwdV9kb19hc2ljX3Jlc2V0KHN0cnVjdCBhbWRncHVfaGl2ZV9p bmZvICpoaXZlLA0KPiAgIAlyZXR1cm4gcjsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCBh bWRncHVfZGV2aWNlX3Bvc3RfYXNpY19yZXNldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwN Cj4gLQkJCQkJICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iKQ0KPiArc3RhdGljIHZvaWQgYW1kZ3B1 X2RldmljZV9wb3N0X2FzaWNfcmVzZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+ICAg ew0KPiAgIAlpbnQgaTsNCj4gICANCj4gQEAgLTM2MjMsNyArMzYyMCw3IEBAIGludCBhbWRncHVf ZGV2aWNlX2dwdV9yZWNvdmVyKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPiAgIA0KPiAg IAkvKiBQb3N0IEFTSUMgcmVzZXQgZm9yIGFsbCBkZXZzIC4qLw0KPiAgIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KHRtcF9hZGV2LCBkZXZpY2VfbGlzdF9oYW5kbGUsIGdtYy54Z21pLmhlYWQpIHsNCj4g LQkJYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQodG1wX2FkZXYsIHRtcF9hZGV2ID09IGFk ZXYgPyBqb2IgOiBOVUxMKTsNCj4gKwkJYW1kZ3B1X2RldmljZV9wb3N0X2FzaWNfcmVzZXQodG1w X2FkZXYpOw0KPiAgIA0KPiAgIAkJaWYgKHIpIHsNCj4gICAJCQkvKiBiYWQgbmV3cywgaG93IHRv IHRlbGwgaXQgdG8gdXNlcnNwYWNlID8gKi8NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfZHVtcC5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9kdW1wLmMNCj4gaW5kZXggMzM4NTRjOS4uNTc3OGQ5YyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9kdW1wLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2V0bmF2aXYvZXRuYXZpdl9kdW1wLmMNCj4gQEAgLTEzNSwxMyArMTM1LDExIEBAIHZvaWQgZXRu YXZpdl9jb3JlX2R1bXAoc3RydWN0IGV0bmF2aXZfZ3B1ICpncHUpDQo+ICAgCQkgICAgbW11X3Np emUgKyBncHUtPmJ1ZmZlci5zaXplOw0KPiAgIA0KPiAgIAkvKiBBZGQgaW4gdGhlIGFjdGl2ZSBj b21tYW5kIGJ1ZmZlcnMgKi8NCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmZ3B1LT5zY2hlZC5qb2Jf bGlzdF9sb2NrLCBmbGFncyk7DQo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkoc19qb2IsICZncHUt PnNjaGVkLnJpbmdfbWlycm9yX2xpc3QsIG5vZGUpIHsNCj4gICAJCXN1Ym1pdCA9IHRvX2V0bmF2 aXZfc3VibWl0KHNfam9iKTsNCj4gICAJCWZpbGVfc2l6ZSArPSBzdWJtaXQtPmNtZGJ1Zi5zaXpl Ow0KPiAgIAkJbl9vYmorKzsNCj4gICAJfQ0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmdw dS0+c2NoZWQuam9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPiAgIA0KPiAgIAkvKiBBZGQgaW4gdGhl IGFjdGl2ZSBidWZmZXIgb2JqZWN0cyAqLw0KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZyYW0s ICZncHUtPm1tdS0+bWFwcGluZ3MsIG1tdV9ub2RlKSB7DQo+IEBAIC0xODMsMTQgKzE4MSwxMiBA QCB2b2lkIGV0bmF2aXZfY29yZV9kdW1wKHN0cnVjdCBldG5hdml2X2dwdSAqZ3B1KQ0KPiAgIAkJ CSAgICAgIGdwdS0+YnVmZmVyLnNpemUsDQo+ICAgCQkJICAgICAgZXRuYXZpdl9jbWRidWZfZ2V0 X3ZhKCZncHUtPmJ1ZmZlcikpOw0KPiAgIA0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZncHUtPnNj aGVkLmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShzX2pv YiwgJmdwdS0+c2NoZWQucmluZ19taXJyb3JfbGlzdCwgbm9kZSkgew0KPiAgIAkJc3VibWl0ID0g dG9fZXRuYXZpdl9zdWJtaXQoc19qb2IpOw0KPiAgIAkJZXRuYXZpdl9jb3JlX2R1bXBfbWVtKCZp dGVyLCBFVERVTVBfQlVGX0NNRCwNCj4gICAJCQkJICAgICAgc3VibWl0LT5jbWRidWYudmFkZHIs IHN1Ym1pdC0+Y21kYnVmLnNpemUsDQo+ICAgCQkJCSAgICAgIGV0bmF2aXZfY21kYnVmX2dldF92 YSgmc3VibWl0LT5jbWRidWYpKTsNCj4gICAJfQ0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmdwdS0+c2NoZWQuam9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPiAgIA0KPiAgIAkvKiBSZXNlcnZl IHNwYWNlIGZvciB0aGUgYm9tYXAgKi8NCj4gICAJaWYgKG5fYm9tYXBfcGFnZXMpIHsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfc2NoZWQuYyBiL2RyaXZl cnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfc2NoZWQuYw0KPiBpbmRleCA2ZDI0ZmVhLi5hODEz YzgyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X3NjaGVk LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9zY2hlZC5jDQo+IEBA IC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgZXRuYXZpdl9zY2hlZF90aW1lZG91dF9qb2Io c3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikNCj4gICAJfQ0KPiAgIA0KPiAgIAkvKiBi bG9jayBzY2hlZHVsZXIgKi8NCj4gLQlkcm1fc2NoZWRfc3RvcCgmZ3B1LT5zY2hlZCk7DQo+ICsJ ZHJtX3NjaGVkX3N0b3AoJmdwdS0+c2NoZWQsIHNjaGVkX2pvYik7DQo+ICAgDQo+ICAgCWlmKHNj aGVkX2pvYikNCj4gICAJCWRybV9zY2hlZF9pbmNyZWFzZV9rYXJtYShzY2hlZF9qb2IpOw0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jIGIvZHJpdmVycy9n cHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jDQo+IGluZGV4IDk3YmQ5YzEuLmRmOTg5MzEgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYw0KPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbGltYS9saW1hX3NjaGVkLmMNCj4gQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0 aWMgc3RydWN0IGRtYV9mZW5jZSAqbGltYV9zY2hlZF9ydW5fam9iKHN0cnVjdCBkcm1fc2NoZWRf am9iICpqb2IpDQo+ICAgc3RhdGljIHZvaWQgbGltYV9zY2hlZF9oYW5kbGVfZXJyb3JfdGFzayhz dHJ1Y3QgbGltYV9zY2hlZF9waXBlICpwaXBlLA0KPiAgIAkJCQkJIHN0cnVjdCBsaW1hX3NjaGVk X3Rhc2sgKnRhc2spDQo+ICAgew0KPiAtCWRybV9zY2hlZF9zdG9wKCZwaXBlLT5iYXNlKTsNCj4g Kwlkcm1fc2NoZWRfc3RvcCgmcGlwZS0+YmFzZSwgJnRhc2stPmJhc2UpOw0KPiAgIA0KPiAgIAlp ZiAodGFzaykNCj4gICAJCWRybV9zY2hlZF9pbmNyZWFzZV9rYXJtYSgmdGFzay0+YmFzZSk7DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMgYi9k cml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMNCj4gaW5kZXggMGE3ZWQwNC4u YzYzMzZiNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0 X2pvYi5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9qb2IuYw0K PiBAQCAtMzg1LDcgKzM4NSw3IEBAIHN0YXRpYyB2b2lkIHBhbmZyb3N0X2pvYl90aW1lZG91dChz dHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQ0KPiAgIAkJc2NoZWRfam9iKTsNCj4gICAN Cj4gICAJZm9yIChpID0gMDsgaSA8IE5VTV9KT0JfU0xPVFM7IGkrKykNCj4gLQkJZHJtX3NjaGVk X3N0b3AoJnBmZGV2LT5qcy0+cXVldWVbaV0uc2NoZWQpOw0KPiArCQlkcm1fc2NoZWRfc3RvcCgm cGZkZXYtPmpzLT5xdWV1ZVtpXS5zY2hlZCwgc2NoZWRfam9iKTsNCj4gICANCj4gICAJaWYgKHNj aGVkX2pvYikNCj4gICAJCWRybV9zY2hlZF9pbmNyZWFzZV9rYXJtYShzY2hlZF9qb2IpOw0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9zY2hlZF9tYWluLmMgYi9kcml2 ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KPiBpbmRleCAxOWZjNjAxLi43ODE2 ZGU3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4u Yw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vc2NoZWR1bGVyL3NjaGVkX21haW4uYw0KPiBAQCAt MjY1LDMyICsyNjUsNiBAQCB2b2lkIGRybV9zY2hlZF9yZXN1bWVfdGltZW91dChzdHJ1Y3QgZHJt X2dwdV9zY2hlZHVsZXIgKnNjaGVkLA0KPiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MKGRybV9zY2hl ZF9yZXN1bWVfdGltZW91dCk7DQo+ICAgDQo+IC0vKiBqb2JfZmluaXNoIGlzIGNhbGxlZCBhZnRl ciBodyBmZW5jZSBzaWduYWxlZA0KPiAtICovDQo+IC1zdGF0aWMgdm9pZCBkcm1fc2NoZWRfam9i X2ZpbmlzaChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IC17DQo+IC0Jc3RydWN0IGRybV9z Y2hlZF9qb2IgKnNfam9iID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkcm1fc2NoZWRfam9i LA0KPiAtCQkJCQkJICAgZmluaXNoX3dvcmspOw0KPiAtCXN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxl ciAqc2NoZWQgPSBzX2pvYi0+c2NoZWQ7DQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gLQ0K PiAtCS8qDQo+IC0JICogQ2FuY2VsaW5nIHRoZSB0aW1lb3V0IHdpdGhvdXQgcmVtb3Zpbmcgb3Vy IGpvYiBmcm9tIHRoZSByaW5nIG1pcnJvcg0KPiAtCSAqIGxpc3QgaXMgc2FmZSwgYXMgd2Ugd2ls bCBvbmx5IGVuZCB1cCBpbiB0aGlzIHdvcmtlciBpZiBvdXIgam9icw0KPiAtCSAqIGZpbmlzaGVk IGZlbmNlIGhhcyBiZWVuIHNpZ25hbGVkLiBTbyBldmVuIGlmIHNvbWUgYW5vdGhlciB3b3JrZXIN Cj4gLQkgKiBtYW5hZ2VzIHRvIGZpbmQgdGhpcyBqb2IgYXMgdGhlIG5leHQgam9iIGluIHRoZSBs aXN0LCB0aGUgZmVuY2UNCj4gLQkgKiBzaWduYWxlZCBjaGVjayBiZWxvdyB3aWxsIHByZXZlbnQg dGhlIHRpbWVvdXQgdG8gYmUgcmVzdGFydGVkLg0KPiAtCSAqLw0KPiAtCWNhbmNlbF9kZWxheWVk X3dvcmtfc3luYygmc2NoZWQtPndvcmtfdGRyKTsNCj4gLQ0KPiAtCXNwaW5fbG9ja19pcnFzYXZl KCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPiAtCS8qIHF1ZXVlIFREUiBmb3IgbmV4 dCBqb2IgKi8NCj4gLQlkcm1fc2NoZWRfc3RhcnRfdGltZW91dChzY2hlZCk7DQo+IC0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCj4gLQ0KPiAt CXNjaGVkLT5vcHMtPmZyZWVfam9iKHNfam9iKTsNCj4gLX0NCj4gLQ0KPiAgIHN0YXRpYyB2b2lk IGRybV9zY2hlZF9qb2JfYmVnaW4oc3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iKQ0KPiAgIHsN Cj4gICAJc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCA9IHNfam9iLT5zY2hlZDsNCj4g QEAgLTMxNSw2ICsyODksMTMgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX2pvYl90aW1lZG91dChz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICAgCWlmIChqb2IpDQo+ICAgCQlqb2ItPnNjaGVk LT5vcHMtPnRpbWVkb3V0X2pvYihqb2IpOw0KPiAgIA0KPiArCS8qDQo+ICsJICogR3VpbHR5IGpv YiBkaWQgY29tcGxldGUgYW5kIGhlbmNlIG5lZWRzIHRvIGJlIG1hbnVhbGx5IHJlbW92ZWQNCj4g KwkgKiBTZWUgZHJtX3NjaGVkX3N0b3AgZG9jLg0KPiArCSAqLw0KPiArCWlmIChsaXN0X2VtcHR5 KCZqb2ItPm5vZGUpKQ0KPiArCQlqb2ItPnNjaGVkLT5vcHMtPmZyZWVfam9iKGpvYik7DQo+ICsN Cj4gICAJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+ ICAgCWRybV9zY2hlZF9zdGFydF90aW1lb3V0KHNjaGVkKTsNCj4gICAJc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCj4gQEAgLTM3MSwyMyArMzUy LDI2IEBAIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2luY3JlYXNlX2thcm1hKTsNCj4gICAgKiBA c2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQ0KPiAgICAqIEBiYWQ6IGJhZCBzY2hlZHVsZXIgam9i DQo+ICAgICoNCj4gKyAqIFN0b3AgdGhlIHNjaGVkdWxlciBhbmQgYWxzbyByZW1vdmVzIGFuZCBm cmVlcyBhbGwgY29tcGxldGVkIGpvYnMuDQo+ICsgKiBOb3RlOiBiYWQgam9iIHdpbGwgbm90IGJl IGZyZWVkIGFzIGl0IG1pZ2h0IGJlIHVzZWQgbGF0ZXIgYW5kIHNvIGl0J3MNCj4gKyAqIGNhbGxl cnMgcmVzcG9uc2liaWxpdHkgdG8gcmVsZWFzZSBpdCBtYW51YWxseSBpZiBpdCdzIG5vdCBwYXJ0 IG9mIHRoZQ0KPiArICogbWlycm9yIGxpc3QgYW55IG1vcmUuDQo+ICsgKg0KPiAgICAqLw0KPiAt dm9pZCBkcm1fc2NoZWRfc3RvcChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQ0KPiAr dm9pZCBkcm1fc2NoZWRfc3RvcChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLCBzdHJ1 Y3QgZHJtX3NjaGVkX2pvYiAqYmFkKQ0KPiAgIHsNCj4gLQlzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAq c19qb2I7DQo+ICsJc3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iLCAqdG1wOw0KPiAgIAl1bnNp Z25lZCBsb25nIGZsYWdzOw0KPiAtCXN0cnVjdCBkbWFfZmVuY2UgKmxhc3RfZmVuY2UgPSAgTlVM TDsNCj4gICANCj4gICAJa3RocmVhZF9wYXJrKHNjaGVkLT50aHJlYWQpOw0KPiAgIA0KPiAgIAkv Kg0KPiAtCSAqIFZlcmlmeSBhbGwgdGhlIHNpZ25hbGVkIGpvYnMgaW4gbWlycm9yIGxpc3QgYXJl IHJlbW92ZWQgZnJvbSB0aGUgcmluZw0KPiAtCSAqIGJ5IHdhaXRpbmcgZm9yIHRoZSBsYXRlc3Qg am9iIHRvIGVudGVyIHRoZSBsaXN0LiBUaGlzIHNob3VsZCBpbnN1cmUgdGhhdA0KPiAtCSAqIGFs c28gYWxsIHRoZSBwcmV2aW91cyBqb2JzIHRoYXQgd2VyZSBpbiBmbGlnaHQgYWxzbyBhbHJlYWR5 IHNpbmdhbGVkDQo+IC0JICogYW5kIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4NCj4gKwkgKiBJdGVy YXRlIHRoZSBqb2IgbGlzdCBmcm9tIGxhdGVyIHRvICBlYXJsaWVyIG9uZSBhbmQgZWl0aGVyIGRl YWN0aXZlDQo+ICsJICogdGhlaXIgSFcgY2FsbGJhY2tzIG9yIHJlbW92ZSB0aGVtIGZyb20gbWly cm9yIGxpc3QgaWYgdGhleSBhbHJlYWR5DQo+ICsJICogc2lnbmFsZWQuDQo+ICsJICogVGhpcyBp dGVyYXRpb24gaXMgdGhyZWFkIHNhZmUgYXMgc2NoZWQgdGhyZWFkIGlzIHN0b3BwZWQuDQo+ICAg CSAqLw0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3Mp Ow0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShzX2pvYiwgJnNjaGVkLT5yaW5nX21p cnJvcl9saXN0LCBub2RlKSB7DQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlX3JldmVyc2Uo c19qb2IsIHRtcCwgJnNjaGVkLT5yaW5nX21pcnJvcl9saXN0LCBub2RlKSB7DQo+ICAgCQlpZiAo c19qb2ItPnNfZmVuY2UtPnBhcmVudCAmJg0KPiAgIAkJICAgIGRtYV9mZW5jZV9yZW1vdmVfY2Fs bGJhY2soc19qb2ItPnNfZmVuY2UtPnBhcmVudCwNCj4gICAJCQkJCSAgICAgICZzX2pvYi0+Y2Ip KSB7DQo+IEBAIC0zOTUsMTYgKzM3OSwzMCBAQCB2b2lkIGRybV9zY2hlZF9zdG9wKHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpDQo+ICAgCQkJc19qb2ItPnNfZmVuY2UtPnBhcmVudCA9 IE5VTEw7DQo+ICAgCQkJYXRvbWljX2RlYygmc2NoZWQtPmh3X3JxX2NvdW50KTsNCj4gICAJCX0g ZWxzZSB7DQo+IC0JCQkgbGFzdF9mZW5jZSA9IGRtYV9mZW5jZV9nZXQoJnNfam9iLT5zX2ZlbmNl LT5maW5pc2hlZCk7DQo+IC0JCQkgYnJlYWs7DQo+ICsJCQkvKg0KPiArCQkJICogcmVtb3ZlIGpv YiBmcm9tIHJpbmdfbWlycm9yX2xpc3QuDQo+ICsJCQkgKiBMb2NraW5nIGhlcmUgaXMgZm9yIGNv bmN1cnJlbnQgcmVzdW1lIHRpbWVvdXQNCj4gKwkJCSAqLw0KPiArCQkJc3Bpbl9sb2NrX2lycXNh dmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBmbGFncyk7DQo+ICsJCQlsaXN0X2RlbF9pbml0KCZz X2pvYi0+bm9kZSk7DQo+ICsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xp c3RfbG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJCQkvKg0KPiArCQkJICogV2FpdCBmb3Igam9iJ3Mg SFcgZmVuY2UgY2FsbGJhY2sgdG8gZmluaXNoIHVzaW5nIHNfam9iDQo+ICsJCQkgKiBiZWZvcmUg cmVsZWFzaW5nIGl0Lg0KPiArCQkJICoNCj4gKwkJCSAqIEpvYiBpcyBzdGlsbCBhbGl2ZSBzbyBm ZW5jZSByZWZjb3VudCBhdCBsZWFzdCAxDQo+ICsJCQkgKi8NCj4gKwkJCWRtYV9mZW5jZV93YWl0 KCZzX2pvYi0+c19mZW5jZS0+ZmluaXNoZWQsIGZhbHNlKTsNCj4gKw0KPiArCQkJLyoNCj4gKwkJ CSAqIFdlIG11c3Qga2VlcCBiYWQgam9iIGFsaXZlIGZvciBsYXRlciB1c2UgZHVyaW5nDQo+ICsJ CQkgKiByZWNvdmVyeSBieSBzb21lIG9mIHRoZSBkcml2ZXJzDQo+ICsJCQkgKi8NCj4gKwkJCWlm IChiYWQgIT0gc19qb2IpDQo+ICsJCQkJc2NoZWQtPm9wcy0+ZnJlZV9qb2Ioc19qb2IpOw0KPiAg IAkJfQ0KPiAgIAl9DQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0 X2xvY2ssIGZsYWdzKTsNCj4gLQ0KPiAtCWlmIChsYXN0X2ZlbmNlKSB7DQo+IC0JCWRtYV9mZW5j ZV93YWl0KGxhc3RfZmVuY2UsIGZhbHNlKTsNCj4gLQkJZG1hX2ZlbmNlX3B1dChsYXN0X2ZlbmNl KTsNCj4gLQl9DQo+ICAgfQ0KPiAgIA0KPiAgIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX3N0b3Ap Ow0KPiBAQCAtNDE4LDIxICs0MTYsMjIgQEAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfc3RvcCk7 DQo+ICAgdm9pZCBkcm1fc2NoZWRfc3RhcnQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hl ZCwgYm9vbCBmdWxsX3JlY292ZXJ5KQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9zY2hlZF9qb2Ig KnNfam9iLCAqdG1wOw0KPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICAgCWludCByOw0KPiAg IA0KPiAtCWlmICghZnVsbF9yZWNvdmVyeSkNCj4gLQkJZ290byB1bnBhcms7DQo+IC0NCj4gICAJ LyoNCj4gICAJICogTG9ja2luZyB0aGUgbGlzdCBpcyBub3QgcmVxdWlyZWQgaGVyZSBhcyB0aGUg c2NoZWQgdGhyZWFkIGlzIHBhcmtlZA0KPiAtCSAqIHNvIG5vIG5ldyBqb2JzIGFyZSBiZWluZyBw dXNoZWQgaW4gdG8gSFcgYW5kIGluIGRybV9zY2hlZF9zdG9wIHdlDQo+IC0JICogZmx1c2hlZCBh bGwgdGhlIGpvYnMgd2hvIHdlcmUgc3RpbGwgaW4gbWlycm9yIGxpc3QgYnV0IHdobyBhbHJlYWR5 DQo+IC0JICogc2lnbmFsZWQgYW5kIHJlbW92ZWQgdGhlbSBzZWxmIGZyb20gdGhlIGxpc3QuIEFs c28gY29uY3VycmVudA0KPiArCSAqIHNvIG5vIG5ldyBqb2JzIGFyZSBiZWluZyBpbnNlcnRlZCBv ciByZW1vdmVkLiBBbHNvIGNvbmN1cnJlbnQNCj4gICAJICogR1BVIHJlY292ZXJzIGNhbid0IHJ1 biBpbiBwYXJhbGxlbC4NCj4gICAJICovDQo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShz X2pvYiwgdG1wLCAmc2NoZWQtPnJpbmdfbWlycm9yX2xpc3QsIG5vZGUpIHsNCj4gICAJCXN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlID0gc19qb2ItPnNfZmVuY2UtPnBhcmVudDsNCj4gICANCj4gKwkJ YXRvbWljX2luYygmc2NoZWQtPmh3X3JxX2NvdW50KTsNCj4gKw0KPiArCQlpZiAoIWZ1bGxfcmVj b3ZlcnkpDQo+ICsJCQljb250aW51ZTsNCj4gKw0KPiAgIAkJaWYgKGZlbmNlKSB7DQo+ICAgCQkJ ciA9IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZmVuY2UsICZzX2pvYi0+Y2IsDQo+ICAgCQkJCQkJ ICAgZHJtX3NjaGVkX3Byb2Nlc3Nfam9iKTsNCj4gQEAgLTQ0NSw5ICs0NDQsMTIgQEAgdm9pZCBk cm1fc2NoZWRfc3RhcnQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgYm9vbCBmdWxs X3JlY292ZXJ5KQ0KPiAgIAkJCWRybV9zY2hlZF9wcm9jZXNzX2pvYihOVUxMLCAmc19qb2ItPmNi KTsNCj4gICAJfQ0KPiAgIA0KPiAtCWRybV9zY2hlZF9zdGFydF90aW1lb3V0KHNjaGVkKTsNCj4g KwlpZiAoZnVsbF9yZWNvdmVyeSkgew0KPiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWQtPmpv Yl9saXN0X2xvY2ssIGZsYWdzKTsNCj4gKwkJZHJtX3NjaGVkX3N0YXJ0X3RpbWVvdXQoc2NoZWQp Ow0KPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxh Z3MpOw0KPiArCX0NCj4gICANCj4gLXVucGFyazoNCj4gICAJa3RocmVhZF91bnBhcmsoc2NoZWQt PnRocmVhZCk7DQo+ICAgfQ0KPiAgIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX3N0YXJ0KTsNCj4g QEAgLTQ2NCw3ICs0NjYsNiBAQCB2b2lkIGRybV9zY2hlZF9yZXN1Ym1pdF9qb2JzKHN0cnVjdCBk cm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpDQo+ICAgCXVpbnQ2NF90IGd1aWx0eV9jb250ZXh0Ow0K PiAgIAlib29sIGZvdW5kX2d1aWx0eSA9IGZhbHNlOw0KPiAgIA0KPiAtCS8qVE9ETyBETyB3ZSBu ZWVkIHNwaW5sb2NrIGhlcmUgPyAqLw0KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoc19q b2IsIHRtcCwgJnNjaGVkLT5yaW5nX21pcnJvcl9saXN0LCBub2RlKSB7DQo+ICAgCQlzdHJ1Y3Qg ZHJtX3NjaGVkX2ZlbmNlICpzX2ZlbmNlID0gc19qb2ItPnNfZmVuY2U7DQo+ICAgDQo+IEBAIC00 NzcsNyArNDc4LDYgQEAgdm9pZCBkcm1fc2NoZWRfcmVzdWJtaXRfam9icyhzdHJ1Y3QgZHJtX2dw dV9zY2hlZHVsZXIgKnNjaGVkKQ0KPiAgIAkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnNfZmVuY2Ut PmZpbmlzaGVkLCAtRUNBTkNFTEVEKTsNCj4gICANCj4gICAJCXNfam9iLT5zX2ZlbmNlLT5wYXJl bnQgPSBzY2hlZC0+b3BzLT5ydW5fam9iKHNfam9iKTsNCj4gLQkJYXRvbWljX2luYygmc2NoZWQt Pmh3X3JxX2NvdW50KTsNCj4gICAJfQ0KPiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MKGRybV9zY2hl ZF9yZXN1Ym1pdF9qb2JzKTsNCj4gQEAgLTUxNCw3ICs1MTQsNiBAQCBpbnQgZHJtX3NjaGVkX2pv Yl9pbml0KHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IsDQo+ICAgCQlyZXR1cm4gLUVOT01FTTsN Cj4gICAJam9iLT5pZCA9IGF0b21pYzY0X2luY19yZXR1cm4oJnNjaGVkLT5qb2JfaWRfY291bnQp Ow0KPiAgIA0KPiAtCUlOSVRfV09SSygmam9iLT5maW5pc2hfd29yaywgZHJtX3NjaGVkX2pvYl9m aW5pc2gpOw0KPiAgIAlJTklUX0xJU1RfSEVBRCgmam9iLT5ub2RlKTsNCj4gICANCj4gICAJcmV0 dXJuIDA7DQo+IEBAIC01OTcsMjQgKzU5Niw1MyBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcHJv Y2Vzc19qb2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpDQo+ ICAgCXN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYiA9IGNvbnRhaW5lcl9vZihjYiwgc3RydWN0 IGRybV9zY2hlZF9qb2IsIGNiKTsNCj4gICAJc3RydWN0IGRybV9zY2hlZF9mZW5jZSAqc19mZW5j ZSA9IHNfam9iLT5zX2ZlbmNlOw0KPiAgIAlzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVk ID0gc19mZW5jZS0+c2NoZWQ7DQo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gLQ0KPiAtCWNh bmNlbF9kZWxheWVkX3dvcmsoJnNjaGVkLT53b3JrX3Rkcik7DQo+ICAgDQo+ICAgCWF0b21pY19k ZWMoJnNjaGVkLT5od19ycV9jb3VudCk7DQo+ICAgCWF0b21pY19kZWMoJnNjaGVkLT5udW1fam9i cyk7DQo+ICAgDQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkLT5qb2JfbGlzdF9sb2NrLCBm bGFncyk7DQo+IC0JLyogcmVtb3ZlIGpvYiBmcm9tIHJpbmdfbWlycm9yX2xpc3QgKi8NCj4gLQls aXN0X2RlbF9pbml0KCZzX2pvYi0+bm9kZSk7DQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm c2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsNCj4gKwl0cmFjZV9kcm1fc2NoZWRfcHJvY2Vz c19qb2Ioc19mZW5jZSk7DQo+ICAgDQo+ICAgCWRybV9zY2hlZF9mZW5jZV9maW5pc2hlZChzX2Zl bmNlKTsNCj4gLQ0KPiAtCXRyYWNlX2RybV9zY2hlZF9wcm9jZXNzX2pvYihzX2ZlbmNlKTsNCj4g ICAJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZzY2hlZC0+d2FrZV91cF93b3JrZXIpOw0KPiArfQ0K PiArDQo+ICsvKioNCj4gKyAqIGRybV9zY2hlZF9jbGVhbnVwX2pvYnMgLSBkZXN0cm95IGZpbmlz aGVkIGpvYnMNCj4gKyAqDQo+ICsgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQ0KPiArICoN Cj4gKyAqIFJlbW92ZSBhbGwgZmluaXNoZWQgam9icyBmcm9tIHRoZSBtaXJyb3IgbGlzdCBhbmQg ZGVzdHJveSB0aGVtLg0KPiArICovDQo+ICtzdGF0aWMgdm9pZCBkcm1fc2NoZWRfY2xlYW51cF9q b2JzKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpDQo+ICt7DQo+ICsJdW5zaWduZWQg bG9uZyBmbGFnczsNCj4gKw0KPiArCS8qIERvbid0IGRlc3Ryb3kgam9icyB3aGlsZSB0aGUgdGlt ZW91dCB3b3JrZXIgaXMgcnVubmluZyAqLw0KPiArCWlmICghY2FuY2VsX2RlbGF5ZWRfd29yaygm c2NoZWQtPndvcmtfdGRyKSkNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsNCj4gKwl3aGlsZSAoIWxp c3RfZW1wdHkoJnNjaGVkLT5yaW5nX21pcnJvcl9saXN0KSkgew0KPiArCQlzdHJ1Y3QgZHJtX3Nj aGVkX2pvYiAqam9iOw0KPiArDQo+ICsJCWpvYiA9IGxpc3RfZmlyc3RfZW50cnkoJnNjaGVkLT5y aW5nX21pcnJvcl9saXN0LA0KPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiwgbm9k ZSk7DQo+ICsJCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKCZqb2ItPnNfZmVuY2UtPmZpbmlz aGVkKSkNCj4gKwkJCWJyZWFrOw0KPiArDQo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZzY2hlZC0+ am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPiArCQkvKiByZW1vdmUgam9iIGZyb20gcmluZ19taXJy b3JfbGlzdCAqLw0KPiArCQlsaXN0X2RlbF9pbml0KCZqb2ItPm5vZGUpOw0KPiArCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZzY2hlZC0+am9iX2xpc3RfbG9jaywgZmxhZ3MpOw0KPiArDQo+ICsJ CXNjaGVkLT5vcHMtPmZyZWVfam9iKGpvYik7DQo+ICsJfQ0KPiArDQo+ICsJLyogcXVldWUgdGlt ZW91dCBmb3IgbmV4dCBqb2IgKi8NCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmc2NoZWQtPmpvYl9s aXN0X2xvY2ssIGZsYWdzKTsNCj4gKwlkcm1fc2NoZWRfc3RhcnRfdGltZW91dChzY2hlZCk7DQo+ ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmc2NoZWQtPmpvYl9saXN0X2xvY2ssIGZsYWdzKTsN Cj4gICANCj4gLQlzY2hlZHVsZV93b3JrKCZzX2pvYi0+ZmluaXNoX3dvcmspOw0KPiAgIH0NCj4g ICANCj4gICAvKioNCj4gQEAgLTY1Niw5ICs2ODQsMTAgQEAgc3RhdGljIGludCBkcm1fc2NoZWRf bWFpbih2b2lkICpwYXJhbSkNCj4gICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOw0KPiAgIA0K PiAgIAkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlKHNjaGVkLT53YWtlX3VwX3dvcmtlciwNCj4g KwkJCQkJIChkcm1fc2NoZWRfY2xlYW51cF9qb2JzKHNjaGVkKSwNCj4gICAJCQkJCSAoIWRybV9z Y2hlZF9ibG9ja2VkKHNjaGVkKSAmJg0KPiAgIAkJCQkJICAoZW50aXR5ID0gZHJtX3NjaGVkX3Nl bGVjdF9lbnRpdHkoc2NoZWQpKSkgfHwNCj4gLQkJCQkJIGt0aHJlYWRfc2hvdWxkX3N0b3AoKSk7 DQo+ICsJCQkJCSBrdGhyZWFkX3Nob3VsZF9zdG9wKCkpKTsNCj4gICANCj4gICAJCWlmICghZW50 aXR5KQ0KPiAgIAkJCWNvbnRpbnVlOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Yz ZC92M2Rfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3NjaGVkLmMNCj4gaW5kZXgg ZTc0MGYzYi4uMWE0YWJlNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rf c2NoZWQuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zY2hlZC5jDQo+IEBAIC0y MzIsNyArMjMyLDcgQEAgdjNkX2dwdV9yZXNldF9mb3JfdGltZW91dChzdHJ1Y3QgdjNkX2RldiAq djNkLCBzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKQ0KPiAgIA0KPiAgIAkvKiBibG9j ayBzY2hlZHVsZXIgKi8NCj4gICAJZm9yIChxID0gMDsgcSA8IFYzRF9NQVhfUVVFVUVTOyBxKysp DQo+IC0JCWRybV9zY2hlZF9zdG9wKCZ2M2QtPnF1ZXVlW3FdLnNjaGVkKTsNCj4gKwkJZHJtX3Nj aGVkX3N0b3AoJnYzZC0+cXVldWVbcV0uc2NoZWQsIHNjaGVkX2pvYik7DQo+ICAgDQo+ICAgCWlm IChzY2hlZF9qb2IpDQo+ICAgCQlkcm1fc2NoZWRfaW5jcmVhc2Vfa2FybWEoc2NoZWRfam9iKTsN Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2dwdV9zY2hlZHVsZXIuaCBiL2luY2x1ZGUvZHJt L2dwdV9zY2hlZHVsZXIuaA0KPiBpbmRleCAwZGFjYTRkLi45ZWUwZjI3IDEwMDY0NA0KPiAtLS0g YS9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgNCj4gKysrIGIvaW5jbHVkZS9kcm0vZ3B1X3Nj aGVkdWxlci5oDQo+IEBAIC0xNjcsOSArMTY3LDYgQEAgc3RydWN0IGRybV9zY2hlZF9mZW5jZSAq dG9fZHJtX3NjaGVkX2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmYpOw0KPiAgICAqIEBzY2hlZDog dGhlIHNjaGVkdWxlciBpbnN0YW5jZSBvbiB3aGljaCB0aGlzIGpvYiBpcyBzY2hlZHVsZWQuDQo+ ICAgICogQHNfZmVuY2U6IGNvbnRhaW5zIHRoZSBmZW5jZXMgZm9yIHRoZSBzY2hlZHVsaW5nIG9m IGpvYi4NCj4gICAgKiBAZmluaXNoX2NiOiB0aGUgY2FsbGJhY2sgZm9yIHRoZSBmaW5pc2hlZCBm ZW5jZS4NCj4gLSAqIEBmaW5pc2hfd29yazogc2NoZWR1bGVzIHRoZSBmdW5jdGlvbiBAZHJtX3Nj aGVkX2pvYl9maW5pc2ggb25jZSB0aGUgam9iIGhhcw0KPiAtICogICAgICAgICAgICAgICBmaW5p c2hlZCB0byByZW1vdmUgdGhlIGpvYiBmcm9tIHRoZQ0KPiAtICogICAgICAgICAgICAgICBAZHJt X2dwdV9zY2hlZHVsZXIucmluZ19taXJyb3JfbGlzdC4NCj4gICAgKiBAbm9kZTogdXNlZCB0byBh cHBlbmQgdGhpcyBzdHJ1Y3QgdG8gdGhlIEBkcm1fZ3B1X3NjaGVkdWxlci5yaW5nX21pcnJvcl9s aXN0Lg0KPiAgICAqIEBpZDogYSB1bmlxdWUgaWQgYXNzaWduZWQgdG8gZWFjaCBqb2Igc2NoZWR1 bGVkIG9uIHRoZSBzY2hlZHVsZXIuDQo+ICAgICogQGthcm1hOiBpbmNyZW1lbnQgb24gZXZlcnkg aGFuZyBjYXVzZWQgYnkgdGhpcyBqb2IuIElmIHRoaXMgZXhjZWVkcyB0aGUgaGFuZw0KPiBAQCAt MTg4LDcgKzE4NSw2IEBAIHN0cnVjdCBkcm1fc2NoZWRfam9iIHsNCj4gICAJc3RydWN0IGRybV9n cHVfc2NoZWR1bGVyCSpzY2hlZDsNCj4gICAJc3RydWN0IGRybV9zY2hlZF9mZW5jZQkJKnNfZmVu Y2U7DQo+ICAgCXN0cnVjdCBkbWFfZmVuY2VfY2IJCWZpbmlzaF9jYjsNCj4gLQlzdHJ1Y3Qgd29y a19zdHJ1Y3QJCWZpbmlzaF93b3JrOw0KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkCQlub2RlOw0KPiAg IAl1aW50NjRfdAkJCWlkOw0KPiAgIAlhdG9taWNfdAkJCWthcm1hOw0KPiBAQCAtMjk2LDcgKzI5 Miw3IEBAIGludCBkcm1fc2NoZWRfam9iX2luaXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYiwN Cj4gICAJCSAgICAgICB2b2lkICpvd25lcik7DQo+ICAgdm9pZCBkcm1fc2NoZWRfam9iX2NsZWFu dXAoc3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYik7DQo+ICAgdm9pZCBkcm1fc2NoZWRfd2FrZXVw KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpOw0KPiAtdm9pZCBkcm1fc2NoZWRfc3Rv cChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsNCj4gK3ZvaWQgZHJtX3NjaGVkX3N0 b3Aoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwgc3RydWN0IGRybV9zY2hlZF9qb2Ig KmJhZCk7DQo+ICAgdm9pZCBkcm1fc2NoZWRfc3RhcnQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVy ICpzY2hlZCwgYm9vbCBmdWxsX3JlY292ZXJ5KTsNCj4gICB2b2lkIGRybV9zY2hlZF9yZXN1Ym1p dF9qb2JzKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpOw0KPiAgIHZvaWQgZHJtX3Nj aGVkX2luY3JlYXNlX2thcm1hKHN0cnVjdCBkcm1fc2NoZWRfam9iICpiYWQpOw0KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs