From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/6] drm/i915: Migrate stolen objects before hibernation Date: Wed, 9 Dec 2015 17:25:19 +0000 Message-ID: <566863FF.4020804@linux.intel.com> References: <1449665182-10054-1-git-send-email-ankitprasad.r.sharma@intel.com> <1449665182-10054-7-git-send-email-ankitprasad.r.sharma@intel.com> 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 407ED6E266 for ; Wed, 9 Dec 2015 09:25:22 -0800 (PST) In-Reply-To: <1449665182-10054-7-git-send-email-ankitprasad.r.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMDkvMTIvMTUgMTI6NDYsIGFua2l0cHJhc2FkLnIuc2hhcm1hQGludGVsLmNvbSB3 cm90ZToKPiBGcm9tOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPgo+ IFZpbGxlIHJlbWluZGVkIHVzIHRoYXQgc3RvbGVuIG1lbW9yeSBpcyBub3QgcHJlc2VydmVkIGFj cm9zcwo+IGhpYmVybmF0aW9uLCBhbmQgYSByZXN1bHQgb2YgdGhpcyB3YXMgdGhhdCBjb250ZXh0 IG9iamVjdHMgbm93IGJlaW5nCj4gYWxsb2NhdGVkIGZyb20gc3RvbGVuIHdlcmUgYmVpbmcgY29y cnVwdGVkIG9uIFM0IGFuZCBwcm9tcHRseSBoYW5naW5nCj4gdGhlIEdQVSBvbiByZXN1bWUuCj4K PiBXZSB3YW50IHRvIHV0aWxpc2Ugc3RvbGVuIGZvciBhcyBtdWNoIGFzIHBvc3NpYmxlIChub3Ro aW5nIGVsc2Ugd2lsbCB1c2UKPiB0aGF0IHdhc3RlZCBtZW1vcnkgb3RoZXJ3aXNlKSwgc28gd2Ug bmVlZCBhIHN0cmF0ZWd5IGZvciBoYW5kbGluZwo+IGdlbmVyYWwgb2JqZWN0cyBhbGxvY2F0ZWQg ZnJvbSBzdG9sZW4gYW5kIGhpYmVybmF0aW9uLiBBIHNpbXBsZSBzb2x1dGlvbgo+IGlzIHRvIGRv IGEgQ1BVIGNvcHkgdGhyb3VnaCB0aGUgR1RUIG9mIHRoZSBzdG9sZW4gb2JqZWN0IGludG8gYSBm cmVzaAo+IHNobWVtZnMgYmFja2luZyBzdG9yZSBhbmQgdGhlbmNlZm9ydGggdHJlYXQgaXQgYXMg YSBub3JtYWwgb2JqZWN0cy4gVGhpcwo+IGNhbiBiZSByZWZpbmVkIGluIGZ1dHVyZSB0byBlaXRo ZXIgdXNlIGEgR1BVIGNvcHkgdG8gYXZvaWQgdGhlIHNsb3cKPiB1bmNhY2hlZCByZWFkcyAodGhv dWdoIGl0J3MgaGliZXJuYXRpb24hKSBhbmQgcmVjcmVhdGUgc3RvbGVuIG9iamVjdHMKPiB1cG9u IHJlc3VtZS9maXJzdC11c2UuIEZvciBub3csIGEgc2ltcGxlIGFwcHJvYWNoIHNob3VsZCBzdWZm aWNlIGZvcgo+IHRlc3RpbmcgdGhlIG9iamVjdCBtaWdyYXRpb24uCj4KPiB2MjoKPiBTd2FwIFBU RSBmb3IgcGlubmVkIGJpbmRpbmdzIG92ZXIgdG8gdGhlIHNobWVtZnMuIFRoaXMgYWRkcyBhCj4g Y29tcGxpY2F0ZWQgZGFuY2UsIGJ1dCBpcyByZXF1aXJlZCBhcyBtYW55IHN0b2xlbiBvYmplY3Rz IGFyZSBsaWtlbHkgdG8KPiBiZSBwaW5uZWQgZm9yIHVzZSBieSB0aGUgaGFyZHdhcmUuIFN3YXBw aW5nIHRoZSBQVEVzIHNob3VsZCBub3QgcmVzdWx0Cj4gaW4gZXh0ZXJuYWxseSB2aXNpYmxlIGJl aGF2aW91ciwgYXMgZWFjaCBQVEUgdXBkYXRlIHNob3VsZCBiZSBhdG9taWMgYW5kCj4gdGhlIHR3 byBwYWdlcyBpZGVudGljYWwuIChkYW52ZXQpCj4KPiBzYWZlLWJ5LWRlZmF1bHQsIG9yIHRoZSBw cmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UuIFdlIG5lZWQgYSBuZXcgZmxhZwo+IHRvIG1hcmsg b2JqZWN0cyB0aGF0IHdlIGNhbiB3aWxmdWxseSBkaXNjYXJkIGFuZCByZWNyZWF0ZSBhY3Jvc3MK PiBoaWJlcm5hdGlvbi4gKGRhbnZldCkKPgo+IEp1c3QgdXNlIHRoZSBnbG9iYWxfbGlzdCByYXRo ZXIgdGhhbiBpbnZlbnQgYSBuZXcgc3RvbGVuX2xpc3QuIFRoaXMgaXMKPiB0aGUgc2xvd3BhdGgg aGliZXJuYXRlIGFuZCBzbyBhZGRpbmcgYSBuZXcgbGlzdCBhbmQgdGhlIGFzc29jaWF0ZWQKPiBj b21wbGV4aXR5IGlzbid0IHdvcnRoIGl0Lgo+Cj4gdjM6IFJlYmFzZWQgb24gZHJtLWludGVsLW5p Z2h0bHkgKEFua2l0KQo+Cj4gdjQ6IFVzZSBpbnNlcnRfcGFnZSB0byBtYXAgc3RvbGVuIG1lbW9y eSBiYWNrZWQgcGFnZXMgZm9yIG1pZ3JhdGlvbiB0bwo+IHNobWVtIChDaHJpcykKPgo+IHY1OiBB Y3F1aXJlIG11dGV4IGxvY2sgd2hpbGUgY29weWluZyBzdG9sZW4gYnVmZmVyIG9iamVjdHMgdG8g c2htZW0gKENocmlzKQo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpcyBhdCBj aHJpcy13aWxzb24uY28udWs+Cj4gU2lnbmVkLW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxh bmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgMTcgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICAgICAgICAgfCAgIDcgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyAgICAgICAgIHwgMjMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgfCAgIDMgKwo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYyAgICAgIHwgICA2ICsKPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICB8ICAgMiArCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAgIDYgKwo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAy NjEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPiBpbmRleCA5ZjU1MjA5Li4yYmI5ZTllIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gQEAgLTEwMzYsNiArMTAzNiwyMSBAQCBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVuZChzdHJ1 Y3QgZGV2aWNlICpkZXYpCj4gICAJcmV0dXJuIGk5MTVfZHJtX3N1c3BlbmQoZHJtX2Rldik7Cj4g ICB9Cj4KPiArc3RhdGljIGludCBpOTE1X3BtX2ZyZWV6ZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4g K3sKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkxNV9nZW1fZnJlZXplKHBjaV9nZXRfZHJ2 ZGF0YSh0b19wY2lfZGV2KGRldikpKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKCkNh biB3ZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFMzIGFuZCBTNCBpZiB0aGUgc3RvbGVuIGNvcnJ1cHRp b24gb25seSAKaGFwcGVucyBpbiBTND8gTm90IHRvIHNwZW5kIGFsbCB0aGUgZXh0cmEgZWZmb3J0 IGZvciBub3RoaW5nIGluIFMzPyBPciAKbWF5YmUgdGhpcyBpcyBub3QgZXZlbiBjYWxsZWQgZm9y IFMzPwoKPiArCj4gKwlyZXQgPSBpOTE1X3BtX3N1c3BlbmQoZGV2KTsKPiArCWlmIChyZXQpCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQg aTkxNV9wbV9zdXNwZW5kX2xhdGUoc3RydWN0IGRldmljZSAqZGV2KQo+ICAgewo+ICAgCXN0cnVj dCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGV2X3RvX2k5MTUoZGV2KS0+ZGV2Owo+IEBAIC0xNzAw LDcgKzE3MTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldl9wbV9vcHMgaTkxNV9wbV9vcHMg PSB7Cj4gICAJICogQHJlc3RvcmUsIEByZXN0b3JlX2Vhcmx5IDogY2FsbGVkIGFmdGVyIHJlYm9v dGluZyBhbmQgcmVzdG9yaW5nIHRoZQo+ICAgCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhpYmVybmF0aW9uIGltYWdlIFtQTVNHX1JFU1RPUkVdCj4gICAJICovCj4gLQkuZnJlZXplID0g aTkxNV9wbV9zdXNwZW5kLAo+ICsJLmZyZWV6ZSA9IGk5MTVfcG1fZnJlZXplLAo+ICAgCS5mcmVl emVfbGF0ZSA9IGk5MTVfcG1fc3VzcGVuZF9sYXRlLAo+ICAgCS50aGF3X2Vhcmx5ID0gaTkxNV9w bV9yZXN1bWVfZWFybHksCj4gICAJLnRoYXcgPSBpOTE1X3BtX3Jlc3VtZSwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCBlMGIwOWIwLi4wZDE4YjA3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gQEAgLTIwODAsNiArMjA4MCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCB7Cj4gICAJICogQWR2aWNlOiBhcmUgdGhlIGJhY2tpbmcgcGFnZXMgcHVyZ2VhYmxlPwo+ ICAgCSAqLwo+ICAgCXVuc2lnbmVkIGludCBtYWR2OjI7Cj4gKwkvKioKPiArCSAqIFdoZXJlYXMg bWFkdiBpcyBmb3IgdXNlcnNwYWNlLCB0aGVyZSBhcmUgY2VydGFpbiBzaXR1YXRpb25zCj4gKwkg KiB3aGVyZSB3ZSB3YW50IEk5MTVfTUFEVl9ET05UTkVFRCBiZWhhdmlvdXIgb24gaW50ZXJuYWwg b2JqZWN0cwo+ICsJICogd2l0aG91dCBjb25mbGF0aW5nIHRoZSB1c2Vyc3BhY2Ugc2V0dGluZy4K PiArCSAqLwo+ICsJdW5zaWduZWQgaW50IGludGVybmFsX3ZvbGF0aWxlOjE7Cj4KPiAgIAkvKioK PiAgIAkgKiBDdXJyZW50IHRpbGluZyBtb2RlIGZvciB0aGUgb2JqZWN0Lgo+IEBAIC0zMDA2LDYg KzMwMTIsNyBAQCBpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIGludCBzbGljZSk7Cj4gICB2b2lkIGk5MTVfZ2VtX2luaXRfc3dpenpsaW5nKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAgdm9pZCBpOTE1X2dlbV9jbGVhbnVwX3JpbmdidWZm ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ3B1 X2lkbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gK2ludCBfX211c3RfY2hlY2sgaTkxNV9n ZW1fZnJlZXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAgaW50IF9fbXVzdF9jaGVjayBp OTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAgdm9pZCBfX2k5MTVf YWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IGluZGV4IDY4ZWQ2N2EuLjFmMTM0YjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBAQCAtNDUxMSwxMiArNDUxMSwyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3Rfb3BzIGk5MTVfZ2VtX29iamVjdF9vcHMgPSB7Cj4gICAJLnB1dF9wYWdlcyA9IGk5 MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0LAo+ICAgfTsKPgo+ICtzdGF0aWMgc3RydWN0IGFk ZHJlc3Nfc3BhY2UgKgo+ICtpOTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBmaWxlICpmaWxlKQo+ICt7Cj4gKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAq bWFwcGluZyA9IGZpbGVfaW5vZGUoZmlsZSktPmlfbWFwcGluZzsKPiArCWdmcF90IG1hc2s7Cj4g Kwo+ICsJbWFzayA9IEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1JFQ0xBSU1BQkxFOwo+ICsJaWYgKElT X0NSRVNUTElORShkZXYpIHx8IElTX0JST0FEV0FURVIoZGV2KSkgewo+ICsJCS8qIDk2NWdtIGNh bm5vdCByZWxvY2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIuICovCj4gKwkJbWFzayAmPSB+X19HRlBf SElHSE1FTTsKPiArCQltYXNrIHw9IF9fR0ZQX0RNQTMyOwo+ICsJfQo+ICsJbWFwcGluZ19zZXRf Z2ZwX21hc2sobWFwcGluZywgbWFzayk7Cj4gKwo+ICsJcmV0dXJuIG1hcHBpbmc7Cj4gK30KPiAr Cj4gICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJCQkgIHNpemVfdCBzaXplKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqbWFwcGluZzsKPiAtCWdmcF90IG1hc2s7Cj4gICAJaW50IHJldDsKPgo+ICAgCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9hbGxvYyhkZXYpOwo+IEBAIC00NTI5LDE1ICs0NTQ0LDcgQEAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmk5MTVfZ2VtX2FsbG9jX29iamVjdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCX0KPgo+IC0JbWFzayA9 IEdGUF9ISUdIVVNFUiB8IF9fR0ZQX1JFQ0xBSU1BQkxFOwo+IC0JaWYgKElTX0NSRVNUTElORShk ZXYpIHx8IElTX0JST0FEV0FURVIoZGV2KSkgewo+IC0JCS8qIDk2NWdtIGNhbm5vdCByZWxvY2F0 ZSBvYmplY3RzIGFib3ZlIDRHaUIuICovCj4gLQkJbWFzayAmPSB+X19HRlBfSElHSE1FTTsKPiAt CQltYXNrIHw9IF9fR0ZQX0RNQTMyOwo+IC0JfQo+IC0KPiAtCW1hcHBpbmcgPSBmaWxlX2lub2Rl KG9iai0+YmFzZS5maWxwKS0+aV9tYXBwaW5nOwo+IC0JbWFwcGluZ19zZXRfZ2ZwX21hc2sobWFw cGluZywgbWFzayk7Cj4gKwlpOTE1X2dlbV9zZXRfaW5vZGVfZ2ZwKGRldiwgb2JqLT5iYXNlLmZp bHApOwo+Cj4gICAJaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X29w cyk7Cj4KPiBAQCAtNDcxNCw2ICs0NzIxLDIwOSBAQCBpOTE1X2dlbV9zdG9wX3JpbmdidWZmZXJz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWRldl9wcml2LT5ndC5zdG9wX3Jpbmcocmlu Zyk7Cj4gICB9Cj4KPiArc3RhdGljIGludAo+ICtpOTE1X2dlbV9vYmplY3RfbWlncmF0ZV9zdG9s ZW5fdG9fc2htZW1mcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7CgpTb21l IGRvY3VtZW50YXRpb24gZm9yIHRoaXMgZnVuY3Rpb24gd291bGQgYmUgZ29vZC4KCj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Cj4gKwlz dHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOwo+ICsJc3RydWN0IGRybV9tbV9ub2RlIG5vZGU7Cj4g KwlzdHJ1Y3QgZmlsZSAqZmlsZTsKPiArCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwo+ ICsJc3RydWN0IHNnX3RhYmxlICpzdG9sZW5fcGFnZXMsICpzaG1lbWZzX3BhZ2VzOwo+ICsJaW50 IHJldCwgaTsKPiArCj4gKwlpZiAoV0FSTl9PTihpOTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdf c3dpenpsZShvYmopKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKCkkgYW0gbm8gZXhwZXJ0IGluIGhp YmVybmF0aW9uIG9yIHN3aXp6bGluZyBidXQgdGhpcyBsb29rcyByZWFsbHkgYmFkIHRvIG1lLgoK SXQgaXMgYm90aCBwbGF0Zm9ybSBhbmQgdXNlciBjb250cm9sbGVkIGFuZCBpdCB3aWxsIGNhdXNl IGhpYmVybmF0aW9uIHRvIApmYWlsIGluIGEgdmVyeSBub2lzeSB3YXksIGNvcnJlY3Q/CgpBdCBs ZWFzdCBpdCBuZWVkcyB0byBiZSBXQVJOX09OX09OQ0UsIGJ1dCBpZiBteSB0aGlua2luZyBpcyBj b3JyZWN0IGl0IApzaG91bGQgcmVhbGx5IGJlIHRoYXQgZWl0aGVyOgoKYSkgaGliZXJuYXRpb24g aXMgcHJldmVudGVkIGluIGEgcXVpZXRlciB3YXkgKERSTV9FUlJPUiwgb25jZSkgCmFsdG9nZXRo ZXIgd2hlbiBkZXZfcHJpdi0+bW0uYml0XzZfc3dpenpsZV94ID09IApJOTE1X0JJVF82X1NXSVpa TEVfOV8xMF8xNywgb3IKCmIpIHNldF90aWxpbmcgZmFpbHMgb24gdGhlIHNhbWUgcGxhdGZvcm1z IHdoaWNoIGFsc28gc3VwcG9ydCBoaWJlcm5hdGlvbi4KCkNvbW1lbnRzPwoKPiArCj4gKwlyZXQg PSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7Cj4gKwlpZiAo cmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJZmlsZSA9IHNobWVtX2ZpbGVfc2V0dXAoImRy bSBtbSBvYmplY3QiLCBvYmotPmJhc2Uuc2l6ZSwgVk1fTk9SRVNFUlZFKTsKPiArCWlmIChJU19F UlIoZmlsZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gKwltYXBwaW5nID0gaTkxNV9n ZW1fc2V0X2lub2RlX2dmcChvYmotPmJhc2UuZGV2LCBmaWxlKTsKPiArCj4gKwlsaXN0X2Zvcl9l YWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+ICsJCWlm IChpOTE1X3ZtYV91bmJpbmQodm1hKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJaWYgKG9iai0+ bWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQgJiYgbGlzdF9lbXB0eSgmb2JqLT52bWFfbGlzdCkp IHsKPiArCQkvKiBEaXNjYXJkIHRoZSBzdG9sZW4gcmVzZXJ2YXRpb24sIGFuZCByZXBsYWNlIHdp dGgKPiArCQkgKiBhbiB1bnBvcHVsYXRlZCBzaG1lbWZzIG9iamVjdC4KPiArCQkgKi8KPiArCQlv YmotPm1hZHYgPSBfX0k5MTVfTUFEVl9QVVJHRUQ7Cj4gKwkJZ290byBzd2FwX3BhZ2VzOwo+ICsJ fQoKTWF5YmUgcHV0IGEgY29tbWVudCBiZWZvcmUgdGhpcyBibG9jayBzYXlpbmcgIm5vIG5lZWQg dG8gY29weSAKY29udGVudC9zb21ldGhpbmcgZm9yIG9iamVjdHMuLi4iLCBpZiBJIGdvdCBpdCBy aWdodC4KCj4gKwo+ICsJLyogc3RvbGVuIG9iamVjdHMgYXJlIGFscmVhZHkgcGlubmVkIHRvIHBy ZXZlbnQgc2hyaW5rYWdlICovCj4gKwltZW1zZXQoJm5vZGUsIDAsIHNpemVvZihub2RlKSk7Cj4g KwlyZXQgPSBkcm1fbW1faW5zZXJ0X25vZGVfaW5fcmFuZ2VfZ2VuZXJpYygmaTkxNS0+Z3R0LmJh c2UubW0sCj4gKwkJCQkJCSAgJm5vZGUsCj4gKwkJCQkJCSAgNDA5NiwgMCwgSTkxNV9DQUNIRV9O T05FLAo+ICsJCQkJCQkgIDAsIGk5MTUtPmd0dC5tYXBwYWJsZV9lbmQsCj4gKwkJCQkJCSAgRFJN X01NX1NFQVJDSF9ERUZBVUxULAo+ICsJCQkJCQkgIERSTV9NTV9DUkVBVEVfREVGQVVMVCk7Cj4g KwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7CgpJZiB0aGVyZSBpcyBhIGxpa2VseWhvb2QgZ2xv YmFsIGd0dCBjYW4gYmUgZnVsbCB3b3VsZCBpdCBiZSB3b3J0aCBpdCAKdHJ5aW5nIHRvIGV2aWN0 IHNvbWV0aGluZyBiZWZvcmUgYXR0ZW1wdGluZyBoaWJlcm5hdGlvbj8KCkFsc28gbGVha3MgZmls ZS4KCj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IG9iai0+YmFzZS5zaXplIC8gUEFHRV9TSVpFOyBp KyspIHsKPiArCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiArCQl2b2lkICpfX2lvbWVtIHNyYzsKPiAr CQl2b2lkICpkc3Q7Cj4gKwo+ICsJCXdtYigpOwoKV2hhdCBpcyB0aGlzIG9uZSBmb3I/IElmIGl0 IGlzIGZvciB0aGUgbWVtY3B5X2Zyb21pbyB3b3VsZCBpdCBiZSBtb3JlIApvYnZpb3VzIHRvIHB1 dCBpdCBhZnRlciB0aGF0IGNhbGw/Cgo+ICsJCWk5MTUtPmd0dC5iYXNlLmluc2VydF9wYWdlKCZp OTE1LT5ndHQuYmFzZSwKPiArCQkJCQkgICBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9hZGRyZXNz KG9iaiwgaSksCj4gKwkJCQkJICAgbm9kZS5zdGFydCwKPiArCQkJCQkgICBJOTE1X0NBQ0hFX05P TkUsCj4gKwkJCQkJICAgMCk7Cj4gKwkJd21iKCk7Cj4gKwo+ICsJCXBhZ2UgPSBzaG1lbV9yZWFk X21hcHBpbmdfcGFnZShtYXBwaW5nLCBpKTsKPiArCQlpZiAoSVNfRVJSKHBhZ2UpKSB7Cj4gKwkJ CXJldCA9IFBUUl9FUlIocGFnZSk7Cj4gKwkJCWdvdG8gZXJyX25vZGU7Cj4gKwkJfQo+ICsKPiAr CQlzcmMgPSBpb19tYXBwaW5nX21hcF9hdG9taWNfd2MoaTkxNS0+Z3R0Lm1hcHBhYmxlLCBub2Rl LnN0YXJ0ICsgUEFHRV9TSVpFICogaSk7Cj4gKwkJZHN0ID0ga21hcF9hdG9taWMocGFnZSk7Cj4g KwkJbWVtY3B5X2Zyb21pbyhkc3QsIHNyYywgUEFHRV9TSVpFKTsKPiArCQlrdW5tYXBfYXRvbWlj KGRzdCk7Cj4gKwkJaW9fbWFwcGluZ191bm1hcF9hdG9taWMoc3JjKTsKPiArCj4gKwkJcGFnZV9j YWNoZV9yZWxlYXNlKHBhZ2UpOwoKSSBhc3N1bWUgc2htZW1fZmlsZV9zZXR1cCB0YWtlcyBvbmUg cmVmZXJlbmNlIHRvIGVhY2ggcGFnZSwgCnNobWVtX3JlYWRfbWFwcGluZ19wYWdlIGFub3RoZXIg YW5kIHRoZW4gaGVyZSB3ZSByZWxlYXNlIHRoYXQgZXh0cmEgb25lPyBPcj8KCj4gKwl9Cj4gKwo+ ICsJd21iKCk7Cj4gKwlpOTE1LT5ndHQuYmFzZS5jbGVhcl9yYW5nZSgmaTkxNS0+Z3R0LmJhc2Us Cj4gKwkJCQkgICBub2RlLnN0YXJ0LCBub2RlLnNpemUsCj4gKwkJCQkgICB0cnVlKTsKPiArCWRy bV9tbV9yZW1vdmVfbm9kZSgmbm9kZSk7CgpNYXliZSBtb3ZlIHRoZSB3aG9sZSBjb3B5IGNvbnRl bnQgbG9vcCBpbnRvIGEgaGVscGVyIGZvciByZWFkYWJpbGl0eT8KCj4gKwo+ICtzd2FwX3BhZ2Vz Ogo+ICsJc3RvbGVuX3BhZ2VzID0gb2JqLT5wYWdlczsKPiArCW9iai0+cGFnZXMgPSBOVUxMOwo+ ICsKPiArCW9iai0+YmFzZS5maWxwID0gZmlsZTsKPiArCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMg PSBJOTE1X0dFTV9ET01BSU5fQ1BVOwo+ICsJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVf R0VNX0RPTUFJTl9DUFU7Cj4gKwo+ICsJLyogUmVjcmVhdGUgYW55IHBpbm5lZCBiaW5kaW5nIHdp dGggcG9pbnRlcnMgdG8gdGhlIG5ldyBzdG9yYWdlICovCj4gKwlpZiAoIWxpc3RfZW1wdHkoJm9i ai0+dm1hX2xpc3QpKSB7Cj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQo b2JqKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCW9iai0+cGFnZXMgPSBzdG9sZW5fcGFnZXM7Cj4g KwkJCWdvdG8gZXJyX2ZpbGU7Cj4gKwkJfQo+ICsKPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rf c2V0X3RvX2d0dF9kb21haW4ob2JqLCB0cnVlKTsKPiArCQlpZiAocmV0KSB7Cj4gKwkJCWk5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0KG9iaik7Cj4gKwkJCW9iai0+cGFnZXMgPSBzdG9sZW5f cGFnZXM7Cj4gKwkJCWdvdG8gZXJyX2ZpbGU7Cj4gKwkJfQo+ICsKPiArCQlvYmotPmdldF9wYWdl LnNnID0gb2JqLT5wYWdlcy0+c2dsOwo+ICsJCW9iai0+Z2V0X3BhZ2UubGFzdCA9IDA7Cj4gKwo+ ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspIHsK PiArCQkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4gKwkJCQljb250 aW51ZTsKPiArCj4gKwkJCVdBUk5fT04oaTkxNV92bWFfYmluZCh2bWEsCj4gKwkJCQkJICAgICAg b2JqLT5jYWNoZV9sZXZlbCwKPiArCQkJCQkgICAgICBQSU5fVVBEQVRFKSk7Cj4gKwkJfQo+ICsJ fSBlbHNlCj4gKwkJbGlzdF9kZWwoJm9iai0+Z2xvYmFsX2xpc3QpOwoKSG0sIGNhbiBpdCBiZSBi b3VuZCBpZiB0aGVyZSB3ZXJlIG5vIFZNQXM/Cgo+ICsKPiArCS8qIGRyb3AgdGhlIHN0b2xlbiBw aW4gYW5kIGJhY2tpbmcgKi8KPiArCXNobWVtZnNfcGFnZXMgPSBvYmotPnBhZ2VzOwo+ICsJb2Jq LT5wYWdlcyA9IHN0b2xlbl9wYWdlczsKPiArCj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFn ZXMob2JqKTsKPiArCW9iai0+b3BzLT5wdXRfcGFnZXMob2JqKTsKPiArCWlmIChvYmotPm9wcy0+ cmVsZWFzZSkKPiArCQlvYmotPm9wcy0+cmVsZWFzZShvYmopOwo+ICsKPiArCW9iai0+b3BzID0g Jmk5MTVfZ2VtX29iamVjdF9vcHM7Cj4gKwlvYmotPnBhZ2VzID0gc2htZW1mc19wYWdlczsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9ub2RlOgo+ICsJd21iKCk7Cj4gKwlpOTE1LT5ndHQu YmFzZS5jbGVhcl9yYW5nZSgmaTkxNS0+Z3R0LmJhc2UsCj4gKwkJCQkgICBub2RlLnN0YXJ0LCBu b2RlLnNpemUsCj4gKwkJCQkgICB0cnVlKTsKPiArCWRybV9tbV9yZW1vdmVfbm9kZSgmbm9kZSk7 Cj4gK2Vycl9maWxlOgo+ICsJZnB1dChmaWxlKTsKPiArCW9iai0+YmFzZS5maWxwID0gTlVMTDsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK2ludAo+ICtpOTE1X2dlbV9mcmVlemUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJLyogQ2FsbGVkIGJlZm9yZSBpOTE1X2dlbV9zdXNw ZW5kKCkgd2hlbiBoaWJlcm5hdGluZyAqLwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAq dG1wOwo+ICsJc3RydWN0IGxpc3RfaGVhZCAqcGhhc2VbXSA9IHsKPiArCQkmaTkxNS0+bW0udW5i b3VuZF9saXN0LCAmaTkxNS0+bW0uYm91bmRfbGlzdCwgTlVMTAo+ICsJfSwgKipwOwo+ICsJaW50 IHJldDsKPiArCj4gKwlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwo+ ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsJLyogQWNyb3NzIGhpYmVybmF0aW9uLCB0 aGUgc3RvbGVuIGFyZWEgaXMgbm90IHByZXNlcnZlZC4KPiArCSAqIEFueXRoaW5nIGluc2lkZSBz dG9sZW4gbXVzdCBjb3BpZWQgYmFjayB0byBub3JtYWwKPiArCSAqIG1lbW9yeSBpZiB3ZSB3aXNo IHRvIHByZXNlcnZlIGl0Lgo+ICsJICovCj4gKwlmb3IgKHAgPSBwaGFzZTsgKnA7IHArKykgewo+ ICsJCXN0cnVjdCBsaXN0X2hlYWQgbWlncmF0ZTsKPiArCQlpbnQgcmV0Owo+ICsKPiArCQlJTklU X0xJU1RfSEVBRCgmbWlncmF0ZSk7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwg dG1wLCAqcCwgZ2xvYmFsX2xpc3QpIHsKPiArCQkJaWYgKG9iai0+c3RvbGVuID09IE5VTEwpCj4g KwkJCQljb250aW51ZTsKPiArCj4gKwkJCWlmIChvYmotPmludGVybmFsX3ZvbGF0aWxlKQo+ICsJ CQkJY29udGludWU7Cj4gKwo+ICsJCQkvKiBJbiB0aGUgZ2VuZXJhbCBjYXNlLCB0aGlzIG9iamVj dCBtYXkgb25seSBiZSBhbGl2ZQo+ICsJCQkgKiBkdWUgdG8gYW4gYWN0aXZlIHJlZmVyZW5jZSwg YW5kIHRoYXQgbWF5IGRpc2FwcGVhcgo+ICsJCQkgKiB3aGVuIHdlIHVuYmluZCBhbnkgb2YgdGhl IG9iamVjdHMgKGFuZCBzbyB3YWl0IHVwb24KPiArCQkJICogdGhlIEdQVSBhbmQgcmV0aXJlIHJl cXVlc3RzKS4gVG8gcHJldmVudCBvbmUgb2YgdGhlCj4gKwkJCSAqIG9iamVjdHMgZnJvbSBkaXNh cHBlYXJpbmcgYmVuZWF0aCB1cywgd2UgbmVlZCB0bwo+ICsJCQkgKiB0YWtlIGEgcmVmZXJlbmNl IHRvIGVhY2ggYXMgd2UgYnVpbGQgdGhlIG1pZ3JhdGlvbgo+ICsJCQkgKiBsaXN0Lgo+ICsJCQkg Kgo+ICsJCQkgKiBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHN0cmF0ZWd5IHJlcXVpcmVkIHdoaWxz dAo+ICsJCQkgKiBzaHJpbmtpbmcgb3IgZXZpY3Rpbmcgb2JqZWN0cyAoZm9yIHRoZSBzYW1lIHJl YXNvbikuCj4gKwkJCSAqLwo+ICsJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9iai0+YmFz ZSk7Cj4gKwkJCWxpc3RfbW92ZSgmb2JqLT5nbG9iYWxfbGlzdCwgJm1pZ3JhdGUpOwo+ICsJCX0K PiArCj4gKwkJcmV0ID0gMDsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2JqLCB0bXAs ICZtaWdyYXRlLCBnbG9iYWxfbGlzdCkgewo+ICsJCQlpZiAocmV0ID09IDApCj4gKwkJCQlyZXQg PSBpOTE1X2dlbV9vYmplY3RfbWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcyhvYmopOwo+ICsJCQlk cm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiArCQl9Cj4gKwkJbGlzdF9z cGxpY2UoJm1pZ3JhdGUsICpwKTsKCkhtbW0gYXJlIHRoaXMgc29tZSBjbGV2ZXIgZ2FtZXMgd2l0 aCBvYmotPmdsb2JhbF9saXN0ID8KCj4gKwkJaWYgKHJldCkKPiArCQkJYnJlYWs7Cj4gKwl9Cj4g Kwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlyZXR1cm4gcmV0Owo+ ICt9Cj4gKwo+ICAgaW50Cj4gICBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGYyODFl MGIuLjA4MDM5MjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAg LTI1NDksNiArMjU0OSw5IEBAIGludGVsX2FsbG9jX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICAgCWlmIChJU19FUlIob2JqKSkKPiAgIAkJcmV0dXJuIGZhbHNl Owo+Cj4gKwkvKiBOb3QgdG8gYmUgcHJlc2VydmVkIGFjcm9zcyBoaWJlcm5hdGlvbiAqLwo+ICsJ b2JqLT5pbnRlcm5hbF92b2xhdGlsZSA9IHRydWU7Cj4gKwo+ICAgCW9iai0+dGlsaW5nX21vZGUg PSBwbGFuZV9jb25maWctPnRpbGluZzsKPiAgIAlpZiAob2JqLT50aWxpbmdfbW9kZSA9PSBJOTE1 X1RJTElOR19YKQo+ICAgCQlvYmotPnN0cmlkZSA9IGZiLT5waXRjaGVzWzBdOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZmJkZXYuYwo+IGluZGV4IGY0MzY4MWUuLjFkODkyNTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiBAQCAtMTU0LDYgKzE1NCwxMiBAQCBzdGF0aWMgaW50 IGludGVsZmJfYWxsb2Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiAgIAkJZ290byBv dXQ7Cj4gICAJfQo+Cj4gKwkvKiBEaXNjYXJkIHRoZSBjb250ZW50cyBvZiB0aGUgQklPUyBmYiBh Y3Jvc3MgaGliZXJuYXRpb24uCj4gKwkgKiBXZSByZWFsbHkgd2FudCB0byBjb21wbGV0ZWx5IHRo cm93YXdheSB0aGUgZWFybGllciBmYmRldgo+ICsJICogYW5kIHJlY29uZmlndXJlIGl0IGFueXdh eS4KPiArCSAqLwo+ICsJb2JqLT5pbnRlcm5hbF92b2xhdGlsZSA9IHRydWU7Cj4gKwo+ICAgCWZi ID0gX19pbnRlbF9mcmFtZWJ1ZmZlcl9jcmVhdGUoZGV2LCAmbW9kZV9jbWQsIG9iaik7Cj4gICAJ aWYgKElTX0VSUihmYikpIHsKPiAgIAkJcmV0ID0gUFRSX0VSUihmYik7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gaW5kZXggMDNhZDI3Ni4uNmRkYzIwYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+IEBAIC01MTgxLDYgKzUxODEsOCBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3Nl dHVwX3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlJOTE1X1dSSVRFKFZMVl9QQ0JS LCBwY3R4X3BhZGRyKTsKPgo+ICAgb3V0Ogo+ICsJLyogVGhlIHBvd2VyIGNvbnRleHQgbmVlZCBu b3QgYmUgcHJlc2VydmVkIGFjcm9zcyBoaWJlcm5hdGlvbiAqLwo+ICsJcGN0eC0+aW50ZXJuYWxf dm9sYXRpbGUgPSB0cnVlOwo+ICAgCURSTV9ERUJVR19EUklWRVIoIlBDQlI6IDB4JTA4eFxuIiwg STkxNV9SRUFEKFZMVl9QQ0JSKSk7Cj4gICAJZGV2X3ByaXYtPnZsdl9wY3R4ID0gcGN0eDsKPiAg IH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggNWVhYmFm Ni4uMzcwZDk2YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBAQCAtMjA5MCw2ICsyMDkwLDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfYWxsb2NfcmluZ2J1ZmZl cl9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAlpZiAoSVNfRVJSKG9iaikpCj4gICAJ CXJldHVybiBQVFJfRVJSKG9iaik7Cj4KPiArCS8qIFJpbmdidWZmZXIgb2JqZWN0cyBhcmUgYnkg ZGVmaW5pdGlvbiB2b2xhdGlsZSAtIG9ubHkgdGhlIGNvbW1hbmRzCj4gKwkgKiBiZXR3ZWVuIEhF QUQgYW5kIFRBSUwgbmVlZCB0byBiZSBwcmVzZXJ2ZWQgYW5kIHdoaWxzdCB0aGVyZSBhcmUKPiAr CSAqIGFueSBjb21tYW5kcyB0aGVyZSwgdGhlIHJpbmdidWZmZXIgaXMgcGlubmVkIGJ5IGFjdGl2 aXR5Lgo+ICsJICovCj4gKwlvYmotPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsKPiArCgpXaGF0 IGRvZXMgdGhpcyBtZWFuPyBJdCBnZXRzIGNvcnJlY3RseSByZS1pbml0aWFsaXplZCBieSBleGlz dGluZyBjb2RlIApvbiByZXN1bWU/IERvbid0IHNlZSBhbnl0aGlnbiBzcGVjaWZpYyBhYm91dCBI RUFEIGFuZCBUQUlMIGluIHRoaXMgcGF0Y2guCgo+ICAgCS8qIG1hcmsgcmluZyBidWZmZXJzIGFz IHJlYWQtb25seSBmcm9tIEdQVSBzaWRlIGJ5IGRlZmF1bHQgKi8KPiAgIAlvYmotPmd0X3JvID0g MTsKPgo+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==