From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 27/39] drm/i915: Add sync wait support to scheduler Date: Tue, 21 Jul 2015 11:59:58 +0200 Message-ID: <20150721095958.GJ16722@phenom.ffwll.local> References: <1437143628-6329-1-git-send-email-John.C.Harrison@Intel.com> <1437143628-6329-28-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by gabe.freedesktop.org (Postfix) with ESMTPS id C26016E489 for ; Tue, 21 Jul 2015 02:57:20 -0700 (PDT) Received: by wibxm9 with SMTP id xm9so115404715wib.0 for ; Tue, 21 Jul 2015 02:57:19 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1437143628-6329-28-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdWwgMTcsIDIwMTUgYXQgMDM6MzM6MzZQTSArMDEwMCwgSm9obi5DLkhhcnJpc29u QEludGVsLmNvbSB3cm90ZToKPiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25A SW50ZWwuY29tPgo+IAo+IFRoZXJlIGlzIGEgc3luYyBmcmFtZXdvcmsgdG8gYWxsb3cgd29yayBm b3IgbXVsdGlwbGUgaW5kZXBlbmRlbnQKPiBzeXN0ZW1zIHRvIGJlIHN5bmNocm9uaXNlZCB3aXRo IGVhY2ggb3RoZXIgYnV0IHdpdGhvdXQgc3RhbGxpbmcKPiB0aGUgQ1BVIHdoZXRoZXIgaW4gdGhl IGFwcGxpY2F0aW9uIG9yIHRoZSBkcml2ZXIuIFRoaXMgcGF0Y2ggYWRkcwo+IHN1cHBvcnQgZm9y IHRoaXMgZnJhbWV3b3JrIHRvIHRoZSBHUFUgc2NoZWR1bGVyLgo+IAo+IEJhdGNoIGJ1ZmZlcnMg Y2FuIG5vdyBoYXZlIHN5bmMgZnJhbWV3b3JrIGZlbmNlIG9iamVjdHMgYXNzb2NpYXRlZCB3aXRo Cj4gdGhlbS4gVGhlIHNjaGVkdWxlciB3aWxsIGxvb2sgYXQgdGhpcyBmZW5jZSB3aGVuIGRlY2lk aW5nIHdoYXQgdG8KPiBzdWJtaXQgbmV4dCB0byB0aGUgaGFyZHdhcmUuIElmIHRoZSBmZW5jZSBp cyBvdXRzdGFuZGluZyB0aGVuIHRoYXQKPiBiYXRjaCBidWZmZXIgd2lsbCBiZSBwYXNzZWQgb3Zl ciBpbiBwcmVmZXJlbmNlIG9mIG9uZSB0aGF0IGlzIHJlYWR5IHRvCj4gcnVuLiBJZiBubyBvdGhl ciBiYXRjaGVzIGFyZSByZWFkeSB0aGVuIHRoZSBzY2hlZHVsZXIgd2lsbCBxdWV1ZSBhbgo+IGFz eW5jaHJvbm91cyBjYWxsYmFjayB0byBiZSB3b2tlbiB1cCB3aGVuIHRoZSBmZW5jZSBoYXMgYmVl bgo+IHNpZ25hbGxlZC4gVGhlIGNhbGxiYWNrIHdpbGwgd2FrZSB0aGUgc2NoZWR1bGVyIGFuZCBz dWJtaXQgdGhlIG5vdwo+IHJlYWR5IGJhdGNoIGJ1ZmZlci4KPiAKPiBGb3I6IFZJWi0xNTg3Cj4g U2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4K Ck5vdCBxdWl0ZSB3aGF0IEkgZXhwZWN0ZWQuIE15IG1vdGl2YXRpb24gYmVoaW5kIG1vdmluZyBp OTE1IHRvIHN0cnVjdApmZW5jZSBpcyB0aGF0IHRoZSBzY2hlZHVsZXIgd291bGQgaW50ZXJuYWxs eSB1c2Ugb25seSBzdHJ1Y3QgZmVuY2UgZm9yCnN5bmNocm9uaXphdGlvbi4gVGhlbiBhZGRpbmcg c3luY3B0IHN1cHBvcnQgd291bGRuJ3QgbmVlZCBhbnkgY2hhbmdlcwpyZWFsbHkgaW4gdGhlIGlu dGVybmFscyBzaW5jZSB0aGF0J3MganVzdCBhbm90aGVyIHNvdXJjZSBvZiBzdHJ1Y3QgZmVuY2Vz CnRvIHRha2UgaW50byBhY2NvdW50LgoKQWxzbyBub3RlIHRoYXQgc3RydWN0IGZlbmNlIGFsbG93 cyB5b3UgdG8gcmVnaXN0ZXIganVzdCBhIGNhbGxiYWNrICh3b24ndAp3b3JrIHdpdGggdGhlIGk5 MTUgZmVuY2VzIHlvdSd2ZSBkb25lIHRob3VnaCksIHdoaWNoIG1lYW5zIHlvdSBjb3VsZCBqdXN0 CnJlZ2lzdGVyIGNhbGxiYWNrcyBmb3IgZXZlcnl0aGluZyBpbnN0ZWFkIG9mIHdhaXRpbmcgaW4g cHJvY2VzcyBjb250ZXh0LgoKQWxzbyBJIGd1ZXNzIHNvbWUgZ2VuZXJpYyBmZW5jZSBoZWxwZXIg dG8gYWdncmVnYXRlIGZlbmNlcyB3b3VsZCBiZQp1c2VmdWwsIHRoYXQgc2hvdWxkIGFsc28gc2lt cGxpZnkgdGhlIGNvZGUgaW4gdGhlIGRlcGVuY3kgY2FsY3VsYXRpb24uCi1EYW5pZWwKCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDEgKwo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jIHwgMTYzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIu aCB8ICAgNiArKwo+ICAzIGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCspLCA1IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDEyYjQ5ODYuLmI1Njg0 MzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMTcwMyw2ICsxNzAzLDcgQEAg c3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgewo+ICAJdWludDMyX3QgICAgICAgICAgICAg ICAgICAgICAgICBiYXRjaF9vYmpfdm1fb2Zmc2V0Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9j cyAgICAgICAgICAqcmluZzsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICAgICAgKmJh dGNoX29iajsKPiArCXN0cnVjdCBzeW5jX2ZlbmNlICAgICAgICAgICAgICAgKmZlbmNlX3dhaXQ7 Cj4gIAlzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAgICAgICAgICAgICpjbGlwcmVjdHM7Cj4gIAl1aW50 MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGluc3RwX21hc2s7Cj4gIAlpbnQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGluc3RwX21vZGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Nj aGVkdWxlci5jCj4gaW5kZXggYzcxMzlmOC4uMTk1NzdjOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zY2hlZHVsZXIuYwo+IEBAIC0yNSw2ICsyNSw3IEBACj4gICNpbmNsdWRlICJpOTE1 X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICNpbmNsdWRlICJpOTE1X3NjaGVk dWxlci5oIgo+ICsjaW5jbHVkZSA8Li4vZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5oPgo+ ICAKPiAgc3RhdGljIGludCAgICAgICAgIGk5MTVfc2NoZWR1bGVyX2ZseV9ub2RlKHN0cnVjdCBp OTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqbm9kZSk7Cj4gIHN0YXRpYyBpbnQgICAgICAgICBp OTE1X3NjaGVkdWxlcl9yZW1vdmVfZGVwZW5kZW50KHN0cnVjdCBpOTE1X3NjaGVkdWxlciAqc2No ZWR1bGVyLAo+IEBAIC0xMDAsNiArMTAxLDkgQEAgaW50IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2V4 ZWNidWZmZXIoc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpxZSkKPiAgCj4gIAkJ cWUtPnNjaGVkdWxlcl9pbmRleCA9IHNjaGVkdWxlci0+aW5kZXgrKzsKPiAgCj4gKwkJV0FSTl9P TihxZS0+cGFyYW1zLmZlbmNlX3dhaXQgJiYKPiArCQkJKGF0b21pY19yZWFkKCZxZS0+cGFyYW1z LmZlbmNlX3dhaXQtPnN0YXR1cykgPT0gMCkpOwo+ICsKPiAgCQlpbnRlbF9yaW5nX3Jlc2VydmVk X3NwYWNlX2NhbmNlbChxZS0+cGFyYW1zLnJlcXVlc3QtPnJpbmdidWYpOwo+ICAKPiAgCQlzY2hl ZHVsZXItPmZsYWdzW3FlLT5wYXJhbXMucmluZy0+aWRdIHw9IGk5MTVfc2Zfc3VibWl0dGluZzsK PiBAQCAtMTM0LDYgKzEzOCwxMSBAQCBpbnQgaTkxNV9zY2hlZHVsZXJfcXVldWVfZXhlY2J1ZmZl cihzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKnFlKQo+ICAJCWlmIChxZS0+cGFy YW1zLmRpc3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpCj4gIAkJCWk5MTVfZ2Vt X2V4ZWNidWZmX3JlbGVhc2VfYmF0Y2hfb2JqKHFlLT5wYXJhbXMuYmF0Y2hfb2JqKTsKPiAgCj4g KyNpZmRlZiBDT05GSUdfU1lOQwo+ICsJCWlmIChxZS0+cGFyYW1zLmZlbmNlX3dhaXQpCj4gKwkJ CXN5bmNfZmVuY2VfcHV0KHFlLT5wYXJhbXMuZmVuY2Vfd2FpdCk7Cj4gKyNlbmRpZgo+ICsKPiAg CQlyZXR1cm4gMDsKPiAgCX0KPiAgCj4gQEAgLTYyNSw2ICs2MzQsMTEgQEAgc3RhdGljIGludCBp OTE1X3NjaGVkdWxlcl9yZW1vdmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgCQlu b2RlID0gbGlzdF9maXJzdF9lbnRyeSgmcmVtb3ZlLCB0eXBlb2YoKm5vZGUpLCBsaW5rKTsKPiAg CQlsaXN0X2RlbCgmbm9kZS0+bGluayk7Cj4gIAo+ICsjaWZkZWYgQ09ORklHX1NZTkMKPiArCQlp ZiAobm9kZS0+cGFyYW1zLmZlbmNlX3dhaXQpCj4gKwkJCXN5bmNfZmVuY2VfcHV0KG5vZGUtPnBh cmFtcy5mZW5jZV93YWl0KTsKPiArI2VuZGlmCj4gKwo+ICAJCS8qIEZyZWUgdXAgYWxsIHRoZSBE Uk0gb2JqZWN0IHJlZmVyZW5jZXMgKi8KPiAgCQlpOTE1X2dlbV9zY2hlZHVsZXJfY2xlYW5fbm9k ZShub2RlKTsKPiAgCj4gQEAgLTg0NSwxNyArODU5LDEwMCBAQCBzdGF0aWMgaW50IGk5MTVfc2No ZWR1bGVyX3N1Ym1pdF9tYXhfcHJpb3JpdHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK PiAgCXJldHVybiBjb3VudDsKPiAgfQo+ICAKPiArI2lmZGVmIENPTkZJR19TWU5DCj4gKy8qIFVz ZSBhIHByaXZhdGUgc3RydWN0dXJlIGluIG9yZGVyIHRvIHBhc3MgdGhlICdkZXYnIHBvaW50ZXIg dGhyb3VnaCAqLwo+ICtzdHJ1Y3QgaTkxNV9zeW5jX2ZlbmNlX3dhaXRlciB7Cj4gKwlzdHJ1Y3Qg c3luY19mZW5jZV93YWl0ZXIgc2Z3Owo+ICsJc3RydWN0IGRybV9kZXZpY2UJICpkZXY7Cj4gKwlz dHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKm5vZGU7Cj4gK307Cj4gKwo+ICtzdGF0 aWMgdm9pZCBpOTE1X3NjaGVkdWxlcl93YWl0X2ZlbmNlX3NpZ25hbGVkKHN0cnVjdCBzeW5jX2Zl bmNlICpmZW5jZSwKPiArCQkJCSAgICAgICBzdHJ1Y3Qgc3luY19mZW5jZV93YWl0ZXIgKndhaXRl cikKPiArewo+ICsJc3RydWN0IGk5MTVfc3luY19mZW5jZV93YWl0ZXIgKmk5MTVfd2FpdGVyOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gTlVMTDsKPiArCj4gKwlpOTE1 X3dhaXRlciA9IGNvbnRhaW5lcl9vZih3YWl0ZXIsIHN0cnVjdCBpOTE1X3N5bmNfZmVuY2Vfd2Fp dGVyLCBzZncpOwo+ICsJZGV2X3ByaXYgICAgPSAoaTkxNV93YWl0ZXIgJiYgaTkxNV93YWl0ZXIt PmRldikgPwo+ICsJCQkJCSAgICBpOTE1X3dhaXRlci0+ZGV2LT5kZXZfcHJpdmF0ZSA6IE5VTEw7 Cj4gKwo+ICsJLyoKPiArCSAqIE5COiBUaGUgY2FsbGJhY2sgaXMgZXhlY3V0ZWQgYXQgaW50ZXJy dXB0IHRpbWUsIHRodXMgaXQgY2FuIG5vdAo+ICsJICogY2FsbCBfc3VibWl0KCkgZGlyZWN0bHku IEl0IG11c3QgZ28gdmlhIHRoZSBkZWxheWVkIHdvcmsgaGFuZGxlci4KPiArCSAqLwo+ICsJaWYg KGRldl9wcml2KSB7Cj4gKwkJc3RydWN0IGk5MTVfc2NoZWR1bGVyICAgKnNjaGVkdWxlcjsKPiAr CQl1bnNpZ25lZCBsb25nICAgICAgICAgICBmbGFnczsKPiArCj4gKwkJc2NoZWR1bGVyID0gZGV2 X3ByaXYtPnNjaGVkdWxlcjsKPiArCj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnNjaGVkdWxlci0+ bG9jaywgZmxhZ3MpOwo+ICsJCWk5MTVfd2FpdGVyLT5ub2RlLT5mbGFncyAmPSB+aTkxNV9xZWZf ZmVuY2Vfd2FpdGluZzsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2hlZHVsZXItPmxv Y2ssIGZsYWdzKTsKPiArCj4gKwkJcXVldWVfd29yayhkZXZfcHJpdi0+d3EsICZkZXZfcHJpdi0+ bW0uc2NoZWR1bGVyX3dvcmspOwo+ICsJfQo+ICsKPiArCWtmcmVlKHdhaXRlcik7Cj4gK30KPiAr Cj4gK3N0YXRpYyBib29sIGk5MTVfc2NoZWR1bGVyX2FzeW5jX2ZlbmNlX3dhaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiArCQkJCQkgICAgc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2Vu dHJ5ICpub2RlKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9zeW5jX2ZlbmNlX3dhaXRlcgkqZmVuY2Vf d2FpdGVyOwo+ICsJc3RydWN0IHN5bmNfZmVuY2UJCSpmZW5jZSA9IG5vZGUtPnBhcmFtcy5mZW5j ZV93YWl0Owo+ICsJaW50CQkJCXNpZ25hbGVkOwo+ICsJYm9vbAkJCQlzdWNjZXNzID0gdHJ1ZTsK PiArCj4gKwlpZiAoKG5vZGUtPmZsYWdzICYgaTkxNV9xZWZfZmVuY2Vfd2FpdGluZykgPT0gMCkK PiArCQlub2RlLT5mbGFncyB8PSBpOTE1X3FlZl9mZW5jZV93YWl0aW5nOwo+ICsJZWxzZQo+ICsJ CXJldHVybiB0cnVlOwo+ICsKPiArCWlmIChmZW5jZSA9PSBOVUxMKQo+ICsJCXJldHVybiBmYWxz ZTsKPiArCj4gKwlzaWduYWxlZCA9IGF0b21pY19yZWFkKCZmZW5jZS0+c3RhdHVzKTsKPiArCWlm ICghc2lnbmFsZWQpIHsKPiArCQlmZW5jZV93YWl0ZXIgPSBrbWFsbG9jKHNpemVvZigqZmVuY2Vf d2FpdGVyKSwgR0ZQX0tFUk5FTCk7Cj4gKwkJaWYgKCFmZW5jZV93YWl0ZXIpIHsKPiArCQkJc3Vj Y2VzcyA9IGZhbHNlOwo+ICsJCQlnb3RvIGVuZDsKPiArCQl9Cj4gKwo+ICsJCXN5bmNfZmVuY2Vf d2FpdGVyX2luaXQoJmZlbmNlX3dhaXRlci0+c2Z3LAo+ICsJCQkJaTkxNV9zY2hlZHVsZXJfd2Fp dF9mZW5jZV9zaWduYWxlZCk7Cj4gKwkJZmVuY2Vfd2FpdGVyLT5ub2RlID0gbm9kZTsKPiArCQlm ZW5jZV93YWl0ZXItPmRldiA9IGRldjsKPiArCj4gKwkJaWYgKHN5bmNfZmVuY2Vfd2FpdF9hc3lu YyhmZW5jZSwgJmZlbmNlX3dhaXRlci0+c2Z3KSkgewo+ICsJCQkvKiBhbiBlcnJvciBvY2N1cnJl ZCwgdXN1YWxseSB0aGlzIGlzIGJlY2F1c2UgdGhlCj4gKwkJCSAqIGZlbmNlIHdhcyBzaWduYWxl ZCBhbHJlYWR5ICovCj4gKwkJCXNpZ25hbGVkID0gYXRvbWljX3JlYWQoJmZlbmNlLT5zdGF0dXMp Owo+ICsJCQlpZiAoIXNpZ25hbGVkKSB7Cj4gKwkJCQlzdWNjZXNzID0gZmFsc2U7Cj4gKwkJCQln b3RvIGVuZDsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArZW5kOgo+ICsJcmV0dXJuIHN1Y2Nlc3M7 Cj4gK30KPiArI2VuZGlmCj4gKwo+ICBzdGF0aWMgaW50IGk5MTVfc2NoZWR1bGVyX3BvcF9mcm9t X3F1ZXVlX2xvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICAJCQkJICAgIHN0 cnVjdCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeSAqKnBvcF9ub2RlLAo+ICAJCQkJICAgIHVu c2lnbmVkIGxvbmcgKmZsYWdzKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgICAg ICAgICAgICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaTkx NV9zY2hlZHVsZXIgICAgICAgICAgICAgICpzY2hlZHVsZXIgPSBkZXZfcHJpdi0+c2NoZWR1bGVy Owo+ICsJc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICAqYmVzdF93YWl0LCAqZmVu Y2Vfd2FpdCA9IE5VTEw7Cj4gIAlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgICpi ZXN0Owo+ICAJc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICAqbm9kZTsKPiAgCWlu dCAgICAgcmV0Owo+ICAJaW50ICAgICBpOwo+IC0JYm9vbAlhbnlfcXVldWVkOwo+ICsJYm9vbAlz aWduYWxsZWQsIGFueV9xdWV1ZWQ7Cj4gIAlib29sCWhhc19sb2NhbCwgaGFzX3JlbW90ZSwgb25s eV9yZW1vdGU7Cj4gIAo+ICAJKnBvcF9ub2RlID0gTlVMTDsKPiBAQCAtODYzLDEzICs5NjAsMjUg QEAgc3RhdGljIGludCBpOTE1X3NjaGVkdWxlcl9wb3BfZnJvbV9xdWV1ZV9sb2NrZWQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCj4gIAlhbnlfcXVldWVkID0gZmFsc2U7Cj4gIAlv bmx5X3JlbW90ZSA9IGZhbHNlOwo+ICsJYmVzdF93YWl0ID0gTlVMTDsKPiAgCWJlc3QgPSBOVUxM Owo+ICAKPiArI2lmbmRlZiBDT05GSUdfU1lOQwo+ICsJc2lnbmFsbGVkID0gdHJ1ZTsKPiArI2Vu ZGlmCj4gKwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmc2NoZWR1bGVyLT5ub2RlX3F1 ZXVlW3JpbmctPmlkXSwgbGluaykgewo+ICAJCWlmICghSTkxNV9TUVNfSVNfUVVFVUVEKG5vZGUp KQo+ICAJCQljb250aW51ZTsKPiAgCQlhbnlfcXVldWVkID0gdHJ1ZTsKPiAgCj4gKyNpZmRlZiBD T05GSUdfU1lOQwo+ICsJCWlmIChub2RlLT5wYXJhbXMuZmVuY2Vfd2FpdCkKPiArCQkJc2lnbmFs bGVkID0gYXRvbWljX3JlYWQoJm5vZGUtPnBhcmFtcy5mZW5jZV93YWl0LT5zdGF0dXMpICE9IDA7 Cj4gKwkJZWxzZQo+ICsJCQlzaWduYWxsZWQgPSB0cnVlOwo+ICsjZW5kaWYJLy8gQ09ORklHX1NZ TkMKPiArCj4gIAkJaGFzX2xvY2FsICA9IGZhbHNlOwo+ICAJCWhhc19yZW1vdGUgPSBmYWxzZTsK PiAgCQlmb3IgKGkgPSAwOyBpIDwgbm9kZS0+bnVtX2RlcHM7IGkrKykgewo+IEBAIC04ODYsOSAr OTk1LDE1IEBAIHN0YXRpYyBpbnQgaTkxNV9zY2hlZHVsZXJfcG9wX2Zyb21fcXVldWVfbG9ja2Vk KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gIAkJCW9ubHlfcmVtb3RlID0gdHJ1ZTsK PiAgCj4gIAkJaWYgKCFoYXNfbG9jYWwgJiYgIWhhc19yZW1vdGUpIHsKPiAtCQkJaWYgKCFiZXN0 IHx8Cj4gLQkJCSAgICAobm9kZS0+cHJpb3JpdHkgPiBiZXN0LT5wcmlvcml0eSkpCj4gLQkJCQli ZXN0ID0gbm9kZTsKPiArCQkJaWYgKHNpZ25hbGxlZCkgewo+ICsJCQkJaWYgKCFiZXN0IHx8Cj4g KwkJCQkgICAgKG5vZGUtPnByaW9yaXR5ID4gYmVzdC0+cHJpb3JpdHkpKQo+ICsJCQkJCWJlc3Qg PSBub2RlOwo+ICsJCQl9IGVsc2Ugewo+ICsJCQkJaWYgKCFiZXN0X3dhaXQgfHwKPiArCQkJCSAg ICAobm9kZS0+cHJpb3JpdHkgPiBiZXN0X3dhaXQtPnByaW9yaXR5KSkKPiArCQkJCQliZXN0X3dh aXQgPSBub2RlOwo+ICsJCQl9Cj4gIAkJfQo+ICAJfQo+ICAKPiBAQCAtOTA0LDggKzEwMTksMzQg QEAgc3RhdGljIGludCBpOTE1X3NjaGVkdWxlcl9wb3BfZnJvbV9xdWV1ZV9sb2NrZWQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCQkgKiAoYSkgdGhlcmUgYXJlIG5vIGJ1ZmZlcnMg aW4gdGhlIHF1ZXVlCj4gIAkJICogKGIpIGFsbCBxdWV1ZWQgYnVmZmVycyBhcmUgZGVwZW5kZW50 IG9uIG90aGVyIGJ1ZmZlcnMKPiAgCQkgKiAgICAgZS5nLiBvbiBhIGJ1ZmZlciB0aGF0IGlzIGlu IGZsaWdodCBvbiBhIGRpZmZlcmVudCByaW5nCj4gKwkJICogKGMpIGFsbCBpbmRlcGVuZGVudCBi dWZmZXJzIGFyZSB3YWl0aW5nIG9uIGZlbmNlcwo+ICAJCSAqLwo+IC0JCWlmIChvbmx5X3JlbW90 ZSkgewo+ICsJCWlmIChiZXN0X3dhaXQpIHsKPiArCQkJLyogTmVlZCB0byB3YWl0IGZvciBzb21l dGhpbmcgdG8gYmUgc2lnbmFsbGVkLgo+ICsJCQkgKgo+ICsJCQkgKiBOQjogZG8gbm90IHJlYWxs eSB3YW50IHRvIHdhaXQgb24gb25lIHNwZWNpZmljIGZkCj4gKwkJCSAqIGJlY2F1c2UgdGhlcmUg aXMgbm8gZ3VhcmFudGVlIGluIHRoZSBvcmRlciB0aGF0Cj4gKwkJCSAqIGJsb2NrZWQgYnVmZmVy cyB3aWxsIGJlIHNpZ25hbGxlZC4gTmVlZCB0byB3YWl0IG9uCj4gKwkJCSAqICdhbnl0aGluZycg YW5kIHRoZW4gcmVzY2FuIGZvciBiZXN0IGF2YWlsYWJsZSwgaWYKPiArCQkJICogc3RpbGwgbm90 aGluZyB0aGVuIHdhaXQgYWdhaW4uLi4KPiArCQkJICoKPiArCQkJICogTkIgMjogVGhlIHdhaXQg bXVzdCBhbHNvIHdha2UgdXAgaWYgc29tZW9uZSBhdHRlbXB0cwo+ICsJCQkgKiB0byBzdWJtaXQg YSBuZXcgYnVmZmVyLiBUaGUgbmV3IGJ1ZmZlciBtaWdodCBiZQo+ICsJCQkgKiBpbmRlcGVuZGVu dCBvZiBhbGwgb3RoZXJzIGFuZCB0aHVzIGNvdWxkIGp1bXAgdGhlCj4gKwkJCSAqIHF1ZXVlIGFu ZCBzdGFydCBydW5uaW5nIGltbWVkaWF0ZWx5Lgo+ICsJCQkgKgo+ICsJCQkgKiBOQiAzOiBMYXN0 bHksIG11c3Qgbm90IHdhaXQgd2l0aCB0aGUgc3BpbmxvY2sgaGVsZCEKPiArCQkJICoKPiArCQkJ ICogU28gcmF0aGVyIHRoYW4gd2FpdCBoZXJlLCBuZWVkIHRvIHF1ZXVlIGEgZGVmZXJyZWQKPiAr CQkJICogd2FpdCB0aHJlYWQgYW5kIGp1c3QgcmV0dXJuICdub3RoaW5nIHRvIGRvJy4KPiArCQkJ ICoKPiArCQkJICogTkIgNDogQ2FuJ3QgYWN0dWFsbHkgZG8gdGhlIHdhaXQgaGVyZSBiZWNhdXNl IHRoZQo+ICsJCQkgKiBzcGlubG9jayBpcyBzdGlsbCBoZWxkIGFuZCB0aGUgd2FpdCByZXF1aXJl cyBkb2luZwo+ICsJCQkgKiBhIG1lbW9yeSBhbGxvY2F0aW9uLgo+ICsJCQkgKi8KPiArCQkJZmVu Y2Vfd2FpdCA9IGJlc3Rfd2FpdDsKPiArCQkJcmV0ID0gLUVBR0FJTjsKPiArCQl9IGVsc2UgaWYg KG9ubHlfcmVtb3RlKSB7Cj4gIAkJCS8qIFRoZSBvbmx5IGRlcGVuZGVudCBidWZmZXJzIGFyZSBv biBhbm90aGVyIHJpbmcuICovCj4gIAkJCXJldCA9IC1FQUdBSU47Cj4gIAkJfSBlbHNlIGlmIChh bnlfcXVldWVkKSB7Cj4gQEAgLTkxNyw2ICsxMDU4LDE4IEBAIHN0YXRpYyBpbnQgaTkxNV9zY2hl ZHVsZXJfcG9wX2Zyb21fcXVldWVfbG9ja2VkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcs Cj4gIAo+ICAJLyogaTkxNV9zY2hlZHVsZXJfZHVtcF9xdWV1ZV9wb3AocmluZywgYmVzdCk7ICov Cj4gIAo+ICsJaWYgKGZlbmNlX3dhaXQpIHsKPiArI2lmZGVmIENPTkZJR19TWU5DCj4gKwkJLyog SXQgc2hvdWxkIGJlIHNhZmUgdG8gc2xlZXAgbm93Li4uICovCj4gKwkJLyogTkI6IE5lZWQgdG8g cmVsZWFzZSBhbmQgcmVhY3F1aXJlIHRoZSBzcGlubG9jayB0aG91Z2ggKi8KPiArCQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZzY2hlZHVsZXItPmxvY2ssICpmbGFncyk7Cj4gKwkJaTkxNV9zY2hl ZHVsZXJfYXN5bmNfZmVuY2Vfd2FpdChyaW5nLT5kZXYsIGZlbmNlX3dhaXQpOwo+ICsJCXNwaW5f bG9ja19pcnFzYXZlKCZzY2hlZHVsZXItPmxvY2ssICpmbGFncyk7Cj4gKyNlbHNlCj4gKwkJQlVH X09OKHRydWUpOwo+ICsjZW5kaWYKPiArCX0KPiArCj4gIAkqcG9wX25vZGUgPSBiZXN0Owo+ICAJ cmV0dXJuIHJldDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+IGlu ZGV4IGNlOTRiMGIuLjhjYTRiNGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zY2hlZHVsZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1 bGVyLmgKPiBAQCAtNTYsNiArNTYsMTEgQEAgc3RydWN0IGk5MTVfc2NoZWR1bGVyX29ial9lbnRy eSB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAgICAgICAgICAqb2JqOwo+ICB9Owo+ ICAKPiArZW51bSBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9lbnRyeV9mbGFncyB7Cj4gKwkvKiBGZW5j ZSBpcyBiZWluZyB3YWl0ZWQgb24gKi8KPiArCWk5MTVfcWVmX2ZlbmNlX3dhaXRpbmcgICAgICAg ICAgICAgID0gKDEgPDwgMCksCj4gK307Cj4gKwo+ICBzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVl dWVfZW50cnkgewo+ICAJc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgICAgICAgcGFyYW1z Owo+ICAJdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk7Cj4gQEAg LTY4LDYgKzczLDcgQEAgc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5IHsKPiAgCXN0 cnVjdCB0aW1lc3BlYyAgICAgICAgICAgICAgICAgICAgIHN0YW1wOwo+ICAJc3RydWN0IGxpc3Rf aGVhZCAgICAgICAgICAgICAgICAgICAgbGluazsKPiAgCXVpbnQzMl90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNjaGVkdWxlcl9pbmRleDsKPiArCXVpbnQzMl90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZsYWdzOwo+ICB9Owo+ICAKPiAgc3RydWN0IGk5MTVfc2NoZWR1bGVyIHsK PiAtLSAKPiAxLjkuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK