From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 2/8] drm/i915: Adds graphic address space ballooning logic Date: Fri, 12 Dec 2014 13:00:26 +0000 Message-ID: <548AE6EA.4000200@linux.intel.com> References: <1415880169-7656-1-git-send-email-yu.c.zhang@linux.intel.com> <1415880169-7656-3-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 CBA016E858 for ; Fri, 12 Dec 2014 05:00:28 -0800 (PST) In-Reply-To: <1415880169-7656-3-git-send-email-yu.c.zhang@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: Yu Zhang , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDExLzEzLzIwMTQgMTI6MDIgUE0sIFl1IFpoYW5nIHdyb3RlOgo+IFdpdGggSW50ZWwgR1ZU LWcsIHRoZSBnbG9iYWwgZ3JhcGhpYyBtZW1vcnkgc3BhY2UgaXMgcGFydGl0aW9uZWQgYnkKPiBt dWx0aXBsZSB2R1BVIGluc3RhbmNlcyBpbiBkaWZmZXJlbnQgVk1zLiBUaGUgYmFsbG9vbmluZyBj b2RlIGlzIGNhbGxlZAo+IGluIGk5MTVfZ2VtX3NldHVwX2dsb2JhbF9ndHQoKSwgdXRpbGl6aW5n IHRoZSBkcm0gbW0gYWxsb2NhdG9yIEFQSXMgdG8KPiBtYXJrIHRoZSBncmFwaGljIGFkZHJlc3Mg c3BhY2Ugd2hpY2ggYXJlIHBhcnRpdGlvbmVkIG91dCB0byBvdGhlciB2R1BVcwo+IGFzIHJlc2Vy dmVkLgo+Cj4gdjI6Cj4gdGFrZSBDaHJpcyBhbmQgRGFuaWVsJ3MgY29tbWVudHM6Cj4gCS0gbm8g Z3VhcmQgcGFnZSBiZXR3ZWVuIGRpZmZlcmVudCBWTXMKPiAJLSB1c2UgZHJtX21tX3Jlc2VydmVf bm9kZSgpIHRvIGRvIHRoZSByZXNlcnZhdGlvbiBmb3IgYmFsbG9vbmluZywKPiAJaW5zdGVhZCBv ZiB0aGUgcHJldmlvdXMgZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoKQo+Cj4g djM6Cj4gdGFrZSBEYW5pZWwncyBjb21tZW50czoKPiAJLSBtb3ZlIGJhbGxvb25pbmcgZnVuY3Rp b25zIGludG8gaTkxNV92Z3B1LmMKPiAJLSBhZGQga2VybmVsZG9jIHRvIGJhbGxvb25pbmcgZnVu Y3Rpb25zCj4KPiBTaWduZWQtb2ZmLWJ5OiBZdSBaaGFuZyA8eXUuYy56aGFuZ0BsaW51eC5pbnRl bC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSmlrZSBTb25nIDxqaWtlLnNvbmdAaW50ZWwuY29tPgo+ IFNpZ25lZC1vZmYtYnk6IFpoaSBXYW5nIDx6aGkuYS53YW5nQGludGVsLmNvbT4KPiBTaWduZWQt b2ZmLWJ5OiBFZGRpZSBEb25nIDxlZGRpZS5kb25nQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHwgIDE3ICsrKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdmdwdS5jICAgIHwgMTQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmggICAgfCAgIDIg Kwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNjUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggZGUxMjAxNy4uMmRmYWMx MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTI3LDYgKzI3LDcg QEAKPiAgICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5o Pgo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKyNpbmNsdWRlICJpOTE1X3ZncHUuaCIKPiAg ICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4KPiBA QCAtMTY4Myw2ICsxNjg0LDE2IEBAIGludCBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4KPiAgIAkvKiBTdWJ0cmFjdCB0aGUgZ3VhcmQgcGFnZSAuLi4g Ki8KPiAgIAlkcm1fbW1faW5pdCgmZ2d0dF92bS0+bW0sIHN0YXJ0LCBlbmQgLSBzdGFydCAtIFBB R0VfU0laRSk7Cj4gKwo+ICsJZGV2X3ByaXYtPmd0dC5iYXNlLnN0YXJ0ID0gc3RhcnQ7Cj4gKwlk ZXZfcHJpdi0+Z3R0LmJhc2UudG90YWwgPSBlbmQgLSBzdGFydDsKPiArCj4gKwlpZiAoaW50ZWxf dmdwdV9hY3RpdmUoZGV2KSkgewo+ICsJCXJldCA9IGludGVsX3ZndF9iYWxsb29uKGRldik7Cj4g KwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiArCgpPdXQgb2YgY3VyaW9zaXR5 LCB3aGF0IHdpbGwgYmUgdGhlIG1lY2hhbmlzbSB0byBwcmV2ZW50IGEgdkdQVSBpbnN0YW5jZSAK ZnJvbSBpZ25vcmluZyB0aGUgYmFsbG9vbmluZyBkYXRhPyBNdXN0IGJlIHNvbWV0aGluZyBpbiB0 aGUgaHlwZXJ2aXNvciAKYmxvY2tpbmcgcGFzcy10aHJvdWdoIGFjY2VzcyB0byBzdWNoIGRvbWFp bnM/CgpBbmQgcHJvYmFibHkgR1BVIHJlc2V0IHNob3VsZCBhbHNvIGJlIGRpc2FsbG93ZWQgZm9y IHZHUFUgaW5zdGFuY2VzPwoKPiAgIAlpZiAoIUhBU19MTEMoZGV2KSkKPiAgIAkJZGV2X3ByaXYt Pmd0dC5iYXNlLm1tLmNvbG9yX2FkanVzdCA9IGk5MTVfZ3R0X2NvbG9yX2FkanVzdDsKPgo+IEBA IC0xNzAyLDkgKzE3MTMsNiBAQCBpbnQgaTkxNV9nZW1fc2V0dXBfZ2xvYmFsX2d0dChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ICAgCQl2bWEtPmJvdW5kIHw9IEdMT0JBTF9CSU5EOwo+ICAgCX0K Pgo+IC0JZGV2X3ByaXYtPmd0dC5iYXNlLnN0YXJ0ID0gc3RhcnQ7Cj4gLQlkZXZfcHJpdi0+Z3R0 LmJhc2UudG90YWwgPSBlbmQgLSBzdGFydDsKPiAtCj4gICAJLyogQ2xlYXIgYW55IG5vbi1wcmVh bGxvY2F0ZWQgYmxvY2tzICovCj4gICAJZHJtX21tX2Zvcl9lYWNoX2hvbGUoZW50cnksICZnZ3R0 X3ZtLT5tbSwgaG9sZV9zdGFydCwgaG9sZV9lbmQpIHsKPiAgIAkJRFJNX0RFQlVHX0tNUygiY2xl YXJpbmcgdW51c2VkIEdUVCBzcGFjZTogWyVseCwgJWx4XVxuIiwKPiBAQCAtMTc1Niw2ICsxNzY0 LDkgQEAgdm9pZCBpOTE1X2dsb2JhbF9ndHRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAgCX0KPgo+ICAgCWlmIChkcm1fbW1faW5pdGlhbGl6ZWQoJnZtLT5tbSkpIHsKPiArCQlp ZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2KSkKPiArCQkJaW50ZWxfdmd0X2RlYmFsbG9vbigpOwo+ ICsKPiAgIAkJZHJtX21tX3Rha2Vkb3duKCZ2bS0+bW0pOwo+ICAgCQlsaXN0X2RlbCgmdm0tPmds b2JhbF9saW5rKTsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdmdwdS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKPiBpbmRleCAzZjZi Nzk3Li5mZjVmYmEzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdw dS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMKPiBAQCAtODMsMyAr ODMsMTUyIEBAIHZvaWQgaTkxNV9jaGVja192Z3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g ICAJZGV2X3ByaXYtPnZncHUuYWN0aXZlID0gdHJ1ZTsKPiAgIAlEUk1fSU5GTygiVmlydHVhbCBH UFUgZm9yIEludGVsIEdWVC1nIGRldGVjdGVkLlxuIik7Cj4gICB9Cj4gKwo+ICtzdHJ1Y3QgX2Jh bGxvb25faW5mb18gewo+ICsJLyoKPiArCSAqIFRoZXJlIGFyZSB1cCB0byAyIHJlZ2lvbnMgcGVy IGxvdy9oaWdoIGdyYXBoaWMgbWVtb3J5IHRoYXQKPiArCSAqIG1pZ2h0IGJlIGJhbGxvb25lZC4g SGVyZSwgaW5kZXggMC8xIGlzIGZvciBsb3cKPiArCSAqIGdyYXBoaWMgbWVtb3J5LCAyLzMgZm9y IGhpZ2ggZ3JhcGhpYyBtZW1vcnkuCj4gKwkgKi8KPiArCXN0cnVjdCBkcm1fbW1fbm9kZSBzcGFj ZVs0XTsKPiArfSBibF9pbmZvOwoKVGhpcyBzaG91bGQgYmUgc3RhdGljIEkgdGhpbmsuCgo+ICsv KioKPiArICogaW50ZWxfdmd0X2RlYmFsbG9vbiAtIGRlYmFsbG9vbiByZXNlcnZlZCBncmFwaGlj cyBhZGRyZXNzIHRydW5rcwo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBk ZWFsbG9jYXRlIHRoZSBiYWxsb29uZWQtb3V0IGdyYXBoaWMgbWVtb3J5LCB3aGVuCj4gKyAqIGRy aXZlciBpcyB1bmxvYWRlZCBvciB3aGVuIGJhbGxvb25pbmcgZmFpbHMuCj4gKyAqLwo+ICt2b2lk IGludGVsX3ZndF9kZWJhbGxvb24odm9pZCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJRFJNX0lO Rk8oIlZHVCBkZWJhbGxvb24uXG4iKTsKCldvdWxkIGRlYnVnIGJlIG1vcmUgYXBwcm9wcmlhdGU/ IEkgZG9uJ3Qgc2VlIG11Y2ggdmFsdWUgb2Ygc2F5aW5nIHRoaXMgCm9uIGRyaXZlciB1bmxvYWQg LSBpdCdzIG5vdCB0aGF0IGl0IGlzIG9wdGlvbmFsIGF0IHRoaXMgcG9pbnQuCgpBbHNvIGZvciBh bGwgbG9nZ2luZywgaXMgaW50ZW5kZWQgaHVtYW4gcmVhZGFibGUgbmFtZSBWR1Qgb3IgdkdUPyBJ ZiB0aGUgCmxhdHRlciBpdCB3b3VsZCBiZSBuaWNlciB0byBsb2cgaXQgaW4gdGhhdCBmb3JtLgoK PiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7Cj4gKwkJaWYgKGJsX2luZm8uc3BhY2Vb aV0uYWxsb2NhdGVkKQo+ICsJCQlkcm1fbW1fcmVtb3ZlX25vZGUoJmJsX2luZm8uc3BhY2VbaV0p Owo+ICsJfQo+ICsKPiArCW1lbXNldCgmYmxfaW5mbywgMCwgc2l6ZW9mKGJsX2luZm8pKTsKPiAr fQo+ICsKPiArc3RhdGljIGludCB2Z3RfYmFsbG9vbl9zcGFjZShzdHJ1Y3QgZHJtX21tICptbSwK PiArCQkJICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCj4gKwkJCSAgICAgdW5zaWduZWQg bG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgc2l6 ZSA9IGVuZCAtIHN0YXJ0Owo+ICsKPiArCWlmIChzdGFydCA9PSBlbmQpCj4gKwkJcmV0dXJuIC1F SU5WQUw7Cj4gKwo+ICsJRFJNX0lORk8oImJhbGxvb24gc3BhY2U6IHJhbmdlIFsgMHglbHggLSAw eCVseCBdICVsdSBLQi5cbiIsCj4gKwkJIHN0YXJ0LCBlbmQsIHNpemUgLyAxMDI0KTsKCktpQiA/ Cgo+ICsJbm9kZS0+c3RhcnQgPSBzdGFydDsKPiArCW5vZGUtPnNpemUgPSBzaXplOwo+ICsKPiAr CXJldHVybiBkcm1fbW1fcmVzZXJ2ZV9ub2RlKG1tLCBub2RlKTsKPiArfQo+ICsKPiArLyoqCj4g KyAqIGludGVsX3ZndF9iYWxsb29uIC0gYmFsbG9vbiBvdXQgcmVzZXJ2ZWQgZ3JhcGhpY3MgYWRk cmVzcyB0cnVua3MKPiArICogQGRldjogZHJtIGRldmljZQo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0 aW9uIGlzIGNhbGxlZCBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc3RhZ2UsIHRvIGJhbGxvb24gb3V0 IHRoZQo+ICsgKiBncmFwaGljIGFkZHJlc3Mgc3BhY2UgYWxsb2NhdGVkIHRvIG90aGVyIFZNcywg YnkgbWFya2luZyB0aGVzZSBzcGFjZXMgYXMKPiArICogcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFRo ZSBiYWxsb29uaW5nIHJlbGF0ZWQga25vd2xlZGdlcyhzdGFydGluZyBhZGRyZXNzIGFuZCBzaXpl IG9mIHRoZSBsb3cvaGlnaAoKcy9rbm93bGVkZ2VzXCgva25vd2xlZGdlIC8KCj4gKyAqIGdyYXBo aWMgbWVtb3J5KSBhcmUgZGVwaWN0ZWQgaW4gdGhlIHZndF9pZiBzdHJ1Y3R1cmUgaW4gYSByZXNl cnZlZCBNTUlPCj4gKyAqIHJhbmdlLgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiB6ZXJvIG9u IHN1Y2Nlc3MsIG5vbi16ZXJvIGlmIGNvbmZpZ3VyYXRpb24gaW52YWxpZCBvciBiYWxsb29uaW5n IGZhaWxlZAo+ICsgKi8KPiAraW50IGludGVsX3ZndF9iYWxsb29uKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHRfdm0gPSAmZGV2X3By aXYtPmd0dC5iYXNlOwo+ICsJdW5zaWduZWQgbG9uZyBnZ3R0X3ZtX2VuZCA9IGdndHRfdm0tPnN0 YXJ0ICsgZ2d0dF92bS0+dG90YWw7Cj4gKwo+ICsJdW5zaWduZWQgbG9uZyBsb3dfZ21fYmFzZSwg bG93X2dtX3NpemUsIGxvd19nbV9lbmQ7Cj4gKwl1bnNpZ25lZCBsb25nIGhpZ2hfZ21fYmFzZSwg aGlnaF9nbV9zaXplLCBoaWdoX2dtX2VuZDsKPiArCWludCByZXQ7Cj4gKwo+ICsJbG93X2dtX2Jh c2UgPSBJOTE1X1JFQUQodmd0aWZfcmVnKGF2YWlsX3JzLmxvd19nbWFkci5teV9iYXNlKSk7Cj4g Kwlsb3dfZ21fc2l6ZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMubG93X2dtYWRyLm15 X3NpemUpKTsKPiArCWhpZ2hfZ21fYmFzZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxfcnMu aGlnaF9nbWFkci5teV9iYXNlKSk7Cj4gKwloaWdoX2dtX3NpemUgPSBJOTE1X1JFQUQodmd0aWZf cmVnKGF2YWlsX3JzLmhpZ2hfZ21hZHIubXlfc2l6ZSkpOwoKR2V0IHJpZCBvZiBteV8gcHJlZml4 ID8KCj4gKwo+ICsJbG93X2dtX2VuZCA9IGxvd19nbV9iYXNlICsgbG93X2dtX3NpemU7Cj4gKwlo aWdoX2dtX2VuZCA9IGhpZ2hfZ21fYmFzZSArIGhpZ2hfZ21fc2l6ZTsKPiArCj4gKwlEUk1fSU5G TygiVkdUIGJhbGxvb25pbmcgY29uZmlndXJhdGlvbjpcbiIpOwo+ICsJRFJNX0lORk8oIkxvdyBn cmFwaGljIG1lbW9yeTogYmFzZSAweCVseCBzaXplICVsZEtCXG4iLAo+ICsJCSBsb3dfZ21fYmFz ZSwgbG93X2dtX3NpemUgLyAxMDI0KTsKPiArCURSTV9JTkZPKCJIaWdoIGdyYXBoaWMgbWVtb3J5 OiBiYXNlIDB4JWx4IHNpemUgJWxkS0JcbiIsCj4gKwkJIGhpZ2hfZ21fYmFzZSwgaGlnaF9nbV9z aXplIC8gMTAyNCk7Cj4gKwo+ICsJaWYgKGxvd19nbV9iYXNlIDwgZ2d0dF92bS0+c3RhcnQKPiAr CSAgICB8fCBsb3dfZ21fZW5kID4gZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9lbmQKPiArCSAgICB8 fCBoaWdoX2dtX2Jhc2UgPCBkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxlX2VuZAo+ICsJICAgIHx8IGhp Z2hfZ21fZW5kID4gZ2d0dF92bV9lbmQpIHsKPiArCQlEUk1fRVJST1IoIkludmFsaWQgYmFsbG9v bmluZyBjb25maWd1cmF0aW9uIVxuIik7Cj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ ICsJbWVtc2V0KCZibF9pbmZvLCAwLCBzaXplb2YoYmxfaW5mbykpOwoKSWYgYmxfaW5mbyBpcyBz dGF0aWMgdGhlbiB5b3UgZG9uJ3QgbmVlZCB0aGlzIG1lbXNldD8KCj4gKwkvKiBIaWdoIGdyYXBo aWMgbWVtb3J5IGJhbGxvb25pbmcgKi8KPiArCWlmIChoaWdoX2dtX2Jhc2UgPiBkZXZfcHJpdi0+ Z3R0Lm1hcHBhYmxlX2VuZCkgewo+ICsJCXJldCA9IHZndF9iYWxsb29uX3NwYWNlKCZnZ3R0X3Zt LT5tbSwKPiArCQkJCQkmYmxfaW5mby5zcGFjZVsyXSwKPiArCQkJCQlkZXZfcHJpdi0+Z3R0Lm1h cHBhYmxlX2VuZCwKPiArCQkJCQloaWdoX2dtX2Jhc2UpOwo+ICsKPiArCQlpZiAocmV0KQo+ICsJ CQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogTm8gbmVlZCB0byBwYXJ0aXRpb24g b3V0IHRoZSBsYXN0IHBoeXNpY2FsIHBhZ2UsCj4gKwkgKiBiZWNhdXNlIGl0IGlzIHJlc2VydmVk IHRvIHRoZSBndWFyZCBwYWdlLgo+ICsJICovCj4gKwlpZiAoaGlnaF9nbV9lbmQgPCBnZ3R0X3Zt X2VuZCAtIFBBR0VfU0laRSkgewo+ICsJCXJldCA9IHZndF9iYWxsb29uX3NwYWNlKCZnZ3R0X3Zt LT5tbSwKPiArCQkJCQkmYmxfaW5mby5zcGFjZVszXSwKPiArCQkJCQloaWdoX2dtX2VuZCwKPiAr CQkJCQlnZ3R0X3ZtX2VuZCAtIFBBR0VfU0laRSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBl cnI7Cj4gKwl9Cj4gKwo+ICsJLyogTG93IGdyYXBoaWMgbWVtb3J5IGJhbGxvb25pbmcgKi8KPiAr CWlmIChsb3dfZ21fYmFzZSA+IGdndHRfdm0tPnN0YXJ0KSB7Cj4gKwkJcmV0ID0gdmd0X2JhbGxv b25fc3BhY2UoJmdndHRfdm0tPm1tLAo+ICsJCQkJCSZibF9pbmZvLnNwYWNlWzBdLAo+ICsJCQkJ CWdndHRfdm0tPnN0YXJ0LCBsb3dfZ21fYmFzZSk7Cj4gKwo+ICsJCWlmIChyZXQpCj4gKwkJCWdv dG8gZXJyOwo+ICsJfQo+ICsKPiArCWlmIChsb3dfZ21fZW5kIDwgZGV2X3ByaXYtPmd0dC5tYXBw YWJsZV9lbmQpIHsKPiArCQlyZXQgPSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0dF92bS0+bW0sCj4g KwkJCQkJJmJsX2luZm8uc3BhY2VbMV0sCj4gKwkJCQkJbG93X2dtX2VuZCwKPiArCQkJCQlkZXZf cHJpdi0+Z3R0Lm1hcHBhYmxlX2VuZCk7Cj4gKwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJy Owo+ICsJfQoKT2theSwgSSd2ZSBmaWd1cmVkIGl0IG91dC4gOikgSSBzdXBwb3NlIGdvaW5nIGJh Y2sgdG8gcGF0Y2ggMSwgd2hlcmUgaXQgCnNheXMgIkVhY2ggVk0gY2FuIG9ubHkgaGF2ZSBvbmUg cG9ydGlvbiBvZiBjb250aW51b3VzIGFyZWEgZm9yIG5vdyIsIAp3aXRoIHRoZSBlbXBoYXNpcyBv biBfb25lXy4gVGhhdCB0aHJldyBtZSBvZmYgdGhpbmtpbmcgeW91IGhhdmUgdHdvIAoiYmFsbG9v bnMiIG1lYW5pbmcgZm9yYmlkZGVuIGFyZWFzLiBBbmQgdGhlbiB3aXRoIGxvdyBhbmQgaGlnaCBu YW1pbmcgSSAKZ290IHRoZSB3cm9uZyBpZGVhIHRoYXQgb25lIGJhbGxvb24gbWFya3MgdGhlIGJv dHRvbSBpbmFjY2Vzc2libGUgcGFydCwgCmFuZCB0aGUgb3RoZXIgdG9wLiBJIGRpZG4ndCBmaWd1 cmUgb3V0IHRoZSB3aG9sZSBsb3cgPT0gbWFwcGFibGUsIGhpZ2ggCj09IG5vbi1tYXBwYWJsZSBz cGxpdC4gSSBzdXBwb3NlIGl0IHdhcyBteSBpbmV4cGVyaWVuY2UsIGJ1dCBpZiB5b3UgY2FuIAp0 aGluayBvZiBhIHdheSBvbiBob3cgdG8gaW1wcm92ZSB0aGUgY29tbWVudCwgZXZlbiBBU0NJSSBh cnQgd291bGQgYmUgCnZlcnkgbmljZSBpZiBwb3NzaWJsZS4KCkFjdHVhbGx5IGJhbGxvb25pbmcg aW4gdGhlIGZpcnN0IHBsYWNlIGNvbmZ1c2VzIG1lIGJlY2F1c2UgSSB0aG91Z2h0IApwcmlvciB1 c2UgZm9yIHRoYXQgaW4gdmlydHVhbGlzYXRpb24gd2FzIGZvciBtZW1vcnkgd2hpY2ggY2FuIHNo cmluayBhbmQgCmdyb3cgYXQgcnVudGltZS4gRGlkIEkgZ2V0IHRoYXQgd3Jvbmc/Cgo+ICsJRFJN X0lORk8oIlZHVCBiYWxsb29uIHN1Y2Nlc3NmdWxseVxuIik7Cj4gKwlyZXR1cm4gMDsKPiArCj4g K2VycjoKPiArCURSTV9FUlJPUigiVkdUIGJhbGxvb24gZmFpbFxuIik7Cj4gKwlpbnRlbF92Z3Rf ZGViYWxsb29uKCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1 LmgKPiBpbmRleCA1ZjQxZDAxYy4uZjUzOGIxOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZncHUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdw dS5oCj4gQEAgLTgxLDUgKzgxLDcgQEAgc3RydWN0IHZndF9pZiB7Cj4gICAJKFZHVF9QVklORk9f UEFHRSArIChsb25nKSYoKHN0cnVjdCB2Z3RfaWYgKikgTlVMTCktPngpCj4KPiAgIGV4dGVybiB2 b2lkIGk5MTVfY2hlY2tfdmdwdShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIGlu dCBpbnRlbF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIHZv aWQgaW50ZWxfdmd0X2RlYmFsbG9vbih2b2lkKTsKPgo+ICAgI2VuZGlmIC8qIF9JOTE1X1ZHUFVf SF8gKi8KPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=