From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/3] drm/i915/execlists: Lift process_csb() out of the irq-off spinlock Date: Fri, 16 Aug 2019 14:38:17 +0300 Message-ID: <87v9ux5oie.fsf@gaia.fi.intel.com> References: <20190816092424.31386-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21D666E31D for ; Fri, 16 Aug 2019 11:39:27 +0000 (UTC) In-Reply-To: <20190816092424.31386-1-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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gSWYgd2Ug b25seSBjYWxsIHByb2Nlc3NfY3NiKCkgZnJvbSB0aGUgdGFza2xldCwgdGhvdWdoIHdlIGxvc2Ug dGhlCj4gYWJpbGl0eSB0byBieXBhc3Mga3NvZnRpcnFkIGludGVycnVwdCBwcm9jZXNzaW5nIG9u IGRpcmVjdCBzdWJtaXNzaW9uCj4gcGF0aHMsIHdlIGNhbiBwdXNoIGl0IG91dCBvZiB0aGUgaXJx LW9mZiBzcGlubG9jay4KPgo+IFRoZSBwZW5hbHR5IGlzIHRoYXQgd2UgdGhlbiBhbGxvdyBzY2hl ZHVsZV9vdXQgdG8gYmUgY2FsbGVkIGNvbmN1cnJlbnRseQo+IHdpdGggc2NoZWR1bGVfaW4gcmVx dWlyaW5nIHVzIHRvIGhhbmRsZSB0aGUgdXNhZ2UgY291bnQgKGJha2VkIGludG8gdGhlCj4gcG9p bnRlciBpdHNlbGYpIGF0b21pY2FsbHkuCj4KPiBBcyB3ZSBkbyBraWNrIHRoZSB0YXNrbGV0cyAo dmlhIGxvY2FsX2JoX2VuYWJsZSgpKSBhZnRlciBvdXIgc3VibWlzc2lvbiwKPiB0aGVyZSBpcyBh IHBvc3NpYmlsaXR5IHRoZXJlIHRvIHNlZSBpZiB3ZSBjYW4gcHVsbCB0aGUgbG9jYWwgc29mdGly cQo+IHByb2Nlc3NpbmcgYmFjayBmcm9tIHRoZSBrc29mdGlycWQuCj4KPiB2MjogU3RvcmUgdGhl ICdzd2l0Y2hfcHJpb3JpdHlfaGludCcgb24gc3VibWlzc2lvbiwgc28gdGhhdCB3ZSBjYW4KPiBz YWZlbHkgY2hlY2sgZHVyaW5nIHByb2Nlc3NfY3NiKCkuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogTWlrYSBLdW9wcGFsYSA8 bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2NvbnRleHRfdHlwZXMuaCB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggIHwgIDEwICsrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2xyYy5jICAgICAgICAgICB8IDEzNiArKysrKysrKysrKy0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oICAgICAgICAgICAgIHwgIDIwICsr LQo+ICA1IGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5 cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiBp bmRleCBhNjMyYjIwZWM0ZDguLmQ4Y2UyNjZjMDQ5ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiBAQCAtNDEsOSArNDEsNyBAQCBzdHJ1 Y3QgaW50ZWxfY29udGV4dCB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4g IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICppbmZsaWdodDsKPiAgI2RlZmluZSBpbnRlbF9jb250 ZXh0X2luZmxpZ2h0KGNlKSBwdHJfbWFza19iaXRzKChjZSktPmluZmxpZ2h0LCAyKQo+IC0jZGVm aW5lIGludGVsX2NvbnRleHRfaW5mbGlnaHRfY291bnQoY2UpICBwdHJfdW5tYXNrX2JpdHMoKGNl KS0+aW5mbGlnaHQsIDIpCj4gLSNkZWZpbmUgaW50ZWxfY29udGV4dF9pbmZsaWdodF9pbmMoY2Up IHB0cl9jb3VudF9pbmMoJihjZSktPmluZmxpZ2h0KQo+IC0jZGVmaW5lIGludGVsX2NvbnRleHRf aW5mbGlnaHRfZGVjKGNlKSBwdHJfY291bnRfZGVjKCYoY2UpLT5pbmZsaWdodCkKPiArI2RlZmlu ZSBpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKSBwdHJfdW5tYXNrX2JpdHMoKGNlKS0+ aW5mbGlnaHQsIDIpCj4gIAo+ICAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Cj4gIAlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZ2VtX2NvbnRleHQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCA5NTdmMjdhMmVjOTcuLmJhNDU3YzFjN2Rj MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAg LTE0NTksNyArMTQ1OSw3IEBAIGludCBpbnRlbF9lbmFibGVfZW5naW5lX3N0YXRzKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCj4gIAkJZm9yIChwb3J0ID0gZXhlY2xpc3RzLT5w ZW5kaW5nOyAocnEgPSAqcG9ydCk7IHBvcnQrKykgewo+ICAJCQkvKiBFeGNsdWRlIGFueSBjb250 ZXh0cyBhbHJlYWR5IGNvdW50ZWQgaW4gYWN0aXZlICovCj4gLQkJCWlmIChpbnRlbF9jb250ZXh0 X2luZmxpZ2h0X2NvdW50KHJxLT5od19jb250ZXh0KSA9PSAxKQo+ICsJCQlpZiAoIWludGVsX2Nv bnRleHRfaW5mbGlnaHRfY291bnQocnEtPmh3X2NvbnRleHQpKQo+ICAJCQkJZW5naW5lLT5zdGF0 cy5hY3RpdmUrKzsKPiAgCQl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV90eXBlcy5oCj4gaW5kZXggOTk2NWEzMjYwMWQ2Li41NDQxYWE5Y2I4NjMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+IEBAIC0y MDQsNiArMjA0LDE2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzIHsKPiAgCSAqLwo+ ICAJdW5zaWduZWQgaW50IHBvcnRfbWFzazsKPiAgCj4gKwkvKioKPiArCSAqIEBzd2l0Y2hfcHJp b3JpdHlfaGludDogU2Vjb25kIGNvbnRleHQgcHJpb3JpdHkuCj4gKwkgKgo+ICsJICogV2Ugc3Vi bWl0IG11bHRpcGxlIGNvbnRleHRzIHRvIHRoZSBIVyBzaW11bHRhbmVvdXNseSBhbmQgd291bGQK PiArCSAqIGxpa2UgdG8gb2NjYXNpb25hbGx5IHN3aXRjaCBiZXR3ZWVuIHRoZW0gdG8gZW11bGF0 ZSB0aW1lc2xpY2luZy4KPiArCSAqIFRvIGtub3cgd2hlbiB0aW1lc2xpY2luZyBpcyBzdWl0YWJs ZSwgd2UgdHJhY2sgdGhlIHByaW9yaXR5IG9mCj4gKwkgKiB0aGUgY29udGV4dCBzdWJtaXR0ZWQg c2Vjb25kLgo+ICsJICovCj4gKwlpbnQgc3dpdGNoX3ByaW9yaXR5X2hpbnQ7Cj4gKwo+ICAJLyoq Cj4gIAkgKiBAcXVldWVfcHJpb3JpdHlfaGludDogSGlnaGVzdCBwZW5kaW5nIHByaW9yaXR5Lgo+ ICAJICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IGU5ODYzZjRkODI2 Yi4uOGNiOGM1MzAzZjQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBA QCAtNTQ3LDI3ICs1NDcsMzkgQEAgZXhlY2xpc3RzX2NvbnRleHRfc3RhdHVzX2NoYW5nZShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdW5zaWduZWQgbG9uZyBzdGF0dXMpCj4gIAkJCQkgICBzdGF0 dXMsIHJxKTsKPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICoKPiArX19leGVjbGlzdHNfc2NoZWR1bGVfaW4oc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4g K3sKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSBycS0+ZW5naW5l Owo+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKiBjb25zdCBjZSA9IHJxLT5od19jb250ZXh0Owo+ ICsKPiArCWludGVsX2NvbnRleHRfZ2V0KGNlKTsKPiArCj4gKwlpbnRlbF9ndF9wbV9nZXQoZW5n aW5lLT5ndCk7Cj4gKwlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9D T05URVhUX1NDSEVEVUxFX0lOKTsKPiArCWludGVsX2VuZ2luZV9jb250ZXh0X2luKGVuZ2luZSk7 Cj4gKwo+ICsJcmV0dXJuIGVuZ2luZTsKPiArfQo+ICsKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoKPiAgZXhlY2xpc3RzX3NjaGVkdWxlX2luKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCBpbnQgaWR4KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+ aHdfY29udGV4dDsKPiAtCWludCBjb3VudDsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICogY29u c3QgY2UgPSBycS0+aHdfY29udGV4dDsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm9sZDsK PiAgCj4gKwlHRU1fQlVHX09OKCFpbnRlbF9lbmdpbmVfcG1faXNfYXdha2UocnEtPmVuZ2luZSkp Owo+ICAJdHJhY2VfaTkxNV9yZXF1ZXN0X2luKHJxLCBpZHgpOwo+ICAKPiAtCWNvdW50ID0gaW50 ZWxfY29udGV4dF9pbmZsaWdodF9jb3VudChjZSk7Cj4gLQlpZiAoIWNvdW50KSB7Cj4gLQkJaW50 ZWxfY29udGV4dF9nZXQoY2UpOwo+IC0JCWNlLT5pbmZsaWdodCA9IHJxLT5lbmdpbmU7Cj4gLQo+ IC0JCWludGVsX2d0X3BtX2dldChjZS0+aW5mbGlnaHQtPmd0KTsKPiAtCQlleGVjbGlzdHNfY29u dGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05URVhUX1NDSEVEVUxFX0lOKTsKPiAtCQlp bnRlbF9lbmdpbmVfY29udGV4dF9pbihjZS0+aW5mbGlnaHQpOwo+IC0JfQo+ICsJb2xkID0gUkVB RF9PTkNFKGNlLT5pbmZsaWdodCk7Cj4gKwlkbyB7Cj4gKwkJaWYgKCFvbGQpIHsKCkZyb20gb3Ro ZXIgdGhyZWFkIGdvdCB0aGUgZXhwbGFuYXRpb24gZm9yIHRoaXMuIFBlcmhhcHMgYSBjb21tZW50 CmZvciBzb2xlIG93bmVyc2hpcCBzaG91bGQgYmUgd2FycmFudGVkLiBCdXQgSSBkb24ndCBpbnNp c3QKSWYgeW91IGRvbid0IGhhdmUgb2xkIGhvdyBjb3VsZCB5b3UgaGF2ZSBlbmQgdXAgc2NoZWR1 bGluZyBvdXQuCgo+ICsJCQlXUklURV9PTkNFKGNlLT5pbmZsaWdodCwgX19leGVjbGlzdHNfc2No ZWR1bGVfaW4ocnEpKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfSB3aGlsZSAoIXRyeV9jbXB4 Y2hnKCZjZS0+aW5mbGlnaHQsICZvbGQsIHB0cl9pbmMob2xkKSkpOwo+ICAKPiAtCWludGVsX2Nv bnRleHRfaW5mbGlnaHRfaW5jKGNlKTsKPiAgCUdFTV9CVUdfT04oaW50ZWxfY29udGV4dF9pbmZs aWdodChjZSkgIT0gcnEtPmVuZ2luZSk7Cj4gLQo+ICAJcmV0dXJuIGk5MTVfcmVxdWVzdF9nZXQo cnEpOwo+ICB9Cj4gIAo+IEBAIC01ODEsMzUgKzU5Myw0NSBAQCBzdGF0aWMgdm9pZCBraWNrX3Np YmxpbmdzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUgdm9pZAo+IC1leGVjbGlzdHNfc2NoZWR1bGVfb3V0 KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICtfX2V4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gKwkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICogY29u c3QgZW5naW5lKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBycS0+aHdfY29u dGV4dDsKPiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICogY29uc3QgY2UgPSBycS0+aHdfY29udGV4 dDsKPiAgCj4gLQlHRU1fQlVHX09OKCFpbnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKSk7 Cj4gKwlpbnRlbF9lbmdpbmVfY29udGV4dF9vdXQoZW5naW5lKTsKPiArCWV4ZWNsaXN0c19jb250 ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfT1VUKTsKPiArCWlu dGVsX2d0X3BtX3B1dChlbmdpbmUtPmd0KTsKPiAgCj4gLQl0cmFjZV9pOTE1X3JlcXVlc3Rfb3V0 KHJxKTsKPiArCS8qCj4gKwkgKiBJZiB0aGlzIGlzIHBhcnQgb2YgYSB2aXJ0dWFsIGVuZ2luZSwg aXRzIG5leHQgcmVxdWVzdCBtYXkKPiArCSAqIGhhdmUgYmVlbiBibG9ja2VkIHdhaXRpbmcgZm9y IGFjY2VzcyB0byB0aGUgYWN0aXZlIGNvbnRleHQuCj4gKwkgKiBXZSBoYXZlIHRvIGtpY2sgYWxs IHRoZSBzaWJsaW5ncyBhZ2FpbiBpbiBjYXNlIHdlIG5lZWQgdG8KPiArCSAqIHN3aXRjaCAoZS5n LiB0aGUgbmV4dCByZXF1ZXN0IGlzIG5vdCBydW5uYWJsZSBvbiB0aGlzCj4gKwkgKiBlbmdpbmUp LiBIb3BlZnVsbHksIHdlIHdpbGwgYWxyZWFkeSBoYXZlIHN1Ym1pdHRlZCB0aGUgbmV4dAo+ICsJ ICogcmVxdWVzdCBiZWZvcmUgdGhlIHRhc2tsZXQgcnVucyBhbmQgZG8gbm90IG5lZWQgdG8gcmVi dWlsZAo+ICsJICogZWFjaCB2aXJ0dWFsIHRyZWUgYW5kIGtpY2sgZXZlcnlvbmUgYWdhaW4uCj4g KwkgKi8KPiArCWlmIChjZS0+ZW5naW5lICE9IGVuZ2luZSkKPiArCQlraWNrX3NpYmxpbmdzKHJx LCBjZSk7Cj4gIAo+IC0JaW50ZWxfY29udGV4dF9pbmZsaWdodF9kZWMoY2UpOwo+IC0JaWYgKCFp bnRlbF9jb250ZXh0X2luZmxpZ2h0X2NvdW50KGNlKSkgewo+IC0JCWludGVsX2VuZ2luZV9jb250 ZXh0X291dChjZS0+aW5mbGlnaHQpOwo+IC0JCWV4ZWNsaXN0c19jb250ZXh0X3N0YXR1c19jaGFu Z2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfT1VUKTsKPiAtCQlpbnRlbF9ndF9wbV9wdXQo Y2UtPmluZmxpZ2h0LT5ndCk7Cj4gKwlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4gK30KPiAgCj4g LQkJLyoKPiAtCQkgKiBJZiB0aGlzIGlzIHBhcnQgb2YgYSB2aXJ0dWFsIGVuZ2luZSwgaXRzIG5l eHQgcmVxdWVzdCBtYXkKPiAtCQkgKiBoYXZlIGJlZW4gYmxvY2tlZCB3YWl0aW5nIGZvciBhY2Nl c3MgdG8gdGhlIGFjdGl2ZSBjb250ZXh0Lgo+IC0JCSAqIFdlIGhhdmUgdG8ga2ljayBhbGwgdGhl IHNpYmxpbmdzIGFnYWluIGluIGNhc2Ugd2UgbmVlZCB0bwo+IC0JCSAqIHN3aXRjaCAoZS5nLiB0 aGUgbmV4dCByZXF1ZXN0IGlzIG5vdCBydW5uYWJsZSBvbiB0aGlzCj4gLQkJICogZW5naW5lKS4g SG9wZWZ1bGx5LCB3ZSB3aWxsIGFscmVhZHkgaGF2ZSBzdWJtaXR0ZWQgdGhlIG5leHQKPiAtCQkg KiByZXF1ZXN0IGJlZm9yZSB0aGUgdGFza2xldCBydW5zIGFuZCBkbyBub3QgbmVlZCB0byByZWJ1 aWxkCj4gLQkJICogZWFjaCB2aXJ0dWFsIHRyZWUgYW5kIGtpY2sgZXZlcnlvbmUgYWdhaW4uCj4g LQkJICovCj4gLQkJY2UtPmluZmxpZ2h0ID0gTlVMTDsKPiAtCQlpZiAocnEtPmVuZ2luZSAhPSBj ZS0+ZW5naW5lKQo+IC0JCQlraWNrX3NpYmxpbmdzKHJxLCBjZSk7Cj4gK3N0YXRpYyBpbmxpbmUg dm9pZAo+ICtleGVjbGlzdHNfc2NoZWR1bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqIGNvbnN0IGNlID0gcnEtPmh3X2NvbnRleHQ7 Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpjdXIsICpvbGQ7Cj4gIAo+IC0JCWludGVsX2Nv bnRleHRfcHV0KGNlKTsKPiAtCX0KPiArCXRyYWNlX2k5MTVfcmVxdWVzdF9vdXQocnEpOwo+ICsJ R0VNX0JVR19PTihpbnRlbF9jb250ZXh0X2luZmxpZ2h0KGNlKSAhPSBycS0+ZW5naW5lKTsKPiAr Cj4gKwlvbGQgPSBSRUFEX09OQ0UoY2UtPmluZmxpZ2h0KTsKPiArCWRvCj4gKwkJY3VyID0gcHRy X3VubWFza19iaXRzKG9sZCwgMikgPyBwdHJfZGVjKG9sZCkgOiBOVUxMOwo+ICsJd2hpbGUgKCF0 cnlfY21weGNoZygmY2UtPmluZmxpZ2h0LCAmb2xkLCBjdXIpKTsKPiArCWlmICghY3VyKQo+ICsJ CV9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChycSwgb2xkKTsKPiAgCj4gIAlpOTE1X3JlcXVlc3Rf cHV0KHJxKTsKPiAgfQo+IEBAIC02ODQsNiArNzA2LDkgQEAgYXNzZXJ0X3BlbmRpbmdfdmFsaWQo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cywKPiAgCj4gIAl0 cmFjZV9wb3J0cyhleGVjbGlzdHMsIG1zZywgZXhlY2xpc3RzLT5wZW5kaW5nKTsKPiAgCj4gKwlp ZiAoIWV4ZWNsaXN0cy0+cGVuZGluZ1swXSkKCldvdWxkIGl0IGJlIHBydWRlbnQgdG8gcHV0IFJF QURfT05DRSBoZXJlIGFsc28uIEV2ZW4gaWYKeW91IGNvdWxkIGNvbnRlbXBsYXRlIHRoYXQgeW91 IGRvbid0IHNlZSB0aGUKYXNzZXJ0IGV2ZXIgbmVlZGVkIGluIG90aGVyIHBsYWNlcy4KCk5vdyBp dCBzZWVtIHRvIGJlIGNvbnRhaW5lZCB0aG8sCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8 bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+CgoKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ ICAJaWYgKGV4ZWNsaXN0cy0+cGVuZGluZ1tleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0cyld KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gQEAgLTk0MiwxMSArOTY3LDIzIEBAIG5lZWRfdGlt ZXNsaWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgY29uc3Qgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEpCj4gIH0KPiAgCj4gIHN0YXRpYyBib29sCj4gLWVuYWJsZV90aW1lc2xpY2Uo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICtzd2l0Y2hfcHJpbyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsIGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICt7 Cj4gKwlpZiAobGlzdF9pc19sYXN0KCZycS0+c2NoZWQubGluaywgJmVuZ2luZS0+YWN0aXZlLnJl cXVlc3RzKSkKPiArCQlyZXR1cm4gSU5UX01JTjsKPiArCj4gKwlyZXR1cm4gcnFfcHJpbyhsaXN0 X25leHRfZW50cnkocnEsIHNjaGVkLmxpbmspKTsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiAr ZW5hYmxlX3RpbWVzbGljZShjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAqZXhl Y2xpc3RzKQo+ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpsYXN0ID0gbGFzdF9hY3RpdmUo JmVuZ2luZS0+ZXhlY2xpc3RzKTsKPiArCWNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0g KmV4ZWNsaXN0cy0+YWN0aXZlOwo+ICAKPiAtCXJldHVybiBsYXN0ICYmIG5lZWRfdGltZXNsaWNl KGVuZ2luZSwgbGFzdCk7Cj4gKwlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4gKwkJ cmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiBleGVjbGlzdHMtPnN3aXRjaF9wcmlvcml0eV9o aW50ID49IGVmZmVjdGl2ZV9wcmlvKHJxKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgcmVjb3Jk X3ByZWVtcHRpb24oc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0cykKPiBA QCAtMTI5Miw2ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJCSpwb3J0ID0gZXhlY2xpc3RzX3NjaGVkdWxl X2luKGxhc3QsIHBvcnQgLSBleGVjbGlzdHMtPnBlbmRpbmcpOwo+ICAJCW1lbXNldChwb3J0ICsg MSwgMCwgKGxhc3RfcG9ydCAtIHBvcnQpICogc2l6ZW9mKCpwb3J0KSk7Cj4gIAkJZXhlY2xpc3Rz X3N1Ym1pdF9wb3J0cyhlbmdpbmUpOwo+ICsJCWV4ZWNsaXN0cy0+c3dpdGNoX3ByaW9yaXR5X2hp bnQgPQo+ICsJCQlzd2l0Y2hfcHJpbyhlbmdpbmUsICpleGVjbGlzdHMtPnBlbmRpbmcpOwo+ICAJ fSBlbHNlIHsKPiAgCQlyaW5nX3NldF9wYXVzZWQoZW5naW5lLCAwKTsKPiAgCX0KPiBAQCAtMTM1 Niw3ICsxMzk1LDYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAJY29uc3QgdTggbnVtX2VudHJpZXMgPSBleGVjbGlzdHMtPmNzYl9z aXplOwo+ICAJdTggaGVhZCwgdGFpbDsKPiAgCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdp bmUtPmFjdGl2ZS5sb2NrKTsKPiAgCUdFTV9CVUdfT04oVVNFU19HVUNfU1VCTUlTU0lPTihlbmdp bmUtPmk5MTUpKTsKPiAgCj4gIAkvKgo+IEBAIC0xNDI3LDE1ICsxNDY1LDE0IEBAIHN0YXRpYyB2 b2lkIHByb2Nlc3NfY3NiKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCQkJCSAg ICAgICBleGVjbGlzdHMtPnBlbmRpbmcsCj4gIAkJCQkgICAgICAgZXhlY2xpc3RzX251bV9wb3J0 cyhleGVjbGlzdHMpICoKPiAgCQkJCSAgICAgICBzaXplb2YoKmV4ZWNsaXN0cy0+cGVuZGluZykp Owo+IC0JCQlleGVjbGlzdHMtPnBlbmRpbmdbMF0gPSBOVUxMOwo+ICAKPiAtCQkJdHJhY2VfcG9y dHMoZXhlY2xpc3RzLCAicHJvbW90ZWQiLCBleGVjbGlzdHMtPmFjdGl2ZSk7Cj4gLQo+IC0JCQlp ZiAoZW5hYmxlX3RpbWVzbGljZShlbmdpbmUpKQo+ICsJCQlpZiAoZW5hYmxlX3RpbWVzbGljZShl eGVjbGlzdHMpKQo+ICAJCQkJbW9kX3RpbWVyKCZleGVjbGlzdHMtPnRpbWVyLCBqaWZmaWVzICsg MSk7Cj4gIAo+ICAJCQlpZiAoIWluamVjdF9wcmVlbXB0X2hhbmcoZXhlY2xpc3RzKSkKPiAgCQkJ CXJpbmdfc2V0X3BhdXNlZChlbmdpbmUsIDApOwo+ICsKPiArCQkJV1JJVEVfT05DRShleGVjbGlz dHMtPnBlbmRpbmdbMF0sIE5VTEwpOwo+ICAJCQlicmVhazsKPiAgCj4gIAkJY2FzZSBDU0JfQ09N UExFVEU6IC8qIHBvcnQwIGNvbXBsZXRlZCwgYWR2YW5jZWQgdG8gcG9ydDEgKi8KPiBAQCAtMTQ3 OSw4ICsxNTE2LDYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19jc2Ioc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICBzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2ts ZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqY29uc3QgZW5naW5lKQo+ICB7Cj4gIAlsb2NrZGVw X2Fzc2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKPiAtCj4gLQlwcm9jZXNzX2NzYihl bmdpbmUpOwo+ICAJaWYgKCFlbmdpbmUtPmV4ZWNsaXN0cy5wZW5kaW5nWzBdKQo+ICAJCWV4ZWNs aXN0c19kZXF1ZXVlKGVuZ2luZSk7Cj4gIH0KPiBAQCAtMTQ5NCw5ICsxNTI5LDEyIEBAIHN0YXRp YyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+ ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSA9IChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICopZGF0YTsKPiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gIAo+IC0Jc3Bpbl9s b2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKPiAtCV9fZXhlY2xpc3Rz X3N1Ym1pc3Npb25fdGFza2xldChlbmdpbmUpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwo+ICsJcHJvY2Vzc19jc2IoZW5naW5lKTsKPiAr CWlmICghUkVBRF9PTkNFKGVuZ2luZS0+ZXhlY2xpc3RzLnBlbmRpbmdbMF0pKSB7Cj4gKwkJc3Bp bl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+YWN0aXZlLmxvY2ssIGZsYWdzKTsKPiArCQlfX2V4ZWNs aXN0c19zdWJtaXNzaW9uX3Rhc2tsZXQoZW5naW5lKTsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0YXRp YyB2b2lkIGV4ZWNsaXN0c19zdWJtaXNzaW9uX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1l cikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gaW5kZXggZDY1MmJhNWQyMzIwLi41NjJm NzU2ZGE0MjEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gQEAgLTE2MSwxNyAr MTYxLDE1IEBAIF9fY2hlY2tfc3RydWN0X3NpemUoc2l6ZV90IGJhc2UsIHNpemVfdCBhcnIsIHNp emVfdCBjb3VudCwgc2l6ZV90ICpzaXplKQo+ICAJKCh0eXBlb2YocHRyKSkoKHVuc2lnbmVkIGxv bmcpKHB0cikgfCBfX2JpdHMpKTsJCQlcCj4gIH0pCj4gIAo+IC0jZGVmaW5lIHB0cl9jb3VudF9k ZWMocF9wdHIpIGRvIHsJCQkJCVwKPiAtCXR5cGVvZihwX3B0cikgX19wID0gKHBfcHRyKTsJCQkJ CVwKPiAtCXVuc2lnbmVkIGxvbmcgX192ID0gKHVuc2lnbmVkIGxvbmcpKCpfX3ApOwkJCVwKPiAt CSpfX3AgPSAodHlwZW9mKCpwX3B0cikpKC0tX192KTsJCQkJCVwKPiAtfSB3aGlsZSAoMCkKPiAt Cj4gLSNkZWZpbmUgcHRyX2NvdW50X2luYyhwX3B0cikgZG8gewkJCQkJXAo+IC0JdHlwZW9mKHBf cHRyKSBfX3AgPSAocF9wdHIpOwkJCQkJXAo+IC0JdW5zaWduZWQgbG9uZyBfX3YgPSAodW5zaWdu ZWQgbG9uZykoKl9fcCk7CQkJXAo+IC0JKl9fcCA9ICh0eXBlb2YoKnBfcHRyKSkoKytfX3YpOwkJ CQkJXAo+IC19IHdoaWxlICgwKQo+ICsjZGVmaW5lIHB0cl9kZWMocHRyKSAoewkJCQkJCQlcCj4g Kwl1bnNpZ25lZCBsb25nIF9fdiA9ICh1bnNpZ25lZCBsb25nKShwdHIpOwkJCVwKPiArCSh0eXBl b2YocHRyKSkoX192IC0gMSk7CQkJCQkJXAo+ICt9KQo+ICsKPiArI2RlZmluZSBwdHJfaW5jKHB0 cikgKHsJCQkJCQkJXAo+ICsJdW5zaWduZWQgbG9uZyBfX3YgPSAodW5zaWduZWQgbG9uZykocHRy KTsJCQlcCj4gKwkodHlwZW9mKHB0cikpKF9fdiArIDEpOwkJCQkJCVwKPiArfSkKPiAgCj4gICNk ZWZpbmUgcGFnZV9tYXNrX2JpdHMocHRyKSBwdHJfbWFza19iaXRzKHB0ciwgUEFHRV9TSElGVCkK PiAgI2RlZmluZSBwYWdlX3VubWFza19iaXRzKHB0cikgcHRyX3VubWFza19iaXRzKHB0ciwgUEFH RV9TSElGVCkKPiAtLSAKPiAyLjIzLjAucmMxCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==