From mboxrd@z Thu Jan 1 00:00:00 1970 From: Juergen Gross Subject: Re: [PATCH v3 4/7] xen/9pfs: connect to the backend Date: Tue, 14 Mar 2017 07:41:46 +0100 Message-ID: References: <1489449019-13343-1-git-send-email-sstabellini@kernel.org> <1489449019-13343-4-git-send-email-sstabellini@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cng9W-00034y-6U for xen-devel@lists.xenproject.org; Tue, 14 Mar 2017 06:41:50 +0000 In-Reply-To: <1489449019-13343-4-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Stefano Stabellini , xen-devel@lists.xenproject.org Cc: Latchesar Ionkov , Eric Van Hensbergen , linux-kernel@vger.kernel.org, Stefano Stabellini , v9fs-developer@lists.sourceforge.net, Ron Minnich , boris.ostrovsky@oracle.com List-Id: xen-devel@lists.xenproject.org T24gMTQvMDMvMTcgMDA6NTAsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToKPiBJbXBsZW1lbnQg ZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGUgeGVuYnVzIGhhbmRzaGFrZS4gVXBvbiBjb25uZWN0aW9u LAo+IGFsbG9jYXRlIHRoZSByaW5ncyBhY2NvcmRpbmcgdG8gdGhlIHByb3RvY29sIHNwZWNpZmlj YXRpb24uCj4gCj4gSW5pdGlhbGl6ZSBhIHdvcmtfc3RydWN0IGFuZCBhIHdhaXRfcXVldWUuIFRo ZSB3b3JrX3N0cnVjdCB3aWxsIGJlIHVzZWQKPiB0byBzY2hlZHVsZSB3b3JrIHVwb24gcmVjZWl2 aW5nIGFuIGV2ZW50IGNoYW5uZWwgbm90aWZpY2F0aW9uIGZyb20gdGhlCj4gYmFja2VuZC4gVGhl IHdhaXRfcXVldWUgd2lsbCBiZSB1c2VkIHRvIHdhaXQgd2hlbiB0aGUgcmluZyBpcyBmdWxsIGFu ZAo+IHdlIG5lZWQgdG8gc2VuZCBhIG5ldyByZXF1ZXN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IFN0 ZWZhbm8gU3RhYmVsbGluaSA8c3RlZmFub0BhcG9yZXRvLmNvbT4KPiBDQzogYm9yaXMub3N0cm92 c2t5QG9yYWNsZS5jb20KPiBDQzogamdyb3NzQHN1c2UuY29tCj4gQ0M6IEVyaWMgVmFuIEhlbnNi ZXJnZW4gPGVyaWN2aEBnbWFpbC5jb20+Cj4gQ0M6IFJvbiBNaW5uaWNoIDxybWlubmljaEBzYW5k aWEuZ292Pgo+IENDOiBMYXRjaGVzYXIgSW9ua292IDxsdWNob0Bpb25rb3YubmV0Pgo+IENDOiB2 OWZzLWRldmVsb3BlckBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKPiAtLS0KPiAgbmV0LzlwL3RyYW5z X3hlbi5jIHwgMjQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNDAgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYg LS1naXQgYS9uZXQvOXAvdHJhbnNfeGVuLmMgYi9uZXQvOXAvdHJhbnNfeGVuLmMKPiBpbmRleCBm MDcyODc2Li45NzRiYWMzIDEwMDY0NAo+IC0tLSBhL25ldC85cC90cmFuc194ZW4uYwo+ICsrKyBi L25ldC85cC90cmFuc194ZW4uYwo+IEBAIC00MSw2ICs0MSwzNSBAQAo+ICAjaW5jbHVkZSA8bmV0 LzlwL2NsaWVudC5oPgo+ICAjaW5jbHVkZSA8bmV0LzlwL3RyYW5zcG9ydC5oPgo+ICAKPiArI2Rl ZmluZSBYRU5fOVBGU19OVU1fUklOR1MgMgo+ICsKPiArLyogT25lIHBlciByaW5nLCBtb3JlIHRo YW4gb25lIHBlciA5cGZzIHNoYXJlICovCj4gK3N0cnVjdCB4ZW5fOXBmc19kYXRhcmluZyB7Cj4g KwlzdHJ1Y3QgeGVuXzlwZnNfZnJvbnRfcHJpdiAqcHJpdjsKPiArCj4gKwlzdHJ1Y3QgeGVuXzlw ZnNfZGF0YV9pbnRmICppbnRmOwo+ICsJZ3JhbnRfcmVmX3QgcmVmOwo+ICsJaW50IGV2dGNobjsK PiArCWludCBpcnE7Cj4gKwlzcGlubG9ja190IGxvY2s7Cj4gKwo+ICsJc3RydWN0IHhlbl85cGZz X2RhdGEgZGF0YTsKPiArCXdhaXRfcXVldWVfaGVhZF90IHdxOwo+ICsJc3RydWN0IHdvcmtfc3Ry dWN0IHdvcms7Cj4gK307Cj4gKwo+ICsvKiBPbmUgcGVyIDlwZnMgc2hhcmUgKi8KPiArc3RydWN0 IHhlbl85cGZzX2Zyb250X3ByaXYgewo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ICsJc3Ry dWN0IHhlbmJ1c19kZXZpY2UgKmRldjsKPiArCWNoYXIgKnRhZzsKPiArCXN0cnVjdCBwOV9jbGll bnQgKmNsaWVudDsKPiArCj4gKwlpbnQgbnVtX3JpbmdzOwo+ICsJc3RydWN0IHhlbl85cGZzX2Rh dGFyaW5nICpyaW5nczsKPiArfTsKPiArc3RhdGljIExJU1RfSEVBRCh4ZW5fOXBmc19kZXZzKTsK PiArCj4gIHN0YXRpYyBpbnQgcDlfeGVuX2NhbmNlbChzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQs IHN0cnVjdCBwOV9yZXFfdCAqcmVxKQo+ICB7Cj4gIAlyZXR1cm4gMDsKPiBAQCAtNjAsNiArODks MjEgQEAgc3RhdGljIGludCBwOV94ZW5fcmVxdWVzdChzdHJ1Y3QgcDlfY2xpZW50ICpjbGllbnQs IHN0cnVjdCBwOV9yZXFfdCAqcDlfcmVxKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRp YyB2b2lkIHA5X3hlbl9yZXNwb25zZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiAr fQo+ICsKPiArc3RhdGljIGlycXJldHVybl90IHhlbl85cGZzX2Zyb250X2V2ZW50X2hhbmRsZXIo aW50IGlycSwgdm9pZCAqcikKPiArewo+ICsJc3RydWN0IHhlbl85cGZzX2RhdGFyaW5nICpyaW5n ID0gcjsKPiArCUJVR19PTighcmluZyB8fCAhcmluZy0+cHJpdi0+Y2xpZW50KTsKPiArCj4gKwl3 YWtlX3VwX2ludGVycnVwdGlibGUoJnJpbmctPndxKTsKPiArCXNjaGVkdWxlX3dvcmsoJnJpbmct PndvcmspOwo+ICsKPiArCXJldHVybiBJUlFfSEFORExFRDsKPiArfQo+ICsKPiAgc3RhdGljIHN0 cnVjdCBwOV90cmFuc19tb2R1bGUgcDlfeGVuX3RyYW5zID0gewo+ICAJLm5hbWUgPSAieGVuIiwK PiAgCS5tYXhzaXplID0gKDEgPDwgKFhFTl85UEZTX1JJTkdfT1JERVIgKyBYRU5fUEFHRV9TSElG VCkpLAo+IEBAIC03NiwyNSArMTIwLDIyMSBAQCBzdGF0aWMgaW50IHA5X3hlbl9yZXF1ZXN0KHN0 cnVjdCBwOV9jbGllbnQgKmNsaWVudCwgc3RydWN0IHA5X3JlcV90ICpwOV9yZXEpCj4gIAl7ICIi IH0KPiAgfTsKPiAgCj4gK3N0YXRpYyBpbnQgeGVuXzlwZnNfZnJvbnRfZnJlZShzdHJ1Y3QgeGVu XzlwZnNfZnJvbnRfcHJpdiAqcHJpdikKClJldHVybiB0eXBlIHZvaWQ/IFlvdSBhcmUgYWx3YXlz IHJldHVybmluZyAwLgoKPiArewo+ICsJaW50IGksIGo7Cj4gKwo+ICsJbGlzdF9kZWwoJnByaXYt Pmxpc3QpOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBwcml2LT5udW1fcmluZ3M7IGkrKykgewo+ ICsJCWlmIChwcml2LT5yaW5nc1tpXS5pbnRmID09IE5VTEwpCj4gKwkJCWJyZWFrOwo+ICsJCWlm IChwcml2LT5yaW5nc1tpXS5pcnEgPiAwKQo+ICsJCQl1bmJpbmRfZnJvbV9pcnFoYW5kbGVyKHBy aXYtPnJpbmdzW2ldLmlycSwgcHJpdi0+ZGV2KTsKPiArCQlpZiAocHJpdi0+cmluZ3NbaV0uZGF0 YS5pbiAhPSBOVUxMKSB7Cj4gKwkJCWZvciAoaiA9IDA7IGogPCAoMSA8PCBYRU5fOVBGU19SSU5H X09SREVSKTsgaisrKQo+ICsJCQkJZ250dGFiX2VuZF9mb3JlaWduX2FjY2Vzcyhwcml2LT5yaW5n c1tpXS5pbnRmLT5yZWZbal0sIDAsIDApOwo+ICsJCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25n KXByaXYtPnJpbmdzW2ldLmRhdGEuaW4sCj4gKwkJCQkJWEVOXzlQRlNfUklOR19PUkRFUiAtIChQ QUdFX1NISUZUIC0gWEVOX1BBR0VfU0hJRlQpKTsKPiArCQl9Cj4gKwkJZ250dGFiX2VuZF9mb3Jl aWduX2FjY2Vzcyhwcml2LT5yaW5nc1tpXS5yZWYsIDAsIDApOwo+ICsJCWZyZWVfcGFnZSgodW5z aWduZWQgbG9uZylwcml2LT5yaW5nc1tpXS5pbnRmKTsKPiArCX0KPiArCWtmcmVlKHByaXYtPnJp bmdzKTsKPiArCWtmcmVlKHByaXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgaW50IHhlbl85cGZzX2Zyb250X3JlbW92ZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQo+ ICB7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IHhlbl85cGZzX2Zyb250X3ByaXYgKnByaXYgPSBk ZXZfZ2V0X2RydmRhdGEoJmRldi0+ZGV2KTsKPiArCj4gKwlkZXZfc2V0X2RydmRhdGEoJmRldi0+ ZGV2LCBOVUxMKTsKPiArCXJldCA9IHhlbl85cGZzX2Zyb250X2ZyZWUocHJpdik7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHhlbl85cGZzX2Zyb250X2FsbG9jX2RhdGFy aW5nKHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYsCj4gKwkJc3RydWN0IHhlbl85cGZzX2RhdGFy aW5nICpyaW5nKQo+ICt7Cj4gKwlpbnQgaSA9IDA7Cj4gKwlpbnQgcmV0ID0gLUVOT01FTTsKPiAr CXZvaWQgKmJ5dGVzID0gTlVMTDsKPiArCj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZyaW5nLT53 cSk7Cj4gKwlzcGluX2xvY2tfaW5pdCgmcmluZy0+bG9jayk7Cj4gKwlJTklUX1dPUksoJnJpbmct PndvcmssIHA5X3hlbl9yZXNwb25zZSk7Cj4gKwo+ICsJcmluZy0+aW50ZiA9IChzdHJ1Y3QgeGVu XzlwZnNfZGF0YV9pbnRmICopIGdldF96ZXJvZWRfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBfWkVS Tyk7CgpJIGRvbid0IHRoaW5rIHlvdSBuZWVkIF9fR0ZQX1pFUk8gaGVyZS4KCj4gKwlpZiAoIXJp bmctPmludGYpCj4gKwkJcmV0dXJuIHJldDsKPiArCXJldCA9IHJpbmctPnJlZiA9IGdudHRhYl9n cmFudF9mb3JlaWduX2FjY2VzcyhkZXYtPm90aGVyZW5kX2lkLAo+ICsJCQl2aXJ0X3RvX2dmbihy aW5nLT5pbnRmKSwgMCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlnb3RvIG91dDsKPiArCWJ5dGVz ID0gKHZvaWQqKV9fZ2V0X2ZyZWVfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCgpDb2Rp bmcgc3R5bGU6ICh2b2lkICopCgo+ICsJCQlYRU5fOVBGU19SSU5HX09SREVSIC0gKFBBR0VfU0hJ RlQgLSBYRU5fUEFHRV9TSElGVCkpOwo+ICsJaWYgKGJ5dGVzID09IE5VTEwpCj4gKwkJZ290byBv dXQ7Cj4gKwlmb3IgKDsgaSA8ICgxIDw8IFhFTl85UEZTX1JJTkdfT1JERVIpOyBpKyspIHsKPiAr CQlyZXQgPSByaW5nLT5pbnRmLT5yZWZbaV0gPSBnbnR0YWJfZ3JhbnRfZm9yZWlnbl9hY2Nlc3Mo Cj4gKwkJCQlkZXYtPm90aGVyZW5kX2lkLCB2aXJ0X3RvX2dmbihieXRlcykgKyBpLCAwKTsKPiAr CQlpZiAocmV0IDwgMCkKPiArCQkJZ290byBvdXQ7Cj4gKwl9Cj4gKwlyaW5nLT5kYXRhLmluID0g Ynl0ZXM7Cj4gKwlyaW5nLT5kYXRhLm91dCA9IGJ5dGVzICsgWEVOXzlQRlNfUklOR19TSVpFOwo+ ICsKPiArCXJldCA9IHhlbmJ1c19hbGxvY19ldnRjaG4oZGV2LCAmcmluZy0+ZXZ0Y2huKTsKPiAr CWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwlyaW5nLT5pcnEgPSBiaW5kX2V2dGNobl90b19p cnFoYW5kbGVyKHJpbmctPmV2dGNobiwgeGVuXzlwZnNfZnJvbnRfZXZlbnRfaGFuZGxlciwKPiAr CQkJCQkwLCAieGVuXzlwZnMtZnJvbnRlbmQiLCByaW5nKTsKCkRpZCB5b3UgdGhpbmsgYWJvdXQg dXNpbmcgcmVxdWVzdF90aHJlYWRlZF9pcnEoKSBpbnN0ZWFkIG9mIGEgd29ya3F1ZXVlPwpGb3Ig YW4gZXhhbXBsZSBzZWUgZS5nLiBkcml2ZXJzL3Njc2kveGVuLXNjc2lmcm9udC5jCgo+ICsJaWYg KHJpbmctPmlycSA8IDApIHsKPiArCQl4ZW5idXNfZnJlZV9ldnRjaG4oZGV2LCByaW5nLT5ldnRj aG4pOwo+ICsJCXJldCA9IHJpbmctPmlycTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiAgCXJldHVy biAwOwo+ICsKPiArb3V0Ogo+ICsJaWYgKGJ5dGVzICE9IE5VTEwpIHsKPiArCQlmb3IgKGktLTsg aSA+PSAwOyBpLS0pCj4gKwkJCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3MocmluZy0+aW50Zi0+ cmVmW2ldLCAwLCAwKTsKPiArCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWJ5dGVzLAo+ICsJ CQkJWEVOXzlQRlNfUklOR19PUkRFUiAtIChQQUdFX1NISUZUIC0gWEVOX1BBR0VfU0hJRlQpKTsK PiArCX0KPiArCWdudHRhYl9lbmRfZm9yZWlnbl9hY2Nlc3MocmluZy0+cmVmLCAwLCAwKTsKPiAr CWZyZWVfcGFnZSgodW5zaWduZWQgbG9uZylyaW5nLT5pbnRmKTsKPiArCXJldHVybiByZXQ7Cj4g IH0KPiAgCj4gIHN0YXRpYyBpbnQgeGVuXzlwZnNfZnJvbnRfcHJvYmUoc3RydWN0IHhlbmJ1c19k ZXZpY2UgKmRldiwKPiAgCQljb25zdCBzdHJ1Y3QgeGVuYnVzX2RldmljZV9pZCAqaWQpCj4gIHsK PiArCWludCByZXQsIGk7Cj4gKwlzdHJ1Y3QgeGVuYnVzX3RyYW5zYWN0aW9uIHhidDsKPiArCXN0 cnVjdCB4ZW5fOXBmc19mcm9udF9wcml2ICpwcml2ID0gTlVMTDsKPiArCWNoYXIgKnZlcnNpb25z Owo+ICsJdW5zaWduZWQgaW50IG1heF9yaW5ncywgbWF4X3Jpbmdfb3JkZXIsIGxlbjsKPiArCj4g Kwl2ZXJzaW9ucyA9IHhlbmJ1c19yZWFkKFhCVF9OSUwsIGRldi0+b3RoZXJlbmQsICJ2ZXJzaW9u cyIsICZsZW4pOwo+ICsJaWYgKCFsZW4gfHwgc3RyY21wKHZlcnNpb25zLCAiMSIpKQoKWW91IGFy ZSBsZWFraW5nIHZlcnNpb25zIGluIGNhc2Ugb2Ygbm90IGJlaW5nICIxIi4KCkNhbid0IHlvdSB1 c2UgeGVuYnVzX3JlYWRfdW5zaWduZWQoKSBpbnN0ZWFkIG9mIHhlbmJ1c19yZWFkKCk/Cgo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsJa2ZyZWUodmVyc2lvbnMpOwo+ICsJcmV0ID0geGVuYnVzX3Nj YW5mKFhCVF9OSUwsIGRldi0+b3RoZXJlbmQsICJtYXgtcmluZ3MiLCAiJXUiLCAmbWF4X3Jpbmdz KTsKCnhlbmJ1c19yZWFkX3Vuc2lnbmVkKCk/Cgo+ICsJaWYgKHJldCA8IDAgfHwgbWF4X3Jpbmdz IDwgWEVOXzlQRlNfTlVNX1JJTkdTKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJcmV0ID0geGVu YnVzX3NjYW5mKFhCVF9OSUwsIGRldi0+b3RoZXJlbmQsICJtYXgtcmluZy1wYWdlLW9yZGVyIiwg IiV1IiwgJm1heF9yaW5nX29yZGVyKTsKCnhlbmJ1c19yZWFkX3Vuc2lnbmVkKCkKCj4gKwlpZiAo cmV0IDwgMHx8IG1heF9yaW5nX29yZGVyIDwgWEVOXzlQRlNfUklOR19PUkRFUikKCkNvZGluZyBz dHlsZSAobWlzc2luZyBzcGFjZSBiZWZvcmUgfHwpCgo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsK PiArCj4gKwlwcml2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHhlbl85cGZzX2Zyb250X3ByaXYp LCBHRlBfS0VSTkVMKTsKPiArCWlmICghcHJpdikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4g Kwlwcml2LT5kZXYgPSBkZXY7Cj4gKwlwcml2LT5udW1fcmluZ3MgPSBYRU5fOVBGU19OVU1fUklO R1M7Cj4gKwlwcml2LT5yaW5ncyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB4ZW5fOXBmc19kYXRh cmluZykgKiBwcml2LT5udW1fcmluZ3MsCj4gKwkJCQkJCUdGUF9LRVJORUwpOwoKQ29kaW5nIHN0 eWxlOiBwbGVhc2UgYWxpZ24gdGhlIHNlY29uZCBsaW5lIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXIg b2YKa3phbGxvYygpLgoKPiArCWlmICghcHJpdi0+cmluZ3MpIHsKPiArCQlrZnJlZShwcml2KTsK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+ bnVtX3JpbmdzOyBpKyspIHsKPiArCQlwcml2LT5yaW5nc1tpXS5wcml2ID0gcHJpdjsKPiArCQly ZXQgPSB4ZW5fOXBmc19mcm9udF9hbGxvY19kYXRhcmluZyhkZXYsICZwcml2LT5yaW5nc1tpXSk7 Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCWdvdG8gZXJyb3I7Cj4gKwl9Cj4gKwo+ICsgYWdhaW46 Cj4gKwlyZXQgPSB4ZW5idXNfdHJhbnNhY3Rpb25fc3RhcnQoJnhidCk7Cj4gKwlpZiAocmV0KSB7 Cj4gKwkJeGVuYnVzX2Rldl9mYXRhbChkZXYsIHJldCwgInN0YXJ0aW5nIHRyYW5zYWN0aW9uIik7 Cj4gKwkJZ290byBlcnJvcjsKPiArCX0KPiArCXJldCA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYt Pm5vZGVuYW1lLCAidmVyc2lvbiIsICIldSIsIDEpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGVy cm9yX3hlbmJ1czsKPiArCXJldCA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCAi bnVtLXJpbmdzIiwgIiV1IiwgcHJpdi0+bnVtX3JpbmdzKTsKPiArCWlmIChyZXQpCj4gKwkJZ290 byBlcnJvcl94ZW5idXM7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgcHJpdi0+bnVtX3JpbmdzOyBpKysp IHsKPiArCQljaGFyIHN0clsxNl07Cj4gKwo+ICsJCXNwcmludGYoc3RyLCAicmluZy1yZWYldSIs IGkpOwo+ICsJCXJldCA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYtPm5vZGVuYW1lLCBzdHIsICIl ZCIsIHByaXYtPnJpbmdzW2ldLnJlZik7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnJvcl94 ZW5idXM7Cj4gKwo+ICsJCXNwcmludGYoc3RyLCAiZXZlbnQtY2hhbm5lbC0ldSIsIGkpOwoKVGhp cyBpcyBkYW5nZXJvdXM6IHlvdSBhcmUgaGFyZCBjb2RpbmcgbnVtX3JpbmdzIGFsd2F5cyBiZWlu ZyBsZXNzIHRoYW4KMTAgaGVyZS4gT3RoZXJ3aXNlIHN0cltdIGlzbid0IGxhcmdlIGVub3VnaC4g TWluZCBhZGRpbmcKQlVJTERfQlVHX09OKFhFTl85UEZTX05VTV9SSU5HUyA+IDkpPwoKPiArCQly ZXQgPSB4ZW5idXNfcHJpbnRmKHhidCwgZGV2LT5ub2RlbmFtZSwgc3RyLCAiJXUiLCBwcml2LT5y aW5nc1tpXS5ldnRjaG4pOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gZXJyb3JfeGVuYnVzOwo+ ICsJfQo+ICsJcHJpdi0+dGFnID0geGVuYnVzX3JlYWQoeGJ0LCBkZXYtPm5vZGVuYW1lLCAidGFn IiwgTlVMTCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyb3JfeGVuYnVzOwo+ICsJcmV0ID0g eGVuYnVzX3RyYW5zYWN0aW9uX2VuZCh4YnQsIDApOwo+ICsJaWYgKHJldCkgewo+ICsJCWlmIChy ZXQgPT0gLUVBR0FJTikKPiArCQkJZ290byBhZ2FpbjsKPiArCQl4ZW5idXNfZGV2X2ZhdGFsKGRl diwgcmV0LCAiY29tcGxldGluZyB0cmFuc2FjdGlvbiIpOwo+ICsJCWdvdG8gZXJyb3I7Cj4gKwl9 Cj4gKwo+ICsJbGlzdF9hZGRfdGFpbCgmcHJpdi0+bGlzdCwgJnhlbl85cGZzX2RldnMpOwoKRG9u J3QgeW91IG5lZWQgc29tZSBraW5kIG9mIGxvY2sgcHJvdGVjdGluZyB0aGUgbGlzdD8KCj4gKwlk ZXZfc2V0X2RydmRhdGEoJmRldi0+ZGV2LCBwcml2KTsKPiArCXhlbmJ1c19zd2l0Y2hfc3RhdGUo ZGV2LCBYZW5idXNTdGF0ZUluaXRpYWxpc2VkKTsKPiArCj4gIAlyZXR1cm4gMDsKPiArCj4gKyBl cnJvcl94ZW5idXM6Cj4gKwl4ZW5idXNfdHJhbnNhY3Rpb25fZW5kKHhidCwgMSk7Cj4gKwl4ZW5i dXNfZGV2X2ZhdGFsKGRldiwgcmV0LCAid3JpdGluZyB4ZW5zdG9yZSIpOwo+ICsgZXJyb3I6Cj4g KwlkZXZfc2V0X2RydmRhdGEoJmRldi0+ZGV2LCBOVUxMKTsKPiArCXhlbl85cGZzX2Zyb250X2Zy ZWUocHJpdik7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHhlbl85cGZz X2Zyb250X3Jlc3VtZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqZGV2KQo+ICB7Cj4gKwlkZXZfd2Fy bigmZGV2LT5kZXYsICJzdXNwc2VuZC9yZXN1bWUgdW5zdXBwb3J0ZWRcbiIpOwo+ICAJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHhlbl85cGZzX2Zyb250X2NoYW5nZWQoc3RydWN0 IHhlbmJ1c19kZXZpY2UgKmRldiwKPiAgCQkJICAgIGVudW0geGVuYnVzX3N0YXRlIGJhY2tlbmRf c3RhdGUpCj4gIHsKPiArCXN3aXRjaCAoYmFja2VuZF9zdGF0ZSkgewo+ICsJY2FzZSBYZW5idXNT dGF0ZVJlY29uZmlndXJpbmc6Cj4gKwljYXNlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkOgo+ICsJ Y2FzZSBYZW5idXNTdGF0ZUluaXRpYWxpc2luZzoKPiArCWNhc2UgWGVuYnVzU3RhdGVJbml0aWFs aXNlZDoKPiArCWNhc2UgWGVuYnVzU3RhdGVVbmtub3duOgo+ICsJCWJyZWFrOwo+ICsKPiArCWNh c2UgWGVuYnVzU3RhdGVJbml0V2FpdDoKPiArCQlicmVhazsKPiArCj4gKwljYXNlIFhlbmJ1c1N0 YXRlQ29ubmVjdGVkOgo+ICsJCXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUNv bm5lY3RlZCk7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBYZW5idXNTdGF0ZUNsb3NlZDoKPiAr CQlpZiAoZGV2LT5zdGF0ZSA9PSBYZW5idXNTdGF0ZUNsb3NlZCkKPiArCQkJYnJlYWs7Cj4gKwkJ LyogTWlzc2VkIHRoZSBiYWNrZW5kJ3MgQ0xPU0lORyBzdGF0ZSAtLSBmYWxsdGhyb3VnaCAqLwo+ ICsJY2FzZSBYZW5idXNTdGF0ZUNsb3Npbmc6Cj4gKwkJeGVuYnVzX2Zyb250ZW5kX2Nsb3NlZChk ZXYpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgc3RydWN0IHhlbmJ1c19k cml2ZXIgeGVuXzlwZnNfZnJvbnRfZHJpdmVyID0gewo+IAoKCkp1ZXJnZW4KCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=