From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH] drm/i915/execlists: Verify context register state before execution Date: Thu, 31 Oct 2019 16:32:05 +0200 Message-ID: <87y2x1j89m.fsf@gaia.fi.intel.com> References: <20191031104747.5308-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 036406EC2A for ; Thu, 31 Oct 2019 14:33:02 +0000 (UTC) In-Reply-To: <20191031104747.5308-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+IHdyaXRlczoKCj4gQ2hlY2sg dGhhdCB0aGUgY29udGV4dCdzIHJpbmcgcmVnaXN0ZXIgc3RhdGUgc3RpbGwgbWF0Y2hlcyBvdXIK PiBleHBlY3RhdGlvbnMgcHJpb3IgdG8gZXhlY3V0aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEg PG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYyAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKy0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaCB8ICA0ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jICB8ICA0ICstCj4gIDMgZmlsZXMgY2hh bmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IDVmNjFjZDEyOGQ5Yy4uNjY2ZTcwOTMxNTI0IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtMTE0Niw2ICsxMTQ2LDYwIEBA IGV4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gIAlpOTE1 X3JlcXVlc3RfcHV0KHJxKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBscmNfcmluZ19taV9tb2Rl KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQo+ICsJCXJldHVybiAweDYwOwo+ICsJZWxzZSBpZiAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOSkKPiArCQlyZXR1cm4gMHg1NDsKPiArCWVsc2Ug aWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQo+ICsJCXJldHVybiAweDU4Owo+ICsJ ZWxzZQo+ICsJCXJldHVybiAtMTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArZXhlY2xpc3Rz X2NoZWNrX2NvbnRleHQoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICsJCQljb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBp bnRlbF9yaW5nICpyaW5nID0gY2UtPnJpbmc7Cj4gKwl1MzIgKnJlZ3MgPSBjZS0+bHJjX3JlZ19z dGF0ZTsKPiArCWludCB4Owo+ICsKPiArCWlmIChyZWdzW0NUWF9SSU5HX1NUQVJUXSAhPSBpOTE1 X2dndHRfb2Zmc2V0KHJpbmctPnZtYSkpIHsKPiArCQlwcl9lcnJfb25jZSgiJXM6IGNvbnRleHQg c3VibWl0dGVkIHdpdGggaW5jb3JyZWN0IFJJTkdfQlVGRkVSX1NUQVJUIFslMDh4XSwgZXhwZWN0 ZWQgJTA4eFxuIiwKPiArCQkJICAgIGVuZ2luZS0+bmFtZSwKPiArCQkJICAgIHJlZ3NbQ1RYX1JJ TkdfU1RBUlRdLAo+ICsJCQkgICAgaTkxNV9nZ3R0X29mZnNldChyaW5nLT52bWEpKTsKPiArCQly ZWdzW0NUWF9SSU5HX1NUQVJUXSA9IGk5MTVfZ2d0dF9vZmZzZXQocmluZy0+dm1hKTsKPiArCX0K PiArCj4gKwlpZiAoKHJlZ3NbQ1RYX1JJTkdfQ1RMXSAmIH4oUklOR19XQUlUIHwgUklOR19XQUlU X1NFTUFQSE9SRSkpICE9Cj4gKwkgICAgKFJJTkdfQ1RMX1NJWkUocmluZy0+c2l6ZSkgfCBSSU5H X1ZBTElEKSkgewo+ICsJCXByX2Vycl9vbmNlKCIlczogY29udGV4dCBzdWJtaXR0ZWQgd2l0aCBp bmNvcnJlY3QgUklOR19CVUZGRVJfQ09OVFJPTCBbJTA4eF0sIGV4cGVjdGVkICUwOHhcbiIsCj4g KwkJCSAgICBlbmdpbmUtPm5hbWUsCj4gKwkJCSAgICByZWdzW0NUWF9SSU5HX0NUTF0sCj4gKwkJ CSAgICAodTMyKShSSU5HX0NUTF9TSVpFKHJpbmctPnNpemUpIHwgUklOR19WQUxJRCkpOwo+ICsJ CXJlZ3NbQ1RYX1JJTkdfQ1RMXSA9IFJJTkdfQ1RMX1NJWkUocmluZy0+c2l6ZSkgfCBSSU5HX1ZB TElEOwoKV2UgYXJlIGdvaW5nIHRvIHN1Ym1pdCBieSBjbGVhcmluZyB0aGUgd2FpdHMuIEZpcnN0 IEkgdGhvdWdodCB0aGlzIHdpbGwKbGVhZCB0byBkaXNhc3RlciBidXQgdGhlIGhhcmR3YXJlIHdv cmtzIHNvIHRoYXQgd2UgY2xlYXIgb24gd3JpdGluZyAnMScuCgoKPiArCX0KPiArCj4gKwlpZiAo cmVnc1tDVFhfQkJfU1RBVEVdICE9IFJJTkdfQkJfUFBHVFQpIHsKPiArCQlwcl9lcnJfb25jZSgi JXM6IGNvbnRleHQgc3VibWl0dGVkIHdpdGggaW5jb3JyZWN0IEJCX1NUQVRFIFslMDh4XSwgZXhw ZWN0ZWQgJTA4eFxuIiwKPiArCQkJICAgIGVuZ2luZS0+bmFtZSwKPiArCQkJICAgIHJlZ3NbQ1RY X0JCX1NUQVRFXSwKPiArCQkJICAgIFJJTkdfQkJfUFBHVFQpOwo+ICsJCXJlZ3NbQ1RYX0JCX1NU QVRFXSA9IFJJTkdfQkJfUFBHVFQ7Cj4gKwl9Cj4gKwo+ICsJeCA9IGxyY19yaW5nX21pX21vZGUo ZW5naW5lKTsKPiArCWlmICh4ICE9IC0xICYmIHJlZ3NbeCArIDFdICYgU1RPUF9SSU5HKSB7Cj4g KwkJcHJfZXJyX29uY2UoIiVzOiBjb250ZXh0IHN1Ym1pdHRlZCB3aXRoIFNUT1BfUklORyBbJTA4 eF0gaW4gUklOR19NSV9NT0RFXG4iLAo+ICsJCQkgICAgZW5naW5lLT5uYW1lLCByZWdzW3ggKyAx XSk7Cj4gKwkJcmVnc1t4ICsgMV0gJj0gflNUT1BfUklORzsKPiArCQlyZWdzW3ggKyAxXSB8PSBT VE9QX1JJTkcgPDwgMTY7CgpPayB5b3Ugd2FudCBvbmx5IHRvIGNhcmUgYWJvdXQgdGhpcyBvbmUu IFdhcyBwb25kZXJpbmcgb2YgcmVzdG9yaW5nIHJlc3QKb2YgdGhlIHN0YXRlIGZyb20gcHJldmlv dXMuCgpXaWxsIHRoZSBoYXJkd2FyZSBldmVuIGNhcmUgb24gbWFza3MgYXQgdGhpcyBwb2ludCBv ciBpcyB0aGUgc2F2aW5nIHBhcnQKc2V0dGluZyB0aGVtIGFjY29yZGluZ2x5PwoKTm90IGFmZmVj dGluZyB0aGlzIHBhdGNoIHRobywganVzdCBjdXJpb3VzLgoKUmV2aWV3ZWQtYnk6IE1pa2EgS3Vv cHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKPiArCX0KPiArfQo+ICsKPiAg c3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoY29uc3Qgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0 Owo+IEBAIC0xMTU0LDYgKzEyMDgsOSBAQCBzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29u dGV4dChjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgCWNlLT5scmNfcmVnX3N0YXRl W0NUWF9SSU5HX1RBSUxdID0KPiAgCQlpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+ dGFpbCk7Cj4gIAo+ICsJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkp Cj4gKwkJZXhlY2xpc3RzX2NoZWNrX2NvbnRleHQoY2UsIHJxLT5lbmdpbmUpOwo+ICsKPiAgCS8q Cj4gIAkgKiBNYWtlIHN1cmUgdGhlIGNvbnRleHQgaW1hZ2UgaXMgY29tcGxldGUgYmVmb3JlIHdl IHN1Ym1pdCBpdCB0byBIVy4KPiAgCSAqCj4gQEAgLTIzNTUsNyArMjQxMiw3IEBAIF9fZXhlY2xp c3RzX3VwZGF0ZV9yZWdfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICAJ R0VNX0JVR19PTighaW50ZWxfcmluZ19vZmZzZXRfdmFsaWQocmluZywgcmluZy0+aGVhZCkpOwo+ ICAJR0VNX0JVR19PTighaW50ZWxfcmluZ19vZmZzZXRfdmFsaWQocmluZywgcmluZy0+dGFpbCkp Owo+ICAKPiAtCXJlZ3NbQ1RYX1JJTkdfQlVGRkVSX1NUQVJUXSA9IGk5MTVfZ2d0dF9vZmZzZXQo cmluZy0+dm1hKTsKPiArCXJlZ3NbQ1RYX1JJTkdfU1RBUlRdID0gaTkxNV9nZ3R0X29mZnNldChy aW5nLT52bWEpOwo+ICAJcmVnc1tDVFhfUklOR19IRUFEXSA9IHJpbmctPmhlYWQ7Cj4gIAlyZWdz W0NUWF9SSU5HX1RBSUxdID0gcmluZy0+dGFpbDsKPiAgCj4gQEAgLTI5NDIsMTggKzI5OTksNiBA QCBzdGF0aWMgdm9pZCByZXNldF9jc2JfcG9pbnRlcnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAJCQkgICAgICAgJmV4ZWNsaXN0cy0+Y3NiX3N0YXR1c1tyZXNldF92YWx1ZV0p Owo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGxyY19yaW5nX21pX21vZGUoY29uc3Qgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPj0gMTIpCj4gLQkJcmV0dXJuIDB4NjA7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5l LT5pOTE1KSA+PSA5KQo+IC0JCXJldHVybiAweDU0Owo+IC0JZWxzZSBpZiAoZW5naW5lLT5jbGFz cyA9PSBSRU5ERVJfQ0xBU1MpCj4gLQkJcmV0dXJuIDB4NTg7Cj4gLQllbHNlCj4gLQkJcmV0dXJu IC0xOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19yZXNldF9yZWdfc3RhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICAJCQkJCWNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IEBAIC0zODgxLDcgKzM5MjYsNyBAQCBzdGF0aWMg dm9pZCBpbml0X2NvbW1vbl9yZWdfc3RhdGUodTMyICogY29uc3QgcmVncywKPiAgCQkJX01BU0tF RF9CSVRfRElTQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1NBVkVfSU5ISUJJVCB8Cj4gIAkJCQkJ ICAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUpOwo+ICAKPiAtCXJlZ3NbQ1RYX1JJTkdfQlVGRkVS X0NPTlRST0xdID0gUklOR19DVExfU0laRShyaW5nLT5zaXplKSB8IFJJTkdfVkFMSUQ7Cj4gKwly ZWdzW0NUWF9SSU5HX0NUTF0gPSBSSU5HX0NUTF9TSVpFKHJpbmctPnNpemUpIHwgUklOR19WQUxJ RDsKPiAgCXJlZ3NbQ1RYX0JCX1NUQVRFXSA9IFJJTkdfQkJfUFBHVFQ7Cj4gIH0KPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaAo+IGluZGV4IDA2YWIwMjc2ZTEwZS4u MDhhM2JlNjVmNzAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyY19yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcu aAo+IEBAIC0xMyw4ICsxMyw4IEBACj4gICNkZWZpbmUgQ1RYX0NPTlRFWFRfQ09OVFJPTAkJKDB4 MDIgKyAxKQo+ICAjZGVmaW5lIENUWF9SSU5HX0hFQUQJCQkoMHgwNCArIDEpCj4gICNkZWZpbmUg Q1RYX1JJTkdfVEFJTAkJCSgweDA2ICsgMSkKPiAtI2RlZmluZSBDVFhfUklOR19CVUZGRVJfU1RB UlQJCSgweDA4ICsgMSkKPiAtI2RlZmluZSBDVFhfUklOR19CVUZGRVJfQ09OVFJPTAkJKDB4MGEg KyAxKQo+ICsjZGVmaW5lIENUWF9SSU5HX1NUQVJUCQkJKDB4MDggKyAxKQo+ICsjZGVmaW5lIENU WF9SSU5HX0NUTAkJCSgweDBhICsgMSkKPiAgI2RlZmluZSBDVFhfQkJfU1RBVEUJCQkoMHgxMCAr IDEpCj4gICNkZWZpbmUgQ1RYX0JCX1BFUl9DVFhfUFRSCQkoMHgxOCArIDEpCj4gICNkZWZpbmUg Q1RYX1BEUDNfVURXCQkJKDB4MjQgKyAxKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X2xyYy5jCj4gaW5kZXggMDRkMGRkNmE5MzhhLi43ZDNjN2NhODExYjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBAIC0zMTc4LDEyICszMTc4LDEyIEBAIHN0 YXRpYyBpbnQgbGl2ZV9scmNfZml4ZWQodm9pZCAqYXJnKQo+ICAJCX0gdGJsW10gPSB7Cj4gIAkJ CXsKPiAgCQkJCWk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfU1RBUlQoZW5naW5lLT5tbWlvX2Jh c2UpKSwKPiAtCQkJCUNUWF9SSU5HX0JVRkZFUl9TVEFSVCAtIDEsCj4gKwkJCQlDVFhfUklOR19T VEFSVCAtIDEsCj4gIAkJCQkiUklOR19TVEFSVCIKPiAgCQkJfSwKPiAgCQkJewo+ICAJCQkJaTkx NV9tbWlvX3JlZ19vZmZzZXQoUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKSwKPiAtCQkJCUNU WF9SSU5HX0JVRkZFUl9DT05UUk9MIC0gMSwKPiArCQkJCUNUWF9SSU5HX0NUTCAtIDEsCj4gIAkJ CQkiUklOR19DVEwiCj4gIAkJCX0sCj4gIAkJCXsKPiAtLSAKPiAyLjI0LjAucmMxCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 437E9CA9ECB for ; Thu, 31 Oct 2019 14:33:04 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 1C20220873 for ; Thu, 31 Oct 2019 14:33:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1C20220873 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id A850C6EC2A; Thu, 31 Oct 2019 14:33:03 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 036406EC2A for ; Thu, 31 Oct 2019 14:33:02 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Oct 2019 07:33:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,250,1569308400"; d="scan'208";a="375262736" Received: from gaia.fi.intel.com ([10.237.72.192]) by orsmga005.jf.intel.com with ESMTP; 31 Oct 2019 07:33:01 -0700 Received: by gaia.fi.intel.com (Postfix, from userid 1000) id D4BB65C1E15; Thu, 31 Oct 2019 16:32:05 +0200 (EET) From: Mika Kuoppala To: Chris Wilson , intel-gfx@lists.freedesktop.org In-Reply-To: <20191031104747.5308-1-chris@chris-wilson.co.uk> References: <20191031104747.5308-1-chris@chris-wilson.co.uk> Date: Thu, 31 Oct 2019 16:32:05 +0200 Message-ID: <87y2x1j89m.fsf@gaia.fi.intel.com> MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH] drm/i915/execlists: Verify context register state before execution X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191031143205.QrlWDrP_dJ2LoYnPu6k8HclE_J1sHacoQm9b6OSCSf0@z> Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQ2hlY2sg dGhhdCB0aGUgY29udGV4dCdzIHJpbmcgcmVnaXN0ZXIgc3RhdGUgc3RpbGwgbWF0Y2hlcyBvdXIK PiBleHBlY3RhdGlvbnMgcHJpb3IgdG8gZXhlY3V0aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEg PG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9scmMuYyAgICAgfCA3MyArKysrKysrKysrKysrKysrKysrKy0tLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaCB8ICA0ICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jICB8ICA0ICstCj4gIDMgZmlsZXMgY2hh bmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9scmMuYwo+IGluZGV4IDVmNjFjZDEyOGQ5Yy4uNjY2ZTcwOTMxNTI0IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKPiBAQCAtMTE0Niw2ICsxMTQ2LDYwIEBA IGV4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gIAlpOTE1 X3JlcXVlc3RfcHV0KHJxKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBscmNfcmluZ19taV9tb2Rl KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJaWYgKElOVEVM X0dFTihlbmdpbmUtPmk5MTUpID49IDEyKQo+ICsJCXJldHVybiAweDYwOwo+ICsJZWxzZSBpZiAo SU5URUxfR0VOKGVuZ2luZS0+aTkxNSkgPj0gOSkKPiArCQlyZXR1cm4gMHg1NDsKPiArCWVsc2Ug aWYgKGVuZ2luZS0+Y2xhc3MgPT0gUkVOREVSX0NMQVNTKQo+ICsJCXJldHVybiAweDU4Owo+ICsJ ZWxzZQo+ICsJCXJldHVybiAtMTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiArZXhlY2xpc3Rz X2NoZWNrX2NvbnRleHQoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICsJCQljb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBp bnRlbF9yaW5nICpyaW5nID0gY2UtPnJpbmc7Cj4gKwl1MzIgKnJlZ3MgPSBjZS0+bHJjX3JlZ19z dGF0ZTsKPiArCWludCB4Owo+ICsKPiArCWlmIChyZWdzW0NUWF9SSU5HX1NUQVJUXSAhPSBpOTE1 X2dndHRfb2Zmc2V0KHJpbmctPnZtYSkpIHsKPiArCQlwcl9lcnJfb25jZSgiJXM6IGNvbnRleHQg c3VibWl0dGVkIHdpdGggaW5jb3JyZWN0IFJJTkdfQlVGRkVSX1NUQVJUIFslMDh4XSwgZXhwZWN0 ZWQgJTA4eFxuIiwKPiArCQkJICAgIGVuZ2luZS0+bmFtZSwKPiArCQkJICAgIHJlZ3NbQ1RYX1JJ TkdfU1RBUlRdLAo+ICsJCQkgICAgaTkxNV9nZ3R0X29mZnNldChyaW5nLT52bWEpKTsKPiArCQly ZWdzW0NUWF9SSU5HX1NUQVJUXSA9IGk5MTVfZ2d0dF9vZmZzZXQocmluZy0+dm1hKTsKPiArCX0K PiArCj4gKwlpZiAoKHJlZ3NbQ1RYX1JJTkdfQ1RMXSAmIH4oUklOR19XQUlUIHwgUklOR19XQUlU X1NFTUFQSE9SRSkpICE9Cj4gKwkgICAgKFJJTkdfQ1RMX1NJWkUocmluZy0+c2l6ZSkgfCBSSU5H X1ZBTElEKSkgewo+ICsJCXByX2Vycl9vbmNlKCIlczogY29udGV4dCBzdWJtaXR0ZWQgd2l0aCBp bmNvcnJlY3QgUklOR19CVUZGRVJfQ09OVFJPTCBbJTA4eF0sIGV4cGVjdGVkICUwOHhcbiIsCj4g KwkJCSAgICBlbmdpbmUtPm5hbWUsCj4gKwkJCSAgICByZWdzW0NUWF9SSU5HX0NUTF0sCj4gKwkJ CSAgICAodTMyKShSSU5HX0NUTF9TSVpFKHJpbmctPnNpemUpIHwgUklOR19WQUxJRCkpOwo+ICsJ CXJlZ3NbQ1RYX1JJTkdfQ1RMXSA9IFJJTkdfQ1RMX1NJWkUocmluZy0+c2l6ZSkgfCBSSU5HX1ZB TElEOwoKV2UgYXJlIGdvaW5nIHRvIHN1Ym1pdCBieSBjbGVhcmluZyB0aGUgd2FpdHMuIEZpcnN0 IEkgdGhvdWdodCB0aGlzIHdpbGwKbGVhZCB0byBkaXNhc3RlciBidXQgdGhlIGhhcmR3YXJlIHdv cmtzIHNvIHRoYXQgd2UgY2xlYXIgb24gd3JpdGluZyAnMScuCgoKPiArCX0KPiArCj4gKwlpZiAo cmVnc1tDVFhfQkJfU1RBVEVdICE9IFJJTkdfQkJfUFBHVFQpIHsKPiArCQlwcl9lcnJfb25jZSgi JXM6IGNvbnRleHQgc3VibWl0dGVkIHdpdGggaW5jb3JyZWN0IEJCX1NUQVRFIFslMDh4XSwgZXhw ZWN0ZWQgJTA4eFxuIiwKPiArCQkJICAgIGVuZ2luZS0+bmFtZSwKPiArCQkJICAgIHJlZ3NbQ1RY X0JCX1NUQVRFXSwKPiArCQkJICAgIFJJTkdfQkJfUFBHVFQpOwo+ICsJCXJlZ3NbQ1RYX0JCX1NU QVRFXSA9IFJJTkdfQkJfUFBHVFQ7Cj4gKwl9Cj4gKwo+ICsJeCA9IGxyY19yaW5nX21pX21vZGUo ZW5naW5lKTsKPiArCWlmICh4ICE9IC0xICYmIHJlZ3NbeCArIDFdICYgU1RPUF9SSU5HKSB7Cj4g KwkJcHJfZXJyX29uY2UoIiVzOiBjb250ZXh0IHN1Ym1pdHRlZCB3aXRoIFNUT1BfUklORyBbJTA4 eF0gaW4gUklOR19NSV9NT0RFXG4iLAo+ICsJCQkgICAgZW5naW5lLT5uYW1lLCByZWdzW3ggKyAx XSk7Cj4gKwkJcmVnc1t4ICsgMV0gJj0gflNUT1BfUklORzsKPiArCQlyZWdzW3ggKyAxXSB8PSBT VE9QX1JJTkcgPDwgMTY7CgpPayB5b3Ugd2FudCBvbmx5IHRvIGNhcmUgYWJvdXQgdGhpcyBvbmUu IFdhcyBwb25kZXJpbmcgb2YgcmVzdG9yaW5nIHJlc3QKb2YgdGhlIHN0YXRlIGZyb20gcHJldmlv dXMuCgpXaWxsIHRoZSBoYXJkd2FyZSBldmVuIGNhcmUgb24gbWFza3MgYXQgdGhpcyBwb2ludCBv ciBpcyB0aGUgc2F2aW5nIHBhcnQKc2V0dGluZyB0aGVtIGFjY29yZGluZ2x5PwoKTm90IGFmZmVj dGluZyB0aGlzIHBhdGNoIHRobywganVzdCBjdXJpb3VzLgoKUmV2aWV3ZWQtYnk6IE1pa2EgS3Vv cHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKPiArCX0KPiArfQo+ICsKPiAg c3RhdGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoY29uc3Qgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHJxLT5jb250ZXh0 Owo+IEBAIC0xMTU0LDYgKzEyMDgsOSBAQCBzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29u dGV4dChjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgCWNlLT5scmNfcmVnX3N0YXRl W0NUWF9SSU5HX1RBSUxdID0KPiAgCQlpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+ dGFpbCk7Cj4gIAo+ICsJaWYgKElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkp Cj4gKwkJZXhlY2xpc3RzX2NoZWNrX2NvbnRleHQoY2UsIHJxLT5lbmdpbmUpOwo+ICsKPiAgCS8q Cj4gIAkgKiBNYWtlIHN1cmUgdGhlIGNvbnRleHQgaW1hZ2UgaXMgY29tcGxldGUgYmVmb3JlIHdl IHN1Ym1pdCBpdCB0byBIVy4KPiAgCSAqCj4gQEAgLTIzNTUsNyArMjQxMiw3IEBAIF9fZXhlY2xp c3RzX3VwZGF0ZV9yZWdfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICAJ R0VNX0JVR19PTighaW50ZWxfcmluZ19vZmZzZXRfdmFsaWQocmluZywgcmluZy0+aGVhZCkpOwo+ ICAJR0VNX0JVR19PTighaW50ZWxfcmluZ19vZmZzZXRfdmFsaWQocmluZywgcmluZy0+dGFpbCkp Owo+ICAKPiAtCXJlZ3NbQ1RYX1JJTkdfQlVGRkVSX1NUQVJUXSA9IGk5MTVfZ2d0dF9vZmZzZXQo cmluZy0+dm1hKTsKPiArCXJlZ3NbQ1RYX1JJTkdfU1RBUlRdID0gaTkxNV9nZ3R0X29mZnNldChy aW5nLT52bWEpOwo+ICAJcmVnc1tDVFhfUklOR19IRUFEXSA9IHJpbmctPmhlYWQ7Cj4gIAlyZWdz W0NUWF9SSU5HX1RBSUxdID0gcmluZy0+dGFpbDsKPiAgCj4gQEAgLTI5NDIsMTggKzI5OTksNiBA QCBzdGF0aWMgdm9pZCByZXNldF9jc2JfcG9pbnRlcnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAJCQkgICAgICAgJmV4ZWNsaXN0cy0+Y3NiX3N0YXR1c1tyZXNldF92YWx1ZV0p Owo+ICB9Cj4gIAo+IC1zdGF0aWMgaW50IGxyY19yaW5nX21pX21vZGUoY29uc3Qgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlpZiAoSU5URUxfR0VOKGVuZ2luZS0+aTkx NSkgPj0gMTIpCj4gLQkJcmV0dXJuIDB4NjA7Cj4gLQllbHNlIGlmIChJTlRFTF9HRU4oZW5naW5l LT5pOTE1KSA+PSA5KQo+IC0JCXJldHVybiAweDU0Owo+IC0JZWxzZSBpZiAoZW5naW5lLT5jbGFz cyA9PSBSRU5ERVJfQ0xBU1MpCj4gLQkJcmV0dXJuIDB4NTg7Cj4gLQllbHNlCj4gLQkJcmV0dXJu IC0xOwo+IC19Cj4gLQo+ICBzdGF0aWMgdm9pZCBfX2V4ZWNsaXN0c19yZXNldF9yZWdfc3RhdGUo Y29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAo+ICAJCQkJCWNvbnN0IHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+IEBAIC0zODgxLDcgKzM5MjYsNyBAQCBzdGF0aWMg dm9pZCBpbml0X2NvbW1vbl9yZWdfc3RhdGUodTMyICogY29uc3QgcmVncywKPiAgCQkJX01BU0tF RF9CSVRfRElTQUJMRShDVFhfQ1RSTF9FTkdJTkVfQ1RYX1NBVkVfSU5ISUJJVCB8Cj4gIAkJCQkJ ICAgIENUWF9DVFJMX1JTX0NUWF9FTkFCTEUpOwo+ICAKPiAtCXJlZ3NbQ1RYX1JJTkdfQlVGRkVS X0NPTlRST0xdID0gUklOR19DVExfU0laRShyaW5nLT5zaXplKSB8IFJJTkdfVkFMSUQ7Cj4gKwly ZWdzW0NUWF9SSU5HX0NUTF0gPSBSSU5HX0NUTF9TSVpFKHJpbmctPnNpemUpIHwgUklOR19WQUxJ RDsKPiAgCXJlZ3NbQ1RYX0JCX1NUQVRFXSA9IFJJTkdfQkJfUFBHVFQ7Cj4gIH0KPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcuaAo+IGluZGV4IDA2YWIwMjc2ZTEwZS4u MDhhM2JlNjVmNzAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyY19yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyY19yZWcu aAo+IEBAIC0xMyw4ICsxMyw4IEBACj4gICNkZWZpbmUgQ1RYX0NPTlRFWFRfQ09OVFJPTAkJKDB4 MDIgKyAxKQo+ICAjZGVmaW5lIENUWF9SSU5HX0hFQUQJCQkoMHgwNCArIDEpCj4gICNkZWZpbmUg Q1RYX1JJTkdfVEFJTAkJCSgweDA2ICsgMSkKPiAtI2RlZmluZSBDVFhfUklOR19CVUZGRVJfU1RB UlQJCSgweDA4ICsgMSkKPiAtI2RlZmluZSBDVFhfUklOR19CVUZGRVJfQ09OVFJPTAkJKDB4MGEg KyAxKQo+ICsjZGVmaW5lIENUWF9SSU5HX1NUQVJUCQkJKDB4MDggKyAxKQo+ICsjZGVmaW5lIENU WF9SSU5HX0NUTAkJCSgweDBhICsgMSkKPiAgI2RlZmluZSBDVFhfQkJfU1RBVEUJCQkoMHgxMCAr IDEpCj4gICNkZWZpbmUgQ1RYX0JCX1BFUl9DVFhfUFRSCQkoMHgxOCArIDEpCj4gICNkZWZpbmUg Q1RYX1BEUDNfVURXCQkJKDB4MjQgKyAxKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X2xyYy5jCj4gaW5kZXggMDRkMGRkNmE5MzhhLi43ZDNjN2NhODExYjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBAIC0zMTc4LDEyICszMTc4LDEyIEBAIHN0 YXRpYyBpbnQgbGl2ZV9scmNfZml4ZWQodm9pZCAqYXJnKQo+ICAJCX0gdGJsW10gPSB7Cj4gIAkJ CXsKPiAgCQkJCWk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfU1RBUlQoZW5naW5lLT5tbWlvX2Jh c2UpKSwKPiAtCQkJCUNUWF9SSU5HX0JVRkZFUl9TVEFSVCAtIDEsCj4gKwkJCQlDVFhfUklOR19T VEFSVCAtIDEsCj4gIAkJCQkiUklOR19TVEFSVCIKPiAgCQkJfSwKPiAgCQkJewo+ICAJCQkJaTkx NV9tbWlvX3JlZ19vZmZzZXQoUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKSwKPiAtCQkJCUNU WF9SSU5HX0JVRkZFUl9DT05UUk9MIC0gMSwKPiArCQkJCUNUWF9SSU5HX0NUTCAtIDEsCj4gIAkJ CQkiUklOR19DVEwiCj4gIAkJCX0sCj4gIAkJCXsKPiAtLSAKPiAyLjI0LjAucmMxCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==