From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Hoath Subject: Re: [PATCH v3 1/3] drm/i915: simplify allocation of driver-internal requests Date: Mon, 18 Jan 2016 16:16:19 +0000 Message-ID: <569D0FD3.6010502@intel.com> References: <1452162052-22573-1-git-send-email-david.s.gordon@intel.com> <1452162052-22573-2-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 83A016E567 for ; Mon, 18 Jan 2016 08:16:30 -0800 (PST) In-Reply-To: <1452162052-22573-2-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gMDcvMDEvMjAxNiAxMDoyMCwgRGF2ZSBHb3Jkb24gd3JvdGU6Cj4gVGhlcmUgYXJlIGEgbnVt YmVyIG9mIHBsYWNlcyB3aGVyZSB0aGUgZHJpdmVyIG5lZWRzIGEgcmVxdWVzdCwgYnV0IGlzbid0 Cj4gd29ya2luZyBvbiBiZWhhbGYgb2YgYW55IHNwZWNpZmljIHVzZXIgb3IgaW4gYSBzcGVjaWZp YyBjb250ZXh0LiBBdAo+IHByZXNlbnQsIHdlIGFzc29jaWF0ZSB0aGVtIHdpdGggdGhlIHBlci1l bmdpbmUgZGVmYXVsdCBjb250ZXh0LiBBIGZ1dHVyZQo+IHBhdGNoIHdpbGwgYWJvbGlzaCB0aG9z ZSBwZXItZW5naW5lIGNvbnRleHQgcG9pbnRlcnM7IGJ1dCB3ZSBjYW4gYWxyZWFkeQo+IGVsaW1p bmF0ZSBhIGxvdCBvZiB0aGUgcmVmZXJlbmNlcyB0byB0aGVtLCBqdXN0IGJ5IG1ha2luZyB0aGUg YWxsb2NhdG9yCj4gYWxsb3cgTlVMTCBhcyBhIHNob3J0aGFuZCBmb3IgImFuIGFwcHJvcHJpYXRl IGNvbnRleHQgZm9yIHRoaXMgcmluZyIsCj4gd2hpY2ggd2lsbCBtZWFuIHRoYXQgdGhlIGNhbGxl cnMgZG9uJ3QgbmVlZCB0byBrbm93IGFueXRoaW5nIGFib3V0IGhvdwo+IHRoZSAiYXBwcm9wcmlh dGUgY29udGV4dCIgaXMgZm91bmQgKGUuZy4gcGVyLXJpbmcgdnMgcGVyLWRldmljZSwgZXRjKS4K Pgo+IFNvIHRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUgZXhpc3RpbmcgaTkxNV9nZW1fcmVxdWVzdF9h bGxvYygpLCBhbmQgbWFrZXMKPiBpdCBsb2NhbCAoc3RhdGljIGlubGluZSksIGFuZCByZXBsYWNl cyBpdCB3aXRoIGEgd3JhcHBlciB0aGF0IHByb3ZpZGVzCj4gYSBkZWZhdWx0IGlmIHRoZSBjb250 ZXh0IGlzIE5VTEwsIGFuZCBhbHNvIGhhcyBhIG5pY2VyIGNhbGxpbmcKPiBjb252ZW50aW9uIChk b2Vzbid0IHJlcXVpcmUgYSBwb2ludGVyIHRvIGFuIG91dHB1dCBwYXJhbWV0ZXIpLiBUaGVuIHdl Cj4gY2hhbmdlIGFsbCBjYWxsZXJzIHRvIHVzZSB0aGUgbmV3IGNvbnZlbnRpb246Cj4gT0xEOgo+ IAllcnIgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHVzZXJfY3R4LCAmcmVxKTsKPiAJ aWYgKGVycikgLi4uCj4gTkVXOgo+IAlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcs IHVzZXJfY3R4KTsKPiAJaWYgKElTX0VSUihyZXEpKSAuLi4KPiBPTEQ6Cj4gCWVyciA9IGk5MTVf Z2VtX3JlcXVlc3RfYWxsb2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKPiAJ aWYgKGVycikgLi4uCj4gTkVXOgo+IAlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcs IE5VTEwpOwo+IAlpZiAoSVNfRVJSKHJlcSkpIC4uLgo+Cj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBH b3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KClJldmlld2VkLWJ5OiBOaWNrIEhvYXRo IDxuaWNob2xhcy5ob2F0aEBpbnRlbC5jb20+Cgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgNTUgKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAxNCAr KysrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgIHwg IDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwg IDkgKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYyAgICAgICB8 IDI0ICsrKysrKy0tLS0tLS0KPiAgIDYgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwg NDAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBjNmRkNGRi Li5jMmIwMDBhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIyNjAsOSArMjI2 MCw5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4KPiAgIH07Cj4KPiAtaW50IGk5 MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAtCQkJ ICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAtCQkJICAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICoqcmVxX291dCk7Cj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqIF9f bXVzdF9jaGVjawo+ICtpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKPiArCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCk7Cj4gICB2 b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKTsKPiAgIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBrcmVmICpyZXFfcmVm KTsKPiAgIGludCBpOTE1X2dlbV9yZXF1ZXN0X2FkZF90b19jbGllbnQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNmM2MGUw NC4uYzkwOGVkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yNjg4LDkgKzI2 ODgsMTAgQEAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0IGtyZWYgKnJlcV9yZWYp Cj4gICAJa21lbV9jYWNoZV9mcmVlKHJlcS0+aTkxNS0+cmVxdWVzdHMsIHJlcSk7Cj4gICB9Cj4K PiAtaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKPiAtCQkJICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAtCQkJICAgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCkKPiArc3RhdGljIGlubGluZSBpbnQKPiArX19p OTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJ CSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICsJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICoqcmVxX291dCkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KHJpbmctPmRldik7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXE7Cj4gQEAgLTI3NTMsNiArMjc1NCwzMSBAQCBlcnI6Cj4gICAJcmV0dXJuIHJldDsK PiAgIH0KPgo+ICsvKioKPiArICogaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyAtIGFsbG9jYXRlIGEg cmVxdWVzdCBzdHJ1Y3R1cmUKPiArICoKPiArICogQGVuZ2luZTogZW5naW5lIHRoYXQgd2Ugd2lz aCB0byBpc3N1ZSB0aGUgcmVxdWVzdCBvbi4KPiArICogQGN0eDogY29udGV4dCB0aGF0IHRoZSBy ZXF1ZXN0IHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoLgo+ICsgKiAgICAgICBUaGlzIGNhbiBiZSBO VUxMIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBkaXJlY3RseSByZWxhdGVkIHRvCj4gKyAqICAgICAg IGFueSBzcGVjaWZpYyB1c2VyIGNvbnRleHQsIGluIHdoaWNoIGNhc2UgdGhpcyBmdW5jdGlvbiB3 aWxsCj4gKyAqICAgICAgIGNob29zZSBhbiBhcHByb3ByaWF0ZSBjb250ZXh0IHRvIHVzZS4KPiAr ICoKPiArICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCByZXF1ZXN0IGlmIHN1 Y2Nlc3NmdWwsCj4gKyAqIG9yIGFuIGVycm9yIGNvZGUgaWYgbm90Lgo+ICsgKi8KPiArc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKPiAraTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ICsJaW50 IGVycjsKPiArCj4gKwlpZiAoY3R4ID09IE5VTEwpCj4gKwkJY3R4ID0gZW5naW5lLT5kZWZhdWx0 X2NvbnRleHQ7Cj4gKwllcnIgPSBfX2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgs ICZyZXEpOwo+ICsJcmV0dXJuIGVyciA/IEVSUl9QVFIoZXJyKSA6IHJlcTsKPiArfQo+ICsKPiAg IHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEpCj4gICB7Cj4gICAJaW50ZWxfcmluZ19yZXNlcnZlZF9zcGFjZV9jYW5jZWwocmVxLT5y aW5nYnVmKTsKPiBAQCAtMzE3MCw5ICszMTk2LDEzIEBAIF9faTkxNV9nZW1fb2JqZWN0X3N5bmMo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJCXJldHVybiAwOwo+Cj4gICAJ CWlmICgqdG9fcmVxID09IE5VTEwpIHsKPiAtCQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxv Yyh0bywgdG8tPmRlZmF1bHRfY29udGV4dCwgdG9fcmVxKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJ CXJldHVybiByZXQ7Cj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ICsK PiArCQkJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyh0bywgTlVMTCk7Cj4gKwkJCWlmIChJ U19FUlIocmVxKSkKPiArCQkJCXJldHVybiBQVFJfRVJSKHJlcSk7Cj4gKwo+ICsJCQkqdG9fcmVx ID0gcmVxOwo+ICAgCQl9Cj4KPiAgIAkJdHJhY2VfaTkxNV9nZW1fcmluZ19zeW5jX3RvKCp0b19y ZXEsIGZyb20sIGZyb21fcmVxKTsKPiBAQCAtMzM3Miw5ICszNDAyLDkgQEAgaW50IGk5MTVfZ3B1 X2lkbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJaWYgKCFpOTE1LmVuYWJsZV9leGVj bGlzdHMpIHsKPiAgIAkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+Cj4gLQkJ CXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0 LCAmcmVxKTsKPiAtCQkJaWYgKHJldCkKPiAtCQkJCXJldHVybiByZXQ7Cj4gKwkJCXJlcSA9IGk5 MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgTlVMTCk7Cj4gKwkJCWlmIChJU19FUlIocmVxKSkK PiArCQkJCXJldHVybiBQVFJfRVJSKHJlcSk7Cj4KPiAgIAkJCXJldCA9IGk5MTVfc3dpdGNoX2Nv bnRleHQocmVxKTsKPiAgIAkJCWlmIChyZXQpIHsKPiBAQCAtNDg2OSwxMCArNDg5OSw5IEBAIGk5 MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlmb3JfZWFjaF9yaW5n KHJpbmcsIGRldl9wcml2LCBpKSB7Cj4gICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxOwo+Cj4gLQkJV0FSTl9PTighcmluZy0+ZGVmYXVsdF9jb250ZXh0KTsKPiAtCj4gLQkJcmV0 ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZy ZXEpOwo+IC0JCWlmIChyZXQpIHsKPiArCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJp bmcsIE5VTEwpOwo+ICsJCWlmIChJU19FUlIocmVxKSkgewo+ICsJCQlyZXQgPSBQVFJfRVJSKHJl cSk7Cj4gICAJCQlpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKPiAgIAkJCWdvdG8g b3V0Owo+ICAgCQl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu Ywo+IGluZGV4IGRjY2I1MTcuLmRjNmNhZWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTEzODEsNiArMTM4MSw3IEBAIGk5MTVfZ2VtX2Rv X2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJICAg ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpleGVjKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IE5VTEw7Cj4gICAJc3RydWN0IGViX3Zt YXMgKmViOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmo7Cj4gICAJ c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgc2hhZG93X2V4ZWNfZW50cnk7Cj4gQEAg LTE2MDIsMTEgKzE2MDMsMTMgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQlwYXJhbXMtPmJhdGNoX29ial92bV9vZmZzZXQg PSBpOTE1X2dlbV9vYmpfb2Zmc2V0KGJhdGNoX29iaiwgdm0pOwo+Cj4gICAJLyogQWxsb2NhdGUg YSByZXF1ZXN0IGZvciB0aGlzIGJhdGNoIGJ1ZmZlciBuaWNlIGFuZCBlYXJseS4gKi8KPiAtCXJl dCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgY3R4LCAmcGFyYW1zLT5yZXF1ZXN0KTsK PiAtCWlmIChyZXQpCj4gKwlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIGN0eCk7 Cj4gKwlpZiAoSVNfRVJSKHJlcSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKHJlcSk7Cj4gICAJCWdv dG8gZXJyX2JhdGNoX3VucGluOwo+ICsJfQo+Cj4gLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2Fk ZF90b19jbGllbnQocGFyYW1zLT5yZXF1ZXN0LCBmaWxlKTsKPiArCXJldCA9IGk5MTVfZ2VtX3Jl cXVlc3RfYWRkX3RvX2NsaWVudChyZXEsIGZpbGUpOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8g ZXJyX2JhdGNoX3VucGluOwo+Cj4gQEAgLTE2MjIsNiArMTYyNSw3IEBAIGk5MTVfZ2VtX2RvX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAlwYXJhbXMt PmRpc3BhdGNoX2ZsYWdzICAgICAgICAgID0gZGlzcGF0Y2hfZmxhZ3M7Cj4gICAJcGFyYW1zLT5i YXRjaF9vYmogICAgICAgICAgICAgICA9IGJhdGNoX29iajsKPiAgIAlwYXJhbXMtPmN0eCAgICAg ICAgICAgICAgICAgICAgID0gY3R4Owo+ICsJcGFyYW1zLT5yZXF1ZXN0ICAgICAgICAgICAgICAg ICA9IHJlcTsKPgo+ICAgCXJldCA9IGRldl9wcml2LT5ndC5leGVjYnVmX3N1Ym1pdChwYXJhbXMs IGFyZ3MsICZlYi0+dm1hcyk7Cj4KPiBAQCAtMTY0NSw4ICsxNjQ5LDggQEAgZXJyOgo+ICAgCSAq IG11c3QgYmUgZnJlZWQgYWdhaW4uIElmIGl0IHdhcyBzdWJtaXR0ZWQgdGhlbiBpdCBpcyBiZWlu ZyB0cmFja2VkCj4gICAJICogb24gdGhlIGFjdGl2ZSByZXF1ZXN0IGxpc3QgYW5kIG5vIGNsZWFu IHVwIGlzIHJlcXVpcmVkIGhlcmUuCj4gICAJICovCj4gLQlpZiAocmV0ICYmIHBhcmFtcy0+cmVx dWVzdCkKPiAtCQlpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChwYXJhbXMtPnJlcXVlc3QpOwo+ICsJ aWYgKHJldCAmJiByZXEpCj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwocmVxKTsKPgo+ICAg CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IGluZGV4IGVkOWFiNjAuLjFmOGY3ODEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTExNzAwLDkgKzExNzAwLDExIEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCQkJCQlv YmotPmxhc3Rfd3JpdGVfcmVxKTsKPiAgIAl9IGVsc2Ugewo+ICAgCQlpZiAoIXJlcXVlc3QpIHsK PiAtCQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2Nv bnRleHQsICZyZXF1ZXN0KTsKPiAtCQkJaWYgKHJldCkKPiArCQkJcmVxdWVzdCA9IGk5MTVfZ2Vt X3JlcXVlc3RfYWxsb2MocmluZywgTlVMTCk7Cj4gKwkJCWlmIChJU19FUlIocmVxdWVzdCkpIHsK PiArCQkJCXJldCA9IFBUUl9FUlIocmVxdWVzdCk7Cj4gICAJCQkJZ290byBjbGVhbnVwX3VucGlu Owo+ICsJCQl9Cj4gICAJCX0KPgo+ICAgCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9m bGlwKGRldiwgY3J0YywgZmIsIG9iaiwgcmVxdWVzdCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IGluZGV4IDgwOTZjNmEuLjhiNjU0MmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu Ywo+IEBAIC0yNTEwLDExICsyNTEwLDEwIEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVk X2FsbG9jKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4gICAJaWYgKGN0eCAhPSByaW5nLT5k ZWZhdWx0X2NvbnRleHQgJiYgcmluZy0+aW5pdF9jb250ZXh0KSB7Cj4gICAJCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+Cj4gLQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxv YyhyaW5nLAo+IC0JCQljdHgsICZyZXEpOwo+IC0JCWlmIChyZXQpIHsKPiAtCQkJRFJNX0VSUk9S KCJyaW5nIGNyZWF0ZSByZXE6ICVkXG4iLAo+IC0JCQkJcmV0KTsKPiArCQlyZXEgPSBpOTE1X2dl bV9yZXF1ZXN0X2FsbG9jKHJpbmcsIGN0eCk7Cj4gKwkJaWYgKElTX0VSUihyZXEpKSB7Cj4gKwkJ CXJldCA9IFBUUl9FUlIocmVxKTsKPiArCQkJRFJNX0VSUk9SKCJyaW5nIGNyZWF0ZSByZXE6ICVk XG4iLCByZXQpOwo+ICAgCQkJZ290byBlcnJvcl9yaW5nYnVmOwo+ICAgCQl9Cj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gaW5kZXggNzZmMTk4MC4uOTE2ODQxMyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiBAQCAtMjQwLDkgKzI0MCw5IEBAIHN0 YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkK PiAgIAlXQVJOX09OKG92ZXJsYXktPmFjdGl2ZSk7Cj4gICAJV0FSTl9PTihJU19JODMwKGRldikg JiYgIShkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpKTsKPgo+IC0JcmV0ID0g aTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEp Owo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJcmVxID0gaTkxNV9nZW1fcmVxdWVz dF9hbGxvYyhyaW5nLCBOVUxMKTsKPiArCWlmIChJU19FUlIocmVxKSkKPiArCQlyZXR1cm4gUFRS X0VSUihyZXEpOwo+Cj4gICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+ICAgCWlm IChyZXQpIHsKPiBAQCAtMjgzLDkgKzI4Myw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9j b250aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgIAlpZiAodG1wICYgKDEg PDwgMTcpKQo+ICAgCQlEUk1fREVCVUcoIm92ZXJsYXkgdW5kZXJydW4sIERPVlNUQTogJXhcbiIs IHRtcCk7Cj4KPiAtCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgcmluZy0+ZGVm YXVsdF9jb250ZXh0LCAmcmVxKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCXJl cSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgTlVMTCk7Cj4gKwlpZiAoSVNfRVJSKHJl cSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPgo+ICAgCXJldCA9IGludGVsX3JpbmdfYmVn aW4ocmVxLCAyKTsKPiAgIAlpZiAocmV0KSB7Cj4gQEAgLTM0OSw5ICszNDksOSBAQCBzdGF0aWMg aW50IGludGVsX292ZXJsYXlfb2ZmKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ICAg CSAqIG9mIHRoZSBody4gRG8gaXQgaW4gYm90aCBjYXNlcyAqLwo+ICAgCWZsaXBfYWRkciB8PSBP RkNfVVBEQVRFOwo+Cj4gLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmct PmRlZmF1bHRfY29udGV4dCwgJnJlcSk7Cj4gLQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4g KwlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIE5VTEwpOwo+ICsJaWYgKElTX0VS UihyZXEpKQo+ICsJCXJldHVybiBQVFJfRVJSKHJlcSk7Cj4KPiAgIAlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcSwgNik7Cj4gICAJaWYgKHJldCkgewo+IEBAIC00MjMsOSArNDIzLDkgQEAgc3Rh dGljIGludCBpbnRlbF9vdmVybGF5X3JlbGVhc2Vfb2xkX3ZpZChzdHJ1Y3QgaW50ZWxfb3Zlcmxh eSAqb3ZlcmxheSkKPiAgIAkJLyogc3luY2hyb25vdXMgc2xvd3BhdGggKi8KPiAgIAkJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4KPiAtCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0 X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1bHRfY29udGV4dCwgJnJlcSk7Cj4gLQkJaWYgKHJldCkK PiAtCQkJcmV0dXJuIHJldDsKPiArCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcs IE5VTEwpOwo+ICsJCWlmIChJU19FUlIocmVxKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsK Pgo+ICAgCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4gICAJCWlmIChyZXQpIHsK PgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK