From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ankitprasad Sharma Subject: Re: [PATCH 6/6] drm/i915: Migrate stolen objects before hibernation Date: Thu, 10 Dec 2015 18:47:02 +0530 Message-ID: <1449753422.12247.119.camel@ankitprasad-desktop> References: <1449665182-10054-1-git-send-email-ankitprasad.r.sharma@intel.com> <1449665182-10054-7-git-send-email-ankitprasad.r.sharma@intel.com> <566863FF.4020804@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id C17466E1B5 for ; Thu, 10 Dec 2015 05:36:09 -0800 (PST) In-Reply-To: <566863FF.4020804@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , Chris Wilson Cc: intel-gfx@lists.freedesktop.org, akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE1LTEyLTA5IGF0IDE3OjI1ICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToK PiBIaSwKPiAKPiBPbiAwOS8xMi8xNSAxMjo0NiwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwu Y29tIHdyb3RlOgo+ID4gRnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gPgo+ID4gVmlsbGUgcmVtaW5kZWQgdXMgdGhhdCBzdG9sZW4gbWVtb3J5IGlzIG5vdCBw cmVzZXJ2ZWQgYWNyb3NzCj4gPiBoaWJlcm5hdGlvbiwgYW5kIGEgcmVzdWx0IG9mIHRoaXMgd2Fz IHRoYXQgY29udGV4dCBvYmplY3RzIG5vdyBiZWluZwo+ID4gYWxsb2NhdGVkIGZyb20gc3RvbGVu IHdlcmUgYmVpbmcgY29ycnVwdGVkIG9uIFM0IGFuZCBwcm9tcHRseSBoYW5naW5nCj4gPiB0aGUg R1BVIG9uIHJlc3VtZS4KPiA+Cj4gPiBXZSB3YW50IHRvIHV0aWxpc2Ugc3RvbGVuIGZvciBhcyBt dWNoIGFzIHBvc3NpYmxlIChub3RoaW5nIGVsc2Ugd2lsbCB1c2UKPiA+IHRoYXQgd2FzdGVkIG1l bW9yeSBvdGhlcndpc2UpLCBzbyB3ZSBuZWVkIGEgc3RyYXRlZ3kgZm9yIGhhbmRsaW5nCj4gPiBn ZW5lcmFsIG9iamVjdHMgYWxsb2NhdGVkIGZyb20gc3RvbGVuIGFuZCBoaWJlcm5hdGlvbi4gQSBz aW1wbGUgc29sdXRpb24KPiA+IGlzIHRvIGRvIGEgQ1BVIGNvcHkgdGhyb3VnaCB0aGUgR1RUIG9m IHRoZSBzdG9sZW4gb2JqZWN0IGludG8gYSBmcmVzaAo+ID4gc2htZW1mcyBiYWNraW5nIHN0b3Jl IGFuZCB0aGVuY2Vmb3J0aCB0cmVhdCBpdCBhcyBhIG5vcm1hbCBvYmplY3RzLiBUaGlzCj4gPiBj YW4gYmUgcmVmaW5lZCBpbiBmdXR1cmUgdG8gZWl0aGVyIHVzZSBhIEdQVSBjb3B5IHRvIGF2b2lk IHRoZSBzbG93Cj4gPiB1bmNhY2hlZCByZWFkcyAodGhvdWdoIGl0J3MgaGliZXJuYXRpb24hKSBh bmQgcmVjcmVhdGUgc3RvbGVuIG9iamVjdHMKPiA+IHVwb24gcmVzdW1lL2ZpcnN0LXVzZS4gRm9y IG5vdywgYSBzaW1wbGUgYXBwcm9hY2ggc2hvdWxkIHN1ZmZpY2UgZm9yCj4gPiB0ZXN0aW5nIHRo ZSBvYmplY3QgbWlncmF0aW9uLgo+ID4KPiA+IHYyOgo+ID4gU3dhcCBQVEUgZm9yIHBpbm5lZCBi aW5kaW5ncyBvdmVyIHRvIHRoZSBzaG1lbWZzLiBUaGlzIGFkZHMgYQo+ID4gY29tcGxpY2F0ZWQg ZGFuY2UsIGJ1dCBpcyByZXF1aXJlZCBhcyBtYW55IHN0b2xlbiBvYmplY3RzIGFyZSBsaWtlbHkg dG8KPiA+IGJlIHBpbm5lZCBmb3IgdXNlIGJ5IHRoZSBoYXJkd2FyZS4gU3dhcHBpbmcgdGhlIFBU RXMgc2hvdWxkIG5vdCByZXN1bHQKPiA+IGluIGV4dGVybmFsbHkgdmlzaWJsZSBiZWhhdmlvdXIs IGFzIGVhY2ggUFRFIHVwZGF0ZSBzaG91bGQgYmUgYXRvbWljIGFuZAo+ID4gdGhlIHR3byBwYWdl cyBpZGVudGljYWwuIChkYW52ZXQpCj4gPgo+ID4gc2FmZS1ieS1kZWZhdWx0LCBvciB0aGUgcHJp bmNpcGxlIG9mIGxlYXN0IHN1cnByaXNlLiBXZSBuZWVkIGEgbmV3IGZsYWcKPiA+IHRvIG1hcmsg b2JqZWN0cyB0aGF0IHdlIGNhbiB3aWxmdWxseSBkaXNjYXJkIGFuZCByZWNyZWF0ZSBhY3Jvc3MK PiA+IGhpYmVybmF0aW9uLiAoZGFudmV0KQo+ID4KPiA+IEp1c3QgdXNlIHRoZSBnbG9iYWxfbGlz dCByYXRoZXIgdGhhbiBpbnZlbnQgYSBuZXcgc3RvbGVuX2xpc3QuIFRoaXMgaXMKPiA+IHRoZSBz bG93cGF0aCBoaWJlcm5hdGUgYW5kIHNvIGFkZGluZyBhIG5ldyBsaXN0IGFuZCB0aGUgYXNzb2Np YXRlZAo+ID4gY29tcGxleGl0eSBpc24ndCB3b3J0aCBpdC4KPiA+Cj4gPiB2MzogUmViYXNlZCBv biBkcm0taW50ZWwtbmlnaHRseSAoQW5raXQpCj4gPgo+ID4gdjQ6IFVzZSBpbnNlcnRfcGFnZSB0 byBtYXAgc3RvbGVuIG1lbW9yeSBiYWNrZWQgcGFnZXMgZm9yIG1pZ3JhdGlvbiB0bwo+ID4gc2ht ZW0gKENocmlzKQo+ID4KPiA+IHY1OiBBY3F1aXJlIG11dGV4IGxvY2sgd2hpbGUgY29weWluZyBz dG9sZW4gYnVmZmVyIG9iamVjdHMgdG8gc2htZW0gKENocmlzKQo+ID4KPiA+IFNpZ25lZC1vZmYt Ynk6IENocmlzIFdpbHNvbiA8Y2hyaXMgYXQgY2hyaXMtd2lsc29uLmNvLnVrPgo+ID4gU2lnbmVk LW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5j b20+Cj4gPiAtLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAg IHwgIDE3ICsrLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg fCAgIDcgKwo+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAy MzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgICAzICsKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZmJkZXYuYyAgICAgIHwgICA2ICsKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAgICAgICAgIHwgICAyICsKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jIHwgICA2ICsKPiA+ICAgNyBmaWxlcyBjaGFuZ2VkLCAyNjEgaW5zZXJ0 aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g PiBpbmRleCA5ZjU1MjA5Li4yYmI5ZTllIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+ID4gQEAgLTEwMzYsNiArMTAzNiwyMSBAQCBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVuZChz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiAgIAlyZXR1cm4gaTkxNV9kcm1fc3VzcGVuZChkcm1fZGV2 KTsKPiA+ICAgfQo+ID4KPiA+ICtzdGF0aWMgaW50IGk5MTVfcG1fZnJlZXplKHN0cnVjdCBkZXZp Y2UgKmRldikKPiA+ICt7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCXJldCA9IGk5MTVfZ2Vt X2ZyZWV6ZShwY2lfZ2V0X2RydmRhdGEodG9fcGNpX2RldihkZXYpKSk7Cj4gPiArCWlmIChyZXQp Cj4gPiArCQlyZXR1cm4gcmV0Owo+IAo+IENhbiB3ZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIFMzIGFu ZCBTNCBpZiB0aGUgc3RvbGVuIGNvcnJ1cHRpb24gb25seSAKPiBoYXBwZW5zIGluIFM0PyBOb3Qg dG8gc3BlbmQgYWxsIHRoZSBleHRyYSBlZmZvcnQgZm9yIG5vdGhpbmcgaW4gUzM/IE9yIAo+IG1h eWJlIHRoaXMgaXMgbm90IGV2ZW4gY2FsbGVkIGZvciBTMz8KRm9yIFMzLCBpOTE1X3BtX3N1c3Bl bmQgd2lsbCBiZSBjYWxsZWQuIAppOTE1X3BtX2ZyZWV6ZSB3aWxsIGJlIGNhbGxlZCBpbiB0aGUg aGliZXJuYXRpb24gKHdoaWNoIGNvcnJlc3BvbmRzIHRvClM0PykKCj4gCj4gPiArCj4gPiArCXJl dCA9IGk5MTVfcG1fc3VzcGVuZChkZXYpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIHJl dDsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgaW50IGk5 MTVfcG1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ICAgewo+ID4gICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBkZXZfdG9faTkxNShkZXYpLT5kZXY7Cj4gPiBAQCAt MTcwMCw3ICsxNzE1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGk5MTVfcG1f b3BzID0gewo+ID4gICAJICogQHJlc3RvcmUsIEByZXN0b3JlX2Vhcmx5IDogY2FsbGVkIGFmdGVy IHJlYm9vdGluZyBhbmQgcmVzdG9yaW5nIHRoZQo+ID4gICAJICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgaGliZXJuYXRpb24gaW1hZ2UgW1BNU0dfUkVTVE9SRV0KPiA+ICAgCSAqLwo+ID4g LQkuZnJlZXplID0gaTkxNV9wbV9zdXNwZW5kLAo+ID4gKwkuZnJlZXplID0gaTkxNV9wbV9mcmVl emUsCj4gPiAgIAkuZnJlZXplX2xhdGUgPSBpOTE1X3BtX3N1c3BlbmRfbGF0ZSwKPiA+ICAgCS50 aGF3X2Vhcmx5ID0gaTkxNV9wbV9yZXN1bWVfZWFybHksCj4gPiAgIAkudGhhdyA9IGk5MTVfcG1f cmVzdW1lLAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiBpbmRleCBlMGIwOWIwLi4wZDE4 YjA3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gQEAgLTIwODAsNiArMjA4 MCwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gPiAgIAkgKiBBZHZpY2U6IGFy ZSB0aGUgYmFja2luZyBwYWdlcyBwdXJnZWFibGU/Cj4gPiAgIAkgKi8KPiA+ICAgCXVuc2lnbmVk IGludCBtYWR2OjI7Cj4gPiArCS8qKgo+ID4gKwkgKiBXaGVyZWFzIG1hZHYgaXMgZm9yIHVzZXJz cGFjZSwgdGhlcmUgYXJlIGNlcnRhaW4gc2l0dWF0aW9ucwo+ID4gKwkgKiB3aGVyZSB3ZSB3YW50 IEk5MTVfTUFEVl9ET05UTkVFRCBiZWhhdmlvdXIgb24gaW50ZXJuYWwgb2JqZWN0cwo+ID4gKwkg KiB3aXRob3V0IGNvbmZsYXRpbmcgdGhlIHVzZXJzcGFjZSBzZXR0aW5nLgo+ID4gKwkgKi8KPiA+ ICsJdW5zaWduZWQgaW50IGludGVybmFsX3ZvbGF0aWxlOjE7Cj4gPgo+ID4gICAJLyoqCj4gPiAg IAkgKiBDdXJyZW50IHRpbGluZyBtb2RlIGZvciB0aGUgb2JqZWN0Lgo+ID4gQEAgLTMwMDYsNiAr MzAxMiw3IEBAIGludCBpOTE1X2dlbV9sM19yZW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgaW50IHNsaWNlKTsKPiA+ICAgdm9pZCBpOTE1X2dlbV9pbml0X3N3aXp6bGluZyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ICAgdm9pZCBpOTE1X2dlbV9jbGVhbnVwX3Jpbmdi dWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiAgIGludCBfX211c3RfY2hlY2sgaTkx NV9ncHVfaWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ICtpbnQgX19tdXN0X2NoZWNr IGk5MTVfZ2VtX2ZyZWV6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+ICAgaW50IF9fbXVz dF9jaGVjayBpOTE1X2dlbV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gICB2 b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK PiA+ICAgCQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaiwKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+ID4gaW5kZXggNjhlZDY3YS4uMWYxMzRiMCAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+IEBAIC00NTExLDEyICs0NTExLDI3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdF9vcHMgaTkxNV9nZW1fb2JqZWN0X29wcyA9 IHsKPiA+ICAgCS5wdXRfcGFnZXMgPSBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzX2d0dCwKPiA+ ICAgfTsKPiA+Cj4gPiArc3RhdGljIHN0cnVjdCBhZGRyZXNzX3NwYWNlICoKPiA+ICtpOTE1X2dl bV9zZXRfaW5vZGVfZ2ZwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBmaWxlICpmaWxl KQo+ID4gK3sKPiA+ICsJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBmaWxlX2lub2Rl KGZpbGUpLT5pX21hcHBpbmc7Cj4gPiArCWdmcF90IG1hc2s7Cj4gPiArCj4gPiArCW1hc2sgPSBH RlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJMRTsKPiA+ICsJaWYgKElTX0NSRVNUTElORShk ZXYpIHx8IElTX0JST0FEV0FURVIoZGV2KSkgewo+ID4gKwkJLyogOTY1Z20gY2Fubm90IHJlbG9j YXRlIG9iamVjdHMgYWJvdmUgNEdpQi4gKi8KPiA+ICsJCW1hc2sgJj0gfl9fR0ZQX0hJR0hNRU07 Cj4gPiArCQltYXNrIHw9IF9fR0ZQX0RNQTMyOwo+ID4gKwl9Cj4gPiArCW1hcHBpbmdfc2V0X2dm cF9tYXNrKG1hcHBpbmcsIG1hc2spOwo+ID4gKwo+ID4gKwlyZXR1cm4gbWFwcGluZzsKPiA+ICt9 Cj4gPiArCj4gPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dlbV9hbGxvY19v YmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAgCQkJCQkJICBzaXplX3Qgc2l6ZSkK PiA+ICAgewo+ID4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiA+IC0Jc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7Cj4gPiAtCWdmcF90IG1hc2s7Cj4gPiAgIAlpbnQg cmV0Owo+ID4KPiA+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9hbGxvYyhkZXYpOwo+ID4gQEAg LTQ1MjksMTUgKzQ1NDQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1f YWxsb2Nfb2JqZWN0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgIAkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPiA+ICAgCX0KPiA+Cj4gPiAtCW1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9S RUNMQUlNQUJMRTsKPiA+IC0JaWYgKElTX0NSRVNUTElORShkZXYpIHx8IElTX0JST0FEV0FURVIo ZGV2KSkgewo+ID4gLQkJLyogOTY1Z20gY2Fubm90IHJlbG9jYXRlIG9iamVjdHMgYWJvdmUgNEdp Qi4gKi8KPiA+IC0JCW1hc2sgJj0gfl9fR0ZQX0hJR0hNRU07Cj4gPiAtCQltYXNrIHw9IF9fR0ZQ X0RNQTMyOwo+ID4gLQl9Cj4gPiAtCj4gPiAtCW1hcHBpbmcgPSBmaWxlX2lub2RlKG9iai0+YmFz ZS5maWxwKS0+aV9tYXBwaW5nOwo+ID4gLQltYXBwaW5nX3NldF9nZnBfbWFzayhtYXBwaW5nLCBt YXNrKTsKPiA+ICsJaTkxNV9nZW1fc2V0X2lub2RlX2dmcChkZXYsIG9iai0+YmFzZS5maWxwKTsK PiA+Cj4gPiAgIAlpOTE1X2dlbV9vYmplY3RfaW5pdChvYmosICZpOTE1X2dlbV9vYmplY3Rfb3Bz KTsKPiA+Cj4gPiBAQCAtNDcxNCw2ICs0NzIxLDIwOSBAQCBpOTE1X2dlbV9zdG9wX3JpbmdidWZm ZXJzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgIAkJZGV2X3ByaXYtPmd0LnN0b3Bfcmlu ZyhyaW5nKTsKPiA+ICAgfQo+ID4KPiA+ICtzdGF0aWMgaW50Cj4gPiAraTkxNV9nZW1fb2JqZWN0 X21pZ3JhdGVfc3RvbGVuX3RvX3NobWVtZnMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aikKPiA+ICt7Cj4gCj4gU29tZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uIHdvdWxk IGJlIGdvb2QuClllcywgd2lsbCBkbyBpdC4KPiAKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaTkxNV92bWEg KnZtYSwgKnZuOwo+ID4gKwlzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKPiA+ICsJc3RydWN0IGZp bGUgKmZpbGU7Cj4gPiArCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOwo+ID4gKwlzdHJ1 Y3Qgc2dfdGFibGUgKnN0b2xlbl9wYWdlcywgKnNobWVtZnNfcGFnZXM7Cj4gPiArCWludCByZXQs IGk7Cj4gPiArCj4gPiArCWlmIChXQVJOX09OKGk5MTVfZ2VtX29iamVjdF9uZWVkc19iaXQxN19z d2l6emxlKG9iaikpKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gCj4gSSBhbSBubyBleHBlcnQg aW4gaGliZXJuYXRpb24gb3Igc3dpenpsaW5nIGJ1dCB0aGlzIGxvb2tzIHJlYWxseSBiYWQgdG8g bWUuCj4gCj4gSXQgaXMgYm90aCBwbGF0Zm9ybSBhbmQgdXNlciBjb250cm9sbGVkIGFuZCBpdCB3 aWxsIGNhdXNlIGhpYmVybmF0aW9uIHRvIAo+IGZhaWwgaW4gYSB2ZXJ5IG5vaXN5IHdheSwgY29y cmVjdD8KPiAKPiBBdCBsZWFzdCBpdCBuZWVkcyB0byBiZSBXQVJOX09OX09OQ0UsIGJ1dCBpZiBt eSB0aGlua2luZyBpcyBjb3JyZWN0IGl0IAo+IHNob3VsZCByZWFsbHkgYmUgdGhhdCBlaXRoZXI6 Cj4gCj4gYSkgaGliZXJuYXRpb24gaXMgcHJldmVudGVkIGluIGEgcXVpZXRlciB3YXkgKERSTV9F UlJPUiwgb25jZSkgCj4gYWx0b2dldGhlciB3aGVuIGRldl9wcml2LT5tbS5iaXRfNl9zd2l6emxl X3ggPT0gCj4gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTBfMTcsIG9yCj4gCj4gYikgc2V0X3RpbGlu ZyBmYWlscyBvbiB0aGUgc2FtZSBwbGF0Zm9ybXMgd2hpY2ggYWxzbyBzdXBwb3J0IGhpYmVybmF0 aW9uLgo+IApFaXRoZXIgd2UgY2FuIGRpc2FsbG93IHRoZSBzZXRfdGlsaW5nIGNhbGwgaWYgYm90 aCBzd2l6emxpbmcgYW5kCmhpYmVybmF0aW9uIGlzIGFsbG93ZWQgb24gdGhlIHBsYXRmb3JtIG9y IHdlIGNhbiBleGl0IHF1aWV0bHkuCkNocmlzIGNhbiBmdXJ0aGVyIHN1Z2dlc3Qgb24gdGhpcy4K PiBDb21tZW50cz8KPiAKPiA+ICsKPiA+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19n dHRfZG9tYWluKG9iaiwgZmFsc2UpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIHJldDsK PiA+ICsKPiA+ICsJZmlsZSA9IHNobWVtX2ZpbGVfc2V0dXAoImRybSBtbSBvYmplY3QiLCBvYmot PmJhc2Uuc2l6ZSwgVk1fTk9SRVNFUlZFKTsKPiA+ICsJaWYgKElTX0VSUihmaWxlKSkKPiA+ICsJ CXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ID4gKwltYXBwaW5nID0gaTkxNV9nZW1fc2V0X2lub2Rl X2dmcChvYmotPmJhc2UuZGV2LCBmaWxlKTsKPiA+ICsKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKHZtYSwgdm4sICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKPiA+ICsJCWlmIChpOTE1 X3ZtYV91bmJpbmQodm1hKSkKPiA+ICsJCQljb250aW51ZTsKPiA+ICsKPiA+ICsJaWYgKG9iai0+ bWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQgJiYgbGlzdF9lbXB0eSgmb2JqLT52bWFfbGlzdCkp IHsKPiA+ICsJCS8qIERpc2NhcmQgdGhlIHN0b2xlbiByZXNlcnZhdGlvbiwgYW5kIHJlcGxhY2Ug d2l0aAo+ID4gKwkJICogYW4gdW5wb3B1bGF0ZWQgc2htZW1mcyBvYmplY3QuCj4gPiArCQkgKi8K PiA+ICsJCW9iai0+bWFkdiA9IF9fSTkxNV9NQURWX1BVUkdFRDsKPiA+ICsJCWdvdG8gc3dhcF9w YWdlczsKPiA+ICsJfQo+IAo+IE1heWJlIHB1dCBhIGNvbW1lbnQgYmVmb3JlIHRoaXMgYmxvY2sg c2F5aW5nICJubyBuZWVkIHRvIGNvcHkgCj4gY29udGVudC9zb21ldGhpbmcgZm9yIG9iamVjdHMu Li4iLCBpZiBJIGdvdCBpdCByaWdodC4KPiAKPiA+ICsKPiA+ICsJLyogc3RvbGVuIG9iamVjdHMg YXJlIGFscmVhZHkgcGlubmVkIHRvIHByZXZlbnQgc2hyaW5rYWdlICovCj4gPiArCW1lbXNldCgm bm9kZSwgMCwgc2l6ZW9mKG5vZGUpKTsKPiA+ICsJcmV0ID0gZHJtX21tX2luc2VydF9ub2RlX2lu X3JhbmdlX2dlbmVyaWMoJmk5MTUtPmd0dC5iYXNlLm1tLAo+ID4gKwkJCQkJCSAgJm5vZGUsCj4g PiArCQkJCQkJICA0MDk2LCAwLCBJOTE1X0NBQ0hFX05PTkUsCj4gPiArCQkJCQkJICAwLCBpOTE1 LT5ndHQubWFwcGFibGVfZW5kLAo+ID4gKwkJCQkJCSAgRFJNX01NX1NFQVJDSF9ERUZBVUxULAo+ ID4gKwkJCQkJCSAgRFJNX01NX0NSRUFURV9ERUZBVUxUKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJ CXJldHVybiByZXQ7Cj4gCj4gSWYgdGhlcmUgaXMgYSBsaWtlbHlob29kIGdsb2JhbCBndHQgY2Fu IGJlIGZ1bGwgd291bGQgaXQgYmUgd29ydGggaXQgCj4gdHJ5aW5nIHRvIGV2aWN0IHNvbWV0aGlu ZyBiZWZvcmUgYXR0ZW1wdGluZyBoaWJlcm5hdGlvbj8KWWVzLCBidXQgaXQgaXMgdmVyeSB1bmxp a2VseSB0byBoYXBwZW4uCj4gCj4gQWxzbyBsZWFrcyBmaWxlLgpZZXMsIHdpbGwgZml4IHRoaXMu Cj4gCj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBvYmotPmJhc2Uuc2l6ZSAvIFBBR0VfU0la RTsgaSsrKSB7Cj4gPiArCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiA+ICsJCXZvaWQgKl9faW9tZW0g c3JjOwo+ID4gKwkJdm9pZCAqZHN0Owo+ID4gKwo+ID4gKwkJd21iKCk7Cj4gCj4gV2hhdCBpcyB0 aGlzIG9uZSBmb3I/IElmIGl0IGlzIGZvciB0aGUgbWVtY3B5X2Zyb21pbyB3b3VsZCBpdCBiZSBt b3JlIAo+IG9idmlvdXMgdG8gcHV0IGl0IGFmdGVyIHRoYXQgY2FsbD8KQXMgcmVwbGllZCBpbiBh IHNlcGFyYXRlIG1haWwsIHRoaXMgaXMgdG8gZW5zdXJlIGZvbGxvd2luZyBwcm9ncmFtIG9yZGVy CnN0cmljdGx5LCBtaW5pbWFsIHJlb3JkZXJpbmcgZHVyaW5nIHRoaXMgbG9vcC4KPiAKPiA+ICsJ CWk5MTUtPmd0dC5iYXNlLmluc2VydF9wYWdlKCZpOTE1LT5ndHQuYmFzZSwKPiA+ICsJCQkJCSAg IGk5MTVfZ2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Mob2JqLCBpKSwKPiA+ICsJCQkJCSAgIG5v ZGUuc3RhcnQsCj4gPiArCQkJCQkgICBJOTE1X0NBQ0hFX05PTkUsCj4gPiArCQkJCQkgICAwKTsK PiA+ICsJCXdtYigpOwo+ID4gKwo+ID4gKwkJcGFnZSA9ICBzaG1lbV9yZWFkX21hcHBpbmdfcGFn ZShtYXBwaW5nLCBpKTsKPiA+ICsJCWlmIChJU19FUlIocGFnZSkpIHsKPiA+ICsJCQlyZXQgPSBQ VFJfRVJSKHBhZ2UpOwo+ID4gKwkJCWdvdG8gZXJyX25vZGU7Cj4gPiArCQl9Cj4gPiArCj4gPiAr CQlzcmMgPSBpb19tYXBwaW5nX21hcF9hdG9taWNfd2MoaTkxNS0+Z3R0Lm1hcHBhYmxlLCBub2Rl LnN0YXJ0ICsgUEFHRV9TSVpFICogaSk7Cj4gPiArCQlkc3QgPSBrbWFwX2F0b21pYyhwYWdlKTsK PiA+ICsJCW1lbWNweV9mcm9taW8oZHN0LCBzcmMsIFBBR0VfU0laRSk7Cj4gPiArCQlrdW5tYXBf YXRvbWljKGRzdCk7Cj4gPiArCQlpb19tYXBwaW5nX3VubWFwX2F0b21pYyhzcmMpOwo+ID4gKwo+ ID4gKwkJcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwo+IAo+IEkgYXNzdW1lIHNobWVtX2ZpbGVf c2V0dXAgdGFrZXMgb25lIHJlZmVyZW5jZSB0byBlYWNoIHBhZ2UsIAo+IHNobWVtX3JlYWRfbWFw cGluZ19wYWdlIGFub3RoZXIgYW5kIHRoZW4gaGVyZSB3ZSByZWxlYXNlIHRoYXQgZXh0cmEgb25l PyBPcj8KPiAKMS4gT25seSBmaWxlIGluc3RhbnRpYXRpb24gaGFwcGVucyBkdXJpbmcgc2htZW1f ZmlsZV9zZXR1cCwgbm8gcGFnZXMgYXJlCmFsbG9jYXRlZC4KMi4gc2htZW1fcmVhZF9tYXBwaW5n X3BhZ2UgZG9lcyB0aGUgYWxsb2NhdGlvbiBvZiBwYWdlcyBhbmQgcmV0dXJucyB3aXRoCmEgcmVm Y291bnQgb2YgMiAoMSBmb3Igc2htZW0taW50ZXJuYWwgcHVycG9zZSBhbmQgYW5vdGhlciBmb3Ig dGhlCmRyaXZlci9jYWxsZXIpCjMuIHBhZ2VfY2FjaGVfcmVsZWFzZSByZWxlYXNlcyB0aGUgcmVm Y291bnQgZnJvbSB0aGUgZHJpdmVyIHNpZGUgYXMgd2UKZG9uJ3QgbmVjZXNzYXJpbHkgd2FudCB0 aGUgbmV3IHBhZ2UgdG8gYmUgcGlubmVkIGluIFJBTSwgb25jZSBjb3B5IGlzCmRvbmUuCjQuIExh dGVyIG9uLCBpZiB3ZSBuZWVkIHRvIHBpbiB0aGUgb2JqZWN0LCBnZXRfcGFnZXNfZ3R0IGFnYWlu IGluY3JlYXNlcwp0aGUgcmVmY291bnQgdG8gMi4gCj4gPiArCX0KPiA+ICsKPiA+ICsJd21iKCk7 Cj4gPiArCWk5MTUtPmd0dC5iYXNlLmNsZWFyX3JhbmdlKCZpOTE1LT5ndHQuYmFzZSwKPiA+ICsJ CQkJICAgbm9kZS5zdGFydCwgbm9kZS5zaXplLAo+ID4gKwkJCQkgICB0cnVlKTsKPiA+ICsJZHJt X21tX3JlbW92ZV9ub2RlKCZub2RlKTsKPiAKPiBNYXliZSBtb3ZlIHRoZSB3aG9sZSBjb3B5IGNv bnRlbnQgbG9vcCBpbnRvIGEgaGVscGVyIGZvciByZWFkYWJpbGl0eT8KVGhpcyBjYW4gYmUgZG9u ZS4KPiAKPiA+ICsKPiA+ICtzd2FwX3BhZ2VzOgo+ID4gKwlzdG9sZW5fcGFnZXMgPSBvYmotPnBh Z2VzOwo+ID4gKwlvYmotPnBhZ2VzID0gTlVMTDsKPiA+ICsKPiA+ICsJb2JqLT5iYXNlLmZpbHAg PSBmaWxlOwo+ID4gKwlvYmotPmJhc2UucmVhZF9kb21haW5zID0gSTkxNV9HRU1fRE9NQUlOX0NQ VTsKPiA+ICsJb2JqLT5iYXNlLndyaXRlX2RvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9DUFU7Cj4g PiArCj4gPiArCS8qIFJlY3JlYXRlIGFueSBwaW5uZWQgYmluZGluZyB3aXRoIHBvaW50ZXJzIHRv IHRoZSBuZXcgc3RvcmFnZSAqLwo+ID4gKwlpZiAoIWxpc3RfZW1wdHkoJm9iai0+dm1hX2xpc3Qp KSB7Cj4gPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzX2d0dChvYmopOwo+ID4g KwkJaWYgKHJldCkgewo+ID4gKwkJCW9iai0+cGFnZXMgPSBzdG9sZW5fcGFnZXM7Cj4gPiArCQkJ Z290byBlcnJfZmlsZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCXJldCA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIHRydWUpOwo+ID4gKwkJaWYgKHJldCkgewo+ID4gKwkJ CWk5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXNfZ3R0KG9iaik7Cj4gPiArCQkJb2JqLT5wYWdlcyA9 IHN0b2xlbl9wYWdlczsKPiA+ICsJCQlnb3RvIGVycl9maWxlOwo+ID4gKwkJfQo+ID4gKwo+ID4g KwkJb2JqLT5nZXRfcGFnZS5zZyA9IG9iai0+cGFnZXMtPnNnbDsKPiA+ICsJCW9iai0+Z2V0X3Bh Z2UubGFzdCA9IDA7Cj4gPiArCj4gPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+ dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4gPiArCQkJaWYgKCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQo JnZtYS0+bm9kZSkpCj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJCVdBUk5fT04oaTkx NV92bWFfYmluZCh2bWEsCj4gPiArCQkJCQkgICAgICBvYmotPmNhY2hlX2xldmVsLAo+ID4gKwkJ CQkJICAgICAgUElOX1VQREFURSkpOwo+ID4gKwkJfQo+ID4gKwl9IGVsc2UKPiA+ICsJCWxpc3Rf ZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKPiAKPiBIbSwgY2FuIGl0IGJlIGJvdW5kIGlmIHRoZXJl IHdlcmUgbm8gVk1Bcz8KT2JqZWN0IHdpbGwgbm90IGJlIGJvdW5kIGFzIHRoZXJlIGFyZSBubyBW TUFzLCBidXQgJ29iai0+Z2xvYmFsX2xpc3QnCndpbGwgYmUgcGFydCBvZiB1bmJvdW5kIGxpc3Qg YW5kIHdlIG5lZWQgdG8gdW5saW5rIHRoYXQgZnJvbSB0aGUgdW5ib3VuZApsaXN0Lgo+IAo+ID4g Kwo+ID4gKwkvKiBkcm9wIHRoZSBzdG9sZW4gcGluIGFuZCBiYWNraW5nICovCj4gPiArCXNobWVt ZnNfcGFnZXMgPSBvYmotPnBhZ2VzOwo+ID4gKwlvYmotPnBhZ2VzID0gc3RvbGVuX3BhZ2VzOwo+ ID4gKwo+ID4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiA+ICsJb2JqLT5v cHMtPnB1dF9wYWdlcyhvYmopOwo+ID4gKwlpZiAob2JqLT5vcHMtPnJlbGVhc2UpCj4gPiArCQlv YmotPm9wcy0+cmVsZWFzZShvYmopOwo+ID4gKwo+ID4gKwlvYmotPm9wcyA9ICZpOTE1X2dlbV9v YmplY3Rfb3BzOwo+ID4gKwlvYmotPnBhZ2VzID0gc2htZW1mc19wYWdlczsKPiA+ICsKPiA+ICsJ cmV0dXJuIDA7Cj4gPiArCj4gPiArZXJyX25vZGU6Cj4gPiArCXdtYigpOwo+ID4gKwlpOTE1LT5n dHQuYmFzZS5jbGVhcl9yYW5nZSgmaTkxNS0+Z3R0LmJhc2UsCj4gPiArCQkJCSAgIG5vZGUuc3Rh cnQsIG5vZGUuc2l6ZSwKPiA+ICsJCQkJICAgdHJ1ZSk7Cj4gPiArCWRybV9tbV9yZW1vdmVfbm9k ZSgmbm9kZSk7Cj4gPiArZXJyX2ZpbGU6Cj4gPiArCWZwdXQoZmlsZSk7Cj4gPiArCW9iai0+YmFz ZS5maWxwID0gTlVMTDsKPiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiAraW50Cj4g PiAraTkxNV9nZW1fZnJlZXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiArewo+ID4gKwkv KiBDYWxsZWQgYmVmb3JlIGk5MTVfZ2VtX3N1c3BlbmQoKSB3aGVuIGhpYmVybmF0aW5nICovCj4g PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwo+ID4gKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCAqdG1wOwo+ID4gKwlzdHJ1Y3QgbGlzdF9o ZWFkICpwaGFzZVtdID0gewo+ID4gKwkJJmk5MTUtPm1tLnVuYm91bmRfbGlzdCwgJmk5MTUtPm1t LmJvdW5kX2xpc3QsIE5VTEwKPiA+ICsJfSwgKipwOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4g KwlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwo+ID4gKwlpZiAocmV0 KQo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICsJLyogQWNyb3NzIGhpYmVybmF0aW9uLCB0aGUgc3Rv bGVuIGFyZWEgaXMgbm90IHByZXNlcnZlZC4KPiA+ICsJICogQW55dGhpbmcgaW5zaWRlIHN0b2xl biBtdXN0IGNvcGllZCBiYWNrIHRvIG5vcm1hbAo+ID4gKwkgKiBtZW1vcnkgaWYgd2Ugd2lzaCB0 byBwcmVzZXJ2ZSBpdC4KPiA+ICsJICovCj4gPiArCWZvciAocCA9IHBoYXNlOyAqcDsgcCsrKSB7 Cj4gPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIG1pZ3JhdGU7Cj4gPiArCQlpbnQgcmV0Owo+ID4gKwo+ ID4gKwkJSU5JVF9MSVNUX0hFQUQoJm1pZ3JhdGUpOwo+ID4gKwkJbGlzdF9mb3JfZWFjaF9lbnRy eV9zYWZlKG9iaiwgdG1wLCAqcCwgZ2xvYmFsX2xpc3QpIHsKPiA+ICsJCQlpZiAob2JqLT5zdG9s ZW4gPT0gTlVMTCkKPiA+ICsJCQkJY29udGludWU7Cj4gPiArCj4gPiArCQkJaWYgKG9iai0+aW50 ZXJuYWxfdm9sYXRpbGUpCj4gPiArCQkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJCS8qIEluIHRo ZSBnZW5lcmFsIGNhc2UsIHRoaXMgb2JqZWN0IG1heSBvbmx5IGJlIGFsaXZlCj4gPiArCQkJICog ZHVlIHRvIGFuIGFjdGl2ZSByZWZlcmVuY2UsIGFuZCB0aGF0IG1heSBkaXNhcHBlYXIKPiA+ICsJ CQkgKiB3aGVuIHdlIHVuYmluZCBhbnkgb2YgdGhlIG9iamVjdHMgKGFuZCBzbyB3YWl0IHVwb24K PiA+ICsJCQkgKiB0aGUgR1BVIGFuZCByZXRpcmUgcmVxdWVzdHMpLiBUbyBwcmV2ZW50IG9uZSBv ZiB0aGUKPiA+ICsJCQkgKiBvYmplY3RzIGZyb20gZGlzYXBwZWFyaW5nIGJlbmVhdGggdXMsIHdl IG5lZWQgdG8KPiA+ICsJCQkgKiB0YWtlIGEgcmVmZXJlbmNlIHRvIGVhY2ggYXMgd2UgYnVpbGQg dGhlIG1pZ3JhdGlvbgo+ID4gKwkJCSAqIGxpc3QuCj4gPiArCQkJICoKPiA+ICsJCQkgKiBUaGlz IGlzIHNpbWlsYXIgdG8gdGhlIHN0cmF0ZWd5IHJlcXVpcmVkIHdoaWxzdAo+ID4gKwkJCSAqIHNo cmlua2luZyBvciBldmljdGluZyBvYmplY3RzIChmb3IgdGhlIHNhbWUgcmVhc29uKS4KPiA+ICsJ CQkgKi8KPiA+ICsJCQlkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gPiAr CQkJbGlzdF9tb3ZlKCZvYmotPmdsb2JhbF9saXN0LCAmbWlncmF0ZSk7Cj4gPiArCQl9Cj4gPiAr Cj4gPiArCQlyZXQgPSAwOwo+ID4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgdG1w LCAmbWlncmF0ZSwgZ2xvYmFsX2xpc3QpIHsKPiA+ICsJCQlpZiAocmV0ID09IDApCj4gPiArCQkJ CXJldCA9IGk5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1lbWZzKG9iaik7Cj4g PiArCQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gPiArCQl9Cj4g PiArCQlsaXN0X3NwbGljZSgmbWlncmF0ZSwgKnApOwo+IAo+IEhtbW0gYXJlIHRoaXMgc29tZSBj bGV2ZXIgZ2FtZXMgd2l0aCBvYmotPmdsb2JhbF9saXN0ID8KSWYgdGhlIG1pZ3JhdGlvbiB3YXMg dW5zdWNjZXNzZnVsLCB3ZSBhcmUganVzdCBtb3ZpbmcgdGhlIG9iamVjdHMgYmFjawp0byB0aGVp ciBvcmlnaW5hbCBsaXN0IChib3VuZCBvciB1bmJvdW5kKS4KPiAKPiA+ICsJCWlmIChyZXQpCj4g PiArCQkJYnJlYWs7Cj4gPiArCX0KPiA+ICsKPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Cj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gICBpbnQKPiA+ICAg aTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gICB7Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCBmMjgxZTBiLi4wODAzOTIyIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0yNTQ5LDYg KzI1NDksOSBAQCBpbnRlbF9hbGxvY19pbml0aWFsX3BsYW5lX29iaihzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiA+ICAgCWlmIChJU19FUlIob2JqKSkKPiA+ICAgCQlyZXR1cm4gZmFsc2U7Cj4g Pgo+ID4gKwkvKiBOb3QgdG8gYmUgcHJlc2VydmVkIGFjcm9zcyBoaWJlcm5hdGlvbiAqLwo+ID4g KwlvYmotPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsKPiA+ICsKPiA+ICAgCW9iai0+dGlsaW5n X21vZGUgPSBwbGFuZV9jb25maWctPnRpbGluZzsKPiA+ICAgCWlmIChvYmotPnRpbGluZ19tb2Rl ID09IEk5MTVfVElMSU5HX1gpCj4gPiAgIAkJb2JqLT5zdHJpZGUgPSBmYi0+cGl0Y2hlc1swXTsK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ID4gaW5kZXggZjQzNjgxZS4uMWQ4OTI1 MyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMKPiA+IEBAIC0xNTQsNiAr MTU0LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9hbGxvYyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq aGVscGVyLAo+ID4gICAJCWdvdG8gb3V0Owo+ID4gICAJfQo+ID4KPiA+ICsJLyogRGlzY2FyZCB0 aGUgY29udGVudHMgb2YgdGhlIEJJT1MgZmIgYWNyb3NzIGhpYmVybmF0aW9uLgo+ID4gKwkgKiBX ZSByZWFsbHkgd2FudCB0byBjb21wbGV0ZWx5IHRocm93YXdheSB0aGUgZWFybGllciBmYmRldgo+ ID4gKwkgKiBhbmQgcmVjb25maWd1cmUgaXQgYW55d2F5Lgo+ID4gKwkgKi8KPiA+ICsJb2JqLT5p bnRlcm5hbF92b2xhdGlsZSA9IHRydWU7Cj4gPiArCj4gPiAgIAlmYiA9IF9faW50ZWxfZnJhbWVi dWZmZXJfY3JlYXRlKGRldiwgJm1vZGVfY21kLCBvYmopOwo+ID4gICAJaWYgKElTX0VSUihmYikp IHsKPiA+ICAgCQlyZXQgPSBQVFJfRVJSKGZiKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ ID4gaW5kZXggMDNhZDI3Ni4uNmRkYzIwYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKPiA+IEBAIC01MTgxLDYgKzUxODEsOCBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X3NldHVw X3BjdHgoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+ICAgCUk5MTVfV1JJVEUoVkxWX1BDQlIs IHBjdHhfcGFkZHIpOwo+ID4KPiA+ICAgb3V0Ogo+ID4gKwkvKiBUaGUgcG93ZXIgY29udGV4dCBu ZWVkIG5vdCBiZSBwcmVzZXJ2ZWQgYWNyb3NzIGhpYmVybmF0aW9uICovCj4gPiArCXBjdHgtPmlu dGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsKPiA+ICAgCURSTV9ERUJVR19EUklWRVIoIlBDQlI6IDB4 JTA4eFxuIiwgSTkxNV9SRUFEKFZMVl9QQ0JSKSk7Cj4gPiAgIAlkZXZfcHJpdi0+dmx2X3BjdHgg PSBwY3R4Owo+ID4gICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j Cj4gPiBpbmRleCA1ZWFiYWY2Li4zNzBkOTZhIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+IEBAIC0yMDkwLDYgKzIwOTAsMTIgQEAgc3RhdGljIGlu dCBpbnRlbF9hbGxvY19yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4g ICAJaWYgKElTX0VSUihvYmopKQo+ID4gICAJCXJldHVybiBQVFJfRVJSKG9iaik7Cj4gPgo+ID4g KwkvKiBSaW5nYnVmZmVyIG9iamVjdHMgYXJlIGJ5IGRlZmluaXRpb24gdm9sYXRpbGUgLSBvbmx5 IHRoZSBjb21tYW5kcwo+ID4gKwkgKiBiZXR3ZWVuIEhFQUQgYW5kIFRBSUwgbmVlZCB0byBiZSBw cmVzZXJ2ZWQgYW5kIHdoaWxzdCB0aGVyZSBhcmUKPiA+ICsJICogYW55IGNvbW1hbmRzIHRoZXJl LCB0aGUgcmluZ2J1ZmZlciBpcyBwaW5uZWQgYnkgYWN0aXZpdHkuCj4gPiArCSAqLwo+ID4gKwlv YmotPmludGVybmFsX3ZvbGF0aWxlID0gdHJ1ZTsKPiA+ICsKPiAKPiBXaGF0IGRvZXMgdGhpcyBt ZWFuPyBJdCBnZXRzIGNvcnJlY3RseSByZS1pbml0aWFsaXplZCBieSBleGlzdGluZyBjb2RlIAo+ IG9uIHJlc3VtZT8gRG9uJ3Qgc2VlIGFueXRoaWduIHNwZWNpZmljIGFib3V0IEhFQUQgYW5kIFRB SUwgaW4gdGhpcyBwYXRjaC4KVGhlIEhFQUQgYW5kIFRBSUwgd2lsbCBiZSB0aGUgc2FtZSBmb3Ig dGhlIHJpbmdidWZmZXIgYmVmb3JlIHRoZSBzeXN0ZW0KZ29lcyBpbiB0byBoaWJlcm5hdGlvbiwg d2hpY2ggd2lsbCBiZSB0YWtlbiBjYXJlIGJ5IHZtYV91bmJpbmQgdG8KY29tcGxldGUgYWxsIHJl cXVlc3RzLgo+IAo+ID4gICAJLyogbWFyayByaW5nIGJ1ZmZlcnMgYXMgcmVhZC1vbmx5IGZyb20g R1BVIHNpZGUgYnkgZGVmYXVsdCAqLwo+ID4gICAJb2JqLT5ndF9ybyA9IDE7Cj4gPgo+ID4KClRo YW5rcywKQW5raXQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=