From: Alex Williamson Subject: Re: [PATCH v6 6/6] drm/i915/gvt: Adding interface so user space can get the dma-buf Date: Thu, 1 Jun 2017 21:34:59 -0600 Message-ID: <20170601213459.461ecf36@w520.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> 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 T24gRnJpLCAyIEp1biAyMDE3IDAzOjI0OjM1ICswMDAwCiJDaGVuLCBYaWFvZ3VhbmciIDx4aWFv Z3VhbmcuY2hlbkBpbnRlbC5jb20+IHdyb3RlOgoKPiBIaSBBbGV4LAo+IAo+ID4tLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQo+ID5Gcm9tOiBBbGV4IFdpbGxpYW1zb24gW21haWx0bzphbGV4Lndp bGxpYW1zb25AcmVkaGF0LmNvbV0KPiA+U2VudDogRnJpZGF5LCBKdW5lIDAyLCAyMDE3IDI6MDgg QU0KPiA+VG86IENoZW4sIFhpYW9ndWFuZyA8eGlhb2d1YW5nLmNoZW5AaW50ZWwuY29tPgo+ID5D Yzoga3JheGVsQHJlZGhhdC5jb207IGNocmlzQGNocmlzLXdpbHNvbi5jby51azsgaW50ZWwtCj4g PmdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7 Cj4gPnpoZW55dXdAbGludXguaW50ZWwuY29tOyBMdiwgWmhpeXVhbiA8emhpeXVhbi5sdkBpbnRl bC5jb20+OyBpbnRlbC1ndnQtCj4gPmRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFdhbmcsIFpo aSBBIDx6aGkuYS53YW5nQGludGVsLmNvbT47IFRpYW4sIEtldmluCj4gPjxrZXZpbi50aWFuQGlu dGVsLmNvbT4KPiA+U3ViamVjdDogUmU6IFtQQVRDSCB2NiA2LzZdIGRybS9pOTE1L2d2dDogQWRk aW5nIGludGVyZmFjZSBzbyB1c2VyIHNwYWNlIGNhbiBnZXQKPiA+dGhlIGRtYS1idWYKPiA+Cj4g Pk9uIFNhdCwgMjcgTWF5IDIwMTcgMTY6Mzg6NTIgKzA4MDAKPiA+WGlhb2d1YW5nIENoZW4gPHhp YW9ndWFuZy5jaGVuQGludGVsLmNvbT4gd3JvdGU6Cj4gPiAgCj4gPj4gVXNlciBzcGFjZSBzaG91 bGQgY3JlYXRlIHRoZSBtYW5hZ2VtZW50IGZkIGZvciB0aGUgZG1hLWJ1ZiBvcGVyYXRpb24gZmly c3QuCj4gPj4gVGhlbiB1c2VyIGNhbiBxdWVyeSB0aGUgcGxhbmUgaW5mb3JtYXRpb24gYW5kIGNy ZWF0ZSBkbWEtYnVmIGlmCj4gPj4gbmVjZXNzYXJ5IHVzaW5nIHRoZSBtYW5hZ2VtZW50IGZkLgo+ ID4+Cj4gPj4gU2lnbmVkLW9mZi1ieTogWGlhb2d1YW5nIENoZW4gPHhpYW9ndWFuZy5jaGVuQGlu dGVsLmNvbT4KPiA+PiAtLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5j IHwgIDEyICsrKysKPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5oIHwgICA1 ICsrCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuYyAgICB8ICAgMiArCj4gPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCAgICB8ICAgNSArKwo+ID4+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYyAgfCAxNDQgIAo+ID4rKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKyAgCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92Z3B1 LmMgICB8ICAgMSArCj4gPj4gIDYgZmlsZXMgY2hhbmdlZCwgMTY5IGluc2VydGlvbnMoKykKPiA+ Pgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1hYnVmLmMKPiA+ PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9kbWFidWYuYwo+ID4+IGluZGV4IGM4MzFlOTEu Ljk3NTllOWEgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1 Zi5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5jCj4gPj4gQEAg LTIyNiw2ICsyMjYsNyBAQCBpbnQgaW50ZWxfdmdwdV9jcmVhdGVfZG1hYnVmKHN0cnVjdCBpbnRl bF92Z3B1ICp2Z3B1LCAgCj4gPnZvaWQgKmFyZ3MpICAKPiA+PiAgCXN0cnVjdCB2ZmlvX3ZncHVf ZG1hYnVmX2luZm8gKmd2dF9kbWFidWYgPSBhcmdzOwo+ID4+ICAJc3RydWN0IGludGVsX3ZncHVf ZmJfaW5mbyAqZmJfaW5mbzsKPiA+PiAgCWludCByZXQ7Cj4gPj4gKwlzdHJ1Y3QgaW50ZWxfdmdw dV9kbWFidWZfb2JqICpkbWFidWZfb2JqOwo+ID4+Cj4gPj4gIAlyZXQgPSBpbnRlbF92Z3B1X2dl dF9wbGFuZV9pbmZvKGRldiwgdmdwdSwgJmd2dF9kbWFidWYtPnBsYW5lX2luZm8pOwo+ID4+ICAJ aWYgKHJldCAhPSAwKQo+ID4+IEBAIC0yNjMsNiArMjY0LDE3IEBAIGludCBpbnRlbF92Z3B1X2Ny ZWF0ZV9kbWFidWYoc3RydWN0IGludGVsX3ZncHUgKnZncHUsICAKPiA+dm9pZCAqYXJncykgIAo+ ID4+ICAJCWd2dF92Z3B1X2VycigiY3JlYXRlIGRtYS1idWYgZmQgZmFpbGVkIHJldDolZFxuIiwg cmV0KTsKPiA+PiAgCQlyZXR1cm4gcmV0Owo+ID4+ICAJfQo+ID4+ICsJZG1hYnVmX29iaiA9IGtt YWxsb2Moc2l6ZW9mKCpkbWFidWZfb2JqKSwgR0ZQX0tFUk5FTCk7Cj4gPj4gKwlpZiAoZG1hYnVm X29iaiA9PSBOVUxMKSB7Cj4gPj4gKwkJa2ZyZWUoZmJfaW5mbyk7Cj4gPj4gKwkJaTkxNV9nZW1f b2JqZWN0X3B1dChvYmopOwo+ID4+ICsJCWd2dF92Z3B1X2VycigiYWxsb2MgZG1hYnVmX29iaiBm YWlsZWRcbiIpOwo+ID4+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4+ICsJfQo+ID4+ICsJZG1hYnVm X29iai0+b2JqID0gb2JqOwo+ID4+ICsJSU5JVF9MSVNUX0hFQUQoJmRtYWJ1Zl9vYmotPmxpc3Qp Owo+ID4+ICsJbGlzdF9hZGRfdGFpbCgmZG1hYnVmX29iai0+bGlzdCwgJnZncHUtPmRtYWJ1Zl9v YmpfbGlzdF9oZWFkKTsKPiA+PiArCj4gPj4gIAlndnRfZG1hYnVmLT5mZCA9IHJldDsKPiA+Pgo+ ID4+ICAJcmV0dXJuIDA7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9kbWFidWYuaAo+ID4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RtYWJ1Zi5oCj4gPj4g aW5kZXggOGJlOTk3OS4uY2FmYTc4MSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZG1hYnVmLmgKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZG1h YnVmLmgKPiA+PiBAQCAtMzEsNiArMzEsMTEgQEAgc3RydWN0IGludGVsX3ZncHVfZmJfaW5mbyB7 Cj4gPj4gIAl1aW50MzJfdCBmYl9zaXplOwo+ID4+ICB9Owo+ID4+Cj4gPj4gK3N0cnVjdCBpbnRl bF92Z3B1X2RtYWJ1Zl9vYmogewo+ID4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKPiA+PiArCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiA+PiArfTsKPiA+PiArCj4gPj4gIGlu dCBpbnRlbF92Z3B1X3F1ZXJ5X3BsYW5lKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB2b2lkICph cmdzKTsgIGludAo+ID4+IGludGVsX3ZncHVfY3JlYXRlX2RtYWJ1ZihzdHJ1Y3QgaW50ZWxfdmdw dSAqdmdwdSwgdm9pZCAqYXJncyk7Cj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2d2dC5jCj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMg aW5kZXggMjAzMjkxNy4uZGJjM2Y4NiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMK PiA+PiBAQCAtNTQsNiArNTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2d2dF9vcHMg aW50ZWxfZ3Z0X29wcyA9IHsKPiA+PiAgCS52Z3B1X3Jlc2V0ID0gaW50ZWxfZ3Z0X3Jlc2V0X3Zn cHUsCj4gPj4gIAkudmdwdV9hY3RpdmF0ZSA9IGludGVsX2d2dF9hY3RpdmF0ZV92Z3B1LAo+ID4+ ICAJLnZncHVfZGVhY3RpdmF0ZSA9IGludGVsX2d2dF9kZWFjdGl2YXRlX3ZncHUsCj4gPj4gKwku dmdwdV9xdWVyeV9wbGFuZSA9IGludGVsX3ZncHVfcXVlcnlfcGxhbmUsCj4gPj4gKwkudmdwdV9j cmVhdGVfZG1hYnVmID0gaW50ZWxfdmdwdV9jcmVhdGVfZG1hYnVmLAo+ID4+ICB9Owo+ID4+Cj4g Pj4gIC8qKgo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmgK PiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaCBpbmRleCA3NjNhOGM1Li5hODU1 Nzk3IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+ID4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQuaAo+ID4+IEBAIC0xODUsOCArMTg1 LDExIEBAIHN0cnVjdCBpbnRlbF92Z3B1IHsKPiA+PiAgCQlzdHJ1Y3Qga3ZtICprdm07Cj4gPj4g IAkJc3RydWN0IHdvcmtfc3RydWN0IHJlbGVhc2Vfd29yazsKPiA+PiAgCQlhdG9taWNfdCByZWxl YXNlZDsKPiA+PiArCQlzdHJ1Y3QgdmZpb19kZXZpY2UgKnZmaW9fZGV2aWNlOwo+ID4+ICAJfSB2 ZGV2Owo+ID4+ICAjZW5kaWYKPiA+PiArCWludCBkbWFidWZfbWdyX2ZkOwo+ID4+ICsJc3RydWN0 IGxpc3RfaGVhZCBkbWFidWZfb2JqX2xpc3RfaGVhZDsKPiA+PiAgfTsKPiA+Pgo+ID4+ICBzdHJ1 Y3QgaW50ZWxfZ3Z0X2dtIHsKPiA+PiBAQCAtNDY3LDYgKzQ3MCw4IEBAIHN0cnVjdCBpbnRlbF9n dnRfb3BzIHsKPiA+PiAgCXZvaWQgKCp2Z3B1X3Jlc2V0KShzdHJ1Y3QgaW50ZWxfdmdwdSAqKTsK PiA+PiAgCXZvaWQgKCp2Z3B1X2FjdGl2YXRlKShzdHJ1Y3QgaW50ZWxfdmdwdSAqKTsKPiA+PiAg CXZvaWQgKCp2Z3B1X2RlYWN0aXZhdGUpKHN0cnVjdCBpbnRlbF92Z3B1ICopOwo+ID4+ICsJaW50 ICgqdmdwdV9xdWVyeV9wbGFuZSkoc3RydWN0IGludGVsX3ZncHUgKnZncHUsIHZvaWQgKik7Cj4g Pj4gKwlpbnQgKCp2Z3B1X2NyZWF0ZV9kbWFidWYpKHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1LCB2 b2lkICopOwo+ID4+ICB9Owo+ID4+Cj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2t2bWd0LmMKPiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9rdm1n dC5jCj4gPj4gaW5kZXggMzg5ZjA3Mi4uYTA3OTA4MCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQva3ZtZ3QuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9rdm1ndC5jCj4gPj4gQEAgLTQxLDYgKzQxLDcgQEAKPiA+PiAgI2luY2x1ZGUgPGxpbnV4 L2t2bV9ob3N0Lmg+Cj4gPj4gICNpbmNsdWRlIDxsaW51eC92ZmlvLmg+Cj4gPj4gICNpbmNsdWRl IDxsaW51eC9tZGV2Lmg+Cj4gPj4gKyNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgo+ID4+ Cj4gPj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ID4+ICAjaW5jbHVkZSAiZ3Z0LmgiCj4gPj4g QEAgLTUyNCw2ICs1MjUsMTI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfdmdwdV9yZWdfaW5pdF9vcHJl Z2lvbihzdHJ1Y3QgIAo+ID5pbnRlbF92Z3B1ICp2Z3B1KSAgCj4gPj4gIAlyZXR1cm4gcmV0Owo+ ID4+ICB9Cj4gPj4KPiA+PiArc3RhdGljIGludCBrdm1ndF9nZXRfdmZpb19kZXZpY2Uoc3RydWN0 IGludGVsX3ZncHUgKnZncHUpIHsKPiA+PiArCXN0cnVjdCB2ZmlvX2RldmljZSAqZGV2aWNlOwo+ ID4+ICsKPiA+PiArCWRldmljZSA9IHZmaW9fZGV2aWNlX2dldF9mcm9tX2RldihtZGV2X2Rldih2 Z3B1LT52ZGV2Lm1kZXYpKTsKPiA+PiArCWlmIChkZXZpY2UgPT0gTlVMTCkKPiA+PiArCQlyZXR1 cm4gLUVOT0RFVjsKPiA+PiArCXZncHUtPnZkZXYudmZpb19kZXZpY2UgPSBkZXZpY2U7Cj4gPj4g Kwo+ID4+ICsJcmV0dXJuIDA7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyB2b2lkIGt2bWd0 X3B1dF92ZmlvX2RldmljZShzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSkgewo+ID4+ICsJdmZpb19k ZXZpY2VfcHV0KHZncHUtPnZkZXYudmZpb19kZXZpY2UpOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtz dGF0aWMgaW50IGludGVsX3ZncHVfZG1hYnVmX21ncl9mZF9tbWFwKHN0cnVjdCBmaWxlICpmaWxl LAo+ID4+ICsJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQo+ID4+ICt7Cj4gPj4gKwlyZXR1 cm4gLUVQRVJNOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgaW50IGludGVsX3ZncHVfZG1h YnVmX21ncl9mZF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCj4gPj4gKwkJc3RydWN0IGZp bGUgKmZpbHApCj4gPj4gK3sKPiA+PiArCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gZmlscC0+ cHJpdmF0ZV9kYXRhOwo+ID4+ICsJc3RydWN0IGludGVsX3ZncHVfZG1hYnVmX29iaiAqb2JqOwo+ ID4+ICsJc3RydWN0IGxpc3RfaGVhZCAqcG9zOwo+ID4+ICsKPiA+PiArCWlmIChXQVJOX09OKCF2 Z3B1LT52ZGV2LnZmaW9fZGV2aWNlKSkKPiA+PiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+PiArCj4g Pj4gKwlsaXN0X2Zvcl9lYWNoKHBvcywgJnZncHUtPmRtYWJ1Zl9vYmpfbGlzdF9oZWFkKSB7Cj4g Pj4gKwkJb2JqID0gY29udGFpbmVyX29mKHBvcywgc3RydWN0IGludGVsX3ZncHVfZG1hYnVmX29i aiwgbGlzdCk7Cj4gPj4gKwkJaWYgKFdBUk5fT04oIW9iaikpCj4gPj4gKwkJCXJldHVybiAtRU5P REVWOwo+ID4+ICsJCWtmcmVlKG9iai0+b2JqLT5ndnRfaW5mbyk7Cj4gPj4gKwkJaTkxNV9nZW1f b2JqZWN0X3B1dChvYmotPm9iaik7Cj4gPj4gKwkJa2ZyZWUob2JqKTsKPiA+PiArCQlrdm1ndF9w dXRfdmZpb19kZXZpY2UodmdwdSk7ICAKPiA+Cj4gPkNhbiB3ZSBkbyB0aGlzPyAgSWYgSSB1bmRl cnN0YW5kLCB3ZSdyZSByZWxlYXNpbmcgYWxsIHRoZSByZWZlcmVuY2VzIGFuZCBhbGxvY2F0aW9u cwo+ID5mb3IgdGhlIGRtYWJ1ZiBmZHMgb24gcmVsZWFzZSBvZiB0aGUgbWFuYWdlciBmZC4gIFdo YXQgaGFwcGVucyBpZiB0aGUgdXNlcgo+ID5jb250aW51ZXMgdHJ5aW5nIHRvIGFjY2VzcyB0aG9z ZSBkbWFidWYgZmRzIGFmdGVyIHRoaXM/ICAKPiBJIHRoaW5rIHdlIGNhbiBkbyB0aGlzIGhlcmUu Cj4gVGhlIGRtYS1idWYncyByZWxlYXNlIGZ1bmN0aW9uIGRtYV9idWZfcmVsZWFzZSgpIHdpbGwg YmUgY2FsbGVkIGJ5IGtlcm5lbCB3aGljaCBtZWFucyBhbGwgdGhlIGNyZWF0ZWQgZG1hYnVmcyB3 aWxsIGJlIGludmFsaWQgZXZlbiB3ZSBkbyBub3QgcmVsZWFzZSBhbGwgdGhlIHJlZmVyZW5jZXMg YW5kIGFsbG9jYXRpb25zIGhlcmUuCgpBcmUgeW91IGFzc3VtaW5nIHRoYXQgdGhlIHVzZXIgaGFz IGNsb3NlZCB0aGUgZG1hYnVmIGZkcz8gIFRoZXkgY291bGQKY2xvc2UgdGhlIG1hbmFnZXIgZmQg Zmlyc3QsIHNob3VsZCB0aGUgZG1hYnVmIGZkIGNvbnRpbnVlIHRvIHdvcms/CiAgCj4gPj4gKwl9 Cj4gPj4gKwlrdm1ndF9wdXRfdmZpb19kZXZpY2UodmdwdSk7Cj4gPj4gKwo+ID4+ICsJcmV0dXJu IDA7Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBsb25nIGludGVsX3ZncHVfZG1hYnVmX21n cl9mZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwKPiA+PiArCQl1bnNpZ25lZCBpbnQgaW9jdGws IHVuc2lnbmVkIGxvbmcgYXJnKSB7Cj4gPj4gKwlzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSA9IGZp bHAtPnByaXZhdGVfZGF0YTsKPiA+PiArCWludCBtaW5zejsKPiA+PiArCWludCByZXQ7Cj4gPj4g KwlzdHJ1Y3QgZmQgZjsKPiA+PiArCj4gPj4gKwlmID0gZmRnZXQodmdwdS0+ZG1hYnVmX21ncl9m ZCk7Cj4gPj4gKwlpZiAoIWYuZmlsZSkKPiA+PiArCQlyZXR1cm4gLUVCQURGOwo+ID4+ICsKPiA+ PiArCWlmIChpb2N0bCA9PSBWRklPX0RFVklDRV9RVUVSWV9QTEFORSkgewo+ID4+ICsJCXN0cnVj dCB2ZmlvX3ZncHVfcGxhbmVfaW5mbyBpbmZvOwo+ID4+ICsKPiA+PiArCQltaW5zeiA9IG9mZnNl dG9mZW5kKHN0cnVjdCB2ZmlvX3ZncHVfcGxhbmVfaW5mbywgcmVzdik7Cj4gPj4gKwkJaWYgKGNv cHlfZnJvbV91c2VyKCZpbmZvLCAodm9pZCBfX3VzZXIgKilhcmcsIG1pbnN6KSkgewo+ID4+ICsJ CQlmZHB1dChmKTsKPiA+PiArCQkJcmV0dXJuIC1FRkFVTFQ7Cj4gPj4gKwkJfQo+ID4+ICsJCWlm IChpbmZvLmFyZ3N6IDwgbWluc3opIHsKPiA+PiArCQkJZmRwdXQoZik7Cj4gPj4gKwkJCXJldHVy biAtRUlOVkFMOwo+ID4+ICsJCX0KPiA+PiArCQlyZXQgPSBpbnRlbF9ndnRfb3BzLT52Z3B1X3F1 ZXJ5X3BsYW5lKHZncHUsICZpbmZvKTsKPiA+PiArCQlpZiAocmV0ICE9IDApIHsKPiA+PiArCQkJ ZmRwdXQoZik7Cj4gPj4gKwkJCWd2dF92Z3B1X2VycigicXVlcnkgcGxhbmUgZmFpbGVkOiVkXG4i LCByZXQpOwo+ID4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+PiArCQl9Cj4gPj4gKwkJZmRwdXQo Zik7Cj4gPj4gKwkJcmV0dXJuIGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIgKilhcmcsICZpbmZv LCBtaW5zeikgPwo+ID4+ICsJCQkJCQkJCS1FRkFVTFQgOiAwOwo+ID4+ICsJfSBlbHNlIGlmIChp b2N0bCA9PSBWRklPX0RFVklDRV9DUkVBVEVfRE1BQlVGKSB7Cj4gPj4gKwkJc3RydWN0IHZmaW9f dmdwdV9kbWFidWZfaW5mbyBkbWFidWY7Cj4gPj4gKwo+ID4+ICsJCW1pbnN6ID0gb2Zmc2V0b2Zl bmQoc3RydWN0IHZmaW9fdmdwdV9kbWFidWZfaW5mbywgcmVzdik7Cj4gPj4gKwkJaWYgKGNvcHlf ZnJvbV91c2VyKCZkbWFidWYsICh2b2lkIF9fdXNlciAqKWFyZywgbWluc3opKSB7Cj4gPj4gKwkJ CWZkcHV0KGYpOwo+ID4+ICsJCQlyZXR1cm4gLUVGQVVMVDsKPiA+PiArCQl9Cj4gPj4gKwkJaWYg KGRtYWJ1Zi5hcmdzeiA8IG1pbnN6KSB7Cj4gPj4gKwkJCWZkcHV0KGYpOwo+ID4+ICsJCQlyZXR1 cm4gLUVJTlZBTDsKPiA+PiArCQl9Cj4gPj4gKwkJcmV0ID0ga3ZtZ3RfZ2V0X3ZmaW9fZGV2aWNl KHZncHUpOwo+ID4+ICsJCWlmIChyZXQgIT0gMCkKPiA+PiArCQkJcmV0dXJuIHJldDsgIAo+ID4K PiA+TWlzc2VkIGFuIGZkcHV0LCB0aG91Z2ggSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUg dmFsdWUgb2YgdGhlIG9yaWdpbmFsIGZkZ2V0Cj4gPm9yIHRoZSBkbWFidWZfbWdyX2ZkIGZpZWxk IGF0IGFsbC4gIGRtYWJ1Zl9tZ3JfZmQgaXMgb25seSB1c2VkIGhlcmUsIHByZXN1bWFibHkKPiA+ dG8gYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBmZCB3aGlsZSB3ZSdyZSBpbiB0aGUgaW9jdGwsIGJ1 dCB3ZSdyZSBpbiB0aGUgaW9jdGwgZnVuY3Rpb24KPiA+b2YgdGhhdCBmZCwgc28gSSB0aGluayB0 aGVyZSBhcmUgYWxyZWFkeSByZWZlcmVuY2VzIGVsc2V3aGVyZS4gIAo+IE1ha2Ugc2Vuc2UuIEZk Z2V0L2ZkcHV0IGNhbiBiZSByZW1vdmVkLgo+IAo+ID4gIAo+ID4+ICsKPiA+PiArCQlyZXQgPSBp bnRlbF9ndnRfb3BzLT52Z3B1X2NyZWF0ZV9kbWFidWYodmdwdSwgJmRtYWJ1Zik7Cj4gPj4gKwkJ aWYgKHJldCAhPSAwKSB7Cj4gPj4gKwkJCWt2bWd0X3B1dF92ZmlvX2RldmljZSh2Z3B1KTsKPiA+ PiArCQkJZmRwdXQoZik7Cj4gPj4gKwkJCXJldHVybiAtRUlOVkFMOyAgCj4gPgo+ID5XaHkgbm90 IHJldHVybiB0aGUgZXJybm8gdGhhdCB2Z3B1X2NyZWF0ZV9kbWFidWYgcHJvdmlkZWQ/ICAKPiBX aWxsIGNoYW5nZSB0byB1c2UgdGhlIHJldHVybmVkIGVycm5vLgo+IAo+ID4gIAo+ID4+ICsJCX0K PiA+PiArCQlmZHB1dChmKTsKPiA+PiArCQlyZXR1cm4gY29weV90b191c2VyKCh2b2lkIF9fdXNl ciAqKWFyZywgJmRtYWJ1ZiwgbWluc3opID8KPiA+PiArCQkJCQkJCQktRUZBVUxUIDogMDsKPiA+ PiArCX0KPiA+PiArCj4gPj4gKwlmZHB1dChmKTsKPiA+PiArCWd2dF92Z3B1X2VycigidW5zdXBw b3J0ZWQgZG1hYnVmIG9wZXJhdGlvblxuIik7Cj4gPj4gKwo+ID4+ICsJcmV0dXJuIC1FSU5WQUw7 Cj4gPj4gK30KPiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IGludGVsX3ZncHVfZG1hYnVmX21ncl9mZF9vcHMgPSB7Cj4gPj4gKwkucmVsZWFzZSAgICAgICAg PSBpbnRlbF92Z3B1X2RtYWJ1Zl9tZ3JfZmRfcmVsZWFzZSwKPiA+PiArCS51bmxvY2tlZF9pb2N0 bCA9IGludGVsX3ZncHVfZG1hYnVmX21ncl9mZF9pb2N0bCwKPiA+PiArCS5tbWFwICAgICAgICAg ICA9IGludGVsX3ZncHVfZG1hYnVmX21ncl9mZF9tbWFwLAo+ID4+ICsJLmxsc2VlayAgICAgICAg ID0gbm9vcF9sbHNlZWssCj4gPj4gK307Cj4gPj4gIHN0YXRpYyBpbnQgaW50ZWxfdmdwdV9jcmVh dGUoc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBtZGV2X2RldmljZQo+ID4+ICptZGV2KSAg ewo+ID4+ICAJc3RydWN0IGludGVsX3ZncHUgKnZncHUgPSBOVUxMOwo+ID4+IEBAIC0xMjU5LDYg KzEzNzksMzAgQEAgc3RhdGljIGxvbmcgaW50ZWxfdmdwdV9pb2N0bChzdHJ1Y3QgbWRldl9kZXZp Y2UgIAo+ID4qbWRldiwgdW5zaWduZWQgaW50IGNtZCwgIAo+ID4+ICAJfSBlbHNlIGlmIChjbWQg PT0gVkZJT19ERVZJQ0VfUkVTRVQpIHsKPiA+PiAgCQlpbnRlbF9ndnRfb3BzLT52Z3B1X3Jlc2V0 KHZncHUpOwo+ID4+ICAJCXJldHVybiAwOwo+ID4+ICsJfSBlbHNlIGlmIChjbWQgPT0gVkZJT19E RVZJQ0VfR0VUX0ZEKSB7Cj4gPj4gKwkJaW50IGZkOwo+ID4+ICsJCXUzMiB0eXBlOwo+ID4+ICsJ CWludCByZXQ7Cj4gPj4gKwo+ID4+ICsJCWlmIChjb3B5X2Zyb21fdXNlcigmdHlwZSwgKHZvaWQg X191c2VyICopYXJnLCBzaXplb2YodHlwZSkpKQo+ID4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiA+ PiArCQlpZiAodHlwZSAhPSBWRklPX0RFVklDRV9ETUFCVUZfTUdSX0ZEKQo+ID4+ICsJCQlyZXR1 cm4gLUVJTlZBTDsKPiA+PiArCj4gPj4gKwkJcmV0ID0ga3ZtZ3RfZ2V0X3ZmaW9fZGV2aWNlKHZn cHUpOwo+ID4+ICsJCWlmIChyZXQgIT0gMCkKPiA+PiArCQkJcmV0dXJuIHJldDsKPiA+PiArCj4g Pj4gKwkJZmQgPSBhbm9uX2lub2RlX2dldGZkKCJpbnRlbC12Z3B1LWRtYWJ1Zi1tZ3ItZmQiLAo+ ID4+ICsJCQkmaW50ZWxfdmdwdV9kbWFidWZfbWdyX2ZkX29wcywKPiA+PiArCQkJdmdwdSwgT19S RFdSIHwgT19DTE9FWEVDKTsKPiA+PiArCQlpZiAoZmQgPCAwKSB7Cj4gPj4gKwkJCWd2dF92Z3B1 X2VycigiY3JlYXRlIGRtYWJ1ZiBtZ3IgZmQgZmFpbGVkXG4iKTsKPiA+PiArCQkJcmV0dXJuIC1F SU5WQUw7ICAKPiA+Cj4gPkVycm9yIHBhdGggbGVha3MgdmZpb19kZXZpY2UgcmVmZXJlbmNlLiAg Cj4gV2lsbCBjb3JyZWN0IGluIHRoZSBuZXh0IHZlcnNpb24uCj4gCj4gPiAgCj4gPj4gKwkJfQo+ ID4+ICsJCXZncHUtPmRtYWJ1Zl9tZ3JfZmQgPSBmZDsgIAo+ID4KPiA+QXMgYWJvdmUsIHVuY2xl YXIgdmFsdWUgb2YgdGhpcyBmaWVsZCwgYWRkaXRpb25hbGx5LCB3aGF0IGlmIHRoZSB1c2VyIGNh bGxzCj4gPlZGSU9fREVWSUNFX0dFVF9GRCBtb3JlIHRoYW4gb25jZT8gIAo+IEFoLCBnb29kIHF1 ZXN0aW9uLgo+IFZGSU9fREVWSUNFX0dFVF9GRCBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZS4K PiBBbmQgd2Ugc2hvdWxkIGFkZCBhIGNoZWNrIGlmIHRoZSB2Z3B1LT5kbWFidWZfbWdyX2ZkIGlz IG5vdCAwIHdoaWNoIG1lYW5zIFZGSU9fREVWSUNFX0dFVF9GRCBoYWQgYmVlbiBjYWxsZWQgYmVm b3JlIHdlIHNob3VsZCByZXR1cm4gYW4gZXJyb3IuCgpFeGNlcHQgd2Ugbm8gbG9uZ2VyIG5lZWQg dGhhdCBmZCBhbmQgd2Ugc2hvdWxkIHByb2JhYmx5IHVzZSBhbiBhdG9taWMKJ29wZW5lZCcgc28g aXQncyBub3QgcmFjeS4gIFRoYW5rcywKCkFsZXgKCj4gPj4gKwo+ID4+ICsJCXJldHVybiBmZDsK PiA+PiAgCX0KPiA+Pgo+ID4+ICAJcmV0dXJuIDA7Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC92Z3B1LmMKPiA+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC92 Z3B1LmMgaW5kZXggNmUzY2JkOC4uYWY2ZmM3NCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndnQvdmdwdS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0 L3ZncHUuYwo+ID4+IEBAIC0zNDYsNiArMzQ2LDcgQEAgc3RhdGljIHN0cnVjdCBpbnRlbF92Z3B1 ICAKPiA+Kl9faW50ZWxfZ3Z0X2NyZWF0ZV92Z3B1KHN0cnVjdCBpbnRlbF9ndnQgKmd2dCwgIAo+ ID4+ICAJdmdwdS0+Z3Z0ID0gZ3Z0Owo+ID4+ICAJdmdwdS0+c2NoZWRfY3RsLndlaWdodCA9IHBh cmFtLT53ZWlnaHQ7Cj4gPj4gIAliaXRtYXBfemVybyh2Z3B1LT50bGJfaGFuZGxlX3BlbmRpbmcs IEk5MTVfTlVNX0VOR0lORVMpOwo+ID4+ICsJSU5JVF9MSVNUX0hFQUQoJnZncHUtPmRtYWJ1Zl9v YmpfbGlzdF9oZWFkKTsKPiA+Pgo+ID4+ICAJaW50ZWxfdmdwdV9pbml0X2NmZ19zcGFjZSh2Z3B1 LCBwYXJhbS0+cHJpbWFyeSk7Cj4gPj4gIAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==