From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 14/24] drm/i915: Finish gen6/7 dynamic page table allocation Date: Mon, 5 Jan 2015 15:45:10 +0100 Message-ID: <20150105144509.GC2711@phenom.ffwll.local> References: <1418922621-25818-1-git-send-email-michel.thierry@intel.com> <1419354987-4622-1-git-send-email-michel.thierry@intel.com> <1419354987-4622-15-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 mail-we0-f177.google.com (mail-we0-f177.google.com [74.125.82.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 49D886E241 for ; Mon, 5 Jan 2015 06:45:14 -0800 (PST) Received: by mail-we0-f177.google.com with SMTP id q59so7956824wes.36 for ; Mon, 05 Jan 2015 06:45:13 -0800 (PST) Content-Disposition: inline In-Reply-To: <1419354987-4622-15-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBEZWMgMjMsIDIwMTQgYXQgMDU6MTY6MTdQTSArMDAwMCwgTWljaGVsIFRoaWVycnkg d3JvdGU6Cj4gRnJvbTogQmVuIFdpZGF3c2t5IDxiZW5qYW1pbi53aWRhd3NreUBpbnRlbC5jb20+ Cj4gCj4gVGhpcyBwYXRjaCBjb250aW51ZXMgb24gdGhlIGlkZWEgZnJvbSB0aGUgcHJldmlvdXMg cGF0Y2guIEZyb20gaGVyZSBvbiwKPiBpbiB0aGUgc3RlYWR5IHN0YXRlLCBQREVzIGFyZSBhbGwg cG9pbnRpbmcgdG8gdGhlIHNjcmF0Y2ggcGFnZSB0YWJsZSAoYXMKPiByZWNvbW1lbmRlZCBpbiB0 aGUgc3BlYykuIFdoZW4gYW4gb2JqZWN0IGlzIGFsbG9jYXRlZCBpbiB0aGUgVkEgcmFuZ2UsCj4g dGhlIGNvZGUgd2lsbCBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBhbGxvY2F0ZSBhIHBhZ2UgZm9y IHRoZSBwYWdlCj4gdGFibGUuIFNpbWlsYXJseSB3aGVuIHRoZSBvYmplY3QgaXMgZGVzdHJveWVk LCB3ZSB3aWxsIHJlbW92ZSwgYW5kIGZyZWUKPiB0aGUgcGFnZSB0YWJsZSBwb2ludGluZyB0aGUg UERFIGJhY2sgdG8gdGhlIHNjcmF0Y2ggcGFnZS4KPiAKPiBGb2xsb3dpbmcgcGF0Y2hlcyB3aWxs IHdvcmsgdG8gdW5pZnkgdGhlIGNvZGUgYSBiaXQgYXMgd2UgYnJpbmcgaW4gR0VOOAo+IHN1cHBv cnQuIEdFTjYgYW5kIEdFTjggYXJlIGRpZmZlcmVudCBlbm91Z2ggdGhhdCBJIGhhZCBhIGhhcmQg dGltZSB0bwo+IGdldCB0byB0aGlzIHBvaW50IHdpdGggYXMgbXVjaCBjb21tb24gY29kZSBhcyBJ IGRvLgo+IAo+IFRoZSBhbGlhc2luZyBQUEdUVCBtdXN0IHByZS1hbGxvY2F0ZSBhbGwgb2YgdGhl IHBhZ2UgdGFibGVzLiBUaGVyZSBhcmUgYQo+IGZldyByZWFzb25zIGZvciB0aGlzLiBUd28gdHJp dmlhbCBvbmVzOiBhbGlhc2luZyBwcGd0dCBnb2VzIHRocm91Z2ggdGhlCj4gZ2d0dCBwYXRocywg c28gaXQncyBoYXJkIHRvIG1haW50YWluLCB3ZSBjdXJyZW50bHkgZG8gbm90IHJlc3RvcmUgdGhl Cj4gZGVmYXVsdCBjb250ZXh0IChhc3N1bWluZyB0aGUgcHJldmlvdXMgZm9yY2UgcmVsb2FkIGlz IGluZGVlZAo+IG5lY2Vzc2FyeSkuIE1vc3QgaW1wb3J0YW50bHkgdGhvdWdoLCB0aGUgb25seSB3 YXkgKGl0IHNlZW1zIGZyb20KPiBlbXBpcmljYWwgZXZpZGVuY2UpIHRvIGludmFsaWRhdGUgdGhl IENTIFRMQnMgb24gbm9uLXJlbmRlciByaW5nIGlzIHRvCj4gZWl0aGVyIHVzZSByaW5nIHN5bmMg KHdoaWNoIHJlcXVpcmVzIGFjdHVhbGx5IHN0b3BwaW5nIHRoZSByaW5ncyBpbgo+IG9yZGVyIHRv IHN5bmNocm9uaXplIHdoZW4gdGhlIHN5bmMgY29tcGxldGVzIHZzLiB3aGVyZSB5b3UgYXJlIGlu Cj4gZXhlY3V0aW9uKSwgb3IgdG8gcmVsb2FkIERDTFYuICBTaW5jZSB3aXRob3V0IGZ1bGwgUFBH VFQgd2UgZG8gbm90IGV2ZXIKPiByZWxvYWQgdGhlIERDTFYgcmVnaXN0ZXIsIHRoZXJlIGlzIG5v IGdvb2Qgd2F5IHRvIGFjaGlldmUgdGhpcy4gVGhlCj4gc2ltcGxlc3Qgc29sdXRpb24gaXMganVz dCB0byBub3Qgc3VwcG9ydCBkeW5hbWljIHBhZ2UgdGFibGUKPiBjcmVhdGlvbi9kZXN0cnVjdGlv biBpbiB0aGUgYWxpYXNpbmcgUFBHVFQuCj4gCj4gV2UgY291bGQgYWx3YXlzIHJlbG9hZCBEQ0xW LCBidXQgdGhpcyBzZWVtcyBsaWtlIHF1aXRlIGEgYml0IG9mIGV4Y2Vzcwo+IG92ZXJoZWFkIG9u bHkgdG8gc2F2ZSBhdCBtb3N0IDJNQi00ayBvZiBtZW1vcnkgZm9yIHRoZSBhbGlhc2luZyBQUEdU VAo+IHBhZ2UgdGFibGVzLgo+IAo+IHYyOiBNYWtlIHRoZSBwYWdlIHRhYmxlIGJpdG1hcCBkZWNs YXJlZCBpbnNpZGUgdGhlIGZ1bmN0aW9uIChDaHJpcykKPiBTaW1wbGlmeSB0aGUgd2F5IHNjcmF0 Y2hpbmcgYWRkcmVzcyBzcGFjZSB3b3Jrcy4KPiBNb3ZlIHRoZSBhbGxvYy90ZWFyZG93biB0cmFj ZXBvaW50cyB1cCBhIGxldmVsIGluIHRoZSBjYWxsIHN0YWNrIHNvIHRoYXQKPiBib3RoIGFsbCBp bXBsZW1lbnRhdGlvbnMgZ2V0IHRoZSB0cmFjZS4KPiAKPiB2MzogVXBkYXRlZCB0cmFjZSBldmVu dCB0byBzcGl0IG91dCBhIG5hbWUKPiAKPiB2NDogQWxpYXNpbmcgcHBndHQgaXMgbm93IGluaXRp YWxpemVkIGRpZmZlcmVudGx5IChpbiBzZXR1cCBnbG9iYWwgZ3R0KQo+IAo+IHY1OiBSZWJhc2Ug dG8gbGF0ZXN0IGNvZGUuIEFsc28gcmVtb3ZlZCB1bm5lY2Vzc2FyeSBhbGlhc2luZyBwcGd0dCBj aGVjayBmb3IKPiB0cmFjZSwgYXMgaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIGFmdGVyIHRoZSBQ UEdUVCBjbGVhbnVwIHBhdGNoIHNlcmllcwo+IG9mIGEgY291cGxlIG9mIG1vbnRocyBhZ28gKERh bmllbCkuCj4gCj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KPiBTaWduZWQt b2ZmLWJ5OiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5uZXQ+Cj4gU2lnbmVkLW9mZi1ieTog TWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4gKHY0KykKClRoZSB0cmFj ZXBvaW50cyBzaG91bGQgYmUgc3BsaXQgaW50byBhIHNlcGFyYXRlIHBhdGNoLiBBbHRob3VnaCB0 aGUKdGVhcmRvd24gc3R1ZmYgd2lsbCBsaWtlbHkgZGlzYXBwZWFyIEkgZ3Vlc3MgLi4uCgpUd28g bW9yZSBjb21tZW50cyBiZWxvdy4KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8 IDEyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90cmFjZS5oICAgfCAxMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA2MGY5MWJjLi4w ZjYzMDc2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjE0OSw2 ICsyMTQ5LDggQEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlzZXFfcHJpbnRmKG0sICJQUF9ESVJfQkFT RV9SRUFEOiAweCUwOHhcbiIsIEk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFX1JFQUQocmluZykp KTsKPiAgCQlzZXFfcHJpbnRmKG0sICJQUF9ESVJfRENMVjogMHglMDh4XG4iLCBJOTE1X1JFQUQo UklOR19QUF9ESVJfRENMVihyaW5nKSkpOwo+ICAJfQo+ICsJc2VxX3ByaW50ZihtLCAiRUNPQ0hL OiAweCUwOHhcblxuIiwgSTkxNV9SRUFEKEdBTV9FQ09DSEspKTsKPiArCj4gIAlpZiAoZGV2X3By aXYtPm1tLmFsaWFzaW5nX3BwZ3R0KSB7Cj4gIAkJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 ID0gZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0Owo+ICAKPiBAQCAtMjE2NSw3ICsyMTY3LDYg QEAgc3RhdGljIHZvaWQgZ2VuNl9wcGd0dF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCQkJICAgZ2V0X3BpZF90YXNrKGZpbGUtPnBpZCwgUElEVFlQ RV9QSUQpLT5jb21tKTsKPiAgCQlpZHJfZm9yX2VhY2goJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIs IHBlcl9maWxlX2N0eCwgbSk7Cj4gIAl9Cj4gLQlzZXFfcHJpbnRmKG0sICJFQ09DSEs6IDB4JTA4 eFxuIiwgSTkxNV9SRUFEKEdBTV9FQ09DSEspKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBpOTE1 X3BwZ3R0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+IGluZGV4IDVkNTI5OTAuLjE2NDlmYjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtMzU5OSw2ICszNTk5LDggQEAgc2VhcmNoX2ZyZWU6Cj4gIAo+ICAJLyog IGFsbG9jYXRlIGJlZm9yZSBpbnNlcnQgLyBiaW5kICovCj4gIAlpZiAodm1hLT52bS0+YWxsb2Nh dGVfdmFfcmFuZ2UpIHsKPiArCQl0cmFjZV9pOTE1X3ZhX2FsbG9jKHZtYS0+dm0sIHZtYS0+bm9k ZS5zdGFydCwgdm1hLT5ub2RlLnNpemUsCj4gKwkJCQlWTV9UT19UUkFDRV9OQU1FKHZtYS0+dm0p KTsKPiAgCQlyZXQgPSB2bWEtPnZtLT5hbGxvY2F0ZV92YV9yYW5nZSh2bWEtPnZtLAo+ICAJCQkJ CQl2bWEtPm5vZGUuc3RhcnQsCj4gIAkJCQkJCXZtYS0+bm9kZS5zaXplKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDU0YzdjYTcuLjMyYTM1NWEgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0xMTM4LDEwICsxMTM4LDQ3IEBAIHN0YXRp YyB2b2lkIGdlbjZfcHBndHRfdW5tYXBfcGFnZXMoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 KQo+ICBzdGF0aWMgaW50IGdlbjZfYWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gIAkJCSAgICAgICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQo+ ICB7Cj4gKwlERUNMQVJFX0JJVE1BUChuZXdfcGFnZV90YWJsZXMsIEdFTjZfUFBHVFRfUERfRU5U UklFUyk7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gdm0tPmRldjsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQgPQo+ICAJCQkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkx NV9od19wcGd0dCwgYmFzZSk7Cj4gIAlzdHJ1Y3QgaTkxNV9wYWdldGFiICpwdDsKPiArCWNvbnN0 IHVpbnQzMl90IHN0YXJ0X3NhdmUgPSBzdGFydCwgbGVuZ3RoX3NhdmUgPSBsZW5ndGg7Cj4gIAl1 aW50MzJfdCBwZGUsIHRlbXA7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCUJVR19PTih1cHBlcl8zMl9i aXRzKHN0YXJ0KSk7Cj4gKwo+ICsJYml0bWFwX3plcm8obmV3X3BhZ2VfdGFibGVzLCBHRU42X1BQ R1RUX1BEX0VOVFJJRVMpOwo+ICsKPiArCS8qIFRoZSBhbGxvY2F0aW9uIGlzIGRvbmUgaW4gdHdv IHN0YWdlcyBzbyB0aGF0IHdlIGNhbiBiYWlsIG91dCB3aXRoCj4gKwkgKiBtaW5pbWFsIGFtb3Vu dCBvZiBwYWluLiBUaGUgZmlyc3Qgc3RhZ2UgZmluZHMgbmV3IHBhZ2UgdGFibGVzIHRoYXQKPiAr CSAqIG5lZWQgYWxsb2NhdGlvbi4gVGhlIHNlY29uZCBzdGFnZSBtYXJrcyB1c2UgcHRlcyB3aXRo aW4gdGhlIHBhZ2UKPiArCSAqIHRhYmxlcy4KPiArCSAqLwoKSWYgd2UgZHJvcCB0aGUgYml0bWFz ayB0cmFja2luZyB3ZSBjb3VsZCBtYXNzaXZlbHkgc2ltcGxpZnkgdGhpcyAtCmNoZWNraW5nIGp1 c3QgdGhlIHZhcmlvdXMgcHQgcG9pbnRlcnMgc2hvdWxkIGJlIGVub3VnaD8KCj4gKwlnZW42X2Zv cl9lYWNoX3BkZShwdCwgJnBwZ3R0LT5wZCwgc3RhcnQsIGxlbmd0aCwgdGVtcCwgcGRlKSB7Cj4g KwkJaWYgKHB0ICE9IHBwZ3R0LT5zY3JhdGNoX3B0KSB7Cj4gKwkJCVdBUk5fT04oYml0bWFwX2Vt cHR5KHB0LT51c2VkX3B0ZXMsIEk5MTVfUFBHVFRfUFRfRU5UUklFUykpOwo+ICsJCQljb250aW51 ZTsKPiArCQl9Cj4gKwo+ICsJCS8qIFdlJ3ZlIGFscmVhZHkgYWxsb2NhdGVkIGEgcGFnZSB0YWJs ZSAqLwo+ICsJCVdBUk5fT04oIWJpdG1hcF9lbXB0eShwdC0+dXNlZF9wdGVzLCBJOTE1X1BQR1RU X1BUX0VOVFJJRVMpKTsKPiArCj4gKwkJcHQgPSBhbGxvY19wdF9zaW5nbGUoZGV2KTsKPiArCQlp ZiAoSVNfRVJSKHB0KSkgewo+ICsJCQlyZXQgPSBQVFJfRVJSKHB0KTsKPiArCQkJZ290byB1bndp bmRfb3V0Owo+ICsJCX0KPiArCj4gKwkJcHBndHQtPnBkLnBhZ2VfdGFibGVzW3BkZV0gPSBwdDsK PiArCQlzZXRfYml0KHBkZSwgbmV3X3BhZ2VfdGFibGVzKTsKPiArCQl0cmFjZV9pOTE1X3BhZ2V0 YWJsZV9hbGxvYyh2bSwgcGRlLCBzdGFydCwgR0VONl9QREVfU0hJRlQpOwo+ICsJfQo+ICsKPiAr CXN0YXJ0ID0gc3RhcnRfc2F2ZTsKPiArCWxlbmd0aCA9IGxlbmd0aF9zYXZlOwo+ICAKPiAgCWdl bjZfZm9yX2VhY2hfcGRlKHB0LCAmcHBndHQtPnBkLCBzdGFydCwgbGVuZ3RoLCB0ZW1wLCBwZGUp IHsKPiAgCQlpbnQgajsKPiBAQCAtMTE1OSwxMiArMTE5NiwzNSBAQCBzdGF0aWMgaW50IGdlbjZf YWxsb2NfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAkJCX0KPiAg CQl9Cj4gIAo+IC0JCWJpdG1hcF9vcihwdC0+dXNlZF9wdGVzLCBwdC0+dXNlZF9wdGVzLCB0bXBf Yml0bWFwLAo+ICsJCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQocGRlLCBuZXdfcGFnZV90YWJsZXMp KQo+ICsJCQlnZW42X3dyaXRlX3BkZXMoJnBwZ3R0LT5wZCwgcGRlLCBwdCk7Cj4gKwo+ICsJCXRy YWNlX2k5MTVfcGFnZXRhYmxlX21hcCh2bSwgcGRlLCBwdCwKPiArCQkJCQkgZ2VuNl9wdGVfaW5k ZXgoc3RhcnQpLAo+ICsJCQkJCSBnZW42X3B0ZV9jb3VudChzdGFydCwgbGVuZ3RoKSwKPiArCQkJ CQkgSTkxNV9QUEdUVF9QVF9FTlRSSUVTKTsKPiArCQliaXRtYXBfb3IocHQtPnVzZWRfcHRlcywg dG1wX2JpdG1hcCwgcHQtPnVzZWRfcHRlcywKPiAgCQkJCUk5MTVfUFBHVFRfUFRfRU5UUklFUyk7 Cj4gIAl9Cj4gIAo+ICsJV0FSTl9PTighYml0bWFwX2VtcHR5KG5ld19wYWdlX3RhYmxlcywgR0VO Nl9QUEdUVF9QRF9FTlRSSUVTKSk7Cj4gKwo+ICsJLyogTWFrZSBzdXJlIHdyaXRlIGlzIGNvbXBs ZXRlIGJlZm9yZSBvdGhlciBjb2RlIGNhbiB1c2UgdGhpcyBwYWdlCj4gKwkgKiB0YWJsZS4gQWxz byByZXF1aXJlIGZvciBXQyBtYXBwZWQgUFRFcyAqLwo+ICsJcmVhZGwoZGV2X3ByaXYtPmd0dC5n c20pOwo+ICsKPiAgCXBwZ3R0X2ludmFsaWRhdGVfdGxicyh2bSk7Cj4gIAlyZXR1cm4gMDsKPiAr Cj4gK3Vud2luZF9vdXQ6Cj4gKwlmb3JfZWFjaF9zZXRfYml0KHBkZSwgbmV3X3BhZ2VfdGFibGVz LCBHRU42X1BQR1RUX1BEX0VOVFJJRVMpIHsKPiArCQlzdHJ1Y3QgaTkxNV9wYWdldGFiICpwdCA9 IHBwZ3R0LT5wZC5wYWdlX3RhYmxlc1twZGVdOwo+ICsJCXBwZ3R0LT5wZC5wYWdlX3RhYmxlc1tw ZGVdID0gTlVMTDsKPiArCQlmcmVlX3B0X3NpbmdsZShwdCwgdm0tPmRldik7Cj4gKwl9Cj4gKwo+ ICsJcHBndHRfaW52YWxpZGF0ZV90bGJzKHZtKTsKPiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGdlbjZfdGVhcmRvd25fdmFfcmFuZ2Uoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gQEAgLTExNzYsOCArMTIzNiwyNyBAQCBzdGF0aWMgdm9pZCBnZW42X3RlYXJk b3duX3ZhX3JhbmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJdWludDMyX3Qg cGRlLCB0ZW1wOwo+ICAKPiAgCWdlbjZfZm9yX2VhY2hfcGRlKHB0LCAmcHBndHQtPnBkLCBzdGFy dCwgbGVuZ3RoLCB0ZW1wLCBwZGUpIHsKPiArCj4gKwkJaWYgKFdBUk4ocHQgPT0gcHBndHQtPnNj cmF0Y2hfcHQsCj4gKwkJICAgICJUcmllZCB0byB0ZWFyZG93biBzY3JhdGNoIHBhZ2Ugdm0gJXAu IHBkZSAldTogJWxseC0lbGx4XG4iLAo+ICsJCSAgICB2bSwgcGRlLCBzdGFydCwgc3RhcnQgKyBs ZW5ndGgpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJdHJhY2VfaTkxNV9wYWdldGFibGVfdW5t YXAodm0sIHBkZSwgcHQsCj4gKwkJCQkJICAgZ2VuNl9wdGVfaW5kZXgoc3RhcnQpLAo+ICsJCQkJ CSAgIGdlbjZfcHRlX2NvdW50KHN0YXJ0LCBsZW5ndGgpLAo+ICsJCQkJCSAgIEk5MTVfUFBHVFRf UFRfRU5UUklFUyk7Cj4gKwo+ICAJCWJpdG1hcF9jbGVhcihwdC0+dXNlZF9wdGVzLCBnZW42X3B0 ZV9pbmRleChzdGFydCksCj4gIAkJCSAgICAgZ2VuNl9wdGVfY291bnQoc3RhcnQsIGxlbmd0aCkp Owo+ICsKPiArCQlpZiAoYml0bWFwX2VtcHR5KHB0LT51c2VkX3B0ZXMsIEk5MTVfUFBHVFRfUFRf RU5UUklFUykpIHsKPiArCQkJdHJhY2VfaTkxNV9wYWdldGFibGVfZGVzdHJveSh2bSwgcGRlLAo+ ICsJCQkJCQkgICAgIHN0YXJ0ICYgR0VOTUFTS19VTEwoNjMsIEdFTjZfUERFX1NISUZUKSwKPiAr CQkJCQkJICAgICBHRU42X1BERV9TSElGVCk7Cj4gKwkJCWdlbjZfd3JpdGVfcGRlcygmcHBndHQt PnBkLCBwZGUsIHBwZ3R0LT5zY3JhdGNoX3B0KTsKPiArCQkJcHBndHQtPnBkLnBhZ2VfdGFibGVz W3BkZV0gPSBwcGd0dC0+c2NyYXRjaF9wdDsKPiArCQl9Cj4gIAl9Cj4gIAo+ICAJcHBndHRfaW52 YWxpZGF0ZV90bGJzKHZtKTsKPiBAQCAtMTE4Nyw5ICsxMjY2LDEzIEBAIHN0YXRpYyB2b2lkIGdl bjZfcHBndHRfZnJlZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIHsKPiAgCWludCBp Owo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBwcGd0dC0+bnVtX3BkX2VudHJpZXM7IGkrKykKPiAt CQlmcmVlX3B0X3NpbmdsZShwcGd0dC0+cGQucGFnZV90YWJsZXNbaV0sIHBwZ3R0LT5iYXNlLmRl dik7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgcHBndHQtPm51bV9wZF9lbnRyaWVzOyBpKyspIHsKPiAr CQlzdHJ1Y3QgaTkxNV9wYWdldGFiICpwdCA9IHBwZ3R0LT5wZC5wYWdlX3RhYmxlc1tpXTsKPiAr CQlpZiAocHQgIT0gcHBndHQtPnNjcmF0Y2hfcHQpCj4gKwkJCWZyZWVfcHRfc2luZ2xlKHBwZ3R0 LT5wZC5wYWdlX3RhYmxlc1tpXSwgcHBndHQtPmJhc2UuZGV2KTsKPiArCX0KPiAgCj4gKwkvKiBD b25zaWRlciBwdXR0aW5nIHRoaXMgYXMgcGFydCBvZiBwZCBmcmVlLiAqLwo+ICAJZnJlZV9wdF9z Y3JhdGNoKHBwZ3R0LT5zY3JhdGNoX3B0LCBwcGd0dC0+YmFzZS5kZXYpOwo+ICAJZnJlZV9wZF9z aW5nbGUoJnBwZ3R0LT5wZCk7Cj4gIH0KPiBAQCAtMTI1NCw3ICsxMzM3LDcgQEAgZXJyX291dDoK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9hbGxvYyhz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gK3N0YXRpYyBpbnQgZ2VuNl9wcGd0dF9hbGxv YyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIGJvb2wgcHJlYWxsb2NhdGVfcHQpCgpJbW8g aXQgd291bGQgYmUgY2xlYXJlciB0byBtb3ZlIHRoZSBwdCBwcmVhbGxvY2F0aW9uIGZvciBhbGlz aW5nIHBwZ3R0CmludG8gdGhlIHBwZ3R0X2luaXQgZnVuY3Rpb24uIE1ha2VzIGZvciBhIGJpdCBh IGJpZ2dlciBkaWZmLCBidXQgd2lsbApyZXN1bHQgaW4gbGVzcyBjb252b2x1dGVkIGNvbnRyb2wg ZmxvdyBzaW5jZSB3ZSBzaG91bGQgZW5kIHVwIGluIGEgbmljZQoKaWYgKGFsaXNpbmcpCgkvKiBj cmVhdGUgYWxsIHB0cyAqLwplbHNlCgkvKiBhbGxvY2F0ZSZ1c2Ugc2NyYXRjaF9wdCAqLwoKQXNp ZGU6IFNob3VsZCB3ZSBvbmx5IGFsbG9jYXRlIHRoZSBzY3JhdGNoX3B0IGZvciAhYWxpYXNpbmc/ Cgo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMTI2MiwxMCArMTM0NSwxNCBAQCBzdGF0aWMg aW50IGdlbjZfcHBndHRfYWxsb2Moc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAJaWYg KHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiArCWlmICghcHJlYWxsb2NhdGVfcHQpCj4gKwkJ cmV0dXJuIDA7Cj4gKwo+ICAJcmV0ID0gYWxsb2NfcHRfcmFuZ2UoJnBwZ3R0LT5wZCwgMCwgcHBn dHQtPm51bV9wZF9lbnRyaWVzLAo+ICAJCQlwcGd0dC0+YmFzZS5kZXYpOwo+ICAKPiAgCWlmIChy ZXQpIHsKPiArCQlmcmVlX3B0X3NjcmF0Y2gocHBndHQtPnNjcmF0Y2hfcHQsIHBwZ3R0LT5iYXNl LmRldik7Cj4gIAkJZHJtX21tX3JlbW92ZV9ub2RlKCZwcGd0dC0+bm9kZSk7Cj4gIAkJcmV0dXJu IHJldDsKPiAgCX0KPiBAQCAtMTI3Myw3ICsxMzYwLDE3IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0 dF9hbGxvYyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ ICAKPiAtc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQo+ICtzdGF0aWMgdm9pZCBnZW42X3NjcmF0Y2hfdmFfcmFuZ2Uoc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0LAo+ICsJCQkJICB1aW50NjRfdCBzdGFydCwgdWludDY0X3QgbGVuZ3RoKQo+ ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9wYWdldGFiICp1bnVzZWQ7Cj4gKwl1aW50MzJfdCBwZGUsIHRl bXA7Cj4gKwo+ICsJZ2VuNl9mb3JfZWFjaF9wZGUodW51c2VkLCAmcHBndHQtPnBkLCBzdGFydCwg bGVuZ3RoLCB0ZW1wLCBwZGUpCj4gKwkJcHBndHQtPnBkLnBhZ2VfdGFibGVzW3BkZV0gPSBwcGd0 dC0+c2NyYXRjaF9wdDsKPiArfQo+ICsKPiArc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBib29sIGFsaWFzaW5nKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gcHBndHQtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMTI4OSw3ICsxMzg2LDcg QEAgc3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 KQo+ICAJfSBlbHNlCj4gIAkJQlVHKCk7Cj4gIAo+IC0JcmV0ID0gZ2VuNl9wcGd0dF9hbGxvYyhw cGd0dCk7Cj4gKwlyZXQgPSBnZW42X3BwZ3R0X2FsbG9jKHBwZ3R0LCBhbGlhc2luZyk7Cj4gIAlp ZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IEBAIC0xMzA4LDYgKzE0MDUsOSBAQCBzdGF0 aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gIAlw cGd0dC0+cGRfYWRkciA9IChnZW42X2d0dF9wdGVfdCBfX2lvbWVtICopZGV2X3ByaXYtPmd0dC5n c20gKwo+ICAJCXBwZ3R0LT5wZC5wZF9vZmZzZXQgLyBzaXplb2YoZ2VuNl9ndHRfcHRlX3QpOwo+ ICAKPiArCWlmICghYWxpYXNpbmcpCj4gKwkJZ2VuNl9zY3JhdGNoX3ZhX3JhbmdlKHBwZ3R0LCAw LCBwcGd0dC0+YmFzZS50b3RhbCk7Cj4gKwo+ICAJZ2VuNl93cml0ZV9wYWdlX3JhbmdlKGRldl9w cml2LCAmcHBndHQtPnBkLCAwLCBwcGd0dC0+YmFzZS50b3RhbCk7Cj4gIAo+ICAJRFJNX0RFQlVH X0RSSVZFUigiQWxsb2NhdGVkIHBkZSBzcGFjZSAoJWxkTSkgYXQgR1RUIGVudHJ5OiAlbHhcbiIs Cj4gQEAgLTEzMjAsNyArMTQyMCw4IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMg aW50IF9faHdfcHBndHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQpCj4gK3N0YXRpYyBpbnQgX19od19wcGd0dF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiArCQlib29sIGFsaWFz aW5nKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAKPiBAQCAtMTMyOCw3ICsxNDI5LDcgQEAgc3RhdGljIGludCBfX2h3X3Bw Z3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQo+ICAJcHBndHQtPmJhc2Uuc2NyYXRjaCA9IGRldl9wcml2LT5ndHQuYmFzZS5zY3JhdGNo Owo+ICAKPiAgCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDgpCj4gLQkJcmV0dXJuIGdlbjZf cHBndHRfaW5pdChwcGd0dCk7Cj4gKwkJcmV0dXJuIGdlbjZfcHBndHRfaW5pdChwcGd0dCwgYWxp YXNpbmcpOwo+ICAJZWxzZQo+ICAJCXJldHVybiBnZW44X3BwZ3R0X2luaXQocHBndHQsIGRldl9w cml2LT5ndHQuYmFzZS50b3RhbCk7Cj4gIH0KPiBAQCAtMTMzNyw3ICsxNDM4LDcgQEAgaW50IGk5 MTVfcHBndHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwo+ICAJaW50IHJldCA9IDA7Cj4gIAo+IC0JcmV0ID0gX19od19wcGd0dF9pbml0 KGRldiwgcHBndHQpOwo+ICsJcmV0ID0gX19od19wcGd0dF9pbml0KGRldiwgcHBndHQsIGZhbHNl KTsKPiAgCWlmIChyZXQgPT0gMCkgewo+ICAJCWtyZWZfaW5pdCgmcHBndHQtPnJlZik7Cj4gIAkJ ZHJtX21tX2luaXQoJnBwZ3R0LT5iYXNlLm1tLCBwcGd0dC0+YmFzZS5zdGFydCwKPiBAQCAtMTQ0 NSw5ICsxNTQ2LDE0IEBAIHN0YXRpYyB2b2lkIHBwZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVf dm1hICp2bWEpCj4gIAkJCSAgICAgdm1hLT5ub2RlLnN0YXJ0LAo+ICAJCQkgICAgIHZtYS0+b2Jq LT5iYXNlLnNpemUsCj4gIAkJCSAgICAgdHJ1ZSk7Cj4gLQlpZiAodm1hLT52bS0+dGVhcmRvd25f dmFfcmFuZ2UpCj4gKwlpZiAodm1hLT52bS0+dGVhcmRvd25fdmFfcmFuZ2UpIHsKPiArCQl0cmFj ZV9pOTE1X3ZhX3RlYXJkb3duKHZtYS0+dm0sCj4gKwkJCQkgICAgICAgdm1hLT5ub2RlLnN0YXJ0 LCB2bWEtPm5vZGUuc2l6ZSwKPiArCQkJCSAgICAgICBWTV9UT19UUkFDRV9OQU1FKHZtYS0+dm0p KTsKPiArCj4gIAkJdm1hLT52bS0+dGVhcmRvd25fdmFfcmFuZ2Uodm1hLT52bSwKPiAgCQkJCQkg ICB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+bm9kZS5zaXplKTsKPiArCX0KPiAgfQo+ICAKPiAgZXh0 ZXJuIGludCBpbnRlbF9pb21tdV9nZnhfbWFwcGVkOwo+IEBAIC0xOTYzLDcgKzIwNjksNyBAQCBz dGF0aWMgaW50IGk5MTVfZ2VtX3NldHVwX2dsb2JhbF9ndHQoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKPiAgCQlpZiAoIXBwZ3R0KQo+ICAJCQlyZXR1cm4gLUVOT01FTTsKPiAgCj4gLQkJcmV0ID0g X19od19wcGd0dF9pbml0KGRldiwgcHBndHQpOwo+ICsJCXJldCA9IF9faHdfcHBndHRfaW5pdChk ZXYsIHBwZ3R0LCB0cnVlKTsKPiAgCQlpZiAocmV0ICE9IDApCj4gIAkJCXJldHVybiByZXQ7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBpbmRleCBmMDA0ZDNkLi4wYjYxN2M5IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaAo+IEBAIC0xNTYsNiArMTU2LDEyMSBAQCBU UkFDRV9FVkVOVChpOTE1X3ZtYV91bmJpbmQsCj4gIAkJICAgICAgX19lbnRyeS0+b2JqLCBfX2Vu dHJ5LT5vZmZzZXQsIF9fZW50cnktPnNpemUsIF9fZW50cnktPnZtKQo+ICApOwo+ICAKPiArI2Rl ZmluZSBWTV9UT19UUkFDRV9OQU1FKHZtKSBcCj4gKwkoaTkxNV9pc19nZ3R0KHZtKSA/ICJHR1RU IiA6IFwKPiArCQkJCSAgICAgICJQcml2YXRlIFZNIikKPiArCj4gK0RFQ0xBUkVfRVZFTlRfQ0xB U1MoaTkxNV92YSwKPiArCVRQX1BST1RPKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1 NjQgc3RhcnQsIHU2NCBsZW5ndGgsIGNvbnN0IGNoYXIgKm5hbWUpLAo+ICsJVFBfQVJHUyh2bSwg c3RhcnQsIGxlbmd0aCwgbmFtZSksCj4gKwo+ICsJVFBfU1RSVUNUX19lbnRyeSgKPiArCQlfX2Zp ZWxkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKiwgdm0pCj4gKwkJX19maWVsZCh1NjQsIHN0 YXJ0KQo+ICsJCV9fZmllbGQodTY0LCBlbmQpCj4gKwkJX19zdHJpbmcobmFtZSwgbmFtZSkKPiAr CSksCj4gKwo+ICsJVFBfZmFzdF9hc3NpZ24oCj4gKwkJX19lbnRyeS0+dm0gPSB2bTsKPiArCQlf X2VudHJ5LT5zdGFydCA9IHN0YXJ0Owo+ICsJCV9fZW50cnktPmVuZCA9IHN0YXJ0ICsgbGVuZ3Ro Owo+ICsJCV9fYXNzaWduX3N0cihuYW1lLCBuYW1lKTsKPiArCSksCj4gKwo+ICsJVFBfcHJpbnRr KCJ2bT0lcCAoJXMpLCAweCVsbHgtMHglbGx4IiwKPiArCQkgIF9fZW50cnktPnZtLCBfX2dldF9z dHIobmFtZSksICBfX2VudHJ5LT5zdGFydCwgX19lbnRyeS0+ZW5kKQo+ICspOwo+ICsKPiArREVG SU5FX0VWRU5UKGk5MTVfdmEsIGk5MTVfdmFfYWxsb2MsCj4gKwkgICAgIFRQX1BST1RPKHN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1NjQgc3RhcnQsIHU2NCBsZW5ndGgsIGNvbnN0IGNo YXIgKm5hbWUpLAo+ICsJICAgICBUUF9BUkdTKHZtLCBzdGFydCwgbGVuZ3RoLCBuYW1lKQo+ICsp Owo+ICsKPiArREVGSU5FX0VWRU5UKGk5MTVfdmEsIGk5MTVfdmFfdGVhcmRvd24sCj4gKwkgICAg IFRQX1BST1RPKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1NjQgc3RhcnQsIHU2NCBs ZW5ndGgsIGNvbnN0IGNoYXIgKm5hbWUpLAo+ICsJICAgICBUUF9BUkdTKHZtLCBzdGFydCwgbGVu Z3RoLCBuYW1lKQo+ICspOwo+ICsKPiArREVDTEFSRV9FVkVOVF9DTEFTUyhpOTE1X3BhZ2V0YWJs ZSwKPiArCVRQX1BST1RPKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1MzIgcGRlLCB1 NjQgc3RhcnQsIHU2NCBwZGVfc2hpZnQpLAo+ICsJVFBfQVJHUyh2bSwgcGRlLCBzdGFydCwgcGRl X3NoaWZ0KSwKPiArCj4gKwlUUF9TVFJVQ1RfX2VudHJ5KAo+ICsJCV9fZmllbGQoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqLCB2bSkKPiArCQlfX2ZpZWxkKHUzMiwgcGRlKQo+ICsJCV9fZmll bGQodTY0LCBzdGFydCkKPiArCQlfX2ZpZWxkKHU2NCwgZW5kKQo+ICsJKSwKPiArCj4gKwlUUF9m YXN0X2Fzc2lnbigKPiArCQlfX2VudHJ5LT52bSA9IHZtOwo+ICsJCV9fZW50cnktPnBkZSA9IHBk ZTsKPiArCQlfX2VudHJ5LT5zdGFydCA9IHN0YXJ0Owo+ICsJCV9fZW50cnktPmVuZCA9IChzdGFy dCArICgxVUxMIDw8IHBkZV9zaGlmdCkpICYgfigoMVVMTCA8PCBwZGVfc2hpZnQpLTEpOwo+ICsJ KSwKPiArCj4gKwlUUF9wcmludGsoInZtPSVwLCBwZGU9JWQgKDB4JWxseC0weCVsbHgpIiwKPiAr CQkgIF9fZW50cnktPnZtLCBfX2VudHJ5LT5wZGUsIF9fZW50cnktPnN0YXJ0LCBfX2VudHJ5LT5l bmQpCj4gKyk7Cj4gKwo+ICtERUZJTkVfRVZFTlQoaTkxNV9wYWdldGFibGUsIGk5MTVfcGFnZXRh YmxlX2FsbG9jLAo+ICsJICAgICBUUF9QUk9UTyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwgdTMyIHBkZSwgdTY0IHN0YXJ0LCB1NjQgcGRlX3NoaWZ0KSwKPiArCSAgICAgVFBfQVJHUyh2 bSwgcGRlLCBzdGFydCwgcGRlX3NoaWZ0KQo+ICspOwo+ICsKPiArREVGSU5FX0VWRU5UKGk5MTVf cGFnZXRhYmxlLCBpOTE1X3BhZ2V0YWJsZV9kZXN0cm95LAo+ICsJICAgICBUUF9QUk9UTyhzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdTMyIHBkZSwgdTY0IHN0YXJ0LCB1NjQgcGRlX3No aWZ0KSwKPiArCSAgICAgVFBfQVJHUyh2bSwgcGRlLCBzdGFydCwgcGRlX3NoaWZ0KQo+ICspOwo+ ICsKPiArLyogQXZvaWQgZXh0cmEgbWF0aCBiZWNhdXNlIHdlIG9ubHkgc3VwcG9ydCB0d28gc2l6 ZXMuIFRoZSBmb3JtYXQgaXMgZGVmaW5lZCBieQo+ICsgKiBiaXRtYXBfc2NucHJpbnRmLiBFYWNo IDMyIGJpdHMgaXMgOCBIRVggZGlnaXRzIGZvbGxvd2VkIGJ5IGNvbW1hICovCj4gKyNkZWZpbmUg VFJBQ0VfUFRfU0laRShiaXRzKSBcCj4gKwkoKCgoYml0cykgPT0gMTAyNCkgPyAyODggOiAxNDQp ICsgMSkKPiArCj4gK0RFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9wYWdldGFibGVfdXBkYXRlLAo+ ICsJVFBfUFJPVE8oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sIHUzMiBwZGUsCj4gKwkJ IHN0cnVjdCBpOTE1X3BhZ2V0YWIgKnB0LCB1MzIgZmlyc3QsIHUzMiBsZW4sIHNpemVfdCBiaXRz KSwKPiArCVRQX0FSR1Modm0sIHBkZSwgcHQsIGZpcnN0LCBsZW4sIGJpdHMpLAo+ICsKPiArCVRQ X1NUUlVDVF9fZW50cnkoCj4gKwkJX19maWVsZChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICos IHZtKQo+ICsJCV9fZmllbGQodTMyLCBwZGUpCj4gKwkJX19maWVsZCh1MzIsIGZpcnN0KQo+ICsJ CV9fZmllbGQodTMyLCBsYXN0KQo+ICsJCV9fZHluYW1pY19hcnJheShjaGFyLCBjdXJfcHRlcywg VFJBQ0VfUFRfU0laRShiaXRzKSkKPiArCSksCj4gKwo+ICsJVFBfZmFzdF9hc3NpZ24oCj4gKwkJ X19lbnRyeS0+dm0gPSB2bTsKPiArCQlfX2VudHJ5LT5wZGUgPSBwZGU7Cj4gKwkJX19lbnRyeS0+ Zmlyc3QgPSBmaXJzdDsKPiArCQlfX2VudHJ5LT5sYXN0ID0gZmlyc3QgKyBsZW47Cj4gKwo+ICsJ CWJpdG1hcF9zY25wcmludGYoX19nZXRfc3RyKGN1cl9wdGVzKSwKPiArCQkJCSBUUkFDRV9QVF9T SVpFKGJpdHMpLAo+ICsJCQkJIHB0LT51c2VkX3B0ZXMsCj4gKwkJCQkgYml0cyk7Cj4gKwkpLAo+ ICsKPiArCVRQX3ByaW50aygidm09JXAsIHBkZT0lZCwgdXBkYXRpbmcgJXU6JXVcdCVzIiwKPiAr CQkgIF9fZW50cnktPnZtLCBfX2VudHJ5LT5wZGUsIF9fZW50cnktPmxhc3QsIF9fZW50cnktPmZp cnN0LAo+ICsJCSAgX19nZXRfc3RyKGN1cl9wdGVzKSkKPiArKTsKPiArCj4gK0RFRklORV9FVkVO VChpOTE1X3BhZ2V0YWJsZV91cGRhdGUsIGk5MTVfcGFnZXRhYmxlX21hcCwKPiArCVRQX1BST1RP KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1MzIgcGRlLAo+ICsJCSBzdHJ1Y3QgaTkx NV9wYWdldGFiICpwdCwgdTMyIGZpcnN0LCB1MzIgbGVuLCBzaXplX3QgYml0cyksCj4gKwlUUF9B UkdTKHZtLCBwZGUsIHB0LCBmaXJzdCwgbGVuLCBiaXRzKQo+ICspOwo+ICsKPiArREVGSU5FX0VW RU5UKGk5MTVfcGFnZXRhYmxlX3VwZGF0ZSwgaTkxNV9wYWdldGFibGVfdW5tYXAsCj4gKwlUUF9Q Uk9UTyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwgdTMyIHBkZSwKPiArCQkgc3RydWN0 IGk5MTVfcGFnZXRhYiAqcHQsIHUzMiBmaXJzdCwgdTMyIGxlbiwgc2l6ZV90IGJpdHMpLAo+ICsJ VFBfQVJHUyh2bSwgcGRlLCBwdCwgZmlyc3QsIGxlbiwgYml0cykKPiArKTsKPiArCj4gIFRSQUNF X0VWRU5UKGk5MTVfZ2VtX29iamVjdF9jaGFuZ2VfZG9tYWluLAo+ICAJICAgIFRQX1BST1RPKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHUzMiBvbGRfcmVhZCwgdTMyIG9sZF93cml0 ZSksCj4gIAkgICAgVFBfQVJHUyhvYmosIG9sZF9yZWFkLCBvbGRfd3JpdGUpLAo+IC0tIAo+IDIu MS4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgorNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==