From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH v4 04/38] drm/i915: Split i915_dem_do_execbuffer() in half Date: Thu, 4 Feb 2016 09:08:56 -0800 Message-ID: <56B385A8.7040603@virtuousgeek.org> References: <1448278774-31376-1-git-send-email-John.C.Harrison@Intel.com> <1452537788-32136-1-git-send-email-John.C.Harrison@Intel.com> <1452537788-32136-5-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gproxy2-pub.mail.unifiedlayer.com (gproxy2-pub.mail.unifiedlayer.com [69.89.18.3]) by gabe.freedesktop.org (Postfix) with SMTP id 142016E05C for ; Thu, 4 Feb 2016 09:09:08 -0800 (PST) In-Reply-To: <1452537788-32136-5-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMDEvMTEvMjAxNiAxMDo0MiBBTSwgSm9obi5DLkhhcnJpc29uQEludGVsLmNvbSB3cm90ZToK PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+IAo+IFNw bGl0IHRoZSBleGVjYnVmZmVyKCkgZnVuY3Rpb24gaW4gaGFsZi4gVGhlIGZpcnN0IGhhbGYgY29s bGVjdHMgYW5kCj4gdmFsaWRhdGVzIGFsbCB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gcHJv Y2VzcyB0aGUgYmF0Y2ggYnVmZmVyLiBJdAo+IGFsc28gZG9lcyBhbGwgdGhlIG9iamVjdCBwaW5u aW5nLCByZWxvY2F0aW9ucywgYWN0aXZlIGxpc3QgbWFuYWdlbWVudCwKPiBldGMgLSBiYXNpY2Fs bHkgYW55dGhpbmcgdGhhdCBtdXN0IGJlIGRvbmUgdXBmcm9udCBiZWZvcmUgdGhlIElPQ1RMCj4g cmV0dXJucyBhbmQgYWxsb3dzIHRoZSB1c2VyIGxhbmQgc2lkZSB0byBzdGFydCBjaGFuZ2luZy9m cmVlaW5nCj4gdGhpbmdzLiBUaGUgc2Vjb25kIGhhbGYgZG9lcyB0aGUgYWN0dWFsIHJpbmcgc3Vi bWlzc2lvbi4KPiAKPiBUaGlzIGNoYW5nZSBpbXBsZW1lbnRzIHRoZSBzcGxpdCBidXQgbGVhdmVz IHRoZSBiYWNrIGhhbGYgYmVpbmcgY2FsbGVkCj4gZGlyZWN0bHkgZnJvbSB0aGUgZW5kIG9mIHRo ZSBmcm9udCBoYWxmLgo+IAo+IHYyOiBVcGRhdGVkIGR1ZSB0byBjaGFuZ2VzIGluIHVuZGVybHlp bmcgdHJlZSAtIGFkZGl0aW9uIG9mIHN5bmMgZmVuY2UKPiBzdXBwb3J0IGFuZCByZW1vdmFsIG9m IGNsaXByZWN0cy4KPiAKPiB2MzogTW92ZWQgbG9jYWwgJ3JpbmdidWYnIHZhcmlhYmxlIHRvIG1h a2UgbGF0ZXIgcGF0Y2hlcyBpbiB0aGUKPiBzZXJpZXMgYSBiaXQgbmVhdGVyLgo+IAo+IHY0OiBD b3JyZWN0ZWQgYSB0eXBvIGluIHRoZSBjb21taXQgbWVzc2FnZSBhbmQgZG93bmdyYWRlZCBhIEJV R19PTiB0bwo+IGEgV0FSTl9PTiBhcyB0aGUgbGF0dGVyIGlzIHByZWZlcnJlZC4gQWxzbyByZW1v dmVkIGFsbCB0aGUgZXh0ZXJuYWwKPiBzeW5jL2ZlbmNlIHN1cHBvcnQgYXMgdGhhdCB3aWxsIG5v dyBiZSBhIHNlcGFyYXRlIHBhdGNoIHNlcmllcy4KPiAKPiBGb3I6IFZJWi0xNTg3Cj4gU2lnbmVk LW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDExICsrKysK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgICAyICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgMTAxICsrKysrKysr KysrKysrKysrKysrKystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j ICAgICAgICAgICB8ICA1NyArKysrKysrKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5oICAgICAgICAgICB8ICAgMSArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTMwIGlu c2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IGluZGV4IGFjZmUyNWYuLjI1MjA0NTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBA QCAtMTY3OSwxMCArMTY3OSwxOCBAQCBzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyB7Cj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAgICAgICAgICAgICAgICpkZXY7Cj4gIAlzdHJ1Y3QgZHJtX2Zp bGUgICAgICAgICAgICAgICAgICpmaWxlOwo+ICAJdWludDMyX3QgICAgICAgICAgICAgICAgICAg ICAgICBkaXNwYXRjaF9mbGFnczsKPiArCXVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAg YXJnc19mbGFnczsKPiAgCXVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgYXJnc19iYXRj aF9zdGFydF9vZmZzZXQ7Cj4gKwl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Nf YmF0Y2hfbGVuOwo+ICsJdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX251bV9j bGlwcmVjdHM7Cj4gKwl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NfRFIxOwo+ ICsJdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICBhcmdzX0RSNDsKPiAgCXVpbnQ2NF90 ICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2hfb2JqX3ZtX29mZnNldDsKPiAgCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgICAgICAgICAgKnJpbmc7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAgICAgICpiYXRjaF9vYmo7Cj4gKwlzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAgICAgICAgICAg ICpjbGlwcmVjdHM7Cj4gKwl1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIGluc3RwX21h c2s7Cj4gKwlpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RwX21vZGU7Cj4gIAlz dHJ1Y3QgaW50ZWxfY29udGV4dCAgICAgICAgICAgICpjdHg7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgICAgICpyZXF1ZXN0Owo+ICB9Owo+IEBAIC0xOTQ0LDYgKzE5NTIsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAkJaW50ICgqZXhlY2J1Zl9zdWJtaXQpKHN0cnVj dCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gIAkJCQkgICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdzLAo+ICAJCQkJICAgICAgc3RydWN0IGxpc3RfaGVh ZCAqdm1hcyk7Cj4gKwkJaW50ICgqZXhlY2J1Zl9maW5hbCkoc3RydWN0IGk5MTVfZXhlY2J1ZmZl cl9wYXJhbXMgKnBhcmFtcyk7Cj4gIAkJaW50ICgqaW5pdF9yaW5ncykoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cj4gIAkJdm9pZCAoKmNsZWFudXBfcmluZykoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Cj4gIAkJdm9pZCAoKnN0b3BfcmluZykoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZyk7Cj4gQEAgLTI3OTAsOSArMjc5OSwxMSBAQCBpbnQgaTkxNV9nZW1fc3dfZmluaXNoX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIHZvaWQgaTkxNV9nZW1f ZXhlY2J1ZmZlcl9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgbGlzdF9oZWFkICp2bWFzLAo+ICAJCQkJ CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPiAgdm9pZCBpOTE1X2dlbV9leGVj YnVmZmVyX3JldGlyZV9jb21tYW5kcyhzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFy YW1zKTsKPiArdm9pZCBpOTE1X2dlbV9leGVjYnVmZl9yZWxlYXNlX2JhdGNoX29iaihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqKTsKPiAgaW50IGk5MTVfZ2VtX3JpbmdidWZm ZXJfc3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJ CQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncywKPiAgCQkJCSAgIHN0 cnVjdCBsaXN0X2hlYWQgKnZtYXMpOwo+ICtpbnQgaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJtaXNz aW9uX2ZpbmFsKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMpOwo+ICBpbnQg aTkxNV9nZW1fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ ICAJCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdik7Cj4gIGludCBpOTE1X2dlbV9leGVjYnVm ZmVyMihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IGluZGV4IGU4ZWM0OWUuLjViZjdkYTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBAQCAtNTIyMCwxMSArNTIyMCwxMyBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWlmICghaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Cj4g IAkJZGV2X3ByaXYtPmd0LmV4ZWNidWZfc3VibWl0ID0gaTkxNV9nZW1fcmluZ2J1ZmZlcl9zdWJt aXNzaW9uOwo+ICsJCWRldl9wcml2LT5ndC5leGVjYnVmX2ZpbmFsID0gaTkxNV9nZW1fcmluZ2J1 ZmZlcl9zdWJtaXNzaW9uX2ZpbmFsOwo+ICAJCWRldl9wcml2LT5ndC5pbml0X3JpbmdzID0gaTkx NV9nZW1faW5pdF9yaW5nczsKPiAgCQlkZXZfcHJpdi0+Z3QuY2xlYW51cF9yaW5nID0gaW50ZWxf Y2xlYW51cF9yaW5nX2J1ZmZlcjsKPiAgCQlkZXZfcHJpdi0+Z3Quc3RvcF9yaW5nID0gaW50ZWxf c3RvcF9yaW5nX2J1ZmZlcjsKPiAgCX0gZWxzZSB7Cj4gIAkJZGV2X3ByaXYtPmd0LmV4ZWNidWZf c3VibWl0ID0gaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb247Cj4gKwkJZGV2X3ByaXYtPmd0LmV4 ZWNidWZfZmluYWwgPSBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbl9maW5hbDsKPiAgCQlkZXZf cHJpdi0+Z3QuaW5pdF9yaW5ncyA9IGludGVsX2xvZ2ljYWxfcmluZ3NfaW5pdDsKPiAgCQlkZXZf cHJpdi0+Z3QuY2xlYW51cF9yaW5nID0gaW50ZWxfbG9naWNhbF9yaW5nX2NsZWFudXA7Cj4gIAkJ ZGV2X3ByaXYtPmd0LnN0b3BfcmluZyA9IGludGVsX2xvZ2ljYWxfcmluZ19zdG9wOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCAwZWNhMmI2Li5l ZmYxNzFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu Ywo+IEBAIC0xMTgxLDQxICsxMTgxLDM4IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJfc3VibWlzc2lv bihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHBhcmFtcy0+ZGV2Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZyA9IHBhcmFtcy0+cmluZzsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1NjQgZXhlY19zdGFydCwgZXhlY19sZW47Cj4gLQlpbnQg aW5zdHBfbW9kZTsKPiAtCXUzMiBpbnN0cF9tYXNrOwo+ICAJaW50IHJldDsKPiAgCj4gLQlpbnN0 cF9tb2RlID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQ09OU1RBTlRTX01BU0s7Cj4gLQlpbnN0 cF9tYXNrID0gSTkxNV9FWEVDX0NPTlNUQU5UU19NQVNLOwo+IC0Jc3dpdGNoIChpbnN0cF9tb2Rl KSB7Cj4gKwlwYXJhbXMtPmluc3RwX21vZGUgPSBhcmdzLT5mbGFncyAmIEk5MTVfRVhFQ19DT05T VEFOVFNfTUFTSzsKPiArCXBhcmFtcy0+aW5zdHBfbWFzayA9IEk5MTVfRVhFQ19DT05TVEFOVFNf TUFTSzsKPiArCXN3aXRjaCAocGFyYW1zLT5pbnN0cF9tb2RlKSB7Cj4gIAljYXNlIEk5MTVfRVhF Q19DT05TVEFOVFNfUkVMX0dFTkVSQUw6Cj4gIAljYXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfQUJT T0xVVEU6Cj4gIAljYXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZBQ0U6Cj4gLQkJaWYg KGluc3RwX21vZGUgIT0gMCAmJiByaW5nICE9ICZkZXZfcHJpdi0+cmluZ1tSQ1NdKSB7Cj4gKwkJ aWYgKHBhcmFtcy0+aW5zdHBfbW9kZSAhPSAwICYmIHJpbmcgIT0gJmRldl9wcml2LT5yaW5nW1JD U10pIHsKPiAgCQkJRFJNX0RFQlVHKCJub24tMCByZWwgY29uc3RhbnRzIG1vZGUgb24gbm9uLVJD U1xuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCj4gLQkJaWYgKGluc3RwX21v ZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Cj4gKwkJaWYgKHBhcmFt cy0+aW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKPiAg CQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkgewo+ICAJCQkJRFJNX0RFQlVHKCJubyBy ZWwgY29uc3RhbnRzIG9uIHByZS1nZW40XG4iKTsKPiAgCQkJCXJldHVybiAtRUlOVkFMOwo+ICAJ CQl9Cj4gIAo+ICAJCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPiA1ICYmCj4gLQkJCSAgICBp bnN0cF9tb2RlID09IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZBQ0UpIHsKPiArCQkJICAg IHBhcmFtcy0+aW5zdHBfbW9kZSA9PSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFKSB7 Cj4gIAkJCQlEUk1fREVCVUcoInJlbCBzdXJmYWNlIGNvbnN0YW50cyBtb2RlIGludmFsaWQgb24g Z2VuNStcbiIpOwo+ICAJCQkJcmV0dXJuIC1FSU5WQUw7Cj4gIAkJCX0KPiAgCj4gIAkJCS8qIFRo ZSBIVyBjaGFuZ2VkIHRoZSBtZWFuaW5nIG9uIHRoaXMgYml0IG9uIGdlbjYgKi8KPiAgCQkJaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYpCj4gLQkJCQlpbnN0cF9tYXNrICY9IH5JOTE1X0VY RUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFOwo+ICsJCQkJcGFyYW1zLT5pbnN0cF9tYXNrICY9IH5J OTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFOwo+ICAJCX0KPiAgCQlicmVhazsKPiAgCWRl ZmF1bHQ6Cj4gLQkJRFJNX0RFQlVHKCJleGVjYnVmIHdpdGggdW5rbm93biBjb25zdGFudHM6ICVk XG4iLCBpbnN0cF9tb2RlKTsKPiArCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCB1bmtub3duIGNv bnN0YW50czogJWRcbiIsIHBhcmFtcy0+aW5zdHBfbW9kZSk7Cj4gIAkJcmV0dXJuIC1FSU5WQUw7 Cj4gIAl9Cj4gIAo+IEBAIC0xMjI1LDcgKzEyMjIsMzMgQEAgaTkxNV9nZW1fcmluZ2J1ZmZlcl9z dWJtaXNzaW9uKHN0cnVjdCBpOTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gIAo+ICAJ aTkxNV9nZW1fZXhlY2J1ZmZlcl9tb3ZlX3RvX2FjdGl2ZSh2bWFzLCBwYXJhbXMtPnJlcXVlc3Qp Owo+ICAKPiAtCS8qIFRvIGJlIHNwbGl0IGludG8gdHdvIGZ1bmN0aW9ucyBoZXJlLi4uICovCj4g KwlyZXQgPSBkZXZfcHJpdi0+Z3QuZXhlY2J1Zl9maW5hbChwYXJhbXMpOwo+ICsJaWYgKHJldCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCS8qCj4gKwkgKiBGcmVlIGV2ZXJ5dGhpbmcgdGhhdCB3 YXMgc3RvcmVkIGluIHRoZSBRRSBzdHJ1Y3R1cmUgKHVudGlsIHRoZQo+ICsJICogc2NoZWR1bGVy IGFycml2ZXMgYW5kIGRvZXMgaXQgaW5zdGVhZCk6Cj4gKwkgKi8KPiArCWlmIChwYXJhbXMtPmRp c3BhdGNoX2ZsYWdzICYgSTkxNV9ESVNQQVRDSF9TRUNVUkUpCj4gKwkJaTkxNV9nZW1fZXhlY2J1 ZmZfcmVsZWFzZV9iYXRjaF9vYmoocGFyYW1zLT5iYXRjaF9vYmopOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uIGZvciBhZGRp bmcgYSBiYXRjaCB0byB0aGUgcmluZy4KPiArICogSXQgaXMgY2FsbGVkIGZyb20gdGhlIHNjaGVk dWxlciwgd2l0aCB0aGUgc3RydWN0X211dGV4IGFscmVhZHkgaGVsZC4KPiArICovCj4gK2ludCBp OTE1X2dlbV9yaW5nYnVmZmVyX3N1Ym1pc3Npb25fZmluYWwoc3RydWN0IGk5MTVfZXhlY2J1ZmZl cl9wYXJhbXMgKnBhcmFtcykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gcGFyYW1zLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9j cyAgKnJpbmcgPSBwYXJhbXMtPnJpbmc7Cj4gKwl1NjQgZXhlY19zdGFydCwgZXhlY19sZW47Cj4g KwlpbnQgcmV0Owo+ICsKPiArCS8qIFRoZSBtdXRleCBtdXN0IGJlIGFjcXVpcmVkIGJlZm9yZSBj YWxsaW5nIHRoaXMgZnVuY3Rpb24gKi8KPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmcGFy YW1zLT5kZXYtPnN0cnVjdF9tdXRleCkpOwo+ICAKPiAgCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRl dl9wcml2KTsKPiAgCj4gQEAgLTEyNDYsNyArMTI2OSw3IEBAIGk5MTVfZ2VtX3JpbmdidWZmZXJf c3VibWlzc2lvbihzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJICAg ICAiJXMgZGlkbid0IGNsZWFyIHJlbG9hZFxuIiwgcmluZy0+bmFtZSk7Cj4gIAo+ICAJaWYgKHJp bmcgPT0gJmRldl9wcml2LT5yaW5nW1JDU10gJiYKPiAtCSAgICBpbnN0cF9tb2RlICE9IGRldl9w cml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSkgewo+ICsJICAgIHBhcmFtcy0+aW5zdHBfbW9k ZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUpIHsKPiAgCQlyZXQgPSBpbnRl bF9yaW5nX2JlZ2luKHBhcmFtcy0+cmVxdWVzdCwgNCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290 byBlcnJvcjsKPiBAQCAtMTI1NCwxOSArMTI3NywxOSBAQCBpOTE1X2dlbV9yaW5nYnVmZmVyX3N1 Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcywKPiAgCQlpbnRl bF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQocmluZywgSU5TVFBN KTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21v ZGUpOwo+ICsJCWludGVsX3JpbmdfZW1pdChyaW5nLCBwYXJhbXMtPmluc3RwX21hc2sgPDwgMTYg fCBwYXJhbXMtPmluc3RwX21vZGUpOwo+ICAJCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAg Cj4gLQkJZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlID0gaW5zdHBfbW9kZTsKPiAr CQlkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRzX21vZGUgPSBwYXJhbXMtPmluc3RwX21vZGU7 Cj4gIAl9Cj4gIAo+IC0JaWYgKGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0dFTjdfU09MX1JFU0VU KSB7Cj4gLQkJcmV0ID0gaTkxNV9yZXNldF9nZW43X3NvbF9vZmZzZXRzKGRldiwgcGFyYW1zLT5y ZXF1ZXN0KTsKPiArCWlmIChwYXJhbXMtPmFyZ3NfZmxhZ3MgJiBJOTE1X0VYRUNfR0VON19TT0xf UkVTRVQpIHsKPiArCQlyZXQgPSBpOTE1X3Jlc2V0X2dlbjdfc29sX29mZnNldHMocGFyYW1zLT5k ZXYsIHBhcmFtcy0+cmVxdWVzdCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJZ290byBlcnJvcjsKPiAg CX0KPiAgCj4gLQlleGVjX2xlbiAgID0gYXJncy0+YmF0Y2hfbGVuOwo+ICsJZXhlY19sZW4gICA9 IHBhcmFtcy0+YXJnc19iYXRjaF9sZW47Cj4gIAlleGVjX3N0YXJ0ID0gcGFyYW1zLT5iYXRjaF9v Ympfdm1fb2Zmc2V0ICsKPiAgCQkgICAgIHBhcmFtcy0+YXJnc19iYXRjaF9zdGFydF9vZmZzZXQ7 Cj4gIAo+IEBAIC0xNTg0LDIzICsxNjA3LDQwIEBAIGk5MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCXBhcmFtcy0+ZmlsZSAgICAgICAg ICAgICAgICAgICAgPSBmaWxlOwo+ICAJcGFyYW1zLT5yaW5nICAgICAgICAgICAgICAgICAgICA9 IHJpbmc7Cj4gIAlwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzICAgICAgICAgID0gZGlzcGF0Y2hfZmxh Z3M7Cj4gKwlwYXJhbXMtPmFyZ3NfZmxhZ3MgICAgICAgICAgICAgID0gYXJncy0+ZmxhZ3M7Cj4g KwlwYXJhbXMtPmFyZ3NfYmF0Y2hfbGVuICAgICAgICAgID0gYXJncy0+YmF0Y2hfbGVuOwo+ICsJ cGFyYW1zLT5hcmdzX251bV9jbGlwcmVjdHMgICAgICA9IGFyZ3MtPm51bV9jbGlwcmVjdHM7Cj4g KwlwYXJhbXMtPmFyZ3NfRFIxICAgICAgICAgICAgICAgID0gYXJncy0+RFIxOwo+ICsJcGFyYW1z LT5hcmdzX0RSNCAgICAgICAgICAgICAgICA9IGFyZ3MtPkRSNDsKPiAgCXBhcmFtcy0+YmF0Y2hf b2JqICAgICAgICAgICAgICAgPSBiYXRjaF9vYmo7Cj4gIAlwYXJhbXMtPmN0eCAgICAgICAgICAg ICAgICAgICAgID0gY3R4Owo+ICAKPiAgCXJldCA9IGRldl9wcml2LT5ndC5leGVjYnVmX3N1Ym1p dChwYXJhbXMsIGFyZ3MsICZlYi0+dm1hcyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX2Jh dGNoX3VucGluOwo+ICsKPiArCS8qIHRoZSByZXF1ZXN0IG93bnMgdGhlIHJlZiBub3cgKi8KPiAr CWk5MTVfZ2VtX2NvbnRleHRfdW5yZWZlcmVuY2UoY3R4KTsKPiAgCj4gLWVycl9iYXRjaF91bnBp bjoKPiAgCS8qCj4gLQkgKiBGSVhNRTogV2UgY3J1Y2lhbGx5IHJlbHkgdXBvbiB0aGUgYWN0aXZl IHRyYWNraW5nIGZvciB0aGUgKHBwZ3R0KQo+IC0JICogYmF0Y2ggdm1hIGZvciBjb3JyZWN0bmVz cy4gRm9yIGxlc3MgdWdseSBhbmQgbGVzcyBmcmFnaWxpdHkgdGhpcwo+IC0JICogbmVlZHMgdG8g YmUgYWRqdXN0ZWQgdG8gYWxzbyB0cmFjayB0aGUgZ2d0dCBiYXRjaCB2bWEgcHJvcGVybHkgYXMK PiAtCSAqIGFjdGl2ZS4KPiArCSAqIFRoZSBlYiBsaXN0IGlzIG5vIGxvbmdlciByZXF1aXJlZC4g VGhlIHNjaGVkdWxlciBoYXMgZXh0cmFjdGVkIGFsbAo+ICsJICogdGhlIGluZm9ybWF0aW9uIHRo YW4gbmVlZHMgdG8gcGVyc2lzdC4KPiAgCSAqLwo+ICsJZWJfZGVzdHJveShlYik7Cj4gKwo+ICsJ LyoKPiArCSAqIERvbid0IGNsZWFuIHVwIGV2ZXJ5dGhpbmcgdGhhdCBpcyBub3cgc2F2ZWQgYXdh eSBpbiB0aGUgcXVldWUuCj4gKwkgKiBKdXN0IHVubG9jayBhbmQgcmV0dXJuIGltbWVkaWF0ZWx5 Lgo+ICsJICovCj4gKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCj4gKwly ZXR1cm4gMDsKPiArCj4gK2Vycl9iYXRjaF91bnBpbjoKPiAgCWlmIChkaXNwYXRjaF9mbGFncyAm IEk5MTVfRElTUEFUQ0hfU0VDVVJFKQo+IC0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGJh dGNoX29iaik7Cj4gKwkJaTkxNV9nZW1fZXhlY2J1ZmZfcmVsZWFzZV9iYXRjaF9vYmooYmF0Y2hf b2JqKTsKPiAgCj4gIGVycjoKPiAtCS8qIHRoZSByZXF1ZXN0IG93bnMgdGhlIHJlZiBub3cgKi8K PiAgCWk5MTVfZ2VtX2NvbnRleHRfdW5yZWZlcmVuY2UoY3R4KTsKPiAgCWViX2Rlc3Ryb3koZWIp Owo+ICAKPiBAQCAtMTYxOCw2ICsxNjU4LDE3IEBAIHByZV9tdXRleF9lcnI6Cj4gIAlyZXR1cm4g cmV0Owo+ICB9Cj4gIAo+ICt2b2lkIGk5MTVfZ2VtX2V4ZWNidWZmX3JlbGVhc2VfYmF0Y2hfb2Jq KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmopCj4gK3sKPiArCS8qCj4gKwkg KiBGSVhNRTogV2UgY3J1Y2lhbGx5IHJlbHkgdXBvbiB0aGUgYWN0aXZlIHRyYWNraW5nIGZvciB0 aGUgKHBwZ3R0KQo+ICsJICogYmF0Y2ggdm1hIGZvciBjb3JyZWN0bmVzcy4gRm9yIGxlc3MgdWds eSBhbmQgbGVzcyBmcmFnaWxpdHkgdGhpcwo+ICsJICogbmVlZHMgdG8gYmUgYWRqdXN0ZWQgdG8g YWxzbyB0cmFjayB0aGUgZ2d0dCBiYXRjaCB2bWEgcHJvcGVybHkgYXMKPiArCSAqIGFjdGl2ZS4K PiArCSAqLwo+ICsJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oYmF0Y2hfb2JqKTsKPiArfQo+ ICsKPiAgLyoKPiAgICogTGVnYWN5IGV4ZWNidWZmZXIganVzdCBjcmVhdGVzIGFuIGV4ZWMyIGxp c3QgZnJvbSB0aGUgb3JpZ2luYWwgZXhlYyBvYmplY3QKPiAgICogbGlzdCBhcnJheSBhbmQgcGFz c2VzIGl0IHRvIHRoZSByZWFsIGZ1bmN0aW9uLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g aW5kZXggNGJmMGVlNi4uMDE0MTgwYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g QEAgLTg2OSwzNSArODY5LDMxIEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1 Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJc3RydWN0IGRybV9kZXZpY2Ug ICAgICAgKmRldiA9IHBhcmFtcy0+ZGV2Owo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAgKnJp bmcgPSBwYXJhbXMtPnJpbmc7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYg PSBwYXJhbXMtPmN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5nYnVmOwo+IC0JdTY0IGV4ZWNfc3Rh cnQ7Cj4gLQlpbnQgaW5zdHBfbW9kZTsKPiAtCXUzMiBpbnN0cF9tYXNrOwo+ICAJaW50IHJldDsK PiAgCj4gLQlpbnN0cF9tb2RlID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQ09OU1RBTlRTX01B U0s7Cj4gLQlpbnN0cF9tYXNrID0gSTkxNV9FWEVDX0NPTlNUQU5UU19NQVNLOwo+IC0Jc3dpdGNo IChpbnN0cF9tb2RlKSB7Cj4gKwlwYXJhbXMtPmluc3RwX21vZGUgPSBhcmdzLT5mbGFncyAmIEk5 MTVfRVhFQ19DT05TVEFOVFNfTUFTSzsKPiArCXBhcmFtcy0+aW5zdHBfbWFzayA9IEk5MTVfRVhF Q19DT05TVEFOVFNfTUFTSzsKPiArCXN3aXRjaCAocGFyYW1zLT5pbnN0cF9tb2RlKSB7Cj4gIAlj YXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX0dFTkVSQUw6Cj4gIAljYXNlIEk5MTVfRVhFQ19D T05TVEFOVFNfQUJTT0xVVEU6Cj4gIAljYXNlIEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZB Q0U6Cj4gLQkJaWYgKGluc3RwX21vZGUgIT0gMCAmJiByaW5nICE9ICZkZXZfcHJpdi0+cmluZ1tS Q1NdKSB7Cj4gKwkJaWYgKHBhcmFtcy0+aW5zdHBfbW9kZSAhPSAwICYmIHJpbmcgIT0gJmRldl9w cml2LT5yaW5nW1JDU10pIHsKPiAgCQkJRFJNX0RFQlVHKCJub24tMCByZWwgY29uc3RhbnRzIG1v ZGUgb24gbm9uLVJDU1xuIik7Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+ICAJCX0KPiAgCj4gLQkJ aWYgKGluc3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Cj4g LQkJCWlmIChpbnN0cF9tb2RlID09IEk5MTVfRVhFQ19DT05TVEFOVFNfUkVMX1NVUkZBQ0UpIHsK PiArCQlpZiAocGFyYW1zLT5pbnN0cF9tb2RlICE9IGRldl9wcml2LT5yZWxhdGl2ZV9jb25zdGFu dHNfbW9kZSkgewo+ICsJCQlpZiAocGFyYW1zLT5pbnN0cF9tb2RlID09IEk5MTVfRVhFQ19DT05T VEFOVFNfUkVMX1NVUkZBQ0UpIHsKPiAgCQkJCURSTV9ERUJVRygicmVsIHN1cmZhY2UgY29uc3Rh bnRzIG1vZGUgaW52YWxpZCBvbiBnZW41K1xuIik7Cj4gIAkJCQlyZXR1cm4gLUVJTlZBTDsKPiAg CQkJfQo+ICAKPiAgCQkJLyogVGhlIEhXIGNoYW5nZWQgdGhlIG1lYW5pbmcgb24gdGhpcyBiaXQg b24gZ2VuNiAqLwo+IC0JCQlpbnN0cF9tYXNrICY9IH5JOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9T VVJGQUNFOwo+ICsJCQlwYXJhbXMtPmluc3RwX21hc2sgJj0gfkk5MTVfRVhFQ19DT05TVEFOVFNf UkVMX1NVUkZBQ0U7Cj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlEUk1fREVC VUcoImV4ZWNidWYgd2l0aCB1bmtub3duIGNvbnN0YW50czogJWRcbiIsIGluc3RwX21vZGUpOwo+ ICsJCURSTV9ERUJVRygiZXhlY2J1ZiB3aXRoIHVua25vd24gY29uc3RhbnRzOiAlZFxuIiwgcGFy YW1zLT5pbnN0cF9tb2RlKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gQEAgLTkx Miw3ICs5MDgsMzQgQEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBpOTE1 X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gIAo+ICAJaTkxNV9nZW1fZXhlY2J1ZmZlcl9t b3ZlX3RvX2FjdGl2ZSh2bWFzLCBwYXJhbXMtPnJlcXVlc3QpOwo+ICAKPiAtCS8qIFRvIGJlIHNw bGl0IGludG8gdHdvIGZ1bmN0aW9ucyBoZXJlLi4uICovCj4gKwlyZXQgPSBkZXZfcHJpdi0+Z3Qu ZXhlY2J1Zl9maW5hbChwYXJhbXMpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsK PiArCS8qCj4gKwkgKiBGcmVlIGV2ZXJ5dGhpbmcgdGhhdCB3YXMgc3RvcmVkIGluIHRoZSBRRSBz dHJ1Y3R1cmUgKHVudGlsIHRoZQo+ICsJICogc2NoZWR1bGVyIGFycml2ZXMgYW5kIGRvZXMgaXQg aW5zdGVhZCk6Cj4gKwkgKi8KPiArCWlmIChwYXJhbXMtPmRpc3BhdGNoX2ZsYWdzICYgSTkxNV9E SVNQQVRDSF9TRUNVUkUpCj4gKwkJaTkxNV9nZW1fZXhlY2J1ZmZfcmVsZWFzZV9iYXRjaF9vYmoo cGFyYW1zLT5iYXRjaF9vYmopOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKgo+ICsg KiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uIGZvciBhZGRpbmcgYSBiYXRjaCB0byB0aGUgcmlu Zy4KPiArICogSXQgaXMgY2FsbGVkIGZyb20gdGhlIHNjaGVkdWxlciwgd2l0aCB0aGUgc3RydWN0 X211dGV4IGFscmVhZHkgaGVsZC4KPiArICovCj4gK2ludCBpbnRlbF9leGVjbGlzdHNfc3VibWlz c2lvbl9maW5hbChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zKQo+ICt7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwYXJhbXMtPmRldi0+ZGV2X3By aXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHBhcmFtcy0+cmVx dWVzdC0+cmluZ2J1ZjsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBwYXJhbXMt PnJpbmc7Cj4gKwl1NjQgZXhlY19zdGFydDsKPiArCWludCByZXQ7Cj4gKwo+ICsJLyogVGhlIG11 dGV4IG11c3QgYmUgYWNxdWlyZWQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAqLwo+ICsJ V0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZwYXJhbXMtPmRldi0+c3RydWN0X211dGV4KSk7Cj4g IAo+ICAJLyoKPiAgCSAqIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIGdwdSBjYWNoZXMgYW5k IGVuc3VyZSB0aGF0IHdlIGRvIGZsdXNoCj4gQEAgLTkyMyw3ICs5NDYsNyBAQCBpbnQgaW50ZWxf ZXhlY2xpc3RzX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFt cywKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWlmIChyaW5nID09ICZkZXZfcHJpdi0+cmluZ1tS Q1NdICYmCj4gLQkgICAgaW5zdHBfbW9kZSAhPSBkZXZfcHJpdi0+cmVsYXRpdmVfY29uc3RhbnRz X21vZGUpIHsKPiArCSAgICBwYXJhbXMtPmluc3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZl X2NvbnN0YW50c19tb2RlKSB7Cj4gIAkJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2JlZ2luKHBh cmFtcy0+cmVxdWVzdCwgNCk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiBAQCAt OTMxLDE0ICs5NTQsMTQgQEAgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXNzaW9uKHN0cnVjdCBp OTE1X2V4ZWNidWZmZXJfcGFyYW1zICpwYXJhbXMsCj4gIAkJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgTUlfTk9PUCk7Cj4gIAkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1 ZiwgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwo+ICAJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIElOU1RQTSk7Cj4gLQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwg aW5zdHBfbWFzayA8PCAxNiB8IGluc3RwX21vZGUpOwo+ICsJCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIHBhcmFtcy0+aW5zdHBfbWFzayA8PCAxNiB8IHBhcmFtcy0+aW5zdHBfbW9k ZSk7Cj4gIAkJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4gIAo+IC0JCWRl dl9wcml2LT5yZWxhdGl2ZV9jb25zdGFudHNfbW9kZSA9IGluc3RwX21vZGU7Cj4gKwkJZGV2X3By aXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlID0gcGFyYW1zLT5pbnN0cF9tb2RlOwo+ICAJfQo+ ICAKPiAgCWV4ZWNfc3RhcnQgPSBwYXJhbXMtPmJhdGNoX29ial92bV9vZmZzZXQgKwo+IC0JCSAg ICAgYXJncy0+YmF0Y2hfc3RhcnRfb2Zmc2V0Owo+ICsJCSAgICAgcGFyYW1zLT5hcmdzX2JhdGNo X3N0YXJ0X29mZnNldDsKPiAgCj4gIAlyZXQgPSByaW5nLT5lbWl0X2JiX3N0YXJ0KHBhcmFtcy0+ cmVxdWVzdCwgZXhlY19zdGFydCwgcGFyYW1zLT5kaXNwYXRjaF9mbGFncyk7Cj4gIAlpZiAocmV0 KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4gaW5kZXggNGU2MGQ1NC4uOGQ5YmFkNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCj4gQEAgLTkzLDYgKzkzLDcgQEAgc3RydWN0IGk5 MTVfZXhlY2J1ZmZlcl9wYXJhbXM7Cj4gIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihz dHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAo+ICAJCQkgICAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqYXJncywKPiAgCQkJICAgICAgIHN0cnVjdCBsaXN0 X2hlYWQgKnZtYXMpOwo+ICtpbnQgaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb25fZmluYWwoc3Ry dWN0IGk5MTVfZXhlY2J1ZmZlcl9wYXJhbXMgKnBhcmFtcyk7Cj4gIHUzMiBpbnRlbF9leGVjbGlz dHNfY3R4X2lkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqKTsKPiAgCj4gIHZv aWQgaW50ZWxfbHJjX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwoK SnVzdCBhIG5pdHBpY2sgb24gbmFtaW5nOyBJIHRoaW5rIHByZXBhcmUvY29tbWl0IG1pZ2h0IGJl IGJldHRlciB0aGFuIHN1Ym1pdC9zdWJtaXRfZmluYWwuICBCdXQgeW91IGRvbid0IGhhdmUgdG8g cmVzcGluIGp1c3QgZm9yIHRoYXQuCgpSZXZpZXdlZC1ieTogSmVzc2UgQmFybmVzIDxqYmFybmVz QHZpcnR1b3VzZ2Vlay5vcmc+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==