From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2 06/11] drm/i915/scheduler: Record all dependencies upon request construction Date: Thu, 10 Nov 2016 15:36:17 +0000 Message-ID: References: <20161107135950.28861-1-chris@chris-wilson.co.uk> <20161107135950.28861-7-chris@chris-wilson.co.uk> <20161110150116.GN9300@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id BDDB189B98 for ; Thu, 10 Nov 2016 15:36:28 +0000 (UTC) In-Reply-To: <20161110150116.GN9300@nuc-i3427.alporthouse.com> 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 Ck9uIDEwLzExLzIwMTYgMTU6MDEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPbiBUaHUsIE5vdiAx MCwgMjAxNiBhdCAwMjo0NTozOVBNICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4KPj4g T24gMDcvMTEvMjAxNiAxMzo1OSwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+Pj4gVGhlIHNjaGVkdWxl ciBuZWVkcyB0byBrbm93IHRoZSBkZXBlbmRlbmNpZXMgb2YgZWFjaCByZXF1ZXN0IGZvciB0aGUK Pj4+IGxpZmV0aW1lIG9mIHRoZSByZXF1ZXN0LCBhcyBpdCBtYXkgY2hvb3NlIHRvIHJlc2NoZWR1 bGUgdGhlIHJlcXVlc3RzIGF0Cj4+PiBhbnkgdGltZSBhbmQgbXVzdCBlbnN1cmUgdGhlIGRlcGVu ZGVuY3kgdHJlZSBpcyBub3QgYnJva2VuLiBUaGlzIGlzIGluCj4+PiBhZGRpdGlvbmFsIHRvIHVz aW5nIHRoZSBmZW5jZSB0byBvbmx5IGFsbG93IGV4ZWN1dGlvbiBhZnRlciBhbGwKPj4+IGRlcGVu ZGVuY2llcyBoYXZlIGJlZW4gY29tcGxldGVkLgo+Pj4KPj4+IE9uZSBvcHRpb24gd2FzIHRvIGV4 dGVuZCB0aGUgZmVuY2UgdG8gc3VwcG9ydCB0aGUgYmlkaXJlY3Rpb25hbAo+Pj4gZGVwZW5kZW5j eSB0cmFja2luZyByZXF1aXJlZCBieSB0aGUgc2NoZWR1bGVyLiBIb3dldmVyIHRoZSBtaXNtYXRj aCBpbgo+Pj4gbGlmZXRpbWVzIGJldHdlZW4gdGhlIHN1Ym1pdCBmZW5jZSBhbmQgdGhlIHJlcXVl c3QgZXNzZW50aWFsbHkgbWVhbnQKPj4+IHRoYXQgd2UgaGFkIHRvIGJ1aWxkIGEgY29tcGxldGVs eSBzZXBhcmF0ZSBzdHJ1Y3QgKGFuZCB3ZSBjb3VsZCBub3QKPj4+IHNpbXBseSByZXVzZSB0aGUg ZXhpc3Rpbmcgd2FpdHF1ZXVlIGluIHRoZSBmZW5jZSBmb3Igb25lIGhhbGYgb2YgdGhlCj4+PiBk ZXBlbmRlbmN5IHRyYWNraW5nKS4gVGhlIGV4dHJhIGRlcGVuZGVuY3kgdHJhY2tpbmcgc2ltcGx5 IGRpZCBub3QgbWVzaAo+Pj4gd2VsbCB3aXRoIHRoZSBmZW5jZSwgYW5kIGtlZXBpbmcgaXQgc2Vw YXJhdGUgYm90aCBrZWVwcyB0aGUgZmVuY2UKPj4+IGltcGxlbWVudGF0aW9uIHNpbXBsZXIgYW5k IGFsbG93cyB1cyB0byBleHRlbmQgdGhlIGRlcGVuZGVuY3kgdHJhY2tpbmcKPj4+IGludG8gYSBw cmlvcml0eSB0cmVlICh3aGlsc3QgbWFpbnRhaW5pbmcgc3VwcG9ydCBmb3IgcmVvcmRlcmluZyB0 aGUKPj4+IHRyZWUpLgo+Pj4KPj4+IFRvIGF2b2lkIHRoZSBhZGRpdGlvbmFsIGFsbG9jYXRpb25z IGFuZCBsaXN0IG1hbmlwdWxhdGlvbnMsIHRoZSB1c2Ugb2YKPj4+IHRoZSBwcmlvdHJlZSBpcyBk aXNhYmxlZCB3aGVuIHRoZXJlIGFyZSBubyBzY2hlZHVsZXJzIHRvIHVzZSBpdC4KPj4+Cj4+PiB2 MjogQ3JlYXRlIGEgZGVkaWNhdGVkIHNsYWIgZm9yIGk5MTVfZGVwZW5kZW5jeS4KPj4+ICAgIFJl bmFtZSB0aGUgbGlzdHMuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4+PiAtLS0KPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jICAgICAgICB8ICAgNyArLQo+Pj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgICAgIHwgICAxICsKPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICAgICB8ICAxNCArKy0KPj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYyAgICB8ICA5NiArKysrKysrKysrKysrKysrKysrLQo+Pj4gZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAgIHwgIDQwICsrKysrKysrLQo+Pj4gZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwgICAxICsKPj4+IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICAgMyArLQo+Pj4gZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgMTM1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggICAgfCAgIDMgKy0KPj4+IDkgZmlsZXMgY2hhbmdlZCwgMjgyIGluc2VydGlvbnMoKyksIDE4 IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+PiBp bmRleCAzY2I5NmQyNjBkZmIuLmRhYzQzNTY4MGU5OCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+Pj4gQEAgLTYzMSw4ICs2MzEsOSBAQCBzdGF0aWMgdm9pZCBwcmlu dF9yZXF1ZXN0KHN0cnVjdCBzZXFfZmlsZSAqbSwKPj4+IAkJCSAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpycSwKPj4+IAkJCSAgY29uc3QgY2hhciAqcHJlZml4KQo+Pj4gewo+Pj4gLQlz ZXFfcHJpbnRmKG0sICIlcyV4IFsleDoleF0gQCAlZDogJXNcbiIsIHByZWZpeCwKPj4+ICsJc2Vx X3ByaW50ZihtLCAiJXMleCBbJXg6JXhdIHByaW89JWQgQCAlZG1zOiAlc1xuIiwgcHJlZml4LAo+ Pj4gCQkgICBycS0+Z2xvYmFsX3NlcW5vLCBycS0+Y3R4LT5od19pZCwgcnEtPmZlbmNlLnNlcW5v LAo+Pj4gKwkJICAgcnEtPnByaW90cmVlLnByaW9yaXR5LAo+Pj4gCQkgICBqaWZmaWVzX3RvX21z ZWNzKGppZmZpZXMgLSBycS0+ZW1pdHRlZF9qaWZmaWVzKSwKPj4+IAkJICAgcnEtPnRpbWVsaW5l LT5jb21tb24tPm5hbWUpOwo+Pj4gfQo+Pj4gQEAgLTMyMTgsNiArMzIxOSw3IEBAIHN0YXRpYyBp bnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPj4+ Cj4+PiAJCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPj4+IAkJCXUzMiBwdHIsIHJlYWQs IHdyaXRlOwo+Pj4gKwkJCXN0cnVjdCByYl9ub2RlICpyYjsKPj4+Cj4+PiAJCQlzZXFfcHJpbnRm KG0sICJcdEV4ZWNsaXN0IHN0YXR1czogMHglMDh4ICUwOHhcbiIsCj4+PiAJCQkJICAgSTkxNV9S RUFEKFJJTkdfRVhFQ0xJU1RfU1RBVFVTX0xPKGVuZ2luZSkpLAo+Pj4gQEAgLTMyNTcsNyArMzI1 OSw4IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZv aWQgKnVudXNlZCkKPj4+IAkJCXJjdV9yZWFkX3VubG9jaygpOwo+Pj4KPj4+IAkJCXNwaW5fbG9j a19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+Pj4gLQkJCWxpc3RfZm9yX2VhY2hfZW50 cnkocnEsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLCBleGVjbGlzdF9saW5rKSB7Cj4+PiArCQkJ Zm9yIChyYiA9IGVuZ2luZS0+ZXhlY2xpc3RfZmlyc3Q7IHJiOyByYiA9IHJiX25leHQocmIpKSB7 Cj4+PiArCQkJCXJxID0gcmJfZW50cnkocmIsIHR5cGVvZigqcnEpLCBwcmlvdHJlZS5ub2RlKTsK Pj4+IAkJCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdFEgIik7Cj4+PiAJCQl9Cj4+PiAJCQlz cGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4+PiBpbmRleCA0NzM1YjQxNzcxMDAuLmU3OTAxNDcyMDlmMyAxMDA2NDQKPj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+IEBAIC0xNzkxLDYgKzE3OTEsNyBAQCBzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSB7Cj4+PiAJc3RydWN0IGttZW1fY2FjaGUgKm9iamVjdHM7Cj4+PiAJ c3RydWN0IGttZW1fY2FjaGUgKnZtYXM7Cj4+PiAJc3RydWN0IGttZW1fY2FjaGUgKnJlcXVlc3Rz Owo+Pj4gKwlzdHJ1Y3Qga21lbV9jYWNoZSAqZGVwZW5kZW5jaWVzOwo+Pj4KPj4+IAljb25zdCBz dHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW5mbzsKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPj4+IGluZGV4IGRmODAzZTgyZWIwNy4uYTRkYzJkYTIzMjNhIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+Pj4gQEAgLTI2OTMsMTAgKzI2OTMsMTEgQEAgc3RhdGljIHZvaWQg aTkxNV9nZW1fY2xlYW51cF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ Pj4KPj4+IAkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdz KTsKPj4+Cj4+PiAtCQlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4+ PiAJCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KGVuZ2luZS0+ZXhlY2xpc3RfcG9ydFswXS5yZXF1ZXN0 KTsKPj4+IAkJaTkxNV9nZW1fcmVxdWVzdF9wdXQoZW5naW5lLT5leGVjbGlzdF9wb3J0WzFdLnJl cXVlc3QpOwo+Pj4gCQltZW1zZXQoZW5naW5lLT5leGVjbGlzdF9wb3J0LCAwLCBzaXplb2YoZW5n aW5lLT5leGVjbGlzdF9wb3J0KSk7Cj4+PiArCQllbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlID0gUkJf Uk9PVDsKPj4+ICsJCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSBOVUxMOwo+Pj4KPj4+IAkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+Pj4g CX0KPj4+IEBAIC00NzU0LDEyICs0NzU1LDE4IEBAIGk5MTVfZ2VtX2xvYWRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+Pj4gCWlmICghZGV2X3ByaXYtPnJlcXVlc3RzKQo+Pj4gCQlnb3Rv IGVycl92bWFzOwo+Pj4KPj4+ICsJZGV2X3ByaXYtPmRlcGVuZGVuY2llcyA9IEtNRU1fQ0FDSEUo aTkxNV9kZXBlbmRlbmN5LAo+Pj4gKwkJCQkJICAgIFNMQUJfSFdDQUNIRV9BTElHTiB8Cj4+PiAr CQkJCQkgICAgU0xBQl9SRUNMQUlNX0FDQ09VTlQpOwo+Pj4gKwlpZiAoIWRldl9wcml2LT5kZXBl bmRlbmNpZXMpCj4+PiArCQlnb3RvIGVycl9yZXF1ZXN0czsKPj4+ICsKPj4+IAltdXRleF9sb2Nr KCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4+PiAJSU5JVF9MSVNUX0hFQUQoJmRldl9w cml2LT5ndC50aW1lbGluZXMpOwo+Pj4gCWVyciA9IGk5MTVfZ2VtX3RpbWVsaW5lX2luaXRfX2ds b2JhbChkZXZfcHJpdik7Cj4+PiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4+PiAJaWYgKGVycikKPj4+IC0JCWdvdG8gZXJyX3JlcXVlc3RzOwo+Pj4gKwkJZ290 byBlcnJfZGVwZW5kZW5jaWVzOwo+Pj4KPj4+IAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmNv bnRleHRfbGlzdCk7Cj4+PiAJSU5JVF9XT1JLKCZkZXZfcHJpdi0+bW0uZnJlZV93b3JrLCBfX2k5 MTVfZ2VtX2ZyZWVfd29yayk7Cj4+PiBAQCAtNDc4Nyw2ICs0Nzk0LDggQEAgaTkxNV9nZW1fbG9h ZF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+Pgo+Pj4gCXJldHVybiAwOwo+Pj4KPj4+ ICtlcnJfZGVwZW5kZW5jaWVzOgo+Pj4gKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPmRl cGVuZGVuY2llcyk7Cj4+PiBlcnJfcmVxdWVzdHM6Cj4+PiAJa21lbV9jYWNoZV9kZXN0cm95KGRl dl9wcml2LT5yZXF1ZXN0cyk7Cj4+PiBlcnJfdm1hczoKPj4+IEBAIC00ODAzLDYgKzQ4MTIsNyBA QCB2b2lkIGk5MTVfZ2VtX2xvYWRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+Pj4K Pj4+IAlXQVJOX09OKCFsbGlzdF9lbXB0eSgmZGV2X3ByaXYtPm1tLmZyZWVfbGlzdCkpOwo+Pj4K Pj4+ICsJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBlbmRlbmNpZXMpOwo+Pj4gCWtt ZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+cmVxdWVzdHMpOwo+Pj4gCWttZW1fY2FjaGVfZGVz dHJveShkZXZfcHJpdi0+dm1hcyk7Cj4+PiAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5v YmplY3RzKTsKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPj4+IGlu ZGV4IDkzZjc3ZGY5YmM1MS4uMjc4YjEwM2E0ZTk1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPj4+IEBAIC0xMTMsNiArMTEzLDgyIEBAIGk5MTVfZ2Vt X3JlcXVlc3RfcmVtb3ZlX2Zyb21fY2xpZW50KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKPj4+IAlzcGluX3VubG9jaygmZmlsZV9wcml2LT5tbS5sb2NrKTsKPj4+IH0KPj4+ Cj4+PiArc3RhdGljIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKgo+Pj4gK2k5MTVfZGVwZW5kZW5j eV9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPj4+ICt7Cj4+PiArCXJldHVy biBrbWVtX2NhY2hlX2FsbG9jKGk5MTUtPmRlcGVuZGVuY2llcywgR0ZQX0tFUk5FTCk7Cj4+PiAr fQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkCj4+PiAraTkxNV9kZXBlbmRlbmN5X2ZyZWUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4+PiArCQkgICAgIHN0cnVjdCBpOTE1X2RlcGVuZGVu Y3kgKmRlcCkKPj4+ICt7Cj4+PiArCWttZW1fY2FjaGVfZnJlZShpOTE1LT5kZXBlbmRlbmNpZXMs IGRlcCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkCj4+PiArX19pOTE1X3ByaW90cmVl X2FkZF9kZXBlbmRlbmN5KHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCwKPj4+ICsJCQkgICAgICAg c3RydWN0IGk5MTVfcHJpb3RyZWUgKnNpZ25hbCwKPj4+ICsJCQkgICAgICAgc3RydWN0IGk5MTVf ZGVwZW5kZW5jeSAqZGVwLAo+Pj4gKwkJCSAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKQo+Pj4g K3sKPj4+ICsJSU5JVF9MSVNUX0hFQUQoJmRlcC0+ZGZzX2xpbmspOwo+Pj4gKwlsaXN0X2FkZCgm ZGVwLT53YWl0X2xpbmssICZzaWduYWwtPndhaXRlcnNfbGlzdCk7Cj4+PiArCWxpc3RfYWRkKCZk ZXAtPnNpZ25hbF9saW5rLCAmcHQtPnNpZ25hbGVyc19saXN0KTsKPj4+ICsJZGVwLT5zaWduYWxl ciA9IHNpZ25hbDsKPj4+ICsJZGVwLT5mbGFncyA9IGZsYWdzOwo+Pj4gK30KPj4+ICsKPj4+ICtz dGF0aWMgaW50Cj4+PiAraTkxNV9wcmlvdHJlZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKPj4+ICsJCQkgICAgIHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCwK Pj4+ICsJCQkgICAgIHN0cnVjdCBpOTE1X3ByaW90cmVlICpzaWduYWwpCj4+PiArewo+Pj4gKwlz dHJ1Y3QgaTkxNV9kZXBlbmRlbmN5ICpkZXA7Cj4+PiArCj4+PiArCWRlcCA9IGk5MTVfZGVwZW5k ZW5jeV9hbGxvYyhpOTE1KTsKPj4+ICsJaWYgKCFkZXApCj4+PiArCQlyZXR1cm4gLUVOT01FTTsK Pj4+ICsKPj4+ICsJX19pOTE1X3ByaW90cmVlX2FkZF9kZXBlbmRlbmN5KHB0LCBzaWduYWwsIGRl cCwgSTkxNV9ERVBFTkRFTkNZX0FMTE9DKTsKPj4+ICsJcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+ Pj4gK3N0YXRpYyB2b2lkCj4+PiAraTkxNV9wcmlvdHJlZV9maW5pKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCBzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQpCj4+PiArewo+Pj4gKwlzdHJ1 Y3QgaTkxNV9kZXBlbmRlbmN5ICpkZXAsICpuZXh0Owo+Pj4gKwo+Pj4gKwlHRU1fQlVHX09OKCFS Ql9FTVBUWV9OT0RFKCZwdC0+bm9kZSkpOwo+Pj4gKwo+Pj4gKwkvKiBFdmVyeW9uZSB3ZSBkZXBl bmRlZCB1cG9uICh0aGUgZmVuY2VzIHdlIHdhaXQgdG8gYmUgc2lnbmFsZWQpCj4+PiArCSAqIHNo b3VsZCByZXRpcmUgYmVmb3JlIHVzIGFuZCByZW1vdmUgdGhlbXNlbHZlcyBmcm9tIG91ciBsaXN0 Lgo+Pj4gKwkgKiBIb3dldmVyLCByZXRpcmVtZW50IGlzIHJ1biBpbmRlcGVuZGVudGx5IG9uIGVh Y2ggdGltZWxpbmUgYW5kCj4+PiArCSAqIHNvIHdlIG1heSBiZSBjYWxsZWQgb3V0LW9mLW9yZGVy Lgo+Pj4gKwkgKi8KPj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlcCwgbmV4dCwgJnB0 LT5zaWduYWxlcnNfbGlzdCwgc2lnbmFsX2xpbmspIHsKPj4+ICsJCWxpc3RfZGVsKCZkZXAtPndh aXRfbGluayk7Cj4+PiArCQlpZiAoZGVwLT5mbGFncyAmIEk5MTVfREVQRU5ERU5DWV9BTExPQykK Pj4+ICsJCQlpOTE1X2RlcGVuZGVuY3lfZnJlZShpOTE1LCBkZXApOwo+Pj4gKwl9Cj4+PiArCj4+ PiArCS8qIFJlbW92ZSBvdXJzZWx2ZXMgZnJvbSBldmVyeW9uZSB3aG8gZGVwZW5kcyB1cG9uIHVz ICovCj4+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXAsIG5leHQsICZwdC0+d2FpdGVy c19saXN0LCB3YWl0X2xpbmspIHsKPj4+ICsJCWxpc3RfZGVsKCZkZXAtPnNpZ25hbF9saW5rKTsK Pj4+ICsJCWlmIChkZXAtPmZsYWdzICYgSTkxNV9ERVBFTkRFTkNZX0FMTE9DKQo+Pj4gKwkJCWk5 MTVfZGVwZW5kZW5jeV9mcmVlKGk5MTUsIGRlcCk7Cj4+PiArCX0KPj4+ICt9Cj4+PiArCj4+PiAr c3RhdGljIHZvaWQKPj4+ICtpOTE1X3ByaW90cmVlX2luaXQoc3RydWN0IGk5MTVfcHJpb3RyZWUg KnB0KQo+Pj4gK3sKPj4+ICsJSU5JVF9MSVNUX0hFQUQoJnB0LT5zaWduYWxlcnNfbGlzdCk7Cj4+ PiArCUlOSVRfTElTVF9IRUFEKCZwdC0+d2FpdGVyc19saXN0KTsKPj4+ICsJUkJfQ0xFQVJfTk9E RSgmcHQtPm5vZGUpOwo+Pj4gKwlwdC0+cHJpb3JpdHkgPSBJTlRfTUlOOwo+Pgo+PiBOb3QgSTkx NV9QUklPUklUWV9NSU4/IE9yIGl0IGhhcyB0byBiZSBzbWFsbGVyPyBJbiB3aGljaCBjYXNlCj4+ IEJVSUxEX0JVR19PTihJTlRfTUlOID49IEk5MTVfUFJJT1JJVFlfTUlOKT8KPgo+IEkgd2FudGVk IGl0IHRvIGJlIHNtYWxsZXIgdGhhbiBtaW4gc28gdGhhdCB0aGUgdW5zZXQgdmFsdWUgd2FzIGNs ZWFyIGluCj4gYW55IGRlYnVnIHRyYWNlLgo+Cj4+PiArCQlyYiA9IHJiX25leHQocmIpOwo+Pj4g KwkJcmJfZXJhc2UoJmN1cnNvci0+cHJpb3RyZWUubm9kZSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVl dWUpOwo+Pj4gKwkJUkJfQ0xFQVJfTk9ERSgmY3Vyc29yLT5wcmlvdHJlZS5ub2RlKTsKPj4+ICsJ CWN1cnNvci0+cHJpb3RyZWUucHJpb3JpdHkgPSBJTlRfTUFYOwo+Pgo+PiBXaGF0IGRvZXMgc2V0 dGluZyB0aGUgcHJpb3JpdHkgdG8gSU5UX01BWCBoZXJlIGRvPwo+Cj4gSXQgaXMgdXNlZCBhcyBh IHNpZ25hbCB0aGF0IHRoZSByZXF1ZXN0IGhhcyBiZWVuIHNlbnQgdG8gaGFyZHdhcmUKPiBib3Ro IGFzIGEgc2hvcnRjaXJjdWl0IGZvciB0aGUgZGZzIGFuZCBzbyB0aGF0IGl0IGlzIGNsZWFyIGlu IHRoZQo+IGRlYnVnZnMuCj4KPj4+ICtzdGF0aWMgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4+ PiArcHRfbG9ja19lbmdpbmUoc3RydWN0IGk5MTVfcHJpb3RyZWUgKnB0LCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpsb2NrZWQpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Cj4+PiArCj4+PiArCWVuZ2luZSA9IGNvbnRhaW5lcl9vZihwdCwKPj4+ICsJCQkgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsCj4+PiArCQkJICAgICAgcHJpb3RyZWUpLT5l bmdpbmU7Cj4+PiArCWlmIChlbmdpbmUgIT0gbG9ja2VkKSB7Cj4+PiArCQlpZiAobG9ja2VkKQo+ Pj4gKwkJCXNwaW5fdW5sb2NrX2lycSgmbG9ja2VkLT50aW1lbGluZS0+bG9jayk7Cj4+PiArCQlz cGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPj4+ICsJfQo+Pj4gKwo+Pj4g KwlyZXR1cm4gZW5naW5lOwo+Pj4gK30KPj4KPj4gSGEsIGN1dGUuIDopCj4+Cj4+PiArCj4+PiAr c3RhdGljIHZvaWQgZXhlY2xpc3RzX3NjaGVkdWxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwgaW50IHByaW8pCj4+PiArewo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSBOVUxMOwo+Pj4gKwlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5ICpkZXAsICpwOwo+ Pj4gKwlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IHN0YWNrOwo+Pj4gKwlMSVNUX0hFQUQoZGZzKTsK Pj4+ICsKPj4+ICsJaWYgKHByaW8gPD0gUkVBRF9PTkNFKHJlcXVlc3QtPnByaW90cmVlLnByaW9y aXR5KSkKPj4+ICsJCXJldHVybjsKPj4+ICsKPj4+ICsJLyogTmVlZCBCS0wgaW4gb3JkZXIgdG8g dXNlIHRoZSB0ZW1wb3JhcnkgbGluayBpbnNpZGUgaTkxNV9kZXBlbmRlbmN5ICovCj4+PiArCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJnJlcXVlc3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+Pgo+ PiBDb3VsZCB1c2UgYSBuZXcgaTkxNSBzdWJtaXNzaW9uIGxvY2ssIGJ1dCBJIHN1cHBvc2UgdGhp cyBpcyBPSyB0bwo+PiBzdGFydCB3aXRoLgo+Pgo+Pj4gKwo+Pj4gKwlzdGFjay5zaWduYWxlciA9 ICZyZXF1ZXN0LT5wcmlvdHJlZTsKPj4+ICsJbGlzdF9hZGQoJnN0YWNrLmRmc19saW5rLCAmZGZz KTsKPj4+ICsKPj4KPj4gVGFkYSwgb250byB0aGUgREZTIHdoaWNoIEkgYW0gbm90IGZhbWlsaWFy IHdpdGggLSBidXQgdGhlcmUncyBhbHdheXMKPj4gV2lraXBlZGlhLiA6KQo+Pgo+Pj4gKwkvKiBS ZWN1cnNpdmVseSBidW1wIGFsbCBkZXBlbmRlbnQgcHJpb3JpdGllcyB0byBtYXRjaCB0aGUgbmV3 IHJlcXVlc3QgKi8KPj4+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGRlcCwgcCwgJmRmcywg ZGZzX2xpbmspIHsKPj4+ICsJCXN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCA9IGRlcC0+c2lnbmFs ZXI7Cj4+PiArCj4+PiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHAsICZwdC0+c2lnbmFsZXJzX2xp c3QsIHNpZ25hbF9saW5rKQo+Pj4gKwkJCWlmIChwcmlvID4gUkVBRF9PTkNFKHAtPnNpZ25hbGVy LT5wcmlvcml0eSkpCj4+PiArCQkJCWxpc3RfbW92ZV90YWlsKCZwLT5kZnNfbGluaywgJmRmcyk7 Cj4+PiArCj4+PiArCQlwID0gbGlzdF9maXJzdF9lbnRyeSgmZGVwLT5kZnNfbGluaywgdHlwZW9m KCpwKSwgZGZzX2xpbmspOwo+Pgo+PiBUaGlzIHdhcyBmdW4uIDopCgpNYXliZSBjbGVhcmVyIGFz OgoKcCA9IGxpc3RfbmV4dF9lbnRyeShkZXAsIHR5cGVvZigqcCksIGRmc19saW5rKSA/Cgo+Pgo+ Pj4gKwkJaWYgKCFSQl9FTVBUWV9OT0RFKCZwdC0+bm9kZSkpCj4+PiArCQkJY29udGludWU7Cj4+ PiArCj4+PiArCQllbmdpbmUgPSBwdF9sb2NrX2VuZ2luZShwdCwgZW5naW5lKTsKPj4+ICsKPj4+ ICsJCS8qIElmIGl0IGlzIG5vdCBhbHJlYWR5IGluIHRoZSByYnRyZWUsIHdlIGNhbiB1cGRhdGUg dGhlCj4+PiArCQkgKiBwcmlvcml0eSBpbnBsYWNlIGFuZCBza2lwIG92ZXIgaXQgKGFuZCBpdHMg ZGVwZW5kZW5jaWVzKQo+Pj4gKwkJICogaWYgaXQgaXMgcmVmZXJlbmNlZCBhZ2FpbiBhcyB3ZSBk ZXNjZW5kIHRoZSBkZnMuCj4+PiArCQkgKi8KPj4KPj4gQXJlIHlvdSBzdXJlIGl0IGlzIE9LIHRv IGlnbm9yZSB0aGUgZGVwZW5kZW5jaWVzIGZvciBuZXcgcmVxdWVzdHM/IEkKPj4gZG9uJ3Qgc2Vl IHdoeSBpdCB3b3VsZCBiZS4KPgo+IFdlIGRvbid0IGlnbm9yZSB0aGUgZGVwZW5kZW5jaWVzIGZv ciBuZXcgcmVxdWVzdHMsIHRoZXkgaGF2ZSBhbHJlYWR5Cj4gYmVlbiBhZGRlZCB0byB0aGUgbGlz dCB0byBiZSBwcm9jZXNzZWQuIFdoYXQgd2UgYXJlIGNvbnNpZGVyaW5nIGhlcmUgaXMKPiB3aGF0 IGhhcHBlbnMgaWYgdGhpcyByZXF1ZXN0IGlzIGEgZGVwZW5kZW5jeSBvZiBhIHN1YnNlcXVlbnQg cmVxdWVzdCBpbgo+IHRoZSBsaXN0LiBNeSBzdGF0ZW1lbnQgaXMgdGhhdCBzaW5jZSB3ZSBhcmUg bm90IGluIHRoZSByYnRyZWUsIHdlIGFyZQo+IG5vdCByZWFkeSB0byBiZSBydW4gKGFuZCBpbiB0 dXJuIG5laXRoZXIgd2lsbCBiZSB0aGUgZm9sbG93aW5nIHJlcXVlc3QKPiB0aGF0IGRlcGVuZGVk IHVwb24gdGhpcyByZXF1ZXN0KS4gQXMgd2UgYXJlIG5vdCBpbiB0aGUgcmJ0cmVlLCB3ZSBkbyBu b3QKPiBuZWVkIHRvIHJlb3JkZXIgdGhlIHJidHJlZSB0byBlbnN1cmUgdGhlIGZpZm8gb3JkZXJp bmcgd2l0aCBvdXIKPiBkZXBlbmRlbmNpZXMuCgpZZXMgSSd2ZSBsb3N0IGNvbnRleHQgd2hpbGUg bG9va2luZyBhdCBpdCwgeW91IGFyZSByaWdodC4KCj4+PiArCQlpZiAocHJpbyA+IHB0LT5wcmlv cml0eSAmJiBSQl9FTVBUWV9OT0RFKCZwdC0+bm9kZSkpIHsKPj4KPj4gSXNuJ3QgdGhlIG5vZGUg Z3VhcmFudGVlZCB0byBiZSBlbXB0eSBmcm9tIHRoZSBlYXJsaWVyIHRlc3QgYW5kIGNvbnRpbnVl Pwo+Cj4gV2UgY2hlY2tlZCBiZWZvcmUgd2Ugd2VyZSBjZXJ0YWluIHdlIGhhZCB0aGUgc3Bpbmxv Y2suCgpJIG1pc3NlZCB0aGF0IGFzIHdlbGwsIG1ha2VzIHNlbnNlLgoKPgo+Pj4gKwkJCXB0LT5w cmlvcml0eSA9IHByaW87Cj4+PiArCQkJbGlzdF9kZWxfaW5pdCgmZGVwLT5kZnNfbGluayk7Cj4+ PiArCQl9Cj4+PiArCX0KPj4+ICsKPj4+ICsJLyogRmlmbyBhbmQgZGVwdGgtZmlyc3QgcmVwbGFj ZW1lbnQgZW5zdXJlIG91ciBkZXBzIGV4ZWN1dGUgYmVmb3JlIHVzICovCj4+PiArCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZV9yZXZlcnNlKGRlcCwgcCwgJmRmcywgZGZzX2xpbmspIHsKPj4+ICsJ CXN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCA9IGRlcC0+c2lnbmFsZXI7Cj4+PiArCj4+PiArCQlJ TklUX0xJU1RfSEVBRCgmZGVwLT5kZnNfbGluayk7Cj4+PiArCj4+PiArCQllbmdpbmUgPSBwdF9s b2NrX2VuZ2luZShwdCwgZW5naW5lKTsKPj4+ICsKPj4+ICsJCWlmIChwcmlvIDw9IHB0LT5wcmlv cml0eSkKPj4+ICsJCQljb250aW51ZTsKPj4KPj4gSG93IHdvdWxkIHRoZXNlIHByaW9yaXRpZXMg ZW5kIHVwIGluIHRoZSBsaXN0PyBUaGUgZmlyc3QgbG9vcCBza2lwcwo+PiBvdmVyIHRoZW0uCj4K PiBXZSBrZWVwIG9uIGRyb3BwaW5nIHRoZSBsb2NrLgoKWWVhaCwgbG9va3MgT0sgdG8gbWUuCgpS ZWdhcmRzLAoKVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK