From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [RFC 3/9] drm/i915: Convert requests to use struct fence Date: Tue, 28 Jul 2015 11:10:21 +0100 Message-ID: <55B7550D.6080001@Intel.com> References: <1437143483-6234-1-git-send-email-John.C.Harrison@Intel.com> <1437143483-6234-4-git-send-email-John.C.Harrison@Intel.com> <55AFA806.6010502@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 6FC276E96E for ; Tue, 28 Jul 2015 03:10:23 -0700 (PDT) In-Reply-To: <55AFA806.6010502@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMjIvMDcvMjAxNSAxNToyNiwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4KPiBIaSwKPgo+IE9u IDA3LzE3LzIwMTUgMDM6MzEgUE0sIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20gd3JvdGU6Cj4+ IEZyb206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+Cj4+IFRo ZXJlIGlzIGEgY29uc3RydWN0IGluIHRoZSBsaW51eCBrZXJuZWwgY2FsbGVkICdzdHJ1Y3QgZmVu Y2UnIHRoYXQgCj4+IGlzIGludGVuZGVkCj4+IHRvIGtlZXAgdHJhY2sgb2Ygd29yayB0aGF0IGlz IGV4ZWN1dGVkIG9uIGhhcmR3YXJlLiBJLmUuIGl0IHNvbHZlcyAKPj4gdGhlIGJhc2ljCj4+IHBy b2JsZW0gdGhhdCB0aGUgZHJpdmVycyAnc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0JyBpcyB0 cnlpbmcgdG8gCj4+IGFkZHJlc3MuIFRoZQo+PiByZXF1ZXN0IHN0cnVjdHVyZSBkb2VzIHF1aXRl IGEgbG90IG1vcmUgdGhhbiBzaW1wbHkgdHJhY2sgdGhlIAo+PiBleGVjdXRpb24gcHJvZ3Jlc3MK Pj4gc28gaXMgdmVyeSBkZWZpbml0ZWx5IHN0aWxsIHJlcXVpcmVkLiBIb3dldmVyLCB0aGUgYmFz aWMgY29tcGxldGlvbiAKPj4gc3RhdHVzIHNpZGUKPj4gY291bGQgYmUgdXBkYXRlZCB0byB1c2Ug dGhlIHJlYWR5IG1hZGUgZmVuY2UgaW1wbGVtZW50YXRpb24gYW5kIGdhaW4gCj4+IGFsbCB0aGUK Pj4gYWR2YW50YWdlcyB0aGF0IHByb3ZpZGVzLgo+Pgo+PiBUaGlzIHBhdGNoIG1ha2VzIHRoZSBm aXJzdCBzdGVwIG9mIGludGVncmF0aW5nIGEgc3RydWN0IGZlbmNlIGludG8gCj4+IHRoZSByZXF1 ZXN0Lgo+PiBJdCByZXBsYWNlcyB0aGUgZXhwbGljaXQgcmVmZXJlbmNlIGNvdW50IHdpdGggdGhh dCBvZiB0aGUgZmVuY2UuIEl0IGFsc28KPj4gcmVwbGFjZXMgdGhlICdpcyBjb21wbGV0ZWQnIHRl c3Qgd2l0aCB0aGUgZmVuY2UncyBlcXVpdmFsZW50LiAKPj4gQ3VycmVudGx5LCB0aGF0Cj4+IHNp bXBseSBjaGFpbnMgb24gdG8gdGhlIG9yaWdpbmFsIHJlcXVlc3QgaW1wbGVtZW50YXRpb24uIEEg ZnV0dXJlIAo+PiBwYXRjaCB3aWxsCj4+IGltcHJvdmUgdGhpcy4KPj4KPj4gRm9yOiBWSVotNTE5 MAo+PiBTaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwu Y29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg fCA0NSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyAgICAgICAgIHwgNTggCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICAxICsK Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgMSArCj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgIDMgKysKPj4gICA1IGZp bGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAKPj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IGNmNjc2MWMuLjc5ZDM0NmMgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtNTAsNiArNTAsNyBAQAo+PiAgICNpbmNsdWRl IDxsaW51eC9pbnRlbC1pb21tdS5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4+ICAg I2luY2x1ZGUgPGxpbnV4L3BtX3Fvcy5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2ZlbmNlLmg+Cj4+ Cj4+ICAgLyogR2VuZXJhbCBjdXN0b21pemF0aW9uOgo+PiAgICAqLwo+PiBAQCAtMjE1MCw3ICsy MTUxLDE3IEBAIHZvaWQgaTkxNV9nZW1fdHJhY2tfZmIoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1f b2JqZWN0ICpvbGQsCj4+ICAgICogaW5pdGlhbCByZWZlcmVuY2UgdGFrZW4gdXNpbmcga3JlZl9p bml0Cj4+ICAgICovCj4+ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKPj4gLSAgICBz dHJ1Y3Qga3JlZiByZWY7Cj4+ICsgICAgLyoqCj4+ICsgICAgICogVW5kZXJseWluZyBvYmplY3Qg Zm9yIGltcGxlbWVudGluZyB0aGUgc2lnbmFsL3dhaXQgc3R1ZmYuCj4+ICsgICAgICogTkI6IE5l dmVyIGNhbGwgZmVuY2VfbGF0ZXIoKSBvciByZXR1cm4gdGhpcyBmZW5jZSBvYmplY3QgdG8gdXNl cgo+PiArICAgICAqIGxhbmQhIER1ZSB0byBsYXp5IGFsbG9jYXRpb24sIHNjaGVkdWxlciByZS1v cmRlcmluZywgCj4+IHByZS1lbXB0aW9uLAo+PiArICAgICAqIGV0Yy4sIHRoZXJlIGlzIG5vIGd1 YXJhbnRlZSBhdCBhbGwgYWJvdXQgdGhlIHZhbGlkaXR5IG9yCj4+ICsgICAgICogc2VxdWVudGlh bGl0eSBvZiB0aGUgZmVuY2UncyBzZXFubyEgSXQgaXMgYWxzbyB1bnNhZmUgdG8gbGV0Cj4+ICsg ICAgICogYW55dGhpbmcgb3V0c2lkZSBvZiB0aGUgaTkxNSBkcml2ZXIgZ2V0IGhvbGQgb2YgdGhl IGZlbmNlIG9iamVjdAo+PiArICAgICAqIGFzIHRoZSBjbGVhbiB1cCB3aGVuIGRlY3JlbWVudGlu ZyB0aGUgcmVmZXJlbmNlIGNvdW50IHJlcXVpcmVzCj4+ICsgICAgICogaG9sZGluZyB0aGUgZHJp dmVyIG11dGV4IGxvY2suCj4+ICsgICAgICovCj4+ICsgICAgc3RydWN0IGZlbmNlIGZlbmNlOwo+ Pgo+PiAgICAgICAvKiogT24gV2hpY2ggcmluZyB0aGlzIHJlcXVlc3Qgd2FzIGdlbmVyYXRlZCAq Lwo+PiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPj4gQEAgLTIyMjcsNyAr MjIzOCwxMyBAQCBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgCj4+IGludGVsX2Vu Z2luZV9jcyAqcmluZywKPj4gICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y3R4LAo+PiAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJl cV9vdXQpOwo+PiAgIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpOwo+PiAtdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0 IGtyZWYgKnJlcV9yZWYpOwo+PiArCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fcmVx dWVzdF9jb21wbGV0ZWQoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxhenlfY29oZXJlbmN5KQo+PiArewo+PiAr ICAgIHJldHVybiBmZW5jZV9pc19zaWduYWxlZCgmcmVxLT5mZW5jZSk7Cj4+ICt9Cj4+ICsKPj4g ICBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hZGRfdG9fY2xpZW50KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAo+PiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpOwo+Pgo+PiBAQCAtMjI0Nyw3ICsyMjY0LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKgo+PiAgIGk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJlbmNlKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+PiAgIHsKPj4gICAgICAgaWYgKHJlcSkKPj4g LSAgICAgICAga3JlZl9nZXQoJnJlcS0+cmVmKTsKPj4gKyAgICAgICAgZmVuY2VfZ2V0KCZyZXEt PmZlbmNlKTsKPj4gICAgICAgcmV0dXJuIHJlcTsKPj4gICB9Cj4+Cj4+IEBAIC0yMjU1LDcgKzIy NzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQKPj4gICBpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJl bmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+PiAgIHsKPj4gV0FSTl9PTigh bXV0ZXhfaXNfbG9ja2VkKCZyZXEtPnJpbmctPmRldi0+c3RydWN0X211dGV4KSk7Cj4+IC0gICAg a3JlZl9wdXQoJnJlcS0+cmVmLCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUpOwo+PiArICAgIGZlbmNl X3B1dCgmcmVxLT5mZW5jZSk7Cj4+ICAgfQo+Pgo+PiAgIHN0YXRpYyBpbmxpbmUgdm9pZAo+PiBA QCAtMjI2Nyw3ICsyMjg0LDcgQEAgaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV9fdW5sb2Nr ZWQoc3RydWN0IAo+PiBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+PiAgICAgICAgICAgcmV0 dXJuOwo+Pgo+PiAgICAgICBkZXYgPSByZXEtPnJpbmctPmRldjsKPj4gLSAgICBpZiAoa3JlZl9w dXRfbXV0ZXgoJnJlcS0+cmVmLCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUsIAo+PiAmZGV2LT5zdHJ1 Y3RfbXV0ZXgpKQo+PiArICAgIGlmIChrcmVmX3B1dF9tdXRleCgmcmVxLT5mZW5jZS5yZWZjb3Vu dCwgZmVuY2VfcmVsZWFzZSwgCj4+ICZkZXYtPnN0cnVjdF9tdXRleCkpCj4+ICAgICAgICAgICBt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPgo+IFdvdWxkIGl0IGJlIG5pY2VyIHRv IGFkZCBmZW5jZV9wdXRfbXV0ZXgoc3RydWN0IGZlbmNlICosIHN0cnVjdCBtdXRleCAKPiAqKSBm b3IgdGhpcz8gSXQgd291bGQgYXZvaWQgdGhlIGxheWVyaW5nIHZpb2xhdGlvbiBvZiByZXF1ZXN0 cyBwZWVraW5nIAo+IGludG8gZmVuY2UgaW1wbGVtZW50YXRpb24gZGV0YWlscy4KCk1hYXJ0ZW4g cG9pbnRlZCBvdXQgdGhhdCBhZGRpbmcgJ2ZlbmNlX3B1dF9tdXRleCgpJyBpcyBicmVha2luZyB0 aGUgCmZlbmNlIEFCSSBpdHNlbGYuIEl0IHJlcXVpcmVzIHVzZXJzIG9mIGFueSByYW5kb20gZmVu Y2UgdG8ga25vdyBhbmQgCndvcnJ5IGFib3V0IHdoYXQgbXV0ZXggb2JqZWN0cyB0aGF0IGZlbmNl J3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gCm1pZ2h0IHJlcXVpcmUuCgpUaGlzIGlzIGEgYml0 IG1vcmUgaGFja3kgZnJvbSBvdXIgcG9pbnQgb2YgdmlldyBidXQgaXQgaXMgb25seSBhIAp0ZW1w b3JhcnkgbWVhc3VyZSB1bnRpbCB0aGUgbXV0ZXggbG9jayBpcyBub3QgcmVxdWlyZWQgZm9yIApk ZXJlZmVyZW5jaW5nLiBBdCB0aGF0IHBvaW50IGFsbCB0aGUgbmFzdHkgc3R1ZmYgZGlzYXBwZWFy cyBjb21wbGV0ZWx5LgoKCj4KPj4gICB9Cj4+Cj4+IEBAIC0yMjg0LDEyICsyMzAxLDYgQEAgc3Rh dGljIGlubGluZSB2b2lkIAo+PiBpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKipwZHN0LAo+PiAgIH0KPj4KPj4gICAvKgo+PiAtICogWFhYOiBpOTE1 X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZCBzaG91bGQgYmUgaGVyZSBidXQgY3VycmVudGx5IAo+PiBu ZWVkcyB0aGUKPj4gLSAqIGRlZmluaXRpb24gb2YgaTkxNV9zZXFub19wYXNzZWQoKSB3aGljaCBp cyBiZWxvdy4gSXQgd2lsbCBiZSAKPj4gbW92ZWQgaW4KPj4gLSAqIGEgbGF0ZXIgcGF0Y2ggd2hl biB0aGUgY2FsbCB0byBpOTE1X3NlcW5vX3Bhc3NlZCgpIGlzIG9ic29sZXRlZC4uLgo+PiAtICov Cj4+IC0KPj4gLS8qCj4+ICAgICogQSBjb21tYW5kIHRoYXQgcmVxdWlyZXMgc3BlY2lhbCBoYW5k bGluZyBieSB0aGUgY29tbWFuZCBwYXJzZXIuCj4+ICAgICovCj4+ICAgc3RydWN0IGRybV9pOTE1 X2NtZF9kZXNjcmlwdG9yIHsKPj4gQEAgLTI4NTEsMTggKzI4NjIsNiBAQCBpOTE1X3NlcW5vX3Bh c3NlZCh1aW50MzJfdCBzZXExLCB1aW50MzJfdCBzZXEyKQo+PiAgICAgICByZXR1cm4gKGludDMy X3QpKHNlcTEgLSBzZXEyKSA+PSAwOwo+PiAgIH0KPj4KPj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBp OTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbGF6eV9jb2hlcmVuY3kp Cj4+IC17Cj4+IC0gICAgdTMyIHNlcW5vOwo+PiAtCj4+IC0gICAgQlVHX09OKHJlcSA9PSBOVUxM KTsKPj4gLQo+PiAtICAgIHNlcW5vID0gcmVxLT5yaW5nLT5nZXRfc2Vxbm8ocmVxLT5yaW5nLCBs YXp5X2NvaGVyZW5jeSk7Cj4+IC0KPj4gLSAgICByZXR1cm4gaTkxNV9zZXFub19wYXNzZWQoc2Vx bm8sIHJlcS0+c2Vxbm8pOwo+PiAtfQo+PiAtCj4+ICAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dl bV9nZXRfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIAo+PiAqc2Vxbm8pOwo+PiAg IGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHUzMiAKPj4gc2Vxbm8pOwo+PiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0 X2dldF9mZW5jZShzdHJ1Y3QgCj4+IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIAo+PiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggZDlmMjcwMS4uODg4YmI3MiAxMDA2NDQKPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IEBAIC0yNjE2LDEyICsyNjE2LDE0IEBAIHN0YXRpYyB2 b2lkIGk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+PiAgICAgICB9Cj4+ICAgfQo+Pgo+PiAtdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2Zy ZWUoc3RydWN0IGtyZWYgKnJlcV9yZWYpCj4+ICtzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0 X2ZyZWUoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UpCj4+ICAgewo+PiAtICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVyX29mKHJlcV9yZWYsCj4+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZW9mKCpyZXEpLCByZWYpOwo+PiArICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVyX29mKHJlcV9mZW5jZSwKPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlb2YoKnJlcSksIGZlbmNlKTsKPj4gICAgICAgc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4Owo+Pgo+PiArIEJVR19PTighbXV0ZXhfaXNf bG9ja2VkKCZyZXEtPnJpbmctPmRldi0+c3RydWN0X211dGV4KSk7Cj4KPiBJdCB3b3VsZCBiZSBu aWNlciAoZm9yIHRoZSB1c2VyIGV4cGVyaWVuY2UsIGV2ZW4gaWYgb25seSB0aGUgZGV2ZWxvcGVy IAo+IHdvcmtpbmcgb24gdGhlIGNvZGUpIHRvIFdBUk4gYW5kIGxlYWsuCkhhYml0LiBEYW5pZWwg aGFzbid0IHF1aXRlIGJyb2tlbiBteSBmaW5nZXJzIG9mIHRoZWlyIEJVR19PTiBwcmVmZXJlbmNl LgoKPgo+PiArCj4+ICAgICAgIGlmIChyZXEtPmZpbGVfcHJpdikKPj4gICAgICAgICAgIGk5MTVf Z2VtX3JlcXVlc3RfcmVtb3ZlX2Zyb21fY2xpZW50KHJlcSk7Cj4+Cj4+IEBAIC0yNjM3LDYgKzI2 MzksNDcgQEAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0IGtyZWYgKnJlcV9yZWYp Cj4+ICAgICAgIGttZW1fY2FjaGVfZnJlZShyZXEtPmk5MTUtPnJlcXVlc3RzLCByZXEpOwo+PiAg IH0KPj4KPj4gK3N0YXRpYyBjb25zdCBjaGFyICppOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJf bmFtZShzdHJ1Y3QgZmVuY2UgCj4+ICpyZXFfZmVuY2UpCj4+ICt7Cj4+ICsgICAgcmV0dXJuICJp OTE1X3JlcXVlc3QiOwo+PiArfQo+Cj4gSSB0aGluayB0aGlzIGJlY29tZXMga2luZCBvZiBBQkkg b25jZSBhZGRlZCBzbyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSAKPiB0aGUgYmVzdCBuYW1lIGlzIGNo b3NlbiB0byBzdGFydCB3aXRoLiBJIGNvdWxkbid0IGltbWVkaWF0ZWx5IGZpZ3VyZSAKPiBvdXQg d2h5IG5vdCBqdXN0ICJpOTE1Ij8KClRoZSB0aG91Z2h0IHdhcyB0aGF0IHdlIG1pZ2h0IHN0YXJ0 IHVzaW5nIGZlbmNlcyBmb3Igb3RoZXIgcHVycG9zZXMgYXQgCnNvbWUgcG9pbnQgaW4gdGhlIGZ1 dHVyZS4gQXQgd2hpY2ggcG9pbnQgaXQgaXMgaGVscGZ1bCB0byBkaWZmZXJlbnRpYXRlIAp0aGVt LiBJZiBub3RoaW5nIGVsc2UsIGEgcHJldmlvdXMgaXRlcmF0aW9uIG9mIHRoZSBuYXRpdmUgc3lu YyAKaW1wbGVtZW50YXRpb24gd2FzIHVzaW5nIGRpZmZlcmVudCBmZW5jZSBvYmplY3RzIGR1ZSB0 byB3b3JyaWVzIGFib3V0IAphbGxvd2luZyB1c2VyIGxhbmQgdG8gZ2V0IGl0cyBncnViYnkgbWl0 dHMgb24gaW1wb3J0YW50IGRyaXZlciBpbnRlcm5hbCAKc3RydWN0dXJlcy4KCj4KPj4gKwo+PiAr c3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3RpbWVsaW5lX25hbWUoc3Ry dWN0IGZlbmNlIAo+PiAqcmVxX2ZlbmNlKQo+PiArewo+PiArICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVyX29mKHJlcV9mZW5jZSwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlb2YoKnJlcSksIGZlbmNlKTsKPj4gKyAgICByZXR1cm4gcmVxLT5y aW5nLT5uYW1lOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2Vu YWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UpCj4+ICt7Cj4+ICsgICAgLyog SW50ZXJydXB0IGRyaXZlbiBmZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQuKi8KPj4gKyAg ICBXQVJOKHRydWUsICJUaGlzIHNob3VsZCBub3QgYmUgY2FsbGVkISIpOwo+PiArICAgIHJldHVy biB0cnVlOwo+Cj4gSSBzdXBwb3NlIFdBUk4gaXMgbm90IHJlYWxseSBuZWVkZWQgaW4gdGhlIGlu dGVyaW0gcGF0Y2guIFdvdWxkIHJldHVybiAKPiBmYWxzZSB3b3JrPwoKVGhlIHBvaW50IGlzIHRv IGtlZXAgdGhlIGRyaXZlciAnc2FmZScgaWYgdGhhdCBwYXRjaCBpcyB2aWV3ZWQgYXMgc3RhbmQg CmFsb25lLiBJLmUuLCBpZiB0aGUgaW50ZXJydXB0IGZvbGxvdyB1cCBkb2VzIG5vdCBnZXQgbWVy Z2VkIGltbWVkaWF0ZWx5IAphZnRlciAob3Igbm90IGF0IGFsbCkgdGhlbiB0aGlzIHByZXZlbnRz IHBlb3BsZSBhY2NpZGVudGFsbHkgdHJ5aW5nIHRvIAp1c2UgYW4gdW5zdXBwb3J0ZWQgaW50ZXJm YWNlIHdpdGhvdXQgZmlyc3QgaW1wbGVtZW50aW5nIGl0LgoKPgo+PiArfQo+PiArCj4+ICtzdGF0 aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZChzdHJ1Y3QgZmVuY2UgKnJlcV9m ZW5jZSkKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IGNv bnRhaW5lcl9vZihyZXFfZmVuY2UsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9m KCpyZXEpLCBmZW5jZSk7Cj4+ICsgICAgdTMyIHNlcW5vOwo+PiArCj4+ICsgICAgQlVHX09OKHJl cSA9PSBOVUxMKTsKPgo+IEhtLCBJIGRvbid0IHRoaW5rIGNvbnRhaW5lcl9vZiBjYW4gcmV0dXJu IE5VTEwgaW4gYSBtZWFuaW5nZnVsIHdheS4KSG1tLCBoaXN0b3JpY2FsIGNvZGUuIFRoZSByZXF1 ZXN0IHVzZWQgdG8gYmUgYSBkaXJlY3QgcGFyYW1ldGVyLgoKPgo+PiArCj4+ICsgICAgc2Vxbm8g PSByZXEtPnJpbmctPmdldF9zZXFubyhyZXEtPnJpbmcsIGZhbHNlLypsYXp5X2NvaGVyZW5jeSov KTsKPj4gKwo+PiArICAgIHJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFu byk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIGk5MTVfZ2Vt X3JlcXVlc3RfZm9wcyA9IHsKPj4gKyAgICAuZ2V0X2RyaXZlcl9uYW1lICAgID0gaTkxNV9nZW1f cmVxdWVzdF9nZXRfZHJpdmVyX25hbWUsCj4+ICsgICAgLmdldF90aW1lbGluZV9uYW1lICAgID0g aTkxNV9nZW1fcmVxdWVzdF9nZXRfdGltZWxpbmVfbmFtZSwKPj4gKyAgICAuZW5hYmxlX3NpZ25h bGluZyAgICA9IGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGluZywKPj4gKyAgICAuc2ln bmFsZWQgICAgICAgID0gaTkxNV9nZW1fcmVxdWVzdF9pc19jb21wbGV0ZWQsCj4+ICsgICAgLndh aXQgICAgICAgICAgICA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKPj4gKyAgICAucmVsZWFzZSAgICAg ICAgPSBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUsCj4+ICt9Owo+PiArCj4+ICAgaW50IGk5MTVfZ2Vt X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4gICAgICAgICAg ICAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+PiAgICAgICAgICAgICAgICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpCj4+IEBAIC0yNjU4LDcgKzI3MDEs NiBAQCBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgCj4+IGludGVsX2VuZ2luZV9j cyAqcmluZywKPj4gICAgICAgaWYgKHJldCkKPj4gICAgICAgICAgIGdvdG8gZXJyOwo+Pgo+PiAt ICAgIGtyZWZfaW5pdCgmcmVxLT5yZWYpOwo+PiAgICAgICByZXEtPmk5MTUgPSBkZXZfcHJpdjsK Pj4gICAgICAgcmVxLT5yaW5nID0gcmluZzsKPj4gICAgICAgcmVxLT5jdHggID0gY3R4Owo+PiBA QCAtMjY3Myw2ICsyNzE1LDggQEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IAo+ PiBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4+ICAgICAgICAgICBnb3RvIGVycjsKPj4gICAgICAg fQo+Pgo+PiArICAgIGZlbmNlX2luaXQoJnJlcS0+ZmVuY2UsICZpOTE1X2dlbV9yZXF1ZXN0X2Zv cHMsIAo+PiAmcmluZy0+ZmVuY2VfbG9jaywgcmluZy0+ZmVuY2VfY29udGV4dCwgcmVxLT5zZXFu byk7Cj4+ICsKPj4gICAgICAgLyoKPj4gICAgICAgICogUmVzZXJ2ZSBzcGFjZSBpbiB0aGUgcmlu ZyBidWZmZXIgZm9yIGFsbCB0aGUgY29tbWFuZHMgCj4+IHJlcXVpcmVkIHRvCj4+ICAgICAgICAq IGV2ZW50dWFsbHkgZW1pdCB0aGlzIHJlcXVlc3QuIFRoaXMgaXMgdG8gZ3VhcmFudGVlIHRoYXQg dGhlCj4+IEBAIC01MDIxLDcgKzUwNjUsNyBAQCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4+ICAgewo+PiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+PiAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nOwo+PiAtICAgIGludCByZXQsIGksIGo7Cj4+ICsgICAgaW50IHJldCwgaSwgaiwgZmVu Y2VfYmFzZTsKPj4KPj4gICAgICAgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNiAmJiAhaW50 ZWxfZW5hYmxlX2d0dCgpKQo+PiAgICAgICAgICAgcmV0dXJuIC1FSU87Cj4+IEBAIC01MDczLDEy ICs1MTE3LDE2IEBAIGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4g ICAgICAgICAgICAgICBnb3RvIG91dDsKPj4gICAgICAgfQo+Pgo+PiArICAgIGZlbmNlX2Jhc2Ug PSBmZW5jZV9jb250ZXh0X2FsbG9jKEk5MTVfTlVNX1JJTkdTKTsKPj4gKwo+PiAgICAgICAvKiBO b3cgaXQgaXMgc2FmZSB0byBnbyBiYWNrIHJvdW5kIGFuZCBkbyBldmVyeXRoaW5nIGVsc2U6ICov Cj4+ICAgICAgIGZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKPj4gICAgICAgICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+Pgo+PiAgICAgICAgICAgV0FSTl9P TighcmluZy0+ZGVmYXVsdF9jb250ZXh0KTsKPj4KPj4gKyAgICAgICAgcmluZy0+ZmVuY2VfY29u dGV4dCA9IGZlbmNlX2Jhc2UgKyBpOwo+Cj4gQ291bGQgeW91IHN0b3JlIGZlbmNlX2Jhc2UgaW4g ZGV2X3ByaXYgYW5kIHRoZW4gcmluZy0+aW5pdF9odyBjb3VsZCAKPiBzZXQgdXAgdGhlIGZlbmNl X2NvbnRleHQgb24gaXRzIG93bj8KClByb2JhYmx5LiBJdCBzZWVtZWQgdG8gbWFrZSBtb3JlIHNl bnNlIHRvIG1lIHRvIGtlZXAgdGhlIGZlbmNlIAphbGxvY2F0aW9uIGFsbCBpbiBvbmUgcGxhY2Ug cmF0aGVyIHRoYW4gc3BsaXR0aW5nIGl0IGluIGhhbGYgYW5kIApkaXN0cmlidXRpbmcgaXQuIEl0 IGdldHMgcmVtb3ZlZCBhZ2FpbiB3aXRoIHRoZSBwZXIgY29udGV4dCBwZXIgcmluZyAKdGltZWxp bmVzIGFueXdheS4KCj4KPiBSZWdhcmRzLAo+Cj4gVHZydGtvCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=