From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yu, Zhang" Subject: Re: [PATCH v3 2/8] drm/i915: Adds graphic address space ballooning logic Date: Tue, 16 Dec 2014 21:22:01 +0800 Message-ID: <549031F9.8000108@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> <548AE6EA.4000200@linux.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 BED5B6E7AD for ; Tue, 16 Dec 2014 05:23:41 -0800 (PST) In-Reply-To: <548AE6EA.4000200@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 , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMi8xMi8yMDE0IDk6MDAgUE0sIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Cj4gT24gMTEv MTMvMjAxNCAxMjowMiBQTSwgWXUgWmhhbmcgd3JvdGU6Cj4+IFdpdGggSW50ZWwgR1ZULWcsIHRo ZSBnbG9iYWwgZ3JhcGhpYyBtZW1vcnkgc3BhY2UgaXMgcGFydGl0aW9uZWQgYnkKPj4gbXVsdGlw bGUgdkdQVSBpbnN0YW5jZXMgaW4gZGlmZmVyZW50IFZNcy4gVGhlIGJhbGxvb25pbmcgY29kZSBp cyBjYWxsZWQKPj4gaW4gaTkxNV9nZW1fc2V0dXBfZ2xvYmFsX2d0dCgpLCB1dGlsaXppbmcgdGhl IGRybSBtbSBhbGxvY2F0b3IgQVBJcyB0bwo+PiBtYXJrIHRoZSBncmFwaGljIGFkZHJlc3Mgc3Bh Y2Ugd2hpY2ggYXJlIHBhcnRpdGlvbmVkIG91dCB0byBvdGhlciB2R1BVcwo+PiBhcyByZXNlcnZl ZC4KPj4KPj4gdjI6Cj4+IHRha2UgQ2hyaXMgYW5kIERhbmllbCdzIGNvbW1lbnRzOgo+PiAgICAg LSBubyBndWFyZCBwYWdlIGJldHdlZW4gZGlmZmVyZW50IFZNcwo+PiAgICAgLSB1c2UgZHJtX21t X3Jlc2VydmVfbm9kZSgpIHRvIGRvIHRoZSByZXNlcnZhdGlvbiBmb3IgYmFsbG9vbmluZywKPj4g ICAgIGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9n ZW5lcmljKCkKPj4KPj4gdjM6Cj4+IHRha2UgRGFuaWVsJ3MgY29tbWVudHM6Cj4+ICAgICAtIG1v dmUgYmFsbG9vbmluZyBmdW5jdGlvbnMgaW50byBpOTE1X3ZncHUuYwo+PiAgICAgLSBhZGQga2Vy bmVsZG9jIHRvIGJhbGxvb25pbmcgZnVuY3Rpb25zCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFl1IFpo YW5nIDx5dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogSmlrZSBT b25nIDxqaWtlLnNvbmdAaW50ZWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5OiBaaGkgV2FuZyA8emhp LmEud2FuZ0BpbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IEVkZGllIERvbmcgPGVkZGllLmRv bmdAaW50ZWwuY29tPgo+PiAtLS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyB8ICAxNyArKystCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmMgICAg fCAxNDkKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV92Z3B1LmggICAgfCAgIDIgKwo+PiAgIDMgZmlsZXMgY2hhbmdl ZCwgMTY1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCj4+IGluZGV4IGRlMTIwMTcuLjJkZmFjMTMgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4+IEBAIC0yNyw2ICsyNyw3IEBACj4+ICAgI2lu Y2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+PiAgICNp bmNsdWRlICJpOTE1X2Rydi5oIgo+PiArI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+PiAgICNpbmNs dWRlICJpOTE1X3RyYWNlLmgiCj4+ICAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+Pgo+PiBAQCAt MTY4Myw2ICsxNjg0LDE2IEBAIGludCBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KHN0cnVjdCBk cm1fZGV2aWNlCj4+ICpkZXYsCj4+Cj4+ICAgICAgIC8qIFN1YnRyYWN0IHRoZSBndWFyZCBwYWdl IC4uLiAqLwo+PiAgICAgICBkcm1fbW1faW5pdCgmZ2d0dF92bS0+bW0sIHN0YXJ0LCBlbmQgLSBz dGFydCAtIFBBR0VfU0laRSk7Cj4+ICsKPj4gKyAgICBkZXZfcHJpdi0+Z3R0LmJhc2Uuc3RhcnQg PSBzdGFydDsKPj4gKyAgICBkZXZfcHJpdi0+Z3R0LmJhc2UudG90YWwgPSBlbmQgLSBzdGFydDsK Pj4gKwo+PiArICAgIGlmIChpbnRlbF92Z3B1X2FjdGl2ZShkZXYpKSB7Cj4+ICsgICAgICAgIHJl dCA9IGludGVsX3ZndF9iYWxsb29uKGRldik7Cj4+ICsgICAgICAgIGlmIChyZXQpCj4+ICsgICAg ICAgICAgICByZXR1cm4gcmV0Owo+PiArICAgIH0KPj4gKwo+Cj4gT3V0IG9mIGN1cmlvc2l0eSwg d2hhdCB3aWxsIGJlIHRoZSBtZWNoYW5pc20gdG8gcHJldmVudCBhIHZHUFUgaW5zdGFuY2UKPiBm cm9tIGlnbm9yaW5nIHRoZSBiYWxsb29uaW5nIGRhdGE/IE11c3QgYmUgc29tZXRoaW5nIGluIHRo ZSBoeXBlcnZpc29yCj4gYmxvY2tpbmcgcGFzcy10aHJvdWdoIGFjY2VzcyB0byBzdWNoIGRvbWFp bnM/CldlbGwsIGFsdGhvdWdoIHdlIGhhdmUgcmFuZ2UgY2hlY2sgbG9naWMgaW4gdGhlIGhvc3Qg c2lkZSh3aGljaCBjaGVja3MgCnRoZSBsZWdhbGl0eSBvZiBhIEdNIGFkZHJlc3MpLCB0aGUgY29y cmVjdG5lc3Mgb2YgYSBHTSBmcm9tIHZHUFUgc2lkZSAKYXJlIHN1cHBvc2VkIHRvIGJlIGd1YXJh bnRlZWQgYnkgdGhlIGRybSBtbSBhbGxvY2F0b3IgLSBhbGwgdGhvc2UgCmJhbGxvb25lZCBvdXQg c3BhY2VzIGFyZSBtYXJrZWQgYXMgcmVzZXJ2ZWQuCj4KPiBBbmQgcHJvYmFibHkgR1BVIHJlc2V0 IHNob3VsZCBhbHNvIGJlIGRpc2FsbG93ZWQgZm9yIHZHUFUgaW5zdGFuY2VzPwo+Cj4+ICAgICAg IGlmICghSEFTX0xMQyhkZXYpKQo+PiAgICAgICAgICAgZGV2X3ByaXYtPmd0dC5iYXNlLm1tLmNv bG9yX2FkanVzdCA9IGk5MTVfZ3R0X2NvbG9yX2FkanVzdDsKPj4KPj4gQEAgLTE3MDIsOSArMTcx Myw2IEBAIGludCBpOTE1X2dlbV9zZXR1cF9nbG9iYWxfZ3R0KHN0cnVjdCBkcm1fZGV2aWNlCj4+ ICpkZXYsCj4+ICAgICAgICAgICB2bWEtPmJvdW5kIHw9IEdMT0JBTF9CSU5EOwo+PiAgICAgICB9 Cj4+Cj4+IC0gICAgZGV2X3ByaXYtPmd0dC5iYXNlLnN0YXJ0ID0gc3RhcnQ7Cj4+IC0gICAgZGV2 X3ByaXYtPmd0dC5iYXNlLnRvdGFsID0gZW5kIC0gc3RhcnQ7Cj4+IC0KPj4gICAgICAgLyogQ2xl YXIgYW55IG5vbi1wcmVhbGxvY2F0ZWQgYmxvY2tzICovCj4+ICAgICAgIGRybV9tbV9mb3JfZWFj aF9ob2xlKGVudHJ5LCAmZ2d0dF92bS0+bW0sIGhvbGVfc3RhcnQsIGhvbGVfZW5kKSB7Cj4+ICAg ICAgICAgICBEUk1fREVCVUdfS01TKCJjbGVhcmluZyB1bnVzZWQgR1RUIHNwYWNlOiBbJWx4LCAl bHhdXG4iLAo+PiBAQCAtMTc1Niw2ICsxNzY0LDkgQEAgdm9pZCBpOTE1X2dsb2JhbF9ndHRfY2xl YW51cChzdHJ1Y3QgZHJtX2RldmljZQo+PiAqZGV2KQo+PiAgICAgICB9Cj4+Cj4+ICAgICAgIGlm IChkcm1fbW1faW5pdGlhbGl6ZWQoJnZtLT5tbSkpIHsKPj4gKyAgICAgICAgaWYgKGludGVsX3Zn cHVfYWN0aXZlKGRldikpCj4+ICsgICAgICAgICAgICBpbnRlbF92Z3RfZGViYWxsb29uKCk7Cj4+ ICsKPj4gICAgICAgICAgIGRybV9tbV90YWtlZG93bigmdm0tPm1tKTsKPj4gICAgICAgICAgIGxp c3RfZGVsKCZ2bS0+Z2xvYmFsX2xpbmspOwo+PiAgICAgICB9Cj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdmdwdS5jCj4+IGluZGV4IDNmNmI3OTcuLmZmNWZiYTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdmdwdS5jCj4+IEBAIC04MywzICs4MywxNTIgQEAgdm9pZCBpOTE1X2NoZWNrX3ZncHUo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAgICAgZGV2X3ByaXYtPnZncHUuYWN0aXZlID0g dHJ1ZTsKPj4gICAgICAgRFJNX0lORk8oIlZpcnR1YWwgR1BVIGZvciBJbnRlbCBHVlQtZyBkZXRl Y3RlZC5cbiIpOwo+PiAgIH0KPj4gKwo+PiArc3RydWN0IF9iYWxsb29uX2luZm9fIHsKPj4gKyAg ICAvKgo+PiArICAgICAqIFRoZXJlIGFyZSB1cCB0byAyIHJlZ2lvbnMgcGVyIGxvdy9oaWdoIGdy YXBoaWMgbWVtb3J5IHRoYXQKPj4gKyAgICAgKiBtaWdodCBiZSBiYWxsb29uZWQuIEhlcmUsIGlu ZGV4IDAvMSBpcyBmb3IgbG93Cj4+ICsgICAgICogZ3JhcGhpYyBtZW1vcnksIDIvMyBmb3IgaGln aCBncmFwaGljIG1lbW9yeS4KPj4gKyAgICAgKi8KPj4gKyAgICBzdHJ1Y3QgZHJtX21tX25vZGUg c3BhY2VbNF07Cj4+ICt9IGJsX2luZm87Cj4KPiBUaGlzIHNob3VsZCBiZSBzdGF0aWMgSSB0aGlu ay4KWWVzLCB5b3UgYXJlIHJpZ2h0Lgo+Cj4+ICsvKioKPj4gKyAqIGludGVsX3ZndF9kZWJhbGxv b24gLSBkZWJhbGxvb24gcmVzZXJ2ZWQgZ3JhcGhpY3MgYWRkcmVzcyB0cnVua3MKPj4gKyAqCj4+ ICsgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBkZWFsbG9jYXRlIHRoZSBiYWxsb29uZWQt b3V0IGdyYXBoaWMKPj4gbWVtb3J5LCB3aGVuCj4+ICsgKiBkcml2ZXIgaXMgdW5sb2FkZWQgb3Ig d2hlbiBiYWxsb29uaW5nIGZhaWxzLgo+PiArICovCj4+ICt2b2lkIGludGVsX3ZndF9kZWJhbGxv b24odm9pZCkKPj4gK3sKPj4gKyAgICBpbnQgaTsKPj4gKwo+PiArICAgIERSTV9JTkZPKCJWR1Qg ZGViYWxsb29uLlxuIik7Cj4KPiBXb3VsZCBkZWJ1ZyBiZSBtb3JlIGFwcHJvcHJpYXRlPyBJIGRv bid0IHNlZSBtdWNoIHZhbHVlIG9mIHNheWluZyB0aGlzCj4gb24gZHJpdmVyIHVubG9hZCAtIGl0 J3Mgbm90IHRoYXQgaXQgaXMgb3B0aW9uYWwgYXQgdGhpcyBwb2ludC4KT0suIDopCj4KPiBBbHNv IGZvciBhbGwgbG9nZ2luZywgaXMgaW50ZW5kZWQgaHVtYW4gcmVhZGFibGUgbmFtZSBWR1Qgb3Ig dkdUPyBJZiB0aGUKPiBsYXR0ZXIgaXQgd291bGQgYmUgbmljZXIgdG8gbG9nIGl0IGluIHRoYXQg Zm9ybS4KV2VsbCwgSSBwcmVmZXIgVkdULiA6KQo+Cj4+ICsKPj4gKyAgICBmb3IgKGkgPSAwOyBp IDwgNDsgaSsrKSB7Cj4+ICsgICAgICAgIGlmIChibF9pbmZvLnNwYWNlW2ldLmFsbG9jYXRlZCkK Pj4gKyAgICAgICAgICAgIGRybV9tbV9yZW1vdmVfbm9kZSgmYmxfaW5mby5zcGFjZVtpXSk7Cj4+ ICsgICAgfQo+PiArCj4+ICsgICAgbWVtc2V0KCZibF9pbmZvLCAwLCBzaXplb2YoYmxfaW5mbykp Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHZndF9iYWxsb29uX3NwYWNlKHN0cnVjdCBkcm1f bW0gKm1tLAo+PiArICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCj4+ ICsgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5k KQo+PiArewo+PiArICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSA9IGVuZCAtIHN0YXJ0Owo+PiArCj4+ ICsgICAgaWYgKHN0YXJ0ID09IGVuZCkKPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsK Pj4gKyAgICBEUk1fSU5GTygiYmFsbG9vbiBzcGFjZTogcmFuZ2UgWyAweCVseCAtIDB4JWx4IF0g JWx1IEtCLlxuIiwKPj4gKyAgICAgICAgIHN0YXJ0LCBlbmQsIHNpemUgLyAxMDI0KTsKPgo+IEtp QiA/Clllcy4gVGhhbmtzLiA6KQo+Cj4+ICsgICAgbm9kZS0+c3RhcnQgPSBzdGFydDsKPj4gKyAg ICBub2RlLT5zaXplID0gc2l6ZTsKPj4gKwo+PiArICAgIHJldHVybiBkcm1fbW1fcmVzZXJ2ZV9u b2RlKG1tLCBub2RlKTsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBpbnRlbF92Z3RfYmFsbG9v biAtIGJhbGxvb24gb3V0IHJlc2VydmVkIGdyYXBoaWNzIGFkZHJlc3MgdHJ1bmtzCj4+ICsgKiBA ZGV2OiBkcm0gZGV2aWNlCj4+ICsgKgo+PiArICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQg dGhlIGluaXRpYWxpemF0aW9uIHN0YWdlLCB0byBiYWxsb29uCj4+IG91dCB0aGUKPj4gKyAqIGdy YXBoaWMgYWRkcmVzcyBzcGFjZSBhbGxvY2F0ZWQgdG8gb3RoZXIgVk1zLCBieSBtYXJraW5nIHRo ZXNlCj4+IHNwYWNlcyBhcwo+PiArICogcmVzZXJ2ZWQuCj4+ICsgKgo+PiArICogVGhlIGJhbGxv b25pbmcgcmVsYXRlZCBrbm93bGVkZ2VzKHN0YXJ0aW5nIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhl Cj4+IGxvdy9oaWdoCj4KPiBzL2tub3dsZWRnZXNcKC9rbm93bGVkZ2UgLwpHb3QgaXQuCj4KPj4g KyAqIGdyYXBoaWMgbWVtb3J5KSBhcmUgZGVwaWN0ZWQgaW4gdGhlIHZndF9pZiBzdHJ1Y3R1cmUg aW4gYSByZXNlcnZlZAo+PiBNTUlPCj4+ICsgKiByYW5nZS4KPj4gKyAqCj4+ICsgKiBSZXR1cm5z Ogo+PiArICogemVybyBvbiBzdWNjZXNzLCBub24temVybyBpZiBjb25maWd1cmF0aW9uIGludmFs aWQgb3IgYmFsbG9vbmluZwo+PiBmYWlsZWQKPj4gKyAqLwo+PiAraW50IGludGVsX3ZndF9iYWxs b29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsgICAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+PiArICAgIHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKmdndHRfdm0gPSAmZGV2X3ByaXYtPmd0dC5iYXNlOwo+PiArICAgIHVuc2ln bmVkIGxvbmcgZ2d0dF92bV9lbmQgPSBnZ3R0X3ZtLT5zdGFydCArIGdndHRfdm0tPnRvdGFsOwo+ PiArCj4+ICsgICAgdW5zaWduZWQgbG9uZyBsb3dfZ21fYmFzZSwgbG93X2dtX3NpemUsIGxvd19n bV9lbmQ7Cj4+ICsgICAgdW5zaWduZWQgbG9uZyBoaWdoX2dtX2Jhc2UsIGhpZ2hfZ21fc2l6ZSwg aGlnaF9nbV9lbmQ7Cj4+ICsgICAgaW50IHJldDsKPj4gKwo+PiArICAgIGxvd19nbV9iYXNlID0g STkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5sb3dfZ21hZHIubXlfYmFzZSkpOwo+PiArICAg IGxvd19nbV9zaXplID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5sb3dfZ21hZHIubXlf c2l6ZSkpOwo+PiArICAgIGhpZ2hfZ21fYmFzZSA9IEk5MTVfUkVBRCh2Z3RpZl9yZWcoYXZhaWxf cnMuaGlnaF9nbWFkci5teV9iYXNlKSk7Cj4+ICsgICAgaGlnaF9nbV9zaXplID0gSTkxNV9SRUFE KHZndGlmX3JlZyhhdmFpbF9ycy5oaWdoX2dtYWRyLm15X3NpemUpKTsKPgo+IEdldCByaWQgb2Yg bXlfIHByZWZpeCA/Ck9LLiBXaWxsIGRvLiA6KQo+Cj4+ICsKPj4gKyAgICBsb3dfZ21fZW5kID0g bG93X2dtX2Jhc2UgKyBsb3dfZ21fc2l6ZTsKPj4gKyAgICBoaWdoX2dtX2VuZCA9IGhpZ2hfZ21f YmFzZSArIGhpZ2hfZ21fc2l6ZTsKPj4gKwo+PiArICAgIERSTV9JTkZPKCJWR1QgYmFsbG9vbmlu ZyBjb25maWd1cmF0aW9uOlxuIik7Cj4+ICsgICAgRFJNX0lORk8oIkxvdyBncmFwaGljIG1lbW9y eTogYmFzZSAweCVseCBzaXplICVsZEtCXG4iLAo+PiArICAgICAgICAgbG93X2dtX2Jhc2UsIGxv d19nbV9zaXplIC8gMTAyNCk7Cj4+ICsgICAgRFJNX0lORk8oIkhpZ2ggZ3JhcGhpYyBtZW1vcnk6 IGJhc2UgMHglbHggc2l6ZSAlbGRLQlxuIiwKPj4gKyAgICAgICAgIGhpZ2hfZ21fYmFzZSwgaGln aF9nbV9zaXplIC8gMTAyNCk7Cj4+ICsKPj4gKyAgICBpZiAobG93X2dtX2Jhc2UgPCBnZ3R0X3Zt LT5zdGFydAo+PiArICAgICAgICB8fCBsb3dfZ21fZW5kID4gZGV2X3ByaXYtPmd0dC5tYXBwYWJs ZV9lbmQKPj4gKyAgICAgICAgfHwgaGlnaF9nbV9iYXNlIDwgZGV2X3ByaXYtPmd0dC5tYXBwYWJs ZV9lbmQKPj4gKyAgICAgICAgfHwgaGlnaF9nbV9lbmQgPiBnZ3R0X3ZtX2VuZCkgewo+PiArICAg ICAgICBEUk1fRVJST1IoIkludmFsaWQgYmFsbG9vbmluZyBjb25maWd1cmF0aW9uIVxuIik7Cj4+ ICsgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgIH0KPj4gKwo+PiArICAgIG1lbXNldCgm YmxfaW5mbywgMCwgc2l6ZW9mKGJsX2luZm8pKTsKPgo+IElmIGJsX2luZm8gaXMgc3RhdGljIHRo ZW4geW91IGRvbid0IG5lZWQgdGhpcyBtZW1zZXQ/Ck9oLCB5ZXMuIDopCj4KPj4gKyAgICAvKiBI aWdoIGdyYXBoaWMgbWVtb3J5IGJhbGxvb25pbmcgKi8KPj4gKyAgICBpZiAoaGlnaF9nbV9iYXNl ID4gZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9lbmQpIHsKPj4gKyAgICAgICAgcmV0ID0gdmd0X2Jh bGxvb25fc3BhY2UoJmdndHRfdm0tPm1tLAo+PiArICAgICAgICAgICAgICAgICAgICAmYmxfaW5m by5zcGFjZVsyXSwKPj4gKyAgICAgICAgICAgICAgICAgICAgZGV2X3ByaXYtPmd0dC5tYXBwYWJs ZV9lbmQsCj4+ICsgICAgICAgICAgICAgICAgICAgIGhpZ2hfZ21fYmFzZSk7Cj4+ICsKPj4gKyAg ICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+PiArICAgIH0KPj4gKwo+ PiArICAgIC8qCj4+ICsgICAgICogTm8gbmVlZCB0byBwYXJ0aXRpb24gb3V0IHRoZSBsYXN0IHBo eXNpY2FsIHBhZ2UsCj4+ICsgICAgICogYmVjYXVzZSBpdCBpcyByZXNlcnZlZCB0byB0aGUgZ3Vh cmQgcGFnZS4KPj4gKyAgICAgKi8KPj4gKyAgICBpZiAoaGlnaF9nbV9lbmQgPCBnZ3R0X3ZtX2Vu ZCAtIFBBR0VfU0laRSkgewo+PiArICAgICAgICByZXQgPSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0 dF92bS0+bW0sCj4+ICsgICAgICAgICAgICAgICAgICAgICZibF9pbmZvLnNwYWNlWzNdLAo+PiAr ICAgICAgICAgICAgICAgICAgICBoaWdoX2dtX2VuZCwKPj4gKyAgICAgICAgICAgICAgICAgICAg Z2d0dF92bV9lbmQgLSBQQUdFX1NJWkUpOwo+PiArICAgICAgICBpZiAocmV0KQo+PiArICAgICAg ICAgICAgZ290byBlcnI7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgLyogTG93IGdyYXBoaWMgbWVt b3J5IGJhbGxvb25pbmcgKi8KPj4gKyAgICBpZiAobG93X2dtX2Jhc2UgPiBnZ3R0X3ZtLT5zdGFy dCkgewo+PiArICAgICAgICByZXQgPSB2Z3RfYmFsbG9vbl9zcGFjZSgmZ2d0dF92bS0+bW0sCj4+ ICsgICAgICAgICAgICAgICAgICAgICZibF9pbmZvLnNwYWNlWzBdLAo+PiArICAgICAgICAgICAg ICAgICAgICBnZ3R0X3ZtLT5zdGFydCwgbG93X2dtX2Jhc2UpOwo+PiArCj4+ICsgICAgICAgIGlm IChyZXQpCj4+ICsgICAgICAgICAgICBnb3RvIGVycjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBp ZiAobG93X2dtX2VuZCA8IGRldl9wcml2LT5ndHQubWFwcGFibGVfZW5kKSB7Cj4+ICsgICAgICAg IHJldCA9IHZndF9iYWxsb29uX3NwYWNlKCZnZ3R0X3ZtLT5tbSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgJmJsX2luZm8uc3BhY2VbMV0sCj4+ICsgICAgICAgICAgICAgICAgICAgIGxvd19nbV9l bmQsCj4+ICsgICAgICAgICAgICAgICAgICAgIGRldl9wcml2LT5ndHQubWFwcGFibGVfZW5kKTsK Pj4gKwo+PiArICAgICAgICBpZiAocmV0KQo+PiArICAgICAgICAgICAgZ290byBlcnI7Cj4+ICsg ICAgfQo+Cj4gT2theSwgSSd2ZSBmaWd1cmVkIGl0IG91dC4gOikgSSBzdXBwb3NlIGdvaW5nIGJh Y2sgdG8gcGF0Y2ggMSwgd2hlcmUgaXQKPiBzYXlzICJFYWNoIFZNIGNhbiBvbmx5IGhhdmUgb25l IHBvcnRpb24gb2YgY29udGludW91cyBhcmVhIGZvciBub3ciLAo+IHdpdGggdGhlIGVtcGhhc2lz IG9uIF9vbmVfLiBUaGF0IHRocmV3IG1lIG9mZiB0aGlua2luZyB5b3UgaGF2ZSB0d28KPiAiYmFs bG9vbnMiIG1lYW5pbmcgZm9yYmlkZGVuIGFyZWFzLiBBbmQgdGhlbiB3aXRoIGxvdyBhbmQgaGln aCBuYW1pbmcgSQo+IGdvdCB0aGUgd3JvbmcgaWRlYSB0aGF0IG9uZSBiYWxsb29uIG1hcmtzIHRo ZSBib3R0b20gaW5hY2Nlc3NpYmxlIHBhcnQsCj4gYW5kIHRoZSBvdGhlciB0b3AuIEkgZGlkbid0 IGZpZ3VyZSBvdXQgdGhlIHdob2xlIGxvdyA9PSBtYXBwYWJsZSwgaGlnaAo+ID09IG5vbi1tYXBw YWJsZSBzcGxpdC4gSSBzdXBwb3NlIGl0IHdhcyBteSBpbmV4cGVyaWVuY2UsIGJ1dCBpZiB5b3Ug Y2FuCj4gdGhpbmsgb2YgYSB3YXkgb24gaG93IHRvIGltcHJvdmUgdGhlIGNvbW1lbnQsIGV2ZW4g QVNDSUkgYXJ0IHdvdWxkIGJlCj4gdmVyeSBuaWNlIGlmIHBvc3NpYmxlLgpIYWguIEd1ZXNzIEkg bmVlZCBhIGJldHRlciBjb21tZW50cyBhYm92ZS4gTGV0IG1lIHRoaW5rIGhvdyB0byBvcmdhbml6 ZS4gIDopCj4KPiBBY3R1YWxseSBiYWxsb29uaW5nIGluIHRoZSBmaXJzdCBwbGFjZSBjb25mdXNl cyBtZSBiZWNhdXNlIEkgdGhvdWdodAo+IHByaW9yIHVzZSBmb3IgdGhhdCBpbiB2aXJ0dWFsaXNh dGlvbiB3YXMgZm9yIG1lbW9yeSB3aGljaCBjYW4gc2hyaW5rIGFuZAo+IGdyb3cgYXQgcnVudGlt ZS4gRGlkIEkgZ2V0IHRoYXQgd3Jvbmc/Cj4KV2VsbCwgZm9yIG1lbW9yeSB2aXJ0dWFsaXphdGlv biwgdGhlIHdvcmQgJ2JhbGxvb25pbmcnIGRvZXMgbWVhbiB0aGlzIC0gCml0IGNhbiBzaHJpbmsg YW5kIGdyb3cuCllldCBmb3Igb3VyIEludGVsIEdWVC1nLCB0aGUgJ2JhbGxvb25pbmcnIGlzIHVz ZWQsIHRvIGVtcGhhc2lzIHRoYXQgd2UgCmFyZSBub3QganVzdCBwYXJ0aXRpb25pbmcgdGhlIEdN IHNwYWNlIHRvIGVhY2ggdmdwdSwgdGhlIHZncHUgY2FuIGFsc28gCnBlcmNlaXZlIGl0cyBHTSBh ZGRyZXNzIHNwYWNlIGFzIHN0YXJ0aW5nIGZyb20gemVybyhhbHRob3VnaCB0aGUgdXNhYmxlIApH TSBzcGFjZXMgbWF5IHByb2JhYmx5IG5vdCkuCkJ5IG5vdywgd2UgZG8gbm90IGdyb3cvc2hyaW5r LiA6KQoKPj4gKyAgICBEUk1fSU5GTygiVkdUIGJhbGxvb24gc3VjY2Vzc2Z1bGx5XG4iKTsKPj4g KyAgICByZXR1cm4gMDsKPj4gKwo+PiArZXJyOgo+PiArICAgIERSTV9FUlJPUigiVkdUIGJhbGxv b24gZmFpbFxuIik7Cj4+ICsgICAgaW50ZWxfdmd0X2RlYmFsbG9vbigpOwo+PiArICAgIHJldHVy biByZXQ7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zn cHUuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdmdwdS5oCj4+IGluZGV4IDVmNDFk MDFjLi5mNTM4YjE4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Zn cHUuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZncHUuaAo+PiBAQCAtODEs NSArODEsNyBAQCBzdHJ1Y3Qgdmd0X2lmIHsKPj4gICAgICAgKFZHVF9QVklORk9fUEFHRSArIChs b25nKSYoKHN0cnVjdCB2Z3RfaWYgKikgTlVMTCktPngpCj4+Cj4+ICAgZXh0ZXJuIHZvaWQgaTkx NV9jaGVja192Z3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiArZXh0ZXJuIGludCBpbnRl bF92Z3RfYmFsbG9vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPj4gK2V4dGVybiB2b2lkIGlu dGVsX3ZndF9kZWJhbGxvb24odm9pZCk7Cj4+Cj4+ICAgI2VuZGlmIC8qIF9JOTE1X1ZHUFVfSF8g Ki8KPj4KPgo+IFJlZ2FyZHMsCj4KPiBUdnJ0a28KPgo+Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==