From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3] drm/i915: Split execlist priority queue into rbtree + linked list Date: Tue, 16 May 2017 08:55:38 +0100 Message-ID: <78cd05e4-3be6-ee89-13fc-d75a42f49079@linux.intel.com> References: <20170515125616.3938-1-chris@chris-wilson.co.uk> <20170515132950.30208-1-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id A08E889E9B for ; Tue, 16 May 2017 07:55:53 +0000 (UTC) In-Reply-To: <20170515132950.30208-1-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 Ck9uIDE1LzA1LzIwMTcgMTQ6MjksIENocmlzIFdpbHNvbiB3cm90ZToKPiBBbGwgdGhlIHJlcXVl c3RzIGF0IHRoZSBzYW1lIHByaW9yaXR5IGFyZSBleGVjdXRlZCBpbiBGSUZPIG9yZGVyLiBUaGV5 Cj4gZG8gbm90IG5lZWQgdG8gYmUgc3RvcmVkIGluIHRoZSByYnRyZWUgdGhlbXNlbHZlcywgYXMg dGhleSBhcmUgYSBzaW1wbGUKPiBsaXN0IHdpdGhpbiBhIGxldmVsLiBJZiB3ZSBtb3ZlIHRoZSBy ZXF1ZXN0cyBhdCBvbmUgcHJpb3JpdHkgaW50byBhIGxpc3QsCj4gd2UgY2FuIHRoZW4gcmVkdWNl IHRoZSByYnRyZWUgdG8gdGhlIHNldCBvZiBwcmlvcml0aWVzLiBUaGlzIHNob3VsZCBrZWVwCj4g dGhlIGhlaWdodCBvZiB0aGUgcmJ0cmVlIHNtYWxsLCBhcyB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBw cmlvcml0aWVzIGNhbiBub3QKPiBleGNlZWQgdGhlIG51bWJlciBvZiBhY3RpdmUgcmVxdWVzdHMg YW5kIHNob3VsZCBiZSB0eXBpY2FsbHkgb25seSBhIGZldy4KPgo+IEN1cnJlbnRseSwgd2UgaGF2 ZSB+MmsgcG9zc2libGUgZGlmZmVyZW50IHByaW9yaXR5IGxldmVscywgdGhhdCBtYXkKPiBpbmNy ZWFzZSB0byBhbGxvdyBldmVuIG1vcmUgZmluZSBncmFpbmVkIHNlbGVjdGlvbi4gQWxsb2NhdGlu ZyB0aG9zZSBpbgo+IGFkdmFuY2Ugc2VlbXMgYSB3YXN0ZSAoYW5kIG1heSBiZSBpbXBvc3NpYmxl KSwgc28gd2Ugb3B0IGZvciBhbGxvY2F0aW5nCj4gdXBvbiBmaXJzdCB1c2UsIGFuZCBmcmVlaW5n IGFmdGVyIGl0cyByZXF1ZXN0cyBhcmUgZGVwbGV0ZWQuIFRvIGF2b2lkCj4gdGhlIHBvc3NpYmls aXR5IG9mIGFuIGFsbG9jYXRpb24gZmFpbHVyZSBjYXVzaW5nIHVzIHRvIGxvc2UgYSByZXF1ZXN0 LAo+IHdlIHByZWFsbG9jYXRlIHRoZSBkZWZhdWx0IHByaW9yaXR5ICgwKSBhbmQgYnVtcCBhbnkg cmVxdWVzdCB0byB0aGF0Cj4gcHJpb3JpdHkgaWYgd2UgZmFpbCB0byBhbGxvY2F0ZSBpdCB0aGUg YXBwcm9wcmlhdGUgcGxpc3QuIEhhdmluZyBhCj4gcmVxdWVzdCAodGhhdCBpcyByZWFkeSB0byBy dW4sIHNvIG5vdCBsZWFkaW5nIHRvIGNvcnJ1cHRpb24pIGV4ZWN1dGUKPiBvdXQtb2Ytb3JkZXIg aXMgYmV0dGVyIHRoYW4gbGVha2luZyB0aGUgcmVxdWVzdCAoYW5kIGl0cyBkZXBlbmRlbmN5Cj4g dHJlZSkgZW50aXJlbHkuCj4KPiBUaGVyZSBzaG91bGQgYmUgYSBiZW5lZml0IHRvIHJlZHVjaW5n IGV4ZWNsaXN0c19kZXF1ZXVlKCkgdG8gcHJpbmNpcGFsbHkKPiB1c2luZyBhIHNpbXBsZSBsaXN0 IChhbmQgcmVkdWNpbmcgdGhlIGZyZXF1ZW5jeSBvZiBib3RoIHJidHJlZSBpdGVyYXRpb24KPiBh bmQgYmFsYW5jaW5nIG9uIGVyYXNlKSBidXQgZm9yIHR5cGljYWwgd29ya2xvYWRzLCByZXF1ZXN0 IGNvYWxlc2NpbmcKPiBzaG91bGQgYmUgc21hbGwgZW5vdWdoIHRoYXQgd2UgZG9uJ3Qgbm90aWNl IGFueSBjaGFuZ2UuIFRoZSBtYWluIGdhaW4gaXMKPiBmcm9tIGltcHJvdmluZyBQSSBjYWxscyB0 byBzY2hlZHVsZSwgYW5kIHRoZSBleHBsaWNpdCBsaXN0IHdpdGhpbiBhCj4gbGV2ZWwgc2hvdWxk IG1ha2UgcmVxdWVzdCB1bndpbmRpbmcgc2ltcGxlciAod2UganVzdCBuZWVkIHRvIGluc2VydCBh dAo+IHRoZSBoZWFkIG9mIHRoZSBsaXN0IHJhdGhlciB0aGFuIHRoZSB0YWlsIGFuZCBub3QgaGF2 ZSB0byBtYWtlIHRoZQo+IHJidHJlZSBzZWFyY2ggbW9yZSBjb21wbGljYXRlZCkuCj4KPiB2Mjog QXZvaWQgdXNlLWFmdGVyLWZyZWUgd2hlbiBkZWxldGluZyBhIGRlcGxldGVkIHByaW9saXN0Cj4K PiB2MzogTWljaGHFgiBmb3VuZCB0aGUgc29sdXRpb24gdG8gaGFuZGxpbmcgdGhlIGFsbG9jYXRp b24gZmFpbHVyZQo+IGdyYWNlZnVsbHkuIElmIHdlIGRpc2FibGUgYWxsIHByaW9yaXR5IHNjaGVk dWxpbmcgZm9sbG93aW5nIHRoZQo+IGFsbG9jYXRpb24gZmFpbHVyZSwgdGhvc2UgcmVxdWVzdHMg d2lsbCBiZSBleGVjdXRlZCBpbiBmaWZvIGFuZCB3ZSB3aWxsCj4gZW5zdXJlIHRoYXQgdGhpcyBy ZXF1ZXN0IGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFyZSBpbiBzdHJpY3QgZmlmbyAoZXZlbgo+IHdo ZW4gaXQgZG9lc24ndCByZWFsaXNlIGl0IGlzIG9ubHkgYSBzaW5nbGUgbGlzdCkuIE5vcm1hbCBz Y2hlZHVsaW5nIGlzCj4gcmVzdG9yZWQgb25jZSB3ZSBrbm93IHRoZSBkZXZpY2UgaXMgaWRsZSwg dW50aWwgdGhlIG5leHQgZmFpbHVyZSEKPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNaWNoYcWCIFdpbmlhcnNraSA8bWljaGFs LndpbmlhcnNraUBpbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4 LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICAgICAgIHwgIDExICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAg ICAgICB8ICAgNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMg ICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICAg IHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8 ICA1MCArKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3V0aWxzLmggICAgICAg ICAgfCAgIDkgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAg IHwgIDEyICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICB8 IDE4NCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggICAgfCAgIDkgKysKPiAgOSBmaWxlcyBjaGFuZ2VkLCAxOTMg aW5zZXJ0aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+IGluZGV4IGYxM2I1Yjg5NWEyYi4uNTUzZjAxNmVmZTY0IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMzM1Miw3ICszMzUyLDYgQEAgc3RhdGljIGlu dCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+Cj4g IAkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAJCQl1MzIgcHRyLCByZWFkLCB3cml0 ZTsKPiAtCQkJc3RydWN0IHJiX25vZGUgKnJiOwo+ICAJCQl1bnNpZ25lZCBpbnQgaWR4Owo+Cj4g IAkJCXNlcV9wcmludGYobSwgIlx0RXhlY2xpc3Qgc3RhdHVzOiAweCUwOHggJTA4eFxuIiwKPiBA QCAtMzM5Niw5ICszMzk1LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4KPiAg CQkJc3Bpbl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gLQkJCWZvciAocmIg PSBlbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0OyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewo+IC0JCQkJ cnEgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpycSksIHByaW90cmVlLm5vZGUpOwo+IC0JCQkJcHJp bnRfcmVxdWVzdChtLCBycSwgIlx0XHRRICIpOwo+ICsJCQlmb3IgKHJiID0gZW5naW5lLT5leGVj bGlzdF9maXJzdDsgcmI7IHJiID0gcmJfbmV4dChyYikpewo+ICsJCQkJc3RydWN0IGk5MTVfcHJp b2xpc3QgKnAgPQo+ICsJCQkJCXJiX2VudHJ5KHJiLCB0eXBlb2YoKnApLCBub2RlKTsKPiArCj4g KwkJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmcC0+cmVxdWVzdHMsCj4gKwkJCQkJCSAgICBw cmlvdHJlZS5saW5rKQo+ICsJCQkJCXByaW50X3JlcXVlc3QobSwgcnEsICJcdFx0USAiKTsKPiAg CQkJfQo+ICAJCQlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICAJ CX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDYpIHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBpbmRleCA4MzUxOGNkYjE5ZjMuLjA3ZGIwOGNjNmJlMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IEBAIC0zMTU1LDggKzMxNTUsNiBAQCBpOTE1X2dlbV9pZGxlX3dvcmtf aGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPQo+ICAJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmRldl9wcml2 KSwgZ3QuaWRsZV93b3JrLndvcmspOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZf cHJpdi0+ZHJtOwo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IC0JZW51bSBp bnRlbF9lbmdpbmVfaWQgaWQ7Cj4gIAlib29sIHJlYXJtX2hhbmdjaGVjazsKPgo+ICAJaWYgKCFS RUFEX09OQ0UoZGV2X3ByaXYtPmd0LmF3YWtlKSkKPiBAQCAtMzE5NCwxMCArMzE5Miw3IEBAIGk5 MTVfZ2VtX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiAgCWlm ICh3YWl0X2ZvcihpbnRlbF9lbmdpbmVzX2FyZV9pZGxlKGRldl9wcml2KSwgMTApKQo+ICAJCURS TV9FUlJPUigiVGltZW91dCB3YWl0aW5nIGZvciBlbmdpbmVzIHRvIGlkbGVcbiIpOwo+Cj4gLQlm b3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPiAtCQlpbnRlbF9lbmdpbmVf ZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gLQkJaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5p KCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+IC0JfQo+ICsJaW50ZWxfZW5naW5lc19tYXJrX2lkbGUo ZGV2X3ByaXYpOwo+ICAJaTkxNV9nZW1fdGltZWxpbmVzX21hcmtfaWRsZShkZXZfcHJpdik7Cj4K PiAgCUdFTV9CVUdfT04oIWRldl9wcml2LT5ndC5hd2FrZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDEwMzYxYzdlM2IzNy4uMWNjZjI1MjJjZGZkIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBAIC0xNTksNyAr MTU5LDcgQEAgaTkxNV9wcmlvdHJlZV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCBzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X2RlcGVuZGVu Y3kgKmRlcCwgKm5leHQ7Cj4KPiAtCUdFTV9CVUdfT04oIVJCX0VNUFRZX05PREUoJnB0LT5ub2Rl KSk7Cj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZwdC0+bGluaykpOwo+Cj4gIAkvKiBFdmVy eW9uZSB3ZSBkZXBlbmRlZCB1cG9uICh0aGUgZmVuY2VzIHdlIHdhaXQgdG8gYmUgc2lnbmFsZWQp Cj4gIAkgKiBzaG91bGQgcmV0aXJlIGJlZm9yZSB1cyBhbmQgcmVtb3ZlIHRoZW1zZWx2ZXMgZnJv bSBvdXIgbGlzdC4KPiBAQCAtMTg1LDcgKzE4NSw3IEBAIGk5MTVfcHJpb3RyZWVfaW5pdChzdHJ1 Y3QgaTkxNV9wcmlvdHJlZSAqcHQpCj4gIHsKPiAgCUlOSVRfTElTVF9IRUFEKCZwdC0+c2lnbmFs ZXJzX2xpc3QpOwo+ICAJSU5JVF9MSVNUX0hFQUQoJnB0LT53YWl0ZXJzX2xpc3QpOwo+IC0JUkJf Q0xFQVJfTk9ERSgmcHQtPm5vZGUpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnB0LT5saW5rKTsKPiAg CXB0LT5wcmlvcml0eSA9IElOVF9NSU47Cj4gIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmgKPiBpbmRleCA0YzhmYjZlZmMwZjEuLjdiN2M4NDM2OWQ3OCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBAQCAtNjcsNyArNjcsNyBA QCBzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IHsKPiAgc3RydWN0IGk5MTVfcHJpb3RyZWUgewo+ICAJ c3RydWN0IGxpc3RfaGVhZCBzaWduYWxlcnNfbGlzdDsgLyogdGhvc2UgYmVmb3JlIHVzLCB3ZSBk ZXBlbmQgdXBvbiAqLwo+ICAJc3RydWN0IGxpc3RfaGVhZCB3YWl0ZXJzX2xpc3Q7IC8qIHRob3Nl IGFmdGVyIHVzLCB0aGV5IGRlcGVuZCB1cG9uIHVzICovCj4gLQlzdHJ1Y3QgcmJfbm9kZSBub2Rl Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaW5rOwo+ICAJaW50IHByaW9yaXR5Owo+ICAjZGVmaW5l IEk5MTVfUFJJT1JJVFlfTUFYIDEwMjQKPiAgI2RlZmluZSBJOTE1X1BSSU9SSVRZX05PUk1BTCAw Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IGYw NjljMWZhZjlhOS4uNDQwYmFiODU2Y2MyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC02NzQsMzIgKzY3NCw0MiBAQCBzdGF0aWMgYm9vbCBp OTE1X2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+ICAJc3Bp bl9sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7Cj4gIAlyYiA9IGVuZ2luZS0+ZXhl Y2xpc3RfZmlyc3Q7Cj4gKwlHRU1fQlVHX09OKHJiX2ZpcnN0KCZlbmdpbmUtPmV4ZWNsaXN0X3F1 ZXVlKSAhPSByYik7Cj4gIAl3aGlsZSAocmIpIHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJxID0KPiAtCQkJcmJfZW50cnkocmIsIHR5cGVvZigqcnEpLCBwcmlvdHJlZS5ub2Rl KTsKPiAtCj4gLQkJaWYgKGxhc3QgJiYgcnEtPmN0eCAhPSBsYXN0LT5jdHgpIHsKPiAtCQkJaWYg KHBvcnQgIT0gZW5naW5lLT5leGVjbGlzdF9wb3J0KQo+IC0JCQkJYnJlYWs7Cj4gLQo+IC0JCQlw b3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKPiAtCQkJcG9ydCsrOwo+ICsJCXN0cnVjdCBpOTE1X3By aW9saXN0ICpwID0gcmJfZW50cnkocmIsIHR5cGVvZigqcCksIG5vZGUpOwo+ICsJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnEsICpybjsKPiArCj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKHJxLCBybiwgJnAtPnJlcXVlc3RzLCBwcmlvdHJlZS5saW5rKSB7Cj4gKwkJCWlmIChs YXN0ICYmIHJxLT5jdHggIT0gbGFzdC0+Y3R4KSB7Cj4gKwkJCQlpZiAocG9ydCAhPSBlbmdpbmUt PmV4ZWNsaXN0X3BvcnQpIHsKPiArCQkJCQlfX2xpc3RfZGVsX21hbnkoJnAtPnJlcXVlc3RzLAo+ ICsJCQkJCQkJJnJxLT5wcmlvdHJlZS5saW5rKTsKPiArCQkJCQlnb3RvIGRvbmU7Cj4gKwkJCQl9 Cj4gKwo+ICsJCQkJcG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7Cj4gKwkJCQlwb3J0Kys7Cj4gKwkJ CX0KPiArCj4gKwkJCUlOSVRfTElTVF9IRUFEKCZycS0+cHJpb3RyZWUubGluayk7Cj4gKwkJCXJx LT5wcmlvdHJlZS5wcmlvcml0eSA9IElOVF9NQVg7Cj4gKwo+ICsJCQlpOTE1X2d1Y19zdWJtaXQo cnEpOwo+ICsJCQl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X2luKHJxLCBwb3J0IC0gZW5naW5lLT5l eGVjbGlzdF9wb3J0KTsKPiArCQkJbGFzdCA9IHJxOwo+ICsJCQlzdWJtaXQgPSB0cnVlOwo+ICAJ CX0KPgo+ICAJCXJiID0gcmJfbmV4dChyYik7Cj4gLQkJcmJfZXJhc2UoJnJxLT5wcmlvdHJlZS5u b2RlLCAmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gLQkJUkJfQ0xFQVJfTk9ERSgmcnEtPnBy aW90cmVlLm5vZGUpOwo+IC0JCXJxLT5wcmlvdHJlZS5wcmlvcml0eSA9IElOVF9NQVg7Cj4gLQo+ IC0JCWk5MTVfZ3VjX3N1Ym1pdChycSk7Cj4gLQkJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9pbihy cSwgcG9ydCAtIGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCk7Cj4gLQkJbGFzdCA9IHJxOwo+IC0JCXN1 Ym1pdCA9IHRydWU7Cj4gKwkJcmJfZXJhc2UoJnAtPm5vZGUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1 ZXVlKTsKPiArCQlJTklUX0xJU1RfSEVBRCgmcC0+cmVxdWVzdHMpOwo+ICsJCWlmIChwLT5wcmlv cml0eSAhPSBJOTE1X1BSSU9SSVRZX05PUk1BTCkKPiArCQkJa2ZyZWUocCk7Cj4gIAl9Cj4gLQlp ZiAoc3VibWl0KSB7Cj4gK2RvbmU6Cj4gKwllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gcmI7Cj4g KwlpZiAoc3VibWl0KQo+ICAJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOwo+IC0JCWVuZ2luZS0+ ZXhlY2xpc3RfZmlyc3QgPSByYjsKPiAtCX0KPiAgCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50 aW1lbGluZS0+bG9jayk7Cj4KPiAgCXJldHVybiBzdWJtaXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf dXRpbHMuaAo+IGluZGV4IGQ5ZGYyMzc5NWY5YS4uMTZlY2QxYWIxMDhkIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdXRpbHMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdXRpbHMuaAo+IEBAIC0xMDUsNCArMTA1LDEzIEBACj4gIAlfX2lkeDsJCQkJ CQkJCVwKPiAgfSkKPgo+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICsKPiArc3RhdGljIGlu bGluZSB2b2lkIF9fbGlzdF9kZWxfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAo+ICsJCQkJ ICAgc3RydWN0IGxpc3RfaGVhZCAqZmlyc3QpCj4gK3sKPiArCWZpcnN0LT5wcmV2ID0gaGVhZDsK PiArCVdSSVRFX09OQ0UoaGVhZC0+bmV4dCwgZmlyc3QpOwo+ICt9Cj4gKwo+ICAjZW5kaWYgLyog IV9fSTkxNV9VVElMU19IICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMK PiBpbmRleCBjODlmMGUyMDMwZGEuLmVhMTNmYTIxMjhjYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTEyNzIsNiArMTI3MiwxOCBAQCB2b2lkIGludGVs X2VuZ2luZXNfcmVzZXRfZGVmYXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICAJCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbihlbmdpbmUpOwo+ICB9 Cj4KPiArdm9pZCBpbnRlbF9lbmdpbmVzX21hcmtfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJZW51 bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkx NSwgaWQpIHsKPiArCQlpbnRlbF9lbmdpbmVfZGlzYXJtX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4g KwkJaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOwo+ICsJCWVu Z2luZS0+bm9fcHJpb2xpc3QgPSBmYWxzZTsKPiArCX0KPiArfQo+ICsKPiAgI2lmIElTX0VOQUJM RUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQo+ICAjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tf ZW5naW5lLmMiCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZDdj YjU1MTdmNTk2Li40Y2UwOTI5YTAzYTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ IEBAIC00MzYsNTcgKzQzNiw3NiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4KPiAgCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+ dGltZWxpbmUtPmxvY2spOwo+ICAJcmIgPSBlbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0Owo+ICsJR0VN X0JVR19PTihyYl9maXJzdCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSkgIT0gcmIpOwo+ICAJd2hp bGUgKHJiKSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpjdXJzb3IgPQo+IC0J CQlyYl9lbnRyeShyYiwgdHlwZW9mKCpjdXJzb3IpLCBwcmlvdHJlZS5ub2RlKTsKPiAtCj4gLQkJ LyogQ2FuIHdlIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdpdGggdGhlIGN1cnJlbnQgcG9ydD8gSXQg aGFzIHRvCj4gLQkJICogYmUgdGhlIHNhbWUgY29udGV4dC9yaW5nYnVmZmVyIGFuZCBub3QgaGF2 ZSBhbnkgZXhjZXB0aW9ucwo+IC0JCSAqIChlLmcuIEdWVCBzYXlpbmcgbmV2ZXIgdG8gY29tYmlu ZSBjb250ZXh0cykuCj4gLQkJICoKPiAtCQkgKiBJZiB3ZSBjYW4gY29tYmluZSB0aGUgcmVxdWVz dHMsIHdlIGNhbiBleGVjdXRlIGJvdGggYnkKPiAtCQkgKiB1cGRhdGluZyB0aGUgUklOR19UQUlM IHRvIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIHNlY29uZAo+IC0JCSAqIHJlcXVlc3QsIGFuZCBz byB3ZSBuZXZlciBuZWVkIHRvIHRlbGwgdGhlIGhhcmR3YXJlIGFib3V0Cj4gLQkJICogdGhlIGZp cnN0Lgo+IC0JCSAqLwo+IC0JCWlmIChsYXN0ICYmICFjYW5fbWVyZ2VfY3R4KGN1cnNvci0+Y3R4 LCBsYXN0LT5jdHgpKSB7Cj4gLQkJCS8qIElmIHdlIGFyZSBvbiB0aGUgc2Vjb25kIHBvcnQgYW5k IGNhbm5vdCBjb21iaW5lCj4gLQkJCSAqIHRoaXMgcmVxdWVzdCB3aXRoIHRoZSBsYXN0LCB0aGVu IHdlIGFyZSBkb25lLgo+IC0JCQkgKi8KPiAtCQkJaWYgKHBvcnQgIT0gZW5naW5lLT5leGVjbGlz dF9wb3J0KQo+IC0JCQkJYnJlYWs7Cj4gLQo+IC0JCQkvKiBJZiBHVlQgb3ZlcnJpZGVzIHVzIHdl IG9ubHkgZXZlciBzdWJtaXQgcG9ydFswXSwKPiAtCQkJICogbGVhdmluZyBwb3J0WzFdIGVtcHR5 LiBOb3RlIHRoYXQgd2UgYWxzbyBoYXZlCj4gLQkJCSAqIHRvIGJlIGNhcmVmdWwgdGhhdCB3ZSBk b24ndCBxdWV1ZSB0aGUgc2FtZQo+IC0JCQkgKiBjb250ZXh0IChldmVuIHRob3VnaCBhIGRpZmZl cmVudCByZXF1ZXN0KSB0bwo+IC0JCQkgKiB0aGUgc2Vjb25kIHBvcnQuCj4gKwkJc3RydWN0IGk5 MTVfcHJpb2xpc3QgKnAgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7Cj4gKwkJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSwgKnJuOwo+ICsKPiArCQlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUocnEsIHJuLCAmcC0+cmVxdWVzdHMsIHByaW90cmVlLmxpbmspIHsKPiArCQkJ LyoKPiArCQkJICogQ2FuIHdlIGNvbWJpbmUgdGhpcyByZXF1ZXN0IHdpdGggdGhlIGN1cnJlbnQg cG9ydD8KPiArCQkJICogSXQgaGFzIHRvIGJlIHRoZSBzYW1lIGNvbnRleHQvcmluZ2J1ZmZlciBh bmQgbm90Cj4gKwkJCSAqIGhhdmUgYW55IGV4Y2VwdGlvbnMgKGUuZy4gR1ZUIHNheWluZyBuZXZl ciB0bwo+ICsJCQkgKiBjb21iaW5lIGNvbnRleHRzKS4KPiArCQkJICoKPiArCQkJICogSWYgd2Ug Y2FuIGNvbWJpbmUgdGhlIHJlcXVlc3RzLCB3ZSBjYW4gZXhlY3V0ZSBib3RoCj4gKwkJCSAqIGJ5 IHVwZGF0aW5nIHRoZSBSSU5HX1RBSUwgdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUKPiArCQkJ ICogc2Vjb25kIHJlcXVlc3QsIGFuZCBzbyB3ZSBuZXZlciBuZWVkIHRvIHRlbGwgdGhlCj4gKwkJ CSAqIGhhcmR3YXJlIGFib3V0IHRoZSBmaXJzdC4KPiAgCQkJICovCj4gLQkJCWlmIChjdHhfc2lu Z2xlX3BvcnRfc3VibWlzc2lvbihsYXN0LT5jdHgpIHx8Cj4gLQkJCSAgICBjdHhfc2luZ2xlX3Bv cnRfc3VibWlzc2lvbihjdXJzb3ItPmN0eCkpCj4gLQkJCQlicmVhazsKPiArCQkJaWYgKGxhc3Qg JiYgIWNhbl9tZXJnZV9jdHgocnEtPmN0eCwgbGFzdC0+Y3R4KSkgewo+ICsJCQkJLyoKPiArCQkJ CSAqIElmIHdlIGFyZSBvbiB0aGUgc2Vjb25kIHBvcnQgYW5kIGNhbm5vdAo+ICsJCQkJICogY29t YmluZSB0aGlzIHJlcXVlc3Qgd2l0aCB0aGUgbGFzdCwgdGhlbiB3ZQo+ICsJCQkJICogYXJlIGRv bmUuCj4gKwkJCQkgKi8KPiArCQkJCWlmIChwb3J0ICE9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCkg ewo+ICsJCQkJCV9fbGlzdF9kZWxfbWFueSgmcC0+cmVxdWVzdHMsCj4gKwkJCQkJCQkmcnEtPnBy aW90cmVlLmxpbmspOwo+ICsJCQkJCWdvdG8gZG9uZTsKPiArCQkJCX0KPiArCj4gKwkJCQkvKgo+ ICsJCQkJICogSWYgR1ZUIG92ZXJyaWRlcyB1cyB3ZSBvbmx5IGV2ZXIgc3VibWl0Cj4gKwkJCQkg KiBwb3J0WzBdLCBsZWF2aW5nIHBvcnRbMV0gZW1wdHkuIE5vdGUgdGhhdCB3ZQo+ICsJCQkJICog YWxzbyBoYXZlIHRvIGJlIGNhcmVmdWwgdGhhdCB3ZSBkb24ndCBxdWV1ZQo+ICsJCQkJICogdGhl IHNhbWUgY29udGV4dCAoZXZlbiB0aG91Z2ggYSBkaWZmZXJlbnQKPiArCQkJCSAqIHJlcXVlc3Qp IHRvIHRoZSBzZWNvbmQgcG9ydC4KPiArCQkJCSAqLwo+ICsJCQkJaWYgKGN0eF9zaW5nbGVfcG9y dF9zdWJtaXNzaW9uKGxhc3QtPmN0eCkgfHwKPiArCQkJCSAgICBjdHhfc2luZ2xlX3BvcnRfc3Vi bWlzc2lvbihycS0+Y3R4KSkgewo+ICsJCQkJCV9fbGlzdF9kZWxfbWFueSgmcC0+cmVxdWVzdHMs Cj4gKwkJCQkJCQkmcnEtPnByaW90cmVlLmxpbmspOwo+ICsJCQkJCWdvdG8gZG9uZTsKPiArCQkJ CX0KPiArCj4gKwkJCQlHRU1fQlVHX09OKGxhc3QtPmN0eCA9PSBycS0+Y3R4KTsKPiArCj4gKwkJ CQlpZiAoc3VibWl0KQo+ICsJCQkJCXBvcnRfYXNzaWduKHBvcnQsIGxhc3QpOwo+ICsJCQkJcG9y dCsrOwo+ICsJCQl9Cj4KPiAtCQkJR0VNX0JVR19PTihsYXN0LT5jdHggPT0gY3Vyc29yLT5jdHgp Owo+ICsJCQlJTklUX0xJU1RfSEVBRCgmcnEtPnByaW90cmVlLmxpbmspOwo+ICsJCQlycS0+cHJp b3RyZWUucHJpb3JpdHkgPSBJTlRfTUFYOwo+Cj4gLQkJCWlmIChzdWJtaXQpCj4gLQkJCQlwb3J0 X2Fzc2lnbihwb3J0LCBsYXN0KTsKPiAtCQkJcG9ydCsrOwo+ICsJCQlfX2k5MTVfZ2VtX3JlcXVl c3Rfc3VibWl0KHJxKTsKPiArCQkJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9pbihycSwKPiArCQkJ CQkJICBwb3J0IC0gZW5naW5lLT5leGVjbGlzdF9wb3J0KTsKPiArCQkJbGFzdCA9IHJxOwo+ICsJ CQlzdWJtaXQgPSB0cnVlOwo+ICAJCX0KPgo+ICAJCXJiID0gcmJfbmV4dChyYik7Cj4gLQkJcmJf ZXJhc2UoJmN1cnNvci0+cHJpb3RyZWUubm9kZSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+ IC0JCVJCX0NMRUFSX05PREUoJmN1cnNvci0+cHJpb3RyZWUubm9kZSk7Cj4gLQkJY3Vyc29yLT5w cmlvdHJlZS5wcmlvcml0eSA9IElOVF9NQVg7Cj4gLQo+IC0JCV9faTkxNV9nZW1fcmVxdWVzdF9z dWJtaXQoY3Vyc29yKTsKPiAtCQl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X2luKGN1cnNvciwgcG9y dCAtIGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCk7Cj4gLQkJbGFzdCA9IGN1cnNvcjsKPiAtCQlzdWJt aXQgPSB0cnVlOwo+ICsJCXJiX2VyYXNlKCZwLT5ub2RlLCAmZW5naW5lLT5leGVjbGlzdF9xdWV1 ZSk7Cj4gKwkJSU5JVF9MSVNUX0hFQUQoJnAtPnJlcXVlc3RzKTsKPiArCQlpZiAocC0+cHJpb3Jp dHkgIT0gSTkxNV9QUklPUklUWV9OT1JNQUwpCj4gKwkJCWtmcmVlKHApOwo+ICAJfQo+IC0JaWYg KHN1Ym1pdCkgewo+ICtkb25lOgo+ICsJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9IHJiOwo+ICsJ aWYgKHN1Ym1pdCkKPiAgCQlwb3J0X2Fzc2lnbihwb3J0LCBsYXN0KTsKPiAtCQllbmdpbmUtPmV4 ZWNsaXN0X2ZpcnN0ID0gcmI7Cj4gLQl9Cj4gIAlzcGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGlt ZWxpbmUtPmxvY2spOwo+Cj4gIAlpZiAoc3VibWl0KQo+IEBAIC02MTAsMjggKzYyOSw2NiBAQCBz dGF0aWMgdm9pZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQo+ICAJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIGVuZ2luZS0+ZndfZG9tYWlucyk7 Cj4gIH0KPgo+IC1zdGF0aWMgYm9vbCBpbnNlcnRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9wcmlvdHJl ZSAqcHQsIHN0cnVjdCByYl9yb290ICpyb290KQo+ICtzdGF0aWMgYm9vbAo+ICtpbnNlcnRfcmVx dWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkgICAgICAgc3RydWN0IGk5 MTVfcHJpb3RyZWUgKnB0LAo+ICsJICAgICAgIGludCBwcmlvKQo+ICB7Cj4gLQlzdHJ1Y3QgcmJf bm9kZSAqKnAsICpyYjsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwOwo+ICsJc3RydWN0IHJi X25vZGUgKipwYXJlbnQsICpyYjsKPiAgCWJvb2wgZmlyc3QgPSB0cnVlOwo+Cj4gKwlpZiAodW5s aWtlbHkoZW5naW5lLT5ub19wcmlvbGlzdCkpCj4gKwkJcHJpbyA9IEk5MTVfUFJJT1JJVFlfTk9S TUFMOwo+ICsKPiArZmluZF9wcmlvbGlzdDoKPiAgCS8qIG1vc3QgcG9zaXRpdmUgcHJpb3JpdHkg aXMgc2NoZWR1bGVkIGZpcnN0LCBlcXVhbCBwcmlvcml0aWVzIGZpZm8gKi8KPiAgCXJiID0gTlVM TDsKPiAtCXAgPSAmcm9vdC0+cmJfbm9kZTsKPiAtCXdoaWxlICgqcCkgewo+IC0JCXN0cnVjdCBp OTE1X3ByaW90cmVlICpwb3M7Cj4gLQo+IC0JCXJiID0gKnA7Cj4gLQkJcG9zID0gcmJfZW50cnko cmIsIHR5cGVvZigqcG9zKSwgbm9kZSk7Cj4gLQkJaWYgKHB0LT5wcmlvcml0eSA+IHBvcy0+cHJp b3JpdHkpIHsKPiAtCQkJcCA9ICZyYi0+cmJfbGVmdDsKPiAtCQl9IGVsc2Ugewo+IC0JCQlwID0g JnJiLT5yYl9yaWdodDsKPiArCXBhcmVudCA9ICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLnJiX25v ZGU7Cj4gKwl3aGlsZSAoKnBhcmVudCkgewo+ICsJCXJiID0gKnBhcmVudDsKPiArCQlwID0gcmJf ZW50cnkocmIsIHR5cGVvZigqcCksIG5vZGUpOwo+ICsJCWlmIChwcmlvID4gcC0+cHJpb3JpdHkp IHsKPiArCQkJcGFyZW50ID0gJnJiLT5yYl9sZWZ0Owo+ICsJCX0gZWxzZSBpZiAocHJpbyA8IHAt PnByaW9yaXR5KSB7Cj4gKwkJCXBhcmVudCA9ICZyYi0+cmJfcmlnaHQ7Cj4gIAkJCWZpcnN0ID0g ZmFsc2U7Cj4gKwkJfSBlbHNlIHsKPiArCQkJbGlzdF9hZGRfdGFpbCgmcHQtPmxpbmssICZwLT5y ZXF1ZXN0cyk7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKHBy aW8gPT0gSTkxNV9QUklPUklUWV9OT1JNQUwpIHsKPiArCQlwID0gJmVuZ2luZS0+ZGVmYXVsdF9w cmlvbGlzdDsKPiArCX0gZWxzZSB7Cj4gKwkJcCA9IGttYWxsb2Moc2l6ZW9mKCpwKSwgR0ZQX0FU T01JQyk7Cj4gKwkJLyogQ29udmVydCBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgdG8gYSBwcmlvcml0 eSBidW1wICovCj4gKwkJaWYgKHVubGlrZWx5KCFwKSkgewo+ICsJCQlwcmlvID0gSTkxNV9QUklP UklUWV9OT1JNQUw7IC8qIHJlY3Vyc2VzIGp1c3Qgb25jZSAqLwo+ICsKPiArCQkJLyogVG8gbWFp bnRhaW4gb3JkZXJpbmcgd2l0aCBhbGwgcmVuZGVyaW5nLCBhZnRlciBhbgo+ICsJCQkgKiBhbGxv Y2F0aW9uIGZhaWx1cmUgd2UgaGF2ZSB0byBkaXNhYmxlIGFsbCBzY2hlZHVsaW5nLgo+ICsJCQkg KiBSZXF1ZXN0cyB3aWxsIHRoZW4gYmUgZXhlY3V0ZWQgaW4gZmlmbywgYW5kIHNjaGVkdWxlCj4g KwkJCSAqIHdpbGwgZW5zdXJlIHRoYXQgZGVwZW5kZW5jaWVzIGFyZSBlbWl0dGVkIGluIGZpZm8u Cj4gKwkJCSAqIFRoZXJlIHdpbGwgYmUgc3RpbGwgc29tZSByZW9yZGVyaW5nIHdpdGggZXhpc3Rp bmcKPiArCQkJICogcmVxdWVzdCwgc28gaWYgdXNlcnNwYWNlIGxpZWQgYWJvdXQgdGhlaXIKCnJl cXVlc3RzIHBsdXJhbAoKPiArCQkJICogZGVwZW5kZGVuY2llcyB0aGF0IHJlb3JkZXJpbmcgbWF5 IGJlIHZpc2libGUuCgp0eXBvIGluIGRlcGVuZGVuY2llcwoKPiArCQkJICovCj4gKwkJCWVuZ2lu ZS0+bm9fcHJpb2xpc3QgPSB0cnVlOwo+ICsJCQlnb3RvIGZpbmRfcHJpb2xpc3Q7Cj4gIAkJfQo+ ICAJfQo+IC0JcmJfbGlua19ub2RlKCZwdC0+bm9kZSwgcmIsIHApOwo+IC0JcmJfaW5zZXJ0X2Nv bG9yKCZwdC0+bm9kZSwgcm9vdCk7Cj4gKwo+ICsJcC0+cHJpb3JpdHkgPSBwcmlvOwo+ICsJcmJf bGlua19ub2RlKCZwLT5ub2RlLCByYiwgcGFyZW50KTsKPiArCXJiX2luc2VydF9jb2xvcigmcC0+ bm9kZSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwo+ICsKPiArCUlOSVRfTElTVF9IRUFEKCZw LT5yZXF1ZXN0cyk7Cj4gKwlsaXN0X2FkZF90YWlsKCZwdC0+bGluaywgJnAtPnJlcXVlc3RzKTsK PiArCj4gKwlpZiAoZmlyc3QpCj4gKwkJZW5naW5lLT5leGVjbGlzdF9maXJzdCA9ICZwLT5ub2Rl Owo+Cj4gIAlyZXR1cm4gZmlyc3Q7Cj4gIH0KPiBAQCAtNjQ0LDEyICs3MDEsMTYgQEAgc3RhdGlj IHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCkKPiAgCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJxLWNvbnRleHQgd2hlbiB1 c2luZyBmb3JlaWduIGZlbmNlcy4gKi8KPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRp bWVsaW5lLT5sb2NrLCBmbGFncyk7Cj4KPiAtCWlmIChpbnNlcnRfcmVxdWVzdCgmcmVxdWVzdC0+ cHJpb3RyZWUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKSkgewo+IC0JCWVuZ2luZS0+ZXhlY2xp c3RfZmlyc3QgPSAmcmVxdWVzdC0+cHJpb3RyZWUubm9kZTsKPiArCWlmIChpbnNlcnRfcmVxdWVz dChlbmdpbmUsCj4gKwkJCSAgICZyZXF1ZXN0LT5wcmlvdHJlZSwKPiArCQkJICAgcmVxdWVzdC0+ cHJpb3RyZWUucHJpb3JpdHkpKSB7Cj4gIAkJaWYgKGV4ZWNsaXN0c19lbHNwX3JlYWR5KGVuZ2lu ZSkpCj4gIAkJCXRhc2tsZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+ICAJ fQo+Cj4gKwlHRU1fQlVHX09OKCFlbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0KTsKPiArCUdFTV9CVUdf T04obGlzdF9lbXB0eSgmcmVxdWVzdC0+cHJpb3RyZWUubGluaykpOwo+ICsKPiAgCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKPiAgfQo+Cj4g QEAgLTczNCwxMCArNzk1LDkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3NjaGVkdWxlKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgaW50IHByaW8pCj4gIAkJCWNvbnRpbnVl Owo+Cj4gIAkJcHQtPnByaW9yaXR5ID0gcHJpbzsKPiAtCQlpZiAoIVJCX0VNUFRZX05PREUoJnB0 LT5ub2RlKSkgewo+IC0JCQlyYl9lcmFzZSgmcHQtPm5vZGUsICZlbmdpbmUtPmV4ZWNsaXN0X3F1 ZXVlKTsKPiAtCQkJaWYgKGluc2VydF9yZXF1ZXN0KHB0LCAmZW5naW5lLT5leGVjbGlzdF9xdWV1 ZSkpCj4gLQkJCQllbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gJnB0LT5ub2RlOwo+ICsJCWlmICgh bGlzdF9lbXB0eSgmcHQtPmxpbmspKSB7Cj4gKwkJCV9fbGlzdF9kZWxfZW50cnkoJnB0LT5saW5r KTsKPiArCQkJaW5zZXJ0X3JlcXVlc3QoZW5naW5lLCBwdCwgcHJpbyk7Cj4gIAkJfQo+ICAJfQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IGMzODBmM2Fj OGEzOS4uZmFiMjMyMjY2NGY0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAo+IEBAIC0xNzcsNiArMTc3LDEyIEBAIGVudW0gaW50ZWxfZW5naW5lX2lkIHsKPiAg CVZFQ1MKPiAgfTsKPgo+ICtzdHJ1Y3QgaTkxNV9wcmlvbGlzdCB7Cj4gKwlzdHJ1Y3QgcmJfbm9k ZSBub2RlOwo+ICsJc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0czsKPiArCWludCBwcmlvcml0eTsK PiArfTsKPiArCj4gICNkZWZpbmUgSU5URUxfRU5HSU5FX0NTX01BWF9OQU1FIDgKPgo+ICBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiBAQCAtMzY3LDYgKzM3Myw4IEBAIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3Mgewo+Cj4gIAkvKiBFeGVjbGlzdHMgKi8KPiAgCXN0cnVjdCB0YXNrbGV0X3N0cnVj dCBpcnFfdGFza2xldDsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0IGRlZmF1bHRfcHJpb2xpc3Q7 Cj4gKwlib29sIG5vX3ByaW9saXN0Owo+ICAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgewo+ICAJCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdF9jb3VudDsKPiAgI2RlZmluZSBFWEVD TElTVF9DT1VOVF9CSVRTIDIKPiBAQCAtNzIyLDYgKzczMCw3IEBAIHN0YXRpYyBpbmxpbmUgdTMy ICpnZW44X2VtaXRfcGlwZV9jb250cm9sKHUzMiAqYmF0Y2gsIHUzMiBmbGFncywgdTMyIG9mZnNl dCkKPiAgYm9vbCBpbnRlbF9lbmdpbmVfaXNfaWRsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpOwo+ICBib29sIGludGVsX2VuZ2luZXNfYXJlX2lkbGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPgo+ICt2b2lkIGludGVsX2VuZ2luZXNfbWFya19pZGxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgdm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2Rl ZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4KPiAgI2Vu ZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCj4KClJldmlld2VkLWJ5OiBUdnJ0a28gVXJz dWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK