From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 3/5] drm/i915: Trim the command parser allocations Date: Fri, 13 Feb 2015 13:08:59 +0000 Message-ID: <54DDF76B.6030904@Intel.com> References: <1421234459-21424-1-git-send-email-chris@chris-wilson.co.uk> <1421234459-21424-3-git-send-email-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 771638938C for ; Fri, 13 Feb 2015 05:09:02 -0800 (PST) In-Reply-To: <1421234459-21424-3-git-send-email-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SGVsbG8sCgpBcHBhcmVudGx5LCBJJ3ZlIGJlZW4gdm9sdW50ZWVyZWQgdG8gcmV2aWV3IHRoZXNl IHBhdGNoZXMgZGVzcGl0ZSBub3QgCmtub3dpbmcgdG9vIG11Y2ggYWJvdXQgdGhlc2UgYXJlYXMg b2YgdGhlIGRyaXZlci4uLgoKT24gMTQvMDEvMjAxNSAxMToyMCwgQ2hyaXMgV2lsc29uIHdyb3Rl Ogo+IEN1cnJlbnRseSwgdGhlIGNvbW1hbmQgcGFyc2VyIHRyaWVzIHRvIGNyZWF0ZSBhIHNlY29u ZGFyeSBiYXRjaCBleGFjdGx5Cj4gYXMgbGFyZ2UgYXMgdGhlIG9yaWdpbmFsLCBhbmQgdm1hcCBi b3RoLiBUaGlzIGlzIG9wZW4gdG8gYWJ1c2UgYnkKPiB1c2Vyc3BhY2UgdXNpbmcgZXh0cmVtZWx5 IGxhcmdlIGJhdGNoIG9iamVjdHMsIGJ1dCBvbmx5IGV4ZWN1dGluZyB2ZXJ5Cj4gc2hvcnQgYmF0 Y2hlcy4gRm9yIGV4YW1wbGUsIHRoaXMgd291bGQgYmUgaWYgdXNlcnNwYWNlIHdlcmUgdG8gaW1w bGVtZW50Cj4gYSBjb21tYW5kIHN1Ym1pc3Npb24gcmluZ2J1ZmZlci4gSG93ZXZlciwgd2Ugb25s eSBuZWVkIHRvIGFsbG9jYXRlIHBhZ2VzCj4gZm9yIGp1c3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBj b21tYW5kIHNlcXVlbmNlIGluIHRoZSBiYXRjaCAtIGFsbAo+IHJlbG9jYXRpb25zIGNvcGllZCB0 byB0aGUgc2Vjb25kYXJ5IGJhdGNoIHdpbGwgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbAo+IGJhdGNo IGFuZCBzbyB0aGVyZSBjYW4gYmUgbm8gYWNjZXNzIHRvIHRoZSBzZWNvbmRhcnkgYmF0Y2ggb3V0 c2lkZSBvZgo+IHRoZSBleHBsaWNpdCBleGVjdXRpb24gcmVnaW9uLgo+Cj4gVGVzdGNhc2U6IGln dC9nZW1fZXhlY19iaWcgI2l2YixieXQsaHN3Cj4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVl ZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MzA4Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyAgICAgfCA3NCArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8 IDc0ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ICAgMiBmaWxlcyBjaGFuZ2VkLCA3 MyBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfY21kX3BhcnNlci5jCj4gaW5kZXggODA2ZTgxMjM0MGQwLi45YTZkYTM1MzZhZTUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwo+IEBAIC04MTgsMjQgKzgxOCwy NiBAQCBzdGF0aWMgYm9vbCB2YWxpZF9yZWcoY29uc3QgdTMyICp0YWJsZSwgaW50IGNvdW50LCB1 MzIgYWRkcikKPiAgIAlyZXR1cm4gZmFsc2U7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHUzMiAqdm1h cF9iYXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICtzdGF0aWMgdTMyICp2 bWFwX2JhdGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJICAgICAgIHVu c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW4pCj4gICB7Cj4gICAJaW50IGk7Cj4gICAJdm9pZCAq YWRkciA9IE5VTEw7Cj4gICAJc3RydWN0IHNnX3BhZ2VfaXRlciBzZ19pdGVyOwo+ICsJaW50IGZp cnN0X3BhZ2UgPSBzdGFydCA+PiBQQUdFX1NISUZUOwo+ICsJaW50IGxhc3RfcGFnZSA9IChsZW4g KyBzdGFydCArIDQwOTUpID4+IFBBR0VfU0hJRlQ7Cj4gKwlpbnQgbnBhZ2VzID0gbGFzdF9wYWdl IC0gZmlyc3RfcGFnZTsKPiAgIAlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+ICAgCj4gLQlwYWdlcyA9 IGRybV9tYWxsb2NfYWIob2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElGVCwgc2l6ZW9mKCpwYWdl cykpOwo+ICsJcGFnZXMgPSBkcm1fbWFsbG9jX2FiKG5wYWdlcywgc2l6ZW9mKCpwYWdlcykpOwo+ ICAgCWlmIChwYWdlcyA9PSBOVUxMKSB7Cj4gICAJCURSTV9ERUJVR19EUklWRVIoIkZhaWxlZCB0 byBnZXQgc3BhY2UgZm9yIHBhZ2VzXG4iKTsKPiAgIAkJZ290byBmaW5pc2g7Cj4gICAJfQo+ICAg Cj4gICAJaSA9IDA7Cj4gLQlmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFnZXMtPnNnbCwgJnNnX2l0 ZXIsIG9iai0+cGFnZXMtPm5lbnRzLCAwKSB7Cj4gLQkJcGFnZXNbaV0gPSBzZ19wYWdlX2l0ZXJf cGFnZSgmc2dfaXRlcik7Cj4gLQkJaSsrOwo+IC0JfQo+ICsJZm9yX2VhY2hfc2dfcGFnZShvYmot PnBhZ2VzLT5zZ2wsICZzZ19pdGVyLCBucGFnZXMsIGZpcnN0X3BhZ2UpCj4gKwkJcGFnZXNbaSsr XSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZzZ19pdGVyKTsKPiAgIAo+ICAgCWFkZHIgPSB2bWFwKHBh Z2VzLCBpLCAwLCBQQUdFX0tFUk5FTCk7Cj4gICAJaWYgKGFkZHIgPT0gTlVMTCkgewo+IEBAIC04 NTUsNjEgKzg1Nyw2MSBAQCBzdGF0aWMgdTMyICpjb3B5X2JhdGNoKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpkZXN0X29iaiwKPiAgIAkJICAgICAgIHUzMiBiYXRjaF9zdGFydF9vZmZzZXQs Cj4gICAJCSAgICAgICB1MzIgYmF0Y2hfbGVuKQo+ICAgewo+IC0JaW50IHJldCA9IDA7Cj4gICAJ aW50IG5lZWRzX2NsZmx1c2ggPSAwOwo+IC0JdTMyICpzcmNfYmFzZSwgKmRlc3RfYmFzZSA9IE5V TEw7Cj4gLQl1MzIgKnNyY19hZGRyLCAqZGVzdF9hZGRyOwo+IC0JdTMyIG9mZnNldCA9IGJhdGNo X3N0YXJ0X29mZnNldCAvIHNpemVvZigqZGVzdF9hZGRyKTsKPiAtCXUzMiBlbmQgPSBiYXRjaF9z dGFydF9vZmZzZXQgKyBiYXRjaF9sZW47Cj4gKwl2b2lkICpzcmNfYmFzZSwgKnNyYzsKPiArCXZv aWQgKmRzdCA9IE5VTEw7Cj4gKwlpbnQgcmV0Owo+ICAgCj4gLQlpZiAoZW5kID4gZGVzdF9vYmot PmJhc2Uuc2l6ZSB8fCBlbmQgPiBzcmNfb2JqLT5iYXNlLnNpemUpCj4gKwlpZiAoYmF0Y2hfbGVu ID4gZGVzdF9vYmotPmJhc2Uuc2l6ZSB8fAo+ICsJICAgIGJhdGNoX2xlbiArIGJhdGNoX3N0YXJ0 X29mZnNldCA+IHNyY19vYmotPmJhc2Uuc2l6ZSkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUUyQklH KTsKPiAgIAo+ICAgCXJldCA9IGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3JlYWQoc3JjX29i aiwgJm5lZWRzX2NsZmx1c2gpOwo+ICAgCWlmIChyZXQpIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVS KCJDTUQ6IGZhaWxlZCB0byBwcmVwIHJlYWRcbiIpOwo+ICsJCURSTV9ERUJVR19EUklWRVIoIkNN RDogZmFpbGVkIHRvIHByZXBhcmUgc2hhZG93IGJhdGNoXG4iKTsKPiAgIAkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPiAgIAl9Cj4gICAKPiAtCXNyY19iYXNlID0gdm1hcF9iYXRjaChzcmNfb2JqKTsK PiArCXNyY19iYXNlID0gdm1hcF9iYXRjaChzcmNfb2JqLCBiYXRjaF9zdGFydF9vZmZzZXQsIGJh dGNoX2xlbik7Cj4gICAJaWYgKCFzcmNfYmFzZSkgewo+ICAgCQlEUk1fREVCVUdfRFJJVkVSKCJD TUQ6IEZhaWxlZCB0byB2bWFwIGJhdGNoXG4iKTsKPiAgIAkJcmV0ID0gLUVOT01FTTsKPiAgIAkJ Z290byB1bnBpbl9zcmM7Cj4gICAJfQo+ICAgCj4gLQlzcmNfYWRkciA9IHNyY19iYXNlICsgb2Zm c2V0Owo+IC0KPiAtCWlmIChuZWVkc19jbGZsdXNoKQo+IC0JCWRybV9jbGZsdXNoX3ZpcnRfcmFu Z2UoKGNoYXIgKilzcmNfYWRkciwgYmF0Y2hfbGVuKTsKPiArCXJldCA9IGk5MTVfZ2VtX29iamVj dF9nZXRfcGFnZXMoZGVzdF9vYmopOwo+ICsJaWYgKHJldCkgewo+ICsJCURSTV9ERUJVR19EUklW RVIoIkNNRDogRmFpbGVkIHRvIGdldCBwYWdlcyBmb3Igc2hhZG93IGJhdGNoXG4iKTsKPiArCQln b3RvIHVubWFwX3NyYzsKPiArCX0KPiArCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoZGVzdF9v YmopOwo+ICAgCj4gICAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKGRl c3Rfb2JqLCB0cnVlKTsKPiAgIAlpZiAocmV0KSB7Cj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiQ01E OiBGYWlsZWQgdG8gc2V0IGJhdGNoIENQVSBkb21haW5cbiIpOwo+ICsJCURSTV9ERUJVR19EUklW RVIoIkNNRDogRmFpbGVkIHRvIHNldCBzaGFkb3cgYmF0Y2ggdG8gQ1BVXG4iKTsKPiAgIAkJZ290 byB1bm1hcF9zcmM7Cj4gICAJfQo+ICAgCj4gLQlkZXN0X2Jhc2UgPSB2bWFwX2JhdGNoKGRlc3Rf b2JqKTsKPiAtCWlmICghZGVzdF9iYXNlKSB7Cj4gKwlkc3QgPSB2bWFwX2JhdGNoKGRlc3Rfb2Jq LCAwLCBiYXRjaF9sZW4pOwo+ICsJaWYgKCFkc3QpIHsKPiAgIAkJRFJNX0RFQlVHX0RSSVZFUigi Q01EOiBGYWlsZWQgdG8gdm1hcCBzaGFkb3cgYmF0Y2hcbiIpOwo+ICsJCWk5MTVfZ2VtX29iamVj dF91bnBpbl9wYWdlcyhkZXN0X29iaik7Cj4gICAJCXJldCA9IC1FTk9NRU07Cj4gICAJCWdvdG8g dW5tYXBfc3JjOwo+ICAgCX0KPiAgIAo+IC0JZGVzdF9hZGRyID0gZGVzdF9iYXNlICsgb2Zmc2V0 Owo+IC0KPiAtCWlmIChiYXRjaF9zdGFydF9vZmZzZXQgIT0gMCkKPiAtCQltZW1zZXQoKHU4ICop ZGVzdF9iYXNlLCAwLCBiYXRjaF9zdGFydF9vZmZzZXQpOwo+ICsJc3JjID0gc3JjX2Jhc2UgKyBv ZmZzZXRfaW5fcGFnZShiYXRjaF9zdGFydF9vZmZzZXQpOwo+ICsJaWYgKG5lZWRzX2NsZmx1c2gp Cj4gKwkJZHJtX2NsZmx1c2hfdmlydF9yYW5nZShzcmMsIGJhdGNoX2xlbik7Cj4gICAKPiAtCW1l bWNweShkZXN0X2FkZHIsIHNyY19hZGRyLCBiYXRjaF9sZW4pOwo+IC0JbWVtc2V0KCh1OCAqKWRl c3RfYWRkciArIGJhdGNoX2xlbiwgMCwgZGVzdF9vYmotPmJhc2Uuc2l6ZSAtIGVuZCk7Cj4gKwlt ZW1jcHkoZHN0LCBzcmMsIGJhdGNoX2xlbik7Cj4gICAKPiAgIHVubWFwX3NyYzoKPiAgIAl2dW5t YXAoc3JjX2Jhc2UpOwo+ICAgdW5waW5fc3JjOgo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9w YWdlcyhzcmNfb2JqKTsKPiAgIAo+IC0JcmV0dXJuIHJldCA/IEVSUl9QVFIocmV0KSA6IGRlc3Rf YmFzZTsKPiArCXJldHVybiByZXQgPyBFUlJfUFRSKHJldCkgOiBkc3Q7Cj4gICB9Cj4gICAKPiAg IC8qKgo+IEBAIC0xMDQ2LDM0ICsxMDQ4LDI2IEBAIGludCBpOTE1X3BhcnNlX2NtZHMoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJICAgIHUzMiBiYXRjaF9sZW4sCj4gICAJCSAg ICBib29sIGlzX21hc3RlcikKPiAgIHsKPiAtCWludCByZXQgPSAwOwo+ICAgCXUzMiAqY21kLCAq YmF0Y2hfYmFzZSwgKmJhdGNoX2VuZDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0 b3IgZGVmYXVsdF9kZXNjID0geyAwIH07Cj4gICAJYm9vbCBvYWNvbnRyb2xfc2V0ID0gZmFsc2U7 IC8qIE9BQ09OVFJPTCB0cmFja2luZy4gU2VlIGNoZWNrX2NtZCgpICovCj4gLQo+IC0JcmV0ID0g aTkxNV9nZW1fb2JqX2dndHRfcGluKHNoYWRvd19iYXRjaF9vYmosIDQwOTYsIDApOwo+IC0JaWYg KHJldCkgewo+IC0JCURSTV9ERUJVR19EUklWRVIoIkNNRDogRmFpbGVkIHRvIHBpbiBzaGFkb3cg YmF0Y2hcbiIpOwo+IC0JCXJldHVybiAtMTsKPiAtCX0KPiArCWludCByZXQgPSAwOwo+ICAgCj4g ICAJYmF0Y2hfYmFzZSA9IGNvcHlfYmF0Y2goc2hhZG93X2JhdGNoX29iaiwgYmF0Y2hfb2JqLAo+ ICAgCQkJCWJhdGNoX3N0YXJ0X29mZnNldCwgYmF0Y2hfbGVuKTsKPiAgIAlpZiAoSVNfRVJSKGJh dGNoX2Jhc2UpKSB7Cj4gICAJCURSTV9ERUJVR19EUklWRVIoIkNNRDogRmFpbGVkIHRvIGNvcHkg YmF0Y2hcbiIpOwo+IC0JCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHNoYWRvd19iYXRjaF9v YmopOwo+ICAgCQlyZXR1cm4gUFRSX0VSUihiYXRjaF9iYXNlKTsKPiAgIAl9Cj4gICAKPiAtCWNt ZCA9IGJhdGNoX2Jhc2UgKyAoYmF0Y2hfc3RhcnRfb2Zmc2V0IC8gc2l6ZW9mKCpjbWQpKTsKPiAt Cj4gICAJLyoKPiAgIAkgKiBXZSB1c2UgdGhlIGJhdGNoIGxlbmd0aCBhcyBzaXplIGJlY2F1c2Ug dGhlIHNoYWRvdyBvYmplY3QgaXMgYXMKPiAgIAkgKiBsYXJnZSBvciBsYXJnZXIgYW5kIGNvcHlf YmF0Y2goKSB3aWxsIHdyaXRlIE1JX05PUHMgdG8gdGhlIGV4dHJhCj4gICAJICogc3BhY2UuIFBh cnNpbmcgc2hvdWxkIGJlIGZhc3RlciBpbiBzb21lIGNhc2VzIHRoaXMgd2F5Lgo+ICAgCSAqLwo+ IC0JYmF0Y2hfZW5kID0gY21kICsgKGJhdGNoX2xlbiAvIHNpemVvZigqYmF0Y2hfZW5kKSk7Cj4g KwliYXRjaF9lbmQgPSBiYXRjaF9iYXNlICsgKGJhdGNoX2xlbiAvIHNpemVvZigqYmF0Y2hfZW5k KSk7Cj4gICAKPiArCWNtZCA9IGJhdGNoX2Jhc2U7Cj4gICAJd2hpbGUgKGNtZCA8IGJhdGNoX2Vu ZCkgewo+ICAgCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlc2M7Cj4g ICAJCXUzMiBsZW5ndGg7Cj4gQEAgLTExMzIsNyArMTEyNiw3IEBAIGludCBpOTE1X3BhcnNlX2Nt ZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAl9Cj4gICAKPiAgIAl2dW5tYXAo YmF0Y2hfYmFzZSk7Cj4gLQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihzaGFkb3dfYmF0Y2hf b2JqKTsKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzaGFkb3dfYmF0Y2hfb2JqKTsK PiAgIAo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDA2YmRmNzY3MDU4NC4uM2ZiZDUyMTIyMjVmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xMTM2 LDE2ICsxMTM2LDE1IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfcGFyc2Uoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKPiAgIAkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNo X29iaiwKPiAgIAkJCSAgdTMyIGJhdGNoX3N0YXJ0X29mZnNldCwKPiAgIAkJCSAgdTMyIGJhdGNo X2xlbiwKPiAtCQkJICBib29sIGlzX21hc3RlciwKPiAtCQkJICB1MzIgKmZsYWdzKQo+ICsJCQkg IGJvb2wgaXNfbWFzdGVyKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoYmF0Y2hfb2JqLT5iYXNlLmRldik7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnNoYWRvd19iYXRjaF9vYmo7Cj4gLQlib29sIG5lZWRfcmVsb2MgPSBmYWxz ZTsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCWludCByZXQ7Cj4gICAKPiAgIAlzaGFk b3dfYmF0Y2hfb2JqID0gaTkxNV9nZW1fYmF0Y2hfcG9vbF9nZXQoJmRldl9wcml2LT5tbS5iYXRj aF9wb29sLAo+IC0JCQkJCQkgICBiYXRjaF9vYmotPmJhc2Uuc2l6ZSk7Cj4gKwkJCQkJCSAgIFBB R0VfQUxJR04oYmF0Y2hfbGVuKSk7Cj4gICAJaWYgKElTX0VSUihzaGFkb3dfYmF0Y2hfb2JqKSkK PiAgIAkJcmV0dXJuIHNoYWRvd19iYXRjaF9vYmo7Cj4gICAKPiBAQCAtMTE1NSw0MCArMTE1NCwz MCBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3BhcnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcsCj4gICAJCQkgICAgICBiYXRjaF9zdGFydF9vZmZzZXQsCj4gICAJCQkgICAgICBiYXRjaF9s ZW4sCj4gICAJCQkgICAgICBpc19tYXN0ZXIpOwo+IC0JaWYgKHJldCkgewo+IC0JCWlmIChyZXQg PT0gLUVBQ0NFUykKPiAtCQkJcmV0dXJuIGJhdGNoX29iajsKPiAtCX0gZWxzZSB7Cj4gLQkJc3Ry dWN0IGk5MTVfdm1hICp2bWE7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyOwo+ICAgCj4gLQkJ bWVtc2V0KHNoYWRvd19leGVjX2VudHJ5LCAwLCBzaXplb2YoKnNoYWRvd19leGVjX2VudHJ5KSk7 Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9waW4oc2hhZG93X2JhdGNoX29iaiwgMCwgMCk7 ClRoZXJlIGlzIG5vIGV4cGxpY2l0IHVucGluIGZvciB0aGlzLiBEb2VzIGl0IGhhcHBlbiBhdXRv bWF0aWNhbGx5IGR1ZSB0byAKYWRkaW5nIHRoZSB2bWEgdG8gdGhlIGViLT52bWFzIGxpc3Q/CgpB bHNvLCBkb2VzIGl0IG1hdHRlciB0aGF0IGl0IHdpbGwgYmUgcGlubmVkIGFnYWluIChhbmQgZXhw bGljaXRseSAKdW5waW5uZWQpIGlmIHRoZSBTRUNVUkUgZmxhZyBpcyBzZXQ/CgoKPiArCWlmIChy ZXQpCj4gKwkJZ290byBlcnI7Cj4gICAKPiAtCQl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChz aGFkb3dfYmF0Y2hfb2JqKTsKPiAtCQl2bWEtPmV4ZWNfZW50cnkgPSBzaGFkb3dfZXhlY19lbnRy eTsKPiAtCQl2bWEtPmV4ZWNfZW50cnktPmZsYWdzID0gX19FWEVDX09CSkVDVF9QVVJHRUFCTEU7 Cj4gLQkJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKCZzaGFkb3dfYmF0Y2hfb2JqLT5iYXNlKTsK PiAtCQlpOTE1X2dlbV9leGVjYnVmZmVyX3Jlc2VydmVfdm1hKHZtYSwgcmluZywgJm5lZWRfcmVs b2MpOwo+IC0JCWxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19saXN0LCAmZWItPnZtYXMpOwo+ICsJ bWVtc2V0KHNoYWRvd19leGVjX2VudHJ5LCAwLCBzaXplb2YoKnNoYWRvd19leGVjX2VudHJ5KSk7 Cj4gICAKPiAtCQlzaGFkb3dfYmF0Y2hfb2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9kb21haW5zID0K PiAtCQkJYmF0Y2hfb2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9kb21haW5zOwo+ICsJdm1hID0gaTkx NV9nZW1fb2JqX3RvX2dndHQoc2hhZG93X2JhdGNoX29iaik7Cj4gKwl2bWEtPmV4ZWNfZW50cnkg PSBzaGFkb3dfZXhlY19lbnRyeTsKPiArCXZtYS0+ZXhlY19lbnRyeS0+ZmxhZ3MgPSBfX0VYRUNf T0JKRUNUX1BVUkdFQUJMRSB8IF9fRVhFQ19PQkpFQ1RfSEFTX1BJTjsKPiArCWRybV9nZW1fb2Jq ZWN0X3JlZmVyZW5jZSgmc2hhZG93X2JhdGNoX29iai0+YmFzZSk7Cj4gKwlsaXN0X2FkZF90YWls KCZ2bWEtPmV4ZWNfbGlzdCwgJmViLT52bWFzKTsKPiAgIAo+IC0JCS8qCj4gLQkJICogU2V0IHRo ZSBESVNQQVRDSF9TRUNVUkUgYml0IHRvIHJlbW92ZSB0aGUgTk9OX1NFQ1VSRQo+IC0JCSAqIGJp dCBmcm9tIE1JX0JBVENIX0JVRkZFUl9TVEFSVCBjb21tYW5kcyBpc3N1ZWQgaW4gdGhlCj4gLQkJ ICogZGlzcGF0Y2hfZXhlY2J1ZmZlciBpbXBsZW1lbnRhdGlvbnMuIFdlIHNwZWNpZmljYWxseQo+ IC0JCSAqIGRvbid0IHdhbnQgdGhhdCBzZXQgd2hlbiB0aGUgY29tbWFuZCBwYXJzZXIgaXMKPiAt CQkgKiBlbmFibGVkLgo+IC0JCSAqCj4gLQkJICogRklYTUU6IHdpdGggYWxpYXNpbmcgcHBndHQs IGJ1ZmZlcnMgdGhhdCBzaG91bGQgb25seQo+IC0JCSAqIGJlIGluIGdndHQgc3RpbGwgZW5kIHVw IGluIHRoZSBhbGlhc2luZyBwcGd0dC4gcmVtb3ZlCj4gLQkJICogdGhpcyBjaGVjayB3aGVuIHRo YXQgaXMgZml4ZWQuCj4gLQkJICovCj4gLQkJaWYgKFVTRVNfRlVMTF9QUEdUVChkZXYpKQo+IC0J CQkqZmxhZ3MgfD0gSTkxNV9ESVNQQVRDSF9TRUNVUkU7Cj4gLQl9Cj4gKwlzaGFkb3dfYmF0Y2hf b2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQ7 Cj4gKwo+ICsJcmV0dXJuIHNoYWRvd19iYXRjaF9vYmo7Cj4gICAKPiAtCXJldHVybiByZXQgPyBF UlJfUFRSKHJldCkgOiBzaGFkb3dfYmF0Y2hfb2JqOwo+ICtlcnI6Cj4gKwlpZiAocmV0ID09IC1F QUNDRVMpIC8qIHVuaGFuZGxlZCBjaGFpbmVkIGJhdGNoICovCj4gKwkJcmV0dXJuIGJhdGNoX29i ajsKPiArCWVsc2UKPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgfQo+ICAgCj4gICBpbnQK PiBAQCAtMTUzMiwxMiArMTUyMSwyNyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCQkJCQkgICAgICBiYXRjaF9vYmosCj4g ICAJCQkJCQkgICAgICBhcmdzLT5iYXRjaF9zdGFydF9vZmZzZXQsCj4gICAJCQkJCQkgICAgICBh cmdzLT5iYXRjaF9sZW4sCj4gLQkJCQkJCSAgICAgIGZpbGUtPmlzX21hc3RlciwKPiAtCQkJCQkJ ICAgICAgJmZsYWdzKTsKPiArCQkJCQkJICAgICAgZmlsZS0+aXNfbWFzdGVyKTsKPiAgIAkJaWYg KElTX0VSUihiYXRjaF9vYmopKSB7Cj4gICAJCQlyZXQgPSBQVFJfRVJSKGJhdGNoX29iaik7Cj4g ICAJCQlnb3RvIGVycjsKPiAgIAkJfQo+ICsKPiArCQkvKgo+ICsJCSAqIFNldCB0aGUgRElTUEFU Q0hfU0VDVVJFIGJpdCB0byByZW1vdmUgdGhlIE5PTl9TRUNVUkUKPiArCQkgKiBiaXQgZnJvbSBN SV9CQVRDSF9CVUZGRVJfU1RBUlQgY29tbWFuZHMgaXNzdWVkIGluIHRoZQo+ICsJCSAqIGRpc3Bh dGNoX2V4ZWNidWZmZXIgaW1wbGVtZW50YXRpb25zLiBXZSBzcGVjaWZpY2FsbHkKPiArCQkgKiBk b24ndCB3YW50IHRoYXQgc2V0IHdoZW4gdGhlIGNvbW1hbmQgcGFyc2VyIGlzCj4gKwkJICogZW5h YmxlZC4KPiArCQkgKgo+ICsJCSAqIEZJWE1FOiB3aXRoIGFsaWFzaW5nIHBwZ3R0LCBidWZmZXJz IHRoYXQgc2hvdWxkIG9ubHkKPiArCQkgKiBiZSBpbiBnZ3R0IHN0aWxsIGVuZCB1cCBpbiB0aGUg YWxpYXNpbmcgcHBndHQuIHJlbW92ZQo+ICsJCSAqIHRoaXMgY2hlY2sgd2hlbiB0aGF0IGlzIGZp eGVkLgo+ICsJCSAqLwo+ICsJCWlmIChVU0VTX0ZVTExfUFBHVFQoZGV2KSkKPiArCQkJZmxhZ3Mg fD0gSTkxNV9ESVNQQVRDSF9TRUNVUkU7Cj4gKwo+ICsJCWV4ZWNfc3RhcnQgPSAwOwo+ICAgCX0K PiAgIAo+ICAgCWJhdGNoX29iai0+YmFzZS5wZW5kaW5nX3JlYWRfZG9tYWlucyB8PSBJOTE1X0dF TV9ET01BSU5fQ09NTUFORDsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==