From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v4 09/24] drm/i915: Track GEN6 page table usage Date: Fri, 20 Feb 2015 18:41:09 +0200 Message-ID: <878ufszgbe.fsf@gaia.fi.intel.com> References: <1418922621-25818-1-git-send-email-michel.thierry@intel.com> <1421946106-7921-1-git-send-email-michel.thierry@intel.com> <1421946106-7921-10-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 D78E66E6EA for ; Fri, 20 Feb 2015 08:41:19 -0800 (PST) In-Reply-To: <1421946106-7921-10-git-send-email-michel.thierry@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Michel Thierry , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org TWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gd3JpdGVzOgoKPiBGcm9t OiBCZW4gV2lkYXdza3kgPGJlbmphbWluLndpZGF3c2t5QGludGVsLmNvbT4KPgo+IEluc3RlYWQg b2YgaW1wbGVtZW50aW5nIHRoZSBmdWxsIHRyYWNraW5nICsgZHluYW1pYyBhbGxvY2F0aW9uLCB0 aGlzCj4gcGF0Y2ggZG9lcyBhIGJpdCBsZXNzIHRoYW4gaGFsZiBvZiB0aGUgd29yaywgYnkgdHJh Y2tpbmcgYW5kIHdhcm5pbmcgb24KPiB1bmV4cGVjdGVkIGNvbmRpdGlvbnMuIFRoZSB0cmFja2lu ZyBpdHNlbGYgZm9sbG93cyB3aGljaCBQVEVzIHdpdGhpbiBhCj4gcGFnZSB0YWJsZSBhcmUgY3Vy cmVudGx5IGJlaW5nIHVzZWQgZm9yIG9iamVjdHMuIFRoZSBuZXh0IHBhdGNoIHdpbGwKPiBtb2Rp ZnkgdGhpcyB0byBhY3R1YWxseSBhbGxvY2F0ZSB0aGUgcGFnZSB0YWJsZXMgb25seSB3aGVuIG5l Y2Vzc2FyeS4KPgo+IFdpdGggdGhlIGN1cnJlbnQgcGF0Y2ggdGhlcmUgaXNuJ3QgbXVjaCBpbiB0 aGUgd2F5IG9mIG1ha2luZyBhIGdlbgo+IGFnbm9zdGljIHJhbmdlIGFsbG9jYXRpb24gZnVuY3Rp b24uIEhvd2V2ZXIsIGluIHRoZSBuZXh0IHBhdGNoIHdlJ2xsIGFkZAo+IG1vcmUgc3BlY2lmaWNp dHkgd2hpY2ggbWFrZXMgaGF2aW5nIHNlcGFyYXRlIGZ1bmN0aW9ucyBhIGJpdCBlYXNpZXIgdG8K PiBtYW5hZ2UuCj4KPiBPbmUgaW1wb3J0YW50IGNoYW5nZSBpbnRyb2R1Y2VkIGhlcmUgaXMgdGhh dCBETUEgbWFwcGluZ3MgYXJlCj4gY3JlYXRlZC9kZXN0cm95ZWQgYXQgdGhlIHNhbWUgcGFnZSBk aXJlY3Rvcmllcy90YWJsZXMgYXJlCj4gYWxsb2NhdGVkL2RlYWxsb2NhdGVkLgo+Cj4gTm90aWNl IHRoYXQgYWxpYXNpbmcgUFBHVFQgaXMgbm90IG1hbmFnZWQgaGVyZS4gVGhlIHBhdGNoIHdoaWNo IGFjdHVhbGx5Cj4gYmVnaW5zIGR5bmFtaWMgYWxsb2NhdGlvbi90ZWFyZG93biBleHBsYWlucyB0 aGUgcmVhc29uaW5nIGZvciB0aGlzLgo+Cj4gdjI6IHMvcGRwLnBhZ2VfZGlyZWN0b3J5L3BkcC5w YWdlX2RpcmVjdG9yeXMKPiBNYWtlIGEgc2NyYXRjaCBwYWdlIGFsbG9jYXRpb24gaGVscGVyCj4K PiB2MzogUmViYXNlIGFuZCBleHBhbmQgY29tbWl0IG1lc3NhZ2UuCj4KPiB2NDogQWxsb2NhdGUg cmVxdWlyZWQgcGFnZXRhYmxlcyBvbmx5IHdoZW4gaXQgaXMgbmVlZGVkLCBfYmluZF90b192bQo+ IGluc3RlYWQgb2YgYmluZF92bWEgKERhbmllbCkuCj4KPiB2NTogUmViYXNlZCB0byByZW1vdmUg dGhlIHVubmVjZXNzYXJ5IG5vaXNlIGluIHRoZSBkaWZmLCBhbHNvOgo+ICAtIFBERSBtYXNrIGlz IEdFTiBhZ25vc3RpYywgcmVuYW1lZCBHRU42X1BERV9NQVNLIHRvIEk5MTVfUERFX01BU0suCj4g IC0gUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGVja3MgaW4gZ2VuNl9hbGxvY192YV9yYW5nZS4KPiAg LSBDaGFuZ2VkIG1hcC91bm1hcF9weF9zaW5nbGUgbWFjcm9zIHRvIHVzZSBkbWEgZnVuY3Rpb25z IGRpcmVjdGx5IGFuZAo+ICAgIGJlIHBhcnQgb2YgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGlu c3RlYWQuCj4gIC0gTW92ZWQgZHJtX2RldmljZSBwbHVtYmluZyB0aHJvdWdoIHBhZ2UgdGFibGVz IG9wZXJhdGlvbiB0byBpdHMgb3duCj4gICAgcGF0Y2guCj4gIC0gTW92ZWQgYWxsb2NhdGUvdGVh cmRvd25fdmFfcmFuZ2UgY2FsbHMgdW50aWwgdGhleSBhcmUgZnVsbHkKPiAgICBpbXBsZW1lbnRl ZCAoaW4gc3Vic2VxdWVudCBwYXRjaCkuCj4gIC0gTWVyZ2VkIHB0IGFuZCBzY3JhdGNoX3B0IHVu bWFwX2FuZF9mcmVlIHBhdGguCj4gIC0gTW92ZWQgc2NyYXRjaCBwYWdlIGFsbG9jYXRvciBoZWxw ZXIgdG8gdGhlIHBhdGNoIHRoYXQgd2lsbCB1c2UgaXQuCj4KPiB2NjogUmVkdWNlIGNvbXBsZXhp dHkgYnkgbm90IHRlYXJpbmcgZG93biBwYWdldGFibGVzIGR5bmFtaWNhbGx5LCB0aGUKPiBzYW1l IGNhbiBiZSBhY2hpZXZlZCB3aGlsZSBmcmVlaW5nIGVtcHR5IHZtcy4gKERhbmllbCkKPgo+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+Cj4gU2lnbmVkLW9mZi1ieTogQmVuIFdp ZGF3c2t5IDxiZW5AYndpZGF3c2submV0Pgo+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5 IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5jb20+ICh2MyspCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jIHwgMTkxICsrKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCB8ICA3NSArKysr KysrKysrKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCA2MCBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggZTJiY2Qx MC4uNzYwNTg1ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTI3 NCwyOSArMjc0LDg4IEBAIHN0YXRpYyBnZW42X2d0dF9wdGVfdCBpcmlzX3B0ZV9lbmNvZGUoZG1h X2FkZHJfdCBhZGRyLAo+ICAJcmV0dXJuIHB0ZTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdW5t YXBfYW5kX2ZyZWVfcHQoc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSAqcHQsIHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gKyNkZWZpbmUgaTkxNV9kbWFfdW5tYXBfc2luZ2xlKHB4LCBkZXYp IFwKPiArCV9faTkxNV9kbWFfdW5tYXBfc2luZ2xlKChweCktPmRhZGRyLCBkZXYpCj4gKwo+ICtz dGF0aWMgaW5saW5lIHZvaWQgX19pOTE1X2RtYV91bm1hcF9zaW5nbGUoZG1hX2FkZHJfdCBkYWRk ciwKPiArCQkJCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNl ICpkZXZpY2UgPSAmZGV2LT5wZGV2LT5kZXY7Cj4gKwo+ICsJZG1hX3VubWFwX3BhZ2UoZGV2aWNl LCBkYWRkciwgNDA5NiwgUENJX0RNQV9CSURJUkVDVElPTkFMKTsKPiArfQo+ICsKPiArLyoqCj4g KyAqIGk5MTVfZG1hX21hcF9weF9zaW5nbGUoKSAtIENyZWF0ZSBhIGRtYSBtYXBwaW5nIGZvciBh IHBhZ2UgdGFibGUvZGlyL2V0Yy4KPiArICogQHB4OgkJUGFnZSB0YWJsZS9kaXIvZXRjIHRvIGdl dCBhIERNQSBtYXAgZm9yCj4gKyAqIEBkZXY6CWRybSBkZXZpY2UKPiArICoKPiArICogUGFnZSB0 YWJsZSBhbGxvY2F0aW9ucyBhcmUgdW5pZmllZCBhY3Jvc3MgYWxsIGdlbnMuIFRoZXkgYWx3YXlz IHJlcXVpcmUgYQo+ICsgKiBzaW5nbGUgNGsgYWxsb2NhdGlvbiwgYXMgd2VsbCBhcyBhIERNQSBt YXBwaW5nLiBJZiB3ZSBrZWVwIHRoZSBzdHJ1Y3RzCj4gKyAqIHN5bW1ldHJpYyBoZXJlLCB0aGUg c2ltcGxlIG1hY3JvIGNvdmVycyB1cyBmb3IgZXZlcnkgcGFnZSB0YWJsZSB0eXBlLgo+ICsgKgo+ ICsgKiBSZXR1cm46IDAgaWYgc3VjY2Vzcy4KPiArICovCj4gKyNkZWZpbmUgaTkxNV9kbWFfbWFw X3B4X3NpbmdsZShweCwgZGV2KSBcCj4gKwlpOTE1X2RtYV9tYXBfcGFnZV9zaW5nbGUoKHB4KS0+ cGFnZSwgKGRldiksICYocHgpLT5kYWRkcikKPiArCgpJZiB0aGlzIGlzIHN5bW1ldHJpY2FsIHRv IGk5MTVfZG1hX3VubWFwX3NpbmdsZSgpIGlzIHRoZSBfcHhfIG5lZWRlZD8KCj4gK3N0YXRpYyBp bmxpbmUgaW50IGk5MTVfZG1hX21hcF9wYWdlX3NpbmdsZShzdHJ1Y3QgcGFnZSAqcGFnZSwKPiAr CQkJCQkgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJCSAgIGRtYV9hZGRyX3QgKmRh ZGRyKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSAmZGV2LT5wZGV2LT5kZXY7Cj4g Kwo+ICsJKmRhZGRyID0gZG1hX21hcF9wYWdlKGRldmljZSwgcGFnZSwgMCwgNDA5NiwgUENJX0RN QV9CSURJUkVDVElPTkFMKTsKPiArCXJldHVybiBkbWFfbWFwcGluZ19lcnJvcihkZXZpY2UsICpk YWRkcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHVubWFwX2FuZF9mcmVlX3B0KHN0cnVjdCBp OTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0LAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgewo+ICAJaWYgKFdBUk5fT04oIXB0LT5wYWdlKSkKPiAgCQlyZXR1cm47Cj4gKwo+ ICsJaTkxNV9kbWFfdW5tYXBfc2luZ2xlKHB0LCBkZXYpOwo+ICAJX19mcmVlX3BhZ2UocHQtPnBh Z2UpOwo+ICsJa2ZyZWUocHQtPnVzZWRfcHRlcyk7Cj4gIAlrZnJlZShwdCk7Cj4gIH0KPiAgCj4g IHN0YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICphbGxvY19wdF9zaW5nbGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRy eSAqcHQ7Cj4gKwljb25zdCBzaXplX3QgY291bnQgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4 ID8KPiArCQlHRU44X1BURVNfUEVSX1BBR0UgOiBJOTE1X1BQR1RUX1BUX0VOVFJJRVM7Cj4gKwlp bnQgcmV0ID0gLUVOT01FTTsKPiAgCj4gIAlwdCA9IGt6YWxsb2Moc2l6ZW9mKCpwdCksIEdGUF9L RVJORUwpOwo+ICAJaWYgKCFwdCkKPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4g KwlwdC0+dXNlZF9wdGVzID0ga2NhbGxvYyhCSVRTX1RPX0xPTkdTKGNvdW50KSwgc2l6ZW9mKCpw dC0+dXNlZF9wdGVzKSwKPiArCQkJCUdGUF9LRVJORUwpOwo+ICsKPiArCWlmICghcHQtPnVzZWRf cHRlcykKPiArCQlnb3RvIGZhaWxfYml0bWFwOwo+ICsKPiAgCXB0LT5wYWdlID0gYWxsb2NfcGFn ZShHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7Cj4gLQlpZiAoIXB0LT5wYWdlKSB7Cj4gLQkJa2Zy ZWUocHQpOwo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+IC0JfQo+ICsJaWYgKCFwdC0+ cGFnZSkKPiArCQlnb3RvIGZhaWxfcGFnZTsKPiArCj4gKwlyZXQgPSBpOTE1X2RtYV9tYXBfcHhf c2luZ2xlKHB0LCBkZXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZhaWxfZG1hOwo+ICAKPiAg CXJldHVybiBwdDsKPiArCj4gK2ZhaWxfZG1hOgo+ICsJX19mcmVlX3BhZ2UocHQtPnBhZ2UpOwo+ ICtmYWlsX3BhZ2U6Cj4gKwlrZnJlZShwdC0+dXNlZF9wdGVzKTsKPiArZmFpbF9iaXRtYXA6Cj4g KwlrZnJlZShwdCk7Cj4gKwo+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgfQo+ICAKPiAgLyoq Cj4gQEAgLTgzNiwyNiArODk1LDM2IEBAIHN0YXRpYyB2b2lkIGdlbjZfZHVtcF9wcGd0dChzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCX0KPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgZ2VuNl93cml0ZV9wZGVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCkKPiArLyogV3JpdGUgcGRlIChpbmRleCkgZnJvbSB0aGUgcGFnZSBkaXJlY3RvcnkgQHBk IHRvIHRoZSBwYWdlIHRhYmxlIEBwdCAqLwo+ICtzdGF0aWMgdm9pZCBnZW42X3dyaXRlX3BkZXMo c3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50cnkgKnBkLAoKRm9yIG1lIGl0IHNlZW1zIHRo YXQgeW91IHdpbGwgd3JpdGUgb25seSBvbmUgcGRlIGVudHJ5IHNvIHMvcGRlcy9wZGUgPwoKPiAr CQkJICAgIGNvbnN0IGludCBwZGUsIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnB0KQo+ ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBwcGd0dC0+YmFzZS5k ZXYtPmRldl9wcml2YXRlOwo+IC0JZ2VuNl9ndHRfcHRlX3QgX19pb21lbSAqcGRfYWRkcjsKPiAt CXVpbnQzMl90IHBkX2VudHJ5Owo+IC0JaW50IGk7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQgPQo+ICsJCWNvbnRhaW5lcl9vZihwZCwgc3RydWN0IGk5MTVfaHdfcHBndHQsIHBkKTsK PiArCXUzMiBwZF9lbnRyeTsKPiAgCj4gLQlXQVJOX09OKHBwZ3R0LT5wZC5wZF9vZmZzZXQgJiAw eDNmKTsKPiAtCXBkX2FkZHIgPSAoZ2VuNl9ndHRfcHRlX3QgX19pb21lbSopZGV2X3ByaXYtPmd0 dC5nc20gKwo+IC0JCXBwZ3R0LT5wZC5wZF9vZmZzZXQgLyBzaXplb2YoZ2VuNl9ndHRfcHRlX3Qp Owo+IC0JZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRfZW50cmllczsgaSsrKSB7Cj4gLQkJ ZG1hX2FkZHJfdCBwdF9hZGRyOwo+ICsJcGRfZW50cnkgPSBHRU42X1BERV9BRERSX0VOQ09ERShw dC0+ZGFkZHIpOwo+ICsJcGRfZW50cnkgfD0gR0VONl9QREVfVkFMSUQ7Cj4gIAo+IC0JCXB0X2Fk ZHIgPSBwcGd0dC0+cGQucGFnZV90YWJsZXNbaV0tPmRhZGRyOwo+IC0JCXBkX2VudHJ5ID0gR0VO Nl9QREVfQUREUl9FTkNPREUocHRfYWRkcik7Cj4gLQkJcGRfZW50cnkgfD0gR0VONl9QREVfVkFM SUQ7Cj4gKwl3cml0ZWwocGRfZW50cnksIHBwZ3R0LT5wZF9hZGRyICsgcGRlKTsKPiAgCj4gLQkJ d3JpdGVsKHBkX2VudHJ5LCBwZF9hZGRyICsgaSk7Cj4gLQl9Cj4gLQlyZWFkbChwZF9hZGRyKTsK PiArCS8qIFhYWDogQ2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSB0aGUgd3JpdGUgY29tcGxldGVz IGlmIG5lY2Vzc2FyeSAqLwo+ICt9CgpNb3ZlIHRoaXMgY29tbWVudCBvbiB0b3Agb2YgdGhlIGZ1 bmN0aW9uIGFuZCBsaWZ0IHRoZSBYWFg6Cgo+ICsKPiArLyogV3JpdGUgYWxsIHRoZSBwYWdlIHRh YmxlcyBmb3VuZCBpbiB0aGUgcHBndHQgc3RydWN0dXJlIHRvIGluY3JlbWVudGluZyBwYWdlCj4g KyAqIGRpcmVjdG9yaWVzLiAqLwo+ICtzdGF0aWMgdm9pZCBnZW42X3dyaXRlX3BhZ2VfcmFuZ2Uo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJc3RydWN0IGk5MTVfcGFn ZV9kaXJlY3RvcnlfZW50cnkgKnBkLCB1aW50MzJfdCBzdGFydCwgdWludDMyX3QgbGVuZ3RoKQo+ ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdDsKPiArCXVpbnQzMl90IHBk ZSwgdGVtcDsKPiArCj4gKwlnZW42X2Zvcl9lYWNoX3BkZShwdCwgcGQsIHN0YXJ0LCBsZW5ndGgs IHRlbXAsIHBkZSkKPiArCQlnZW42X3dyaXRlX3BkZXMocGQsIHBkZSwgcHQpOwo+ICsKPiArCS8q IE1ha2Ugc3VyZSB3cml0ZSBpcyBjb21wbGV0ZSBiZWZvcmUgb3RoZXIgY29kZSBjYW4gdXNlIHRo aXMgcGFnZQo+ICsJICogdGFibGUuIEFsc28gcmVxdWlyZSBmb3IgV0MgbWFwcGVkIFBURXMgKi8K PiArCXJlYWRsKGRldl9wcml2LT5ndHQuZ3NtKTsKPiAgfQo+ICAKPiAgc3RhdGljIHVpbnQzMl90 IGdldF9wZF9vZmZzZXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+IEBAIC0xMDcxLDYg KzExNDAsMjggQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF91bm1hcF9wYWdlcyhzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQpCj4gIAkJCSAgICAgICA0MDk2LCBQQ0lfRE1BX0JJRElSRUNUSU9O QUwpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGdlbjZfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJCSAgICAgICB1aW50NjRfdCBzdGFydCwgdWludDY0 X3QgbGVuZ3RoKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICsJCQkJ Y29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gKwlzdHJ1Y3Qg aTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdDsKPiArCXVpbnQzMl90IHBkZSwgdGVtcDsKPiArCj4g KwlnZW42X2Zvcl9lYWNoX3BkZShwdCwgJnBwZ3R0LT5wZCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwg cGRlKSB7Cj4gKwkJREVDTEFSRV9CSVRNQVAodG1wX2JpdG1hcCwgSTkxNV9QUEdUVF9QVF9FTlRS SUVTKTsKPiArCj4gKwkJYml0bWFwX3plcm8odG1wX2JpdG1hcCwgSTkxNV9QUEdUVF9QVF9FTlRS SUVTKTsKPiArCQliaXRtYXBfc2V0KHRtcF9iaXRtYXAsIGdlbjZfcHRlX2luZGV4KHN0YXJ0KSwK PiArCQkJICAgZ2VuNl9wdGVfY291bnQoc3RhcnQsIGxlbmd0aCkpOwo+ICsKPiArCQliaXRtYXBf b3IocHQtPnVzZWRfcHRlcywgcHQtPnVzZWRfcHRlcywgdG1wX2JpdG1hcCwKPiArCQkJCUk5MTVf UFBHVFRfUFRfRU5UUklFUyk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0 YXRpYyB2b2lkIGdlbjZfcHBndHRfZnJlZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4g IHsKPiAgCWludCBpOwo+IEBAIC0xMTE3LDIwICsxMjA4LDI0IEBAIGFsbG9jOgo+ICAJCQkJCSAg ICAgICAwLCBkZXZfcHJpdi0+Z3R0LmJhc2UudG90YWwsCj4gIAkJCQkJICAgICAgIDApOwo+ICAJ CWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gKwkJCWdvdG8gZXJyX291dDsKPiAgCj4gIAkJ cmV0cmllZCA9IHRydWU7Cj4gIAkJZ290byBhbGxvYzsKPiAgCX0KPiAgCj4gIAlpZiAocmV0KQo+ IC0JCXJldHVybiByZXQ7Cj4gKwkJZ290byBlcnJfb3V0Owo+ICsKPiAgCj4gIAlpZiAocHBndHQt Pm5vZGUuc3RhcnQgPCBkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxlX2VuZCkKPiAgCQlEUk1fREVCVUco IkZvcmNlZCB0byB1c2UgYXBlcnR1cmUgZm9yIFBERXNcbiIpOwo+ICAKPiAgCXBwZ3R0LT5udW1f cGRfZW50cmllcyA9IEdFTjZfUFBHVFRfUERfRU5UUklFUzsKPiAgCXJldHVybiAwOwo+ICsKPiAr ZXJyX291dDoKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgZ2VuNl9wcGd0 dF9hbGxvYyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gQEAgLTExNTIsMzAgKzEyNDcs NiBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfYWxsb2Moc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9zZXR1 cF9wYWdlX3RhYmxlcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gLXsKPiAtCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7Cj4gLQlpbnQgaTsKPiAtCj4gLQlm b3IgKGkgPSAwOyBpIDwgcHBndHQtPm51bV9wZF9lbnRyaWVzOyBpKyspIHsKPiAtCQlzdHJ1Y3Qg cGFnZSAqcGFnZTsKPiAtCQlkbWFfYWRkcl90IHB0X2FkZHI7Cj4gLQo+IC0JCXBhZ2UgPSBwcGd0 dC0+cGQucGFnZV90YWJsZXNbaV0tPnBhZ2U7Cj4gLQkJcHRfYWRkciA9IHBjaV9tYXBfcGFnZShk ZXYtPnBkZXYsIHBhZ2UsIDAsIDQwOTYsCj4gLQkJCQkgICAgICAgUENJX0RNQV9CSURJUkVDVElP TkFMKTsKPiAtCj4gLQkJaWYgKHBjaV9kbWFfbWFwcGluZ19lcnJvcihkZXYtPnBkZXYsIHB0X2Fk ZHIpKSB7Cj4gLQkJCWdlbjZfcHBndHRfdW5tYXBfcGFnZXMocHBndHQpOwo+IC0JCQlyZXR1cm4g LUVJTzsKPiAtCQl9Cj4gLQo+IC0JCXBwZ3R0LT5wZC5wYWdlX3RhYmxlc1tpXS0+ZGFkZHIgPSBw dF9hZGRyOwo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICBzdGF0aWMgaW50IGdl bjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBwcGd0dC0+YmFzZS5kZXY7Cj4gQEAgLTExOTYsMTIgKzEyNjcs NyBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JcmV0ID0gZ2VuNl9wcGd0 dF9zZXR1cF9wYWdlX3RhYmxlcyhwcGd0dCk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJZ2VuNl9wcGd0 dF9mcmVlKHBwZ3R0KTsKPiAtCQlyZXR1cm4gcmV0Owo+IC0JfQo+IC0KPiArCXBwZ3R0LT5iYXNl LmFsbG9jYXRlX3ZhX3JhbmdlID0gZ2VuNl9hbGxvY192YV9yYW5nZTsKPiAgCXBwZ3R0LT5iYXNl LmNsZWFyX3JhbmdlID0gZ2VuNl9wcGd0dF9jbGVhcl9yYW5nZTsKPiAgCXBwZ3R0LT5iYXNlLmlu c2VydF9lbnRyaWVzID0gZ2VuNl9wcGd0dF9pbnNlcnRfZW50cmllczsKPiAgCXBwZ3R0LT5iYXNl LmNsZWFudXAgPSBnZW42X3BwZ3R0X2NsZWFudXA7Cj4gQEAgLTEyMTIsMTMgKzEyNzgsMTcgQEAg c3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ ICAJcHBndHQtPnBkLnBkX29mZnNldCA9Cj4gIAkJcHBndHQtPm5vZGUuc3RhcnQgLyBQQUdFX1NJ WkUgKiBzaXplb2YoZ2VuNl9ndHRfcHRlX3QpOwo+ICAKPiArCXBwZ3R0LT5wZF9hZGRyID0gKGdl bjZfZ3R0X3B0ZV90IF9faW9tZW0gKilkZXZfcHJpdi0+Z3R0LmdzbSArCj4gKwkJcHBndHQtPnBk LnBkX29mZnNldCAvIHNpemVvZihnZW42X2d0dF9wdGVfdCk7Cj4gKwo+ICAJcHBndHQtPmJhc2Uu Y2xlYXJfcmFuZ2UoJnBwZ3R0LT5iYXNlLCAwLCBwcGd0dC0+YmFzZS50b3RhbCwgdHJ1ZSk7Cj4g IAo+ICsJZ2VuNl93cml0ZV9wYWdlX3JhbmdlKGRldl9wcml2LCAmcHBndHQtPnBkLCAwLCBwcGd0 dC0+YmFzZS50b3RhbCk7Cj4gKwo+ICAJRFJNX0RFQlVHX0RSSVZFUigiQWxsb2NhdGVkIHBkZSBz cGFjZSAoJWxkTSkgYXQgR1RUIGVudHJ5OiAlbHhcbiIsCj4gIAkJCSBwcGd0dC0+bm9kZS5zaXpl ID4+IDIwLAo+ICAJCQkgcHBndHQtPm5vZGUuc3RhcnQgLyBQQUdFX1NJWkUpOwo+ICAKPiAtCWdl bjZfd3JpdGVfcGRlcyhwcGd0dCk7Cj4gIAlEUk1fREVCVUcoIkFkZGluZyBQUEdUVCBhdCBvZmZz ZXQgJXhcbiIsCj4gIAkJICBwcGd0dC0+cGQucGRfb2Zmc2V0IDw8IDEwKTsKPiAgCj4gQEAgLTE0 OTEsMTMgKzE1NjEsMTQgQEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm0sICZkZXZf cHJpdi0+dm1fbGlzdCwgZ2xvYmFsX2xpbmspIHsKPiAgCQkvKiBUT0RPOiBQZXJoYXBzIGl0IHNo b3VsZG4ndCBiZSBnZW42IHNwZWNpZmljICovCj4gLQkJaWYgKGk5MTVfaXNfZ2d0dCh2bSkpIHsK PiAtCQkJaWYgKGRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0dCkKPiAtCQkJCWdlbjZfd3JpdGVf cGRlcyhkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQpOwo+IC0JCQljb250aW51ZTsKPiAtCQl9 Cj4gIAo+IC0JCWdlbjZfd3JpdGVfcGRlcyhjb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3 X3BwZ3R0LCBiYXNlKSk7Cj4gKwkJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KPiArCQkJ Y29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7Cj4gKwo+ICsJCWlm IChpOTE1X2lzX2dndHQodm0pKQo+ICsJCQlwcGd0dCA9IGRldl9wcml2LT5tbS5hbGlhc2luZ19w cGd0dDsKCklmIHdlIGhhdmUgZ2d0dCBidXQgYWxpYXNpbmcgaXMgbm90IGVuYWJsZWQgd2UgZ2V0 IE5VTEwgaGVyZSBhbmQgb29wcwpvdmVyIGluIG5leHQgZnVuY3Rpb24/CgotTWlrYQoKPiArCj4g KwkJZ2VuNl93cml0ZV9wYWdlX3JhbmdlKGRldl9wcml2LCAmcHBndHQtPnBkLCAwLCBwcGd0dC0+ bnVtX3BkX2VudHJpZXMpOwo+ICAJfQo+ICAKPiAgCWk5MTVfZ2d0dF9mbHVzaChkZXZfcHJpdik7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCBlOGNhZDcyLi4xYjE1ZmM5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtNTQsNyArNTQsMTAg QEAgdHlwZWRlZiBnZW44X2d0dF9wdGVfdCBnZW44X3BwZ3R0X3BkZV90Owo+ICAjZGVmaW5lIEdF TjZfUFBHVFRfUERfRU5UUklFUwkJNTEyCj4gICNkZWZpbmUgR0VONl9QRF9TSVpFCQkJKEdFTjZf UFBHVFRfUERfRU5UUklFUyAqIFBBR0VfU0laRSkKPiAgI2RlZmluZSBHRU42X1BEX0FMSUdOCQkJ KFBBR0VfU0laRSAqIDE2KQo+ICsjZGVmaW5lIEdFTjZfUERFX1NISUZUCQkJMjIKPiAgI2RlZmlu ZSBHRU42X1BERV9WQUxJRAkJCSgxIDw8IDApCj4gKyNkZWZpbmUgSTkxNV9QREVfTUFTSwkJCShH RU42X1BQR1RUX1BEX0VOVFJJRVMtMSkKPiArI2RlZmluZSBOVU1fUFRFKHBkZV9zaGlmdCkJCSgx IDw8IChwZGVfc2hpZnQgLSBQQUdFX1NISUZUKSkKPiAgCj4gICNkZWZpbmUgR0VON19QVEVfQ0FD SEVfTDNfTExDCQkoMyA8PCAxKQo+ICAKPiBAQCAtMTkwLDYgKzE5Myw4IEBAIHN0cnVjdCBpOTE1 X3ZtYSB7Cj4gIHN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgewo+ICAJc3RydWN0IHBhZ2Ug KnBhZ2U7Cj4gIAlkbWFfYWRkcl90IGRhZGRyOwo+ICsKPiArCXVuc2lnbmVkIGxvbmcgKnVzZWRf cHRlczsKPiAgfTsKPiAgCj4gIHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X2VudHJ5IHsKPiBA QCAtMjQ2LDYgKzI1MSw5IEBAIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ugewo+ICAJZ2VuNl9n dHRfcHRlX3QgKCpwdGVfZW5jb2RlKShkbWFfYWRkcl90IGFkZHIsCj4gIAkJCQkgICAgIGVudW0g aTkxNV9jYWNoZV9sZXZlbCBsZXZlbCwKPiAgCQkJCSAgICAgYm9vbCB2YWxpZCwgdTMyIGZsYWdz KTsgLyogQ3JlYXRlIGEgdmFsaWQgUFRFICovCj4gKwlpbnQgKCphbGxvY2F0ZV92YV9yYW5nZSko c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJCQkgdWludDY0X3Qgc3RhcnQsCj4g KwkJCQkgdWludDY0X3QgbGVuZ3RoKTsKPiAgCXZvaWQgKCpjbGVhcl9yYW5nZSkoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAkJCSAgICB1aW50NjRfdCBzdGFydCwKPiAgCQkJICAg IHVpbnQ2NF90IGxlbmd0aCwKPiBAQCAtMjk4LDEyICszMDYsNzkgQEAgc3RydWN0IGk5MTVfaHdf cHBndHQgewo+ICAKPiAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsK PiAgCj4gKwlnZW42X2d0dF9wdGVfdCBfX2lvbWVtICpwZF9hZGRyOwo+ICsKPiAgCWludCAoKmVu YWJsZSkoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KTsKPiAgCWludCAoKnN3aXRjaF9tbSko c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+ICAJCQkgc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZyk7Cj4gIAl2b2lkICgqZGVidWdfZHVtcCkoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwo+ICB9Owo+ICAKPiArLyogRm9yIGVhY2ggcGRlIGl0 ZXJhdGVzIG92ZXIgZXZlcnkgcGRlIGJldHdlZW4gZnJvbSBzdGFydCB1bnRpbCBzdGFydCArIGxl bmd0aC4KPiArICogSWYgc3RhcnQsIGFuZCBzdGFydCtsZW5ndGggYXJlIG5vdCBwZXJmZWN0bHkg ZGl2aXNpYmxlLCB0aGUgbWFjcm8gd2lsbCByb3VuZAo+ICsgKiBkb3duLCBhbmQgdXAgYXMgbmVl ZGVkLiBUaGUgbWFjcm8gbW9kaWZpZXMgcGRlLCBzdGFydCwgYW5kIGxlbmd0aC4gRGV2IGlzCj4g KyAqIG9ubHkgdXNlZCB0byBkaWZmZXJlbnRpYXRlIHNoaWZ0IHZhbHVlcy4gVGVtcCBpcyB0ZW1w LiAgT24gZ2VuNi83LCBzdGFydCA9IDAsCj4gKyAqIGFuZCBsZW5ndGggPSAyRyBlZmZlY3RpdmVs eSBpdGVyYXRlcyBvdmVyIGV2ZXJ5IFBERSBpbiB0aGUgc3lzdGVtLiBPbiBnZW44Kwo+ICsgKiBp dCBzaW1wbHkgaXRlcmF0ZXMgb3ZlciBldmVyeSBwYWdlIGRpcmVjdG9yeSBlbnRyeSBpbiBhIHBh Z2UgZGlyZWN0b3J5Lgo+ICsgKgo+ICsgKiBYWFg6IHRlbXAgaXMgbm90IGFjdHVhbGx5IG5lZWRl ZCwgYnV0IGl0IHNhdmVzIGRvaW5nIHRoZSBBTElHTiBvcGVyYXRpb24uCj4gKyAqLwo+ICsjZGVm aW5lIGdlbjZfZm9yX2VhY2hfcGRlKHB0LCBwZCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgaXRlcikg XAo+ICsJZm9yIChpdGVyID0gZ2VuNl9wZGVfaW5kZXgoc3RhcnQpLCBwdCA9IChwZCktPnBhZ2Vf dGFibGVzW2l0ZXJdOyBcCj4gKwkgICAgIGxlbmd0aCA+IDAgJiYgaXRlciA8IEdFTjZfUFBHVFRf UERfRU5UUklFUzsgXAo+ICsJICAgICBwdCA9IChwZCktPnBhZ2VfdGFibGVzWysraXRlcl0sIFwK PiArCSAgICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEsIDEgPDwgR0VONl9QREVfU0hJRlQpIC0gc3Rh cnQsIFwKPiArCSAgICAgdGVtcCA9IG1pbl90KHVuc2lnbmVkLCB0ZW1wLCBsZW5ndGgpLCBcCj4g KwkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAtPSB0ZW1wKQo+ICsKPiArc3RhdGljIGlubGlu ZSB1aW50MzJfdCBpOTE1X3B0ZV9pbmRleCh1aW50NjRfdCBhZGRyZXNzLCB1aW50MzJfdCBwZGVf c2hpZnQpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90IG1hc2sgPSBOVU1fUFRFKHBkZV9zaGlmdCkg LSAxOwo+ICsKPiArCXJldHVybiAoYWRkcmVzcyA+PiBQQUdFX1NISUZUKSAmIG1hc2s7Cj4gK30K PiArCj4gKy8qIEhlbHBlciB0byBjb3VudHMgdGhlIG51bWJlciBvZiBQVEVzIHdpdGhpbiB0aGUg Z2l2ZW4gbGVuZ3RoLiBUaGlzIGNvdW50IGRvZXMKPiArKiBub3QgY3Jvc3MgYSBwYWdlIHRhYmxl IGJvdW5kYXJ5LCBzbyB0aGUgbWF4IHZhbHVlIHdvdWxkIGJlCj4gKyogSTkxNV9QUEdUVF9QVF9F TlRSSUVTIGZvciBHRU42LCBhbmQgR0VOOF9QVEVTX1BFUl9QQUdFIGZvciBHRU44Lgo+ICsqLwo+ ICtzdGF0aWMgaW5saW5lIHNpemVfdCBpOTE1X3B0ZV9jb3VudCh1aW50NjRfdCBhZGRyLCBzaXpl X3QgbGVuZ3RoLAo+ICsJCQkJCXVpbnQzMl90IHBkZV9zaGlmdCkKPiArewo+ICsJY29uc3QgdWlu dDY0X3QgbWFzayA9IH4oKDEgPDwgcGRlX3NoaWZ0KSAtIDEpOwo+ICsJdWludDY0X3QgZW5kOwo+ ICsKPiArCUJVR19PTihsZW5ndGggPT0gMCk7Cj4gKwlCVUdfT04ob2Zmc2V0X2luX3BhZ2UoYWRk cnxsZW5ndGgpKTsKPiArCj4gKwllbmQgPSBhZGRyICsgbGVuZ3RoOwo+ICsKPiArCWlmICgoYWRk ciAmIG1hc2spICE9IChlbmQgJiBtYXNrKSkKPiArCQlyZXR1cm4gTlVNX1BURShwZGVfc2hpZnQp IC0gaTkxNV9wdGVfaW5kZXgoYWRkciwgcGRlX3NoaWZ0KTsKPiArCj4gKwlyZXR1cm4gaTkxNV9w dGVfaW5kZXgoZW5kLCBwZGVfc2hpZnQpIC0gaTkxNV9wdGVfaW5kZXgoYWRkciwgcGRlX3NoaWZ0 KTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSB1aW50MzJfdCBpOTE1X3BkZV9pbmRleCh1aW50 NjRfdCBhZGRyLCB1aW50MzJfdCBzaGlmdCkKPiArewo+ICsJcmV0dXJuIChhZGRyID4+IHNoaWZ0 KSAmIEk5MTVfUERFX01BU0s7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2Vu Nl9wdGVfaW5kZXgodWludDMyX3QgYWRkcikKPiArewo+ICsJcmV0dXJuIGk5MTVfcHRlX2luZGV4 KGFkZHIsIEdFTjZfUERFX1NISUZUKTsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzaXplX3Qg Z2VuNl9wdGVfY291bnQodWludDMyX3QgYWRkciwgdWludDMyX3QgbGVuZ3RoKQo+ICt7Cj4gKwly ZXR1cm4gaTkxNV9wdGVfY291bnQoYWRkciwgbGVuZ3RoLCBHRU42X1BERV9TSElGVCk7Cj4gK30K PiArCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9wZGVfaW5kZXgodWludDMyX3QgYWRk cikKPiArewo+ICsJcmV0dXJuIGk5MTVfcGRlX2luZGV4KGFkZHIsIEdFTjZfUERFX1NISUZUKTsK PiArfQo+ICsKPiAgaW50IGk5MTVfZ2VtX2d0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owo+ICB2b2lkIGk5MTVfZ2VtX2luaXRfZ2xvYmFsX2d0dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPiAgdm9pZCBpOTE1X2dsb2JhbF9ndHRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPiAtLSAKPiAyLjEuMQo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK