From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC PATCH v1 2/7] iommu/arm: ipmmu-vmsa: Add Xen changes for main driver Date: Tue, 8 Aug 2017 12:34:39 +0100 Message-ID: <2b29be2b-f7ee-c2f0-370e-f2632f2d75fe@arm.com> References: <1501081804-4882-1-git-send-email-olekstysh@gmail.com> <1501081804-4882-3-git-send-email-olekstysh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1df2mb-0001Br-5U for xen-devel@lists.xenproject.org; Tue, 08 Aug 2017 11:34:45 +0000 In-Reply-To: <1501081804-4882-3-git-send-email-olekstysh@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Oleksandr Tyshchenko , xen-devel@lists.xenproject.org Cc: Oleksandr Tyshchenko , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGksCgpPbiAyNi8wNy8xNyAxNjowOSwgT2xla3NhbmRyIFR5c2hjaGVua28gd3JvdGU6Cj4gRnJv bTogT2xla3NhbmRyIFR5c2hjaGVua28gPG9sZWtzYW5kcl90eXNoY2hlbmtvQGVwYW0uY29tPgo+ Cj4gTW9kaWZ5IHRoZSBMaW51eCBJUE1NVSBkcml2ZXIgdG8gYmUgZnVuY3Rpb25hbCBpbnNpZGUg WGVuLgo+IEFsbCBkZXZpY2VzIHdpdGhpbiBhIHNpbmdsZSBYZW4gZG9tYWluIG11c3QgdXNlIHRo ZSBzYW1lCj4gSU9NTVUgY29udGV4dCBubyBtYXR0ZXIgd2hhdCBJT01NVSBkb21haW5zIHRoZXkg YXJlIGF0dGFjaGVkIHRvLgo+IFRoaXMgaXMgdGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGRy aXZlcnMgaW4gTGludXgKPiBhbmQgWGVuLiBIYXZpbmcgOCBzZXBhcmF0ZSBjb250ZXh0cyBhbGxv dyB1cyB0byBwYXNzdGhyb3VnaAo+IGRldmljZXMgdG8gOCBndWVzdCBkb21haW4gYXQgdGhlIHNh bWUgdGltZS4KPgo+IEFsc28gd3JhcCBmb2xsb3dpbmcgY29kZSBpbiAjaWYgMDoKPiAtIEFsbCBE TUEgcmVsYXRlZCBzdHVmZgo+IC0gTGludXggUE0gY2FsbGJhY2tzCj4gLSBEcml2ZXIgcmVtb3Zl IGNhbGxiYWNrCj4gLSBpb21tdV9ncm91cCBtYW5hZ2VtZW50Cj4KPiBNYXliZSwgaXQgd291bGQg YmUgbW9yZSBjb3JyZWN0IHRvIG1vdmUgZGlmZmVyZW50IExpbnV4MlhlbiB3cmFwcGVycywKPiBk ZWZpbmUtcywgaGVscGVycyBmcm9tIElQTU1VLVZNU0EgYW5kIFNNTVUgdG8gc29tZSBjb21tb24g ZmlsZQo+IGJlZm9yZSBpbnRyb2R1Y2luZyBJUE1NVS1WTVNBIHBhdGNoIHNlcmllcy4gQW5kIHRo aXMgY29tbW9uIGZpbGUKPiBtaWdodCBiZSByZXVzZWQgYnkgcG9zc2libGUgZnV0dXJlIElPTU1V cyBvbiBBUk0uCgpZZXMgcGxlYXNlIGlmIHdlIGdvIGZvcndhcmQgd2l0aCB0aGUgTGludXggd2F5 LgoKPgo+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlz aGNoZW5rb0BlcGFtLmNvbT4KPiBDQzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNv bT4KPiBDQzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgo+IC0t LQo+ICB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vaXBtbXUtdm1zYS5jIHwgOTg0ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDk0OCBpbnNlcnRp b25zKCspLCAzNiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC9hcm0vaXBtbXUtdm1zYS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lw bW11LXZtc2EuYwo+IGluZGV4IDJiMzgwZmYuLmU1NGI1MDcgMTAwNjQ0Cj4gLS0tIGEveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYXJtL2lwbW11LXZtc2EuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2FybS9pcG1tdS12bXNhLmMKPiBAQCAtNiwzMSArNiwyMTIgQEAKPiAgICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKPiAgICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiAgICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgo+ICsgKgo+ICsgKiBCYXNlZCBvbiBMaW51 eCBkcml2ZXJzL2lvbW11L2lwbW11LXZtc2EuYwo+ICsgKiA9PiBjb21taXQgZjQ3NDdlYmE4OWM5 YjVkOTBmZGYwYTU0NTg4NjYyODNjNDczOTVkOAo+ICsgKiAoaW9tbXUvaXBtbXUtdm1zYTogUmVz dHJpY3QgSU9NTVUgRG9tYWluIEdlb21ldHJ5IHRvIDMyLWJpdCBhZGRyZXNzIHNwYWNlKQo+ICsg Kgo+ICsgKiBYZW4gbW9kaWZpY2F0aW9uOgo+ICsgKiBPbGVrc2FuZHIgVHlzaGNoZW5rbyA8T2xl a3NhbmRyX1R5c2hjaGVua29AZXBhbS5jb20+Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3 IEVQQU0gU3lzdGVtcyBJbmMuCj4gICAqLwo+Cj4gLSNpbmNsdWRlIDxsaW51eC9iaXRtYXAuaD4K PiAtI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtaW9tbXUu aD4KPiAtI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9l cnIuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L2V4cG9ydC5oPgo+IC0jaW5jbHVkZSA8bGludXgvaW50 ZXJydXB0Lmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9pby5oPgo+IC0jaW5jbHVkZSA8bGludXgvaW9t bXUuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+IC0jaW5jbHVkZSA8bGludXgvb2Yu aD4KPiAtI2luY2x1ZGUgPGxpbnV4L29mX2lvbW11Lmg+Cj4gLSNpbmNsdWRlIDxsaW51eC9wbGF0 Zm9ybV9kZXZpY2UuaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+Cj4gLSNpbmNsdWRlIDxs aW51eC9zbGFiLmg+Cj4gLQo+IC0jaWYgZGVmaW5lZChDT05GSUdfQVJNKSAmJiAhZGVmaW5lZChD T05GSUdfSU9NTVVfRE1BKQo+IC0jaW5jbHVkZSA8YXNtL2RtYS1pb21tdS5oPgo+IC0jaW5jbHVk ZSA8YXNtL3BnYWxsb2MuaD4KPiAtI2VuZGlmCj4gKyNpbmNsdWRlIDx4ZW4vY29uZmlnLmg+Cj4g KyNpbmNsdWRlIDx4ZW4vZGVsYXkuaD4KPiArI2luY2x1ZGUgPHhlbi9lcnJuby5oPgo+ICsjaW5j bHVkZSA8eGVuL2Vyci5oPgo+ICsjaW5jbHVkZSA8eGVuL2lycS5oPgo+ICsjaW5jbHVkZSA8eGVu L2xpYi5oPgo+ICsjaW5jbHVkZSA8eGVuL2xpc3QuaD4KPiArI2luY2x1ZGUgPHhlbi9tbS5oPgo+ ICsjaW5jbHVkZSA8eGVuL3ZtYXAuaD4KPiArI2luY2x1ZGUgPHhlbi9yYnRyZWUuaD4KPiArI2lu Y2x1ZGUgPHhlbi9zY2hlZC5oPgo+ICsjaW5jbHVkZSA8eGVuL3NpemVzLmg+Cj4gKyNpbmNsdWRl IDxhc20vYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxhc20vZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxh c20vaW8uaD4KPiArI2luY2x1ZGUgPGFzbS9wbGF0Zm9ybS5oPgo+Cj4gICNpbmNsdWRlICJpby1w Z3RhYmxlLmgiCj4KPiArLyogVE9ETzoKPiArICogMS4gT3B0aW1pemUgeGVuX2RvbWFpbi0+bG9j ayB1c2FnZS4KPiArICogMi4gU2hvdyBkb21haW5faWQgaW4gZXZlcnkgcHJpbnRrIHdoaWNoIGlz IHBlciBYZW4gZG9tYWluLgo+ICsgKgo+ICsgKi8KPiArCj4gKy8qKioqKiBTdGFydCBvZiBYZW4g c3BlY2lmaWMgY29kZSAqKioqKi8KPiArCj4gKyNkZWZpbmUgSU9NTVVfUkVBRAkoMSA8PCAwKQo+ ICsjZGVmaW5lIElPTU1VX1dSSVRFCSgxIDw8IDEpCj4gKyNkZWZpbmUgSU9NTVVfQ0FDSEUJKDEg PDwgMikgLyogRE1BIGNhY2hlIGNvaGVyZW5jeSAqLwo+ICsjZGVmaW5lIElPTU1VX05PRVhFQwko MSA8PCAzKQo+ICsjZGVmaW5lIElPTU1VX01NSU8JKDEgPDwgNCkgLyogZS5nLiB0aGluZ3MgbGlr ZSBNU0kgZG9vcmJlbGxzICovCj4gKwo+ICsjZGVmaW5lIF9fZmxzKHgpIChmbHMoeCkgLSAxKQo+ ICsjZGVmaW5lIF9fZmZzKHgpIChmZnMoeCkgLSAxKQo+ICsKPiArI2RlZmluZSBJT19QR1RBQkxF X1FVSVJLX0FSTV9OUwkJQklUKDApCj4gKwo+ICsjZGVmaW5lIGlvcmVhZDMyIHJlYWRsCj4gKyNk ZWZpbmUgaW93cml0ZTMyIHdyaXRlbAo+ICsKPiArI2RlZmluZSBkZXZfaW5mbyBkZXZfbm90aWNl Cj4gKwo+ICsjZGVmaW5lIGRldm1fcmVxdWVzdF9pcnEodW51c2VkLCBpcnEsIGZ1bmMsIGZsYWdz LCBuYW1lLCBkZXYpIFwKPiArCXJlcXVlc3RfaXJxKGlycSwgZmxhZ3MsIGZ1bmMsIG5hbWUsIGRl dikKPiArCj4gKy8qIEFsaWFzIHRvIFhlbiBkZXZpY2UgdHJlZSBoZWxwZXJzICovCj4gKyNkZWZp bmUgZGV2aWNlX25vZGUgZHRfZGV2aWNlX25vZGUKPiArI2RlZmluZSBvZl9waGFuZGxlX2FyZ3Mg ZHRfcGhhbmRsZV9hcmdzCj4gKyNkZWZpbmUgb2ZfZGV2aWNlX2lkIGR0X2RldmljZV9tYXRjaAo+ ICsjZGVmaW5lIG9mX21hdGNoX25vZGUgZHRfbWF0Y2hfbm9kZQo+ICsjZGVmaW5lIG9mX3BhcnNl X3BoYW5kbGVfd2l0aF9hcmdzIGR0X3BhcnNlX3BoYW5kbGVfd2l0aF9hcmdzCj4gKyNkZWZpbmUg b2ZfZmluZF9wcm9wZXJ0eSBkdF9maW5kX3Byb3BlcnR5Cj4gKyNkZWZpbmUgb2ZfY291bnRfcGhh bmRsZV93aXRoX2FyZ3MgZHRfY291bnRfcGhhbmRsZV93aXRoX2FyZ3MKPiArCj4gKy8qIFhlbjog SGVscGVycyB0byBnZXQgZGV2aWNlIE1NSU8gYW5kIElSUXMgKi8KPiArc3RydWN0IHJlc291cmNl Cj4gK3sKPiArCXU2NCBhZGRyOwo+ICsJdTY0IHNpemU7Cj4gKwl1bnNpZ25lZCBpbnQgdHlwZTsK PiArfTsKPiArCj4gKyNkZWZpbmUgcmVzb3VyY2Vfc2l6ZShyZXMpIChyZXMpLT5zaXplOwo+ICsK PiArI2RlZmluZSBwbGF0Zm9ybV9kZXZpY2UgZHRfZGV2aWNlX25vZGUKPiArCj4gKyNkZWZpbmUg SU9SRVNPVVJDRV9NRU0gMAo+ICsjZGVmaW5lIElPUkVTT1VSQ0VfSVJRIDEKPiArCj4gK3N0YXRp YyBzdHJ1Y3QgcmVzb3VyY2UgKnBsYXRmb3JtX2dldF9yZXNvdXJjZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LAo+ICsJCQkJCSAgICAgIHVuc2lnbmVkIGludCB0eXBlLAo+ICsJCQkJCSAg ICAgIHVuc2lnbmVkIGludCBudW0pCj4gK3sKPiArCS8qCj4gKwkgKiBUaGUgcmVzb3VyY2UgaXMg b25seSB1c2VkIGJldHdlZW4gMiBjYWxscyBvZiBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UuCj4gKwkg KiBJdCdzIHF1aXRlIHVnbHkgYnV0IGl0J3MgYXZvaWQgdG8gYWRkIHRvbyBtdWNoIGNvZGUgaW4g dGhlIHBhcnQKPiArCSAqIGltcG9ydGVkIGZyb20gTGludXgKPiArCSAqLwo+ICsJc3RhdGljIHN0 cnVjdCByZXNvdXJjZSByZXM7Cj4gKwlpbnQgcmV0ID0gMDsKPiArCj4gKwlyZXMudHlwZSA9IHR5 cGU7Cj4gKwo+ICsJc3dpdGNoICh0eXBlKSB7Cj4gKwljYXNlIElPUkVTT1VSQ0VfTUVNOgo+ICsJ CXJldCA9IGR0X2RldmljZV9nZXRfYWRkcmVzcyhwZGV2LCBudW0sICZyZXMuYWRkciwgJnJlcy5z aXplKTsKPiArCj4gKwkJcmV0dXJuICgocmV0KSA/IE5VTEwgOiAmcmVzKTsKPiArCj4gKwljYXNl IElPUkVTT1VSQ0VfSVJROgo+ICsJCXJldCA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgbnVtKTsK PiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJCXJlcy5hZGRyID0g cmV0Owo+ICsJCXJlcy5zaXplID0gMTsKPiArCj4gKwkJcmV0dXJuICZyZXM7Cj4gKwo+ICsJZGVm YXVsdDoKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArfQo+ICsKPiArZW51bSBpcnFyZXR1cm4g ewo+ICsJSVJRX05PTkUJPSAoMCA8PCAwKSwKPiArCUlSUV9IQU5ETEVECT0gKDEgPDwgMCksCj4g K307Cj4gKwo+ICt0eXBlZGVmIGVudW0gaXJxcmV0dXJuIGlycXJldHVybl90Owo+ICsKPiArLyog RGV2aWNlIGxvZ2dlciBmdW5jdGlvbnMgKi8KPiArI2RlZmluZSBkZXZfcHJpbnQoZGV2LCBsdmws IGZtdCwgLi4uKQkJCQkJCVwKPiArCSBwcmludGsobHZsICJpcG1tdTogJXM6ICIgZm10LCBkdF9u b2RlX2Z1bGxfbmFtZShkZXZfdG9fZHQoZGV2KSksICMjIF9fVkFfQVJHU19fKQo+ICsKPiArI2Rl ZmluZSBkZXZfZGJnKGRldiwgZm10LCAuLi4pIGRldl9wcmludChkZXYsIFhFTkxPR19ERUJVRywg Zm10LCAjIyBfX1ZBX0FSR1NfXykKPiArI2RlZmluZSBkZXZfbm90aWNlKGRldiwgZm10LCAuLi4p IGRldl9wcmludChkZXYsIFhFTkxPR19JTkZPLCBmbXQsICMjIF9fVkFfQVJHU19fKQo+ICsjZGVm aW5lIGRldl93YXJuKGRldiwgZm10LCAuLi4pIGRldl9wcmludChkZXYsIFhFTkxPR19XQVJOSU5H LCBmbXQsICMjIF9fVkFfQVJHU19fKQo+ICsjZGVmaW5lIGRldl9lcnIoZGV2LCBmbXQsIC4uLikg ZGV2X3ByaW50KGRldiwgWEVOTE9HX0VSUiwgZm10LCAjIyBfX1ZBX0FSR1NfXykKPiArCj4gKyNk ZWZpbmUgZGV2X2Vycl9yYXRlbGltaXRlZChkZXYsIGZtdCwgLi4uKQkJCQkJXAo+ICsJIGRldl9w cmludChkZXYsIFhFTkxPR19FUlIsIGZtdCwgIyMgX19WQV9BUkdTX18pCj4gKwo+ICsjZGVmaW5l IGRldl9uYW1lKGRldikgZHRfbm9kZV9mdWxsX25hbWUoZGV2X3RvX2R0KGRldikpCj4gKwo+ICsv KiBBbGlhcyB0byBYZW4gYWxsb2NhdGlvbiBoZWxwZXJzICovCj4gKyNkZWZpbmUga2ZyZWUgeGZy ZWUKPiArI2RlZmluZSBrbWFsbG9jKHNpemUsIGZsYWdzKQkJX3htYWxsb2Moc2l6ZSwgc2l6ZW9m KHZvaWQgKikpCj4gKyNkZWZpbmUga3phbGxvYyhzaXplLCBmbGFncykJCV94emFsbG9jKHNpemUs IHNpemVvZih2b2lkICopKQo+ICsjZGVmaW5lIGRldm1fa3phbGxvYyhkZXYsIHNpemUsIGZsYWdz KQlfeHphbGxvYyhzaXplLCBzaXplb2Yodm9pZCAqKSkKPiArI2RlZmluZSBrbWFsbG9jX2FycmF5 KHNpemUsIG4sIGZsYWdzKQlfeG1hbGxvY19hcnJheShzaXplLCBzaXplb2Yodm9pZCAqKSwgbikK PiArI2RlZmluZSBrY2FsbG9jKHNpemUsIG4sIGZsYWdzKQkJX3h6YWxsb2NfYXJyYXkoc2l6ZSwg c2l6ZW9mKHZvaWQgKiksIG4pCj4gKwo+ICtzdGF0aWMgdm9pZCBfX2lvbWVtICpkZXZtX2lvcmVt YXBfcmVzb3VyY2Uoc3RydWN0IGRldmljZSAqZGV2LAo+ICsJCQkJCSAgIHN0cnVjdCByZXNvdXJj ZSAqcmVzKQo+ICt7Cj4gKwl2b2lkIF9faW9tZW0gKnB0cjsKPiArCj4gKwlpZiAoIXJlcyB8fCBy ZXMtPnR5cGUgIT0gSU9SRVNPVVJDRV9NRU0pIHsKPiArCQlkZXZfZXJyKGRldiwgIkludmFsaWQg cmVzb3VyY2VcbiIpOwo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsJfQo+ICsKPiAr CXB0ciA9IGlvcmVtYXBfbm9jYWNoZShyZXMtPmFkZHIsIHJlcy0+c2l6ZSk7Cj4gKwlpZiAoIXB0 cikgewo+ICsJCWRldl9lcnIoZGV2LAo+ICsJCQkiaW9yZW1hcCBmYWlsZWQgKGFkZHIgMHglIlBS SXg2NCIgc2l6ZSAweCUiUFJJeDY0IilcbiIsCj4gKwkJCXJlcy0+YWRkciwgcmVzLT5zaXplKTsK PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcHRyOwo+ ICt9Cj4gKwo+ICsvKiBYZW4gZG9lc24ndCBoYW5kbGUgSU9NTVUgZmF1bHQgKi8KPiArI2RlZmlu ZSByZXBvcnRfaW9tbXVfZmF1bHQoLi4uKQkxCj4gKwo+ICsjZGVmaW5lIE1PRFVMRV9ERVZJQ0Vf VEFCTEUodHlwZSwgbmFtZSkKPiArI2RlZmluZSBtb2R1bGVfcGFyYW1fbmFtZWQobmFtZSwgdmFs dWUsIHR5cGUsIHBlcm0pCj4gKyNkZWZpbmUgTU9EVUxFX1BBUk1fREVTQyhfcGFybSwgZGVzYykK PiArCj4gKy8qIFhlbjogRHVtbXkgaW9tbXVfZG9tYWluICovCj4gK3N0cnVjdCBpb21tdV9kb21h aW4KPiArewo+ICsJYXRvbWljX3QgcmVmOwo+ICsJLyogVXNlZCB0byBsaW5rIGlvbW11X2RvbWFp biBjb250ZXh0cyBmb3IgYSBzYW1lIGRvbWFpbi4KPiArCSAqIFRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBwZXItSVBNTVUgdG8gdXNlZCBieSB0aGUgZG9tYWluLgo+ICsJICogKi8KPiArCXN0cnVjdCBs aXN0X2hlYWQJCWxpc3Q7Cj4gK307Cj4gKwo+ICsvKiBYZW46IERlc2NyaWJlcyBpbmZvcm1hdGlv bnMgcmVxdWlyZWQgZm9yIGEgWGVuIGRvbWFpbiAqLwo+ICtzdHJ1Y3QgaXBtbXVfdm1zYV94ZW5f ZG9tYWluIHsKPiArCXNwaW5sb2NrX3QJCQlsb2NrOwo+ICsJLyogTGlzdCBvZiBjb250ZXh0IChp LmUgaW9tbXVfZG9tYWluKSBhc3NvY2lhdGVkIHRvIHRoaXMgZG9tYWluICovCj4gKwlzdHJ1Y3Qg bGlzdF9oZWFkCQljb250ZXh0czsKPiArCXN0cnVjdCBpb21tdV9kb21haW4JCSpiYXNlX2NvbnRl eHQ7Cj4gK307Cj4gKwo+ICsvKgo+ICsgKiBYZW46IEluZm9ybWF0aW9uIGFib3V0IGVhY2ggZGV2 aWNlIHN0b3JlZCBpbiBkZXYtPmFyY2hkYXRhLmlvbW11Cj4gKyAqCj4gKyAqIE9uIExpbnV4IHRo ZSBkZXYtPmFyY2hkYXRhLmlvbW11IG9ubHkgc3RvcmVzIHRoZSBhcmNoIHNwZWNpZmljIGluZm9y bWF0aW9uLAo+ICsgKiBidXQsIG9uIFhlbiwgd2UgYWxzbyBoYXZlIHRvIHN0b3JlIHRoZSBpb21t dSBkb21haW4uCj4gKyAqLwo+ICtzdHJ1Y3QgaXBtbXVfdm1zYV94ZW5fZGV2aWNlIHsKPiArCXN0 cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbjsKPiArCXN0cnVjdCBpcG1tdV92bXNhX2FyY2hkYXRh ICphcmNoZGF0YTsKPiArfTsKPiArCj4gKyNkZWZpbmUgZGV2X2lvbW11KGRldikgKChzdHJ1Y3Qg aXBtbXVfdm1zYV94ZW5fZGV2aWNlICopZGV2LT5hcmNoZGF0YS5pb21tdSkKPiArI2RlZmluZSBk ZXZfaW9tbXVfZG9tYWluKGRldikgKGRldl9pb21tdShkZXYpLT5kb21haW4pCj4gKwo+ICsvKioq KiogU3RhcnQgb2YgTGludXggSVBNTVUgY29kZSAqKioqKi8KPiArCj4gICNkZWZpbmUgSVBNTVVf Q1RYX01BWCA4Cj4KPiAgc3RydWN0IGlwbW11X2ZlYXR1cmVzIHsKPiBAQCAtNjQsNyArMjQ1LDkg QEAgc3RydWN0IGlwbW11X3Ztc2FfZGV2aWNlIHsKPiAgCXN0cnVjdCBod19yZWdpc3RlciAqcmVn X2JhY2t1cFtJUE1NVV9DVFhfTUFYXTsKPiAgI2VuZGlmCj4KPiArI2lmIDAgLyogWGVuOiBOb3Qg bmVlZGVkICovCj4gIAlzdHJ1Y3QgZG1hX2lvbW11X21hcHBpbmcgKm1hcHBpbmc7Cj4gKyNlbmRp Zgo+ICB9Owo+Cj4gIHN0cnVjdCBpcG1tdV92bXNhX2RvbWFpbiB7Cj4gQEAgLTc3LDYgKzI2MCw5 IEBAIHN0cnVjdCBpcG1tdV92bXNhX2RvbWFpbiB7Cj4KPiAgCXVuc2lnbmVkIGludCBjb250ZXh0 X2lkOwo+ICAJc3BpbmxvY2tfdCBsb2NrOwkJCS8qIFByb3RlY3RzIG1hcHBpbmdzICovCj4gKwo+ ICsJLyogWGVuOiBEb21haW4gYXNzb2NpYXRlZCB0byB0aGlzIGNvbmZpZ3VyYXRpb24gKi8KPiAr CXN0cnVjdCBkb21haW4gKmQ7Cj4gIH07Cj4KPiAgc3RydWN0IGlwbW11X3Ztc2FfYXJjaGRhdGEg ewo+IEBAIC05NCwxNCArMjgwLDIwIEBAIHN0cnVjdCBpcG1tdV92bXNhX2FyY2hkYXRhIHsKPiAg c3RhdGljIERFRklORV9TUElOTE9DSyhpcG1tdV9kZXZpY2VzX2xvY2spOwo+ICBzdGF0aWMgTElT VF9IRUFEKGlwbW11X2RldmljZXMpOwo+Cj4gKyNpZiAwIC8qIFhlbjogTm90IG5lZWRlZCAqLwo+ ICBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlwbW11X3NsYXZlX2RldmljZXNfbG9jayk7Cj4gIHN0 YXRpYyBMSVNUX0hFQUQoaXBtbXVfc2xhdmVfZGV2aWNlcyk7Cj4gKyNlbmRpZgo+Cj4gIHN0YXRp YyBzdHJ1Y3QgaXBtbXVfdm1zYV9kb21haW4gKnRvX3Ztc2FfZG9tYWluKHN0cnVjdCBpb21tdV9k b21haW4gKmRvbSkKPiAgewo+ICAJcmV0dXJuIGNvbnRhaW5lcl9vZihkb20sIHN0cnVjdCBpcG1t dV92bXNhX2RvbWFpbiwgaW9fZG9tYWluKTsKPiAgfQo+Cj4gKy8qCj4gKyAqIFhlbjogUmV3cml0 ZSBMaW51eCBoZWxwZXJzIHRvIG1hbmlwdWxhdGUgd2l0aCBhcmNoZGF0YSBvbiBYZW4uCj4gKyAq Lwo+ICsjaWYgMAo+ICAjaWYgZGVmaW5lZChDT05GSUdfQVJNKSB8fCBkZWZpbmVkKENPTkZJR19B Uk02NCkKPiAgc3RhdGljIHN0cnVjdCBpcG1tdV92bXNhX2FyY2hkYXRhICp0b19hcmNoZGF0YShz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiBAQCAtMTIwLDYgKzMxMiwxNiBAQCBzdGF0aWMgdm9p ZCBzZXRfYXJjaGRhdGEoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXBtbXVfdm1zYV9hcmNo ZGF0YSAqcCkKPiAgewo+ICB9Cj4gICNlbmRpZgo+ICsjZWxzZQo+ICtzdGF0aWMgc3RydWN0IGlw bW11X3Ztc2FfYXJjaGRhdGEgKnRvX2FyY2hkYXRhKHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ ICsJcmV0dXJuIGRldl9pb21tdShkZXYpLT5hcmNoZGF0YTsKPiArfQo+ICtzdGF0aWMgdm9pZCBz ZXRfYXJjaGRhdGEoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaXBtbXVfdm1zYV9hcmNoZGF0 YSAqcCkKPiArewo+ICsJZGV2X2lvbW11KGRldiktPmFyY2hkYXRhID0gcDsKPiArfQo+ICsjZW5k aWYKPgo+ICAjZGVmaW5lIFRMQl9MT09QX1RJTUVPVVQJCTEwMAkvKiAxMDB1cyAqLwo+Cj4gQEAg LTM1NSw2ICs1NTcsMTAgQEAgc3RhdGljIHN0cnVjdCBod19yZWdpc3RlciAqcm9vdF9wZ3RhYmxl W0lQTU1VX0NUWF9NQVhdID0gewo+Cj4gIHN0YXRpYyBib29sIGlwbW11X2lzX3Jvb3Qoc3RydWN0 IGlwbW11X3Ztc2FfZGV2aWNlICptbXUpCj4gIHsKPiArCS8qIFhlbjogRml4ICovCgpIbW1tLiBD YW4gd2UgZ2V0IGEgYml0IG1vcmUgZGV0YWlscz8KCj4gKwlpZiAoIW1tdSkKPiArCQlyZXR1cm4g ZmFsc2U7Cj4gKwo+ICAJaWYgKG1tdS0+ZmVhdHVyZXMtPmhhc19jYWNoZV9sZWFmX25vZGVzKQo+ ICAJCXJldHVybiBtbXUtPmlzX2xlYWYgPyBmYWxzZSA6IHRydWU7Cj4gIAllbHNlCj4gQEAgLTQw NSwxNCArNjExLDI4IEBAIHN0YXRpYyB2b2lkIGlwbW11X2N0eF93cml0ZShzdHJ1Y3QgaXBtbXVf dm1zYV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IHJlZywKPiAgCWlwbW11X3dyaXRlKGRv bWFpbi0+cm9vdCwgZG9tYWluLT5jb250ZXh0X2lkICogSU1fQ1RYX1NJWkUgKyByZWcsIGRhdGEp Owo+ICB9Cj4KPiAtc3RhdGljIHZvaWQgaXBtbXVfY3R4X3dyaXRlMihzdHJ1Y3QgaXBtbXVfdm1z YV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgaW50IHJlZywKPiArLyogWGVuOiBXcml0ZSB0aGUg Y29udGV4dCBmb3IgY2FjaGUgSVBNTVUgb25seS4gKi8KClNhbWUgaGVyZS4gV2h5IGRvZXMgaXQg bmVlZCB0byBiZSBkaWZmZXJlbnQgd2l0aCBYZW4/Cgo+ICtzdGF0aWMgdm9pZCBpcG1tdV9jdHhf d3JpdGUxKHN0cnVjdCBpcG1tdV92bXNhX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgcmVn LAo+ICAJCQkgICAgIHUzMiBkYXRhKQo+ICB7Cj4gIAlpZiAoZG9tYWluLT5tbXUgIT0gZG9tYWlu LT5yb290KQo+IC0JCWlwbW11X3dyaXRlKGRvbWFpbi0+bW11LAo+IC0JCQkgICAgZG9tYWluLT5j b250ZXh0X2lkICogSU1fQ1RYX1NJWkUgKyByZWcsIGRhdGEpOwo+ICsJCWlwbW11X3dyaXRlKGRv bWFpbi0+bW11LCBkb21haW4tPmNvbnRleHRfaWQgKiBJTV9DVFhfU0laRSArIHJlZywgZGF0YSk7 Cj4gK30KPgo+IC0JaXBtbXVfd3JpdGUoZG9tYWluLT5yb290LCBkb21haW4tPmNvbnRleHRfaWQg KiBJTV9DVFhfU0laRSArIHJlZywgZGF0YSk7Cj4gKy8qCj4gKyAqIFhlbjogV3JpdGUgdGhlIGNv bnRleHQgZm9yIGJvdGggcm9vdCBJUE1NVSBhbmQgYWxsIGNhY2hlIElQTU1Vcwo+ICsgKiB0aGF0 IGFzc2lnbmVkIHRvIHRoaXMgWGVuIGRvbWFpbi4KPiArICovCj4gK3N0YXRpYyB2b2lkIGlwbW11 X2N0eF93cml0ZTIoc3RydWN0IGlwbW11X3Ztc2FfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGlu dCByZWcsCj4gKwkJCSAgICAgdTMyIGRhdGEpCj4gK3sKPiArCXN0cnVjdCBpcG1tdV92bXNhX3hl bl9kb21haW4gKnhlbl9kb21haW4gPSBkb21faW9tbXUoZG9tYWluLT5kKS0+YXJjaC5wcml2Owo+ ICsJc3RydWN0IGlvbW11X2RvbWFpbiAqaW9fZG9tYWluOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hf ZW50cnkoaW9fZG9tYWluLCAmeGVuX2RvbWFpbi0+Y29udGV4dHMsIGxpc3QpCj4gKwkJaXBtbXVf Y3R4X3dyaXRlMSh0b192bXNhX2RvbWFpbihpb19kb21haW4pLCByZWcsIGRhdGEpOwo+ICsKPiAr CWlwbW11X2N0eF93cml0ZShkb21haW4sIHJlZywgZGF0YSk7Cj4gIH0KPgo+ICAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+IEBAIC00ODgsNiArNzA4LDEwIEBAIHN0YXRpYyB2b2lkIGlwbW11X3Rs Yl9mbHVzaF9hbGwodm9pZCAqY29va2llKQo+ICB7Cj4gIAlzdHJ1Y3QgaXBtbXVfdm1zYV9kb21h aW4gKmRvbWFpbiA9IGNvb2tpZTsKPgo+ICsJLyogWGVuOiBKdXN0IHJldHVybiBpZiBjb250ZXh0 X2lkIGhhcyBub24tZXhpc3RlbnQgdmFsdWUgKi8KClNhbWUgaGVyZS4KCj4gKwlpZiAoZG9tYWlu LT5jb250ZXh0X2lkID49IGRvbWFpbi0+cm9vdC0+bnVtX2N0eCkKPiArCQlyZXR1cm47Cj4gKwo+ ICAJaXBtbXVfdGxiX2ludmFsaWRhdGUoZG9tYWluKTsKPiAgfQo+Cj4gQEAgLTU0OSw4ICs3NzMs MTAgQEAgc3RhdGljIGludCBpcG1tdV9kb21haW5faW5pdF9jb250ZXh0KHN0cnVjdCBpcG1tdV92 bXNhX2RvbWFpbiAqZG9tYWluKQo+ICAJZG9tYWluLT5jZmcuaWFzID0gMzI7Cj4gIAlkb21haW4t PmNmZy5vYXMgPSA0MDsKPiAgCWRvbWFpbi0+Y2ZnLnRsYiA9ICZpcG1tdV9nYXRoZXJfb3BzOwo+ ICsjaWYgMCAvKiBYZW46IE5vdCBuZWVkZWQgKi8KPiAgCWRvbWFpbi0+aW9fZG9tYWluLmdlb21l dHJ5LmFwZXJ0dXJlX2VuZCA9IERNQV9CSVRfTUFTSygzMik7Cj4gIAlkb21haW4tPmlvX2RvbWFp bi5nZW9tZXRyeS5mb3JjZV9hcGVydHVyZSA9IHRydWU7Cj4gKyNlbmRpZgo+ICAJLyoKPiAgCSAq IFRPRE86IEFkZCBzdXBwb3J0IGZvciBjb2hlcmVudCB3YWxrIHRocm91Z2ggQ0NJIHdpdGggRFZN IGFuZCByZW1vdmUKPiAgCSAqIGNhY2hlIGhhbmRsaW5nLiBGb3Igbm93LCBkZWxlZ2F0ZSBpdCB0 byB0aGUgaW8tcGd0YWJsZSBjb2RlLgo+IEBAIC01NjIsNiArNzg4LDkgQEAgc3RhdGljIGludCBp cG1tdV9kb21haW5faW5pdF9jb250ZXh0KHN0cnVjdCBpcG1tdV92bXNhX2RvbWFpbiAqZG9tYWlu KQo+ICAJaWYgKCFkb21haW4tPmlvcCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPgo+ICsJLyogWGVu OiBJbml0aWFsaXplIGNvbnRleHRfaWQgd2l0aCBub24tZXhpc3RlbnQgdmFsdWUgKi8KPiArCWRv bWFpbi0+Y29udGV4dF9pZCA9IGRvbWFpbi0+cm9vdC0+bnVtX2N0eDsKCldoeSBkbyB5b3UgbmVl ZCB0byBkbyB0aGF0IGZvciBYZW4/IE92ZXJhbGwgSSB0aGluayB5b3UgbmVlZCBhIGJpdCBtb3Jl IApleHBsYW5hdGlvbiBvZiB3aHkgeW91IG5lZWQgdGhvc2UgY2hhbmdlcyBmb3IgWGVuIGNvbXBh cmUgdG8gdGhlIExpbnV4IApkcml2ZXIuCgo+ICsKPiAgCS8qCj4gIAkgKiBGaW5kIGFuIHVudXNl ZCBjb250ZXh0Lgo+ICAJICovCj4gQEAgLTU3OCw2ICs4MDcsMTEgQEAgc3RhdGljIGludCBpcG1t dV9kb21haW5faW5pdF9jb250ZXh0KHN0cnVjdCBpcG1tdV92bXNhX2RvbWFpbiAqZG9tYWluKQo+ Cj4gIAkvKiBUVEJSMCAqLwo+ICAJdHRiciA9IGRvbWFpbi0+Y2ZnLmFybV9scGFlX3MxX2NmZy50 dGJyWzBdOwo+ICsKPiArCS8qIFhlbjogKi8KPiArCWRldl9ub3RpY2UoZG9tYWluLT5yb290LT5k ZXYsICJkJWQ6IFNldCBJUE1NVSBjb250ZXh0ICV1IChwZ2QgMHglIlBSSXg2NCIpXG4iLAo+ICsJ CQlkb21haW4tPmQtPmRvbWFpbl9pZCwgZG9tYWluLT5jb250ZXh0X2lkLCB0dGJyKTsKCklmIHlv dSB3YW50IHRvIGtlZXAgZHJpdmVyIGNsb3NlIHRvIExpbnV4LCB0aGVuIHlvdSBuZWVkIHRvIGF2 b2lkIAp1bmVjZXNzYXJ5IGNoYW5nZS4KCj4gKwo+ICAJaXBtbXVfY3R4X3dyaXRlKGRvbWFpbiwg SU1UVExCUjAsIHR0YnIpOwo+ICAJaXBtbXVfY3R4X3dyaXRlKGRvbWFpbiwgSU1UVFVCUjAsIHR0 YnIgPj4gMzIpOwo+Cj4gQEAgLTYxNiw4ICs4NTAsOSBAQCBzdGF0aWMgaW50IGlwbW11X2RvbWFp bl9pbml0X2NvbnRleHQoc3RydWN0IGlwbW11X3Ztc2FfZG9tYWluICpkb21haW4pCj4gIAkgKiB0 cmFuc2xhdGlvbiB0YWJsZSBmb3JtYXQgZG9lc24ndCB1c2UgVEVYIHJlbWFwcGluZy4gRG9uJ3Qg ZW5hYmxlIEFGCj4gIAkgKiBzb2Z0d2FyZSBtYW5hZ2VtZW50IGFzIHdlIGhhdmUgbm8gdXNlIGZv ciBpdC4gRmx1c2ggdGhlIFRMQiBhcwo+ICAJICogcmVxdWlyZWQgd2hlbiBtb2RpZnlpbmcgdGhl IGNvbnRleHQgcmVnaXN0ZXJzLgo+ICsJICogWGVuOiBFbmFibGUgdGhlIGNvbnRleHQgZm9yIHRo ZSByb290IElQTU1VIG9ubHkuCj4gIAkgKi8KPiAtCWlwbW11X2N0eF93cml0ZTIoZG9tYWluLCBJ TUNUUiwKPiArCWlwbW11X2N0eF93cml0ZShkb21haW4sIElNQ1RSLAo+ICAJCQkgSU1DVFJfSU5U RU4gfCBJTUNUUl9GTFVTSCB8IElNQ1RSX01NVUVOKTsKPgo+ICAJcmV0dXJuIDA7Cj4gQEAgLTYz OCwxMyArODczLDE4IEBAIHN0YXRpYyB2b2lkIGlwbW11X2RvbWFpbl9mcmVlX2NvbnRleHQoc3Ry dWN0IGlwbW11X3Ztc2FfZGV2aWNlICptbXUsCj4KPiAgc3RhdGljIHZvaWQgaXBtbXVfZG9tYWlu X2Rlc3Ryb3lfY29udGV4dChzdHJ1Y3QgaXBtbXVfdm1zYV9kb21haW4gKmRvbWFpbikKPiAgewo+ ICsJLyogWGVuOiBKdXN0IHJldHVybiBpZiBjb250ZXh0X2lkIGhhcyBub24tZXhpc3RlbnQgdmFs dWUgKi8KPiArCWlmIChkb21haW4tPmNvbnRleHRfaWQgPj0gZG9tYWluLT5yb290LT5udW1fY3R4 KQo+ICsJCXJldHVybjsKPiArCj4gIAkvKgo+ICAJICogRGlzYWJsZSB0aGUgY29udGV4dC4gRmx1 c2ggdGhlIFRMQiBhcyByZXF1aXJlZCB3aGVuIG1vZGlmeWluZyB0aGUKPiAgCSAqIGNvbnRleHQg cmVnaXN0ZXJzLgo+ICAJICoKPiAgCSAqIFRPRE86IElzIFRMQiBmbHVzaCByZWFsbHkgbmVlZGVk ID8KPiArCSAqIFhlbjogRGlzYWJsZSB0aGUgY29udGV4dCBmb3IgdGhlIHJvb3QgSVBNTVUgb25s eS4KPiAgCSAqLwo+IC0JaXBtbXVfY3R4X3dyaXRlMihkb21haW4sIElNQ1RSLCBJTUNUUl9GTFVT SCk7Cj4gKwlpcG1tdV9jdHhfd3JpdGUoZG9tYWluLCBJTUNUUiwgSU1DVFJfRkxVU0gpOwo+ICAJ aXBtbXVfdGxiX3N5bmMoZG9tYWluKTsKPgo+ICAjaWZkZWYgQ09ORklHX1JDQVJfRERSX0JBQ0tV UAo+IEBAIC02NTIsMTIgKzg5MiwxNiBAQCBzdGF0aWMgdm9pZCBpcG1tdV9kb21haW5fZGVzdHJv eV9jb250ZXh0KHN0cnVjdCBpcG1tdV92bXNhX2RvbWFpbiAqZG9tYWluKQo+ICAjZW5kaWYKPgo+ ICAJaXBtbXVfZG9tYWluX2ZyZWVfY29udGV4dChkb21haW4tPnJvb3QsIGRvbWFpbi0+Y29udGV4 dF9pZCk7Cj4gKwo+ICsJLyogWGVuOiBJbml0aWFsaXplIGNvbnRleHRfaWQgd2l0aCBub24tZXhp c3RlbnQgdmFsdWUgKi8KPiArCWRvbWFpbi0+Y29udGV4dF9pZCA9IGRvbWFpbi0+cm9vdC0+bnVt X2N0eDsKPiAgfQo+Cj4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAqIEZhdWx0IEhhbmRs aW5nCj4gICAqLwo+Cj4gKy8qIFhlbjogU2hvdyBkb21haW5faWQgaW4gZXZlcnkgcHJpbnRrICov Cj4gIHN0YXRpYyBpcnFyZXR1cm5fdCBpcG1tdV9kb21haW5faXJxKHN0cnVjdCBpcG1tdV92bXNh X2RvbWFpbiAqZG9tYWluKQo+ICB7Cj4gIAljb25zdCB1MzIgZXJyX21hc2sgPSBJTVNUUl9NSElU IHwgSU1TVFJfQUJPUlQgfCBJTVNUUl9QRiB8IElNU1RSX1RGOwo+IEBAIC02ODEsMTEgKzkyNSwx MSBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaXBtbXVfZG9tYWluX2lycShzdHJ1Y3QgaXBtbXVfdm1z YV9kb21haW4gKmRvbWFpbikKPgo+ICAJLyogTG9nIGZhdGFsIGVycm9ycy4gKi8KPiAgCWlmIChz dGF0dXMgJiBJTVNUUl9NSElUKQo+IC0JCWRldl9lcnJfcmF0ZWxpbWl0ZWQobW11LT5kZXYsICJN dWx0aXBsZSBUTEIgaGl0cyBAMHglMDh4XG4iLAo+IC0JCQkJICAgIGlvdmEpOwo+ICsJCWRldl9l cnJfcmF0ZWxpbWl0ZWQobW11LT5kZXYsICJkJWQ6IE11bHRpcGxlIFRMQiBoaXRzIEAweCUwOHhc biIsCj4gKwkJCQlkb21haW4tPmQtPmRvbWFpbl9pZCwgaW92YSk7Cj4gIAlpZiAoc3RhdHVzICYg SU1TVFJfQUJPUlQpCj4gLQkJZGV2X2Vycl9yYXRlbGltaXRlZChtbXUtPmRldiwgIlBhZ2UgVGFi bGUgV2FsayBBYm9ydCBAMHglMDh4XG4iLAo+IC0JCQkJICAgIGlvdmEpOwo+ICsJCWRldl9lcnJf cmF0ZWxpbWl0ZWQobW11LT5kZXYsICJkJWQ6IFBhZ2UgVGFibGUgV2FsayBBYm9ydCBAMHglMDh4 XG4iLAo+ICsJCQkJZG9tYWluLT5kLT5kb21haW5faWQsIGlvdmEpOwo+Cj4gIAlpZiAoIShzdGF0 dXMgJiAoSU1TVFJfUEYgfCBJTVNUUl9URikpKQo+ICAJCXJldHVybiBJUlFfTk9ORTsKPiBAQCAt NzAwLDggKzk0NCw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpcG1tdV9kb21haW5faXJxKHN0cnVj dCBpcG1tdV92bXNhX2RvbWFpbiAqZG9tYWluKQo+ICAJCXJldHVybiBJUlFfSEFORExFRDsKPgo+ ICAJZGV2X2Vycl9yYXRlbGltaXRlZChtbXUtPmRldiwKPiAtCQkJICAgICJVbmhhbmRsZWQgZmF1 bHQ6IHN0YXR1cyAweCUwOHggaW92YSAweCUwOHhcbiIsCj4gLQkJCSAgICBzdGF0dXMsIGlvdmEp Owo+ICsJCQkiZCVkOiBVbmhhbmRsZWQgZmF1bHQ6IHN0YXR1cyAweCUwOHggaW92YSAweCUwOHhc biIsCj4gKwkJCWRvbWFpbi0+ZC0+ZG9tYWluX2lkLCBzdGF0dXMsIGlvdmEpOwo+Cj4gIAlyZXR1 cm4gSVJRX0hBTkRMRUQ7Cj4gIH0KPiBAQCAtNzMwLDYgKzk3NCwxNiBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgaXBtbXVfaXJxKGludCBpcnEsIHZvaWQgKmRldikKPiAgCXJldHVybiBzdGF0dXM7Cj4g IH0KPgo+ICsvKiBYZW46IEludGVycnVwdCBoYW5kbGVycyB3cmFwcGVyICovCj4gK3N0YXRpYyB2 b2lkIGlwbW11X2lycV94ZW4oaW50IGlycSwgdm9pZCAqZGV2LAo+ICsJCQkJICAgICAgc3RydWN0 IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCj4gK3sKPiArCWlwbW11X2lycShpcnEsIGRldik7Cj4gK30K PiArCj4gKyNkZWZpbmUgaXBtbXVfaXJxIGlwbW11X2lycV94ZW4KPiArCj4gKyNpZiAwIC8qIFhl bjogTm90IG5lZWRlZCAqLwo+ICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgKiBJT01NVSBP cGVyYXRpb25zCj4gICAqLwo+IEBAIC03NTksNiArMTAxMyw3IEBAIHN0YXRpYyB2b2lkIGlwbW11 X2RvbWFpbl9mcmVlKHN0cnVjdCBpb21tdV9kb21haW4gKmlvX2RvbWFpbikKPiAgCWZyZWVfaW9f cGd0YWJsZV9vcHMoZG9tYWluLT5pb3ApOwo+ICAJa2ZyZWUoZG9tYWluKTsKPiAgfQo+ICsjZW5k aWYKPgo+ICBzdGF0aWMgaW50IGlwbW11X2F0dGFjaF9kZXZpY2Uoc3RydWN0IGlvbW11X2RvbWFp biAqaW9fZG9tYWluLAo+ICAJCQkgICAgICAgc3RydWN0IGRldmljZSAqZGV2KQo+IEBAIC03ODcs NyArMTA0MiwyMCBAQCBzdGF0aWMgaW50IGlwbW11X2F0dGFjaF9kZXZpY2Uoc3RydWN0IGlvbW11 X2RvbWFpbiAqaW9fZG9tYWluLAo+ICAJCS8qIFRoZSBkb21haW4gaGFzbid0IGJlZW4gdXNlZCB5 ZXQsIGluaXRpYWxpemUgaXQuICovCj4gIAkJZG9tYWluLT5tbXUgPSBtbXU7Cj4gIAkJZG9tYWlu LT5yb290ID0gcm9vdDsKPiArCj4gKy8qCj4gKyAqIFhlbjogV2UgaGF2ZSBhbHJlYWR5IGluaXRp YWxpemVkIGFuZCBlbmFibGVkIGNvbnRleHQgZm9yIHJvb3QgSVBNTVUKPiArICogZm9yIHRoaXMg WGVuIGRvbWFpbi4gRW5hYmxlIGNvbnRleHQgZm9yIGdpdmVuIGNhY2hlIElQTU1VIG9ubHkuCj4g KyAqIEZsdXNoIHRoZSBUTEIgYXMgcmVxdWlyZWQgd2hlbiBtb2RpZnlpbmcgdGhlIGNvbnRleHQg cmVnaXN0ZXJzLgoKV2h5PwoKPiArICovCj4gKyNpZiAwCj4gIAkJcmV0ID0gaXBtbXVfZG9tYWlu X2luaXRfY29udGV4dChkb21haW4pOwo+ICsjZW5kaWYKPiArCQlpcG1tdV9jdHhfd3JpdGUxKGRv bWFpbiwgSU1DVFIsCj4gKwkJCQlpcG1tdV9jdHhfcmVhZChkb21haW4sIElNQ1RSKSB8IElNQ1RS X0ZMVVNIKTsKPiArCj4gKwkJZGV2X2luZm8oZGV2LCAiVXNpbmcgSVBNTVUgY29udGV4dCAldVxu IiwgZG9tYWluLT5jb250ZXh0X2lkKTsKPiArI2lmIDAgLyogWGVuOiBOb3QgbmVlZGVkICovCj4g IAkJaWYgKHJldCA8IDApIHsKPiAgCQkJZGV2X2VycihkZXYsICJVbmFibGUgdG8gaW5pdGlhbGl6 ZSBJUE1NVSBjb250ZXh0XG4iKTsKPiAgCQkJZG9tYWluLT5tbXUgPSBOVUxMOwo+IEBAIC03OTUs NiArMTA2Myw3IEBAIHN0YXRpYyBpbnQgaXBtbXVfYXR0YWNoX2RldmljZShzdHJ1Y3QgaW9tbXVf ZG9tYWluICppb19kb21haW4sCj4gIAkJCWRldl9pbmZvKGRldiwgIlVzaW5nIElQTU1VIGNvbnRl eHQgJXVcbiIsCj4gIAkJCQkgZG9tYWluLT5jb250ZXh0X2lkKTsKPiAgCQl9Cj4gKyNlbmRpZgo+ ICAJfSBlbHNlIGlmIChkb21haW4tPm1tdSAhPSBtbXUpIHsKPiAgCQkvKgo+ICAJCSAqIFNvbWV0 aGluZyBpcyB3cm9uZywgd2UgY2FuJ3QgYXR0YWNoIHR3byBkZXZpY2VzIHVzaW5nCj4gQEAgLTgz NCw2ICsxMTAzLDE0IEBAIHN0YXRpYyB2b2lkIGlwbW11X2RldGFjaF9kZXZpY2Uoc3RydWN0IGlv bW11X2RvbWFpbiAqaW9fZG9tYWluLAo+ICAJICovCj4gIH0KPgo+ICsvKgo+ICsgKiBYZW46IFRo ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIGNhbGxiYWNrcyBpcyBpbnN1ZmZpY2ll bnQgZm9yIHVzCj4gKyAqIHNpbmNlIHRoZXkgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9t IExpbnV4IElPTU1VIGNvcmUgdGhhdAo+ICsgKiBoYXMgYWxyZWFkeSBkb25lIGFsbCByZXF1aXJl ZCBhY3Rpb25zIHN1Y2ggYXMgZG9pbmcgdmFyaW91cyBjaGVja3MsCj4gKyAqIHNwbGl0dGluZyBp bnRvIG1lbW9yeSBibG9jayB0aGUgaGFyZHdhcmUgc3VwcG9ydHMgYW5kIHNvIG9uLgoKQ2FuIHlv dSBleHBhbmQgaXQgaGVyZT8gV2h5IGNhbid0IG91ciBJT01NVSBmcmFtZXdvcmsgY291bGQgZG8g dGhhdD8KCklITU8sIGlmIHdlIHdhbnQgdG8gZ2V0IGRyaXZlciBmcm9tIExpbnV4LCB3ZSBuZWVk IHRvIGdldCBhbiBpbnRlcmZhY2UgCnZlcnkgY2xvc2UgdG8gaXQuIE90aGVyd2lzZSBpdCBpcyBu b3Qgd29ydGggaXQgYmVjYXVzZSB5b3Ugd291bGQgaGF2ZSB0byAKaW1wbGVtZW50IGZvciBlYWNo IElPTU1VLgoKTXkgb3ZlcmFsbCBmZWVsaW5nIGF0IHRoZSBtb21lbnQgaXMgWGVuIGlzIG5vdCBy ZWFkeSB0byB3ZWxjb21lIHRoaXMgCmRyaXZlciBkaXJlY3RseSBmcm9tIExpbnV4LiBUaGlzIGlz IGFsc28gYSBCU1AgZHJpdmVyLCBzbyBubyB0aG9yb3VnaCAKcmV2aWV3IGRvbmUgYnkgdGhlIGNv bW11bml0eS4KCkkgaGF2ZSBiZWVuIHRvbGQgdGhlIEJTUCBkcml2ZXIgd2FzIGluIHByZXR0eSBi YWQgc3RhdGUsIHNvIEkgdGhpbmsgd2UgCnJlYWxseSBuZWVkIHRvIHdlaWdodCBwcm9zIGFuZCBj b25zIG9mIHVzaW5nIGl0LgoKQ2hlZXJzLAoKLS0gCkp1bGllbiBHcmFsbAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==