From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: Re: [PATCH 36/36] drm/i915: Support per-context user requests for GPU frequency control Date: Mon, 19 Mar 2018 15:21:08 +0530 Message-ID: <43c7ab26-218a-65d7-e65d-1049addfc816@intel.com> References: <20180314093748.8541-1-chris@chris-wilson.co.uk> <20180314093748.8541-36-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id C19746E4BF for ; Mon, 19 Mar 2018 09:51:12 +0000 (UTC) In-Reply-To: <20180314093748.8541-36-chris@chris-wilson.co.uk> Content-Language: en-US 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 Cc: praveen.paneri@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAzLzE0LzIwMTggMzowNyBQTSwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IE9mdGVuLCB3ZSBm aW5kIG91cnNlbHZlcyBmYWNpbmcgYSB3b3JrbG9hZCB3aGVyZSB0aGUgdXNlciBrbm93cyBpbgo+ IGFkdmFuY2Ugd2hhdCBHUFUgZnJlcXVlbmN5IHRoZXkgcmVxdWlyZSBmb3IgaXQgdG8gY29tcGxl dGUgaW4gYSB0aW1lbHkKPiBtYW5uZXIsIGFuZCB1c2luZyBwYXN0IGV4cGVyaWVuY2UgdGhleSBj YW4gb3V0cGVyZm9ybSB0aGUgSFcgYXNzaXN0ZWQKPiBSUFMgYXV0b3R1bmluZy4gQW4gZXhhbXBs ZSBtaWdodCBiZSBrb2RpIChIVFBDKSB3aGVyZSB0aGV5IGtub3cgdGhhdAo+IHZpZGVvIGRlY29k aW5nIGFuZCBjb21wb3NpdGluZyByZXF1aXJlIGEgbWluaW11bSBmcmVxdWVuY3kgdG8gYXZvaWQg ZXZlcgo+IGRyb3BwaW5nIGEgZnJhbWUsIG9yIGNvbnZlcnNlbHkga25vdyB3aGVuIHRoZXkgYXJl IGluIGEgcG93ZXJzYXZpbmcgbW9kZQo+IGFuZCB3b3VsZCByYXRoZXIgaGF2ZSBzbG93ZXIgdXBk YXRlcyB0aGFuIHJhbXAgdXAgdGhlIEdQVSBmcmVxdWVuY3kgYW5kCj4gcG93ZXIgY29uc3VtcHRp b24uIE90aGVyIHdvcmtsb2FkcyBtYXkgZGVmZWF0IHRoZSBhdXRvdHVuaW5nIGVudGlyZWx5Cj4g YW5kIG5lZWQgbWFudWFsIGNvbnRyb2wgdG8gbWVldCB0aGVpciBwZXJmb3JtYW5jZSBnb2Fscywg ZS5nLiBidXJzdHkKPiBhcHBsaWNhdGlvbnMgd2hpY2ggcmVxdWlyZSBsb3cgbGF0ZW5jeS4KPgo+ IFRvIGFjY29tbW9kYXRlIHRoZSB2YXJ5aW5nIG5lZWRzIG9mIGRpZmZlcmVudCBhcHBsaWNhdGlv bnMsIHRoYXQgbWF5IGJlCj4gcnVubmluZyBjb25jdXJyZW50bHksIHdlIHdhbnQgYSBtb3JlIGZs ZXhpYmxlIHN5c3RlbSB0aGFuIGEgZ2xvYmFsIGxpbWl0Cj4gc3VwcGxpZWQgYnkgc3lzZnMuIFRv IHRoaXMgZW5kLCB3ZSBvZmZlciB0aGUgYXBwbGljYXRpb24gdGhlIG9wdGlvbiB0bwo+IHNldCB0 aGVpciBkZXNpcmVkIGZyZXF1ZW5jeSBib3VuZHMgb24gdGhlIGNvbnRleHQgaXRzZWxmLCBhbmQg YXBwbHkgdGhvc2UKPiBib3VuZHMgd2hlbiB3ZSBleGVjdXRlIGNvbW1hbmRzIGZyb20gdGhlIGFw cGxpY2F0aW9uLCBzd2l0Y2hpbmcgYmV0d2Vlbgo+IGJvdW5kcyBqdXN0IGFzIGVhc2lseSBhcyB3 ZSBzd2l0Y2ggYmV0d2VlbiB0aGUgY2xpZW50cyB0aGVtc2VsdmVzLgo+Cj4gVGhlIGNsaWVudHMg Y2FuIHF1ZXJ5IHRoZSByYW5nZSBzdXBwb3J0ZWQgYnkgdGhlIEhXLCBvciBhdCBsZWFzdCB0aGUK PiByYW5nZSB0aGV5IGFyZSByZXN0cmljdGVkIHRvLCBhbmQgdGhlbiBmcmVlbHkgc2VsZWN0IGZy ZXF1ZW5jaWVzIHdpdGhpbgo+IHRoYXQgcmFuZ2UgdGhhdCB0aGV5IHdhbnQgdG8gcnVuIGF0LiAo VGhleSBjYW4gc2VsZWN0IGp1c3QgYSBzaW5nbGUKPiBmcmVxdWVuY3kgaWYgdGhleSBzbyBjaG9v c2UuKSBBcyB0aGlzIGlzIHN1YmplY3QgdG8gdGhlIGdsb2JhbCBsaW1pdAo+IHN1cHBsaWVkIGJ5 IHRoZSB1c2VyIGluIHN5c2ZzLCBhbmQgYSBjbGllbnQgY2FuIG9ubHkgcmVkdWNlIHRoZSByYW5n ZSBvZgo+IGZyZXF1ZW5jaWVzIHRoZXkgYWxsb3cgdGhlIEhXIHRvIHJ1biBhdCwgd2UgYWxsb3cg YWxsIGNsaWVudHMgdG8gYWRqdXN0Cj4gdGhlaXIgcmVxdWVzdCAoYW5kIG5vdCByZXN0cmljdCBy YWlzaW5nIHRoZSBtaW5pbXVtIHRvIHByaXZpbGVnZWQKPiBDQVBfU1lTX05JQ0UgY2xpZW50cyku Cj4KPiBUZXN0Y2FzZTogaWd0L2dlbV9jdHhfZnJlcQo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0 a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gQ2M6IFByYXZlZW4gUGFuZXJpIDxwcmF2ZWVuLnBhbmVy aUBpbnRlbC5jb20+Cj4gQ2M6IFNhZ2FyIEEgS2FtYmxlIDxzYWdhci5hLmthbWJsZUBpbnRlbC5j b20+CkNoYW5nZSBsb29rcyBnb29kIHRvIG1lLiBJIGhhdmUgb25lIHF1ZXJ5IGJlbG93Lgo8c25p cD4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Np b24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRl eCA4YThhZDJmZTE1OGQuLmQ4ZWFhZTY4MzE4NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC0yNiw5ICsyNiwxMiBAQAo+ICAgI2luY2x1 ZGUgPHRyYWNlL2V2ZW50cy9kbWFfZmVuY2UuaD4KPiAgIAo+ICAgI2luY2x1ZGUgImludGVsX2d1 Y19zdWJtaXNzaW9uLmgiCj4gLSNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCj4gKwo+ICAgI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCj4gICAKPiArI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCj4gKyNp bmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCj4gKwo+ICAgI2RlZmluZSBHVUNfUFJFRU1QVF9GSU5J U0hFRAkJMHgxCj4gICAjZGVmaW5lIEdVQ19QUkVFTVBUX0JSRUFEQ1JVTUJfRFdPUkRTCTB4OAo+ ICAgI2RlZmluZSBHVUNfUFJFRU1QVF9CUkVBRENSVU1CX0JZVEVTCVwKPiBAQCAtNjUwLDYgKzY1 MywxMiBAQCBzdGF0aWMgdm9pZCBndWNfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAl9Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgdXBkYXRlX3JwcyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWludGVsX3Jwc191cGRhdGVfZW5naW5l KGVuZ2luZSwKPiArCQkJCXBvcnRfcmVxdWVzdChlbmdpbmUtPmV4ZWNsaXN0cy5wb3J0KS0+Y3R4 KTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIHBvcnRfYXNzaWduKHN0cnVjdCBleGVjbGlzdF9w b3J0ICpwb3J0LCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAgIAlHRU1fQlVHX09O KHBvcnRfaXNzZXQocG9ydCkpOwo+IEBAIC03MjgsNiArNzM3LDcgQEAgc3RhdGljIHZvaWQgZ3Vj X2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWV4ZWNsaXN0cy0+ Zmlyc3QgPSByYjsKPiAgIAlpZiAoc3VibWl0KSB7Cj4gICAJCXBvcnRfYXNzaWduKHBvcnQsIGxh c3QpOwo+ICsJCXVwZGF0ZV9ycHMoZW5naW5lKTsKPiAgIAkJZXhlY2xpc3RzX3NldF9hY3RpdmUo ZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpOwo+ICAgCQlndWNfc3VibWl0KGVuZ2lu ZSk7Cj4gICAJfQo+IEBAIC03NTcsOCArNzY3LDEwIEBAIHN0YXRpYyB2b2lkIGd1Y19zdWJtaXNz aW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAgCj4gICAJCXJxID0gcG9ydF9yZXF1 ZXN0KCZwb3J0WzBdKTsKPiAgIAl9Cj4gLQlpZiAoIXJxKQo+ICsJaWYgKCFycSkgewo+ICAgCQll eGVjbGlzdHNfY2xlYXJfYWN0aXZlKGV4ZWNsaXN0cywgRVhFQ0xJU1RTX0FDVElWRV9VU0VSKTsK PiArCQlpbnRlbF9ycHNfdXBkYXRlX2VuZ2luZShlbmdpbmUsIE5VTEwpOwpJIHRoaW5rIHdlIGFs c28gbmVlZCB0byBkbyB0aGlzICh1cGRhdGVfZW5naW5lKE5VTEwpKSB3aGlsZSBoYW5kbGluZyAK cHJlZW1wdGlvbiBjb21wbGV0aW9uIGZvciBib3RoIEd1QyBhbmQgZXhlY2xpc3RzIGFsc28uCkRv aW5nIGl0IGFzIHBhcnQgb2YgZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzIHdpbGwgY292 ZXIgYWxsIHRob3NlIApjYXNlcyBpbmNsdWRpbmcgcmVzZXQuCkFtIEkgcmlnaHQ/Cj4gKwl9Cj4g ICAKPiAgIAlpZiAoZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJ VkVfUFJFRU1QVCkgJiYKPiAgIAkgICAgaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5 MTVfR0VNX0hXU19QUkVFTVBUX0lOREVYKSA9PQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g aW5kZXggM2E2OWIzNjdlNTY1Li41MThmN2IzZGI4NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYwo+IEBAIC0xMzgsNiArMTM4LDcgQEAKPiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ ICAgI2luY2x1ZGUgImk5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5oIgo+ICAgI2luY2x1ZGUgImludGVs X2xyY19yZWcuaCIKPiArI2luY2x1ZGUgImludGVsX2d0X3BtLmgiCj4gICAjaW5jbHVkZSAiaW50 ZWxfbW9jcy5oIgo+ICAgCj4gICAjZGVmaW5lIFJJTkdfRVhFQ0xJU1RfUUZVTEwJCSgxIDw8IDB4 MikKPiBAQCAtNTM1LDYgKzUzNiwxMiBAQCBzdGF0aWMgdm9pZCBpbmplY3RfcHJlZW1wdF9jb250 ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlleGVjbGlzdHNfc2V0X2Fj dGl2ZSgmZW5naW5lLT5leGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCk7Cj4gICB9 Cj4gICAKPiArc3RhdGljIHZvaWQgdXBkYXRlX3JwcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gK3sKPiArCWludGVsX3Jwc191cGRhdGVfZW5naW5lKGVuZ2luZSwKPiArCQkJCXBv cnRfcmVxdWVzdChlbmdpbmUtPmV4ZWNsaXN0cy5wb3J0KS0+Y3R4KTsKPiArfQo+ICsKPiAgIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNs aXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPiBAQCAtNzA4LDYgKzcxNSw3IEBAIHN0YXRpYyB2 b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAg IAlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICAgCj4gICAJaWYg KHN1Ym1pdCkgewo+ICsJCXVwZGF0ZV9ycHMoZW5naW5lKTsKPiAgIAkJZXhlY2xpc3RzX3NldF9h Y3RpdmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX1VTRVIpOwo+ICAgCQlleGVjbGlzdHNf c3VibWl0X3BvcnRzKGVuZ2luZSk7Cj4gICAJfQo+IEBAIC05ODIsNiArOTkwLDExIEBAIHN0YXRp YyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+ ICAgCQkJCQkgIGVuZ2luZS0+bmFtZSwgcG9ydC0+Y29udGV4dF9pZCk7Cj4gICAKPiAgIAkJCQll eGVjbGlzdHNfcG9ydF9jb21wbGV0ZShleGVjbGlzdHMsIHBvcnQpOwo+ICsKPiArCQkJCS8qIFN3 aXRjaCB0byB0aGUgbmV4dCByZXF1ZXN0L2NvbnRleHQgKi8KPiArCQkJCXJxID0gcG9ydF9yZXF1 ZXN0KHBvcnQpOwo+ICsJCQkJaW50ZWxfcnBzX3VwZGF0ZV9lbmdpbmUoZW5naW5lLAo+ICsJCQkJ CQkJcnEgPyBycS0+Y3R4IDogTlVMTCk7Cj4gICAJCQl9IGVsc2Ugewo+ICAgCQkJCXBvcnRfc2V0 KHBvcnQsIHBvcnRfcGFjayhycSwgY291bnQpKTsKPiAgIAkJCX0KPiBAQCAtMTcxNyw2ICsxNzMw LDggQEAgc3RhdGljIHZvaWQgcmVzZXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAo+ICAgCV9fdW53aW5kX2luY29tcGxldGVfcmVxdWVzdHMoZW5naW5lKTsKPiAg IAlzcGluX3VubG9jaygmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gICAKPiArCWludGVsX3Jw c191cGRhdGVfZW5naW5lKGVuZ2luZSwgTlVMTCk7Cj4gKwo+ICAgCS8qIE1hcmsgYWxsIENTIGlu dGVycnVwdHMgYXMgY29tcGxldGUgKi8KPiAgIAlleGVjbGlzdHMtPmFjdGl2ZSA9IDA7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19z ZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2Vs ZnRlc3RzLmgKPiBpbmRleCA5YTQ4YWE0NDE3NDMuLjg1YjZlNmQwMjBiNyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMu aAo+IEBAIC0xNCw2ICsxNCw3IEBAIHNlbGZ0ZXN0KGZlbmNlLCBpOTE1X3N3X2ZlbmNlX21vY2tf c2VsZnRlc3RzKQo+ICAgc2VsZnRlc3Qoc2NhdHRlcmxpc3QsIHNjYXR0ZXJsaXN0X21vY2tfc2Vs ZnRlc3RzKQo+ICAgc2VsZnRlc3Qoc3luY21hcCwgaTkxNV9zeW5jbWFwX21vY2tfc2VsZnRlc3Rz KQo+ICAgc2VsZnRlc3QodW5jb3JlLCBpbnRlbF91bmNvcmVfbW9ja19zZWxmdGVzdHMpCj4gK3Nl bGZ0ZXN0KGd0X3BtLCBpbnRlbF9ndF9wbV9tb2NrX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KGJy ZWFkY3J1bWJzLCBpbnRlbF9icmVhZGNydW1ic19tb2NrX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0 KHRpbWVsaW5lcywgaTkxNV9nZW1fdGltZWxpbmVfbW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVz dChyZXF1ZXN0cywgaTkxNV9yZXF1ZXN0X21vY2tfc2VsZnRlc3RzKQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3RfcG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9ndF9wbS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwMDAwMDAuLmMzODcxZWI5ZWFiYgo+IC0tLSAvZGV2L251bGwKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfZ3RfcG0uYwo+IEBAIC0wLDAg KzEsMTMwIEBACj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArICoK PiArICogQ29weXJpZ2h0IMKpIDIwMTggSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ICsj aW5jbHVkZSAiLi4vaTkxNV9zZWxmdGVzdC5oIgo+ICsjaW5jbHVkZSAiaTkxNV9yYW5kb20uaCIK PiArCj4gKyNpbmNsdWRlICJtb2NrX2dlbV9kZXZpY2UuaCIKPiArCj4gK3N0YXRpYyB2b2lkIG1v Y2tfcnBzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK3sKPiArCXN0cnVj dCBpbnRlbF9ycHMgKnJwcyA9ICZpOTE1LT5ndF9wbS5ycHM7Cj4gKwo+ICsJLyogRGlzYWJsZSB0 aGUgcmVnaXN0ZXIgd3JpdGVzICovCj4gKwlta3dyaXRlX2RldmljZV9pbmZvKGk5MTUpLT5nZW4g PSAwOwo+ICsJbWt3cml0ZV9kZXZpY2VfaW5mbyhpOTE1KS0+aGFzX3JwcyA9IHRydWU7Cj4gKwo+ ICsJaW50ZWxfcnBzX2luaXQocnBzKTsKPiArCj4gKwlycHMtPm1pbl9mcmVxX2h3ID0gMDsKPiAr CXJwcy0+bWF4X2ZyZXFfaHcgPSAyNTU7Cj4gKwo+ICsJcnBzLT5taW5fZnJlcV91c2VyID0gcnBz LT5taW5fZnJlcV9odzsKPiArCXJwcy0+bWF4X2ZyZXFfdXNlciA9IHJwcy0+bWF4X2ZyZXFfaHc7 Cj4gKwo+ICsJaW50ZWxfcnBzX2luaXRfX2ZyZXF1ZW5jaWVzKHJwcyk7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIG1vY2tfcnBzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g K3sKPiArCXN0cnVjdCBpbnRlbF9ycHMgKnJwcyA9ICZpOTE1LT5ndF9wbS5ycHM7Cj4gKwo+ICsJ Y2FuY2VsX3dvcmtfc3luYygmcnBzLT53b3JrKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBpZ3Rf cnBzX2VuZ2luZSh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gYXJnOwo+ICsJc3RydWN0IGludGVsX3JwcyAqcnBzID0gJmk5MTUtPmd0X3BtLnJwczsK PiArCUk5MTVfUk5EX1NUQVRFKHBybmcpOwo+ICsJaW50IGVycjsKPiArCWludCBpOwo+ICsKPiAr CWludGVsX2d0X3BtX2J1c3koaTkxNSk7IC8qIEFjdGl2YXRlIFJQUyAqLwo+ICsKPiArCS8qCj4g KwkgKiBNaW5pbXVtIHVuaXQgdGVzdHMgZm9yIGludGVsX3Jwc191cGRhdGVfZW5naW5lKCkuCj4g KwkgKgo+ICsJICogV2hlbmV2ZXIgd2UgY2FsbCBpbnRlbF9ycHNfdXBkYXRlX2VuZ2luZSwgaXQg d2lsbAo+ICsJICogcmVwbGFjZSB0aGUgY29udGV4dCBtaW4vbWF4IGZyZXF1ZW5jeSByZXF1ZXN0 IGZvciBhIHBhcnRpY3VsYXIKPiArCSAqIGVuZ2luZSBhbmQgdGhlbiByZWNvbXB1dGUgdGhlIGds b2JhbCBtYXgobWluKS9taW4obWF4KSBvdmVyIGFsbAo+ICsJICogZW5naW5lcy4gSW4gdGhpcyBt b2NrdXAsIHdlIGFyZSBsaW1pdGVkIHRvIGNoZWNraW5nIHRob3NlCj4gKwkgKiBtYXgobWluKS9t aW4obWF4KSBjYWxjdWxhdGlvbnMgYW5kIHRoZW4gc2VlaW5nIGlmIHRoZSBycHMKPiArCSAqIHdv cmtlciB1c2VzIHRob3NlIGJvdW5kcy4KPiArCSAqLwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCAy NTYgKiAyNTY7IGkrKykgewo+ICsJCXU4IGZyZXEgPSBwcmFuZG9tX3UzMl9zdGF0ZSgmcHJuZyk7 Cj4gKwo+ICsJCV9fcnBzX3VwZGF0ZV9lbmdpbmUocnBzLCAwLCBmcmVxLCBmcmVxKTsKPiArCQlp ZiAocnBzLT5taW5fZnJlcV9jb250ZXh0ICE9IGZyZXEgfHwKPiArCQkgICAgcnBzLT5tYXhfZnJl cV9jb250ZXh0ICE9IGZyZXEpIHsKPiArCQkJcHJfZXJyKCJDb250ZXh0IG1pbi9tYXggZnJlcXVl bmNpZXMgbm90IHJlc3RyaWN0ZWQgdG8gJWQsIGZvdW5kIFslZCwgJWRdXG4iLAo+ICsJCQkgICAg ICAgZnJlcSwgcnBzLT5taW5fZnJlcV9jb250ZXh0LCBycHMtPm1heF9mcmVxX2NvbnRleHQpOwo+ ICsJCQllcnIgPSAtRUlOVkFMOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwkJZmx1c2hfd29y aygmcnBzLT53b3JrKTsKPiArCj4gKwkJaWYgKHJwcy0+ZnJlcSAhPSBmcmVxKSB7Cj4gKwkJCXBy X2VycigiVHJpZWQgdG8gcmVzdHJpY3QgZnJlcXVlbmN5IHRvICVkLCBmb3VuZCAlZFxuIiwKPiAr CQkJICAgICAgIGZyZXEsIHJwcy0+ZnJlcSk7Cj4gKwkJCWVyciA9IC1FSU5WQUw7Cj4gKwkJCWdv dG8gb3V0Owo+ICsJCX0KPiArCX0KPiArCj4gKwlfX3Jwc191cGRhdGVfZW5naW5lKHJwcywgMCwg cnBzLT5taW5fZnJlcV9odywgcnBzLT5tYXhfZnJlcV9odyk7Cj4gKwlpZiAocnBzLT5taW5fZnJl cV9jb250ZXh0ICE9IHJwcy0+bWluX2ZyZXFfaHcgfHwKPiArCSAgICBycHMtPm1heF9mcmVxX2Nv bnRleHQgIT0gcnBzLT5tYXhfZnJlcV9odykgewo+ICsJCXByX2VycigiQ29udGV4dCBmcmVxdWVu Y3kgbm90IHJlc3RvcmVkIHRvIFslZCwgJWRdLCBmb3VuZCBbJWQsICVkXVxuIiwKPiArCQkgICAg ICAgcnBzLT5taW5fZnJlcV9odywgcnBzLT5taW5fZnJlcV9odywKPiArCQkgICAgICAgcnBzLT5t aW5fZnJlcV9jb250ZXh0LCBycHMtPm1heF9mcmVxX2NvbnRleHQpOwo+ICsJCWVyciA9IC1FSU5W QUw7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVN X0VOR0lORVM7IGkrKykKPiArCQlfX3Jwc191cGRhdGVfZW5naW5lKHJwcywgaSwgaSwgMjU1IC0g aSk7Cj4gKwlpLS07Cj4gKwlpZiAocnBzLT5taW5fZnJlcV9jb250ZXh0ICE9IGkpIHsKPiArCQlw cl9lcnIoIk1pbmltdW0gY29udGV4dCBmcmVxdWVuY3kgYWNyb3NzIGFsbCBlbmdpbmVzIG5vdCBy YWlzZWQgdG8gJWQsIGZvdW5kICVkXG4iLCBpLCBycHMtPm1pbl9mcmVxX2NvbnRleHQpOwo+ICsJ CWVyciA9IC1FSU5WQUw7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlpZiAocnBzLT5tYXhfZnJl cV9jb250ZXh0ICE9IDI1NSAtIGkpIHsKPiArCQlwcl9lcnIoIk1heG1pbXVtIGNvbnRleHQgZnJl cXVlbmN5IGFjcm9zcyBhbGwgZW5naW5lcyBub3QgbG93ZXJlZCB0byAlZCwgZm91bmQgJWRcbiIs IDI1NSAtIGksIHJwcy0+bWF4X2ZyZXFfY29udGV4dCk7Cj4gKwkJZXJyID0gLUVJTlZBTDsKPiAr CQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwllcnIgPSAwOwo+ICtvdXQ6Cj4gKwlpbnRlbF9ndF9w bV9pZGxlKGk5MTUpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAraW50IGludGVsX2d0X3Bt X21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gK3sKPiArCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9z dWJ0ZXN0IHRlc3RzW10gPSB7Cj4gKwkJU1VCVEVTVChpZ3RfcnBzX2VuZ2luZSksCj4gKwl9Owo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWk5 MTUgPSBtb2NrX2dlbV9kZXZpY2UoKTsKPiArCWlmICghaTkxNSkKPiArCQlyZXR1cm4gLUVOT01F TTsKPiArCj4gKwltb2NrX3Jwc19pbml0KGk5MTUpOwo+ICsKPiArCWVyciA9IGk5MTVfc3VidGVz dHModGVzdHMsIGk5MTUpOwo+ICsKPiArCW1vY2tfcnBzX2ZpbmkoaTkxNSk7Cj4gKwlkcm1fZGV2 X3VucmVmKCZpOTE1LT5kcm0pOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gK30KPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCj4gaW5kZXggN2Y1NjM0Y2U4ZTg4Li42NGM2Mzc3ZGY3NjkgMTAwNjQ0Cj4gLS0tIGEvaW5j bHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oCj4gQEAgLTE0NTYsNiArMTQ1NiwyNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW0gewo+ICAgI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9NQVhfVVNFUl9QUklPUklUWQkxMDIz IC8qIGluY2x1c2l2ZSAqLwo+ICAgI2RlZmluZSAgIEk5MTVfQ09OVEVYVF9ERUZBVUxUX1BSSU9S SVRZCQkwCj4gICAjZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9VU0VSX1BSSU9SSVRZCS0xMDIz IC8qIGluY2x1c2l2ZSAqLwo+ICsKPiArLyoKPiArICogSTkxNV9DT05URVhUX1BBUkFNX0ZSRVFV RU5DWToKPiArICoKPiArICogUmVxdWVzdCB0aGF0IHdoZW4gdGhpcyBjb250ZXh0IHJ1bnMsIHRo ZSBHUFUgaXMgcmVzdHJpY3RlZCB0byBydW4KPiArICogaW4gdGhpcyBmcmVxdWVuY3kgcmFuZ2U7 IGJ1dCBzdGlsbCBjb250cmFpbmVkIGJ5IHRoZSBnbG9iYWwgdXNlcgo+ICsgKiByZXN0cmljdGlv biBzcGVjaWZpZWQgdmlhIHN5c2ZzLgo+ICsgKgo+ICsgKiBUaGUgbWluaW11bSAvIG1heGltdW0g ZnJlcXVlbmNpZXMgYXJlIHNwZWNpZmllZCBpbiBNSHouIEVhY2ggY29udGV4dAo+ICsgKiBzdGFy dHMgaW4gdGhlIGRlZmF1bHQgdW5yZXN0cmljdGVkIHN0YXRlLCB3aGVyZSB0aGUgcmFuZ2UgaXMg dGFrZW4gZnJvbQo+ICsgKiB0aGUgaGFyZHdhcmUsIGFuZCBzbyBtYXkgYmUgcXVlcmllZC4KPiAr ICoKPiArICogTm90ZSB0aGUgZnJlcXVlbmN5IGlzIG9ubHkgY2hhbmdlZCBvbiBhIGNvbnRleHQg c3dpdGNoOyBpZiB0aGUKPiArICogY29udGV4dCdzIGZyZXF1ZW5jeSBpcyB1cGRhdGVkIHdoaWxz dCB0aGUgY29udGV4dCBpcyBjdXJyZW50bHkgZXhlY3V0aW5nCj4gKyAqIHRoZSByZXF1ZXN0IHdp bGwgbm90IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHRpbWUgdGhlIGNvbnRleHQgaXMgcnVu Lgo+ICsgKi8KPiArI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fRlJFUVVFTkNZCTB4Nwo+ICsj ZGVmaW5lICAgSTkxNV9DT05URVhUX01JTl9GUkVRVUVOQ1koeCkgKCh4KSAmIDB4ZmZmZmZmZmYp Cj4gKyNkZWZpbmUgICBJOTE1X0NPTlRFWFRfTUFYX0ZSRVFVRU5DWSh4KSAoKHgpID4+IDMyKQo+ ICsjZGVmaW5lICAgSTkxNV9DT05URVhUX1NFVF9GUkVRVUVOQ1kobWluLCBtYXgpICgoX191NjQp KG1heCkgPDwgMzIgfCAobWluKSkKPiAgIAlfX3U2NCB2YWx1ZTsKPiAgIH07Cj4gICAKCi0tIApU aGFua3MsClNhZ2FyCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK