From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Grytsov Subject: Re: [PATCH v4 01/13] libxl: add generic function to add device Date: Tue, 5 Sep 2017 19:44:34 +0300 Message-ID: References: <1500387930-16317-1-git-send-email-al1img@gmail.com> <1500387930-16317-2-git-send-email-al1img@gmail.com> <20170905114749.nasd4rzei6qaoydo@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 1dpGxq-0003Jn-Gp for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 16:44:38 +0000 Received: by mail-io0-f193.google.com with SMTP id b142so2051409ioe.1 for ; Tue, 05 Sep 2017 09:44:36 -0700 (PDT) In-Reply-To: <20170905114749.nasd4rzei6qaoydo@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Wei Liu Cc: xen-devel@lists.xenproject.org, Ian Jackson , Oleksandr Grytsov List-Id: xen-devel@lists.xenproject.org T24gVHVlLCBTZXAgNSwgMjAxNyBhdCAyOjQ3IFBNLCBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXgu Y29tPiB3cm90ZToKPiBPbiBUdWUsIEp1bCAxOCwgMjAxNyBhdCAwNToyNToxOFBNICswMzAwLCBP bGVrc2FuZHIgR3J5dHNvdiB3cm90ZToKPj4gRnJvbTogT2xla3NhbmRyIEdyeXRzb3YgPG9sZWtz YW5kcl9ncnl0c292QGVwYW0uY29tPgo+Pgo+PiBBZGQgbGlieGxfX2RldmljZV9hZGQgdG8gc2lt cGxlIHdyaXRlIFhlblN0b3JlIGRldmljZSBjb25pZmcKPj4gYW5kIGxpYnhsX19kZXZpY2VfYWRk X2FzeW5jIHRvIHVwZGF0ZSBkb21haW4gY29uZmlndXJhdGlvbgo+PiBhbmQgd3JpdGUgWGVuU3Rv cmUgZGV2aWNlIGNvbmZpZyBhc3luY2hyb25pb3VzbHkuCj4+IEFsbW9zdCBhbGwgZGV2aWNlcyBo YXZlIHNpbWlsYXIgbGlieGxfX2RldmljZV94eHh4X2FkZCBmdW5jdGlvbi4KPj4gVGhpcyBnZW5l cmljIGZ1bmN0aW9ucyBpbXBsZW1lbnQgc2FtZSBmdW5jdGlvbmFsaXR5IGJ1dAo+PiB1c2luZyB0 aGUgZGV2aWNlIGhhbmRsaW5nIGZyYW1ld29yay4gVGggZGV2aWNlIHNwZWNpZmljCj4+IHBhcnQg c3VjaCBhcyBzZXR0aW5nIHhlbiBzdG9yZSBjb25maWd1cmF0aW9uaXMgbW92ZWQKPj4gdG8gc2V0 X3hlbnN0b3JlX2NvbmZpZyBjYWxsYmFjayBvZiB0aGUgZGV2aWNlIGZyYW1ld29yay4KPj4KPgo+ IFRoZSB0d28gYWRkIGZ1bmN0aW9ucyBsb29rIGNvcnJlY3QuCj4KPiBTb21lIGNvbW1lbnRzIGJl bG93Lgo+Cj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBHcnl0c292IDxvbGVrc2FuZHJfZ3J5 dHNvdkBlcGFtLmNvbT4KPj4gLS0tCj4+ICB0b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyAgIHwg ICAzICsKPj4gIHRvb2xzL2xpYnhsL2xpYnhsX2RldmljZS5jICAgfCAxOTggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgdG9vbHMvbGlieGwvbGlieGxfZGlz ay5jICAgICB8ICAgMiArCj4+ICB0b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIHwgIDM2ICsr KysrKysrCj4+ICB0b29scy9saWJ4bC9saWJ4bF9uaWMuYyAgICAgIHwgICAyICsKPj4gIHRvb2xz L2xpYnhsL2xpYnhsX3BjaS5jICAgICAgfCAgIDIgKwo+PiAgdG9vbHMvbGlieGwvbGlieGxfdXNi LmMgICAgICB8ICAgNiArKwo+PiAgdG9vbHMvbGlieGwvbGlieGxfdnRwbS5jICAgICB8ICAgMiAr Cj4+ICA4IGZpbGVzIGNoYW5nZWQsIDI1MSBpbnNlcnRpb25zKCspCj4+Cj4+IGRpZmYgLS1naXQg YS90b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5j Cj4+IGluZGV4IGJmZmJjNDUuLmIyMTYzY2QgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhsL2xp YnhsX2NyZWF0ZS5jCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCj4+IEBAIC0x NDMwLDYgKzE0MzAsOSBAQCBvdXQ6Cj4+Cj4+ICAjZGVmaW5lIGxpYnhsX2RldmljZV9kdGRldl9s aXN0IE5VTEwKPj4gICNkZWZpbmUgbGlieGxfZGV2aWNlX2R0ZGV2X2NvbXBhcmUgTlVMTAo+PiAr I2RlZmluZSBsaWJ4bF9fZGV2aWNlX2Zyb21fZHRkZXYgTlVMTAo+PiArI2RlZmluZSBsaWJ4bF9f ZGV2aWNlX2R0ZGV2X3NldGRlZmF1bHQgTlVMTAo+PiArI2RlZmluZSBsaWJ4bF9fZGV2aWNlX2R0 ZGV2X3VwZGF0ZV9kZXZpZCBOVUxMCj4+ICBzdGF0aWMgREVGSU5FX0RFVklDRV9UWVBFX1NUUlVD VChkdGRldik7Cj4+Cj4+ICBjb25zdCBzdHJ1Y3QgbGlieGxfZGV2aWNlX3R5cGUgKmRldmljZV90 eXBlX3RibFtdID0gewo+PiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZGV2aWNlLmMg Yi90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwo+PiBpbmRleCAwMDM1NmFmLi4wNzE2NWYwIDEw MDY0NAo+PiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF9kZXZpY2UuYwo+PiArKysgYi90b29scy9s aWJ4bC9saWJ4bF9kZXZpY2UuYwo+PiBAQCAtMTc5Myw2ICsxNzkzLDIwNCBAQCBvdXQ6Cj4+ICAg ICAgcmV0dXJuIEFPX0NSRUFURV9GQUlMKHJjKTsKPj4gIH0KPj4KPj4gK3N0YXRpYyB2b2lkIGRl dmljZV9hZGRfZG9tYWluX2NvbmZpZyhsaWJ4bF9fZ2MgKmdjLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2RvbWFpbl9jb25maWcgKmRfY29uZmlnLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9k ZXZpY2VfdHlwZSAqZHQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dm9pZCAqdHlwZSkKPj4gK3sKPj4gKyAgICBpbnQgKm51bV9kZXY7Cj4+ICsgICAgaW50IGk7Cj4K PiB1bnNpZ25lZCBpbnQgcGxlYXNlLgoKRm9yICJpIiBjb3VudGVyIG9ubHkgb3IgZm9yIG51bV9k ZXYgYXMgd2VsbD8KRm9yICJpIiBpcyBvayBidXQgbnVtX2RldiBiZXR0ZXIgdG8ga2VlcCBpbnQu Cgo+Cj4+ICsgICAgdm9pZCAqaXRlbSA9IE5VTEw7Cj4+ICsKPj4gKyAgICBudW1fZGV2ID0gbGli eGxfX2RldmljZV90eXBlX2dldF9udW0oZHQsIGRfY29uZmlnKTsKPj4gKwo+PiArICAgIC8qIENo ZWNrIGZvciBleGlzdGluZyBkZXZpY2UgKi8KPj4gKyAgICBmb3IgKGkgPSAwOyBpIDwgKm51bV9k ZXY7IGkrKykgewo+PiArICAgICAgICBpZiAoZHQtPmNvbXBhcmUobGlieGxfX2RldmljZV90eXBl X2dldF9lbGVtKGR0LCBkX2NvbmZpZywgaSksIHR5cGUpKSB7Cj4+ICsgICAgICAgICAgICBpdGVt ID0gbGlieGxfX2RldmljZV90eXBlX2dldF9lbGVtKGR0LCBkX2NvbmZpZywgaSk7Cj4+ICsgICAg ICAgIH0KPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpZiAoIWl0ZW0pIHsKPj4gKyAgICAgICAgdm9p ZCAqKmRldnM9IGxpYnhsX19kZXZpY2VfdHlwZV9nZXRfcHRyKGR0LCBkX2NvbmZpZyk7Cj4KPiBT cGFjZSBhZnRlciBkZXZzLgo+Cj4+ICsgICAgICAgICpkZXZzID0gbGlieGxfX3JlYWxsb2MoTk9H QywgKmRldnMsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHQtPmRldl9lbGVt X3NpemUgKiAoKm51bV9kZXYgKyAxKSk7Cj4+ICsgICAgICAgIGl0ZW0gPSBsaWJ4bF9fZGV2aWNl X3R5cGVfZ2V0X2VsZW0oZHQsIGRfY29uZmlnLCAqbnVtX2Rldik7Cj4+ICsgICAgICAgICgqbnVt X2RldikrKzsKPj4gKyAgICB9IGVsc2Ugewo+PiArICAgICAgICBkdC0+ZGlzcG9zZShpdGVtKTsK Pj4gKyAgICB9Cj4+ICsKPj4gKyAgICBkdC0+aW5pdChpdGVtKTsKPj4gKyAgICBkdC0+Y29weShD VFgsIGl0ZW0sIHR5cGUpOwo+PiArfQo+PiArCj4+ICt2b2lkIGxpYnhsX19kZXZpY2VfYWRkX2Fz eW5jKGxpYnhsX19lZ2MgKmVnYywgdWludDMyX3QgZG9taWQsCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZHQsIHZvaWQgKnR5 cGUsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19hb19kZXZpY2UgKmFv ZGV2KQo+PiArewo+PiArICAgIFNUQVRFX0FPX0dDKGFvZGV2LT5hbyk7Cj4+ICsgICAgZmxleGFy cmF5X3QgKmJhY2s7Cj4+ICsgICAgZmxleGFycmF5X3QgKmZyb250LCAqcm9fZnJvbnQ7Cj4+ICsg ICAgbGlieGxfX2RldmljZSAqZGV2aWNlOwo+PiArICAgIHhzX3RyYW5zYWN0aW9uX3QgdCA9IFhC VF9OVUxMOwo+PiArICAgIGxpYnhsX2RvbWFpbl9jb25maWcgZF9jb25maWc7Cj4+ICsgICAgdm9p ZCAqdHlwZV9zYXZlZDsKPj4gKyAgICBsaWJ4bF9fZG9tYWluX3VzZXJkYXRhX2xvY2sgKmxvY2sg PSBOVUxMOwo+PiArICAgIGludCByYzsKPj4gKwo+PiArICAgIGxpYnhsX2RvbWFpbl9jb25maWdf aW5pdCgmZF9jb25maWcpOwo+PiArCj4+ICsgICAgdHlwZV9zYXZlZCA9IGxpYnhsX19tYWxsb2Mo Z2MsIGR0LT5kZXZfZWxlbV9zaXplKTsKPj4gKwo+PiArICAgIGR0LT5pbml0KHR5cGVfc2F2ZWQp Owo+PiArICAgIGR0LT5jb3B5KENUWCwgdHlwZV9zYXZlZCwgdHlwZSk7Cj4+ICsKPj4gKyAgICBp ZiAoZHQtPnNldF9kZWZhdWx0KSB7Cj4+ICsgICAgICAgIHJjID0gZHQtPnNldF9kZWZhdWx0KGdj LCBkb21pZCwgdHlwZSwgYW9kZXYtPnVwZGF0ZV9qc29uKTsKPj4gKyAgICAgICAgaWYgKHJjKSBn b3RvIG91dDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpZiAoZHQtPnVwZGF0ZV9kZXZpZCkgewo+ PiArICAgICAgICByYyA9IGR0LT51cGRhdGVfZGV2aWQoZ2MsIGRvbWlkLCB0eXBlKTsKPj4gKyAg ICAgICAgaWYgKHJjKSBnb3RvIG91dDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpZiAoZHQtPnVw ZGF0ZV9jb25maWcpCj4+ICsgICAgICAgIGR0LT51cGRhdGVfY29uZmlnKGdjLCB0eXBlX3NhdmVk LCB0eXBlKTsKPj4gKwo+PiArICAgIEdDTkVXKGRldmljZSk7Cj4+ICsgICAgcmMgPSBkdC0+dG9f ZGV2aWNlKGdjLCBkb21pZCwgdHlwZSwgZGV2aWNlKTsKPj4gKyAgICBpZiAocmMpIGdvdG8gb3V0 Owo+PiArCj4+ICsgICAgaWYgKGFvZGV2LT51cGRhdGVfanNvbikgewo+PiArCj4KPiBFeHRyYW5l b3VzIGVtcHR5IGxpbmUgaGVyZS4KPgo+PiArICAgICAgICBsb2NrID0gbGlieGxfX2xvY2tfZG9t YWluX3VzZXJkYXRhKGdjLCBkb21pZCk7Cj4+ICsgICAgICAgIGlmICghbG9jaykgewo+PiArICAg ICAgICAgICAgcmMgPSBFUlJPUl9MT0NLX0ZBSUw7Cj4+ICsgICAgICAgICAgICBnb3RvIG91dDsK Pj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIHJjID0gbGlieGxfX2dldF9kb21haW5fY29u ZmlndXJhdGlvbihnYywgZG9taWQsICZkX2NvbmZpZyk7Cj4+ICsgICAgICAgIGlmIChyYykgZ290 byBvdXQ7Cj4+ICsKPj4gKyAgICAgICAgZGV2aWNlX2FkZF9kb21haW5fY29uZmlnKGdjLCAmZF9j b25maWcsIGR0LCB0eXBlX3NhdmVkKTsKPj4gKwo+PiArICAgICAgICByYyA9IGxpYnhsX19kbV9j aGVja19zdGFydChnYywgJmRfY29uZmlnLCBkb21pZCk7Cj4+ICsgICAgICAgIGlmIChyYykgZ290 byBvdXQ7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgYmFjayA9IGZsZXhhcnJheV9tYWtlKGdjLCAx NiwgMSk7Cj4+ICsgICAgZnJvbnQgPSBmbGV4YXJyYXlfbWFrZShnYywgMTYsIDEpOwo+PiArICAg IHJvX2Zyb250ID0gZmxleGFycmF5X21ha2UoZ2MsIDE2LCAxKTsKPj4gKwo+PiArICAgIGZsZXhh cnJheV9hcHBlbmRfcGFpcihiYWNrLCAiZnJvbnRlbmQtaWQiLCBHQ1NQUklOVEYoIiVkIiwgZG9t aWQpKTsKPj4gKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgIm9ubGluZSIsICIxIik7 Cj4+ICsgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJzdGF0ZSIsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRpYWxpc2lu ZykpOwo+PiArCj4+ICsgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGZyb250LCAiYmFja2VuZC1p ZCIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCBkZXZpY2Ut PmJhY2tlbmRfZG9taWQpKTsKPj4gKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoZnJvbnQsICJz dGF0ZSIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5URigiJWQiLCBYZW5i dXNTdGF0ZUluaXRpYWxpc2luZykpOwo+PiArCj4+ICsgICAgaWYgKGR0LT5zZXRfeGVuc3RvcmVf Y29uZmlnKQo+PiArICAgICAgICBkdC0+c2V0X3hlbnN0b3JlX2NvbmZpZyhnYywgZG9taWQsIHR5 cGUsIGJhY2ssIGZyb250LCByb19mcm9udCk7Cj4+ICsKPj4gKyAgICBmb3IgKDs7KSB7Cj4+ICsg ICAgICAgIHJjID0gbGlieGxfX3hzX3RyYW5zYWN0aW9uX3N0YXJ0KGdjLCAmdCk7Cj4+ICsgICAg ICAgIGlmIChyYykgZ290byBvdXQ7Cj4+ICsKPj4gKyAgICAgICAgcmMgPSBsaWJ4bF9fZGV2aWNl X2V4aXN0cyhnYywgdCwgZGV2aWNlKTsKPj4gKyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7 Cj4+ICsgICAgICAgIGlmIChyYyA9PSAxKSB7ICAgICAgICAgICAgICAvKiBhbHJlYWR5IGV4aXN0 cyBpbiB4ZW5zdG9yZSAqLwo+PiArICAgICAgICAgICAgTE9HRChFUlJPUiwgZG9taWQsICJkZXZp Y2UgYWxyZWFkeSBleGlzdHMgaW4geGVuc3RvcmUiKTsKPj4gKyAgICAgICAgICAgIGFvZGV2LT5h Y3Rpb24gPSBMSUJYTF9fREVWSUNFX0FDVElPTl9BREQ7IC8qIGZvciBlcnJvciBtZXNzYWdlICov Cj4+ICsgICAgICAgICAgICByYyA9IEVSUk9SX0RFVklDRV9FWElTVFM7Cj4+ICsgICAgICAgICAg ICBnb3RvIG91dDsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIGlmIChhb2Rldi0+dXBk YXRlX2pzb24pIHsKPj4gKyAgICAgICAgICAgIHJjID0gbGlieGxfX3NldF9kb21haW5fY29uZmln dXJhdGlvbihnYywgZG9taWQsICZkX2NvbmZpZyk7Cj4+ICsgICAgICAgICAgICBpZiAocmMpIGdv dG8gb3V0Owo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgbGlieGxfX2RldmljZV9nZW5l cmljX2FkZChnYywgdCwgZGV2aWNlLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxpYnhsX194c19rdnNfb2ZfZmxleGFycmF5KGdjLCBiYWNrKSwKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9feHNfa3ZzX29mX2ZsZXhhcnJheShnYywgZnJv bnQpLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19rdnNf b2ZfZmxleGFycmF5KGdjLCByb19mcm9udCkpOwo+PiArCj4+ICsgICAgICAgIHJjID0gbGlieGxf X3hzX3RyYW5zYWN0aW9uX2NvbW1pdChnYywgJnQpOwo+PiArICAgICAgICBpZiAoIXJjKSBicmVh azsKPj4gKyAgICAgICAgaWYgKHJjIDwgMCkgZ290byBvdXQ7Cj4+ICsgICAgfQo+PiArCj4+ICsg ICAgYW9kZXYtPmRldiA9IGRldmljZTsKPj4gKyAgICBhb2Rldi0+YWN0aW9uID0gTElCWExfX0RF VklDRV9BQ1RJT05fQUREOwo+PiArICAgIGxpYnhsX193YWl0X2RldmljZV9jb25uZWN0aW9uKGVn YywgYW9kZXYpOwo+PiArCj4+ICsgICAgcmMgPSAwOwo+PiArCj4+ICtvdXQ6Cj4+ICsgICAgbGli eGxfX3hzX3RyYW5zYWN0aW9uX2Fib3J0KGdjLCAmdCk7Cj4+ICsgICAgaWYgKGxvY2spIGxpYnhs X191bmxvY2tfZG9tYWluX3VzZXJkYXRhKGxvY2spOwo+PiArICAgIGR0LT5kaXNwb3NlKHR5cGVf c2F2ZWQpOwo+PiArICAgIGxpYnhsX2RvbWFpbl9jb25maWdfZGlzcG9zZSgmZF9jb25maWcpOwo+ PiArICAgIGFvZGV2LT5yYyA9IHJjOwo+PiArICAgIGlmIChyYykgYW9kZXYtPmNhbGxiYWNrKGVn YywgYW9kZXYpOwo+PiArICAgIHJldHVybjsKPj4gK30KPj4gKwo+PiAraW50IGxpYnhsX19kZXZp Y2VfYWRkKGxpYnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLAo+PiArICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBsaWJ4bF9kZXZpY2VfdHlwZSAqZHQsIHZvaWQgKnR5cGUpCj4+ ICt7Cj4+ICsgICAgZmxleGFycmF5X3QgKmJhY2s7Cj4+ICsgICAgZmxleGFycmF5X3QgKmZyb250 LCAqcm9fZnJvbnQ7Cj4+ICsgICAgbGlieGxfX2RldmljZSAqZGV2aWNlOwo+PiArICAgIGludCBy YzsKPj4gKwo+PiArICAgIGlmIChkdC0+c2V0X2RlZmF1bHQpIHsKPj4gKyAgICAgICAgcmMgPSBk dC0+c2V0X2RlZmF1bHQoZ2MsIGRvbWlkLCB0eXBlLCBmYWxzZSk7Cj4+ICsgICAgICAgIGlmIChy YykgZ290byBvdXQ7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgaWYgKGR0LT51cGRhdGVfZGV2aWQp IHsKPj4gKyAgICAgICAgcmMgPSBkdC0+dXBkYXRlX2RldmlkKGdjLCBkb21pZCwgdHlwZSk7Cj4+ ICsgICAgICAgIGlmIChyYykgZ290byBvdXQ7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgR0NORVco ZGV2aWNlKTsKPj4gKyAgICByYyA9IGR0LT50b19kZXZpY2UoZ2MsIGRvbWlkLCB0eXBlLCBkZXZp Y2UpOwo+PiArICAgIGlmIChyYykgZ290byBvdXQ7Cj4+ICsKPj4gKyAgICBiYWNrID0gZmxleGFy cmF5X21ha2UoZ2MsIDE2LCAxKTsKPj4gKyAgICBmcm9udCA9IGZsZXhhcnJheV9tYWtlKGdjLCAx NiwgMSk7Cj4+ICsgICAgcm9fZnJvbnQgPSBmbGV4YXJyYXlfbWFrZShnYywgMTYsIDEpOwo+PiAr Cj4+ICsgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGJhY2ssICJmcm9udGVuZC1pZCIsIEdDU1BS SU5URigiJWQiLCBkb21pZCkpOwo+PiArICAgIGZsZXhhcnJheV9hcHBlbmRfcGFpcihiYWNrLCAi b25saW5lIiwgIjEiKTsKPj4gKyAgICBmbGV4YXJyYXlfYXBwZW5kX3BhaXIoYmFjaywgInN0YXRl IiwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0NTUFJJTlRGKCIlZCIsIFhlbmJ1c1N0 YXRlSW5pdGlhbGlzaW5nKSk7Cj4+ICsgICAgZmxleGFycmF5X2FwcGVuZF9wYWlyKGZyb250LCAi YmFja2VuZC1pZCIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zcHJpbnRm KGdjLCAiJWQiLCBkZXZpY2UtPmJhY2tlbmRfZG9taWQpKTsKPj4gKyAgICBmbGV4YXJyYXlfYXBw ZW5kX3BhaXIoZnJvbnQsICJzdGF0ZSIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEdD U1BSSU5URigiJWQiLCBYZW5idXNTdGF0ZUluaXRpYWxpc2luZykpOwo+PiArCj4+ICsgICAgaWYg KGR0LT5zZXRfeGVuc3RvcmVfY29uZmlnKQo+PiArICAgICAgICBkdC0+c2V0X3hlbnN0b3JlX2Nv bmZpZyhnYywgZG9taWQsIHR5cGUsIGJhY2ssIGZyb250LCByb19mcm9udCk7Cj4+ICsKPj4gKyAg ICByYyA9IGxpYnhsX19kZXZpY2VfZ2VuZXJpY19hZGQoZ2MsIFhCVF9OVUxMLCBkZXZpY2UsCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX194c19rdnNfb2ZfZmxl eGFycmF5KGdjLCBiYWNrKSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXkoZ2MsIGZyb250KSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3hzX2t2c19vZl9mbGV4YXJyYXkoZ2MsIHJvX2Zy b250KSk7Cj4+ICsgICAgaWYgKHJjKSBnb3RvIG91dDsKPj4gKwo+PiArICAgIHJjID0gMDsKPj4g Kwo+PiArb3V0Ogo+PiArICAgIHJldHVybiByYzsKPj4gK30KPj4gKwo+PiAgLyoKPj4gICAqIExv Y2FsIHZhcmlhYmxlczoKPj4gICAqIG1vZGU6IEMKPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L2xpYnhsX2Rpc2suYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2Rpc2suYwo+PiBpbmRleCA2M2RlNzVj Li5mMmYzNjM1IDEwMDY0NAo+PiAtLS0gYS90b29scy9saWJ4bC9saWJ4bF9kaXNrLmMKPj4gKysr IGIvdG9vbHMvbGlieGwvbGlieGxfZGlzay5jCj4+IEBAIC0xMjQ0LDYgKzEyNDQsOCBAQCBzdGF0 aWMgaW50IGxpYnhsX2RldmljZV9kaXNrX2RtX25lZWRlZCh2b2lkICplLCB1bnNpZ25lZCBkb21p ZCkKPj4gICAgICAgICAgICAgZWxlbS0+YmFja2VuZF9kb21pZCA9PSBkb21pZDsKPj4gIH0KPj4K Pj4gKyNkZWZpbmUgbGlieGxfX2RldmljZV9kaXNrX3VwZGF0ZV9kZXZpZCBOVUxMCj4+ICsKPgo+ IElzIHRoaXMgY29ycmVjdCBmb3IgZGlzayAoYW5kIG90aGVyIGRldmljZSB0eXBlcyBhcyB3ZWxs KT8KCldoYXQgZXhhY3RseSBpcyBjb3JyZWN0PyBsaWJ4bF9fZGV2aWNlX2Rpc2tfdXBkYXRlX2Rl dmlkIE5VTEwgb3IKbGlieGxfX2RldmljZV9hZGRfYXN5bmMgZnVuY3Rpb24/Cgo+Cj4gU2luY2Ug eW91J3ZlIGRlZmluZWQgTElCWExfREVGSU5FX1VQREFURV9ERVZJRCwgeW91IHNob3VsZCBiZSBh YmxlIHRvCj4gdXNlIHRoYXQgaW1tZWRpYXRlbHk/CgpBY3R1YWxseSBkaXNrIGRvZXNuJ3QgY2Fs bCB1cGRhdGUgZGV2IElELiBTbyBhc3NpZ25pbmcgaXQgdG8gTlVMTCBJCmd1ZXNzIGlzIG9rIGhl cmUuCgotLSAKQmVzdCBSZWdhcmRzLApPbGVrc2FuZHIgR3J5dHNvdi4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=