From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 10/12] drm/i915: Merge legacy+execlists context structs Date: Mon, 23 May 2016 11:26:13 +0100 Message-ID: <5742DAC5.80503@linux.intel.com> References: <1463922152-2709-1-git-send-email-chris@chris-wilson.co.uk> <1463922152-2709-10-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 0CB6E6E560 for ; Mon, 23 May 2016 10:26:15 +0000 (UTC) In-Reply-To: <1463922152-2709-10-git-send-email-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 Ck9uIDIyLzA1LzE2IDE0OjAyLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gc3RydWN0IGludGVsX2Nv bnRleHQgY29udGFpbnMgdHdvIHN1YnN0cnVjdHMsIG9uZSBmb3IgdGhlIGxlZ2FjeSBSQ1MgYW5k Cj4gb25lIGZvciBldmVyeSBleGVjbGlzdHMgZW5naW5lLiBTaW5jZSBsZWdhY3kgUkNTIGlzIGEg c3Vic2V0IG9mIHRoZQo+IGV4ZWNsaXN0cyBlbmdpbmUgc3VwcG9ydCwganVzdCBjb21iaW5lIHRo ZSB0d28gc3Vic3RydWN0cy4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5p bnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgfCA0MSArKysrKy0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICB8ICA3IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jIHwgNzUgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAyNiAtLS0tLS0tLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICB8ICAxIC0KPiAgIDUgZmls ZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDk0NWZlNDcxMGIzNy4uMzBjYjI2ZmUyZmE5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMTk5LDEzICsxOTks NiBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICAgCQlzZXFfcHJpbnRmKG0sICIgKGZyb250YnVmZmVyOiAweCUwM3gp Iiwgb2JqLT5mcm9udGJ1ZmZlcl9iaXRzKTsKPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBkZXNjcmli ZV9jdHgoc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ IC17Cj4gLQlzZXFfcHV0YyhtLCBjdHgtPmxlZ2FjeV9od19jdHguaW5pdGlhbGl6ZWQgPyAnSScg OiAnaScpOwo+IC0Jc2VxX3B1dGMobSwgY3R4LT5yZW1hcF9zbGljZSA/ICdSJyA6ICdyJyk7Cj4g LQlzZXFfcHV0YyhtLCAnICcpOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBpOTE1X2dlbV9vYmpl Y3RfbGlzdF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgIHsKPiAgIAlz dHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IG0tPnByaXZhdGU7Cj4gQEAgLTIwMDEsNyArMTk5 NCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKnVudXNlZCkKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAg IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+IC0JZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQ7Cj4gICAJaW50IHJldDsKPgo+ICAgCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC0yMDA5LDEwICsyMDAxLDYgQEAgc3RhdGljIGludCBp OTE1X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAg CQlyZXR1cm4gcmV0Owo+Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+ Y29udGV4dF9saXN0LCBsaW5rKSB7Cj4gLQkJaWYgKCFpOTE1LmVuYWJsZV9leGVjbGlzdHMgJiYK PiAtCQkgICAgY3R4LT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSA9PSBOVUxMKQo+IC0JCQljb250 aW51ZTsKPiAtCj4gICAJCXNlcV9wcmludGYobSwgIkhXIGNvbnRleHQgJXUgIiwgY3R4LT5od19p ZCk7Cj4gICAJCWlmIChJU19FUlIoY3R4LT5maWxlX3ByaXYpKSB7Cj4gICAJCQlzZXFfcHV0cyht LCAiKGRlbGV0ZWQpICIpOwo+IEBAIC0yMDI5LDI1ICsyMDE3LDE4IEBAIHN0YXRpYyBpbnQgaTkx NV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgIAkJ fSBlbHNlCj4gICAJCQlzZXFfcHV0cyhtLCAiKGtlcm5lbCkgIik7Cj4KPiAtCQlkZXNjcmliZV9j dHgobSwgY3R4KTsKPiArCQlzZXFfcHV0YyhtLCBjdHgtPnJlbWFwX3NsaWNlID8gJ1InIDogJ3In KTsKPiArCQlzZXFfcHV0YyhtLCAnXG4nKTsKPgo+IC0JCWlmIChpOTE1LmVuYWJsZV9leGVjbGlz dHMpIHsKPiArCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewo+ICsJCQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UgPSAmY3R4LT5lbmdpbmVbZW5naW5lLT5pZF07Cj4gKwkJCXNl cV9wcmludGYobSwgIiVzOiAiLCBlbmdpbmUtPm5hbWUpOwo+ICsJCQlzZXFfcHV0YyhtLCBjZS0+ aW5pdGlhbGlzZWQgPyAnSScgOiAnaScpOwo+ICsJCQlpZiAoY2UtPnN0YXRlKQo+ICsJCQkJZGVz Y3JpYmVfb2JqKG0sIGNlLT5zdGF0ZSk7Cj4gKwkJCWlmIChjZS0+cmluZ2J1ZikKPiArCQkJCWRl c2NyaWJlX2N0eF9yaW5nYnVmKG0sIGNlLT5yaW5nYnVmKTsKPiAgIAkJCXNlcV9wdXRjKG0sICdc bicpOwo+IC0JCQlmb3JfZWFjaF9lbmdpbmVfaWQoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAt CQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0KPiAtCQkJCQljdHgtPmVu Z2luZVtpZF0uc3RhdGU7Cj4gLQkJCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9 Cj4gLQkJCQkJY3R4LT5lbmdpbmVbaWRdLnJpbmdidWY7Cj4gLQo+IC0JCQkJc2VxX3ByaW50Ziht LCAiJXM6ICIsIGVuZ2luZS0+bmFtZSk7Cj4gLQkJCQlpZiAoY3R4X29iaikKPiAtCQkJCQlkZXNj cmliZV9vYmoobSwgY3R4X29iaik7Cj4gLQkJCQlpZiAocmluZ2J1ZikKPiAtCQkJCQlkZXNjcmli ZV9jdHhfcmluZ2J1ZihtLCByaW5nYnVmKTsKPiAtCQkJCXNlcV9wdXRjKG0sICdcbicpOwo+IC0J CQl9Cj4gLQkJfSBlbHNlIHsKPiAtCQkJZGVzY3JpYmVfb2JqKG0sIGN0eC0+bGVnYWN5X2h3X2N0 eC5yY3Nfc3RhdGUpOwo+ICAgCQl9Cj4KPiAgIAkJc2VxX3B1dGMobSwgJ1xuJyk7Cj4gQEAgLTIw NjIsMTAgKzIwNDMsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9kdW1wX2xyY19vYmooc3RydWN0IHNl cV9maWxlICptLAo+ICAgCQkJICAgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAg IAkJCSAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiArCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0u c3RhdGU7Cj4gICAJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gICAJdWludDMyX3QgKnJlZ19zdGF0ZTsK PiAgIAlpbnQgajsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4 LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGU7Cj4gICAJdW5zaWduZWQgbG9uZyBnZ3R0X29mZnNl dCA9IDA7Cj4KPiAgIAlzZXFfcHJpbnRmKG0sICJDT05URVhUOiAlcyAldVxuIiwgZW5naW5lLT5u YW1lLCBjdHgtPmh3X2lkKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBkM2QyNTM4 ZDE3ZTguLjI1OWEwZWU3YTYwMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC04 NjIsMTMgKzg2Miw2IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKPiAgIAkvKiBVbmlxdWUg aWRlbnRpZmllciBmb3IgdGhpcyBjb250ZXh0LCB1c2VkIGJ5IHRoZSBodyBmb3IgdHJhY2tpbmcg Ki8KPiAgIAl1bnNpZ25lZCBod19pZDsKPgo+IC0JLyogTGVnYWN5IHJpbmcgYnVmZmVyIHN1Ym1p c3Npb24gKi8KPiAtCXN0cnVjdCB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnJj c19zdGF0ZTsKPiAtCQlib29sIGluaXRpYWxpemVkOwo+IC0JfSBsZWdhY3lfaHdfY3R4Owo+IC0K PiAtCS8qIEV4ZWNsaXN0cyAqLwo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0IHsKPiAgIAkJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnN0YXRlOwo+ICAgCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4g aW5kZXggNTFlODNhNzlhYjM2Li45ODQ3MjM1OTk3YjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTE1MiwxMyArMTUyLDExIEBAIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX2NvbnRleHRfY2xlYW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAg IHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBrcmVmICpjdHhfcmVmKQo+ICAgewo+ ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBjb250YWluZXJfb2YoY3R4X3JlZiwg dHlwZW9mKCpjdHgpLCByZWYpOwo+ICsJaW50IGk7Cj4KPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxk KCZjdHgtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KTsKPiAgIAl0cmFjZV9pOTE1X2NvbnRleHRf ZnJlZShjdHgpOwo+Cj4gLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+IC0JCWludGVsX2xy X2NvbnRleHRfZnJlZShjdHgpOwo+IC0KPiAgIAkvKgo+ICAgCSAqIFRoaXMgY29udGV4dCBpcyBn b2luZyBhd2F5IGFuZCB3ZSBuZWVkIHRvIHJlbW92ZSBhbGwgVk1BcyBzdGlsbAo+ICAgCSAqIGFy b3VuZC4gVGhpcyBpcyB0byBoYW5kbGUgaW1wb3J0ZWQgc2hhcmVkIG9iamVjdHMgZm9yIHdoaWNo Cj4gQEAgLTE2OCw4ICsxNjYsMTkgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2ZyZWUoc3RydWN0 IGtyZWYgKmN0eF9yZWYpCj4KPiAgIAlpOTE1X3BwZ3R0X3B1dChjdHgtPnBwZ3R0KTsKPgo+IC0J aWYgKGN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUpCj4gLQkJZHJtX2dlbV9vYmplY3RfdW5y ZWZlcmVuY2UoJmN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUtPmJhc2UpOwo+ICsJZm9yIChp ID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykgewo+ICsJCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSA9ICZjdHgtPmVuZ2luZVtpXTsKPiArCj4gKwkJaWYgKCFjZS0+c3RhdGUpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlXQVJOX09OKGNlLT5waW5fY291bnQpOwo+ICsJCWlmIChjZS0+ cmluZ2J1ZikKPiArCQkJaW50ZWxfcmluZ2J1ZmZlcl9mcmVlKGNlLT5yaW5nYnVmKTsKPiArCj4g KwkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmNlLT5zdGF0ZS0+YmFzZSk7Cj4gKwl9Cj4g Kwo+ICAgCWxpc3RfZGVsKCZjdHgtPmxpbmspOwo+Cj4gICAJaWRhX3NpbXBsZV9yZW1vdmUoJmN0 eC0+aTkxNS0+Y29udGV4dF9od19pZGEsIGN0eC0+aHdfaWQpOwo+IEBAIC0yNjYsNyArMjc1LDcg QEAgX19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJcmV0 ID0gUFRSX0VSUihvYmopOwo+ICAgCQkJZ290byBlcnJfb3V0Owo+ICAgCQl9Cj4gLQkJY3R4LT5s ZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSA9IG9iajsKPiArCQljdHgtPmVuZ2luZVtSQ1NdLnN0YXRl ID0gb2JqOwo+ICAgCX0KPgo+ICAgCS8qIERlZmF1bHQgY29udGV4dCB3aWxsIG5ldmVyIGhhdmUg YSBmaWxlX3ByaXYgKi8KPiBAQCAtMzM1LDggKzM0NCwxMSBAQCBzdGF0aWMgdm9pZCBpOTE1X2dl bV9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJaWYgKGk5 MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQlpbnRlbF9scl9jb250ZXh0X3VucGluKGN0eCwg ZW5naW5lKTsKPiAgIAl9IGVsc2Ugewo+IC0JCWlmIChlbmdpbmUtPmlkID09IFJDUyAmJiBjdHgt PmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKQo+IC0JCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBp bihjdHgtPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKTsKPiArCQlzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UgPSAmY3R4LT5lbmdpbmVbZW5naW5lLT5pZF07Cj4gKwo+ICsJCWlmIChjZS0+c3RhdGUp Cj4gKwkJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGNlLT5zdGF0ZSk7Cj4gKwo+ICAgCQlp OTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwo+ICAgCX0KPiAgIH0KPiBAQCAtNDAwLDcgKzQxMiw3 IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IAkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKPiAgIAl9Cj4KPiAtCWlmIChjdHgtPmxlZ2FjeV9od19j dHgucmNzX3N0YXRlKSB7Cj4gKwlpZiAoY3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSkgewoKTWF5YmUg bm93IHB1dCBhIGNvbW1lbnQgc2F5aW5nIHRoaXMgaXMgZm9yIGxlZ2FjeSBub3csIHRvIG1ha2Ug dGhlIAphc3ltbWV0cnkgaW4gY3R4IHBpbm5pbmcgcGF0aHMgYmV0d2VlbiB0aGUgdHdvIHN0aWNr IG91dCBtb3JlLgoKPiAgIAkJaW50IHJldDsKPgo+ICAgCQkvKiBXZSBtYXkgbmVlZCB0byBkbyB0 aGluZ3Mgd2l0aCB0aGUgc2hyaW5rZXIgd2hpY2gKPiBAQCAtNDEwLDcgKzQyMiw3IEBAIGludCBp OTE1X2dlbV9jb250ZXh0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJICogYmUg YXZhaWxhYmxlLiBUbyBhdm9pZCB0aGlzIHdlIGFsd2F5cyBwaW4gdGhlIGRlZmF1bHQKPiAgIAkJ ICogY29udGV4dC4KPiAgIAkJICovCj4gLQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0 eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUsCj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRf cGluKGN0eC0+ZW5naW5lW1JDU10uc3RhdGUsCj4gICAJCQkJCSAgICBnZXRfY29udGV4dF9hbGln bm1lbnQoZGV2X3ByaXYpLCAwKTsKPiAgIAkJaWYgKHJldCkgewo+ICAgCQkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gcGlubmVkIGRlZmF1bHQgZ2xvYmFsIGNvbnRleHQgKGVycm9yICVkKVxuIiwKPiBA QCAtNDM1LDE1ICs0NDcsMTcgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2xvc3Qoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9w cml2LT5kZXYtPnN0cnVjdF9tdXRleCk7Cj4KPiAgIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBk ZXZfcHJpdikgewo+IC0JCWlmIChlbmdpbmUtPmxhc3RfY29udGV4dCA9PSBOVUxMKQo+IC0JCQlj b250aW51ZTsKPiArCQlpZiAoZW5naW5lLT5sYXN0X2NvbnRleHQpIHsKPiArCQkJaTkxNV9nZW1f Y29udGV4dF91bnBpbihlbmdpbmUtPmxhc3RfY29udGV4dCwgZW5naW5lKTsKPiArCQkJZW5naW5l LT5sYXN0X2NvbnRleHQgPSBOVUxMOwo+ICsJCX0KPgo+IC0JCWk5MTVfZ2VtX2NvbnRleHRfdW5w aW4oZW5naW5lLT5sYXN0X2NvbnRleHQsIGVuZ2luZSk7Cj4gLQkJZW5naW5lLT5sYXN0X2NvbnRl eHQgPSBOVUxMOwo+ICsJCS8qIEZvcmNlIHRoZSBHUFUgc3RhdGUgdG8gYmUgcmVpbml0aWFsaXNl ZCBvbiBlbmFibGluZyAqLwo+ICsJCWRldl9wcml2LT5rZXJuZWxfY29udGV4dC0+ZW5naW5lW2Vu Z2luZS0+aWRdLmluaXRpYWxpc2VkID0KPiArCQkJZW5naW5lLT5pbml0X2NvbnRleHQgPT0gTlVM TDsKPiAgIAl9Cj4KPiAgIAkvKiBGb3JjZSB0aGUgR1BVIHN0YXRlIHRvIGJlIHJlaW5pdGlhbGlz ZWQgb24gZW5hYmxpbmcgKi8KPiAtCWRldl9wcml2LT5rZXJuZWxfY29udGV4dC0+bGVnYWN5X2h3 X2N0eC5pbml0aWFsaXplZCA9IGZhbHNlOwo+ICAgCWRldl9wcml2LT5rZXJuZWxfY29udGV4dC0+ cmVtYXBfc2xpY2UgPSBBTExfTDNfU0xJQ0VTKGRldl9wcml2KTsKPiAgIH0KPgo+IEBAIC00NTQs OCArNDY4LDggQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2Zpbmkoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPgo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldi0+c3RydWN0X211dGV4KTsKPgo+ IC0JaWYgKGRjdHgtPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKQo+IC0JCWk5MTVfZ2VtX29iamVj dF9nZ3R0X3VucGluKGRjdHgtPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKTsKPiArCWlmICghaTkx NS5lbmFibGVfZXhlY2xpc3RzICYmIGRjdHgtPmVuZ2luZVtSQ1NdLnN0YXRlKQo+ICsJCWk5MTVf Z2VtX29iamVjdF9nZ3R0X3VucGluKGRjdHgtPmVuZ2luZVtSQ1NdLnN0YXRlKTsKPgo+ICAgCWk5 MTVfZ2VtX2NvbnRleHRfcHV0KGRjdHgpOwo+ICAgCWRldl9wcml2LT5rZXJuZWxfY29udGV4dCA9 IE5VTEw7Cj4gQEAgLTU2Miw3ICs1NzYsNyBAQCBtaV9zZXRfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIGh3X2ZsYWdzKQo+ICAgCWludGVsX3JpbmdfZW1pdChl bmdpbmUsIE1JX05PT1ApOwo+ICAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NFVF9DT05U RVhUKTsKPiAgIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAo+IC0JCQlpOTE1X2dlbV9vYmpfZ2d0 dF9vZmZzZXQocmVxLT5jdHgtPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKSB8Cj4gKwkJCWk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChyZXEtPmN0eC0+ZW5naW5lW1JDU10uc3RhdGUpIHwKPiAgIAkJ CWZsYWdzKTsKPiAgIAkvKgo+ICAgCSAqIHcvYTogTUlfU0VUX0NPTlRFWFQgbXVzdCBhbHdheXMg YmUgZm9sbG93ZWQgYnkgTUlfTk9PUAo+IEBAIC02MzksNyArNjUzLDcgQEAgc3RhdGljIGlubGlu ZSBib29sIHNraXBfcmNzX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gICAJ aWYgKHRvLT5yZW1hcF9zbGljZSkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+Cj4gLQlpZiAoIXRvLT5s ZWdhY3lfaHdfY3R4LmluaXRpYWxpemVkKQo+ICsJaWYgKCF0by0+ZW5naW5lW1JDU10uaW5pdGlh bGlzZWQpCj4gICAJCXJldHVybiBmYWxzZTsKPgo+ICAgCWlmIChwcGd0dCAmJiAoaW50ZWxfZW5n aW5lX2ZsYWcoZW5naW5lKSAmIHBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpCj4gQEAgLTcwNCw3ICs3 MTgsNyBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEpCj4gICAJCXJldHVybiAwOwo+Cj4gICAJLyogVHJ5aW5nIHRvIHBpbiBmaXJzdCBt YWtlcyBlcnJvciBoYW5kbGluZyBlYXNpZXIuICovCj4gLQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0 dF9waW4odG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlLAo+ICsJcmV0ID0gaTkxNV9nZW1fb2Jq X2dndHRfcGluKHRvLT5lbmdpbmVbUkNTXS5zdGF0ZSwKPiAgIAkJCQkgICAgZ2V0X2NvbnRleHRf YWxpZ25tZW50KGVuZ2luZS0+aTkxNSksCj4gICAJCQkJICAgIDApOwo+ICAgCWlmIChyZXQpCj4g QEAgLTcyNyw3ICs3NDEsNyBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0Y2goc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICAJICoKPiAgIAkgKiBYWFg6IFdlIG5lZWQgYSByZWFs IGludGVyZmFjZSB0byBkbyB0aGlzIGluc3RlYWQgb2YgdHJpY2tlcnkuCj4gICAJICovCj4gLQly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4odG8tPmxlZ2FjeV9od19jdHgu cmNzX3N0YXRlLCBmYWxzZSk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9k b21haW4odG8tPmVuZ2luZVtSQ1NdLnN0YXRlLCBmYWxzZSk7Cj4gICAJaWYgKHJldCkKPiAgIAkJ Z290byB1bnBpbl9vdXQ7Cj4KPiBAQCAtNzQyLDcgKzc1Niw3IEBAIHN0YXRpYyBpbnQgZG9fcmNz X3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAkJCWdvdG8gdW5w aW5fb3V0Owo+ICAgCX0KPgo+IC0JaWYgKCF0by0+bGVnYWN5X2h3X2N0eC5pbml0aWFsaXplZCB8 fCBpOTE1X2dlbV9jb250ZXh0X2lzX2RlZmF1bHQodG8pKQo+ICsJaWYgKCF0by0+ZW5naW5lW1JD U10uaW5pdGlhbGlzZWQgfHwgaTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KHRvKSkKPiAgIAkJ LyogTkI6IElmIHdlIGluaGliaXQgdGhlIHJlc3RvcmUsIHRoZSBjb250ZXh0IGlzIG5vdCBhbGxv d2VkIHRvCj4gICAJCSAqIGRpZSBiZWNhdXNlIGZ1dHVyZSB3b3JrIG1heSBlbmQgdXAgZGVwZW5k aW5nIG9uIHZhbGlkIGFkZHJlc3MKPiAgIAkJICogc3BhY2UuIFRoaXMgbWVhbnMgd2UgbXVzdCBl bmZvcmNlIHRoYXQgYSBwYWdlIHRhYmxlIGxvYWQKPiBAQCAtNzY2LDggKzc4MCw4IEBAIHN0YXRp YyBpbnQgZG9fcmNzX3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAg IAkgKiBNSV9TRVRfQ09OVEVYVCBpbnN0ZWFkIG9mIHdoZW4gdGhlIG5leHQgc2Vxbm8gaGFzIGNv bXBsZXRlZC4KPiAgIAkgKi8KPiAgIAlpZiAoZnJvbSAhPSBOVUxMKSB7Cj4gLQkJZnJvbS0+bGVn YWN5X2h3X2N0eC5yY3Nfc3RhdGUtPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlO X0lOU1RSVUNUSU9OOwo+IC0JCWk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKGk5MTVfZ2VtX29ial90 b19nZ3R0KGZyb20tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKSwgcmVxKTsKPiArCQlmcm9tLT5l bmdpbmVbUkNTXS5zdGF0ZS0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fSU5T VFJVQ1RJT047Cj4gKwkJaTkxNV92bWFfbW92ZV90b19hY3RpdmUoaTkxNV9nZW1fb2JqX3RvX2dn dHQoZnJvbS0+ZW5naW5lW1JDU10uc3RhdGUpLCByZXEpOwo+ICAgCQkvKiBBcyBsb25nIGFzIE1J X1NFVF9DT05URVhUIGlzIHNlcmlhbGl6aW5nLCBpZS4gaXQgZmx1c2hlcyB0aGUKPiAgIAkJICog d2hvbGUgZGFtbiBwaXBlbGluZSwgd2UgZG9uJ3QgbmVlZCB0byBleHBsaWNpdGx5IG1hcmsgdGhl Cj4gICAJCSAqIG9iamVjdCBkaXJ0eS4gVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoYXQgdGhlIGNv bnRleHQgbXVzdCBiZQo+IEBAIC03NzUsMTAgKzc4OSwxMCBAQCBzdGF0aWMgaW50IGRvX3Jjc19z d2l0Y2goc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICAJCSAqIGFibGUgdG8g ZGVmZXIgZG9pbmcgdGhpcyB1bnRpbCB3ZSBrbm93IHRoZSBvYmplY3Qgd291bGQgYmUKPiAgIAkJ ICogc3dhcHBlZCwgYnV0IHRoZXJlIGlzIG5vIHdheSB0byBkbyB0aGF0IHlldC4KPiAgIAkJICov Cj4gLQkJZnJvbS0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUtPmRpcnR5ID0gMTsKPiArCQlmcm9t LT5lbmdpbmVbUkNTXS5zdGF0ZS0+ZGlydHkgPSAxOwo+Cj4gICAJCS8qIG9iaiBpcyBrZXB0IGFs aXZlIHVudGlsIHRoZSBuZXh0IHJlcXVlc3QgYnkgaXRzIGFjdGl2ZSByZWYgKi8KPiAtCQlpOTE1 X2dlbV9vYmplY3RfZ2d0dF91bnBpbihmcm9tLT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSk7Cj4g KwkJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oZnJvbS0+ZW5naW5lW1JDU10uc3RhdGUpOwo+ ICAgCQlpOTE1X2dlbV9jb250ZXh0X3B1dChmcm9tKTsKPiAgIAl9Cj4gICAJZW5naW5lLT5sYXN0 X2NvbnRleHQgPSBpOTE1X2dlbV9jb250ZXh0X2dldCh0byk7Cj4gQEAgLTgxMiwxOSArODI2LDE5 IEBAIHN0YXRpYyBpbnQgZG9fcmNzX3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSkKPiAgIAkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8aSk7Cj4gICAJfQo+Cj4gLQlpZiAo IXRvLT5sZWdhY3lfaHdfY3R4LmluaXRpYWxpemVkKSB7Cj4gKwlpZiAoIXRvLT5lbmdpbmVbUkNT XS5pbml0aWFsaXNlZCkgewo+ICAgCQlpZiAoZW5naW5lLT5pbml0X2NvbnRleHQpIHsKPiAgIAkJ CXJldCA9IGVuZ2luZS0+aW5pdF9jb250ZXh0KHJlcSk7Cj4gICAJCQlpZiAocmV0KQo+ICAgCQkJ CXJldHVybiByZXQ7Cj4gICAJCX0KPiAtCQl0by0+bGVnYWN5X2h3X2N0eC5pbml0aWFsaXplZCA9 IHRydWU7Cj4gKwkJdG8tPmVuZ2luZVtSQ1NdLmluaXRpYWxpc2VkID0gdHJ1ZTsKPiAgIAl9Cj4K PiAgIAlyZXR1cm4gMDsKPgo+ICAgdW5waW5fb3V0Ogo+IC0JaTkxNV9nZW1fb2JqZWN0X2dndHRf dW5waW4odG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlKTsKPiArCWk5MTVfZ2VtX29iamVjdF9n Z3R0X3VucGluKHRvLT5lbmdpbmVbUkNTXS5zdGF0ZSk7Cj4gICAJcmV0dXJuIHJldDsKPiAgIH0K Pgo+IEBAIC04NDgsOCArODYyLDcgQEAgaW50IGk5MTVfc3dpdGNoX2NvbnRleHQoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICAJV0FSTl9PTihpOTE1LmVuYWJsZV9leGVjbGlz dHMpOwo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcS0+aTkxNS0+ZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+Cj4gLQlpZiAoZW5naW5lLT5pZCAhPSBSQ1MgfHwKPiAtCSAgICByZXEtPmN0eC0+bGVn YWN5X2h3X2N0eC5yY3Nfc3RhdGUgPT0gTlVMTCkgewo+ICsJaWYgKCFyZXEtPmN0eC0+ZW5naW5l W2VuZ2luZS0+aWRdLnN0YXRlKSB7Cj4gICAJCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICp0byA9 IHJlcS0+Y3R4Owo+ICAgCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICAgCQkJdG8t PnBwZ3R0ID86IHJlcS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCA0YjdjOTY4MGIwOTcuLjU1OGYwNjljZDZkOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTI0MTMsMzEgKzI0MTMsNiBAQCBwb3B1bGF0ZV9scl9j b250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICB9Cj4KPiAgIC8qKgo+IC0g KiBpbnRlbF9scl9jb250ZXh0X2ZyZWUoKSAtIGZyZWUgdGhlIExSQyBzcGVjaWZpYyBiaXRzIG9m IGEgY29udGV4dAo+IC0gKiBAY3R4OiB0aGUgTFIgY29udGV4dCB0byBmcmVlLgo+IC0gKgo+IC0g KiBUaGUgcmVhbCBjb250ZXh0IGZyZWVpbmcgaXMgZG9uZSBpbiBpOTE1X2dlbV9jb250ZXh0X2Zy ZWU6IHRoaXMgb25seQo+IC0gKiB0YWtlcyBjYXJlIG9mIHRoZSBiaXRzIHRoYXQgYXJlIExSQyBy ZWxhdGVkOiB0aGUgcGVyLWVuZ2luZSBiYWNraW5nCj4gLSAqIG9iamVjdHMgYW5kIHRoZSBsb2dp Y2FsIHJpbmdidWZmZXIuCj4gLSAqLwo+IC12b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+IC17Cj4gLQlpbnQgaTsKPiAtCj4gLQlmb3IgKGkg PSBJOTE1X05VTV9FTkdJTkVTOyAtLWkgPj0gMDsgKSB7Cj4gLQkJc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYgPSBjdHgtPmVuZ2luZVtpXS5yaW5nYnVmOwo+IC0JCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4LT5lbmdpbmVbaV0uc3RhdGU7Cj4gLQo+IC0J CWlmICghY3R4X29iaikKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCVdBUk5fT04oY3R4LT5lbmdp bmVbaV0ucGluX2NvdW50KTsKPiAtCQlpbnRlbF9yaW5nYnVmZmVyX2ZyZWUocmluZ2J1Zik7Cj4g LQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmN0eF9vYmotPmJhc2UpOwo+IC0JfQo+IC19 Cj4gLQo+IC0vKioKPiAgICAqIGludGVsX2xyX2NvbnRleHRfc2l6ZSgpIC0gcmV0dXJuIHRoZSBz aXplIG9mIHRoZSBjb250ZXh0IGZvciBhbiBlbmdpbmUKPiAgICAqIEByaW5nOiB3aGljaCBlbmdp bmUgdG8gZmluZCB0aGUgY29udGV4dCBzaXplIGZvcgo+ICAgICoKPiBAQCAtMjQ5Nyw3ICsyNDcy LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmOwo+ICAgCWludCByZXQ7Cj4KPiAtCVdBUk5fT04oY3R4LT5sZWdhY3lfaHdfY3R4LnJjc19z dGF0ZSAhPSBOVUxMKTsKPiAgIAlXQVJOX09OKGNlLT5zdGF0ZSk7Cj4KPiAgIAljb250ZXh0X3Np emUgPSByb3VuZF91cChpbnRlbF9scl9jb250ZXh0X3NpemUoZW5naW5lKSwgNDA5Nik7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmgKPiBpbmRleCBlYjJlMWQxNTdmZWQuLmE4ZGI0MmE5YzUwZiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4gQEAgLTEwMSw3ICsxMDEsNiBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmLAo+Cj4gICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dDsKPgo+IC12 b2lkIGludGVsX2xyX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KTsK PiAgIHVpbnQzMl90IGludGVsX2xyX2NvbnRleHRfc2l6ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+ICAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCj4gICAJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKPgoKTG9va3MgZ29vZCB0byBtZS4KClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK