From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Williamson Subject: Re: [PATCH v6 6/6] drm/i915/gvt: Adding interface so user space can get the dma-buf Date: Fri, 2 Jun 2017 08:58:31 -0600 Message-ID: <20170602085831.41454a1f@t450s.home> References: <1495874332-2851-1-git-send-email-xiaoguang.chen@intel.com> <1495874332-2851-7-git-send-email-xiaoguang.chen@intel.com> <20170601120820.3358f7dd@w520.home> <20170601213459.461ecf36@w520.home> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Chen, Xiaoguang" Cc: "intel-gfx@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "Lv, Zhiyuan" , "intel-gvt-dev@lists.freedesktop.org" , "kraxel@redhat.com" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyIEp1biAyMDE3IDA5OjMxOjQxICswMDAwCiJDaGVuLCBYaWFvZ3VhbmciIDx4aWFv Z3VhbmcuY2hlbkBpbnRlbC5jb20+IHdyb3RlOgoKPiA+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0KPiA+RnJvbTogQWxleCBXaWxsaWFtc29uIFttYWlsdG86YWxleC53aWxsaWFtc29uQHJlZGhh dC5jb21dCj4gPlNlbnQ6IEZyaWRheSwgSnVuZSAwMiwgMjAxNyAxMTozNSBBTQo+ID5UbzogQ2hl biwgWGlhb2d1YW5nIDx4aWFvZ3VhbmcuY2hlbkBpbnRlbC5jb20+Cj4gPkNjOiBrcmF4ZWxAcmVk aGF0LmNvbTsgY2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrOyBpbnRlbC0KPiA+Z2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsKPiA+emhlbnl1d0Bs aW51eC5pbnRlbC5jb207IEx2LCBaaGl5dWFuIDx6aGl5dWFuLmx2QGludGVsLmNvbT47IGludGVs LWd2dC0KPiA+ZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgV2FuZywgWmhpIEEgPHpoaS5hLndh bmdAaW50ZWwuY29tPjsgVGlhbiwgS2V2aW4KPiA+PGtldmluLnRpYW5AaW50ZWwuY29tPgo+ID5T dWJqZWN0OiBSZTogW1BBVENIIHY2IDYvNl0gZHJtL2k5MTUvZ3Z0OiBBZGRpbmcgaW50ZXJmYWNl IHNvIHVzZXIgc3BhY2UgY2FuIGdldAo+ID50aGUgZG1hLWJ1Zgo+ID4KPiA+T24gRnJpLCAyIEp1 biAyMDE3IDAzOjI0OjM1ICswMDAwCj4gPiJDaGVuLCBYaWFvZ3VhbmciIDx4aWFvZ3VhbmcuY2hl bkBpbnRlbC5jb20+IHdyb3RlOgo+ID4gIAo+ID4+IEhpIEFsZXgsCj4gPj4gIAo+ID4+ID4tLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+ID5Gcm9tOiBBbGV4IFdpbGxpYW1zb24gW21haWx0 bzphbGV4LndpbGxpYW1zb25AcmVkaGF0LmNvbV0KPiA+PiA+U2VudDogRnJpZGF5LCBKdW5lIDAy LCAyMDE3IDI6MDggQU0KPiA+PiA+VG86IENoZW4sIFhpYW9ndWFuZyA8eGlhb2d1YW5nLmNoZW5A aW50ZWwuY29tPgo+ID4+ID5DYzoga3JheGVsQHJlZGhhdC5jb207IGNocmlzQGNocmlzLXdpbHNv bi5jby51azsgaW50ZWwtCj4gPj4gPmdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGxpbnV4LWtl cm5lbEB2Z2VyLmtlcm5lbC5vcmc7Cj4gPj4gPnpoZW55dXdAbGludXguaW50ZWwuY29tOyBMdiwg WmhpeXVhbiA8emhpeXVhbi5sdkBpbnRlbC5jb20+Owo+ID4+ID5pbnRlbC1ndnQtIGRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmc7IFdhbmcsIFpoaSBBCj4gPj4gPjx6aGkuYS53YW5nQGludGVsLmNv bT47IFRpYW4sIEtldmluIDxrZXZpbi50aWFuQGludGVsLmNvbT4KPiA+PiA+U3ViamVjdDogUmU6 IFtQQVRDSCB2NiA2LzZdIGRybS9pOTE1L2d2dDogQWRkaW5nIGludGVyZmFjZSBzbyB1c2VyCj4g Pj4gPnNwYWNlIGNhbiBnZXQgdGhlIGRtYS1idWYKPiA+PiA+Cj4gPj4gPk9uIFNhdCwgMjcgTWF5 IDIwMTcgMTY6Mzg6NTIgKzA4MDAKPiA+PiA+WGlhb2d1YW5nIENoZW4gPHhpYW9ndWFuZy5jaGVu QGludGVsLmNvbT4gd3JvdGU6Cj4gPj4gPiAgCj4gPj4gPj4gVXNlciBzcGFjZSBzaG91bGQgY3Jl YXRlIHRoZSBtYW5hZ2VtZW50IGZkIGZvciB0aGUgZG1hLWJ1ZiBvcGVyYXRpb24gZmlyc3QuCj4g Pj4gPj4gVGhlbiB1c2VyIGNhbiBxdWVyeSB0aGUgcGxhbmUgaW5mb3JtYXRpb24gYW5kIGNyZWF0 ZSBkbWEtYnVmIGlmCj4gPj4gPj4gbmVjZXNzYXJ5IHVzaW5nIHRoZSBtYW5hZ2VtZW50IGZkLgo+ ID4+ID4+Cj4gPj4gPj4gU2lnbmVkLW9mZi1ieTogWGlhb2d1YW5nIENoZW4gPHhpYW9ndWFuZy5j aGVuQGludGVsLmNvbT4KPiA+PiA+PiAtLS0KPiA+PiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2RtYWJ1Zi5jIHwgIDEyICsrKysKPiA+PiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2RtYWJ1Zi5oIHwgICA1ICsrCj4gPj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQu YyAgICB8ICAgMiArCj4gPj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCAgICB8 ICAgNSArKwo+ID4+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYyAgfCAxNDQg IAo+ID4+ID4rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyAgCj4gPj4gPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1LmMgICB8ICAgMSArCj4gPj4gPj4gIDYgZmls ZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKykKPiA+PiA+Pgo+ID4+ID4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmMKPiA+PiA+PiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9kbWFidWYuYwo+ID4+ID4+IGluZGV4IGM4MzFlOTEuLjk3NTllOWEgMTAw NjQ0Cj4gPj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jCj4gPj4g Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jCj4gPj4gPj4gQEAgLTIy Niw2ICsyMjYsNyBAQCBpbnQgaW50ZWxfdmdwdV9jcmVhdGVfZG1hYnVmKHN0cnVjdCBpbnRlbF92 Z3B1Cj4gPj4gPj4gKnZncHUsICAKPiA+PiA+dm9pZCAqYXJncykgIAo+ID4+ID4+ICAJc3RydWN0 IHZmaW9fdmdwdV9kbWFidWZfaW5mbyAqZ3Z0X2RtYWJ1ZiA9IGFyZ3M7Cj4gPj4gPj4gIAlzdHJ1 Y3QgaW50ZWxfdmdwdV9mYl9pbmZvICpmYl9pbmZvOwo+ID4+ID4+ICAJaW50IHJldDsKPiA+PiA+ PiArCXN0cnVjdCBpbnRlbF92Z3B1X2RtYWJ1Zl9vYmogKmRtYWJ1Zl9vYmo7Cj4gPj4gPj4KPiA+ PiA+PiAgCXJldCA9IGludGVsX3ZncHVfZ2V0X3BsYW5lX2luZm8oZGV2LCB2Z3B1LCAmZ3Z0X2Rt YWJ1Zi0+cGxhbmVfaW5mbyk7Cj4gPj4gPj4gIAlpZiAocmV0ICE9IDApCj4gPj4gPj4gQEAgLTI2 Myw2ICsyNjQsMTcgQEAgaW50IGludGVsX3ZncHVfY3JlYXRlX2RtYWJ1ZihzdHJ1Y3QgaW50ZWxf dmdwdQo+ID4+ID4+ICp2Z3B1LCAgCj4gPj4gPnZvaWQgKmFyZ3MpICAKPiA+PiA+PiAgCQlndnRf dmdwdV9lcnIoImNyZWF0ZSBkbWEtYnVmIGZkIGZhaWxlZCByZXQ6JWRcbiIsIHJldCk7Cj4gPj4g Pj4gIAkJcmV0dXJuIHJldDsKPiA+PiA+PiAgCX0KPiA+PiA+PiArCWRtYWJ1Zl9vYmogPSBrbWFs bG9jKHNpemVvZigqZG1hYnVmX29iaiksIEdGUF9LRVJORUwpOwo+ID4+ID4+ICsJaWYgKGRtYWJ1 Zl9vYmogPT0gTlVMTCkgewo+ID4+ID4+ICsJCWtmcmVlKGZiX2luZm8pOwo+ID4+ID4+ICsJCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiA+PiA+PiArCQlndnRfdmdwdV9lcnIoImFsbG9jIGRt YWJ1Zl9vYmogZmFpbGVkXG4iKTsKPiA+PiA+PiArCQlyZXR1cm4gLUVOT01FTTsKPiA+PiA+PiAr CX0KPiA+PiA+PiArCWRtYWJ1Zl9vYmotPm9iaiA9IG9iajsKPiA+PiA+PiArCUlOSVRfTElTVF9I RUFEKCZkbWFidWZfb2JqLT5saXN0KTsKPiA+PiA+PiArCWxpc3RfYWRkX3RhaWwoJmRtYWJ1Zl9v YmotPmxpc3QsICZ2Z3B1LT5kbWFidWZfb2JqX2xpc3RfaGVhZCk7Cj4gPj4gPj4gKwo+ID4+ID4+ ICAJZ3Z0X2RtYWJ1Zi0+ZmQgPSByZXQ7Cj4gPj4gPj4KPiA+PiA+PiAgCXJldHVybiAwOwo+ID4+ ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmgKPiA+PiA+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kbWFidWYuaAo+ID4+ID4+IGluZGV4IDhiZTk5 NzkuLmNhZmE3ODEgMTAwNjQ0Cj4gPj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L2RtYWJ1Zi5oCj4gPj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5o Cj4gPj4gPj4gQEAgLTMxLDYgKzMxLDExIEBAIHN0cnVjdCBpbnRlbF92Z3B1X2ZiX2luZm8gewo+ ID4+ID4+ICAJdWludDMyX3QgZmJfc2l6ZTsKPiA+PiA+PiAgfTsKPiA+PiA+Pgo+ID4+ID4+ICtz dHJ1Y3QgaW50ZWxfdmdwdV9kbWFidWZfb2JqIHsKPiA+PiA+PiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7Cj4gPj4gPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gPj4gPj4g K307Cj4gPj4gPj4gKwo+ID4+ID4+ICBpbnQgaW50ZWxfdmdwdV9xdWVyeV9wbGFuZShzdHJ1Y3Qg aW50ZWxfdmdwdSAqdmdwdSwgdm9pZCAqYXJncyk7Cj4gPj4gPj4gaW50IGludGVsX3ZncHVfY3Jl YXRlX2RtYWJ1ZihzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwgdm9pZCAqYXJncyk7Cj4gPj4gPj4K PiA+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCj4gPj4g Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgaW5kZXggMjAzMjkxNy4uZGJjM2Y4 NiAxMDA2NDQKPiA+PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKPiA+ PiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMKPiA+PiA+PiBAQCAtNTQs NiArNTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2d2dF9vcHMgaW50ZWxfZ3Z0X29w cyA9IHsKPiA+PiA+PiAgCS52Z3B1X3Jlc2V0ID0gaW50ZWxfZ3Z0X3Jlc2V0X3ZncHUsCj4gPj4g Pj4gIAkudmdwdV9hY3RpdmF0ZSA9IGludGVsX2d2dF9hY3RpdmF0ZV92Z3B1LAo+ID4+ID4+ICAJ LnZncHVfZGVhY3RpdmF0ZSA9IGludGVsX2d2dF9kZWFjdGl2YXRlX3ZncHUsCj4gPj4gPj4gKwku dmdwdV9xdWVyeV9wbGFuZSA9IGludGVsX3ZncHVfcXVlcnlfcGxhbmUsCj4gPj4gPj4gKwkudmdw dV9jcmVhdGVfZG1hYnVmID0gaW50ZWxfdmdwdV9jcmVhdGVfZG1hYnVmLAo+ID4+ID4+ICB9Owo+ ID4+ID4+Cj4gPj4gPj4gIC8qKgo+ID4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmgKPiA+PiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBp bmRleCA3NjNhOGM1Li5hODU1Nzk3IDEwMDY0NAo+ID4+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d2dC9ndnQuaAo+ID4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9n dnQuaAo+ID4+ID4+IEBAIC0xODUsOCArMTg1LDExIEBAIHN0cnVjdCBpbnRlbF92Z3B1IHsKPiA+ PiA+PiAgCQlzdHJ1Y3Qga3ZtICprdm07Cj4gPj4gPj4gIAkJc3RydWN0IHdvcmtfc3RydWN0IHJl bGVhc2Vfd29yazsKPiA+PiA+PiAgCQlhdG9taWNfdCByZWxlYXNlZDsKPiA+PiA+PiArCQlzdHJ1 Y3QgdmZpb19kZXZpY2UgKnZmaW9fZGV2aWNlOwo+ID4+ID4+ICAJfSB2ZGV2Owo+ID4+ID4+ICAj ZW5kaWYKPiA+PiA+PiArCWludCBkbWFidWZfbWdyX2ZkOwo+ID4+ID4+ICsJc3RydWN0IGxpc3Rf aGVhZCBkbWFidWZfb2JqX2xpc3RfaGVhZDsKPiA+PiA+PiAgfTsKPiA+PiA+Pgo+ID4+ID4+ICBz dHJ1Y3QgaW50ZWxfZ3Z0X2dtIHsKPiA+PiA+PiBAQCAtNDY3LDYgKzQ3MCw4IEBAIHN0cnVjdCBp bnRlbF9ndnRfb3BzIHsKPiA+PiA+PiAgCXZvaWQgKCp2Z3B1X3Jlc2V0KShzdHJ1Y3QgaW50ZWxf dmdwdSAqKTsKPiA+PiA+PiAgCXZvaWQgKCp2Z3B1X2FjdGl2YXRlKShzdHJ1Y3QgaW50ZWxfdmdw dSAqKTsKPiA+PiA+PiAgCXZvaWQgKCp2Z3B1X2RlYWN0aXZhdGUpKHN0cnVjdCBpbnRlbF92Z3B1 ICopOwo+ID4+ID4+ICsJaW50ICgqdmdwdV9xdWVyeV9wbGFuZSkoc3RydWN0IGludGVsX3ZncHUg KnZncHUsIHZvaWQgKik7Cj4gPj4gPj4gKwlpbnQgKCp2Z3B1X2NyZWF0ZV9kbWFidWYpKHN0cnVj dCBpbnRlbF92Z3B1ICp2Z3B1LCB2b2lkICopOwo+ID4+ID4+ICB9Owo+ID4+ID4+Cj4gPj4gPj4K PiA+PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKPiA+ PiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5jCj4gPj4gPj4gaW5kZXggMzg5 ZjA3Mi4uYTA3OTA4MCAxMDA2NDQKPiA+PiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQva3ZtZ3QuYwo+ID4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1ndC5j Cj4gPj4gPj4gQEAgLTQxLDYgKzQxLDcgQEAKPiA+PiA+PiAgI2luY2x1ZGUgPGxpbnV4L2t2bV9o b3N0Lmg+Cj4gPj4gPj4gICNpbmNsdWRlIDxsaW51eC92ZmlvLmg+Cj4gPj4gPj4gICNpbmNsdWRl IDxsaW51eC9tZGV2Lmg+Cj4gPj4gPj4gKyNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgo+ ID4+ID4+Cj4gPj4gPj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ID4+ID4+ICAjaW5jbHVkZSAi Z3Z0LmgiCj4gPj4gPj4gQEAgLTUyNCw2ICs1MjUsMTI1IEBAIHN0YXRpYyBpbnQKPiA+PiA+PiBp bnRlbF92Z3B1X3JlZ19pbml0X29wcmVnaW9uKHN0cnVjdCAgCj4gPj4gPmludGVsX3ZncHUgKnZn cHUpICAKPiA+PiA+PiAgCXJldHVybiByZXQ7Cj4gPj4gPj4gIH0KPiA+PiA+Pgo+ID4+ID4+ICtz dGF0aWMgaW50IGt2bWd0X2dldF92ZmlvX2RldmljZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkg ewo+ID4+ID4+ICsJc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2U7Cj4gPj4gPj4gKwo+ID4+ID4+ ICsJZGV2aWNlID0gdmZpb19kZXZpY2VfZ2V0X2Zyb21fZGV2KG1kZXZfZGV2KHZncHUtPnZkZXYu bWRldikpOwo+ID4+ID4+ICsJaWYgKGRldmljZSA9PSBOVUxMKQo+ID4+ID4+ICsJCXJldHVybiAt RU5PREVWOwo+ID4+ID4+ICsJdmdwdS0+dmRldi52ZmlvX2RldmljZSA9IGRldmljZTsKPiA+PiA+ PiArCj4gPj4gPj4gKwlyZXR1cm4gMDsKPiA+PiA+PiArfQo+ID4+ID4+ICsKPiA+PiA+PiArc3Rh dGljIHZvaWQga3ZtZ3RfcHV0X3ZmaW9fZGV2aWNlKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KSB7 Cj4gPj4gPj4gKwl2ZmlvX2RldmljZV9wdXQodmdwdS0+dmRldi52ZmlvX2RldmljZSk7Cj4gPj4g Pj4gK30KPiA+PiA+PiArCj4gPj4gPj4gK3N0YXRpYyBpbnQgaW50ZWxfdmdwdV9kbWFidWZfbWdy X2ZkX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsCj4gPj4gPj4gKwkJc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpCj4gPj4gPj4gK3sKPiA+PiA+PiArCXJldHVybiAtRVBFUk07Cj4gPj4gPj4gK30K PiA+PiA+PiArCj4gPj4gPj4gK3N0YXRpYyBpbnQgaW50ZWxfdmdwdV9kbWFidWZfbWdyX2ZkX3Jl bGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwKPiA+PiA+PiArCQlzdHJ1Y3QgZmlsZSAqZmlscCkK PiA+PiA+PiArewo+ID4+ID4+ICsJc3RydWN0IGludGVsX3ZncHUgKnZncHUgPSBmaWxwLT5wcml2 YXRlX2RhdGE7Cj4gPj4gPj4gKwlzdHJ1Y3QgaW50ZWxfdmdwdV9kbWFidWZfb2JqICpvYmo7Cj4g Pj4gPj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpwb3M7Cj4gPj4gPj4gKwo+ID4+ID4+ICsJaWYgKFdB Uk5fT04oIXZncHUtPnZkZXYudmZpb19kZXZpY2UpKQo+ID4+ID4+ICsJCXJldHVybiAtRU5PREVW Owo+ID4+ID4+ICsKPiA+PiA+PiArCWxpc3RfZm9yX2VhY2gocG9zLCAmdmdwdS0+ZG1hYnVmX29i al9saXN0X2hlYWQpIHsKPiA+PiA+PiArCQlvYmogPSBjb250YWluZXJfb2YocG9zLCBzdHJ1Y3Qg aW50ZWxfdmdwdV9kbWFidWZfb2JqLCBsaXN0KTsKPiA+PiA+PiArCQlpZiAoV0FSTl9PTighb2Jq KSkKPiA+PiA+PiArCQkJcmV0dXJuIC1FTk9ERVY7Cj4gPj4gPj4gKwkJa2ZyZWUob2JqLT5vYmot Pmd2dF9pbmZvKTsKPiA+PiA+PiArCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iai0+b2JqKTsKPiA+ PiA+PiArCQlrZnJlZShvYmopOwo+ID4+ID4+ICsJCWt2bWd0X3B1dF92ZmlvX2RldmljZSh2Z3B1 KTsgIAo+ID4+ID4KPiA+PiA+Q2FuIHdlIGRvIHRoaXM/ICBJZiBJIHVuZGVyc3RhbmQsIHdlJ3Jl IHJlbGVhc2luZyBhbGwgdGhlIHJlZmVyZW5jZXMKPiA+PiA+YW5kIGFsbG9jYXRpb25zIGZvciB0 aGUgZG1hYnVmIGZkcyBvbiByZWxlYXNlIG9mIHRoZSBtYW5hZ2VyIGZkLgo+ID4+ID5XaGF0IGhh cHBlbnMgaWYgdGhlIHVzZXIgY29udGludWVzIHRyeWluZyB0byBhY2Nlc3MgdGhvc2UgZG1hYnVm IGZkcyBhZnRlciAgCj4gPnRoaXM/ICAKPiA+PiBJIHRoaW5rIHdlIGNhbiBkbyB0aGlzIGhlcmUu Cj4gPj4gVGhlIGRtYS1idWYncyByZWxlYXNlIGZ1bmN0aW9uIGRtYV9idWZfcmVsZWFzZSgpIHdp bGwgYmUgY2FsbGVkIGJ5IGtlcm5lbCB3aGljaCAgCj4gPm1lYW5zIGFsbCB0aGUgY3JlYXRlZCBk bWFidWZzIHdpbGwgYmUgaW52YWxpZCBldmVuIHdlIGRvIG5vdCByZWxlYXNlIGFsbCB0aGUKPiA+ cmVmZXJlbmNlcyBhbmQgYWxsb2NhdGlvbnMgaGVyZS4KPiA+Cj4gPkFyZSB5b3UgYXNzdW1pbmcg dGhhdCB0aGUgdXNlciBoYXMgY2xvc2VkIHRoZSBkbWFidWYgZmRzPyAgVGhleSBjb3VsZCBjbG9z ZSB0aGUKPiA+bWFuYWdlciBmZCBmaXJzdCwgc2hvdWxkIHRoZSBkbWFidWYgZmQgY29udGludWUg dG8gd29yaz8gIAo+IElmIGd1ZXN0IHZtIHdhcyBzaHV0ZG93biBpdCBpcyBvayBzeXN0ZW0gd2ls bCByZWxlYXNlIHRoZSBhbGxvY2F0ZWQgZmRzIGluY2x1ZGluZyB0aGUgbWFuYWdlbWVudCBmZCBh bmQgZG1hYnVmIGZkcy4KPiBCdXQgaWYgdXNlciBjYWxsIHRoZSBjbG9zZSgpIHRvIGNsb3NlIHRo ZSBtYW5hZ2VtZW50IGZkIGRlbGliZXJhdGVseSB0aGVyZSBhcmUgcHJvYmxlbXMgaW4gY3VycmVu dCBpbXBsZW1lbnRhdGlvbi4KPiAKPiBVc3VhbGx5IHZlbmRvciBvZiBkbWEtYnVmIGRlZmluZXMg aXRzIG93biBkbWFfYnVmX29wcyhtYXAsIHVubWFwLCByZWxlYXNlLi4uLi4pIHNvIHZlbmRvciBj YW4gcmVsZWFzZSB0aGUgcmVmZXJlbmNlIGFuZCBhbGxvY2F0aW9ucyBpbiB0aGUgcmVsZWFzZSBj YWxsYmFjay4KPiBUaGUgY2FsbGluZyBzZXF1ZW5jZSBpczogZG1hLWJ1ZiBmcmFtZXdvcmsncyBy ZWxlYXNlKCktPnZlbmRvcidzIGRtYS1idWYgcmVsZWFzZShpOTE1J3MgaW4gb3VyIGNhc2UpLgo+ IAo+IEJ1dCBpbiBvdXIgY2FzZSB3ZSBkaWQgbm90IGNyZWF0ZSB0aGUgZG1hLWJ1ZiBmcm9tIHRo ZSBzY3JhdGNoIGJ1dCBjYWxsaW5nIGFuIGV4aXN0aW5nIGk5MTUgZnVuY3Rpb24gaTkxNV9nZW1f cHJpbWVfZXhwb3J0KCkgdG8gY3JlYXRlIGEgZG1hLWJ1ZiB3aGljaCB1c2UgdGhlIGk5MTUncyBk bWEtYnVmLW9wcy4gCj4gSW4gb3JkZXIgdG8gdXNlIHRoaXMgZnVuY3Rpb24gd2UgbXVzdCBjcmVh dGUgYSBnZW0gb2JqZWN0IGZpcnN0KHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdlbSBvYmpl Y3QgaXMgbm93IDEhISEpLiAKPiAKPiBXaGVuIGk5MTUncyBkbWEtYnVmJ3MgcmVsZWFzZSgpIGNh bGxiYWNrIGlzIGNhbGxlZCBpdCB3aWxsIHRyeSB0byBmcmVlIHRoZSBnZW0gb2JqZWN0IGFzc29j aWF0ZWQgd2l0aCB0aGUgZG1hLWJ1ZiBpZiBpdHMgcmVmIGNvdW50IGlzIDAuIEJ1dCBpbiBvdXIg Y2FzZSB0aGUgcmVmIGNvdW50IGlzIDEgc28gbm8gZnJlZSBjYWxsYmFjayBpcyBjYWxsZWQgc28g d2UgY2FuIG5vdCByZWxlYXNlIGFsbG9jYXRpb25zIHRoZXJlLgo+IFNvIHdlIGhhdmUgdG8gcmVs ZWFzZSBvdXIgZG1hLWJ1ZiByZWxlYXRlZCBhbGxvY2F0aW9ucyBpbiB0aGUgbWFuYWdlbWVudCBm ZCdzIHJlbGVhc2UgY2FsbGJhY2sgd2hpY2ggbWVhbnMgdGhlIGRtYS1idWZzJyBsaWZlIGN5Y2xl IG11c3QgdGhlIHNhbWUgd2l0aCB0aGUgbWFuYWdlbWVudCBmZC4KPiAKPiBUaGUgcmVhc29uIHdl IGNhbGwgaTkxNV9nZW1fcHJpbWVfZXhwb3J0KCkgdG8gY3JlYXRlIGEgZG1hLWJ1ZiBpcyB3ZSBk byBub3QgbmVlZCB0byBjaGFuZ2UgdGhlIGk5MTUncyBkbWEtYnVmIGZyYW1ld29yay4KPiAKPiBT bzogMSkgd2UgbWFpbnRhaW4gY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IHRoZSBkbWEtYnVm cyBoYXZlIHRoZSBzYW1lIGxpZmVjeWNsZSB3aXRoIHRoZSBtYW5hZ2VtZW50IGZkLiBVc2VyIGNh biBub3QgY2xvc2UgdGhlIG1hbmFnZW1lbnQgZmQuIE9yCj4gICAgICAgICAyKSB3ZSBjcmVhdGUg dGhlIGRtYS1idWYgZnJvbSBzY3JhdGNoIHdoaWNoIG5lZWQgdG8gY2hhbmdlIHRoZSBkbWEtYnVm IGluZnJhc3RydWN0dXJlIG9mIGk5MTUuCgpXZSBjYW5ub3Qgc2ltcGx5IHNheSB0aGF0IHRoZSB1 c2VyIGlzbid0IGFsbG93ZWQgdG8gcmVsZWFzZSB0aGVtIGluCnRoYXQgb3JkZXIuICBJZiB0aGV5 IGRvLCBob3cgZG9lcyBpdCBicmVhaywgaW5jbHVkaW5nIHdoYXQgbWlnaHQgbW1hcHMKaW50byB0 aG9zZSBkbWFidWZzIHByb3ZpZGUgdGhlbSBhY2Nlc3MgdG8gYWZ0ZXIgdGhlIHVuZGVybHlpbmcg b2JqZWN0IGlzCnJlbW92ZWQuIElmIHRoZSBwb2xpY3kgaXMgdGhhdCB0aGUgbWFuYWdlbWVudCBm ZCBjYW5ub3QgYmUgcmVsZWFzZWQKdW50aWwgdGhlIGRtYWJ1ZnMgYXJlIGNsb3NlZCwgdGhlbiB0 aGF0IG5lZWRzIHRvIGJlIGFjdGl2ZWx5IGVuZm9yY2VkLgpPdGhlcndpc2UgaXQgbmVlZHMgdG8g YmUgc3VwcG9ydGVkLiAgUmVxdWlyaW5nIGNoYW5nZXMgdG8gZG1hYnVmCmhhbmRsaW5nIGluIHRo ZSBpOTE1IGNvZGUgaXNuJ3QgYW4gZXhjdXNlIElNTy4gIFRoYW5rcywKCkFsZXgKCj4gPj4gPj4g Kwl9Cj4gPj4gPj4gKwlrdm1ndF9wdXRfdmZpb19kZXZpY2UodmdwdSk7Cj4gPj4gPj4gKwo+ID4+ ID4+ICsJcmV0dXJuIDA7Cj4gPj4gPj4gK30KPiA+PiA+PiArCj4gPj4gPj4gK3N0YXRpYyBsb25n IGludGVsX3ZncHVfZG1hYnVmX21ncl9mZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKPiA+PiA+ PiArCQl1bnNpZ25lZCBpbnQgaW9jdGwsIHVuc2lnbmVkIGxvbmcgYXJnKSB7Cj4gPj4gPj4gKwlz dHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSA9IGZpbHAtPnByaXZhdGVfZGF0YTsKPiA+PiA+PiArCWlu dCBtaW5zejsKPiA+PiA+PiArCWludCByZXQ7Cj4gPj4gPj4gKwlzdHJ1Y3QgZmQgZjsKPiA+PiA+ PiArCj4gPj4gPj4gKwlmID0gZmRnZXQodmdwdS0+ZG1hYnVmX21ncl9mZCk7Cj4gPj4gPj4gKwlp ZiAoIWYuZmlsZSkKPiA+PiA+PiArCQlyZXR1cm4gLUVCQURGOwo+ID4+ID4+ICsKPiA+PiA+PiAr CWlmIChpb2N0bCA9PSBWRklPX0RFVklDRV9RVUVSWV9QTEFORSkgewo+ID4+ID4+ICsJCXN0cnVj dCB2ZmlvX3ZncHVfcGxhbmVfaW5mbyBpbmZvOwo+ID4+ID4+ICsKPiA+PiA+PiArCQltaW5zeiA9 IG9mZnNldG9mZW5kKHN0cnVjdCB2ZmlvX3ZncHVfcGxhbmVfaW5mbywgcmVzdik7Cj4gPj4gPj4g KwkJaWYgKGNvcHlfZnJvbV91c2VyKCZpbmZvLCAodm9pZCBfX3VzZXIgKilhcmcsIG1pbnN6KSkg ewo+ID4+ID4+ICsJCQlmZHB1dChmKTsKPiA+PiA+PiArCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gPj4g Pj4gKwkJfQo+ID4+ID4+ICsJCWlmIChpbmZvLmFyZ3N6IDwgbWluc3opIHsKPiA+PiA+PiArCQkJ ZmRwdXQoZik7Cj4gPj4gPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4+ID4+ICsJCX0KPiA+PiA+ PiArCQlyZXQgPSBpbnRlbF9ndnRfb3BzLT52Z3B1X3F1ZXJ5X3BsYW5lKHZncHUsICZpbmZvKTsK PiA+PiA+PiArCQlpZiAocmV0ICE9IDApIHsKPiA+PiA+PiArCQkJZmRwdXQoZik7Cj4gPj4gPj4g KwkJCWd2dF92Z3B1X2VycigicXVlcnkgcGxhbmUgZmFpbGVkOiVkXG4iLCByZXQpOwo+ID4+ID4+ ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+PiA+PiArCQl9Cj4gPj4gPj4gKwkJZmRwdXQoZik7Cj4g Pj4gPj4gKwkJcmV0dXJuIGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIgKilhcmcsICZpbmZvLCBt aW5zeikgPwo+ID4+ID4+ICsJCQkJCQkJCS1FRkFVTFQgOiAwOwo+ID4+ID4+ICsJfSBlbHNlIGlm IChpb2N0bCA9PSBWRklPX0RFVklDRV9DUkVBVEVfRE1BQlVGKSB7Cj4gPj4gPj4gKwkJc3RydWN0 IHZmaW9fdmdwdV9kbWFidWZfaW5mbyBkbWFidWY7Cj4gPj4gPj4gKwo+ID4+ID4+ICsJCW1pbnN6 ID0gb2Zmc2V0b2ZlbmQoc3RydWN0IHZmaW9fdmdwdV9kbWFidWZfaW5mbywgcmVzdik7Cj4gPj4g Pj4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZkbWFidWYsICh2b2lkIF9fdXNlciAqKWFyZywgbWlu c3opKSB7Cj4gPj4gPj4gKwkJCWZkcHV0KGYpOwo+ID4+ID4+ICsJCQlyZXR1cm4gLUVGQVVMVDsK PiA+PiA+PiArCQl9Cj4gPj4gPj4gKwkJaWYgKGRtYWJ1Zi5hcmdzeiA8IG1pbnN6KSB7Cj4gPj4g Pj4gKwkJCWZkcHV0KGYpOwo+ID4+ID4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+PiA+PiArCQl9 Cj4gPj4gPj4gKwkJcmV0ID0ga3ZtZ3RfZ2V0X3ZmaW9fZGV2aWNlKHZncHUpOwo+ID4+ID4+ICsJ CWlmIChyZXQgIT0gMCkKPiA+PiA+PiArCQkJcmV0dXJuIHJldDsgIAo+ID4+ID4KPiA+PiA+TWlz c2VkIGFuIGZkcHV0LCB0aG91Z2ggSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgdmFsdWUg b2YgdGhlCj4gPj4gPm9yaWdpbmFsIGZkZ2V0IG9yIHRoZSBkbWFidWZfbWdyX2ZkIGZpZWxkIGF0 IGFsbC4gIGRtYWJ1Zl9tZ3JfZmQgaXMKPiA+PiA+b25seSB1c2VkIGhlcmUsIHByZXN1bWFibHkg dG8gYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBmZCB3aGlsZSB3ZSdyZQo+ID4+ID5pbiB0aGUgaW9j dGwsIGJ1dCB3ZSdyZSBpbiB0aGUgaW9jdGwgZnVuY3Rpb24gb2YgdGhhdCBmZCwgc28gSSB0aGlu ayB0aGVyZSBhcmUgIAo+ID5hbHJlYWR5IHJlZmVyZW5jZXMgZWxzZXdoZXJlLiAgCj4gPj4gTWFr ZSBzZW5zZS4gRmRnZXQvZmRwdXQgY2FuIGJlIHJlbW92ZWQuCj4gPj4gIAo+ID4+ID4gIAo+ID4+ ID4+ICsKPiA+PiA+PiArCQlyZXQgPSBpbnRlbF9ndnRfb3BzLT52Z3B1X2NyZWF0ZV9kbWFidWYo dmdwdSwgJmRtYWJ1Zik7Cj4gPj4gPj4gKwkJaWYgKHJldCAhPSAwKSB7Cj4gPj4gPj4gKwkJCWt2 bWd0X3B1dF92ZmlvX2RldmljZSh2Z3B1KTsKPiA+PiA+PiArCQkJZmRwdXQoZik7Cj4gPj4gPj4g KwkJCXJldHVybiAtRUlOVkFMOyAgCj4gPj4gPgo+ID4+ID5XaHkgbm90IHJldHVybiB0aGUgZXJy bm8gdGhhdCB2Z3B1X2NyZWF0ZV9kbWFidWYgcHJvdmlkZWQ/ICAKPiA+PiBXaWxsIGNoYW5nZSB0 byB1c2UgdGhlIHJldHVybmVkIGVycm5vLgo+ID4+ICAKPiA+PiA+ICAKPiA+PiA+PiArCQl9Cj4g Pj4gPj4gKwkJZmRwdXQoZik7Cj4gPj4gPj4gKwkJcmV0dXJuIGNvcHlfdG9fdXNlcigodm9pZCBf X3VzZXIgKilhcmcsICZkbWFidWYsIG1pbnN6KSA/Cj4gPj4gPj4gKwkJCQkJCQkJLUVGQVVMVCA6 IDA7Cj4gPj4gPj4gKwl9Cj4gPj4gPj4gKwo+ID4+ID4+ICsJZmRwdXQoZik7Cj4gPj4gPj4gKwln dnRfdmdwdV9lcnIoInVuc3VwcG9ydGVkIGRtYWJ1ZiBvcGVyYXRpb25cbiIpOwo+ID4+ID4+ICsK PiA+PiA+PiArCXJldHVybiAtRUlOVkFMOwo+ID4+ID4+ICt9Cj4gPj4gPj4gKwo+ID4+ID4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpbnRlbF92Z3B1X2RtYWJ1Zl9tZ3Jf ZmRfb3BzID0gewo+ID4+ID4+ICsJLnJlbGVhc2UgICAgICAgID0gaW50ZWxfdmdwdV9kbWFidWZf bWdyX2ZkX3JlbGVhc2UsCj4gPj4gPj4gKwkudW5sb2NrZWRfaW9jdGwgPSBpbnRlbF92Z3B1X2Rt YWJ1Zl9tZ3JfZmRfaW9jdGwsCj4gPj4gPj4gKwkubW1hcCAgICAgICAgICAgPSBpbnRlbF92Z3B1 X2RtYWJ1Zl9tZ3JfZmRfbW1hcCwKPiA+PiA+PiArCS5sbHNlZWsgICAgICAgICA9IG5vb3BfbGxz ZWVrLAo+ID4+ID4+ICt9Owo+ID4+ID4+ICBzdGF0aWMgaW50IGludGVsX3ZncHVfY3JlYXRlKHN0 cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QKPiA+PiA+PiBtZGV2X2RldmljZQo+ID4+ID4+ICpt ZGV2KSAgewo+ID4+ID4+ICAJc3RydWN0IGludGVsX3ZncHUgKnZncHUgPSBOVUxMOwo+ID4+ID4+ IEBAIC0xMjU5LDYgKzEzNzksMzAgQEAgc3RhdGljIGxvbmcgaW50ZWxfdmdwdV9pb2N0bChzdHJ1 Y3QKPiA+PiA+PiBtZGV2X2RldmljZSAgCj4gPj4gPiptZGV2LCB1bnNpZ25lZCBpbnQgY21kLCAg Cj4gPj4gPj4gIAl9IGVsc2UgaWYgKGNtZCA9PSBWRklPX0RFVklDRV9SRVNFVCkgewo+ID4+ID4+ ICAJCWludGVsX2d2dF9vcHMtPnZncHVfcmVzZXQodmdwdSk7Cj4gPj4gPj4gIAkJcmV0dXJuIDA7 Cj4gPj4gPj4gKwl9IGVsc2UgaWYgKGNtZCA9PSBWRklPX0RFVklDRV9HRVRfRkQpIHsKPiA+PiA+ PiArCQlpbnQgZmQ7Cj4gPj4gPj4gKwkJdTMyIHR5cGU7Cj4gPj4gPj4gKwkJaW50IHJldDsKPiA+ PiA+PiArCj4gPj4gPj4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZ0eXBlLCAodm9pZCBfX3VzZXIg KilhcmcsIHNpemVvZih0eXBlKSkpCj4gPj4gPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ID4+ID4+ ICsJCWlmICh0eXBlICE9IFZGSU9fREVWSUNFX0RNQUJVRl9NR1JfRkQpCj4gPj4gPj4gKwkJCXJl dHVybiAtRUlOVkFMOwo+ID4+ID4+ICsKPiA+PiA+PiArCQlyZXQgPSBrdm1ndF9nZXRfdmZpb19k ZXZpY2UodmdwdSk7Cj4gPj4gPj4gKwkJaWYgKHJldCAhPSAwKQo+ID4+ID4+ICsJCQlyZXR1cm4g cmV0Owo+ID4+ID4+ICsKPiA+PiA+PiArCQlmZCA9IGFub25faW5vZGVfZ2V0ZmQoImludGVsLXZn cHUtZG1hYnVmLW1nci1mZCIsCj4gPj4gPj4gKwkJCSZpbnRlbF92Z3B1X2RtYWJ1Zl9tZ3JfZmRf b3BzLAo+ID4+ID4+ICsJCQl2Z3B1LCBPX1JEV1IgfCBPX0NMT0VYRUMpOwo+ID4+ID4+ICsJCWlm IChmZCA8IDApIHsKPiA+PiA+PiArCQkJZ3Z0X3ZncHVfZXJyKCJjcmVhdGUgZG1hYnVmIG1nciBm ZCBmYWlsZWRcbiIpOwo+ID4+ID4+ICsJCQlyZXR1cm4gLUVJTlZBTDsgIAo+ID4+ID4KPiA+PiA+ RXJyb3IgcGF0aCBsZWFrcyB2ZmlvX2RldmljZSByZWZlcmVuY2UuICAKPiA+PiBXaWxsIGNvcnJl Y3QgaW4gdGhlIG5leHQgdmVyc2lvbi4KPiA+PiAgCj4gPj4gPiAgCj4gPj4gPj4gKwkJfQo+ID4+ ID4+ICsJCXZncHUtPmRtYWJ1Zl9tZ3JfZmQgPSBmZDsgIAo+ID4+ID4KPiA+PiA+QXMgYWJvdmUs IHVuY2xlYXIgdmFsdWUgb2YgdGhpcyBmaWVsZCwgYWRkaXRpb25hbGx5LCB3aGF0IGlmIHRoZSB1 c2VyCj4gPj4gPmNhbGxzIFZGSU9fREVWSUNFX0dFVF9GRCBtb3JlIHRoYW4gb25jZT8gIAo+ID4+ IEFoLCBnb29kIHF1ZXN0aW9uLgo+ID4+IFZGSU9fREVWSUNFX0dFVF9GRCBzaG91bGQgb25seSBi ZSBjYWxsZWQgb25jZS4KPiA+PiBBbmQgd2Ugc2hvdWxkIGFkZCBhIGNoZWNrIGlmIHRoZSB2Z3B1 LT5kbWFidWZfbWdyX2ZkIGlzIG5vdCAwIHdoaWNoIG1lYW5zICAKPiA+VkZJT19ERVZJQ0VfR0VU X0ZEIGhhZCBiZWVuIGNhbGxlZCBiZWZvcmUgd2Ugc2hvdWxkIHJldHVybiBhbiBlcnJvci4KPiA+ Cj4gPkV4Y2VwdCB3ZSBubyBsb25nZXIgbmVlZCB0aGF0IGZkIGFuZCB3ZSBzaG91bGQgcHJvYmFi bHkgdXNlIGFuIGF0b21pYyAnb3BlbmVkJwo+ID5zbyBpdCdzIG5vdCByYWN5LiAgVGhhbmtzLAo+ ID4KPiA+QWxleAo+ID4gIAo+ID4+ID4+ICsKPiA+PiA+PiArCQlyZXR1cm4gZmQ7Cj4gPj4gPj4g IAl9Cj4gPj4gPj4KPiA+PiA+PiAgCXJldHVybiAwOwo+ID4+ID4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gPj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvdmdwdS5jIGluZGV4IDZlM2NiZDguLmFmNmZjNzQgMTAwNjQ0Cj4gPj4gPj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3ZncHUuYwo+ID4+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC92Z3B1LmMKPiA+PiA+PiBAQCAtMzQ2LDYgKzM0Niw3IEBAIHN0YXRpYyBz dHJ1Y3QgaW50ZWxfdmdwdSAgCj4gPj4gPipfX2ludGVsX2d2dF9jcmVhdGVfdmdwdShzdHJ1Y3Qg aW50ZWxfZ3Z0ICpndnQsICAKPiA+PiA+PiAgCXZncHUtPmd2dCA9IGd2dDsKPiA+PiA+PiAgCXZn cHUtPnNjaGVkX2N0bC53ZWlnaHQgPSBwYXJhbS0+d2VpZ2h0Owo+ID4+ID4+ICAJYml0bWFwX3pl cm8odmdwdS0+dGxiX2hhbmRsZV9wZW5kaW5nLCBJOTE1X05VTV9FTkdJTkVTKTsKPiA+PiA+PiAr CUlOSVRfTElTVF9IRUFEKCZ2Z3B1LT5kbWFidWZfb2JqX2xpc3RfaGVhZCk7Cj4gPj4gPj4KPiA+ PiA+PiAgCWludGVsX3ZncHVfaW5pdF9jZmdfc3BhY2UodmdwdSwgcGFyYW0tPnByaW1hcnkpOwo+ ID4+ID4+ICAKPiA+PiAgCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK