From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v6 05/32] drm/i915: Track GEN6 page table usage Date: Thu, 26 Feb 2015 17:58:50 +0200 Message-ID: <87bnkg8y11.fsf@gaia.fi.intel.com> References: <1418922621-25818-1-git-send-email-michel.thierry@intel.com> <1424794985-14441-1-git-send-email-michel.thierry@intel.com> <1424794985-14441-6-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id CF1516E7E8 for ; Thu, 26 Feb 2015 07:59:07 -0800 (PST) In-Reply-To: <1424794985-14441-6-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+IHY3 OiBzL2k5MTVfZG1hX21hcF9weF9zaW5nbGUvaTkxNV9kbWFfbWFwX3NpbmdsZQo+IHMvZ2VuNl93 cml0ZV9wZGVzL2dlbjZfd3JpdGVfcGRlCj4gUHJldmVudCBhIE5VTEwgY2FzZSB3aGVuIG9ubHkg R0dUVCBpcyBhdmFpbGFibGUuIChNaWthKQo+Cj4gdjg6IFJlYmFzZWQgYWZ0ZXIgcy9wYWdlX3Rh Ymxlcy9wYWdlX3RhYmxlLy4KPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IFNp Z25lZC1vZmYtYnk6IEJlbiBXaWRhd3NreSA8YmVuQGJ3aWRhd3NrLm5ldD4KPiBTaWduZWQtb2Zm LWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPiAodjMrKQo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDE5OCArKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmggfCAgNzUgKysrKysrKysrKysrKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5z ZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+IGluZGV4IGUwNTQ4OGUuLmY5MzU0YzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IEBAIC0yNzgsMjkgKzI3OCw4OCBAQCBzdGF0aWMgZ2VuNl9ndHRfcHRlX3Qg aXJpc19wdGVfZW5jb2RlKGRtYV9hZGRyX3QgYWRkciwKPiAgCXJldHVybiBwdGU7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIHVubWFwX2FuZF9mcmVlX3B0KHN0cnVjdCBpOTE1X3BhZ2VfdGFibGVf ZW50cnkgKnB0LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICsjZGVmaW5lIGk5MTVfZG1hX3Vu bWFwX3NpbmdsZShweCwgZGV2KSBcCj4gKwlfX2k5MTVfZG1hX3VubWFwX3NpbmdsZSgocHgpLT5k YWRkciwgZGV2KQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIF9faTkxNV9kbWFfdW5tYXBfc2lu Z2xlKGRtYV9hZGRyX3QgZGFkZHIsCj4gKwkJCQkJc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAr ewo+ICsJc3RydWN0IGRldmljZSAqZGV2aWNlID0gJmRldi0+cGRldi0+ZGV2Owo+ICsKPiArCWRt YV91bm1hcF9wYWdlKGRldmljZSwgZGFkZHIsIDQwOTYsIFBDSV9ETUFfQklESVJFQ1RJT05BTCk7 Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBpOTE1X2RtYV9tYXBfc2luZ2xlKCkgLSBDcmVhdGUgYSBk bWEgbWFwcGluZyBmb3IgYSBwYWdlIHRhYmxlL2Rpci9ldGMuCj4gKyAqIEBweDoJUGFnZSB0YWJs ZS9kaXIvZXRjIHRvIGdldCBhIERNQSBtYXAgZm9yCj4gKyAqIEBkZXY6CWRybSBkZXZpY2UKPiAr ICoKPiArICogUGFnZSB0YWJsZSBhbGxvY2F0aW9ucyBhcmUgdW5pZmllZCBhY3Jvc3MgYWxsIGdl bnMuIFRoZXkgYWx3YXlzIHJlcXVpcmUgYQo+ICsgKiBzaW5nbGUgNGsgYWxsb2NhdGlvbiwgYXMg d2VsbCBhcyBhIERNQSBtYXBwaW5nLiBJZiB3ZSBrZWVwIHRoZSBzdHJ1Y3RzCj4gKyAqIHN5bW1l dHJpYyBoZXJlLCB0aGUgc2ltcGxlIG1hY3JvIGNvdmVycyB1cyBmb3IgZXZlcnkgcGFnZSB0YWJs ZSB0eXBlLgo+ICsgKgo+ICsgKiBSZXR1cm46IDAgaWYgc3VjY2Vzcy4KPiArICovCj4gKyNkZWZp bmUgaTkxNV9kbWFfbWFwX3NpbmdsZShweCwgZGV2KSBcCj4gKwlpOTE1X2RtYV9tYXBfcGFnZV9z aW5nbGUoKHB4KS0+cGFnZSwgKGRldiksICYocHgpLT5kYWRkcikKPiArCj4gK3N0YXRpYyBpbmxp bmUgaW50IGk5MTVfZG1hX21hcF9wYWdlX3NpbmdsZShzdHJ1Y3QgcGFnZSAqcGFnZSwKPiArCQkJ CQkgICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJCSAgIGRtYV9hZGRyX3QgKmRhZGRy KQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSAmZGV2LT5wZGV2LT5kZXY7Cj4gKwo+ ICsJKmRhZGRyID0gZG1hX21hcF9wYWdlKGRldmljZSwgcGFnZSwgMCwgNDA5NiwgUENJX0RNQV9C SURJUkVDVElPTkFMKTsKPiArCXJldHVybiBkbWFfbWFwcGluZ19lcnJvcihkZXZpY2UsICpkYWRk cik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHVubWFwX2FuZF9mcmVlX3B0KHN0cnVjdCBpOTE1 X3BhZ2VfdGFibGVfZW50cnkgKnB0LAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiAgewo+ICAJaWYgKFdBUk5fT04oIXB0LT5wYWdlKSkKPiAgCQlyZXR1cm47Cj4gKwo+ICsJ aTkxNV9kbWFfdW5tYXBfc2luZ2xlKHB0LCBkZXYpOwo+ICAJX19mcmVlX3BhZ2UocHQtPnBhZ2Up Owo+ICsJa2ZyZWUocHQtPnVzZWRfcHRlcyk7Cj4gIAlrZnJlZShwdCk7Cj4gIH0KPiAgCj4gIHN0 YXRpYyBzdHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICphbGxvY19wdF9zaW5nbGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSAq cHQ7Cj4gKwljb25zdCBzaXplX3QgY291bnQgPSBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4ID8K PiArCQlHRU44X1BURVNfUEVSX1BBR0UgOiBJOTE1X1BQR1RUX1BUX0VOVFJJRVM7Cj4gKwlpbnQg cmV0ID0gLUVOT01FTTsKPiAgCj4gIAlwdCA9IGt6YWxsb2Moc2l6ZW9mKCpwdCksIEdGUF9LRVJO RUwpOwo+ICAJaWYgKCFwdCkKPiAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAgCj4gKwlw dC0+dXNlZF9wdGVzID0ga2NhbGxvYyhCSVRTX1RPX0xPTkdTKGNvdW50KSwgc2l6ZW9mKCpwdC0+ dXNlZF9wdGVzKSwKPiArCQkJCUdGUF9LRVJORUwpOwo+ICsKPiArCWlmICghcHQtPnVzZWRfcHRl cykKPiArCQlnb3RvIGZhaWxfYml0bWFwOwo+ICsKPiAgCXB0LT5wYWdlID0gYWxsb2NfcGFnZShH RlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7Cj4gLQlpZiAoIXB0LT5wYWdlKSB7Cj4gLQkJa2ZyZWUo cHQpOwo+IC0JCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+IC0JfQo+ICsJaWYgKCFwdC0+cGFn ZSkKPiArCQlnb3RvIGZhaWxfcGFnZTsKPiArCj4gKwlyZXQgPSBpOTE1X2RtYV9tYXBfc2luZ2xl KHB0LCBkZXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZhaWxfZG1hOwo+ICAKPiAgCXJldHVy biBwdDsKPiArCj4gK2ZhaWxfZG1hOgo+ICsJX19mcmVlX3BhZ2UocHQtPnBhZ2UpOwo+ICtmYWls X3BhZ2U6Cj4gKwlrZnJlZShwdC0+dXNlZF9wdGVzKTsKPiArZmFpbF9iaXRtYXA6Cj4gKwlrZnJl ZShwdCk7Cj4gKwo+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAg LTgzOCwyNiArODk3LDM1IEBAIHN0YXRpYyB2b2lkIGdlbjZfZHVtcF9wcGd0dChzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCX0KPiAgfQo+ICAKPiAt c3RhdGljIHZvaWQgZ2VuNl93cml0ZV9wZGVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkK PiArLyogV3JpdGUgcGRlIChpbmRleCkgZnJvbSB0aGUgcGFnZSBkaXJlY3RvcnkgQHBkIHRvIHRo ZSBwYWdlIHRhYmxlIEBwdCAqLwo+ICtzdGF0aWMgdm9pZCBnZW42X3dyaXRlX3BkZShzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQsCj4gKwkJCSAgICBjb25zdCBpbnQgcGRlLCBz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlX2VudHJ5ICpwdCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gcHBndHQtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCWdl bjZfZ3R0X3B0ZV90IF9faW9tZW0gKnBkX2FkZHI7Cj4gLQl1aW50MzJfdCBwZF9lbnRyeTsKPiAt CWludCBpOwo+ICsJLyogQ2FsbGVyIG5lZWRzIHRvIG1ha2Ugc3VyZSB0aGUgd3JpdGUgY29tcGxl dGVzIGlmIG5lY2Vzc2FyeSAqLwo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0KPiAr CQljb250YWluZXJfb2YocGQsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBwZCk7Cj4gKwl1MzIgcGRf ZW50cnk7Cj4gIAo+IC0JV0FSTl9PTihwcGd0dC0+cGQucGRfb2Zmc2V0ICYgMHgzZik7Cj4gLQlw ZF9hZGRyID0gKGdlbjZfZ3R0X3B0ZV90IF9faW9tZW0qKWRldl9wcml2LT5ndHQuZ3NtICsKPiAt CQlwcGd0dC0+cGQucGRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfZ3R0X3B0ZV90KTsKPiAtCWZvciAo aSA9IDA7IGkgPCBwcGd0dC0+bnVtX3BkX2VudHJpZXM7IGkrKykgewo+IC0JCWRtYV9hZGRyX3Qg cHRfYWRkcjsKPiArCXBkX2VudHJ5ID0gR0VONl9QREVfQUREUl9FTkNPREUocHQtPmRhZGRyKTsK PiArCXBkX2VudHJ5IHw9IEdFTjZfUERFX1ZBTElEOwo+ICAKPiAtCQlwdF9hZGRyID0gcHBndHQt PnBkLnBhZ2VfdGFibGVbaV0tPmRhZGRyOwo+IC0JCXBkX2VudHJ5ID0gR0VONl9QREVfQUREUl9F TkNPREUocHRfYWRkcik7Cj4gLQkJcGRfZW50cnkgfD0gR0VONl9QREVfVkFMSUQ7Cj4gKwl3cml0 ZWwocGRfZW50cnksIHBwZ3R0LT5wZF9hZGRyICsgcGRlKTsKPiArfQo+ICAKPiAtCQl3cml0ZWwo cGRfZW50cnksIHBkX2FkZHIgKyBpKTsKPiAtCX0KPiAtCXJlYWRsKHBkX2FkZHIpOwo+ICsvKiBX cml0ZSBhbGwgdGhlIHBhZ2UgdGFibGVzIGZvdW5kIGluIHRoZSBwcGd0dCBzdHJ1Y3R1cmUgdG8g aW5jcmVtZW50aW5nIHBhZ2UKPiArICogZGlyZWN0b3JpZXMuICovCj4gK3N0YXRpYyB2b2lkIGdl bjZfd3JpdGVfcGFnZV9yYW5nZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g KwkJCQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSAqcGQsIHVpbnQzMl90IHN0YXJ0 LCB1aW50MzJfdCBsZW5ndGgpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkg KnB0Owo+ICsJdWludDMyX3QgcGRlLCB0ZW1wOwo+ICsKPiArCWdlbjZfZm9yX2VhY2hfcGRlKHB0 LCBwZCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRlKQo+ICsJCWdlbjZfd3JpdGVfcGRlKHBkLCBw ZGUsIHB0KTsKPiArCj4gKwkvKiBNYWtlIHN1cmUgd3JpdGUgaXMgY29tcGxldGUgYmVmb3JlIG90 aGVyIGNvZGUgY2FuIHVzZSB0aGlzIHBhZ2UKPiArCSAqIHRhYmxlLiBBbHNvIHJlcXVpcmUgZm9y IFdDIG1hcHBlZCBQVEVzICovCj4gKwlyZWFkbChkZXZfcHJpdi0+Z3R0LmdzbSk7Cj4gIH0KPiAg Cj4gIHN0YXRpYyB1aW50MzJfdCBnZXRfcGRfb2Zmc2V0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpw cGd0dCkKPiBAQCAtMTA4Myw2ICsxMTUxLDI4IEBAIHN0YXRpYyB2b2lkIGdlbjZfcHBndHRfdW5t YXBfcGFnZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAJCQkgICAgICAgNDA5Niwg UENJX0RNQV9CSURJUkVDVElPTkFMKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBnZW42X2FsbG9j X3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkgICAgICAgdWlu dDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGxlbmd0aCkKPiArewo+ICsJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0KPiArCQkJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQs IGJhc2UpOwo+ICsJc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSAqcHQ7Cj4gKwl1aW50MzJf dCBwZGUsIHRlbXA7Cj4gKwo+ICsJZ2VuNl9mb3JfZWFjaF9wZGUocHQsICZwcGd0dC0+cGQsIHN0 YXJ0LCBsZW5ndGgsIHRlbXAsIHBkZSkgewo+ICsJCURFQ0xBUkVfQklUTUFQKHRtcF9iaXRtYXAs IEk5MTVfUFBHVFRfUFRfRU5UUklFUyk7Cj4gKwo+ICsJCWJpdG1hcF96ZXJvKHRtcF9iaXRtYXAs IEk5MTVfUFBHVFRfUFRfRU5UUklFUyk7Cj4gKwkJYml0bWFwX3NldCh0bXBfYml0bWFwLCBnZW42 X3B0ZV9pbmRleChzdGFydCksCj4gKwkJCSAgIGdlbjZfcHRlX2NvdW50KHN0YXJ0LCBsZW5ndGgp KTsKPiArCj4gKwkJYml0bWFwX29yKHB0LT51c2VkX3B0ZXMsIHB0LT51c2VkX3B0ZXMsIHRtcF9i aXRtYXAsCj4gKwkJCQlJOTE1X1BQR1RUX1BUX0VOVFJJRVMpOwo+ICsJfQo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBnZW42X3BwZ3R0X2ZyZWUoc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0KQo+ICB7Cj4gIAlpbnQgaTsKPiBAQCAtMTEyOSwyMCArMTIxOSwyNCBA QCBhbGxvYzoKPiAgCQkJCQkgICAgICAgMCwgZGV2X3ByaXYtPmd0dC5iYXNlLnRvdGFsLAo+ICAJ CQkJCSAgICAgICAwKTsKPiAgCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+ICsJCQlnb3Rv IGVycl9vdXQ7Cj4gIAo+ICAJCXJldHJpZWQgPSB0cnVlOwo+ICAJCWdvdG8gYWxsb2M7Cj4gIAl9 Cj4gIAo+ICAJaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWdvdG8gZXJyX291dDsKPiAr Cj4gIAo+ICAJaWYgKHBwZ3R0LT5ub2RlLnN0YXJ0IDwgZGV2X3ByaXYtPmd0dC5tYXBwYWJsZV9l bmQpCj4gIAkJRFJNX0RFQlVHKCJGb3JjZWQgdG8gdXNlIGFwZXJ0dXJlIGZvciBQREVzXG4iKTsK PiAgCj4gIAlwcGd0dC0+bnVtX3BkX2VudHJpZXMgPSBHRU42X1BQR1RUX1BEX0VOVFJJRVM7Cj4g IAlyZXR1cm4gMDsKPiArCj4gK2Vycl9vdXQ6Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBz dGF0aWMgaW50IGdlbjZfcHBndHRfYWxsb2Moc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ IEBAIC0xMTY0LDMwICsxMjU4LDYgQEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2FsbG9jKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW50IGdlbjZfcHBndHRfc2V0dXBfcGFnZV90YWJsZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQo+IC17Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcHBndHQtPmJhc2UuZGV2Owo+ IC0JaW50IGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IHBwZ3R0LT5udW1fcGRfZW50cmllczsg aSsrKSB7Cj4gLQkJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gLQkJZG1hX2FkZHJfdCBwdF9hZGRyOwo+ IC0KPiAtCQlwYWdlID0gcHBndHQtPnBkLnBhZ2VfdGFibGVbaV0tPnBhZ2U7Cj4gLQkJcHRfYWRk ciA9IHBjaV9tYXBfcGFnZShkZXYtPnBkZXYsIHBhZ2UsIDAsIDQwOTYsCj4gLQkJCQkgICAgICAg UENJX0RNQV9CSURJUkVDVElPTkFMKTsKPiAtCj4gLQkJaWYgKHBjaV9kbWFfbWFwcGluZ19lcnJv cihkZXYtPnBkZXYsIHB0X2FkZHIpKSB7Cj4gLQkJCWdlbjZfcHBndHRfdW5tYXBfcGFnZXMocHBn dHQpOwo+IC0JCQlyZXR1cm4gLUVJTzsKPiAtCQl9Cj4gLQo+IC0JCXBwZ3R0LT5wZC5wYWdlX3Rh YmxlW2ldLT5kYWRkciA9IHB0X2FkZHI7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt Cj4gIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBwZ3R0LT5iYXNlLmRldjsKPiBA QCAtMTIxMSwxMiArMTI4MSw3IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4g LQlyZXQgPSBnZW42X3BwZ3R0X3NldHVwX3BhZ2VfdGFibGVzKHBwZ3R0KTsKPiAtCWlmIChyZXQp IHsKPiAtCQlnZW42X3BwZ3R0X2ZyZWUocHBndHQpOwo+IC0JCXJldHVybiByZXQ7Cj4gLQl9Cj4g LQo+ICsJcHBndHQtPmJhc2UuYWxsb2NhdGVfdmFfcmFuZ2UgPSBnZW42X2FsbG9jX3ZhX3Jhbmdl Owo+ICAJcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBnZW42X3BwZ3R0X2NsZWFyX3JhbmdlOwo+ ICAJcHBndHQtPmJhc2UuaW5zZXJ0X2VudHJpZXMgPSBnZW42X3BwZ3R0X2luc2VydF9lbnRyaWVz Owo+ICAJcHBndHQtPmJhc2UuY2xlYW51cCA9IGdlbjZfcHBndHRfY2xlYW51cDsKPiBAQCAtMTIy NywxMyArMTI5MiwxNyBAQCBzdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQpCj4gIAlwcGd0dC0+cGQucGRfb2Zmc2V0ID0KPiAgCQlwcGd0dC0+bm9k ZS5zdGFydCAvIFBBR0VfU0laRSAqIHNpemVvZihnZW42X2d0dF9wdGVfdCk7Cj4gIAo+ICsJcHBn dHQtPnBkX2FkZHIgPSAoZ2VuNl9ndHRfcHRlX3QgX19pb21lbSAqKWRldl9wcml2LT5ndHQuZ3Nt ICsKPiArCQlwcGd0dC0+cGQucGRfb2Zmc2V0IC8gc2l6ZW9mKGdlbjZfZ3R0X3B0ZV90KTsKPiAr Cj4gIAlwcGd0dC0+YmFzZS5jbGVhcl9yYW5nZSgmcHBndHQtPmJhc2UsIDAsIHBwZ3R0LT5iYXNl LnRvdGFsLCB0cnVlKTsKPiAgCj4gKwlnZW42X3dyaXRlX3BhZ2VfcmFuZ2UoZGV2X3ByaXYsICZw cGd0dC0+cGQsIDAsIHBwZ3R0LT5iYXNlLnRvdGFsKTsKPiArCj4gIAlEUk1fREVCVUdfRFJJVkVS KCJBbGxvY2F0ZWQgcGRlIHNwYWNlICglbGRNKSBhdCBHVFQgZW50cnk6ICVseFxuIiwKPiAgCQkJ IHBwZ3R0LT5ub2RlLnNpemUgPj4gMjAsCj4gIAkJCSBwcGd0dC0+bm9kZS5zdGFydCAvIFBBR0Vf U0laRSk7Cj4gIAo+IC0JZ2VuNl93cml0ZV9wZGVzKHBwZ3R0KTsKPiAgCURSTV9ERUJVRygiQWRk aW5nIFBQR1RUIGF0IG9mZnNldCAleFxuIiwKPiAgCQkgIHBwZ3R0LT5wZC5wZF9vZmZzZXQgPDwg MTApOwo+ICAKPiBAQCAtMTUwNCwxNSArMTU3MywyMCBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVf Z3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodm0sICZkZXZfcHJpdi0+dm1fbGlzdCwgZ2xvYmFs X2xpbmspIHsKPiAtCQkvKiBUT0RPOiBQZXJoYXBzIGl0IHNob3VsZG4ndCBiZSBnZW42IHNwZWNp ZmljICovCj4gLQkJaWYgKGk5MTVfaXNfZ2d0dCh2bSkpIHsKPiAtCQkJaWYgKGRldl9wcml2LT5t bS5hbGlhc2luZ19wcGd0dCkKPiAtCQkJCWdlbjZfd3JpdGVfcGRlcyhkZXZfcHJpdi0+bW0uYWxp YXNpbmdfcHBndHQpOwo+IC0JCQljb250aW51ZTsKPiAtCQl9Cj4gKwlpZiAoVVNFU19QUEdUVChk ZXYpKSB7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bSwgJmRldl9wcml2LT52bV9saXN0LCBn bG9iYWxfbGluaykgewo+ICsJCQkvKiBUT0RPOiBQZXJoYXBzIGl0IHNob3VsZG4ndCBiZSBnZW42 IHNwZWNpZmljICovCj4gKwo+ICsJCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICsJ CQkJCWNvbnRhaW5lcl9vZih2bSwgc3RydWN0IGk5MTVfaHdfcHBndHQsCj4gKwkJCQkJCSAgICAg YmFzZSk7Cj4gIAo+IC0JCWdlbjZfd3JpdGVfcGRlcyhjb250YWluZXJfb2Yodm0sIHN0cnVjdCBp OTE1X2h3X3BwZ3R0LCBiYXNlKSk7Cj4gKwkJCWlmIChpOTE1X2lzX2dndHQodm0pKQo+ICsJCQkJ cHBndHQgPSBkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gKwo+ICsJCQlnZW42X3dyaXRl X3BhZ2VfcmFuZ2UoZGV2X3ByaXYsICZwcGd0dC0+cGQsIDAsCj4gKwkJCQkJICAgICAgcHBndHQt Pm51bV9wZF9lbnRyaWVzKTsKPiArCQl9Cj4gIAl9Cj4gIAo+ICAJaTkxNV9nZ3R0X2ZsdXNoKGRl dl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IGM5ZTkzZjUu LmJmMGUzODAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC01NCw3 ICs1NCwxMCBAQCB0eXBlZGVmIGdlbjhfZ3R0X3B0ZV90IGdlbjhfcHBndHRfcGRlX3Q7Cj4gICNk ZWZpbmUgR0VONl9QUEdUVF9QRF9FTlRSSUVTCQk1MTIKPiAgI2RlZmluZSBHRU42X1BEX1NJWkUJ CQkoR0VONl9QUEdUVF9QRF9FTlRSSUVTICogUEFHRV9TSVpFKQo+ICAjZGVmaW5lIEdFTjZfUERf QUxJR04JCQkoUEFHRV9TSVpFICogMTYpCj4gKyNkZWZpbmUgR0VONl9QREVfU0hJRlQJCQkyMgo+ ICAjZGVmaW5lIEdFTjZfUERFX1ZBTElECQkJKDEgPDwgMCkKPiArI2RlZmluZSBJOTE1X1BERV9N QVNLCQkJKEdFTjZfUFBHVFRfUERfRU5UUklFUy0xKQo+ICsjZGVmaW5lIE5VTV9QVEUocGRlX3No aWZ0KQkJKDEgPDwgKHBkZV9zaGlmdCAtIFBBR0VfU0hJRlQpKQo+ICAKPiAgI2RlZmluZSBHRU43 X1BURV9DQUNIRV9MM19MTEMJCSgzIDw8IDEpCj4gIAo+IEBAIC0xOTAsNiArMTkzLDggQEAgc3Ry dWN0IGk5MTVfdm1hIHsKPiAgc3RydWN0IGk5MTVfcGFnZV90YWJsZV9lbnRyeSB7Cj4gIAlzdHJ1 Y3QgcGFnZSAqcGFnZTsKPiAgCWRtYV9hZGRyX3QgZGFkZHI7Cj4gKwo+ICsJdW5zaWduZWQgbG9u ZyAqdXNlZF9wdGVzOwo+ICB9Owo+ICAKPiAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfZW50 cnkgewo+IEBAIC0yNDYsNiArMjUxLDkgQEAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7Cj4g IAlnZW42X2d0dF9wdGVfdCAoKnB0ZV9lbmNvZGUpKGRtYV9hZGRyX3QgYWRkciwKPiAgCQkJCSAg ICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGxldmVsLAo+ICAJCQkJICAgICBib29sIHZhbGlkLCB1 MzIgZmxhZ3MpOyAvKiBDcmVhdGUgYSB2YWxpZCBQVEUgKi8KPiArCWludCAoKmFsbG9jYXRlX3Zh X3JhbmdlKShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJCSB1aW50NjRfdCBz dGFydCwKPiArCQkJCSB1aW50NjRfdCBsZW5ndGgpOwo+ICAJdm9pZCAoKmNsZWFyX3JhbmdlKShz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCQkJICAgIHVpbnQ2NF90IHN0YXJ0LAo+ ICAJCQkgICAgdWludDY0X3QgbGVuZ3RoLAo+IEBAIC0yOTgsMTIgKzMwNiw3OSBAQCBzdHJ1Y3Qg aTkxNV9od19wcGd0dCB7Cj4gIAo+ICAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmls ZV9wcml2Owo+ICAKPiArCWdlbjZfZ3R0X3B0ZV90IF9faW9tZW0gKnBkX2FkZHI7Cj4gKwo+ICAJ aW50ICgqZW5hYmxlKShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpOwo+ICAJaW50ICgqc3dp dGNoX21tKShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIAkJCSBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKTsKPiAgCXZvaWQgKCpkZWJ1Z19kdW1wKShzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQsIHN0cnVjdCBzZXFfZmlsZSAqbSk7Cj4gIH07Cj4gIAo+ICsvKiBGb3IgZWFj aCBwZGUgaXRlcmF0ZXMgb3ZlciBldmVyeSBwZGUgYmV0d2VlbiBmcm9tIHN0YXJ0IHVudGlsIHN0 YXJ0ICsgbGVuZ3RoLgo+ICsgKiBJZiBzdGFydCwgYW5kIHN0YXJ0K2xlbmd0aCBhcmUgbm90IHBl cmZlY3RseSBkaXZpc2libGUsIHRoZSBtYWNybyB3aWxsIHJvdW5kCj4gKyAqIGRvd24sIGFuZCB1 cCBhcyBuZWVkZWQuIFRoZSBtYWNybyBtb2RpZmllcyBwZGUsIHN0YXJ0LCBhbmQgbGVuZ3RoLiBE ZXYgaXMKPiArICogb25seSB1c2VkIHRvIGRpZmZlcmVudGlhdGUgc2hpZnQgdmFsdWVzLiBUZW1w IGlzIHRlbXAuICBPbiBnZW42LzcsIHN0YXJ0ID0gMCwKPiArICogYW5kIGxlbmd0aCA9IDJHIGVm ZmVjdGl2ZWx5IGl0ZXJhdGVzIG92ZXIgZXZlcnkgUERFIGluIHRoZSBzeXN0ZW0uIE9uIGdlbjgr Cj4gKyAqIGl0IHNpbXBseSBpdGVyYXRlcyBvdmVyIGV2ZXJ5IHBhZ2UgZGlyZWN0b3J5IGVudHJ5 IGluIGEgcGFnZSBkaXJlY3RvcnkuCj4gKyAqCgpUaGVyZSBpcyBub3RoaW5nIGZvciBnZW44IGlu IHRoZSBtYWNybyB5ZXQsIHNvIGNvbW1lbnQgaXMgYSBiaXQgbWlzbGVhZGluZy4KCj4gKyAqIFhY WDogdGVtcCBpcyBub3QgYWN0dWFsbHkgbmVlZGVkLCBidXQgaXQgc2F2ZXMgZG9pbmcgdGhlIEFM SUdOIG9wZXJhdGlvbi4KPiArICovCj4gKyNkZWZpbmUgZ2VuNl9mb3JfZWFjaF9wZGUocHQsIHBk LCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBpdGVyKSBcCj4gKwlmb3IgKGl0ZXIgPSBnZW42X3BkZV9p bmRleChzdGFydCksIHB0ID0gKHBkKS0+cGFnZV90YWJsZVtpdGVyXTsgXAo+ICsJICAgICBsZW5n dGggPiAwICYmIGl0ZXIgPCBHRU42X1BQR1RUX1BEX0VOVFJJRVM7IFwKPiArCSAgICAgcHQgPSAo cGQpLT5wYWdlX3RhYmxlWysraXRlcl0sIFwKPiArCSAgICAgdGVtcCA9IEFMSUdOKHN0YXJ0KzEs IDEgPDwgR0VONl9QREVfU0hJRlQpIC0gc3RhcnQsIFwKPiArCSAgICAgdGVtcCA9IG1pbl90KHVu c2lnbmVkLCB0ZW1wLCBsZW5ndGgpLCBcCj4gKwkgICAgIHN0YXJ0ICs9IHRlbXAsIGxlbmd0aCAt PSB0ZW1wKQo+ICsKPiArc3RhdGljIGlubGluZSB1aW50MzJfdCBpOTE1X3B0ZV9pbmRleCh1aW50 NjRfdCBhZGRyZXNzLCB1aW50MzJfdCBwZGVfc2hpZnQpCj4gK3sKPiArCWNvbnN0IHVpbnQzMl90 IG1hc2sgPSBOVU1fUFRFKHBkZV9zaGlmdCkgLSAxOwo+ICsKPiArCXJldHVybiAoYWRkcmVzcyA+ PiBQQUdFX1NISUZUKSAmIG1hc2s7Cj4gK30KPiArCj4gKy8qIEhlbHBlciB0byBjb3VudHMgdGhl IG51bWJlciBvZiBQVEVzIHdpdGhpbiB0aGUgZ2l2ZW4gbGVuZ3RoLiBUaGlzIGNvdW50IGRvZXMK PiArKiBub3QgY3Jvc3MgYSBwYWdlIHRhYmxlIGJvdW5kYXJ5LCBzbyB0aGUgbWF4IHZhbHVlIHdv dWxkIGJlCj4gKyogSTkxNV9QUEdUVF9QVF9FTlRSSUVTIGZvciBHRU42LCBhbmQgR0VOOF9QVEVT X1BFUl9QQUdFIGZvciBHRU44Lgo+ICsqLwo+ICtzdGF0aWMgaW5saW5lIHNpemVfdCBpOTE1X3B0 ZV9jb3VudCh1aW50NjRfdCBhZGRyLCBzaXplX3QgbGVuZ3RoLAo+ICsJCQkJCXVpbnQzMl90IHBk ZV9zaGlmdCkKPiArewo+ICsJY29uc3QgdWludDY0X3QgbWFzayA9IH4oKDEgPDwgcGRlX3NoaWZ0 KSAtIDEpOwo+ICsJdWludDY0X3QgZW5kOwo+ICsKPiArCUJVR19PTihsZW5ndGggPT0gMCk7Cj4g KwlCVUdfT04ob2Zmc2V0X2luX3BhZ2UoYWRkcnxsZW5ndGgpKTsKPiArCj4gKwllbmQgPSBhZGRy ICsgbGVuZ3RoOwo+ICsKPiArCWlmICgoYWRkciAmIG1hc2spICE9IChlbmQgJiBtYXNrKSkKPiAr CQlyZXR1cm4gTlVNX1BURShwZGVfc2hpZnQpIC0gaTkxNV9wdGVfaW5kZXgoYWRkciwgcGRlX3No aWZ0KTsKPiArCj4gKwlyZXR1cm4gaTkxNV9wdGVfaW5kZXgoZW5kLCBwZGVfc2hpZnQpIC0gaTkx NV9wdGVfaW5kZXgoYWRkciwgcGRlX3NoaWZ0KTsKPiArfQoKQWZ0ZXIgdHJ5aW5nIHRvIGZpZ3Vy ZSBvdXQgdGhlIHJlYXNvbmluZyBmb3IgdGhpcyBpOTE1X3B0ZV9jb3VudAphbmQgaXQncyByb2xl IGluIHRoZSB1c2VkIGJpdG1hcCBzZXR1cCwgSSBzdGFydGVkIHRvIHdvbmRlciB3aHkgYWxsCnRo ZSBjb21wbGV4aXR5IGhlcmUuCgpCVUdfT04ob2Zmc2V0X2luX3BhZ2UoYWRkcnxsZW5ndGgpKSBy ZXZlYWxzIHRoYXQgd2UgY2FuJ3QgYmUgY2FsbGVkCndpdGggYW55dGhpbmcgYnV0IGEgcGFnZSBi b3VuZGFyeSBzbyB0aGUgYWRkcmVzcyBwYXJhbWV0ZXIgaXMKaXJyZWxldmFudCBpbiBoZXJlPwoK VGhlbiB0aGVyZSBpcyB0cmlja2VyeSB3aXRoIHRoZSBwZGVfc2hpZnRpbmcuIEkgdHJpZWQgdG8g ZmluZCBzb21lCmdlbmVyYWxpemF0aW9uIGRvd24gdGhlIHNlcmllcyB0byB0YWtlIGFkdmFudGFn ZSBvZiB0aGlzLiBQZXJoYXBzCkkgbWlzc2VkIGl0PwoKRm9yIG1lIGl0IHNlZW1zIHRoYXQgd2Ug Y2FuIHJlcGxhY2UgdGhpcyB3aXRoIHNpbXBsZToKCnN0YXRpYyBpbmxpbmUgdWludDMyX3QgaTkx NV9wdGVfY291bnQodWludDY0X3QgbGVuZ3RoLCB1aW50MzJfdApwdGVfbGVuKQp7CiAgICAgICBy ZXR1cm4gbWluX3QodWludDMyX3QsIGxlbmd0aCAvIFBBR0VfU0laRSwgUEFHRV9TSVpFIC8gcHRl X2xlbik7Cn0KCi4uLmFuZCBub3QgbG9zZSBhbnl0aGluZy4KCgpPbiB0b3Agb2YgdGhhdCB3aGVu IHRyeWluZyB0byB3cmFwIG15IGJyYWluIGFyb3VuZCB0aGUgZGlmZmVyZW5jZXMKYmV0d2VlbiBH RU42LzcgYW5kIEdFTjgrIHRoZSBmb2xsb3dpbmcgcGF0Y2ggYmVmb3JlIHRoaXMgcGF0Y2ggd291 bGQKbWFrZSB0aGluZ3MgbXVjaCBlYXNpZXIgdG8gdW5kZXJzdGFuZCwgYXRsZWFzdCBmb3IgbWU6 CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRleCBjOWU5M2Y1Li5jMTNmMzJmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMzYsMTMgKzM2LDEzIEBACiAKIHN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGU7CiAKLXR5cGVkZWYgdWludDMyX3QgZ2VuNl9ndHRf cHRlX3Q7Ci10eXBlZGVmIHVpbnQ2NF90IGdlbjhfZ3R0X3B0ZV90OwotdHlwZWRlZiBnZW44X2d0 dF9wdGVfdCBnZW44X3BwZ3R0X3BkZV90OwordHlwZWRlZiB1aW50MzJfdCBnZW42X3B0ZV90Owor dHlwZWRlZiB1aW50NjRfdCBnZW44X3B0ZV90OwordHlwZWRlZiB1aW50NjRfdCBnZW44X3BkZV90 OwogCiAjZGVmaW5lIGd0dF90b3RhbF9lbnRyaWVzKGd0dCkgKChndHQpLmJhc2UudG90YWwgPj4g UEFHRV9TSElGVCkKIAotI2RlZmluZSBJOTE1X1BQR1RUX1BUX0VOVFJJRVMJCShQQUdFX1NJWkUg LyBzaXplb2YoZ2VuNl9ndHRfcHRlX3QpKQorCiAvKiBnZW42LWhzdyBoYXMgYml0IDExLTQgZm9y IHBoeXNpY2FsIGFkZHIgYml0IDM5LTMyICovCiAjZGVmaW5lIEdFTjZfR1RUX0FERFJfRU5DT0RF KGFkZHIpCSgoYWRkcikgfCAoKChhZGRyKSA+PiAyOCkgJiAweGZmMCkpCiAjZGVmaW5lIEdFTjZf UFRFX0FERFJfRU5DT0RFKGFkZHIpCUdFTjZfR1RUX0FERFJfRU5DT0RFKGFkZHIpCkBAIC01MSw4 ICs1MSwxMyBAQCB0eXBlZGVmIGdlbjhfZ3R0X3B0ZV90IGdlbjhfcHBndHRfcGRlX3Q7CiAjZGVm aW5lIEdFTjZfUFRFX1VOQ0FDSEVECQkoMSA8PCAxKQogI2RlZmluZSBHRU42X1BURV9WQUxJRAkJ CSgxIDw8IDApCiAKLSNkZWZpbmUgR0VONl9QUEdUVF9QRF9FTlRSSUVTCQk1MTIKLSNkZWZpbmUg R0VONl9QRF9TSVpFCQkJKEdFTjZfUFBHVFRfUERfRU5UUklFUyAqIFBBR0VfU0laRSkKKyNkZWZp bmUgSTkxNV9QVEVTKHB0ZV9sZW4pCQkoUEFHRV9TSVpFIC8gKHB0ZV9sZW4pKQorI2RlZmluZSBJ OTE1X1BURV9NQVNLKHB0ZV9sZW4pCQkoSTkxNV9QVEVTKHB0ZV9sZW4pIC0gMSkKKyNkZWZpbmUg STkxNV9QREVTCQkJNTEyCisjZGVmaW5lIEk5MTVfUERFX01BU0sJCQkoSTkxNV9QREVTIC0gMSkK KworI2RlZmluZSBHRU42X1BURVMJCQlJOTE1X1BURVMoc2l6ZW9mKGdlbjZfcHRlX3QpKQorI2Rl ZmluZSBHRU42X1BEX1NJWkUJCSAgICAgICAgKEk5MTVfUERFUyAqIFBBR0VfU0laRSkKICNkZWZp bmUgR0VONl9QRF9BTElHTgkJCShQQUdFX1NJWkUgKiAxNikKICNkZWZpbmUgR0VONl9QREVfVkFM SUQJCQkoMSA8PCAwKQogCkBAIC04OSw4ICs5NCw3IEBAIHR5cGVkZWYgZ2VuOF9ndHRfcHRlX3Qg Z2VuOF9wcGd0dF9wZGVfdDsKICNkZWZpbmUgR0VOOF9QVEVfU0hJRlQJCQkxMgogI2RlZmluZSBH RU44X1BURV9NQVNLCQkJMHgxZmYKICNkZWZpbmUgR0VOOF9MRUdBQ1lfUERQRVMJCTQKLSNkZWZp bmUgR0VOOF9QVEVTX1BFUl9QQUdFCQkoUEFHRV9TSVpFIC8gc2l6ZW9mKGdlbjhfZ3R0X3B0ZV90 KSkKLSNkZWZpbmUgR0VOOF9QREVTX1BFUl9QQUdFCQkoUEFHRV9TSVpFIC8gc2l6ZW9mKGdlbjhf cHBndHRfcGRlX3QpKQorI2RlZmluZSBHRU44X1BURVMJCQlJOTE1X1BURVMoc2l6ZW9mKGdlbjhf cHRlX3QpKQogCiAjZGVmaW5lIFBQQVRfVU5DQUNIRURfSU5ERVgJCShfUEFHRV9QV1QgfCBfUEFH RV9QQ0QpCiAjZGVmaW5lIFBQQVRfQ0FDSEVEX1BERV9JTkRFWAkJMCAvKiBXQiBMTEMgKi8KQEAg LTE5OSw3ICsyMDMsNyBAQCBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9lbnRyeSB7CiAJCWRt YV9hZGRyX3QgZGFkZHI7CiAJfTsKIAotCXN0cnVjdCBpOTE1X3BhZ2VfdGFibGVfZW50cnkgKnBh Z2VfdGFibGVbR0VONl9QUEdUVF9QRF9FTlRSSUVTXTsgLyogUERFcyAqLworCXN0cnVjdCBpOTE1 X3BhZ2VfdGFibGVfZW50cnkgKnBhZ2VfdGFibGVbSTkxNV9QREVTXTsgLyogUERFcyAqLwogfTsK IAogc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlcl9lbnRyeSB7CkBAIC0yNDMsOSAr MjQ3LDkgQEAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7CiAJc3RydWN0IGxpc3RfaGVhZCBp bmFjdGl2ZV9saXN0OwogCiAJLyogRklYTUU6IE5lZWQgYSBtb3JlIGdlbmVyaWMgcmV0dXJuIHR5 cGUgKi8KLQlnZW42X2d0dF9wdGVfdCAoKnB0ZV9lbmNvZGUpKGRtYV9hZGRyX3QgYWRkciwKLQkJ CQkgICAgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBsZXZlbCwKLQkJCQkgICAgIGJvb2wgdmFsaWQs IHUzMiBmbGFncyk7IC8qIENyZWF0ZSBhIHZhbGlkIFBURSAqLworCWdlbjZfcHRlX3QgKCpwdGVf ZW5jb2RlKShkbWFfYWRkcl90IGFkZHIsCisJCQkJIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBsZXZl bCwKKwkJCQkgYm9vbCB2YWxpZCwgdTMyIGZsYWdzKTsgLyogQ3JlYXRlIGEgdmFsaWQgUFRFICov CiAJdm9pZCAoKmNsZWFyX3JhbmdlKShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJ CSAgICB1aW50NjRfdCBzdGFydCwKIAkJCSAgICB1aW50NjRfdCBsZW5ndGgsCkBAIC0zMDQsNiAr MzA4LDIxIEBAIHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsKIAl2b2lkICgqZGVidWdfZHVtcCkoc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pOwogfTsKIAorc3Rh dGljIGlubGluZSB1aW50MzJfdCBpOTE1X3B0ZV9pbmRleCh1aW50NjRfdCBhZGRyZXNzLCB1aW50 MzJfdCBwdGVfbGVuKQoreworCXJldHVybiAoYWRkcmVzcyA+PiBQQUdFX1NISUZUKSAmIEk5MTVf UFRFX01BU0socHRlX2xlbik7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgaTkxNV9wdGVf Y291bnQodWludDY0X3QgbGVuZ3RoLCB1aW50MzJfdCBwdGVfbGVuKQoreworCXJldHVybiBtaW5f dCh1aW50MzJfdCwgbGVuZ3RoIC8gUEFHRV9TSVpFLCBJOTE1X1BURVMocHRlX2xlbikpOworfQor CitzdGF0aWMgaW5saW5lIHVpbnQzMl90IGk5MTVfcGRlX2luZGV4KHVpbnQ2NF90IGFkZHIsIHVp bnQzMl90IHBkZV9zaGlmdCkKK3sKKwlyZXR1cm4gKGFkZHIgPj4gcGRlX3NoaWZ0KSAmIEk5MTVf UERFX01BU0s7Cit9CisKIGludCBpOTE1X2dlbV9ndHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKIHZvaWQgaTkxNV9nZW1faW5pdF9nbG9iYWxfZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogdm9pZCBpOTE1X2dsb2JhbF9ndHRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKCldpdGggdGhhdCwgSSB0aGluayB5b3UgY291bGQgd3JpdGUgZ2VuZXJpYyBnZW5fZm9yX2Vh Y2hfcGRlCm1vcmUgZWFzaWx5IGFuZCBqdXN0IHBhcmFtZXRyaXplIHRoZSBnZW42IHZhcmlhbnQg YW5kIGdlbjggb25lCmZ1cnRoZXIgaW4gdGhlIHNlcmllcy4KCi0tTWlrYQoKPiArc3RhdGljIGlu bGluZSB1aW50MzJfdCBpOTE1X3BkZV9pbmRleCh1aW50NjRfdCBhZGRyLCB1aW50MzJfdCBzaGlm dCkKPiArewo+ICsJcmV0dXJuIChhZGRyID4+IHNoaWZ0KSAmIEk5MTVfUERFX01BU0s7Cj4gK30K PiArCj4gK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2VuNl9wdGVfaW5kZXgodWludDMyX3QgYWRk cikKPiArewo+ICsJcmV0dXJuIGk5MTVfcHRlX2luZGV4KGFkZHIsIEdFTjZfUERFX1NISUZUKTsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSBzaXplX3QgZ2VuNl9wdGVfY291bnQodWludDMyX3Qg YWRkciwgdWludDMyX3QgbGVuZ3RoKQo+ICt7Cj4gKwlyZXR1cm4gaTkxNV9wdGVfY291bnQoYWRk ciwgbGVuZ3RoLCBHRU42X1BERV9TSElGVCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgdWlu dDMyX3QgZ2VuNl9wZGVfaW5kZXgodWludDMyX3QgYWRkcikKPiArewo+ICsJcmV0dXJuIGk5MTVf cGRlX2luZGV4KGFkZHIsIEdFTjZfUERFX1NISUZUKTsKPiArfQo+ICsKPiAgaW50IGk5MTVfZ2Vt X2d0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGk5MTVfZ2VtX2luaXRf Z2xvYmFsX2d0dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBpOTE1X2dsb2JhbF9n dHRfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAtLSAKPiAyLjEuMQo+Cj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK