From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 1/3] drm/i915: simplify allocation of driver-internal requests Date: Tue, 12 Jan 2016 14:50:28 +0100 Message-ID: <20160112135028.GH4588@phenom.ffwll.local> 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" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D275E6E658 for ; Tue, 12 Jan 2016 05:50:34 -0800 (PST) Received: by mail-wm0-f65.google.com with SMTP id l65so31440068wmf.3 for ; Tue, 12 Jan 2016 05:50:34 -0800 (PST) Content-Disposition: inline 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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKYW4gMDcsIDIwMTYgYXQgMTA6MjA6NTBBTSArMDAwMCwgRGF2ZSBHb3Jkb24gd3Jv dGU6Cj4gVGhlcmUgYXJlIGEgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB0aGUgZHJpdmVyIG5lZWRz IGEgcmVxdWVzdCwgYnV0IGlzbid0Cj4gd29ya2luZyBvbiBiZWhhbGYgb2YgYW55IHNwZWNpZmlj IHVzZXIgb3IgaW4gYSBzcGVjaWZpYyBjb250ZXh0LiBBdAo+IHByZXNlbnQsIHdlIGFzc29jaWF0 ZSB0aGVtIHdpdGggdGhlIHBlci1lbmdpbmUgZGVmYXVsdCBjb250ZXh0LiBBIGZ1dHVyZQo+IHBh dGNoIHdpbGwgYWJvbGlzaCB0aG9zZSBwZXItZW5naW5lIGNvbnRleHQgcG9pbnRlcnM7IGJ1dCB3 ZSBjYW4gYWxyZWFkeQo+IGVsaW1pbmF0ZSBhIGxvdCBvZiB0aGUgcmVmZXJlbmNlcyB0byB0aGVt LCBqdXN0IGJ5IG1ha2luZyB0aGUgYWxsb2NhdG9yCj4gYWxsb3cgTlVMTCBhcyBhIHNob3J0aGFu ZCBmb3IgImFuIGFwcHJvcHJpYXRlIGNvbnRleHQgZm9yIHRoaXMgcmluZyIsCj4gd2hpY2ggd2ls bCBtZWFuIHRoYXQgdGhlIGNhbGxlcnMgZG9uJ3QgbmVlZCB0byBrbm93IGFueXRoaW5nIGFib3V0 IGhvdwo+IHRoZSAiYXBwcm9wcmlhdGUgY29udGV4dCIgaXMgZm91bmQgKGUuZy4gcGVyLXJpbmcg dnMgcGVyLWRldmljZSwgZXRjKS4KPiAKPiBTbyB0aGlzIHBhdGNoIHJlbmFtZXMgdGhlIGV4aXN0 aW5nIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoKSwgYW5kIG1ha2VzCj4gaXQgbG9jYWwgKHN0YXRp YyBpbmxpbmUpLCBhbmQgcmVwbGFjZXMgaXQgd2l0aCBhIHdyYXBwZXIgdGhhdCBwcm92aWRlcwo+ IGEgZGVmYXVsdCBpZiB0aGUgY29udGV4dCBpcyBOVUxMLCBhbmQgYWxzbyBoYXMgYSBuaWNlciBj YWxsaW5nCj4gY29udmVudGlvbiAoZG9lc24ndCByZXF1aXJlIGEgcG9pbnRlciB0byBhbiBvdXRw dXQgcGFyYW1ldGVyKS4gVGhlbiB3ZQo+IGNoYW5nZSBhbGwgY2FsbGVycyB0byB1c2UgdGhlIG5l dyBjb252ZW50aW9uOgo+IE9MRDoKPiAJZXJyID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5n LCB1c2VyX2N0eCwgJnJlcSk7Cj4gCWlmIChlcnIpIC4uLgo+IE5FVzoKPiAJcmVxID0gaTkxNV9n ZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCB1c2VyX2N0eCk7Cj4gCWlmIChJU19FUlIocmVxKSkgLi4u Cj4gT0xEOgo+IAllcnIgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1 bHRfY29udGV4dCwgJnJlcSk7Cj4gCWlmIChlcnIpIC4uLgo+IE5FVzoKPiAJcmVxID0gaTkxNV9n ZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxMKTsKPiAJaWYgKElTX0VSUihyZXEpKSAuLi4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+ IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgNiAr Ky0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMgfCAxNCArKysrKy0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgICAgICAgfCAgNiArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jICAgICAgICAgICB8ICA5ICsrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX292ZXJsYXkuYyAgICAgICB8IDI0ICsrKysrKy0tLS0tLS0KPiAgNiBmaWxlcyBjaGFuZ2Vk LCA3NCBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBpbmRleCBjNmRkNGRiLi5jMmIwMDBhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gQEAgLTIyNjAsOSArMjI2MCw5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7 Cj4gIAo+ICB9Owo+ICAKPiAtaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPiAtCQkJICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAt CQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCk7Cj4gK3N0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqIF9fbXVzdF9jaGVjawo+ICtpOTE1X2dlbV9yZXF1ZXN0X2Fs bG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkgICAgICAgc3RydWN0IGlu dGVsX2NvbnRleHQgKmN0eCk7Cj4gIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ICB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZnJl ZShzdHJ1Y3Qga3JlZiAqcmVxX3JlZik7Cj4gIGludCBpOTE1X2dlbV9yZXF1ZXN0X2FkZF90b19j bGllbnQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gaW5kZXggNmM2MGUwNC4uYzkwOGVkMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IEBAIC0yNjg4LDkgKzI2ODgsMTAgQEAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUo c3RydWN0IGtyZWYgKnJlcV9yZWYpCj4gIAlrbWVtX2NhY2hlX2ZyZWUocmVxLT5pOTE1LT5yZXF1 ZXN0cywgcmVxKTsKPiAgfQo+ICAKPiAtaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAtCQkJICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCwKPiAtCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCkKPiArc3Rh dGljIGlubGluZSBpbnQKPiArX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gKwkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICsJCQkg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxX291dCkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShyaW5nLT5kZXYpOwo+ICAJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gQEAgLTI3NTMsNiArMjc1NCwzMSBAQCBlcnI6 Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICsvKioKPiArICogaTkxNV9nZW1fcmVxdWVzdF9h bGxvYyAtIGFsbG9jYXRlIGEgcmVxdWVzdCBzdHJ1Y3R1cmUKPiArICoKPiArICogQGVuZ2luZTog ZW5naW5lIHRoYXQgd2Ugd2lzaCB0byBpc3N1ZSB0aGUgcmVxdWVzdCBvbi4KPiArICogQGN0eDog Y29udGV4dCB0aGF0IHRoZSByZXF1ZXN0IHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoLgo+ICsgKiAg ICAgICBUaGlzIGNhbiBiZSBOVUxMIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBkaXJlY3RseSByZWxh dGVkIHRvCj4gKyAqICAgICAgIGFueSBzcGVjaWZpYyB1c2VyIGNvbnRleHQsIGluIHdoaWNoIGNh c2UgdGhpcyBmdW5jdGlvbiB3aWxsCj4gKyAqICAgICAgIGNob29zZSBhbiBhcHByb3ByaWF0ZSBj b250ZXh0IHRvIHVzZS4KPiArICoKPiArICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFsbG9j YXRlZCByZXF1ZXN0IGlmIHN1Y2Nlc3NmdWwsCj4gKyAqIG9yIGFuIGVycm9yIGNvZGUgaWYgbm90 Lgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKPiAraTkxNV9nZW1fcmVx dWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJICAgICAgIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxOwo+ICsJaW50IGVycjsKPiArCj4gKwlpZiAoY3R4ID09IE5VTEwpCj4gKwkJY3R4 ID0gZW5naW5lLT5kZWZhdWx0X2NvbnRleHQ7CgpJIHRoaW5rIE5VTEwgdnMuIGV4cGxpY2l0IGRl dl9wcml2LT5rZXJuZWxfY29udGV4dCAob3Igd2hhdGV2ZXIgaXQgaXMpIGlzCnNlbWFudGljYWxs eSBlcXVpdmFsZW50IGVub3VnaCB0aGF0IGl0IGRvZXNuJ3QgbWF0dGVyLiBBbmQgd2UgY2FuIGVh c2lseQpzZWQgdGhpcyAob3IgYW4gZW50aXJlIHBhdGNoIHNlcmllcyBmb3IgZWFzeSByZWJhc2lu ZykgaWYgd2UgY2hhbmdlIG91cgptaW5kcy4KCkFja2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgoKPiArCWVyciA9IF9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhl bmdpbmUsIGN0eCwgJnJlcSk7Cj4gKwlyZXR1cm4gZXJyID8gRVJSX1BUUihlcnIpIDogcmVxOwo+ ICt9Cj4gKwo+ICB2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gIAlpbnRlbF9yaW5nX3Jlc2VydmVkX3NwYWNlX2NhbmNl bChyZXEtPnJpbmdidWYpOwo+IEBAIC0zMTcwLDkgKzMxOTYsMTMgQEAgX19pOTE1X2dlbV9vYmpl Y3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCQlyZXR1cm4gMDsK PiAgCj4gIAkJaWYgKCp0b19yZXEgPT0gTlVMTCkgewo+IC0JCQlyZXQgPSBpOTE1X2dlbV9yZXF1 ZXN0X2FsbG9jKHRvLCB0by0+ZGVmYXVsdF9jb250ZXh0LCB0b19yZXEpOwo+IC0JCQlpZiAocmV0 KQo+IC0JCQkJcmV0dXJuIHJldDsKPiArCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXE7Cj4gKwo+ICsJCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHRvLCBOVUxMKTsKPiAr CQkJaWYgKElTX0VSUihyZXEpKQo+ICsJCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiArCj4gKwkJ CSp0b19yZXEgPSByZXE7Cj4gIAkJfQo+ICAKPiAgCQl0cmFjZV9pOTE1X2dlbV9yaW5nX3N5bmNf dG8oKnRvX3JlcSwgZnJvbSwgZnJvbV9yZXEpOwo+IEBAIC0zMzcyLDkgKzM0MDIsOSBAQCBpbnQg aTkxNV9ncHVfaWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCWlmICghaTkxNS5lbmFi bGVfZXhlY2xpc3RzKSB7Cj4gIAkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ ICAKPiAtCQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0 X2NvbnRleHQsICZyZXEpOwo+IC0JCQlpZiAocmV0KQo+IC0JCQkJcmV0dXJuIHJldDsKPiArCQkJ cmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxMKTsKPiArCQkJaWYgKElTX0VS UihyZXEpKQo+ICsJCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiAgCj4gIAkJCXJldCA9IGk5MTVf c3dpdGNoX2NvbnRleHQocmVxKTsKPiAgCQkJaWYgKHJldCkgewo+IEBAIC00ODY5LDEwICs0ODk5 LDkgQEAgaTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJZm9yX2Vh Y2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkgewo+ICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxOwo+ICAKPiAtCQlXQVJOX09OKCFyaW5nLT5kZWZhdWx0X2NvbnRleHQpOwo+IC0K PiAtCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1bHRfY29u dGV4dCwgJnJlcSk7Cj4gLQkJaWYgKHJldCkgewo+ICsJCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3Rf YWxsb2MocmluZywgTlVMTCk7Cj4gKwkJaWYgKElTX0VSUihyZXEpKSB7Cj4gKwkJCXJldCA9IFBU Ul9FUlIocmVxKTsKPiAgCQkJaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKGRldik7Cj4gIAkJ CWdvdG8gb3V0Owo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gaW5kZXggZGNjYjUxNy4uZGM2Y2FlYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtMTM4MSw2ICsxMzgxLDcgQEAgaTkxNV9n ZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJ CSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqZXhlYykKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAr CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gTlVMTDsKPiAgCXN0cnVjdCBlYl92 bWFzICplYjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmo7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBzaGFkb3dfZXhlY19lbnRyeTsKPiBAQCAt MTYwMiwxMSArMTYwMywxMyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJcGFyYW1zLT5iYXRjaF9vYmpfdm1fb2Zmc2V0ID0g aTkxNV9nZW1fb2JqX29mZnNldChiYXRjaF9vYmosIHZtKTsKPiAgCj4gIAkvKiBBbGxvY2F0ZSBh IHJlcXVlc3QgZm9yIHRoaXMgYmF0Y2ggYnVmZmVyIG5pY2UgYW5kIGVhcmx5LiAqLwo+IC0JcmV0 ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBjdHgsICZwYXJhbXMtPnJlcXVlc3QpOwo+ IC0JaWYgKHJldCkKPiArCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgY3R4KTsK PiArCWlmIChJU19FUlIocmVxKSkgewo+ICsJCXJldCA9IFBUUl9FUlIocmVxKTsKPiAgCQlnb3Rv IGVycl9iYXRjaF91bnBpbjsKPiArCX0KPiAgCj4gLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2Fk ZF90b19jbGllbnQocGFyYW1zLT5yZXF1ZXN0LCBmaWxlKTsKPiArCXJldCA9IGk5MTVfZ2VtX3Jl cXVlc3RfYWRkX3RvX2NsaWVudChyZXEsIGZpbGUpOwo+ICAJaWYgKHJldCkKPiAgCQlnb3RvIGVy cl9iYXRjaF91bnBpbjsKPiAgCj4gQEAgLTE2MjIsNiArMTYyNSw3IEBAIGk5MTVfZ2VtX2RvX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCXBhcmFtcy0+ ZGlzcGF0Y2hfZmxhZ3MgICAgICAgICAgPSBkaXNwYXRjaF9mbGFnczsKPiAgCXBhcmFtcy0+YmF0 Y2hfb2JqICAgICAgICAgICAgICAgPSBiYXRjaF9vYmo7Cj4gIAlwYXJhbXMtPmN0eCAgICAgICAg ICAgICAgICAgICAgID0gY3R4Owo+ICsJcGFyYW1zLT5yZXF1ZXN0ICAgICAgICAgICAgICAgICA9 IHJlcTsKPiAgCj4gIAlyZXQgPSBkZXZfcHJpdi0+Z3QuZXhlY2J1Zl9zdWJtaXQocGFyYW1zLCBh cmdzLCAmZWItPnZtYXMpOwo+ICAKPiBAQCAtMTY0NSw4ICsxNjQ5LDggQEAgZXJyOgo+ICAJICog bXVzdCBiZSBmcmVlZCBhZ2Fpbi4gSWYgaXQgd2FzIHN1Ym1pdHRlZCB0aGVuIGl0IGlzIGJlaW5n IHRyYWNrZWQKPiAgCSAqIG9uIHRoZSBhY3RpdmUgcmVxdWVzdCBsaXN0IGFuZCBubyBjbGVhbiB1 cCBpcyByZXF1aXJlZCBoZXJlLgo+ICAJICovCj4gLQlpZiAocmV0ICYmIHBhcmFtcy0+cmVxdWVz dCkKPiAtCQlpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChwYXJhbXMtPnJlcXVlc3QpOwo+ICsJaWYg KHJldCAmJiByZXEpCj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwocmVxKTsKPiAgCj4gIAlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+IGluZGV4IGVkOWFiNjAuLjFmOGY3ODEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTExNzAwLDkgKzExNzAwLDExIEBAIHN0YXRpYyBp bnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJCW9i ai0+bGFzdF93cml0ZV9yZXEpOwo+ICAJfSBlbHNlIHsKPiAgCQlpZiAoIXJlcXVlc3QpIHsKPiAt CQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRl eHQsICZyZXF1ZXN0KTsKPiAtCQkJaWYgKHJldCkKPiArCQkJcmVxdWVzdCA9IGk5MTVfZ2VtX3Jl cXVlc3RfYWxsb2MocmluZywgTlVMTCk7Cj4gKwkJCWlmIChJU19FUlIocmVxdWVzdCkpIHsKPiAr CQkJCXJldCA9IFBUUl9FUlIocmVxdWVzdCk7Cj4gIAkJCQlnb3RvIGNsZWFudXBfdW5waW47Cj4g KwkJCX0KPiAgCQl9Cj4gIAo+ICAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAo ZGV2LCBjcnRjLCBmYiwgb2JqLCByZXF1ZXN0LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g aW5kZXggODA5NmM2YS4uOGI2NTQyZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g QEAgLTI1MTAsMTEgKzI1MTAsMTAgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxs b2Moc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgCWlmIChjdHggIT0gcmluZy0+ZGVmYXVs dF9jb250ZXh0ICYmIHJpbmctPmluaXRfY29udGV4dCkgewo+ICAJCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxOwo+ICAKPiAtCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJp bmcsCj4gLQkJCWN0eCwgJnJlcSk7Cj4gLQkJaWYgKHJldCkgewo+IC0JCQlEUk1fRVJST1IoInJp bmcgY3JlYXRlIHJlcTogJWRcbiIsCj4gLQkJCQlyZXQpOwo+ICsJCXJlcSA9IGk5MTVfZ2VtX3Jl cXVlc3RfYWxsb2MocmluZywgY3R4KTsKPiArCQlpZiAoSVNfRVJSKHJlcSkpIHsKPiArCQkJcmV0 ID0gUFRSX0VSUihyZXEpOwo+ICsJCQlEUk1fRVJST1IoInJpbmcgY3JlYXRlIHJlcTogJWRcbiIs IHJldCk7Cj4gIAkJCWdvdG8gZXJyb3JfcmluZ2J1ZjsKPiAgCQl9Cj4gIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA3NmYxOTgwLi45MTY4NDEzIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IEBAIC0yNDAsOSArMjQwLDkgQEAgc3RhdGlj IGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ICAJ V0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwo+ICAJV0FSTl9PTihJU19JODMwKGRldikgJiYgIShk ZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpKTsKPiAgCj4gLQlyZXQgPSBpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHJpbmctPmRlZmF1bHRfY29udGV4dCwgJnJlcSk7Cj4g LQlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gKwlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2Fs bG9jKHJpbmcsIE5VTEwpOwo+ICsJaWYgKElTX0VSUihyZXEpKQo+ICsJCXJldHVybiBQVFJfRVJS KHJlcSk7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwo+ICAJaWYgKHJl dCkgewo+IEBAIC0yODMsOSArMjgzLDkgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X2NvbnRp bnVlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAo+ICAJaWYgKHRtcCAmICgxIDw8IDE3 KSkKPiAgCQlEUk1fREVCVUcoIm92ZXJsYXkgdW5kZXJydW4sIERPVlNUQTogJXhcbiIsIHRtcCk7 Cj4gIAo+IC0JcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0 X2NvbnRleHQsICZyZXEpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJcmVxID0g aTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxMKTsKPiArCWlmIChJU19FUlIocmVxKSkK PiArCQlyZXR1cm4gUFRSX0VSUihyZXEpOwo+ICAKPiAgCXJldCA9IGludGVsX3JpbmdfYmVnaW4o cmVxLCAyKTsKPiAgCWlmIChyZXQpIHsKPiBAQCAtMzQ5LDkgKzM0OSw5IEBAIHN0YXRpYyBpbnQg aW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gIAkgKiBv ZiB0aGUgaHcuIERvIGl0IGluIGJvdGggY2FzZXMgKi8KPiAgCWZsaXBfYWRkciB8PSBPRkNfVVBE QVRFOwo+ICAKPiAtCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgcmluZy0+ZGVm YXVsdF9jb250ZXh0LCAmcmVxKTsKPiAtCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCXJl cSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgTlVMTCk7Cj4gKwlpZiAoSVNfRVJSKHJl cSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcSwgNik7Cj4gIAlpZiAocmV0KSB7Cj4gQEAgLTQyMyw5ICs0MjMsOSBAQCBzdGF0aWMg aW50IGludGVsX292ZXJsYXlfcmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpv dmVybGF5KQo+ICAJCS8qIHN5bmNocm9ub3VzIHNsb3dwYXRoICovCj4gIAkJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gIAo+IC0JCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKPiAtCQlpZiAocmV0KQo+IC0J CQlyZXR1cm4gcmV0Owo+ICsJCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MocmluZywgTlVM TCk7Cj4gKwkJaWYgKElTX0VSUihyZXEpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihyZXEpOwo+ICAK PiAgCQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgMik7Cj4gIAkJaWYgKHJldCkgewo+IC0t IAo+IDEuOS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=