From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/10] drm/i915: Migrate stolen objects before hibernation Date: Tue, 22 Dec 2015 17:23:05 +0000 Message-ID: <567986F9.9000208@linux.intel.com> References: <1450765253-32104-1-git-send-email-ankitprasad.r.sharma@intel.com> <1450765253-32104-9-git-send-email-ankitprasad.r.sharma@intel.com> <56794325.7050000@linux.intel.com> 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 ESMTP id 810B86E284 for ; Tue, 22 Dec 2015 09:23:07 -0800 (PST) In-Reply-To: <56794325.7050000@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: 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 Ck9uIDIyLzEyLzE1IDEyOjMzLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPgo+IE9uIDIyLzEyLzE1 IDA2OjIwLCBhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20gd3JvdGU6Cj4+IEZyb206IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Pgo+PiBWaWxsZSByZW1pbmRl ZCB1cyB0aGF0IHN0b2xlbiBtZW1vcnkgaXMgbm90IHByZXNlcnZlZCBhY3Jvc3MKPj4gaGliZXJu YXRpb24sIGFuZCBhIHJlc3VsdCBvZiB0aGlzIHdhcyB0aGF0IGNvbnRleHQgb2JqZWN0cyBub3cg YmVpbmcKPj4gYWxsb2NhdGVkIGZyb20gc3RvbGVuIHdlcmUgYmVpbmcgY29ycnVwdGVkIG9uIFM0 IGFuZCBwcm9tcHRseSBoYW5naW5nCj4+IHRoZSBHUFUgb24gcmVzdW1lLgo+Pgo+PiBXZSB3YW50 IHRvIHV0aWxpc2Ugc3RvbGVuIGZvciBhcyBtdWNoIGFzIHBvc3NpYmxlIChub3RoaW5nIGVsc2Ug d2lsbCB1c2UKPj4gdGhhdCB3YXN0ZWQgbWVtb3J5IG90aGVyd2lzZSksIHNvIHdlIG5lZWQgYSBz dHJhdGVneSBmb3IgaGFuZGxpbmcKPj4gZ2VuZXJhbCBvYmplY3RzIGFsbG9jYXRlZCBmcm9tIHN0 b2xlbiBhbmQgaGliZXJuYXRpb24uIEEgc2ltcGxlIHNvbHV0aW9uCj4+IGlzIHRvIGRvIGEgQ1BV IGNvcHkgdGhyb3VnaCB0aGUgR1RUIG9mIHRoZSBzdG9sZW4gb2JqZWN0IGludG8gYSBmcmVzaAo+ PiBzaG1lbWZzIGJhY2tpbmcgc3RvcmUgYW5kIHRoZW5jZWZvcnRoIHRyZWF0IGl0IGFzIGEgbm9y bWFsIG9iamVjdHMuIFRoaXMKPj4gY2FuIGJlIHJlZmluZWQgaW4gZnV0dXJlIHRvIGVpdGhlciB1 c2UgYSBHUFUgY29weSB0byBhdm9pZCB0aGUgc2xvdwo+PiB1bmNhY2hlZCByZWFkcyAodGhvdWdo IGl0J3MgaGliZXJuYXRpb24hKSBhbmQgcmVjcmVhdGUgc3RvbGVuIG9iamVjdHMKPj4gdXBvbiBy ZXN1bWUvZmlyc3QtdXNlLiBGb3Igbm93LCBhIHNpbXBsZSBhcHByb2FjaCBzaG91bGQgc3VmZmlj ZSBmb3IKPj4gdGVzdGluZyB0aGUgb2JqZWN0IG1pZ3JhdGlvbi4KPj4KPj4gdjI6Cj4+IFN3YXAg UFRFIGZvciBwaW5uZWQgYmluZGluZ3Mgb3ZlciB0byB0aGUgc2htZW1mcy4gVGhpcyBhZGRzIGEK Pj4gY29tcGxpY2F0ZWQgZGFuY2UsIGJ1dCBpcyByZXF1aXJlZCBhcyBtYW55IHN0b2xlbiBvYmpl Y3RzIGFyZSBsaWtlbHkgdG8KPj4gYmUgcGlubmVkIGZvciB1c2UgYnkgdGhlIGhhcmR3YXJlLiBT d2FwcGluZyB0aGUgUFRFcyBzaG91bGQgbm90IHJlc3VsdAo+PiBpbiBleHRlcm5hbGx5IHZpc2li bGUgYmVoYXZpb3VyLCBhcyBlYWNoIFBURSB1cGRhdGUgc2hvdWxkIGJlIGF0b21pYyBhbmQKPj4g dGhlIHR3byBwYWdlcyBpZGVudGljYWwuIChkYW52ZXQpCj4+Cj4+IHNhZmUtYnktZGVmYXVsdCwg b3IgdGhlIHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZS4gV2UgbmVlZCBhIG5ldyBmbGFnCj4+ IHRvIG1hcmsgb2JqZWN0cyB0aGF0IHdlIGNhbiB3aWxmdWxseSBkaXNjYXJkIGFuZCByZWNyZWF0 ZSBhY3Jvc3MKPj4gaGliZXJuYXRpb24uIChkYW52ZXQpCj4+Cj4+IEp1c3QgdXNlIHRoZSBnbG9i YWxfbGlzdCByYXRoZXIgdGhhbiBpbnZlbnQgYSBuZXcgc3RvbGVuX2xpc3QuIFRoaXMgaXMKPj4g dGhlIHNsb3dwYXRoIGhpYmVybmF0ZSBhbmQgc28gYWRkaW5nIGEgbmV3IGxpc3QgYW5kIHRoZSBh c3NvY2lhdGVkCj4+IGNvbXBsZXhpdHkgaXNuJ3Qgd29ydGggaXQuCj4+Cj4+IHYzOiBSZWJhc2Vk IG9uIGRybS1pbnRlbC1uaWdodGx5IChBbmtpdCkKPj4KPj4gdjQ6IFVzZSBpbnNlcnRfcGFnZSB0 byBtYXAgc3RvbGVuIG1lbW9yeSBiYWNrZWQgcGFnZXMgZm9yIG1pZ3JhdGlvbiB0bwo+PiBzaG1l bSAoQ2hyaXMpCj4+Cj4+IHY1OiBBY3F1aXJlIG11dGV4IGxvY2sgd2hpbGUgY29weWluZyBzdG9s ZW4gYnVmZmVyIG9iamVjdHMgdG8gc2htZW0KPj4gKENocmlzKQo+Pgo+PiB2NjogSGFuZGxlZCBm aWxlIGxlYWssIFNwbGl0dGVkIG9iamVjdCBtaWdyYXRpb24gZnVuY3Rpb24sIGFkZGVkCj4+IGtl cm5lbGRvYwo+PiBmb3IgbWlncmF0ZV9zdG9sZW5fdG9fc2htZW1mcygpIGZ1bmN0aW9uIChUdnJ0 a28pCj4+IFVzZSBpOTE1IHdyYXBwZXIgZnVuY3Rpb24gZm9yIGRybV9tbV9pbnNlcnRfbm9kZV9p bl9yYW5nZSgpCj4+Cj4+IHY3OiBLZWVwIHRoZSBvYmplY3QgaW4gY3B1IGRvbWFpbiBhZnRlciBn ZXRfcGFnZXMsIHJlbW92ZSB0aGUgb2JqZWN0IGZyb20KPj4gdGhlIHVuYm91bmQgbGlzdCBvbmx5 IHdoZW4gbWFya2VkIFBVUkdFRCwgQ29ycmVjdGVkIHNwbGl0IG9mIG9iamVjdAo+PiBtaWdyYXRp b24KPj4gZnVuY3Rpb24gKENocmlzKQo+Pgo+PiB2ODogU3BsaXQgaTkxNV9nZW1fZnJlZXplKCks IHJlbW92ZWQgcmVkdW5kYW50IHVzZSBvZiBiYXJyaWVyLCBjb3JyZWN0ZWQKPj4gdXNlIG9mIHNl dF90b19jcHVfZG9tYWluKCkgKENocmlzKQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzIGF0IGNocmlzLXdpbHNvbi5jby51az4KPj4gU2lnbmVkLW9mZi1ieTogQW5raXRw cmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAxNyArKy0KPj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMTAgKysKPj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgfCAxOTQKPj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9z dG9sZW4uYyAgfCAgNDkgKysrKysrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgICAgfCAgIDMgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMgICAgICB8ICAgNiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAg ICAgIHwgICAyICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMg fCAgIDYgKwo+PiAgIDggZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlvbnMoKyksIDEyIGRlbGV0 aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Ywo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gaW5kZXggZTY5MzVmMS4u OGY2NzVhZTcgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBAQCAtOTc5LDYgKzk3 OSwyMSBAQCBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ ICAgICAgIHJldHVybiBpOTE1X2RybV9zdXNwZW5kKGRybV9kZXYpOwo+PiAgIH0KPj4KPj4gK3N0 YXRpYyBpbnQgaTkxNV9wbV9mcmVlemUoc3RydWN0IGRldmljZSAqZGV2KQo+PiArewo+PiArICAg IGludCByZXQ7Cj4+ICsKPj4gKyAgICByZXQgPSBpOTE1X2dlbV9mcmVlemUocGNpX2dldF9kcnZk YXRhKHRvX3BjaV9kZXYoZGV2KSkpOwo+PiArICAgIGlmIChyZXQpCj4+ICsgICAgICAgIHJldHVy biByZXQ7Cj4+ICsKPj4gKyAgICByZXQgPSBpOTE1X3BtX3N1c3BlbmQoZGV2KTsKPj4gKyAgICBp ZiAocmV0KQo+PiArICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgcmV0dXJuIDA7Cj4+ ICt9Cj4+ICsKPj4gICBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkZXZp Y2UgKmRldikKPj4gICB7Cj4+ICAgICAgIHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGV2 X3RvX2k5MTUoZGV2KS0+ZGV2Owo+PiBAQCAtMTYwNyw3ICsxNjIyLDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBkZXZfcG1fb3BzIGk5MTVfcG1fb3BzID0gewo+PiAgICAgICAgKiBAcmVzdG9yZSwg QHJlc3RvcmVfZWFybHkgOiBjYWxsZWQgYWZ0ZXIgcmVib290aW5nIGFuZAo+PiByZXN0b3Jpbmcg dGhlCj4+ICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpYmVybmF0aW9uIGlt YWdlIFtQTVNHX1JFU1RPUkVdCj4+ICAgICAgICAqLwo+PiAtICAgIC5mcmVlemUgPSBpOTE1X3Bt X3N1c3BlbmQsCj4+ICsgICAgLmZyZWV6ZSA9IGk5MTVfcG1fZnJlZXplLAo+PiAgICAgICAuZnJl ZXplX2xhdGUgPSBpOTE1X3BtX3N1c3BlbmRfbGF0ZSwKPj4gICAgICAgLnRoYXdfZWFybHkgPSBp OTE1X3BtX3Jlc3VtZV9lYXJseSwKPj4gICAgICAgLnRoYXcgPSBpOTE1X3BtX3Jlc3VtZSwKPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IDJmMjFlNzEuLjQ5Mjg3OGEgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMjA3OSw2ICsyMDc5LDEyIEBAIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPj4gICAgICAgICogQWR2aWNlOiBhcmUgdGhlIGJhY2tp bmcgcGFnZXMgcHVyZ2VhYmxlPwo+PiAgICAgICAgKi8KPj4gICAgICAgdW5zaWduZWQgaW50IG1h ZHY6MjsKPj4gKyAgICAvKioKPj4gKyAgICAgKiBXaGVyZWFzIG1hZHYgaXMgZm9yIHVzZXJzcGFj ZSwgdGhlcmUgYXJlIGNlcnRhaW4gc2l0dWF0aW9ucwo+PiArICAgICAqIHdoZXJlIHdlIHdhbnQg STkxNV9NQURWX0RPTlRORUVEIGJlaGF2aW91ciBvbiBpbnRlcm5hbCBvYmplY3RzCj4+ICsgICAg ICogd2l0aG91dCBjb25mbGF0aW5nIHRoZSB1c2Vyc3BhY2Ugc2V0dGluZy4KPj4gKyAgICAgKi8K Pj4gKyAgICB1bnNpZ25lZCBpbnQgaW50ZXJuYWxfdm9sYXRpbGU6MTsKPj4KPj4gICAgICAgLyoq Cj4+ICAgICAgICAqIEN1cnJlbnQgdGlsaW5nIG1vZGUgZm9yIHRoZSBvYmplY3QuCj4+IEBAIC0z MDQ3LDYgKzMwNTMsOSBAQCBpbnQgaTkxNV9nZW1fbDNfcmVtYXAoc3RydWN0Cj4+IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsIGludCBzbGljZSk7Cj4+ICAgdm9pZCBpOTE1X2dlbV9pbml0X3N3 aXp6bGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gICB2b2lkIGk5MTVfZ2VtX2NsZWFu dXBfcmluZ2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gICBpbnQgX19tdXN0X2No ZWNrIGk5MTVfZ3B1X2lkbGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+ICtpbnQgX19tdXN0 X2NoZWNrIGk5MTVfZ2VtX2ZyZWV6ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gK2ludCBf X211c3RfY2hlY2sKPj4gK2k5MTVfZ2VtX29iamVjdF9taWdyYXRlX3N0b2xlbl90b19zaG1lbWZz KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Cj4+ICpvYmopOwo+PiAgIGludCBfX211c3RfY2hl Y2sgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gICB2b2lkIF9f aTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4gICAg ICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqLAo+PiBAQCAt MzI3Niw2ICszMjg1LDcgQEAKPj4gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9zdG9sZW5fZm9yX3By ZWFsbG9jYXRlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiBzdG9sZW5fb2Zmc2V0LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHUzMiBndHRfb2Zmc2V0LAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBz aXplKTsKPj4gK2ludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc3RvbGVuX2ZyZWV6ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4+Cj4+ICAgLyogaTkxNV9nZW1fc2hyaW5rZXIuYyAq Lwo+PiAgIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+IGluZGV4IGEwZWMx YTkuLmQyN2E0MWUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAtNDU3Mywx MiArNDU3MywyNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Rfb3Bz Cj4+IGk5MTVfZ2VtX29iamVjdF9vcHMgPSB7Cj4+ICAgICAgIC5wdXRfcGFnZXMgPSBpOTE1X2dl bV9vYmplY3RfcHV0X3BhZ2VzX2d0dCwKPj4gICB9Owo+Pgo+PiArc3RhdGljIHN0cnVjdCBhZGRy ZXNzX3NwYWNlICoKPj4gK2k5MTVfZ2VtX3NldF9pbm9kZV9nZnAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGZpbGUgKmZpbGUpCj4+ICt7Cj4+ICsgICAgc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmcgPSBmaWxlX2lub2RlKGZpbGUpLT5pX21hcHBpbmc7Cj4+ICsgICAgZ2ZwX3Qg bWFzazsKPj4gKwo+PiArICAgIG1hc2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJM RTsKPj4gKyAgICBpZiAoSVNfQ1JFU1RMSU5FKGRldikgfHwgSVNfQlJPQURXQVRFUihkZXYpKSB7 Cj4+ICsgICAgICAgIC8qIDk2NWdtIGNhbm5vdCByZWxvY2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIu ICovCj4+ICsgICAgICAgIG1hc2sgJj0gfl9fR0ZQX0hJR0hNRU07Cj4+ICsgICAgICAgIG1hc2sg fD0gX19HRlBfRE1BMzI7Cj4+ICsgICAgfQo+PiArICAgIG1hcHBpbmdfc2V0X2dmcF9tYXNrKG1h cHBpbmcsIG1hc2spOwo+PiArCj4+ICsgICAgcmV0dXJuIG1hcHBpbmc7Cj4+ICt9Cj4+ICsKPj4g ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KHN0cnVj dCBkcm1fZGV2aWNlCj4+ICpkZXYsCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3Qgc2l6ZSkKPj4gICB7Cj4+ICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7 Cj4+IC0gICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7Cj4+IC0gICAgZ2ZwX3QgbWFz azsKPj4gICAgICAgaW50IHJldDsKPj4KPj4gICAgICAgb2JqID0gaTkxNV9nZW1fb2JqZWN0X2Fs bG9jKGRldik7Cj4+IEBAIC00NTkxLDE1ICs0NjA2LDcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QKPj4gKmk5MTVfZ2VtX2FsbG9jX29iamVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ PiAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4gICAgICAgfQo+Pgo+PiAtICAgIG1h c2sgPSBHRlBfSElHSFVTRVIgfCBfX0dGUF9SRUNMQUlNQUJMRTsKPj4gLSAgICBpZiAoSVNfQ1JF U1RMSU5FKGRldikgfHwgSVNfQlJPQURXQVRFUihkZXYpKSB7Cj4+IC0gICAgICAgIC8qIDk2NWdt IGNhbm5vdCByZWxvY2F0ZSBvYmplY3RzIGFib3ZlIDRHaUIuICovCj4+IC0gICAgICAgIG1hc2sg Jj0gfl9fR0ZQX0hJR0hNRU07Cj4+IC0gICAgICAgIG1hc2sgfD0gX19HRlBfRE1BMzI7Cj4+IC0g ICAgfQo+PiAtCj4+IC0gICAgbWFwcGluZyA9IGZpbGVfaW5vZGUob2JqLT5iYXNlLmZpbHApLT5p X21hcHBpbmc7Cj4+IC0gICAgbWFwcGluZ19zZXRfZ2ZwX21hc2sobWFwcGluZywgbWFzayk7Cj4+ ICsgICAgaTkxNV9nZW1fc2V0X2lub2RlX2dmcChkZXYsIG9iai0+YmFzZS5maWxwKTsKPj4KPj4g ICAgICAgaTkxNV9nZW1fb2JqZWN0X2luaXQob2JqLCAmaTkxNV9nZW1fb2JqZWN0X29wcyk7Cj4+ Cj4+IEBAIC00Nzc0LDYgKzQ3ODEsMTcxIEBAIGk5MTVfZ2VtX3N0b3BfcmluZ2J1ZmZlcnMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAgICAgICAgIGRldl9wcml2LT5ndC5zdG9wX3Jpbmco cmluZyk7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIGludAo+PiArY29weV9jb250ZW50KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4+ICsgICAgICAgIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LAo+PiArICAgICAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZykKPj4g K3sKPj4gKyAgICBzdHJ1Y3QgZHJtX21tX25vZGUgbm9kZTsKPj4gKyAgICBpbnQgcmV0LCBpOwo+ PiArCj4+ICsgICAgcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwg ZmFsc2UpOwo+PiArICAgIGlmIChyZXQpCj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4g KyAgICAvKiBzdG9sZW4gb2JqZWN0cyBhcmUgYWxyZWFkeSBwaW5uZWQgdG8gcHJldmVudCBzaHJp bmthZ2UgKi8KPj4gKyAgICBtZW1zZXQoJm5vZGUsIDAsIHNpemVvZihub2RlKSk7Cj4+ICsgICAg cmV0ID0gaW5zZXJ0X21hcHBhYmxlX25vZGUoaTkxNSwgJm5vZGUpOwo+PiArICAgIGlmIChyZXQp Cj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgb2Jq LT5iYXNlLnNpemUgLyBQQUdFX1NJWkU7IGkrKykgewo+PiArICAgICAgICBzdHJ1Y3QgcGFnZSAq cGFnZTsKPj4gKyAgICAgICAgdm9pZCAqX19pb21lbSBzcmM7Cj4+ICsgICAgICAgIHZvaWQgKmRz dDsKPj4gKwo+PiArICAgICAgICBpOTE1LT5ndHQuYmFzZS5pbnNlcnRfcGFnZSgmaTkxNS0+Z3R0 LmJhc2UsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGk5MTVfZ2VtX29iamVjdF9nZXRfZG1h X2FkZHJlc3Mob2JqLCBpKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5zdGFydCwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9DQUNIRV9OT05FLAo+PiArICAgICAgICAg ICAgICAgICAgICAgICAwKTsKPj4gKwo+PiArICAgICAgICBwYWdlID0gc2htZW1fcmVhZF9tYXBw aW5nX3BhZ2UobWFwcGluZywgaSk7Cj4+ICsgICAgICAgIGlmIChJU19FUlIocGFnZSkpIHsKPj4g KyAgICAgICAgICAgIHJldCA9IFBUUl9FUlIocGFnZSk7Cj4+ICsgICAgICAgICAgICBicmVhazsK Pj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIHNyYyA9IGlvX21hcHBpbmdfbWFwX2F0b21p Y193YyhpOTE1LT5ndHQubWFwcGFibGUsIG5vZGUuc3RhcnQpOwo+PiArICAgICAgICBkc3QgPSBr bWFwX2F0b21pYyhwYWdlKTsKPj4gKyAgICAgICAgd21iKCk7Cj4+ICsgICAgICAgIG1lbWNweV9m cm9taW8oZHN0LCBzcmMsIFBBR0VfU0laRSk7Cj4+ICsgICAgICAgIHdtYigpOwo+PiArICAgICAg ICBrdW5tYXBfYXRvbWljKGRzdCk7Cj4+ICsgICAgICAgIGlvX21hcHBpbmdfdW5tYXBfYXRvbWlj KHNyYyk7Cj4+ICsKPj4gKyAgICAgICAgcGFnZV9jYWNoZV9yZWxlYXNlKHBhZ2UpOwo+PiArICAg IH0KPj4gKwo+PiArICAgIGk5MTUtPmd0dC5iYXNlLmNsZWFyX3JhbmdlKCZpOTE1LT5ndHQuYmFz ZSwKPj4gKyAgICAgICAgICAgICAgICAgICBub2RlLnN0YXJ0LCBub2RlLnNpemUsCj4+ICsgICAg ICAgICAgICAgICAgICAgdHJ1ZSk7Cj4+ICsgICAgcmVtb3ZlX21hcHBhYmxlX25vZGUoJm5vZGUp Owo+PiArICAgIGlmIChyZXQpCj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4gKyAgICBy ZXR1cm4gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgdHJ1ZSk7Cj4+ICt9 Cj4+ICsKPj4gKy8qKgo+PiArICogaTkxNV9nZW1fb2JqZWN0X21pZ3JhdGVfc3RvbGVuX3RvX3No bWVtZnMoKSAtIG1pZ3JhdGVzIGEgc3RvbGVuCj4+IGJhY2tlZAo+PiArICogb2JqZWN0IHRvIHNo bWVtZnMKPj4gKyAqIEBvYmo6IHN0b2xlbiBiYWNrZWQgb2JqZWN0IHRvIGJlIG1pZ3JhdGVkCj4+ ICsgKgo+PiArICogUmV0dXJuczogMCBvbiBzdWNjZXNzZnVsIG1pZ3JhdGlvbiwgZXJybm8gb24g ZmFpbHVyZQo+PiArICovCj4+ICsKPj4gK2ludAo+PiAraTkxNV9nZW1fb2JqZWN0X21pZ3JhdGVf c3RvbGVuX3RvX3NobWVtZnMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QKPj4gKm9iaikKPj4g K3sKPj4gKyAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5i YXNlLmRldik7Cj4+ICsgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsICp2bjsKPj4gKyAgICBzdHJ1 Y3QgZmlsZSAqZmlsZTsKPj4gKyAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKPj4g KyAgICBzdHJ1Y3Qgc2dfdGFibGUgKnN0b2xlbl9wYWdlcywgKnNobWVtZnNfcGFnZXM7Cj4+ICsg ICAgaW50IHJldDsKPj4gKwo+PiArICAgIGlmIChXQVJOX09OX09OQ0UoaTkxNV9nZW1fb2JqZWN0 X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKSkpCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ PiArCj4+ICsgICAgZmlsZSA9IHNobWVtX2ZpbGVfc2V0dXAoImRybSBtbSBvYmplY3QiLCBvYmot PmJhc2Uuc2l6ZSwKPj4gVk1fTk9SRVNFUlZFKTsKPj4gKyAgICBpZiAoSVNfRVJSKGZpbGUpKQo+ PiArICAgICAgICByZXR1cm4gUFRSX0VSUihmaWxlKTsKPj4gKyAgICBtYXBwaW5nID0gaTkxNV9n ZW1fc2V0X2lub2RlX2dmcChvYmotPmJhc2UuZGV2LCBmaWxlKTsKPj4gKwo+PiArICAgIGxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIHZuLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspCj4+ ICsgICAgICAgIGlmIChpOTE1X3ZtYV91bmJpbmQodm1hKSkKPj4gKyAgICAgICAgICAgIGNvbnRp bnVlOwo+PiArCj4+ICsgICAgaWYgKG9iai0+bWFkdiAhPSBJOTE1X01BRFZfV0lMTE5FRUQgJiYg bGlzdF9lbXB0eSgmb2JqLT52bWFfbGlzdCkpIHsKPj4gKyAgICAgICAgLyogRGlzY2FyZCB0aGUg c3RvbGVuIHJlc2VydmF0aW9uLCBhbmQgcmVwbGFjZSB3aXRoCj4+ICsgICAgICAgICAqIGFuIHVu cG9wdWxhdGVkIHNobWVtZnMgb2JqZWN0Lgo+PiArICAgICAgICAgKi8KPj4gKyAgICAgICAgb2Jq LT5tYWR2ID0gX19JOTE1X01BRFZfUFVSR0VEOwo+PiArICAgICAgICBsaXN0X2RlbCgmb2JqLT5n bG9iYWxfbGlzdCk7Cj4+ICsgICAgfSBlbHNlIHsKPj4gKyAgICAgICAgcmV0ID0gY29weV9jb250 ZW50KG9iaiwgaTkxNSwgbWFwcGluZyk7Cj4+ICsgICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAg ICAgICBnb3RvIGVycl9maWxlOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHN0b2xlbl9wYWdlcyA9 IG9iai0+cGFnZXM7Cj4+ICsgICAgb2JqLT5wYWdlcyA9IE5VTEw7Cj4+ICsKPj4gKyAgICBvYmot PmJhc2UuZmlscCA9IGZpbGU7Cj4+ICsKPj4gKyAgICAvKiBSZWNyZWF0ZSBhbnkgcGlubmVkIGJp bmRpbmcgd2l0aCBwb2ludGVycyB0byB0aGUgbmV3IHN0b3JhZ2UgKi8KPj4gKyAgICBpZiAoIWxp c3RfZW1wdHkoJm9iai0+dm1hX2xpc3QpKSB7Cj4+ICsgICAgICAgIHJldCA9IGk5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXNfZ3R0KG9iaik7Cj4+ICsgICAgICAgIGlmIChyZXQpIHsKPj4gKyAgICAg ICAgICAgIG9iai0+cGFnZXMgPSBzdG9sZW5fcGFnZXM7Cj4+ICsgICAgICAgICAgICBnb3RvIGVy cl9maWxlOwo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgb2JqLT5nZXRfcGFnZS5zZyA9 IG9iai0+cGFnZXMtPnNnbDsKPj4gKyAgICAgICAgb2JqLT5nZXRfcGFnZS5sYXN0ID0gMDsKPj4g Kwo+PiArICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZt YV9saW5rKSB7Cj4+ICsgICAgICAgICAgICBpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1h LT5ub2RlKSkKPj4gKyAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gKwo+PiArICAgICAgICAg ICAgV0FSTl9PTihpOTE1X3ZtYV9iaW5kKHZtYSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgb2JqLT5jYWNoZV9sZXZlbCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgUElOX1VQ REFURSkpOwo+Cj4gSXQgbG9va3MgbGlrZSB0aGlzIHNob3VsZCBhbHNvIGZhaWwgKGFuZCByZXN0 b3JlKSB0aGUgbWlncmF0aW9uLgo+IE90aGVyd2lzZSBpZiBpdCBmYWlscyBpdCBsZWF2ZXMgR1RU IG1hcHBpbmdzIHRvIHBhZ2VzIHdoaWNoIHdpbGwgYmUKPiByZWxlYXNlZCBiZWxvdy4KPgo+IE9y IGEgYmlnIGZhdCBjb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0IGNhbm5vdCBmYWlsLCBldmVyLgoK T24gdGhlIGJhc2lzIHRoYXQgdGhpcyBpcyBhbiBpbXBvc3NpYmxlIGZhaWx1cmUsIGp1c3QgcGxl YXNlIGFkZCBhIApjb21tZW50IGFuZCB0aGVuIHlvdSBjYW4gYWRkOgoKUmV2aWV3ZWQtYnk6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpZb3UgY2FuIGFsc28gY2hh bmdlIHRoZSBXQVJOX09OIHRvIEJVR19PTiB3aGljaCBzb3VuZHMganVzdGlmaWVkIGluIHRoaXMg CmNhc2UuCgpSZWdhcmRzLAoKVHZydGtvCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==