From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 01/62] drm/i915: Only start retire worker when idle Date: Tue, 07 Jun 2016 14:31:07 +0300 Message-ID: <1465299067.5626.15.camel@linux.intel.com> References: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> <1464971847-15809-2-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 0DF976E3CC for ; Tue, 7 Jun 2016 11:31:10 +0000 (UTC) In-Reply-To: <1464971847-15809-2-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gcGUsIDIwMTYtMDYtMDMgYXQgMTc6MzYgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBU aGUgcmV0aXJlIHdvcmtlciBpcyBhIGxvdyBmcmVxdWVuY3kgdGFzayB0aGF0IG1ha2VzIHN1cmUg d2UgcmV0aXJlCj4gb3V0c3RhbmRpbmcgcmVxdWVzdHMgaWYgdXNlcnNwYWNlIGlzIGJlaW5nIGxh eC4gV2Ugb25seSBuZWVkIHRvIHN0YXJ0IGl0Cj4gb25jZSBhcyBpdCByZW1haW5zIGFjdGl2ZSB1 bnRpbCB0aGUgR1BVIGlzIGlkbGUsIHNvIGRvIGEgY2hlYXAgdGVzdAo+IGJlZm9yZSB0aGUgbW9y ZSBleHBlbnNpdmUgcXVldWVfd29yaygpLiBBIGNvbnNlcXVlbmNlIG9mIHRoaXMgaXMgdGhhdCB3 ZQo+IG5lZWQgY29ycmVjdCBsb2NraW5nIGluIHRoZSB3b3JrZXIgdG8gbWFrZSB0aGUgaG90IHBh dGggb2YgcmVxdWVzdAo+IHN1Ym1pc3Npb24gY2hlYXAuIFRvIGtlZXAgdGhlIHN5bW1ldHJ5IGFu ZCBrZWVwIGhhbmdjaGVjayBzdHJpY3RseSBib3VuZAo+IGJ5IHRoZSBHUFUncyB3YWtlbG9jaywg d2UgbW92ZSB0aGUgY2FuY2VsX3N5bmMoaGFuZ2NoZWNrKSB0byB0aGUgaWRsZQo+IHdvcmtlciBi ZWZvcmUgZHJvcHBpbmcgdGhlIHdha2Vsb2NrLgo+IAo+IHYyOiBHdWFyZCBhZ2FpbnN0IFJDVSBm b3VsaW5nIHRoZSBicmVhZGNydW1icyBib3R0b20taGFsZiB3aGlsc3Qgd2Uga2ljawo+IHRoZSB3 YWl0ZXIuCj4gdjM6IFJlbW92ZSB0aGUgd2FrZXJlZiBhc3NlcnRpb24gc3F1ZWxjaGluZyAobm93 IHdlIGhvbGQgYSB3YWtlcmVmIGZvcgo+IHRoZSBoYW5nY2hlY2ssIGFueSBycG0gZXJyb3IgdGhl cmUgaXMgZ2VudWluZSkuCj4gdjQ6IFRvIHByZXZlbnQgZXhjZXNzIHdvcmsgd2hlbiByZXRpcmlu ZyByZXF1ZXN0cywgd2Ugc3BsaXQgdGhlIGJ1c3kKPiBmbGFnIGludG8gdHdvLCBhIGJvb2xlYW4g dG8gZGVub3RlIHdoZXRoZXIgd2UgaG9sZCB0aGUgd2FrZXJlZiBhbmQgYQo+IGJpdG1hc2sgb2Yg YWN0aXZlIGVuZ2luZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gUmVmZXJlbmNlczogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9w Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0MzcKPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqA1ICstCj4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgLQo+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHzCoMKgNTYgKysrKysrKy0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDExNCArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHzCoMKg wqA2ICsrCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfMKgwqAxNSArLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmPCoMKgwqDCoMKgwqDCoHzCoMKgMjYgLS0tLS0tLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgwqAyICstCj4gwqBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmjCoMKgwqDCoHzCoMKgwqA0ICstCj4g wqA5IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCAxMTUgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA3MmRhZTZmYjBhYTIuLmRk NmNmMjIyZThmNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTI0 MzcsNyArMjQzNyw4IEBAIHN0YXRpYyBpbnQgaTkxNV9ycHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gwqAJc3RydWN0IGRybV9maWxlICpmaWxlOwo+IMKgCj4g wqAJc2VxX3ByaW50ZihtLCAiUlBTIGVuYWJsZWQ/ICVkXG4iLCBkZXZfcHJpdi0+cnBzLmVuYWJs ZWQpOwo+IC0Jc2VxX3ByaW50ZihtLCAiR1BVIGJ1c3k/ICVkXG4iLCBkZXZfcHJpdi0+bW0uYnVz eSk7Cj4gKwlzZXFfcHJpbnRmKG0sICJHUFUgYnVzeT8gJXMgWyV4XVxuIiwKPiArCQnCoMKgwqB5 ZXNubyhkZXZfcHJpdi0+Z3QuYXdha2UpLCBkZXZfcHJpdi0+Z3QuYWN0aXZlX2VuZ2luZXMpOwo+ IMKgCXNlcV9wcmludGYobSwgIkNQVSB3YWl0aW5nPyAlZFxuIiwgY291bnRfaXJxX3dhaXRlcnMo ZGV2X3ByaXYpKTsKPiDCoAlzZXFfcHJpbnRmKG0sICJGcmVxdWVuY3kgcmVxdWVzdGVkICVkOyBt aW4gaGFyZDolZCwgc29mdDolZDsgbWF4IHNvZnQ6JWQsIGhhcmQ6JWRcbiIsCj4gwqAJCcKgwqDC oGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBkZXZfcHJpdi0+cnBzLmN1cl9mcmVxKSwKPiBAQCAt Mjc3Nyw3ICsyNzc4LDcgQEAgc3RhdGljIGludCBpOTE1X3J1bnRpbWVfcG1fc3RhdHVzKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+IMKgCWlmICghSEFTX1JVTlRJTUVfUE0oZGV2 X3ByaXYpKQo+IMKgCQlzZXFfcHV0cyhtLCAiUnVudGltZSBwb3dlciBtYW5hZ2VtZW50IG5vdCBz dXBwb3J0ZWRcbiIpOwo+IMKgCj4gLQlzZXFfcHJpbnRmKG0sICJHUFUgaWRsZTogJXNcbiIsIHll c25vKCFkZXZfcHJpdi0+bW0uYnVzeSkpOwo+ICsJc2VxX3ByaW50ZihtLCAiR1BVIGlkbGU6ICVz XG4iLCB5ZXNubyghZGV2X3ByaXYtPmd0LmF3YWtlKSk7Cj4gwqAJc2VxX3ByaW50ZihtLCAiSVJR cyBkaXNhYmxlZDogJXNcbiIsCj4gwqAJCcKgwqDCoHllc25vKCFpbnRlbF9pcnFzX2VuYWJsZWQo ZGV2X3ByaXYpKSk7Cj4gwqAjaWZkZWYgQ09ORklHX1BNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gaW5kZXggM2M4Yzc1Yzc3NTc0Li41ZjcyMDhkMmZkYmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiBAQCAtMjY5Nyw4ICsyNjk3LDYgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1l X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKQo+IMKgCWk5MTVfZ2VtX3JlbGVhc2VfYWxs X21tYXBzKGRldl9wcml2KTsKPiDCoAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiDCoAo+IC0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLmhh bmdjaGVja193b3JrKTsKPiAtCj4gwqAJaW50ZWxfZ3VjX3N1c3BlbmQoZGV2KTsKPiDCoAo+IMKg CWludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBpbmRleCA4OGQ5MjQyMzk4Y2UuLjNmMDc1YWRmOWU4NCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+IEBAIC0xMzA1LDM3ICsxMzA1LDExIEBAIHN0cnVjdCBpOTE1X2dlbV9t bSB7Cj4gwqAJc3RydWN0IGxpc3RfaGVhZCBmZW5jZV9saXN0Owo+IMKgCj4gwqAJLyoqCj4gLQnC oCogV2UgbGVhdmUgdGhlIHVzZXIgSVJRIG9mZiBhcyBtdWNoIGFzIHBvc3NpYmxlLAo+IC0JwqAq IGJ1dCB0aGlzIG1lYW5zIHRoYXQgcmVxdWVzdHMgd2lsbCBmaW5pc2ggYW5kIG5ldmVyCj4gLQnC oCogYmUgcmV0aXJlZCBvbmNlIHRoZSBzeXN0ZW0gZ29lcyBpZGxlLiBTZXQgYSB0aW1lciB0bwo+ IC0JwqAqIGZpcmUgcGVyaW9kaWNhbGx5IHdoaWxlIHRoZSByaW5nIGlzIHJ1bm5pbmcuIFdoZW4g aXQKPiAtCcKgKiBmaXJlcywgZ28gcmV0aXJlIHJlcXVlc3RzLgo+IC0JwqAqLwo+IC0Jc3RydWN0 IGRlbGF5ZWRfd29yayByZXRpcmVfd29yazsKPiAtCj4gLQkvKioKPiAtCcKgKiBXaGVuIHdlIGRl dGVjdCBhbiBpZGxlIEdQVSwgd2Ugd2FudCB0byB0dXJuIG9uCj4gLQnCoCogcG93ZXJzYXZpbmcg ZmVhdHVyZXMuIFNvIG9uY2Ugd2Ugc2VlIHRoYXQgdGhlcmUKPiAtCcKgKiBhcmUgbm8gbW9yZSBy ZXF1ZXN0cyBvdXRzdGFuZGluZyBhbmQgbm8gbW9yZQo+IC0JwqAqIGFycml2ZSB3aXRoaW4gYSBz bWFsbCBwZXJpb2Qgb2YgdGltZSwgd2UgZmlyZQo+IC0JwqAqIG9mZiB0aGUgaWRsZV93b3JrLgo+ IC0JwqAqLwo+IC0Jc3RydWN0IGRlbGF5ZWRfd29yayBpZGxlX3dvcms7Cj4gLQo+IC0JLyoqCj4g wqAJwqAqIEFyZSB3ZSBpbiBhIG5vbi1pbnRlcnJ1cHRpYmxlIHNlY3Rpb24gb2YgY29kZSBsaWtl Cj4gwqAJwqAqIG1vZGVzZXR0aW5nPwo+IMKgCcKgKi8KPiDCoAlib29sIGludGVycnVwdGlibGU7 Cj4gwqAKPiAtCS8qKgo+IC0JwqAqIElzIHRoZSBHUFUgY3VycmVudGx5IGNvbnNpZGVyZWQgaWRs ZSwgb3IgYnVzeSBleGVjdXRpbmcgdXNlcnNwYWNlCj4gLQnCoCogcmVxdWVzdHM/wqDCoFdoaWxz dCBpZGxlLCB3ZSBhdHRlbXB0IHRvIHBvd2VyIGRvd24gdGhlIGhhcmR3YXJlIGFuZAo+IC0JwqAq IGRpc3BsYXkgY2xvY2tzLiBJbiBvcmRlciB0byByZWR1Y2UgdGhlIGVmZmVjdCBvbiBwZXJmb3Jt YW5jZSwgdGhlcmUKPiAtCcKgKiBpcyBhIHNsaWdodCBkZWxheSBiZWZvcmUgd2UgZG8gc28uCj4g LQnCoCovCj4gLQlib29sIGJ1c3k7Cj4gLQo+IMKgCS8qIHRoZSBpbmRpY2F0b3IgZm9yIGRpc3Bh dGNoIHZpZGVvIGNvbW1hbmRzIG9uIHR3byBCU0QgcmluZ3MgKi8KPiDCoAl1bnNpZ25lZCBpbnQg YnNkX3JpbmdfZGlzcGF0Y2hfaW5kZXg7Cj4gwqAKPiBAQCAtMjAzNCw2ICsyMDA4LDM0IEBAIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiDCoAkJaW50ICgqaW5pdF9lbmdpbmVzKShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPiDCoAkJdm9pZCAoKmNsZWFudXBfZW5naW5lKShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+IMKgCQl2b2lkICgqc3RvcF9lbmdpbmUpKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gKwo+ICsJCS8qKgo+ICsJCcKgKiBJcyB0aGUgR1BV IGN1cnJlbnRseSBjb25zaWRlcmVkIGlkbGUsIG9yIGJ1c3kgZXhlY3V0aW5nCj4gKwkJwqAqIHVz ZXJzcGFjZSByZXF1ZXN0cz8gV2hpbHN0IGlkbGUsIHdlIGFsbG93IHJ1bnRpbWUgcG93ZXIKPiAr CQnCoCogbWFuYWdlbWVudCB0byBwb3dlciBkb3duIHRoZSBoYXJkd2FyZSBhbmQgZGlzcGxheSBj bG9ja3MuCj4gKwkJwqAqIEluIG9yZGVyIHRvIHJlZHVjZSB0aGUgZWZmZWN0IG9uIHBlcmZvcm1h bmNlLCB0aGVyZQo+ICsJCcKgKiBpcyBhIHNsaWdodCBkZWxheSBiZWZvcmUgd2UgZG8gc28uCj4g KwkJwqAqLwo+ICsJCXVuc2lnbmVkIGFjdGl2ZV9lbmdpbmVzOwo+ICsJCWJvb2wgYXdha2U7Cj4g Kwo+ICsJCS8qKgo+ICsJCcKgKiBXZSBsZWF2ZSB0aGUgdXNlciBJUlEgb2ZmIGFzIG11Y2ggYXMg cG9zc2libGUsCj4gKwkJwqAqIGJ1dCB0aGlzIG1lYW5zIHRoYXQgcmVxdWVzdHMgd2lsbCBmaW5p c2ggYW5kIG5ldmVyCj4gKwkJwqAqIGJlIHJldGlyZWQgb25jZSB0aGUgc3lzdGVtIGdvZXMgaWRs ZS4gU2V0IGEgdGltZXIgdG8KPiArCQnCoCogZmlyZSBwZXJpb2RpY2FsbHkgd2hpbGUgdGhlIHJp bmcgaXMgcnVubmluZy4gV2hlbiBpdAo+ICsJCcKgKiBmaXJlcywgZ28gcmV0aXJlIHJlcXVlc3Rz Lgo+ICsJCcKgKi8KPiArCQlzdHJ1Y3QgZGVsYXllZF93b3JrIHJldGlyZV93b3JrOwo+ICsKPiAr CQkvKioKPiArCQnCoCogV2hlbiB3ZSBkZXRlY3QgYW4gaWRsZSBHUFUsIHdlIHdhbnQgdG8gdHVy biBvbgo+ICsJCcKgKiBwb3dlcnNhdmluZyBmZWF0dXJlcy4gU28gb25jZSB3ZSBzZWUgdGhhdCB0 aGVyZQo+ICsJCcKgKiBhcmUgbm8gbW9yZSByZXF1ZXN0cyBvdXRzdGFuZGluZyBhbmQgbm8gbW9y ZQo+ICsJCcKgKiBhcnJpdmUgd2l0aGluIGEgc21hbGwgcGVyaW9kIG9mIHRpbWUsIHdlIGZpcmUK PiArCQnCoCogb2ZmIHRoZSBpZGxlX3dvcmsuCj4gKwkJwqAqLwo+ICsJCXN0cnVjdCBkZWxheWVk X3dvcmsgaWRsZV93b3JrOwoKQ29kZSBtb3Rpb24gd291bGQgYmUgY29vbCBpbiBzZXBhcmF0ZSBw YXRjaGVzLCBidXQgd2VsbCBpdCdzIGEgNjIgcGF0Y2gKc2VyaWVzIGFscmVhZHkuCgo+IMKgCX0g Z3Q7Cj4gwqAKPiDCoAkvKiBwZXJmb3JtIFBIWSBzdGF0ZSBzYW5pdHkgY2hlY2tzPyAqLwo+IEBA IC0zMjQ3LDcgKzMyNDksNyBAQCBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX3NldF9zZXFubyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2Vxbm8pOwo+IMKgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICoKPiDCoGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKTsKPiDCoAo+IC1ib29sIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGk5MTVfZ2VtX3Jl dGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IMKgdm9p ZCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwo+IMKgCj4gwqBzdGF0aWMgaW5saW5lIHUzMiBpOTE1X3Jlc2V0X2NvdW50ZXIoc3Ry dWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvcikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRl eCBmNGU1NTBkZGFhNWQuLjVhNzEzMWI3NDlhMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IEBAIC0yNTU0LDYgKzI1NTQsMjYgQEAgaTkxNV9nZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpzZXFubykKPiDCoAlyZXR1cm4gMDsKPiDCoH0K PiDCoAo+ICtzdGF0aWMgdm9pZCBpOTE1X2dlbV9tYXJrX2J1c3koc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICsJCQnCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJZGV2X3ByaXYtPmd0LmFjdGl2ZV9lbmdpbmVzIHw9 IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4gKwlpZiAoZGV2X3ByaXYtPmd0LmF3YWtlKQo+ ICsJCXJldHVybjsKPiArCj4gKwlpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZShkZXZfcHJp dik7Cj4gKwlkZXZfcHJpdi0+Z3QuYXdha2UgPSB0cnVlOwo+ICsKPiArCWludGVsX2VuYWJsZV9n dF9wb3dlcnNhdmUoZGV2X3ByaXYpOwo+ICsJaTkxNV91cGRhdGVfZ2Z4X3ZhbChkZXZfcHJpdik7 Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KQo+ICsJCWdlbjZfcnBzX2J1 c3koZGV2X3ByaXYpOwo+ICsKPiArCXF1ZXVlX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsCj4g KwkJCcKgwqDCoCZkZXZfcHJpdi0+Z3QucmV0aXJlX3dvcmssCj4gKwkJCcKgwqDCoHJvdW5kX2pp ZmZpZXNfdXBfcmVsYXRpdmUoSFopKTsKPiArfQo+ICsKPiDCoC8qCj4gwqAgKiBOQjogVGhpcyBm dW5jdGlvbiBpcyBub3QgYWxsb3dlZCB0byBmYWlsLiBEb2luZyBzbyB3b3VsZCBtZWFuIHRoZSB0 aGUKPiDCoCAqIHJlcXVlc3QgaXMgbm90IGJlaW5nIHRyYWNrZWQgZm9yIGNvbXBsZXRpb24gYnV0 IHRoZSB3b3JrIGl0c2VsZiBpcwo+IEBAIC0yNjQwLDEyICsyNjYwLDYgQEAgdm9pZCBfX2k5MTVf YWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+IMKgCX0K PiDCoAkvKiBOb3QgYWxsb3dlZCB0byBmYWlsISAqLwo+IMKgCVdBUk4ocmV0LCAiZW1pdHxhZGRf cmVxdWVzdCBmYWlsZWQ6ICVkIVxuIiwgcmV0KTsKPiAtCj4gLQlxdWV1ZV9kZWxheWVkX3dvcmso ZGV2X3ByaXYtPndxLAo+IC0JCQnCoMKgwqAmZGV2X3ByaXYtPm1tLnJldGlyZV93b3JrLAo+IC0J CQnCoMKgwqByb3VuZF9qaWZmaWVzX3VwX3JlbGF0aXZlKEhaKSk7Cj4gLQlpbnRlbF9tYXJrX2J1 c3koZGV2X3ByaXYpOwo+IC0KPiDCoAkvKiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgcmVzZXJ2ZWQg c2l6ZSB3YXMgbGFyZ2UgZW5vdWdoLiAqLwo+IMKgCXJldCA9IGludGVsX3JpbmdfZ2V0X3RhaWwo cmluZ2J1ZikgLSByZXF1ZXN0X3N0YXJ0Owo+IMKgCWlmIChyZXQgPCAwKQo+IEBAIC0yNjU0LDYg KzI2NjgsOCBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcXVlc3QsCj4gwqAJCcKgwqAiTm90IGVub3VnaCBzcGFjZSByZXNlcnZlZCAoJWQg Ynl0ZXMpICIKPiDCoAkJwqDCoCJmb3IgYWRkaW5nIHRoZSByZXF1ZXN0ICglZCBieXRlcylcbiIs Cj4gwqAJCcKgwqByZXNlcnZlZF90YWlsLCByZXQpOwo+ICsKPiArCWk5MTVfZ2VtX21hcmtfYnVz eShkZXZfcHJpdiwgZW5naW5lKTsKPiDCoH0KPiDCoAo+IMKgc3RhdGljIGJvb2wgaTkxNV9jb250 ZXh0X2lzX2Jhbm5lZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTI5 NjgsNDYgKzI5ODQsNDcgQEAgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IMKgCVdBUk5fT04oaTkxNV92ZXJpZnlfbGlzdHMoZW5n aW5lLT5kZXYpKTsKPiDCoH0KPiDCoAo+IC1ib29sCj4gLWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgaTkxNV9nZW1fcmV0 aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoHsKPiDC oAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQlib29sIGlkbGUgPSB0cnVlOwo+ ICsKPiArCWlmIChkZXZfcHJpdi0+Z3QuYWN0aXZlX2VuZ2luZXMgPT0gMCkKPiArCQlyZXR1cm47 Cj4gKwo+ICsJR0VNX0JVR19PTighZGV2X3ByaXYtPmd0LmF3YWtlKTsKPiDCoAo+IMKgCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7Cj4gwqAJCWk5MTVfZ2VtX3JldGlyZV9yZXF1 ZXN0c19yaW5nKGVuZ2luZSk7Cj4gLQkJaWRsZSAmPSBsaXN0X2VtcHR5KCZlbmdpbmUtPnJlcXVl c3RfbGlzdCk7Cj4gLQkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+IC0JCQlzcGluX2xv Y2tfYmgoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7Cj4gLQkJCWlkbGUgJj0gbGlzdF9lbXB0eSgm ZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gLQkJCXNwaW5fdW5sb2NrX2JoKCZlbmdpbmUtPmV4 ZWNsaXN0X2xvY2spOwo+IC0JCX0KCkFzIGRpc2N1c3NlZCBpbiBJUkMsIHRoaXMgZGlzYXBwZWFy aW5nIGNvdWxkIGJlIG1lbnRpb25lZCBpbiB0aGUgY29tbWl0Cm1lc3NhZ2UuCgo+ICsJCWlmIChs aXN0X2VtcHR5KCZlbmdpbmUtPnJlcXVlc3RfbGlzdCkpCj4gKwkJCWRldl9wcml2LT5ndC5hY3Rp dmVfZW5naW5lcyAmPSB+aW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiDCoAl9Cj4gwqAKPiAt CWlmIChpZGxlKQo+ICsJaWYgKGRldl9wcml2LT5ndC5hY3RpdmVfZW5naW5lcyA9PSAwKQo+IMKg CQltb2RfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwKPiAtCQkJCcKgJmRldl9wcml2LT5tbS5p ZGxlX3dvcmssCj4gKwkJCQnCoCZkZXZfcHJpdi0+Z3QuaWRsZV93b3JrLAo+IMKgCQkJCcKgbXNl Y3NfdG9famlmZmllcygxMDApKTsKPiAtCj4gLQlyZXR1cm4gaWRsZTsKPiDCoH0KPiDCoAo+IMKg c3RhdGljIHZvaWQKPiDCoGk5MTVfZ2VtX3JldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9Cj4gLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBtbS5yZXRpcmVf d29yay53b3JrKTsKPiArCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksIGd0 LnJldGlyZV93b3JrLndvcmspOwo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJp di0+ZGV2Owo+IC0JYm9vbCBpZGxlOwo+IMKgCj4gwqAJLyogQ29tZSBiYWNrIGxhdGVyIGlmIHRo ZSBkZXZpY2UgaXMgYnVzeS4uLiAqLwo+IC0JaWRsZSA9IGZhbHNlOwo+IMKgCWlmIChtdXRleF90 cnlsb2NrKCZkZXYtPnN0cnVjdF9tdXRleCkpIHsKPiAtCQlpZGxlID0gaTkxNV9nZW1fcmV0aXJl X3JlcXVlc3RzKGRldl9wcml2KTsKPiArCQlpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3By aXYpOwo+IMKgCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiDCoAl9Cj4gLQlp ZiAoIWlkbGUpCj4gLQkJcXVldWVfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwgJmRldl9wcml2 LT5tbS5yZXRpcmVfd29yaywKPiArCj4gKwkvKiBLZWVwIHRoZSByZXRpcmUgaGFuZGxlciBydW5u aW5nIHVudGlsIHdlIGFyZSBmaW5hbGx5IGlkbGUuCj4gKwnCoCogV2UgZG8gbm90IG5lZWQgdG8g ZG8gdGhpcyB0ZXN0IHVuZGVyIGxvY2tpbmcgYXMgaW4gdGhlIHdvcnN0LWNhc2UKPiArCcKgKiB3 ZSBxdWV1ZSB0aGUgcmV0aXJlIHdvcmtlciBvbmNlIHRvbyBvZnRlbi4KPiArCcKgKi8KPiArCWlm IChSRUFEX09OQ0UoZGV2X3ByaXYtPmd0LmF3YWtlKSkKClRoaXMgaXMgdGhlIG9ubHkgb2NjdXJy YW5jZSBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBkb24ndCB0aGluayB3ZSBuZWVkClJFQURfT05DRS4g Tm90IHN1cmUgaWYgUkVBRF9PTkNFIGlzIGdvb2QgZG9jdW1lbnRhdGlvbiBvZiAicmVhZCBvdXRz aWRlCmxvY2siLCBjb21tZW50IG1pZ2h0IGJlIGJldHRlci4KCj4gKwkJcXVldWVfZGVsYXllZF93 b3JrKGRldl9wcml2LT53cSwKPiArCQkJCcKgwqDCoCZkZXZfcHJpdi0+Z3QucmV0aXJlX3dvcmss Cj4gwqAJCQkJwqDCoMKgcm91bmRfamlmZmllc191cF9yZWxhdGl2ZShIWikpOwo+IMKgfQo+IMKg Cj4gQEAgLTMwMTUsMjUgKzMwMzIsMzYgQEAgc3RhdGljIHZvaWQKPiDCoGk5MTVfZ2VtX2lkbGVf d29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiDCoHsKPiDCoAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBl b2YoKmRldl9wcml2KSwgbW0uaWRsZV93b3JrLndvcmspOwo+ICsJCWNvbnRhaW5lcl9vZih3b3Jr LCB0eXBlb2YoKmRldl9wcml2KSwgZ3QuaWRsZV93b3JrLndvcmspOwo+IMKgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IMKgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKPiDCoAo+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpCj4gLQkJ aWYgKCFsaXN0X2VtcHR5KCZlbmdpbmUtPnJlcXVlc3RfbGlzdCkpCj4gLQkJCXJldHVybjsKPiAr CWlmICghUkVBRF9PTkNFKGRldl9wcml2LT5ndC5hd2FrZSkpCj4gKwkJcmV0dXJuOwo+IMKgCj4g LQkvKiB3ZSBwcm9iYWJseSBzaG91bGQgc3luYyB3aXRoIGhhbmdjaGVjayBoZXJlLCB1c2luZyBj YW5jZWxfd29ya19zeW5jLgo+IC0JwqAqIEFsc28gbG9ja2luZyBzZWVtcyB0byBiZSBmdWJhciBo ZXJlLCBlbmdpbmUtPnJlcXVlc3RfbGlzdCBpcyBwcm90ZWN0ZWQKPiAtCcKgKiBieSBkZXYtPnN0 cnVjdF9tdXRleC4gKi8KPiArCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCWlm IChkZXZfcHJpdi0+Z3QuYWN0aXZlX2VuZ2luZXMpCj4gKwkJZ290byBvdXQ7Cj4gwqAKPiAtCWlu dGVsX21hcmtfaWRsZShkZXZfcHJpdik7Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZf cHJpdikKPiArCQlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2luZS0+YmF0Y2hfcG9vbCk7 Cj4gwqAKPiAtCWlmIChtdXRleF90cnlsb2NrKCZkZXYtPnN0cnVjdF9tdXRleCkpIHsKPiAtCQlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikKPiAtCQkJaTkxNV9nZW1fYmF0Y2hfcG9v bF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+ICsJR0VNX0JVR19PTighZGV2X3ByaXYtPmd0 LmF3YWtlKTsKPiArCWRldl9wcml2LT5ndC5hd2FrZSA9IGZhbHNlOwo+IMKgCj4gLQkJbXV0ZXhf dW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA+PSA2KQo+ICsJCWdlbjZfcnBzX2lkbGUoZGV2X3ByaXYpOwo+ICsJaW50ZWxfcnVudGlt ZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICtvdXQ6Cj4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiArCj4gKwlpZiAoIWRldl9wcml2LT5ndC5hd2FrZSAmJgoKTm8gUkVBRF9PTkNF IGhlcmUsIGV2ZW4gd2UganVzdCB1bmxvY2tlZCB0aGUgbXV0ZXguIFNvIGxhY2tzIHNvbWUKY29u c2lzdGVuY3kuCgpBbHNvLCB0aGlzIGFzc3VtZXMgd2UgbWlnaHQgYmUgcHJlLWVtcHRlZCBiZXR3 ZWVuIHVubG9ja2luZyBtdXRleCBhbmQKbWFraW5nIHRoaXMgdGVzdCwgc28gSSdtIGxpdHRsZSBi aXQgY29uZnVzZWQuIERvIHlvdSB3YW50IHRvIG9wdGltaXplCmJ5IGF2b2lkaW5nIGNhbGxpbmcg Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jPwoKPiArCcKgwqDCoMKgY2FuY2VsX2RlbGF5ZWRfd29y a19zeW5jKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLmhhbmdjaGVja193b3JrKSkgewo+ICsJCXVuc2ln bmVkIHN0dWNrID0gaW50ZWxfa2lja193YWl0ZXJzKGRldl9wcml2KTsKPiArCQlpZiAodW5saWtl bHkoc3R1Y2spKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoImtpY2tlZCBzdHVjayB3YWl0ZXJz Li4ubWlzc2VkIGlycVxuIik7Cj4gKwkJCWRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2lycV9y aW5ncyB8PSBzdHVjazsKPiArCQl9Cj4gwqAJfQo+IMKgfQo+IMKgCj4gQEAgLTQxNTQsNyArNDE4 Miw3IEBAIGk5MTVfZ2VtX3JpbmdfdGhyb3R0bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9maWxlICpmaWxlKQo+IMKgCj4gwqAJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdCh0 YXJnZXQsIHRydWUsIE5VTEwsIE5VTEwpOwo+IMKgCWlmIChyZXQgPT0gMCkKPiAtCQlxdWV1ZV9k ZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLCAmZGV2X3ByaXYtPm1tLnJldGlyZV93b3JrLCAwKTsK PiArCQlxdWV1ZV9kZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLCAmZGV2X3ByaXYtPmd0LnJldGly ZV93b3JrLCAwKTsKPiDCoAo+IMKgCWk5MTVfZ2VtX3JlcXVlc3RfdW5yZWZlcmVuY2UodGFyZ2V0 KTsKPiDCoAo+IEBAIC00NjcyLDEzICs0NzAwLDEzIEBAIGk5MTVfZ2VtX3N1c3BlbmQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiDCoAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiDCoAo+IMKgCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmdwdV9lcnJvci5o YW5nY2hlY2tfd29yayk7Cj4gLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT5t bS5yZXRpcmVfd29yayk7Cj4gLQlmbHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5tbS5pZGxl X3dvcmspOwo+ICsJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+Z3QucmV0aXJl X3dvcmspOwo+ICsJZmx1c2hfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+Z3QuaWRsZV93b3JrKTsK PiDCoAo+IMKgCS8qIEFzc2VydCB0aGF0IHdlIHN1Y2Vzc2Z1bGx5IGZsdXNoZWQgYWxsIHRoZSB3 b3JrIGFuZAo+IMKgCcKgKiByZXNldCB0aGUgR1BVIGJhY2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dl ciBzdGF0ZS4KPiDCoAnCoCovCj4gLQlXQVJOX09OKGRldl9wcml2LT5tbS5idXN5KTsKPiArCVdB Uk5fT04oZGV2X3ByaXYtPmd0LmF3YWtlKTsKPiDCoAo+IMKgCXJldHVybiAwOwo+IMKgCj4gQEAg LTQ5ODIsOSArNTAxMCw5IEBAIGk5MTVfZ2VtX2xvYWRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+IMKgCQlpbml0X2VuZ2luZV9saXN0cygmZGV2X3ByaXYtPmVuZ2luZVtpXSk7Cj4gwqAJ Zm9yIChpID0gMDsgaSA8IEk5MTVfTUFYX05VTV9GRU5DRVM7IGkrKykKPiDCoAkJSU5JVF9MSVNU X0hFQUQoJmRldl9wcml2LT5mZW5jZV9yZWdzW2ldLmxydV9saXN0KTsKPiAtCUlOSVRfREVMQVlF RF9XT1JLKCZkZXZfcHJpdi0+bW0ucmV0aXJlX3dvcmssCj4gKwlJTklUX0RFTEFZRURfV09SSygm ZGV2X3ByaXYtPmd0LnJldGlyZV93b3JrLAo+IMKgCQkJwqDCoGk5MTVfZ2VtX3JldGlyZV93b3Jr X2hhbmRsZXIpOwo+IC0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5tbS5pZGxlX3dvcmss Cj4gKwlJTklUX0RFTEFZRURfV09SSygmZGV2X3ByaXYtPmd0LmlkbGVfd29yaywKPiDCoAkJCcKg wqBpOTE1X2dlbV9pZGxlX3dvcmtfaGFuZGxlcik7Cj4gwqAJaW5pdF93YWl0cXVldWVfaGVhZCgm ZGV2X3ByaXYtPmdwdV9lcnJvci53YWl0X3F1ZXVlKTsKPiDCoAlpbml0X3dhaXRxdWV1ZV9oZWFk KCZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggODA5NzY5OGI5NjIyLi5kMzI5N2RhYjAy OTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4g QEAgLTE0NzcsNiArMTQ3NywxMiBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gwqAJCWRpc3BhdGNoX2ZsYWdzIHw9IEk5MTVfRElT UEFUQ0hfUlM7Cj4gwqAJfQo+IMKgCj4gKwkvKiBUYWtlIGEgbG9jYWwgd2FrZXJlZiBmb3IgcHJl cGFyaW5nIHRvIGRpc3BhdGNoIHRoZSBleGVjYnVmIGFzCj4gKwnCoCogd2UgZXhwZWN0IHRvIGFj Y2VzcyB0aGUgaGFyZHdhcmUgZmFpcmx5IGZyZXF1ZW50bHkgaW4gdGhlCj4gKwnCoCogcHJvY2Vz cy4gVXBvbiBmaXJzdCBkaXNwYXRjaCwgd2UgYWNxdWlyZSBhbm90aGVyIHByb2xvbmdlZAo+ICsJ wqAqIHdha2VyZWYgdGhhdCB3ZSBob2xkIHVudGlsIHRoZSBHUFUgaGFzIGJlZW4gaWRsZSBmb3Ig YXQgbGVhc3QKPiArCcKgKiAxMDBtcy4KPiArCcKgKi8KPiDCoAlpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7Cj4gwqAKPiDCoAlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJs ZShkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IGY3NGY1NzI3ZWE3Ny4uN2Ey ZGM4ZjFmNjRlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTMxMDIsMTIgKzMx MDIsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2hhbmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKPiDCoAlpZiAoIWk5MTUuZW5hYmxlX2hhbmdjaGVjaykKPiDCoAkJcmV0dXJu Owo+IMKgCj4gLQkvKgo+IC0JwqAqIFRoZSBoYW5nY2hlY2sgd29yayBpcyBzeW5jZWQgZHVyaW5n IHJ1bnRpbWUgc3VzcGVuZCwgd2UgZG9uJ3QKPiAtCcKgKiByZXF1aXJlIGEgd2FrZXJlZi4gVE9E TzogaW5zdGVhZCBvZiBkaXNhYmxpbmcgdGhlIGFzc2VydHMgbWFrZQo+IC0JwqAqIHN1cmUgdGhh dCB3ZSBob2xkIGEgcmVmZXJlbmNlIHdoZW4gdGhpcyB3b3JrIGlzIHJ1bm5pbmcuCj4gLQnCoCov Cj4gLQlESVNBQkxFX1JQTV9XQUtFUkVGX0FTU0VSVFMoZGV2X3ByaXYpOwo+ICsJaWYgKCFSRUFE X09OQ0UoZGV2X3ByaXYtPmd0LmF3YWtlKSkKPiArCQlyZXR1cm47Cj4gwqAKPiDCoAkvKiBBcyBl bmFibGluZyB0aGUgR1BVIHJlcXVpcmVzIGZhaXJseSBleHRlbnNpdmUgbW1pbyBhY2Nlc3MsCj4g wqAJwqAqIHBlcmlvZGljYWxseSBhcm0gdGhlIG1taW8gY2hlY2tlciB0byBzZWUgaWYgd2UgYXJl IHRyaWdnZXJpbmcKPiBAQCAtMzIxNSwxNyArMzIxMSwxMiBAQCBzdGF0aWMgdm9pZCBpOTE1X2hh bmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiDCoAkJfQo+IMKgCX0K PiDCoAo+IC0JaWYgKHJpbmdzX2h1bmcpIHsKPiArCWlmIChyaW5nc19odW5nKQo+IMKgCQlpOTE1 X2hhbmRsZV9lcnJvcihkZXZfcHJpdiwgcmluZ3NfaHVuZywgIkVuZ2luZShzKSBodW5nIik7Cj4g LQkJZ290byBvdXQ7Cj4gLQl9Cj4gwqAKPiDCoAkvKiBSZXNldCB0aW1lciBpbiBjYXNlIEdQVSBo YW5ncyB3aXRob3V0IGFub3RoZXIgcmVxdWVzdCBiZWluZyBhZGRlZCAqLwo+IMKgCWlmIChidXN5 X2NvdW50KQo+IMKgCQlpOTE1X3F1ZXVlX2hhbmdjaGVjayhkZXZfcHJpdik7Cj4gLQo+IC1vdXQ6 Cj4gLQlFTkFCTEVfUlBNX1dBS0VSRUZfQVNTRVJUUyhkZXZfcHJpdik7Cj4gwqB9Cj4gwqAKPiDC oHN0YXRpYyB2b2lkIGlieF9pcnFfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggYmIwOWVlNmQxYTNmLi4xNGU0MWZk ZDgxMTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEwOTY5 LDMyICsxMDk2OSw2IEBAIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICppbnRlbF9jcnRjX21vZGVf Z2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJcmV0dXJuIG1vZGU7Cj4gwqB9Cj4gwqAK PiAtdm9pZCBpbnRlbF9tYXJrX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+IC17Cj4gLQlpZiAoZGV2X3ByaXYtPm1tLmJ1c3kpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlu dGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKPiAtCWludGVsX2VuYWJsZV9ndF9wb3dlcnNh dmUoZGV2X3ByaXYpOwo+IC0JaTkxNV91cGRhdGVfZ2Z4X3ZhbChkZXZfcHJpdik7Cj4gLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA2KQo+IC0JCWdlbjZfcnBzX2J1c3koZGV2X3ByaXYpOwo+ IC0JZGV2X3ByaXYtPm1tLmJ1c3kgPSB0cnVlOwo+IC19Cj4gLQo+IC12b2lkIGludGVsX21hcmtf aWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAtCWlmICghZGV2 X3ByaXYtPm1tLmJ1c3kpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWRldl9wcml2LT5tbS5idXN5ID0g ZmFsc2U7Cj4gLQo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikKPiAtCQlnZW42X3Jw c19pZGxlKGRldl9wcml2KTsKPiAtCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7 Cj4gLX0KPiAtCj4gwqBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rlc3Ryb3koc3RydWN0IGRybV9j cnRjICpjcnRjKQo+IMKgewo+IMKgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCA3MTJiZDBk ZWJiOTEuLjM1YmI5YTIzY2QyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC00 ODUwLDcgKzQ4NTAsNyBAQCB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiDCoAkvKiBUaGlzIGlzIGludGVudGlvbmFsbHkgcmFjeSEgV2UgcGVl ayBhdCB0aGUgc3RhdGUgaGVyZSwgdGhlbgo+IMKgCcKgKiB2YWxpZGF0ZSBpbnNpZGUgdGhlIFJQ UyB3b3JrZXIuCj4gwqAJwqAqLwo+IC0JaWYgKCEoZGV2X3ByaXYtPm1tLmJ1c3kgJiYKPiArCWlm ICghKGRldl9wcml2LT5ndC5hd2FrZSAmJgo+IMKgCcKgwqDCoMKgwqDCoGRldl9wcml2LT5ycHMu ZW5hYmxlZCAmJgo+IMKgCcKgwqDCoMKgwqDCoGRldl9wcml2LT5ycHMuY3VyX2ZyZXEgPCBkZXZf cHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCkpCj4gwqAJCXJldHVybjsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggMTY2ZjFhMzgyOWIwLi5kMGNkOWEx YWE4MGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAg LTM3MiwxMyArMzcyLDEzIEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+IMKgfTsKPiDCoAo+ IMKgc3RhdGljIGlubGluZSBib29sCj4gLWludGVsX2VuZ2luZV9pbml0aWFsaXplZChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK2ludGVsX2VuZ2luZV9pbml0aWFsaXplZChjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gwqB7Cj4gwqAJcmV0dXJuIGVuZ2lu ZS0+aTkxNSAhPSBOVUxMOwo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgaW5saW5lIHVuc2lnbmVkCj4g LWludGVsX2VuZ2luZV9mbGFnKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAraW50 ZWxfZW5naW5lX2ZsYWcoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IMKg ewo+IMKgCXJldHVybiAxIDw8IGVuZ2luZS0+aWQ7Cj4gwqB9CgpJIHRoaW5rIG1ham9yaXR5IG9m IG91ciBmdW5jdGlvbnMgYXJlIG5vdCBjb25zdC1jb3JyZWN0LCBJIHJlbWVtYmVyCnNvbWUgZ3J1 bnRpbmcgb24gdGhlIHN1YmplY3Qgd2hlbiBJIHRyaWVkIHRvIGNoYW5nZSBzb21lIHRvIGJlLiBC dXQgSSdtCmFsbCBmb3IgaXQgbXlzZWxmLgoKUmVnYXJkcywgSm9vbmFzCgotLSAKSm9vbmFzIExh aHRpbmVuCk9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCkludGVsIENvcnBvcmF0aW9uCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=