From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/4] drm/i915: Unify execlist and legacy request life-cycles Date: Wed, 7 Oct 2015 18:03:48 +0200 Message-ID: <20151007160348.GS3383@phenom.ffwll.local> References: <1444143124-16030-1-git-send-email-nicholas.hoath@intel.com> <1444143124-16030-2-git-send-email-nicholas.hoath@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f170.google.com (mail-wi0-f170.google.com [209.85.212.170]) by gabe.freedesktop.org (Postfix) with ESMTPS id 210566E167 for ; Wed, 7 Oct 2015 09:00:56 -0700 (PDT) Received: by wicge5 with SMTP id ge5so219893014wic.0 for ; Wed, 07 Oct 2015 09:00:54 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1444143124-16030-2-git-send-email-nicholas.hoath@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Nick Hoath Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMDYsIDIwMTUgYXQgMDM6NTI6MDFQTSArMDEwMCwgTmljayBIb2F0aCB3cm90 ZToKPiBUaGVyZSBpcyBhIGRlc2lyZSB0byBzaW1wbGlmeSB0aGUgaTkxNSBkcml2ZXIgYnkgcmVk dWNpbmcgdGhlIG51bWJlciBvZgo+IGRpZmZlcmVudCBjb2RlIHBhdGhzIGludHJvZHVjZWQgYnkg dGhlIExSQyAvIGV4ZWNsaXN0cyBzdXBwb3J0LiAgQXMgdGhlCj4gZXhlY2xpc3RzIHJlcXVlc3Qg aXMgbm93IHBhcnQgb2YgdGhlIGdlbSByZXF1ZXN0IGl0IGlzIHBvc3NpYmxlIGFuZAo+IGRlc2ly YWJsZSB0byB1bmlmeSB0aGUgcmVxdWVzdCBsaWZlLWN5Y2xlcyBmb3IgZXhlY2xpc3QgYW5kIGxl Z2FjeQo+IHJlcXVlc3RzLgo+IAo+IEFkZGVkIGEgY29udGV4dCBjb21wbGV0ZSBmbGFnIHRvIGEg cmVxdWVzdCB3aGljaCBnZXRzIHNldCBkdXJpbmcgdGhlCj4gY29udGV4dCBzd2l0Y2ggaW50ZXJy dXB0Lgo+IAo+IEFkZGVkIGEgZnVuY3Rpb24gaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVhYmxlKCku ICBBIHJlcXVlc3QgaXMgY29uc2lkZXJlZAo+IHJldGlyZWFibGUgaWYgaXRzIHNlcW5vIHBhc3Nl ZCAoaS5lLiB0aGUgcmVxdWVzdCBoYXMgY29tcGxldGVkKSBhbmQgZWl0aGVyCj4gaXQgd2FzIG5l dmVyIHN1Ym1pdHRlZCB0byB0aGUgRUxTUCBvciBpdHMgY29udGV4dCBjb21wbGV0ZWQuICBUaGlz IGVuc3VyZXMKPiB0aGF0IGNvbnRleHQgc2F2ZSBpcyBjYXJyaWVkIG91dCBiZWZvcmUgdGhlIGxh c3QgcmVxdWVzdCBmb3IgYSBjb250ZXh0IGlzCj4gY29uc2lkZXJlZCByZXRpcmVhYmxlLiAgcmV0 aXJlX3JlcXVlc3RzX3JpbmcoKSBub3cgdXNlcwo+IGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlYWJs ZSgpIHJhdGhlciB0aGFuIHJlcXVlc3RfY29tcGxldGUoKSB3aGVuIGRlY2lkaW5nCj4gd2hpY2gg cmVxdWVzdHMgdG8gcmV0aXJlLiBSZXF1ZXN0cyB0aGF0IHdlcmUgbm90IHdhaXRpbmcgZm9yIGEg Y29udGV4dAo+IHN3aXRjaCBpbnRlcnJ1cHQgKGVpdGhlciBhcyBhIHJlc3VsdCBvZiBiZWluZyBt ZXJnZWQgaW50byBhIGZvbGxvd2luZwo+IHJlcXVlc3Qgb3IgYnkgYmVpbmcgYSBsZWdhY3kgcmVx dWVzdCkgd2lsbCBiZSBjb25zaWRlcmVkIHJldGlyZWFibGUgYXMKPiBzb29uIGFzIHRoZWlyIHNl cW5vIGhhcyBwYXNzZWQuCj4gCj4gUmVtb3ZlZCB0aGUgZXh0cmEgcmVxdWVzdCByZWZlcmVuY2Ug aGVsZCBmb3IgdGhlIGV4ZWNsaXN0IHJlcXVlc3QuCj4gCj4gUmVtb3ZlZCBpbnRlbF9leGVjbGlz dHNfcmV0aXJlX3JlcXVlc3RzKCkgYW5kIGFsbCByZWZlcmVuY2VzIHRvCj4gaW50ZWxfZW5naW5l X2NzLmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QuCj4gCj4gTW92ZWQgY29udGV4dCB1bnBpbm5p bmcgaW50byByZXRpcmVfcmVxdWVzdHNfcmluZygpIGZvciBub3cuICBGdXJ0aGVyIHdvcmsKPiBp cyBwZW5kaW5nIGZvciB0aGUgY29udGV4dCBwaW5uaW5nIC0gdGhpcyBwYXRjaCBzaG91bGQgYWxs b3cgdXMgdG8gdXNlIHRoZQo+IGFjdGl2ZSBsaXN0IHRvIHRyYWNrIGNvbnRleHQgYW5kIHJpbmcg YnVmZmVyIG9iamVjdHMgbGF0ZXIuCj4gCj4gQ2hhbmdlZCBnZW44X2NzX2lycV9oYW5kbGVyKCkg c28gdGhhdCBub3RpZnlfcmluZygpIGlzIGNhbGxlZCB3aGVuCj4gY29udGV4dHMgY29tcGxldGUg YXMgd2VsbCBhcyB3aGVuIGEgdXNlciBpbnRlcnJ1cHQgb2NjdXJzIHNvIHRoYXQKPiBub3RpZmlj YXRpb24gaGFwcGVucyB3aGVuIGEgcmVxdWVzdCBpcyBjb21wbGV0ZSBhbmQgY29udGV4dCBzYXZl IGhhcwo+IGZpbmlzaGVkLgo+IAo+IHYyOiBSZWJhc2Ugb3ZlciB0aGUgcmVhZC1yZWFkIG9wdGlt aXNhdGlvbiBjaGFuZ2VzCj4gCj4gdjM6IFJld29ya2VkIElSUSBoYW5kbGVyIGFmdGVyIHJlbW92 aW5nIElSUSBoYW5kbGVyIGNsZWFudXAgcGF0Y2gKPiAKPiB2NDogRml4ZWQgdmFyaW91cyBwaW4g bGVha3MKPiAKPiBJc3N1ZTogVklaLTQyNzcKPiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgRGFuaWVs IDx0aG9tYXMuZGFuaWVsQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBOaWNrIEhvYXRoIDxu aWNob2xhcy5ob2F0aEBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICAgICB8ICA2ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jICAgICAgICAgfCA2NyArKysrKysrKysrKysrKysrKysrKystLS0tLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgIHwgODEgKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8 IDQzICsrKy0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5o ICAgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCB8ICAxIC0KPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgODIgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZmJmMGFlOS4uM2QyMTdm OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yMjYyLDYgKzIyNjIsMTIgQEAg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKPiAgCS8qKiBFeGVjbGlzdHMgbm8uIG9mIHRp bWVzIHRoaXMgcmVxdWVzdCBoYXMgYmVlbiBzZW50IHRvIHRoZSBFTFNQICovCj4gIAlpbnQgZWxz cF9zdWJtaXR0ZWQ7Cj4gIAo+ICsJLyoqCj4gKwkgKiBFeGVjbGlzdHM6IHdoZXRoZXIgdGhpcyBy ZXF1ZXN0cydzIGNvbnRleHQgaGFzIGNvbXBsZXRlZCBhZnRlcgo+ICsJICogc3VibWlzc2lvbiB0 byB0aGUgRUxTUAo+ICsJICovCj4gKwlib29sIGN0eF9jb21wbGV0ZTsKPiArCj4gIH07Cj4gIAo+ ICBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDUyNjQyYWYuLmZjODIxNzEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTM4Niw2ICsxMzg2LDI0IEBAIF9faTkxNV9n ZW1fcmVxdWVzdF9yZXRpcmVfX3VwdG8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp Cj4gIAkJCQkgICAgICAgdHlwZW9mKCp0bXApLCBsaXN0KTsKPiAgCj4gIAkJaTkxNV9nZW1fcmVx dWVzdF9yZXRpcmUodG1wKTsKPiArCj4gKwkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ ICsJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0gdG1wLT5jdHg7Cj4gKwkJCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gKwkJCQllbmdpbmUtPmRldi0+ZGV2X3ByaXZh dGU7Cj4gKwkJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpjdHhfb2JqID0KPiArCQkJCWN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlOwo+ ICsKPiArCQkJc3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jaywgZmxhZ3Mp Owo+ICsKPiArCQkJaWYgKGN0eF9vYmogJiYgKGN0eCAhPSBlbmdpbmUtPmRlZmF1bHRfY29udGV4 dCkpCj4gKwkJCQlpbnRlbF9scl9jb250ZXh0X3VucGluKHRtcCk7Cj4gKwo+ICsJCQlpbnRlbF9y dW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVu Z2luZS0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOwo+ICsJCX0KPiArCj4gIAl9IHdoaWxlICh0bXAg IT0gcmVxKTsKPiAgCj4gIAlXQVJOX09OKGk5MTVfdmVyaWZ5X2xpc3RzKGVuZ2luZS0+ZGV2KSk7 Cj4gQEAgLTIzNTksNiArMjM3NywxMiBAQCB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+bW1fbGlzdCwgJnZt YS0+dm0tPmFjdGl2ZV9saXN0KTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgaTkxNV9nZW1fcmVx dWVzdF9yZXRpcmVhYmxlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICt7Cj4g KwlyZXR1cm4gKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkgJiYKPiArCQko IXJlcS0+ZWxzcF9zdWJtaXR0ZWQgfHwgcmVxLT5jdHhfY29tcGxldGUpKTsKPiArfQo+ICsKPiAg c3RhdGljIHZvaWQKPiAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fd3JpdGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiAgewo+IEBAIC0yODI5LDEwICsyODUzLDI4IEBAIGk5MTVf Z2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4g IAkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAo+ICAJCQkJCSAgIGxpc3QpOwo+ ICAKPiAtCQlpZiAoIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QsIHRydWUpKQo+ ICsJCWlmICghaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVhYmxlKHJlcXVlc3QpKQo+ICAJCQlicmVh azsKPiAgCj4gIAkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUocmVxdWVzdCk7Cj4gKwo+ICsJCWlm IChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKPiArCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCA9IHJlcXVlc3QtPmN0eDsKPiArCQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KPiArCQkJCXJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwkJCXVuc2lnbmVkIGxvbmcgZmxh Z3M7Cj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0KPiArCQkJCWN0 eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKPiArCj4gKwkJCXNwaW5fbG9ja19pcnFzYXZlKCZy aW5nLT5leGVjbGlzdF9sb2NrLCBmbGFncyk7Cj4gKwo+ICsJCQlpZiAoY3R4X29iaiAmJiAoY3R4 ICE9IHJpbmctPmRlZmF1bHRfY29udGV4dCkpCj4gKwkJCQlpbnRlbF9scl9jb250ZXh0X3VucGlu KHJlcXVlc3QpOwo+ICsKPiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICsJ CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZyaW5nLT5leGVjbGlzdF9sb2NrLCBmbGFncyk7Cj4g KwkJfQo+ICsKPiAgCX0KPiAgCj4gIAkvKiBNb3ZlIGFueSBidWZmZXJzIG9uIHRoZSBhY3RpdmUg bGlzdCB0aGF0IGFyZSBubyBsb25nZXIgcmVmZXJlbmNlZAo+IEBAIC0yODQ4LDEyICsyODkwLDE0 IEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcpCj4gIAo+ICAJCWlmICghbGlzdF9lbXB0eSgmb2JqLT5sYXN0X3JlYWRfcmVxW3Jpbmct PmlkXS0+bGlzdCkpCj4gIAkJCWJyZWFrOwo+ICsJCWlmICghaTkxNV9nZW1fcmVxdWVzdF9yZXRp cmVhYmxlKG9iai0+bGFzdF9yZWFkX3JlcVtyaW5nLT5pZF0pKQo+ICsJCQlicmVhazsKPiAgCj4g IAkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChvYmosIHJpbmctPmlkKTsKPiAgCX0KPiAg Cj4gIAlpZiAodW5saWtlbHkocmluZy0+dHJhY2VfaXJxX3JlcSAmJgo+IC0JCSAgICAgaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQocmluZy0+dHJhY2VfaXJxX3JlcSwgdHJ1ZSkpKSB7Cj4gKwkJ ICAgICBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZWFibGUocmluZy0+dHJhY2VfaXJxX3JlcSkpKSB7 Cj4gIAkJcmluZy0+aXJxX3B1dChyaW5nKTsKPiAgCQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigm cmluZy0+dHJhY2VfaXJxX3JlcSwgTlVMTCk7Cj4gIAl9Cj4gQEAgLTI4NzIsMTUgKzI5MTYsNiBA QCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWZv cl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKPiAgCQlpOTE1X2dlbV9yZXRpcmVfcmVx dWVzdHNfcmluZyhyaW5nKTsKPiAgCQlpZGxlICY9IGxpc3RfZW1wdHkoJnJpbmctPnJlcXVlc3Rf bGlzdCk7Cj4gLQkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+IC0JCQl1bnNpZ25lZCBs b25nIGZsYWdzOwo+IC0KPiAtCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmV4ZWNsaXN0X2xv Y2ssIGZsYWdzKTsKPiAtCQkJaWRsZSAmPSBsaXN0X2VtcHR5KCZyaW5nLT5leGVjbGlzdF9xdWV1 ZSk7Cj4gLQkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZs YWdzKTsKPiAtCj4gLQkJCWludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMocmluZyk7Cj4g LQkJfQo+ICAJfQo+ICAKPiAgCWlmIChpZGxlKQo+IEBAIC0yOTU2LDEyICsyOTkxLDE0IEBAIGk5 MTVfZ2VtX29iamVjdF9mbHVzaF9hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKPiAgCQlpZiAocmVxID09IE5VTEwpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAobGlz dF9lbXB0eSgmcmVxLT5saXN0KSkKPiAtCQkJZ290byByZXRpcmU7Cj4gKwkJaWYgKGxpc3RfZW1w dHkoJnJlcS0+bGlzdCkpIHsKPiArCQkJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlYWJsZShy ZXEpKQo+ICsJCQkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChvYmosIGkpOwo+ICsJCQlj b250aW51ZTsKPiArCQl9Cj4gIAo+IC0JCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChy ZXEsIHRydWUpKSB7Cj4gKwkJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlYWJsZShyZXEpKSB7 Cj4gIAkJCV9faTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVfX3VwdG8ocmVxKTsKPiAtcmV0aXJlOgo+ ICAJCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKG9iaiwgaSk7Cj4gIAkJfQo+ICAJfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IDhjYTc3MmQuLmViYmFmYWMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMTI5MSw2NiArMTI5MSw5MSBAQCBzdGF0aWMgaXJx cmV0dXJuX3QgZ2VuOF9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gIAkJCQkgICAgICAgdTMyIG1hc3Rlcl9jdGwpCj4gIHsKPiAgCWlycXJldHVybl90 IHJldCA9IElSUV9OT05FOwo+ICsJYm9vbCBuZWVkX25vdGlmeTsKPiAgCj4gIAlpZiAobWFzdGVy X2N0bCAmIChHRU44X0dUX1JDU19JUlEgfCBHRU44X0dUX0JDU19JUlEpKSB7Cj4gLQkJdTMyIHRt cCA9IEk5MTVfUkVBRF9GVyhHRU44X0dUX0lJUigwKSk7Cj4gLQkJaWYgKHRtcCkgewo+IC0JCQlJ OTE1X1dSSVRFX0ZXKEdFTjhfR1RfSUlSKDApLCB0bXApOwo+ICsJCXUzMiBpaXIgPSBJOTE1X1JF QURfRlcoR0VOOF9HVF9JSVIoMCkpOwo+ICsKPiArCQlpZiAoaWlyKSB7Cj4gKwkJCUk5MTVfV1JJ VEVfRlcoR0VOOF9HVF9JSVIoMCksIGlpcik7Cj4gIAkJCXJldCA9IElSUV9IQU5ETEVEOwo+ICAK PiAtCQkJaWYgKHRtcCAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9SQ1Nf SVJRX1NISUZUKSkKPiAtCQkJCWludGVsX2xyY19pcnFfaGFuZGxlcigmZGV2X3ByaXYtPnJpbmdb UkNTXSk7Cj4gLQkJCWlmICh0bXAgJiAoR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhf UkNTX0lSUV9TSElGVCkpCj4gKwkJCW5lZWRfbm90aWZ5ID0gZmFsc2U7Cj4gKwkJCWlmIChpaXIg JiAoR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8Cj4gKwkJCQkJR0VOOF9SQ1NfSVJRX1NI SUZUKSkKPiArCQkJCW5lZWRfbm90aWZ5ID0gaW50ZWxfbHJjX2lycV9oYW5kbGVyKAo+ICsJCQkJ CQkmZGV2X3ByaXYtPnJpbmdbUkNTXSk7Cj4gKwkJCWlmIChpaXIgJiAoR1RfUkVOREVSX1VTRVJf SU5URVJSVVBUIDw8Cj4gKwkJCQkJR0VOOF9SQ1NfSVJRX1NISUZUKSB8fCBuZWVkX25vdGlmeSkK PiAgCQkJCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tSQ1NdKTsKPiAgCj4gLQkJCWlmICh0 bXAgJiAoR1RfQ09OVEVYVF9TV0lUQ0hfSU5URVJSVVBUIDw8IEdFTjhfQkNTX0lSUV9TSElGVCkp Cj4gLQkJCQlpbnRlbF9scmNfaXJxX2hhbmRsZXIoJmRldl9wcml2LT5yaW5nW0JDU10pOwo+IC0J CQlpZiAodG1wICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJ RlQpKQo+ICsJCQluZWVkX25vdGlmeSA9IGZhbHNlOwo+ICsJCQlpZiAoaWlyICYgKEdUX0NPTlRF WFRfU1dJVENIX0lOVEVSUlVQVCA8PAo+ICsJCQkJCUdFTjhfQkNTX0lSUV9TSElGVCkpCj4gKwkJ CQluZWVkX25vdGlmeSA9IGludGVsX2xyY19pcnFfaGFuZGxlcigKPiArCQkJCQkJJmRldl9wcml2 LT5yaW5nW0JDU10pOwo+ICsJCQlpZiAoaWlyICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8 PAo+ICsJCQkJCUdFTjhfQkNTX0lSUV9TSElGVCkgfHwgbmVlZF9ub3RpZnkpCj4gIAkJCQlub3Rp ZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbQkNTXSk7Cj4gIAkJfSBlbHNlCj4gIAkJCURSTV9FUlJP UigiVGhlIG1hc3RlciBjb250cm9sIGludGVycnVwdCBsaWVkIChHVDApIVxuIik7Cj4gIAl9Cj4g IAo+ICAJaWYgKG1hc3Rlcl9jdGwgJiAoR0VOOF9HVF9WQ1MxX0lSUSB8IEdFTjhfR1RfVkNTMl9J UlEpKSB7Cj4gLQkJdTMyIHRtcCA9IEk5MTVfUkVBRF9GVyhHRU44X0dUX0lJUigxKSk7Cj4gLQkJ aWYgKHRtcCkgewo+IC0JCQlJOTE1X1dSSVRFX0ZXKEdFTjhfR1RfSUlSKDEpLCB0bXApOwo+ICsJ CXUzMiBpaXIgPSBJOTE1X1JFQURfRlcoR0VOOF9HVF9JSVIoMSkpOwo+ICsKPiArCQlpZiAoaWly KSB7Cj4gKwkJCUk5MTVfV1JJVEVfRlcoR0VOOF9HVF9JSVIoMSksIGlpcik7Cj4gIAkJCXJldCA9 IElSUV9IQU5ETEVEOwo+ICAKPiAtCQkJaWYgKHRtcCAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRF UlJVUFQgPDwgR0VOOF9WQ1MxX0lSUV9TSElGVCkpCj4gLQkJCQlpbnRlbF9scmNfaXJxX2hhbmRs ZXIoJmRldl9wcml2LT5yaW5nW1ZDU10pOwo+IC0JCQlpZiAodG1wICYgKEdUX1JFTkRFUl9VU0VS X0lOVEVSUlVQVCA8PCBHRU44X1ZDUzFfSVJRX1NISUZUKSkKPiArCQkJbmVlZF9ub3RpZnkgPSBm YWxzZTsKPiArCQkJaWYgKGlpciAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwKPiAr CQkJCQlHRU44X1ZDUzFfSVJRX1NISUZUKSkKPiArCQkJCW5lZWRfbm90aWZ5ID0gaW50ZWxfbHJj X2lycV9oYW5kbGVyKAo+ICsJCQkJCQkmZGV2X3ByaXYtPnJpbmdbVkNTXSk7Cj4gKwkJCWlmIChp aXIgJiAoR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8Cj4gKwkJCQkJR0VOOF9WQ1MxX0lSUV9T SElGVCkgfHwgbmVlZF9ub3RpZnkpCj4gIAkJCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdb VkNTXSk7Cj4gIAo+IC0JCQlpZiAodG1wICYgKEdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8 PCBHRU44X1ZDUzJfSVJRX1NISUZUKSkKPiAtCQkJCWludGVsX2xyY19pcnFfaGFuZGxlcigmZGV2 X3ByaXYtPnJpbmdbVkNTMl0pOwo+IC0JCQlpZiAodG1wICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVS UlVQVCA8PCBHRU44X1ZDUzJfSVJRX1NISUZUKSkKPiArCQkJbmVlZF9ub3RpZnkgPSBmYWxzZTsK PiArCQkJaWYgKGlpciAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwKPiArCQkJCQlH RU44X1ZDUzJfSVJRX1NISUZUKSkKPiArCQkJCW5lZWRfbm90aWZ5ID0gaW50ZWxfbHJjX2lycV9o YW5kbGVyKAo+ICsJCQkJCQkmZGV2X3ByaXYtPnJpbmdbVkNTMl0pOwo+ICsJCQlpZiAoaWlyICYg KEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PAo+ICsJCQkJCUdFTjhfVkNTMl9JUlFfU0hJRlQp IHx8IG5lZWRfbm90aWZ5KQo+ICAJCQkJbm90aWZ5X3JpbmcoJmRldl9wcml2LT5yaW5nW1ZDUzJd KTsKPiAgCQl9IGVsc2UKPiAgCQkJRFJNX0VSUk9SKCJUaGUgbWFzdGVyIGNvbnRyb2wgaW50ZXJy dXB0IGxpZWQgKEdUMSkhXG4iKTsKPiAgCX0KPiAgCj4gIAlpZiAobWFzdGVyX2N0bCAmIEdFTjhf R1RfVkVDU19JUlEpIHsKPiAtCQl1MzIgdG1wID0gSTkxNV9SRUFEX0ZXKEdFTjhfR1RfSUlSKDMp KTsKPiAtCQlpZiAodG1wKSB7Cj4gLQkJCUk5MTVfV1JJVEVfRlcoR0VOOF9HVF9JSVIoMyksIHRt cCk7Cj4gKwkJdTMyIGlpciA9IEk5MTVfUkVBRF9GVyhHRU44X0dUX0lJUigzKSk7Cj4gKwo+ICsJ CWlmIChpaXIpIHsKPiArCQkJSTkxNV9XUklURV9GVyhHRU44X0dUX0lJUigzKSwgaWlyKTsKPiAg CQkJcmV0ID0gSVJRX0hBTkRMRUQ7Cj4gIAo+IC0JCQlpZiAodG1wICYgKEdUX0NPTlRFWFRfU1dJ VENIX0lOVEVSUlVQVCA8PCBHRU44X1ZFQ1NfSVJRX1NISUZUKSkKPiAtCQkJCWludGVsX2xyY19p cnFfaGFuZGxlcigmZGV2X3ByaXYtPnJpbmdbVkVDU10pOwo+IC0JCQlpZiAodG1wICYgKEdUX1JF TkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X1ZFQ1NfSVJRX1NISUZUKSkKPiArCQkJbmVlZF9u b3RpZnkgPSBmYWxzZTsKPiArCQkJaWYgKGlpciAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJV UFQgPDwKPiArCQkJCQlHRU44X1ZFQ1NfSVJRX1NISUZUKSkKPiArCQkJCW5lZWRfbm90aWZ5ID0g aW50ZWxfbHJjX2lycV9oYW5kbGVyKAo+ICsJCQkJCQkmZGV2X3ByaXYtPnJpbmdbVkVDU10pOwo+ ICsJCQlpZiAoaWlyICYgKEdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PAo+ICsJCQkJCUdFTjhf VkVDU19JUlFfU0hJRlQpIHx8IG5lZWRfbm90aWZ5KQo+ICAJCQkJbm90aWZ5X3JpbmcoJmRldl9w cml2LT5yaW5nW1ZFQ1NdKTsKPiAgCQl9IGVsc2UKPiAgCQkJRFJNX0VSUk9SKCJUaGUgbWFzdGVy IGNvbnRyb2wgaW50ZXJydXB0IGxpZWQgKEdUMykhXG4iKTsKPiAgCX0KPiAgCj4gIAlpZiAobWFz dGVyX2N0bCAmIEdFTjhfR1RfUE1fSVJRKSB7Cj4gLQkJdTMyIHRtcCA9IEk5MTVfUkVBRF9GVyhH RU44X0dUX0lJUigyKSk7Cj4gLQkJaWYgKHRtcCAmIGRldl9wcml2LT5wbV9ycHNfZXZlbnRzKSB7 Cj4gKwkJdTMyIGlpciA9IEk5MTVfUkVBRF9GVyhHRU44X0dUX0lJUigyKSk7Cj4gKwo+ICsJCWlm IChpaXIgJiBkZXZfcHJpdi0+cG1fcnBzX2V2ZW50cykgewo+ICAJCQlJOTE1X1dSSVRFX0ZXKEdF TjhfR1RfSUlSKDIpLAo+IC0JCQkJICAgICAgdG1wICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMp Owo+ICsJCQkJICAgICAgaWlyICYgZGV2X3ByaXYtPnBtX3Jwc19ldmVudHMpOwo+ICAJCQlyZXQg PSBJUlFfSEFORExFRDsKPiAtCQkJZ2VuNl9ycHNfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHRtcCk7 Cj4gKwkJCWdlbjZfcnBzX2lycV9oYW5kbGVyKGRldl9wcml2LCBpaXIpOwo+ICAJCX0gZWxzZQo+ ICAJCQlEUk1fRVJST1IoIlRoZSBtYXN0ZXIgY29udHJvbCBpbnRlcnJ1cHQgbGllZCAoUE0pIVxu Iik7Cj4gIAl9CgpJIGhhZCBhIHJlYWxseSBoYXJkIHRpbWUgcmVhZGluZyB0aGlzIHBhdGNoIHVu dGlsIEkgcmVhbGl6ZWQgd2hhdCB5b3UndmUKZG9uZS4gQW5kIHRoaXMgaXMgZGVmaW5pdGVseSBn ZXR0aW5nIHRvbyBjb21wbGljYXRlZC4gSSB0aGluayBpdCdkIGJlIGdvb2QKdG8gZmlyc3QgZXh0 cmFjdCBhIGxpdHRsZSBoZWxwZXIgd2hpY2ggdGFrZXMgdGhlIGlpciBhbmQgdGhlIHNoaWZ0IGFu ZAp0aGVuIGNhbGxzIGJvdGggaW50ZWxfbHJjX2lycV9oYW5kbGVyIGFuZCBub3RpZnkgcmluZy4K CkFsc28gaWYgeW91IGRvIGxhcmdlLXNjYWxlIHJlcGxhY2VtZW50IGxpa2Ugcy90bXAvaWlyLyB0 aGF0IG5lZWRzIHRvIGJlIGEKc2VwYXJhdGUgcGF0Y2guCgpXaXRoIHRoYXQgdGVjaG5pY2FsaXR5 IG91dCBvZiB0aGUgd2F5IGxldCdzIGxvb2sgYXQgdGhlIGxhcmdlciBwaWN0dXJlLgpMZXQgbWUg Zmlyc3QgZGVzY3JpYmUgaW4gbW9yZSBkZXRhaWwgaG93IHRoZSBsZWdhY3kgY3R4IHJldGlyaW5n IHdvcmtzLApzaW5jZSBpdCBkb2Vzbid0IHdvcmsgbGlrZSB3aGF0IHlvdSd2ZSBkb25lIGhlcmUg cmVhbGx5LiBMZXQncyBsb29rIGF0IHRoZQpjYXNlIHdoZXJlIHdlIGhhdmUgc29tZSBiYXRjaCBy dW5uaW5nIG9uIGN0eCBBIGFuZCB0aGVuIHN3aXRjaCB0byBhIGJhdGNoCnJ1bm5pbmcgb24gY3R4 IEI6Cgp8IGN1cnJlbnRseSBjdHggQSBhY3RpdmUgb24gdGhlIGh3CnwgTUlfQkJfU1RBUlQvZmx1 c2hlcy8uLi4KfCBzZXFubyB3cml0ZSArIGludGVycnVwdCBmb3IgdGhlIGJhdGNoIGp1c3Qgc3Vi bWl0dGVkLCB0cmFja2VkIGluIHJlcXVlc3QgMQo8LSBjdHggQSBpcyBzdGlsbCB1c2VkIGJ5IHRo ZSBoYXJkd2FyZSBhbmQgbm90IGZsdXNoZWQgb3V0CnwgTUlfU0VUX0NUWCB0byBzd2l0Y2ggdG8g Qgp8IGJhdGNoL2ZsdXNoCnwgc2Vxbm8gd3JpdGUvaXJxIGZvciByZXF1ZXN0IDIKdgoKV2hhdCB5 b3Ugc2VlbSB0byBiZSBkb2luZyBpcyBjaGFuZ2luZyB0aGUgbG9naWNhbCByZXRpcmUgcG9pbnQg Zm9yIHJlcXVlc3QKMSB0byBpbmNsdWRlIHRoZSBNSV9TRVRfQ1RYIChidXQgaW4gZXhlY2xpc3Qg dGVybXMsIGkuZS4gd2hlbiB0aGUgaHcgaGFzCmNvbmZpcm1lZCB0aGUgY3R4IHN3aXRjaCB0byB0 aGUgbmV4dCBscmMgaW4gdGhlIGVsc3ApLgoKQnV0IHdoYXQgdGhlIGxlZ2FjeSBzdHVmZiBkb2Vz IGlzIHdhaXQgdW50aWwgcmVxdWVzdCAyIHdpdGggcmV0aXJpbmcgdGhlCmN0eCBvYmplY3QgZm9y IGN0eCBCLiBTbyB3aGF0IGhhcHBlbnMgaW4gdGhhdCBjb250ZXh0IHN3aXRjaCBmdW5jdGlvbgoo d2hpY2ggaXMgY2FsbGVkIHN5bmNocm9ub3VzbHkgZnJvbSBleGVjYnVmIGlvY3RsIGNvZGUpIGlz IHRoYXQgd2UKZGlyZWN0bHkgdW5waW4gY3R4IEEgYW5kIHBpbiBjdHggQi4gQW5kIHRoZW4gd2Ug dGhyb3cgdGhlIGN0eCBBIG9iamVjdApvbnRvIHRoZSBhY3RpdmUgbGlzdCB3aXRoIHJlcXVlc3Qg MiBhdHRhY2hlZCBhcyBhIHdyaXRlIGZlbmNlIHRvIG1ha2Ugc3VyZQp0aGUgZXZpY3Rpb24gY29k ZSB3YWl0cyBmb3IgcmVxdWVzdCAyIHRvIGNvbXBsZXRlLCB3aGljaCBuZWNlc3NhcmlseSBtZWFu cwp0aGUgY3R4IHN3aXRjaCBoYXMgY29tcGxldGVkLgoKT2YgY291cnNlIHRoaXMgaXNuJ3QgZW50 aXJlbHkgcGVyZmVjdCBzaW5jZSB3ZSBjb3VsZCBldmljdCBjdHggQSBldmVuCmJlZm9yZSByZXF1 ZXN0IDIgaGFzIGNvbXBsZXRlZCwgYnV0IHNpbmNlIHRocm93aW5nIG91dCBhY3RpdmUgb2JqZWN0 cyBpcwpyZWFsbHkgYSBsYXN0IHJlc29ydCB0aGluZyB0aGF0IGRvZXNuJ3QgcmVhbGx5IG1hdHRl ci4KCk5vdyB3ZSBjb3VsZCBkbyB0aGUgZXhhY3Qgc2FtZSBkZXNpZ24gZm9yIGV4ZWNsaXN0IHNp bmNlIHdlIG5ldmVyIHJlb3JkZXIKZXhlY2xpc3QgY3R4IGluIHVwc3RyZWFtLiBBbmQgdGhhdCdz IHdoYXQgSSBvcmlnaW5hbGx5IHN1Z2dlc3RlZC4gQnV0IHRoYXQKd291bGQgc2VyaW91c2x5IHBp c3Mgb2YgSm9obiB3aXRoIGhpcyBzY2hlZHVsZXIgcGF0Y2hlcy4KCkluc3RlYWQgSSB0aGluayB0 aGUgcHJvcGVyIGRlc2lnbiB3b3VsZCBiZSB0byBjcmVhdGUgYSBuZXcsIHNlcGFyYXRlCnJlcXVl c3Qgb2JqZWN0IGV2ZXJ5IHRpbWUgd2Ugc3VibWl0IGEgbmV3IGJhdGNoIGZvciBhIGRpZmZlcmVu dCBjb250ZXh0Cih3ZSBkb24ndCB3YW50IHRvIGRvIHRoaXMgdW5jb25kaXRpb25hbGx5IGZvciBv dmVyaGVhZHMpIHdoaWNoIHdpbGwKY29tcGxldGUgZXhhY3RseSB3aGVuIHRoZSBjdHggc3dpdGNo IGNvbXBsZXRlcy4gU2luY2Ugd2UgaGF2ZSBmdWxsLWJsb3duCnJlcXVlc3QgYWJzdHJhY3RpbyBu b3dhZGF5cyB0aGF0IHNob3VsZCBiZSBwb3NzaWJsZSB3aXRob3V0IHRvdWNoaW5nCmdlbmVyaWMg Y29kZSBvciBhZGRpbmcgc3BlY2lhbC1jYXNlcyB0byByZXF1ZXN0IG9yIGFjdGl2ZSBvYmplY3Qg dHJhY2tpbmcKY29kZS4KLURhbmllbAoKCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRl eCA4MjVmYTdhLi5lOGY1YjZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAt NDI2LDkgKzQyNiw4IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgCQkJLyogU2FtZSBjdHg6IGlnbm9yZSBmaXJz dCByZXF1ZXN0LCBhcyBzZWNvbmQgcmVxdWVzdAo+ICAJCQkgKiB3aWxsIHVwZGF0ZSB0YWlsIHBh c3QgZmlyc3QgcmVxdWVzdCdzIHdvcmtsb2FkICovCj4gIAkJCWN1cnNvci0+ZWxzcF9zdWJtaXR0 ZWQgPSByZXEwLT5lbHNwX3N1Ym1pdHRlZDsKPiArCQkJcmVxMC0+ZWxzcF9zdWJtaXR0ZWQgPSAw Owo+ICAJCQlsaXN0X2RlbCgmcmVxMC0+ZXhlY2xpc3RfbGluayk7Cj4gLQkJCWxpc3RfYWRkX3Rh aWwoJnJlcTAtPmV4ZWNsaXN0X2xpbmssCj4gLQkJCQkmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9y ZXFfbGlzdCk7Cj4gIAkJCXJlcTAgPSBjdXJzb3I7Cj4gIAkJfSBlbHNlIHsKPiAgCQkJcmVxMSA9 IGN1cnNvcjsKPiBAQCAtNDc4LDExICs0NzcsOSBAQCBzdGF0aWMgYm9vbCBleGVjbGlzdHNfY2hl Y2tfcmVtb3ZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgCQlpZiAo aW50ZWxfZXhlY2xpc3RzX2N0eF9pZChjdHhfb2JqKSA9PSByZXF1ZXN0X2lkKSB7Cj4gIAkJCVdB Uk4oaGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkID09IDAsCj4gIAkJCSAgICAgIk5ldmVyIHN1Ym1p dHRlZCBoZWFkIHJlcXVlc3RcbiIpOwo+IC0KPiAgCQkJaWYgKC0taGVhZF9yZXEtPmVsc3Bfc3Vi bWl0dGVkIDw9IDApIHsKPiArCQkJCWhlYWRfcmVxLT5jdHhfY29tcGxldGUgPSAxOwo+ICAJCQkJ bGlzdF9kZWwoJmhlYWRfcmVxLT5leGVjbGlzdF9saW5rKTsKPiAtCQkJCWxpc3RfYWRkX3RhaWwo JmhlYWRfcmVxLT5leGVjbGlzdF9saW5rLAo+IC0JCQkJCSZyaW5nLT5leGVjbGlzdF9yZXRpcmVk X3JlcV9saXN0KTsKPiAgCQkJCXJldHVybiB0cnVlOwo+ICAJCQl9Cj4gIAkJfQo+IEBAIC00OTcs OCArNDk0LDkgQEAgc3RhdGljIGJvb2wgZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAqCj4gICAqIENoZWNrIHRoZSB1bnJlYWQg Q29udGV4dCBTdGF0dXMgQnVmZmVycyBhbmQgbWFuYWdlIHRoZSBzdWJtaXNzaW9uIG9mIG5ldwo+ ICAgKiBjb250ZXh0cyB0byB0aGUgRUxTUCBhY2NvcmRpbmdseS4KPiArICogQHJldHVybiB3aGV0 aGVyIGEgY29udGV4dCBjb21wbGV0ZWQKPiAgICovCj4gLXZvaWQgaW50ZWxfbHJjX2lycV9oYW5k bGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gK2Jvb2wgaW50ZWxfbHJjX2lycV9o YW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gIAl1MzIg c3RhdHVzX3BvaW50ZXI7Cj4gQEAgLTU1OCw2ICs1NTYsOCBAQCB2b2lkIGludGVsX2xyY19pcnFf aGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAJCSAgIF9NQVNLRURfRklF TEQoR0VOOF9DU0JfUFRSX01BU0sgPDwgOCwKPiAgCQkJCSAoKHUzMilyaW5nLT5uZXh0X2NvbnRl eHRfc3RhdHVzX2J1ZmZlciAmCj4gIAkJCQkgIEdFTjhfQ1NCX1BUUl9NQVNLKSA8PCA4KSk7Cj4g Kwo+ICsJcmV0dXJuIChzdWJtaXRfY29udGV4dHMgIT0gMCk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBp bnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQo+IEBAIC01NjksOCArNTY5LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4 dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAlpZiAocmVx dWVzdC0+Y3R4ICE9IHJpbmctPmRlZmF1bHRfY29udGV4dCkKPiAgCQlpbnRlbF9scl9jb250ZXh0 X3BpbihyZXF1ZXN0KTsKPiAgCj4gLQlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZShyZXF1ZXN0 KTsKPiAtCj4gIAlzcGluX2xvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKPiAgCj4gIAls aXN0X2Zvcl9lYWNoX2VudHJ5KGN1cnNvciwgJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLCBleGVjbGlz dF9saW5rKQo+IEBAIC01ODgsOCArNTg2LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4 dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAkJCVdBUk4o dGFpbF9yZXEtPmVsc3Bfc3VibWl0dGVkICE9IDAsCj4gIAkJCQkiTW9yZSB0aGFuIDIgYWxyZWFk eS1zdWJtaXR0ZWQgcmVxcyBxdWV1ZWRcbiIpOwo+ICAJCQlsaXN0X2RlbCgmdGFpbF9yZXEtPmV4 ZWNsaXN0X2xpbmspOwo+IC0JCQlsaXN0X2FkZF90YWlsKCZ0YWlsX3JlcS0+ZXhlY2xpc3RfbGlu aywKPiAtCQkJCSZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKPiAgCQl9Cj4gIAl9 Cj4gIAo+IEBAIC05NTgsMzIgKzk1NCw2IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lv bihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXZvaWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwgKnRtcDsKPiAtCXN0cnVjdCBsaXN0X2hlYWQgcmV0aXJlZF9saXN0Owo+IC0KPiAtCVdB Uk5fT04oIW11dGV4X2lzX2xvY2tlZCgmcmluZy0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKPiAtCWlm IChsaXN0X2VtcHR5KCZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KSkKPiAtCQlyZXR1 cm47Cj4gLQo+IC0JSU5JVF9MSVNUX0hFQUQoJnJldGlyZWRfbGlzdCk7Cj4gLQlzcGluX2xvY2tf aXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKPiAtCWxpc3RfcmVwbGFjZV9pbml0KCZyaW5nLT5l eGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0LCAmcmV0aXJlZF9saXN0KTsKPiAtCXNwaW5fdW5sb2Nr X2lycSgmcmluZy0+ZXhlY2xpc3RfbG9jayk7Cj4gLQo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHJlcSwgdG1wLCAmcmV0aXJlZF9saXN0LCBleGVjbGlzdF9saW5rKSB7Cj4gLQkJc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCA9IHJlcS0+Y3R4Owo+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpjdHhfb2JqID0KPiAtCQkJCWN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKPiAt Cj4gLQkJaWYgKGN0eF9vYmogJiYgKGN0eCAhPSByaW5nLT5kZWZhdWx0X2NvbnRleHQpKQo+IC0J CQlpbnRlbF9scl9jb250ZXh0X3VucGluKHJlcSk7Cj4gLQkJbGlzdF9kZWwoJnJlcS0+ZXhlY2xp c3RfbGluayk7Cj4gLQkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+IC0JfQo+ IC19Cj4gLQo+ICB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTE5MzgsNyArMTkwOCw2IEBAIHN0YXRpYyBp bnQgbG9naWNhbF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluCj4gIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUp Owo+ICAKPiAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSk7Cj4gLQlJTklU X0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7Cj4gIAlzcGluX2xv Y2tfaW5pdCgmcmluZy0+ZXhlY2xpc3RfbG9jayk7Cj4gIAo+ICAJcmV0ID0gaTkxNV9jbWRfcGFy c2VyX2luaXRfcmluZyhyaW5nKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+IGluZGV4IDRl NjBkNTQuLmU2YTQ5MDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+IEBAIC05NSw3 ICs5NSw3IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVj YnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJCQkgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdm1h cyk7Cj4gIHUzMiBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpjdHhfb2JqKTsKPiAgCj4gLXZvaWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICtib29sIGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAgdm9pZCBpbnRlbF9leGVjbGlzdHNfcmV0aXJl X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwo+ICAKPiAgI2VuZGlmIC8q IF9JTlRFTF9MUkNfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4gaW5kZXggNDlmYTQxZC4uZDk5YjE2NyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKPiBAQCAtMjY0LDcgKzI2NCw2IEBAIHN0cnVjdCAgaW50ZWxfZW5naW5l X2NzIHsKPiAgCS8qIEV4ZWNsaXN0cyAqLwo+ICAJc3BpbmxvY2tfdCBleGVjbGlzdF9sb2NrOwo+ ICAJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9xdWV1ZTsKPiAtCXN0cnVjdCBsaXN0X2hlYWQg ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdDsKPiAgCXU4IG5leHRfY29udGV4dF9zdGF0dXNfYnVm ZmVyOwo+ICAJdTMyICAgICAgICAgICAgIGlycV9rZWVwX21hc2s7IC8qIGJpdG1hc2sgZm9yIGlu dGVycnVwdHMgdGhhdCBzaG91bGQgbm90IGJlIG1hc2tlZCAqLwo+ICAJaW50CQkoKmVtaXRfcmVx dWVzdCkoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKPiAtLSAKPiAxLjku MQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24K aHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK