From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Hoath Subject: Re: [PATCH] drm/i915: Change context lifecycle Date: Thu, 26 Nov 2015 09:19:44 +0000 Message-ID: <5656CEB0.2070208@intel.com> References: <1448456237-31421-1-git-send-email-nicholas.hoath@intel.com> <877fl65dgr.fsf@gaia.fi.intel.com> <20151126084805.GD17050@phenom.ffwll.local> 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 ESMTP id E3EC77A099 for ; Thu, 26 Nov 2015 01:19:46 -0800 (PST) In-Reply-To: <20151126084805.GD17050@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , Mika Kuoppala Cc: Daniel Vetter , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gMjYvMTEvMjAxNSAwODo0OCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBXZWQsIE5vdiAy NSwgMjAxNSBhdCAwNTowMjo0NFBNICswMjAwLCBNaWthIEt1b3BwYWxhIHdyb3RlOgo+PiBOaWNr IEhvYXRoIDxuaWNob2xhcy5ob2F0aEBpbnRlbC5jb20+IHdyaXRlczoKPj4KPj4+IFVzZSB0aGUg Zmlyc3QgcmV0aXJlZCByZXF1ZXN0IG9uIGEgbmV3IGNvbnRleHQgdG8gdW5waW4KPj4+IHRoZSBv bGQgY29udGV4dC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGh3IGNvbnRleHQgcmVtYWlucwo+Pj4g Ym91bmQgdW50aWwgaXQgaGFzIGJlZW4gd3JpdHRlbiBiYWNrIHRvIGJ5IHRoZSBHUFUuCj4+PiBO b3cgdGhhdCB0aGUgY29udGV4dCBpcyBwaW5uZWQgdW50aWwgbGF0ZXIgaW4gdGhlIHJlcXVlc3Qv Y29udGV4dAo+Pj4gbGlmZWN5Y2xlLCBpdCBubyBsb25nZXIgbmVlZHMgdG8gYmUgcGlubmVkIGZy b20gY29udGV4dF9xdWV1ZSB0bwo+Pj4gcmV0aXJlX3JlcXVlc3RzLgo+Pj4KPj4+IHYyOiBNb3Zl ZCB0aGUgbmV3IHBpbiB0byBjb3ZlciBHdUMgc3VibWlzc2lvbiAoQWxleCBEYWkpCj4+PiAgICAg IE1vdmVkIHRoZSBuZXcgdW5waW4gdG8gcmVxdWVzdF9yZXRpcmUgdG8gZml4IGNvdmVyYWdlIGxl YWsKPj4+IHYzOiBBZGRlZCBzd2l0Y2ggdG8gZGVmYXVsdCBjb250ZXh0IGlmIGZyZWVpbmcgYSBz dGlsbCBwaW5uZWQKPj4+ICAgICAgY29udGV4dCBqdXN0IGluIGNhc2UgdGhlIGh3IHdhcyBhY3R1 YWxseSBzdGlsbCB1c2luZyBpdAo+Pj4gdjQ6IFVud3JhcHBlZCBjb250ZXh0IHVucGluIHRvIGFs bG93IGNhbGxpbmcgd2l0aG91dCBhIHJlcXVlc3QKPj4+IHY1OiBPbmx5IGNyZWF0ZSBhIHN3aXRj aCB0byBpZGxlIGNvbnRleHQgaWYgdGhlIHJpbmcgZG9lc24ndAo+Pj4gICAgICBhbHJlYWR5IGhh dmUgYSByZXF1ZXN0IHBlbmRpbmcgb24gaXQgKEFsZXggRGFpKQo+Pj4gICAgICBSZW5hbWUgdW5z YXZlZCB0byBkaXJ0eSB0byBhdm9pZCBkb3VibGUgbmVnYXRpdmVzIChEYXZlIEdvcmRvbikKPj4+ ICAgICAgQ2hhbmdlZCBfbm9fcmVxIHBvc3RmaXggdG8gX18gcHJlZml4IGZvciBjb25zaXN0ZW5j eSAoRGF2ZSBHb3Jkb24pCj4+PiAgICAgIFNwbGl0IG91dCBwZXIgZW5naW5lIGNsZWFudXAgZnJv bSBjb250ZXh0X2ZyZWUgYXMgaXQKPj4+ICAgICAgd2FzIGdldHRpbmcgdW53aWVsZHkKPj4+ICAg ICAgQ29ycmVjdGVkIGxvY2tpbmcgKERhdmUgR29yZG9uKQo+Pj4KPj4+IFNpZ25lZC1vZmYtYnk6 IE5pY2sgSG9hdGggPG5pY2hvbGFzLmhvYXRoQGludGVsLmNvbT4KPj4+IElzc3VlOiBWSVotNDI3 Nwo+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4+PiBDYzog RGF2aWQgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4+PiBDYzogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+PiBDYzogQWxleCBEYWkgPHl1LmRhaUBp bnRlbC5jb20+Cj4+PiAtLS0KPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg fCAgIDEgKwo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICB8ICAgMyArCj4+ PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwgMTI0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuaCB8ICAgMSArCj4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyks IDI0IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gaW5kZXgg ZDVjZjMwYi4uZTgyNzE3YSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+IEBA IC04ODksNiArODg5LDcgQEAgc3RydWN0IGludGVsX2NvbnRleHQgewo+Pj4gICAJc3RydWN0IHsK Pj4+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3RhdGU7Cj4+PiAgIAkJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7Cj4+PiArCQlib29sIGRpcnR5Owo+Pj4gICAJCWlu dCBwaW5fY291bnQ7Cj4+PiAgIAl9IGVuZ2luZVtJOTE1X05VTV9SSU5HU107Cj4+Pgo+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4+PiBpbmRleCBlOTU1NDk5Li4zODI5YmMxIDEwMDY0NAo+Pj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+Pj4gQEAgLTEzNTQsNiArMTM1NCw5IEBAIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKPj4+ICAgewo+Pj4gICAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUocmVx dWVzdCk7Cj4+Pgo+Pj4gKwlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQo+Pj4gKwkJaW50ZWxf bHJfY29udGV4dF9jb21wbGV0ZV9jaGVjayhyZXF1ZXN0KTsKPj4+ICsKPj4+ICAgCS8qIFdlIGtu b3cgdGhlIEdQVSBtdXN0IGhhdmUgcmVhZCB0aGUgcmVxdWVzdCB0byBoYXZlCj4+PiAgIAkgKiBz ZW50IHVzIHRoZSBzZXFubyArIGludGVycnVwdCwgc28gdXNlIHRoZSBwb3NpdGlvbgo+Pj4gICAJ ICogb2YgdGFpbCBvZiB0aGUgcmVxdWVzdCB0byB1cGRhdGUgdGhlIGxhc3Qga25vd24gcG9zaXRp b24KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+PiBpbmRleCAwNjE4MGRjLi4wM2Q1YmNh IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+PiBAQCAtNTY2LDkgKzU2Niw2 IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Pj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpj dXJzb3I7Cj4+PiAgIAlpbnQgbnVtX2VsZW1lbnRzID0gMDsKPj4+Cj4+PiAtCWlmIChyZXF1ZXN0 LT5jdHggIT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KQo+Pj4gLQkJaW50ZWxfbHJfY29udGV4dF9w aW4ocmVxdWVzdCk7Cj4+PiAtCj4+PiAgIAlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShyZXF1 ZXN0KTsKPj4+Cj4+PiAgIAlzcGluX2xvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKPj4+ IEBAIC03MzIsNiArNzI5LDEzIEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJt aXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+Pj4gICAJaWYgKGludGVs X3Jpbmdfc3RvcHBlZChyaW5nKSkKPj4+ICAgCQlyZXR1cm47Cj4+Pgo+Pj4gKwlpZiAocmVxdWVz dC0+Y3R4ICE9IHJpbmctPmRlZmF1bHRfY29udGV4dCkgewo+Pj4gKwkJaWYgKCFyZXF1ZXN0LT5j dHgtPmVuZ2luZVtyaW5nLT5pZF0uZGlydHkpIHsKPj4+ICsJCQlpbnRlbF9scl9jb250ZXh0X3Bp bihyZXF1ZXN0KTsKPj4+ICsJCQlyZXF1ZXN0LT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0uZGlydHkg PSB0cnVlOwo+Pj4gKwkJfQo+Pj4gKwl9Cj4+PiArCj4+PiAgIAlpZiAoZGV2X3ByaXYtPmd1Yy5l eGVjYnVmX2NsaWVudCkKPj4+ICAgCQlpOTE1X2d1Y19zdWJtaXQoZGV2X3ByaXYtPmd1Yy5leGVj YnVmX2NsaWVudCwgcmVxdWVzdCk7Cj4+PiAgIAllbHNlCj4+PiBAQCAtOTU4LDEyICs5NjIsNiBA QCB2b2lkIGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZykKPj4+ICAgCXNwaW5fdW5sb2NrX2lycSgmcmluZy0+ZXhlY2xpc3RfbG9jayk7 Cj4+Pgo+Pj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgdG1wLCAmcmV0aXJlZF9s aXN0LCBleGVjbGlzdF9saW5rKSB7Cj4+PiAtCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0g cmVxLT5jdHg7Cj4+PiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Cj4+ PiAtCQkJCWN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKPj4+IC0KPj4+IC0JCWlmIChjdHhf b2JqICYmIChjdHggIT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KSkKPj4+IC0JCQlpbnRlbF9scl9j b250ZXh0X3VucGluKHJlcSk7Cj4+PiAgIAkJbGlzdF9kZWwoJnJlcS0+ZXhlY2xpc3RfbGluayk7 Cj4+PiAgIAkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+Pj4gICAJfQo+Pj4g QEAgLTEwNTgsMjEgKzEwNTYsMzkgQEAgcmVzZXRfcGluX2NvdW50Ogo+Pj4gICAJcmV0dXJuIHJl dDsKPj4+ICAgfQo+Pj4KPj4+IC12b2lkIGludGVsX2xyX2NvbnRleHRfdW5waW4oc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPj4+ICtzdGF0aWMgdm9pZCBfX2ludGVsX2xyX2NvbnRl eHRfdW5waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4+ICsJCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjdHgpCj4+PiAgIHsKPj4+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHJxLT5yaW5nOwo+Pj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9 IHJxLT5jdHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7Cj4+PiAtCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmID0gcnEtPnJpbmdidWY7Cj4+PiAtCj4+PiArCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwo+Pj4g KwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IGN0eC0+ZW5naW5lW3JpbmctPmlk XS5yaW5nYnVmOwo+Pj4gICAJaWYgKGN0eF9vYmopIHsKPj4+ICAgCQlXQVJOX09OKCFtdXRleF9p c19sb2NrZWQoJnJpbmctPmRldi0+c3RydWN0X211dGV4KSk7Cj4+PiAtCQlpZiAoLS1ycS0+Y3R4 LT5lbmdpbmVbcmluZy0+aWRdLnBpbl9jb3VudCA9PSAwKSB7Cj4+PiArCQlpZiAoLS1jdHgtPmVu Z2luZVtyaW5nLT5pZF0ucGluX2NvdW50ID09IDApIHsKPj4+ICAgCQkJaW50ZWxfdW5waW5fcmlu Z2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+PiAgIAkJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGlu KGN0eF9vYmopOwo+Pj4gICAJCX0KPj4+ICAgCX0KPj4+ICAgfQo+Pj4KPj4+ICt2b2lkIGludGVs X2xyX2NvbnRleHRfdW5waW4oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPj4+ICt7 Cj4+PiArCV9faW50ZWxfbHJfY29udGV4dF91bnBpbihycS0+cmluZywgcnEtPmN0eCk7Cj4+PiAr fQo+Pj4gKwo+Pj4gK3ZvaWQgaW50ZWxfbHJfY29udGV4dF9jb21wbGV0ZV9jaGVjayhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4+ICt7Cj4+PiArCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcgPSByZXEtPnJpbmc7Cj4+PiArCj4+PiArCWlmIChyaW5nLT5sYXN0X2NvbnRl eHQgJiYgcmluZy0+bGFzdF9jb250ZXh0ICE9IHJlcS0+Y3R4ICYmCj4+PiArCQkJcmluZy0+bGFz dF9jb250ZXh0LT5lbmdpbmVbcmluZy0+aWRdLmRpcnR5KSB7Cj4+PiArCQlfX2ludGVsX2xyX2Nv bnRleHRfdW5waW4oCj4+PiArCQkJCXJpbmcsCj4+PiArCQkJCXJpbmctPmxhc3RfY29udGV4dCk7 Cj4+PiArCQlyaW5nLT5sYXN0X2NvbnRleHQtPmVuZ2luZVtyaW5nLT5pZF0uZGlydHkgPSBmYWxz ZTsKPj4+ICsJfQo+Pj4gKwlyaW5nLT5sYXN0X2NvbnRleHQgPSByZXEtPmN0eDsKPj4KPj4gV2hh dCBlbnN1cmVzIHRoYXQgdGhlIGxhc3RfY29udGV4dCBzdGF5cyBhbGl2ZT8KPgo+IFRoZSBvdGhl ciBwYXJ0IHRoYXQncyBtaXNzaW5nIGNvbXBhcmVkIHRvIHRoZSBsZWdhY3kgY29udGV4dCBjeWNs aW5nIGxvZ2ljCj4gaXMgbW92ZV90b19hY3RpdmUuIFdpdGhvdXQgdGhhdCB0aGUgc2hyaW5rZXIg Y2FuJ3QgZWF0IGludG8gcmV0aXJlZAo+IGNvbnRleHRzLCB3aGljaCByZW5kZXJzIHRoaXMgZXhl cmNpc2UgZmFpcmx5IG1vb3QgaW1vLgo+Cj4gVGhlIG92ZXJhbGwgaWRlYSBpcyB0aGF0IHNpbmNl IGk5MTUgZG9lcyBkeW5hbWljIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQKPiB0aGF0IGluZmVjdHMg ZXZlcnl0aGluZyBpbiB0aGUgY29kZSB0aGF0IGRlYWxzIHdpdGggZ3B1IG9iamVjdHMsIHdlIG5l ZWQKPiB0byBtYWtlIHN1cmUgdGhhdCBldmVyeW9uZSBpcyB1c2luZyB0aGUgc2FtZSBsb2dpY3kg dG8gY3ljbGUgdGhyb3VnaAo+IGFjdGl2ZSBvYmplY3RzLiBPdGhlcndpc2UgdGhlIHNocmlua2Vy IHdpbGwgYmUgYW4gdW5tYWludGFpbmFibGUgaHlkcmEKPiB3aXRoIHBlci1mZWF0dXJlIHNwZWNp YWwgY2FzZXMuCj4gLURhbmllbAoKVGhpcyBpcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgVklaLTQy NzcgZml4IGNoYW5nZXNldCB0aGF0IEknbSB3b3JraW5nIApvbi4gSXQgaGFzIGJlZW4gJ2Zhc3R0 cmFja2VkJyBhcyBpdCBpcyBuZWVkZWQgdG8gZml4IGEgbG9ja3VwIHdpdGggR3VDIApzdWJtaXNz aW9uLiBJZiB5b3UgbGlrZSwgSSBjYW4gdXBkYXRlIHRoZSBjb21taXQgbWVzc2FnZSB0byBleHBs YWluIHRoYXQ/Cgo+Cj4+Cj4+PiArfQo+Pj4gKwo+Pj4gICBzdGF0aWMgaW50IGludGVsX2xvZ2lj YWxfcmluZ193b3JrYXJvdW5kc19lbWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQo+Pj4gICB7Cj4+PiAgIAlpbnQgcmV0LCBpOwo+Pj4gQEAgLTIzNjcsNiArMjM4Myw2MiBAQCBw b3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsIHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpjdHhfbwo+Pj4gICB9Cj4+Pgo+Pj4gICAvKioKPj4+ICsgKiBpbnRl bF9scl9jb250ZXh0X2NsZWFuX3JpbmcoKSAtIGNsZWFuIHRoZSByaW5nIHNwZWNpZmljIHBhcnRz IG9mIGFuIExSQwo+Pj4gKyAqIEBjdHg6IHRoZSBMUiBjb250ZXh0IGJlaW5nIGZyZWVkLgo+Pj4g KyAqIEByaW5nOiB0aGUgZW5naW5lIGJlaW5nIGNsZWFuZWQKPj4+ICsgKiBAY3R4X29iajogdGhl IGh3IGNvbnRleHQgYmVpbmcgdW5yZWZlcmVuY2VkCj4+PiArICogQHJpbmdidWY6IHRoZSByaW5n YnVmIGJlaW5nIGZyZWVkCj4+PiArICoKPj4+ICsgKiBUYWtlIGNhcmUgb2YgY2xlYW5pbmcgdXAg dGhlIHBlci1lbmdpbmUgYmFja2luZwo+Pj4gKyAqIG9iamVjdHMgYW5kIHRoZSBsb2dpY2FsIHJp bmdidWZmZXIuCj4+PiArICovCj4+PiArc3RhdGljIHZvaWQKPj4+ICtpbnRlbF9scl9jb250ZXh0 X2NsZWFuX3Jpbmcoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPj4+ICsJCQkgICAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPj4+ICsJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmN0eF9vYmosCj4+PiArCQkJICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmKQo+Pj4gK3sKPj4+ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZyaW5nLT5kZXYtPnN0 cnVjdF9tdXRleCkpOwo+Pj4gKwo+Pj4gKwlpZiAoY3R4ID09IHJpbmctPmRlZmF1bHRfY29udGV4 dCkgewo+Pj4gKwkJaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4+PiArCQlp OTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihjdHhfb2JqKTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlp ZiAoY3R4LT5lbmdpbmVbcmluZy0+aWRdLmRpcnR5KSB7Cj4+PiArCQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSA9IE5VTEw7Cj4+PiArCj4+PiArCQkvKioKPj4+ICsJCSAqIElmIHRo ZXJlIGlzIGFscmVhZHkgYSByZXF1ZXN0IHBlbmRpbmcgb24KPj4+ICsJCSAqIHRoaXMgcmluZywg d2FpdCBmb3IgdGhhdCB0byBjb21wbGV0ZSwKPj4+ICsJCSAqIG90aGVyd2lzZSBjcmVhdGUgYSBz d2l0Y2ggdG8gaWRsZSByZXF1ZXN0Cj4+PiArCQkgKi8KPj4+ICsJCWlmIChsaXN0X2VtcHR5KCZy aW5nLT5yZXF1ZXN0X2xpc3QpKSB7Cj4+PiArCQkJaW50IHJldDsKPj4+ICsKPj4+ICsJCQlyZXQg PSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKAo+Pj4gKwkJCQkJcmluZywKPj4+ICsJCQkJCXJpbmct PmRlZmF1bHRfY29udGV4dCwKPj4+ICsJCQkJCSZyZXEpOwo+Pj4gKwkJCWlmICghcmV0KQo+Pj4g KwkJCQlpOTE1X2FkZF9yZXF1ZXN0KHJlcSk7Cj4+PiArCQkJZWxzZQo+Pj4gKwkJCQlEUk1fREVC VUcoIkZhaWxlZCB0byBlbnN1cmUgY29udGV4dCBzYXZlZCIpOwo+Pj4gKwkJfSBlbHNlIHsKPj4+ ICsJCQlyZXEgPSBsaXN0X2ZpcnN0X2VudHJ5KAo+Pj4gKwkJCQkJJnJpbmctPnJlcXVlc3RfbGlz dCwKPj4+ICsJCQkJCXR5cGVvZigqcmVxKSwgbGlzdCk7Cj4+PiArCQl9Cj4+PiArCQlpZiAocmVx KQo+Pj4gKwkJCWk5MTVfd2FpdF9yZXF1ZXN0KHJlcSk7Cj4+PiArCX0KPj4+ICsKPj4+ICsJV0FS Tl9PTihjdHgtPmVuZ2luZVtyaW5nLT5pZF0ucGluX2NvdW50KTsKPj4+ICsJaW50ZWxfcmluZ2J1 ZmZlcl9mcmVlKHJpbmdidWYpOwo+Pj4gKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmY3R4 X29iai0+YmFzZSk7Cj4+PiArfQo+Pj4gKwo+Pj4gKy8qKgo+Pj4gICAgKiBpbnRlbF9scl9jb250 ZXh0X2ZyZWUoKSAtIGZyZWUgdGhlIExSQyBzcGVjaWZpYyBiaXRzIG9mIGEgY29udGV4dAo+Pj4g ICAgKiBAY3R4OiB0aGUgTFIgY29udGV4dCB0byBmcmVlLgo+Pj4gICAgKgo+Pj4gQEAgLTIzNzgs MjEgKzI0NTAsMTggQEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X2ZyZWUoc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCkKPj4+ICAgewo+Pj4gICAJaW50IGk7Cj4+Pgo+Pj4gLQlmb3IgKGkgPSAwOyBp IDwgSTkxNV9OVU1fUklOR1M7IGkrKykgewo+Pj4gKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1f UklOR1M7ICsraSkgewo+Pj4gICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2Jq ID0gY3R4LT5lbmdpbmVbaV0uc3RhdGU7Cj4+Pgo+Pj4gLQkJaWYgKGN0eF9vYmopIHsKPj4+ICsJ CWlmIChjdHgtPmVuZ2luZVtpXS5zdGF0ZSkgewo+Pgo+PiArK2kgYW5kIHRoZSBhYm92ZSBhcmUg c3VwZXJmbG91b3VzPwo+Pgo+PiAtTWlrYQo+Pgo+Pj4gICAJCQlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZiA9Cj4+PiAgIAkJCQkJY3R4LT5lbmdpbmVbaV0ucmluZ2J1ZjsKPj4+ICAg CQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJpbmdidWYtPnJpbmc7Cj4+Pgo+Pj4g LQkJCWlmIChjdHggPT0gcmluZy0+ZGVmYXVsdF9jb250ZXh0KSB7Cj4+PiAtCQkJCWludGVsX3Vu cGluX3JpbmdidWZmZXJfb2JqKHJpbmdidWYpOwo+Pj4gLQkJCQlpOTE1X2dlbV9vYmplY3RfZ2d0 dF91bnBpbihjdHhfb2JqKTsKPj4+IC0JCQl9Cj4+PiAtCQkJV0FSTl9PTihjdHgtPmVuZ2luZVty aW5nLT5pZF0ucGluX2NvdW50KTsKPj4+IC0JCQlpbnRlbF9yaW5nYnVmZmVyX2ZyZWUocmluZ2J1 Zik7Cj4+PiAtCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmN0eF9vYmotPmJhc2UpOwo+ Pj4gKwkJCWludGVsX2xyX2NvbnRleHRfY2xlYW5fcmluZyhjdHgsCj4+PiArCQkJCQkJICAgIHJp bmcsCj4+PiArCQkJCQkJICAgIGN0eF9vYmosCj4+PiArCQkJCQkJICAgIHJpbmdidWYpOwo+Pj4g ICAJCX0KPj4+ICAgCX0KPj4+ICAgfQo+Pj4gQEAgLTI1NTQsNSArMjYyMywxMiBAQCB2b2lkIGlu dGVsX2xyX2NvbnRleHRfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+Cj4+PiAgIAkJ cmluZ2J1Zi0+aGVhZCA9IDA7Cj4+PiAgIAkJcmluZ2J1Zi0+dGFpbCA9IDA7Cj4+PiArCj4+PiAr CQlpZiAoY3R4LT5lbmdpbmVbcmluZy0+aWRdLmRpcnR5KSB7Cj4+PiArCQkJX19pbnRlbF9scl9j b250ZXh0X3VucGluKAo+Pj4gKwkJCQkJcmluZywKPj4+ICsJCQkJCWN0eCk7Cj4+PiArCQkJY3R4 LT5lbmdpbmVbcmluZy0+aWRdLmRpcnR5ID0gZmFsc2U7Cj4+PiArCQl9Cj4+PiAgIAl9Cj4+PiAg IH0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+PiBpbmRleCA0ZTYwZDU0Li5jYmM0MmI4 IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+PiBAQCAtODYsNiArODYsNyBA QCB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4+ ICAgCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4+PiAgIHVpbnQ2NF90IGludGVsX2xy X2NvbnRleHRfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+Pj4gICAJCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPj4+ICt2b2lkIGludGVsX2xyX2Nv bnRleHRfY29tcGxldGVfY2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ Pj4KPj4+ICAgLyogRXhlY2xpc3RzICovCj4+PiAgIGludCBpbnRlbF9zYW5pdGl6ZV9lbmFibGVf ZXhlY2xpc3RzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBlbmFibGVfZXhlY2xpc3RzKTsK Pj4+IC0tCj4+PiAxLjkuMQo+Pj4KPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+PiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPj4gSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==