From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: Re: [PATCH v2 2/5] ALSA: xen-front: Read sound driver configuration from Xen store Date: Tue, 17 Apr 2018 11:42:37 +0300 Message-ID: <2c37fff3-9dfe-f904-d06f-7751d5e9e002__10507.3940394961$1523954495$gmane$org@gmail.com> References: <20180416062453.24743-1-andr2000@gmail.com> <20180416062453.24743-3-andr2000@gmail.com> <451f4f4b-646e-0058-e24f-d9ae918f583f@suse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f8MCI-0000Ru-5g for xen-devel@lists.xenproject.org; Tue, 17 Apr 2018 08:42:42 +0000 Received: by mail-lf0-x244.google.com with SMTP id r125-v6so9374523lfe.2 for ; Tue, 17 Apr 2018 01:42:40 -0700 (PDT) In-Reply-To: <451f4f4b-646e-0058-e24f-d9ae918f583f@suse.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Juergen Gross , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, alsa-devel@alsa-project.org, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com, perex@perex.cz, tiwai@suse.com Cc: Oleksandr Andrushchenko List-Id: xen-devel@lists.xenproject.org T24gMDQvMTYvMjAxOCAwMzo1NSBQTSwgSnVlcmdlbiBHcm9zcyB3cm90ZToKPiBPbiAxNi8wNC8x OCAwODoyNCwgT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gd3JvdGU6Cj4+IEZyb206IE9sZWtzYW5k ciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KPj4KPj4g UmVhZCBjb25maWd1cmF0aW9uIHZhbHVlcyBmcm9tIFhlbiBzdG9yZSBhY2NvcmRpbmcKPj4gdG8g eGVuL2ludGVyZmFjZS9pby9zbmRpZi5oIHByb3RvY29sOgo+PiAgICAtIGludHJvZHVjZSBjb25m aWd1cmF0aW9uIHN0cnVjdHVyZXMgZm9yIGRpZmZlcmVudAo+PiAgICAgIGNvbXBvbmVudHMsIGUu Zy4gc291bmQgY2FyZCwgZGV2aWNlLCBzdHJlYW0KPj4gICAgLSByZWFkIFBDTSBIVyBwYXJhbWV0 ZXJzLCBlLmcgcmF0ZSwgZm9ybWF0IGV0Yy4KPj4gICAgLSBkZXRlY3Qgc3RyZWFtIHR5cGUgKGNh cHR1cmUvcGxheWJhY2spCj4+ICAgIC0gcmVhZCBkZXZpY2UgYW5kIGNhcmQgcGFyYW1ldGVycwo+ Pgo+PiBTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2Fu ZHJ1c2hjaGVua29AZXBhbS5jb20+Cj4+IC0tLQo+PiAgIHNvdW5kL3hlbi9NYWtlZmlsZSAgICAg ICAgICAgIHwgICAzICstCj4+ICAgc291bmQveGVuL3hlbl9zbmRfZnJvbnQuYyAgICAgfCAgIDcg Kwo+PiAgIHNvdW5kL3hlbi94ZW5fc25kX2Zyb250LmggICAgIHwgICA0ICsKPj4gICBzb3VuZC94 ZW4veGVuX3NuZF9mcm9udF9jZmcuYyB8IDUxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPj4gICBzb3VuZC94ZW4veGVuX3NuZF9mcm9udF9jZmcuaCB8ICA0NiAr KysrCj4+ICAgNSBmaWxlcyBjaGFuZ2VkLCA1NzYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC94ZW4veGVuX3NuZF9mcm9udF9jZmcuYwo+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC94ZW4veGVuX3NuZF9mcm9udF9jZmcuaAo+Pgo+ PiBkaWZmIC0tZ2l0IGEvc291bmQveGVuL01ha2VmaWxlIGIvc291bmQveGVuL01ha2VmaWxlCj4+ IGluZGV4IDQ1MDdlZjNjMjdmZC4uMDY3MDViZWY2MWZhIDEwMDY0NAo+PiAtLS0gYS9zb3VuZC94 ZW4vTWFrZWZpbGUKPj4gKysrIGIvc291bmQveGVuL01ha2VmaWxlCj4+IEBAIC0xLDUgKzEsNiBA QAo+PiAgICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgT1IgTUlUCj4+ICAgCj4+ IC1zbmRfeGVuX2Zyb250LW9ianMgOj0geGVuX3NuZF9mcm9udC5vCj4+ICtzbmRfeGVuX2Zyb250 LW9ianMgOj0geGVuX3NuZF9mcm9udC5vIFwKPj4gKwkJICAgICAgeGVuX3NuZF9mcm9udF9jZmcu bwo+PiAgIAo+PiAgIG9iai0kKENPTkZJR19TTkRfWEVOX0ZST05URU5EKSArPSBzbmRfeGVuX2Zy b250Lm8KPj4gZGlmZiAtLWdpdCBhL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250LmMgYi9zb3VuZC94 ZW4veGVuX3NuZF9mcm9udC5jCj4+IGluZGV4IGY0MDZhOGY1MmM1MS4uNjVkMjQ5NGE5ZDE0IDEw MDY0NAo+PiAtLS0gYS9zb3VuZC94ZW4veGVuX3NuZF9mcm9udC5jCj4+ICsrKyBiL3NvdW5kL3hl bi94ZW5fc25kX2Zyb250LmMKPj4gQEAgLTI1LDYgKzI1LDEzIEBAIHN0YXRpYyB2b2lkIHhlbl9z bmRfZHJ2X2Zpbmkoc3RydWN0IHhlbl9zbmRfZnJvbnRfaW5mbyAqZnJvbnRfaW5mbykKPj4gICAK Pj4gICBzdGF0aWMgaW50IHNuZGJhY2tfaW5pdHdhaXQoc3RydWN0IHhlbl9zbmRfZnJvbnRfaW5m byAqZnJvbnRfaW5mbykKPj4gICB7Cj4+ICsJaW50IG51bV9zdHJlYW1zOwo+PiArCWludCByZXQ7 Cj4+ICsKPj4gKwlyZXQgPSB4ZW5fc25kX2Zyb250X2NmZ19jYXJkKGZyb250X2luZm8sICZudW1f c3RyZWFtcyk7Cj4+ICsJaWYgKHJldCA8IDApCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gICAJ cmV0dXJuIDA7Cj4+ICAgfQo+PiAgIAo+PiBkaWZmIC0tZ2l0IGEvc291bmQveGVuL3hlbl9zbmRf ZnJvbnQuaCBiL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250LmgKPj4gaW5kZXggNGFlMjA0YjIzZDMy Li5iNTIyMjZjYjMwYmMgMTAwNjQ0Cj4+IC0tLSBhL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250LmgK Pj4gKysrIGIvc291bmQveGVuL3hlbl9zbmRfZnJvbnQuaAo+PiBAQCAtMTEsOCArMTEsMTIgQEAK Pj4gICAjaWZuZGVmIF9fWEVOX1NORF9GUk9OVF9ICj4+ICAgI2RlZmluZSBfX1hFTl9TTkRfRlJP TlRfSAo+PiAgIAo+PiArI2luY2x1ZGUgInhlbl9zbmRfZnJvbnRfY2ZnLmgiCj4+ICsKPj4gICBz dHJ1Y3QgeGVuX3NuZF9mcm9udF9pbmZvIHsKPj4gICAJc3RydWN0IHhlbmJ1c19kZXZpY2UgKnhi X2RldjsKPj4gKwo+PiArCXN0cnVjdCB4ZW5fZnJvbnRfY2ZnX2NhcmQgY2ZnOwo+PiAgIH07Cj4+ ICAgCj4+ICAgI2VuZGlmIC8qIF9fWEVOX1NORF9GUk9OVF9IICovCj4+IGRpZmYgLS1naXQgYS9z b3VuZC94ZW4veGVuX3NuZF9mcm9udF9jZmcuYyBiL3NvdW5kL3hlbi94ZW5fc25kX2Zyb250X2Nm Zy5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDQ2MTk4 NWFmZmZhCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvc291bmQveGVuL3hlbl9zbmRfZnJvbnRf Y2ZnLmMKPj4gQEAgLTAsMCArMSw1MTcgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wIE9SIE1JVAo+PiArCj4+ICsvKgo+PiArICogWGVuIHBhcmEtdmlydHVhbCBzb3Vu ZCBkZXZpY2UKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5c3Rl bXMgSW5jLgo+PiArICoKPj4gKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRl IDx4ZW4veGVuYnVzLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL3NuZGlm Lmg+Cj4+ICsKPj4gKyNpbmNsdWRlICJ4ZW5fc25kX2Zyb250LmgiCj4+ICsjaW5jbHVkZSAieGVu X3NuZF9mcm9udF9jZmcuaCIKPj4gKwo+PiArLyogbWF4aW11bSBudW1iZXIgb2Ygc3VwcG9ydGVk IHN0cmVhbXMgKi8KPiBDb21tZW50IHN0eWxlIChtdWx0aXBsZSB0aW1lcyBiZWxvdywgdG9vKToK PiBTdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXIgYW5kIGVuZCBzZW50ZW5jZXMgd2l0aCBhIGZ1 bGwgc3RvcC4Kd2lsbCBmaXgKPj4gKyNkZWZpbmUgVlNORF9NQVhfU1RSRUFNCQk4Cj4+ICsKPj4g K3N0cnVjdCBjZmdfaHdfc2FtcGxlX3JhdGUgewo+PiArCWNvbnN0IGNoYXIgKm5hbWU7Cj4+ICsJ dW5zaWduZWQgaW50IG1hc2s7Cj4+ICsJdW5zaWduZWQgaW50IHZhbHVlOwo+PiArfTsKPj4gKwo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjZmdfaHdfc2FtcGxlX3JhdGUgQ0ZHX0hXX1NVUFBPUlRF RF9SQVRFU1tdID0gewo+PiArCXsgLm5hbWUgPSAiNTUxMiIsICAgLm1hc2sgPSBTTkRSVl9QQ01f UkFURV81NTEyLCAgIC52YWx1ZSA9IDU1MTIgfSwKPj4gKwl7IC5uYW1lID0gIjgwMDAiLCAgIC5t YXNrID0gU05EUlZfUENNX1JBVEVfODAwMCwgICAudmFsdWUgPSA4MDAwIH0sCj4+ICsJeyAubmFt ZSA9ICIxMTAyNSIsICAubWFzayA9IFNORFJWX1BDTV9SQVRFXzExMDI1LCAgLnZhbHVlID0gMTEw MjUgfSwKPj4gKwl7IC5uYW1lID0gIjE2MDAwIiwgIC5tYXNrID0gU05EUlZfUENNX1JBVEVfMTYw MDAsICAudmFsdWUgPSAxNjAwMCB9LAo+PiArCXsgLm5hbWUgPSAiMjIwNTAiLCAgLm1hc2sgPSBT TkRSVl9QQ01fUkFURV8yMjA1MCwgIC52YWx1ZSA9IDIyMDUwIH0sCj4+ICsJeyAubmFtZSA9ICIz MjAwMCIsICAubWFzayA9IFNORFJWX1BDTV9SQVRFXzMyMDAwLCAgLnZhbHVlID0gMzIwMDAgfSwK Pj4gKwl7IC5uYW1lID0gIjQ0MTAwIiwgIC5tYXNrID0gU05EUlZfUENNX1JBVEVfNDQxMDAsICAu dmFsdWUgPSA0NDEwMCB9LAo+PiArCXsgLm5hbWUgPSAiNDgwMDAiLCAgLm1hc2sgPSBTTkRSVl9Q Q01fUkFURV80ODAwMCwgIC52YWx1ZSA9IDQ4MDAwIH0sCj4+ICsJeyAubmFtZSA9ICI2NDAwMCIs ICAubWFzayA9IFNORFJWX1BDTV9SQVRFXzY0MDAwLCAgLnZhbHVlID0gNjQwMDAgfSwKPj4gKwl7 IC5uYW1lID0gIjk2MDAwIiwgIC5tYXNrID0gU05EUlZfUENNX1JBVEVfOTYwMDAsICAudmFsdWUg PSA5NjAwMCB9LAo+PiArCXsgLm5hbWUgPSAiMTc2NDAwIiwgLm1hc2sgPSBTTkRSVl9QQ01fUkFU RV8xNzY0MDAsIC52YWx1ZSA9IDE3NjQwMCB9LAo+PiArCXsgLm5hbWUgPSAiMTkyMDAwIiwgLm1h c2sgPSBTTkRSVl9QQ01fUkFURV8xOTIwMDAsIC52YWx1ZSA9IDE5MjAwMCB9LAo+PiArfTsKPj4g Kwo+PiArc3RydWN0IGNmZ19od19zYW1wbGVfZm9ybWF0IHsKPj4gKwljb25zdCBjaGFyICpuYW1l Owo+PiArCXU2NCBtYXNrOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBjZmdf aHdfc2FtcGxlX2Zvcm1hdCBDRkdfSFdfU1VQUE9SVEVEX0ZPUk1BVFNbXSA9IHsKPj4gKwl7Cj4+ ICsJCS5uYW1lID0gWEVOU05EX1BDTV9GT1JNQVRfVThfU1RSLAo+PiArCQkubWFzayA9IFNORFJW X1BDTV9GTVRCSVRfVTgKPj4gKwl9LAo+PiArCXsKPj4gKwkJLm5hbWUgPSBYRU5TTkRfUENNX0ZP Uk1BVF9TOF9TVFIsCj4+ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9TOAo+PiArCX0sCj4+ ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX1UxNl9MRV9TVFIsCj4+ICsJCS5t YXNrID0gU05EUlZfUENNX0ZNVEJJVF9VMTZfTEUKPj4gKwl9LAo+PiArCXsKPj4gKwkJLm5hbWUg PSBYRU5TTkRfUENNX0ZPUk1BVF9VMTZfQkVfU1RSLAo+PiArCQkubWFzayA9IFNORFJWX1BDTV9G TVRCSVRfVTE2X0JFCj4+ICsJfSwKPj4gKwl7Cj4+ICsJCS5uYW1lID0gWEVOU05EX1BDTV9GT1JN QVRfUzE2X0xFX1NUUiwKPj4gKwkJLm1hc2sgPSBTTkRSVl9QQ01fRk1UQklUX1MxNl9MRQo+PiAr CX0sCj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX1MxNl9CRV9TVFIsCj4+ ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9TMTZfQkUKPj4gKwl9LAo+PiArCXsKPj4gKwkJ Lm5hbWUgPSBYRU5TTkRfUENNX0ZPUk1BVF9VMjRfTEVfU1RSLAo+PiArCQkubWFzayA9IFNORFJW X1BDTV9GTVRCSVRfVTI0X0xFCj4+ICsJfSwKPj4gKwl7Cj4+ICsJCS5uYW1lID0gWEVOU05EX1BD TV9GT1JNQVRfVTI0X0JFX1NUUiwKPj4gKwkJLm1hc2sgPSBTTkRSVl9QQ01fRk1UQklUX1UyNF9C RQo+PiArCX0sCj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX1MyNF9MRV9T VFIsCj4+ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUKPj4gKwl9LAo+PiArCXsK Pj4gKwkJLm5hbWUgPSBYRU5TTkRfUENNX0ZPUk1BVF9TMjRfQkVfU1RSLAo+PiArCQkubWFzayA9 IFNORFJWX1BDTV9GTVRCSVRfUzI0X0JFCj4+ICsJfSwKPj4gKwl7Cj4+ICsJCS5uYW1lID0gWEVO U05EX1BDTV9GT1JNQVRfVTMyX0xFX1NUUiwKPj4gKwkJLm1hc2sgPSBTTkRSVl9QQ01fRk1UQklU X1UzMl9MRQo+PiArCX0sCj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX1Uz Ml9CRV9TVFIsCj4+ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9VMzJfQkUKPj4gKwl9LAo+ PiArCXsKPj4gKwkJLm5hbWUgPSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfTEVfU1RSLAo+PiArCQku bWFzayA9IFNORFJWX1BDTV9GTVRCSVRfUzMyX0xFCj4+ICsJfSwKPj4gKwl7Cj4+ICsJCS5uYW1l ID0gWEVOU05EX1BDTV9GT1JNQVRfUzMyX0JFX1NUUiwKPj4gKwkJLm1hc2sgPSBTTkRSVl9QQ01f Rk1UQklUX1MzMl9CRQo+PiArCX0sCj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9S TUFUX0FfTEFXX1NUUiwKPj4gKwkJLm1hc2sgPSBTTkRSVl9QQ01fRk1UQklUX0FfTEFXCj4+ICsJ fSwKPj4gKwl7Cj4+ICsJCS5uYW1lID0gWEVOU05EX1BDTV9GT1JNQVRfTVVfTEFXX1NUUiwKPj4g KwkJLm1hc2sgPSBTTkRSVl9QQ01fRk1UQklUX01VX0xBVwo+PiArCX0sCj4+ICsJewo+PiArCQku bmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX0YzMl9MRV9TVFIsCj4+ICsJCS5tYXNrID0gU05EUlZf UENNX0ZNVEJJVF9GTE9BVF9MRQo+PiArCX0sCj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9Q Q01fRk9STUFUX0YzMl9CRV9TVFIsCj4+ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9GTE9B VF9CRQo+PiArCX0sCj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX0Y2NF9M RV9TVFIsCj4+ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9GTE9BVDY0X0xFCj4+ICsJfSwK Pj4gKwl7Cj4+ICsJCS5uYW1lID0gWEVOU05EX1BDTV9GT1JNQVRfRjY0X0JFX1NUUiwKPj4gKwkJ Lm1hc2sgPSBTTkRSVl9QQ01fRk1UQklUX0ZMT0FUNjRfQkUKPj4gKwl9LAo+PiArCXsKPj4gKwkJ Lm5hbWUgPSBYRU5TTkRfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEVfU1RSLAo+PiArCQku bWFzayA9IFNORFJWX1BDTV9GTVRCSVRfSUVDOTU4X1NVQkZSQU1FX0xFCj4+ICsJfSwKPj4gKwl7 Cj4+ICsJCS5uYW1lID0gWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFX1NUUiwK Pj4gKwkJLm1hc2sgPSBTTkRSVl9QQ01fRk1UQklUX0lFQzk1OF9TVUJGUkFNRV9CRQo+PiArCX0s Cj4+ICsJewo+PiArCQkubmFtZSA9IFhFTlNORF9QQ01fRk9STUFUX0lNQV9BRFBDTV9TVFIsCj4+ ICsJCS5tYXNrID0gU05EUlZfUENNX0ZNVEJJVF9JTUFfQURQQ00KPj4gKwl9LAo+PiArCXsKPj4g KwkJLm5hbWUgPSBYRU5TTkRfUENNX0ZPUk1BVF9NUEVHX1NUUiwKPj4gKwkJLm1hc2sgPSBTTkRS Vl9QQ01fRk1UQklUX01QRUcKPj4gKwl9LAo+PiArCXsKPj4gKwkJLm5hbWUgPSBYRU5TTkRfUENN X0ZPUk1BVF9HU01fU1RSLAo+PiArCQkubWFzayA9IFNORFJWX1BDTV9GTVRCSVRfR1NNCj4+ICsJ fSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGNmZ19od19yYXRlcyhjaGFyICpsaXN0LCB1 bnNpZ25lZCBpbnQgbGVuLAo+PiArCQkJIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzbmRfcGNt X2hhcmR3YXJlICpwY21faHcpCj4+ICt7Cj4+ICsJY2hhciAqY3VyX3JhdGU7Cj4+ICsJdW5zaWdu ZWQgaW50IGN1cl9tYXNrOwo+PiArCXVuc2lnbmVkIGludCBjdXJfdmFsdWU7Cj4+ICsJdW5zaWdu ZWQgaW50IHJhdGVzOwo+PiArCXVuc2lnbmVkIGludCByYXRlX21pbjsKPj4gKwl1bnNpZ25lZCBp bnQgcmF0ZV9tYXg7Cj4+ICsJaW50IGk7Cj4+ICsKPj4gKwlyYXRlcyA9IDA7Cj4+ICsJcmF0ZV9t aW4gPSAtMTsKPj4gKwlyYXRlX21heCA9IDA7Cj4+ICsJd2hpbGUgKChjdXJfcmF0ZSA9IHN0cnNl cCgmbGlzdCwgWEVOU05EX0xJU1RfU0VQQVJBVE9SKSkpIHsKPj4gKwkJZm9yIChpID0gMDsgaSA8 IEFSUkFZX1NJWkUoQ0ZHX0hXX1NVUFBPUlRFRF9SQVRFUyk7IGkrKykKPj4gKwkJCWlmICghc3Ry bmNhc2VjbXAoY3VyX3JhdGUsCj4+ICsJCQkJCSBDRkdfSFdfU1VQUE9SVEVEX1JBVEVTW2ldLm5h bWUsCj4+ICsJCQkJCSBYRU5TTkRfU0FNUExFX1JBVEVfTUFYX0xFTikpIHsKPj4gKwkJCQljdXJf bWFzayA9IENGR19IV19TVVBQT1JURURfUkFURVNbaV0ubWFzazsKPj4gKwkJCQljdXJfdmFsdWUg PSBDRkdfSFdfU1VQUE9SVEVEX1JBVEVTW2ldLnZhbHVlOwo+PiArCQkJCXJhdGVzIHw9IGN1cl9t YXNrOwo+PiArCQkJCWlmIChyYXRlX21pbiA+IGN1cl92YWx1ZSkKPj4gKwkJCQkJcmF0ZV9taW4g PSBjdXJfdmFsdWU7Cj4+ICsJCQkJaWYgKHJhdGVfbWF4IDwgY3VyX3ZhbHVlKQo+PiArCQkJCQly YXRlX21heCA9IGN1cl92YWx1ZTsKPj4gKwkJCX0KPj4gKwl9Cj4+ICsKPj4gKwlpZiAocmF0ZXMp IHsKPj4gKwkJcGNtX2h3LT5yYXRlcyA9IHJhdGVzOwo+PiArCQlwY21faHctPnJhdGVfbWluID0g cmF0ZV9taW47Cj4+ICsJCXBjbV9ody0+cmF0ZV9tYXggPSByYXRlX21heDsKPj4gKwl9Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGNmZ19mb3JtYXRzKGNoYXIgKmxpc3QsIHVuc2lnbmVkIGlu dCBsZW4sCj4+ICsJCQljb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc25kX3BjbV9oYXJkd2FyZSAq cGNtX2h3KQo+PiArewo+PiArCXU2NCBmb3JtYXRzOwo+PiArCWNoYXIgKmN1cl9mb3JtYXQ7Cj4+ ICsJaW50IGk7Cj4+ICsKPj4gKwlmb3JtYXRzID0gMDsKPj4gKwl3aGlsZSAoKGN1cl9mb3JtYXQg PSBzdHJzZXAoJmxpc3QsIFhFTlNORF9MSVNUX1NFUEFSQVRPUikpKSB7Cj4+ICsJCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKENGR19IV19TVVBQT1JURURfRk9STUFUUyk7IGkrKykKPj4gKwkJ CWlmICghc3RybmNhc2VjbXAoY3VyX2Zvcm1hdCwKPj4gKwkJCQkJIENGR19IV19TVVBQT1JURURf Rk9STUFUU1tpXS5uYW1lLAo+PiArCQkJCQkgWEVOU05EX1NBTVBMRV9GT1JNQVRfTUFYX0xFTikp Cj4+ICsJCQkJZm9ybWF0cyB8PSBDRkdfSFdfU1VQUE9SVEVEX0ZPUk1BVFNbaV0ubWFzazsKPj4g Kwl9Cj4+ICsKPj4gKwlpZiAoZm9ybWF0cykKPj4gKwkJcGNtX2h3LT5mb3JtYXRzID0gZm9ybWF0 czsKPj4gK30KPj4gKwo+PiArI2RlZmluZSBNQVhfQlVGRkVSX1NJWkUJCSg2NCAqIDEwMjQpCj4+ ICsjZGVmaW5lIE1JTl9QRVJJT0RfU0laRQkJNjQKPj4gKyNkZWZpbmUgTUFYX1BFUklPRF9TSVpF CQlNQVhfQlVGRkVSX1NJWkUKPj4gKyNkZWZpbmUgVVNFX0ZPUk1BVFMJCShTTkRSVl9QQ01fRk1U QklUX1U4IHwgXAo+PiArCQkJCSBTTkRSVl9QQ01fRk1UQklUX1MxNl9MRSkKPj4gKyNkZWZpbmUg VVNFX1JBVEUJCShTTkRSVl9QQ01fUkFURV9DT05USU5VT1VTIHwgXAo+PiArCQkJCSBTTkRSVl9Q Q01fUkFURV84MDAwXzQ4MDAwKQo+PiArI2RlZmluZSBVU0VfUkFURV9NSU4JCTU1MTIKPj4gKyNk ZWZpbmUgVVNFX1JBVEVfTUFYCQk0ODAwMAo+PiArI2RlZmluZSBVU0VfQ0hBTk5FTFNfTUlOCTEK Pj4gKyNkZWZpbmUgVVNFX0NIQU5ORUxTX01BWAkyCj4+ICsjZGVmaW5lIFVTRV9QRVJJT0RTX01J TgkJMgo+PiArI2RlZmluZSBVU0VfUEVSSU9EU19NQVgJCShNQVhfQlVGRkVSX1NJWkUgLyBNSU5f UEVSSU9EX1NJWkUpCj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3BjbV9oYXJkd2Fy ZSBTTkRfRFJWX1BDTV9IV19ERUZBVUxUID0gewo+PiArCS5pbmZvID0gKFNORFJWX1BDTV9JTkZP X01NQVAgfAo+PiArCQkgU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQgfAo+PiArCQkgU05EUlZf UENNX0lORk9fUkVTVU1FIHwKPj4gKwkJIFNORFJWX1BDTV9JTkZPX01NQVBfVkFMSUQpLAo+PiAr CS5mb3JtYXRzID0gVVNFX0ZPUk1BVFMsCj4+ICsJLnJhdGVzID0gVVNFX1JBVEUsCj4+ICsJLnJh dGVfbWluID0gVVNFX1JBVEVfTUlOLAo+PiArCS5yYXRlX21heCA9IFVTRV9SQVRFX01BWCwKPj4g KwkuY2hhbm5lbHNfbWluID0gVVNFX0NIQU5ORUxTX01JTiwKPj4gKwkuY2hhbm5lbHNfbWF4ID0g VVNFX0NIQU5ORUxTX01BWCwKPj4gKwkuYnVmZmVyX2J5dGVzX21heCA9IE1BWF9CVUZGRVJfU0la RSwKPj4gKwkucGVyaW9kX2J5dGVzX21pbiA9IE1JTl9QRVJJT0RfU0laRSwKPj4gKwkucGVyaW9k X2J5dGVzX21heCA9IE1BWF9QRVJJT0RfU0laRSwKPj4gKwkucGVyaW9kc19taW4gPSBVU0VfUEVS SU9EU19NSU4sCj4+ICsJLnBlcmlvZHNfbWF4ID0gVVNFX1BFUklPRFNfTUFYLAo+PiArCS5maWZv X3NpemUgPSAwLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHZvaWQgY2ZnX3JlYWRfcGNtX2h3KGNv bnN0IGNoYXIgKnBhdGgsCj4+ICsJCQkgICAgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgKnBhcmVu dF9wY21faHcsCj4+ICsJCQkgICAgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgKnBjbV9odykKPj4g K3sKPj4gKwljaGFyICpsaXN0Owo+PiArCWludCB2YWw7Cj4+ICsJc2l6ZV90IGJ1Zl9zejsKPj4g Kwl1bnNpZ25lZCBpbnQgbGVuOwo+PiArCj4+ICsJLyogaW5oZXJpdCBwYXJlbnQncyBQQ00gSFcg YW5kIHJlYWQgb3ZlcnJpZGVzIGZyb20gWGVuU3RvcmUgKi8KPj4gKwlpZiAocGFyZW50X3BjbV9o dykKPj4gKwkJKnBjbV9odyA9ICpwYXJlbnRfcGNtX2h3Owo+PiArCWVsc2UKPj4gKwkJKnBjbV9o dyA9IFNORF9EUlZfUENNX0hXX0RFRkFVTFQ7Cj4+ICsKPj4gKwl2YWwgPSB4ZW5idXNfcmVhZF91 bnNpZ25lZChwYXRoLCBYRU5TTkRfRklFTERfQ0hBTk5FTFNfTUlOLCAwKTsKPj4gKwlpZiAodmFs KQo+PiArCQlwY21faHctPmNoYW5uZWxzX21pbiA9IHZhbDsKPj4gKwo+PiArCXZhbCA9IHhlbmJ1 c19yZWFkX3Vuc2lnbmVkKHBhdGgsIFhFTlNORF9GSUVMRF9DSEFOTkVMU19NQVgsIDApOwo+PiAr CWlmICh2YWwpCj4+ICsJCXBjbV9ody0+Y2hhbm5lbHNfbWF4ID0gdmFsOwo+PiArCj4+ICsJbGlz dCA9IHhlbmJ1c19yZWFkKFhCVF9OSUwsIHBhdGgsIFhFTlNORF9GSUVMRF9TQU1QTEVfUkFURVMs ICZsZW4pOwo+PiArCWlmICghSVNfRVJSKGxpc3QpKSB7Cj4+ICsJCWNmZ19od19yYXRlcyhsaXN0 LCBsZW4sIHBhdGgsIHBjbV9odyk7Cj4+ICsJCWtmcmVlKGxpc3QpOwo+PiArCX0KPj4gKwo+PiAr CWxpc3QgPSB4ZW5idXNfcmVhZChYQlRfTklMLCBwYXRoLCBYRU5TTkRfRklFTERfU0FNUExFX0ZP Uk1BVFMsICZsZW4pOwo+PiArCWlmICghSVNfRVJSKGxpc3QpKSB7Cj4+ICsJCWNmZ19mb3JtYXRz KGxpc3QsIGxlbiwgcGF0aCwgcGNtX2h3KTsKPj4gKwkJa2ZyZWUobGlzdCk7Cj4+ICsJfQo+PiAr Cj4+ICsJYnVmX3N6ID0geGVuYnVzX3JlYWRfdW5zaWduZWQocGF0aCwgWEVOU05EX0ZJRUxEX0JV RkZFUl9TSVpFLCAwKTsKPj4gKwlpZiAoYnVmX3N6KQo+PiArCQlwY21faHctPmJ1ZmZlcl9ieXRl c19tYXggPSBidWZfc3o7Cj4+ICsKPj4gKwkvKiB1cGRhdGUgY29uZmlndXJhdGlvbiB0byBtYXRj aCBuZXcgdmFsdWVzICovCj4+ICsJaWYgKHBjbV9ody0+Y2hhbm5lbHNfbWluID4gcGNtX2h3LT5j aGFubmVsc19tYXgpCj4+ICsJCXBjbV9ody0+Y2hhbm5lbHNfbWluID0gcGNtX2h3LT5jaGFubmVs c19tYXg7Cj4+ICsKPj4gKwlpZiAocGNtX2h3LT5yYXRlX21pbiA+IHBjbV9ody0+cmF0ZV9tYXgp Cj4+ICsJCXBjbV9ody0+cmF0ZV9taW4gPSBwY21faHctPnJhdGVfbWF4Owo+PiArCj4+ICsJcGNt X2h3LT5wZXJpb2RfYnl0ZXNfbWF4ID0gcGNtX2h3LT5idWZmZXJfYnl0ZXNfbWF4Owo+PiArCj4+ ICsJcGNtX2h3LT5wZXJpb2RzX21heCA9IHBjbV9ody0+cGVyaW9kX2J5dGVzX21heCAvCj4+ICsJ CXBjbV9ody0+cGVyaW9kX2J5dGVzX21pbjsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBjZmdf Z2V0X3N0cmVhbV90eXBlKGNvbnN0IGNoYXIgKnBhdGgsIGludCBpbmRleCwKPj4gKwkJCSAgICAg ICBpbnQgKm51bV9wYiwgaW50ICpudW1fY2FwKQo+PiArewo+PiArCWNoYXIgKnN0ciA9IE5VTEw7 Cj4+ICsJY2hhciAqc3RyZWFtX3BhdGg7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCSpudW1fcGIg PSAwOwo+PiArCSpudW1fY2FwID0gMDsKPj4gKwlzdHJlYW1fcGF0aCA9IGthc3ByaW50ZihHRlBf S0VSTkVMLCAiJXMvJWQiLCBwYXRoLCBpbmRleCk7Cj4+ICsJaWYgKCFzdHJlYW1fcGF0aCkgewo+ PiArCQlyZXQgPSAtRU5PTUVNOwo+PiArCQlnb3RvIGZhaWw7Cj4+ICsJfQo+PiArCj4+ICsJc3Ry ID0geGVuYnVzX3JlYWQoWEJUX05JTCwgc3RyZWFtX3BhdGgsIFhFTlNORF9GSUVMRF9UWVBFLCBO VUxMKTsKPj4gKwlpZiAoSVNfRVJSKHN0cikpIHsKPj4gKwkJcmV0ID0gLUVJTlZBTDsKPiBJcyB0 aGlzIGNvcnJlY3Q/IERvIHlvdSB3YW50IHRvIHJldHVybiAtRUlOVkFMIGluIGNhc2UgeGVuYnVz X3JlYWQoKQo+IGZhaWxlZCB3aXRoIGUuZy4gLUVOT01FTT8Kd2lsbCByZXR1cm4gUFRSX0VSUihz dHIpCj4+ICsJCWdvdG8gZmFpbDsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAoIXN0cm5jYXNlY21wKHN0 ciwgWEVOU05EX1NUUkVBTV9UWVBFX1BMQVlCQUNLLAo+PiArCQkJIHNpemVvZihYRU5TTkRfU1RS RUFNX1RZUEVfUExBWUJBQ0spKSkgewo+PiArCQkoKm51bV9wYikrKzsKPj4gKwl9IGVsc2UgaWYg KCFzdHJuY2FzZWNtcChzdHIsIFhFTlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFLAo+PiArCQkJICAg ICAgc2l6ZW9mKFhFTlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFKSkpIHsKPj4gKwkJKCpudW1fY2Fw KSsrOwo+PiArCX0gZWxzZSB7Cj4+ICsJCXJldCA9IC1FSU5WQUw7Cj4+ICsJCWdvdG8gZmFpbDsK Pj4gKwl9Cj4+ICsJcmV0ID0gMDsKPj4gKwo+PiArZmFpbDoKPj4gKwlrZnJlZShzdHJlYW1fcGF0 aCk7Cj4+ICsJa2ZyZWUoc3RyKTsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IGNmZ19zdHJlYW0oc3RydWN0IHhlbl9zbmRfZnJvbnRfaW5mbyAqZnJvbnRfaW5mbywK Pj4gKwkJICAgICAgc3RydWN0IHhlbl9mcm9udF9jZmdfcGNtX2luc3RhbmNlICpwY21faW5zdGFu Y2UsCj4+ICsJCSAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIGludCBpbmRleCwgaW50ICpjdXJfcGIs IGludCAqY3VyX2NhcCwKPj4gKwkJICAgICAgaW50ICpzdHJlYW1fY250KQo+PiArewo+PiArCWNo YXIgKnN0ciA9IE5VTEw7Cj4+ICsJY2hhciAqc3RyZWFtX3BhdGg7Cj4+ICsJc3RydWN0IHhlbl9m cm9udF9jZmdfc3RyZWFtICpzdHJlYW07Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCXN0cmVhbV9w YXRoID0gZGV2bV9rYXNwcmludGYoJmZyb250X2luZm8tPnhiX2Rldi0+ZGV2LAo+PiArCQkJCSAg ICAgR0ZQX0tFUk5FTCwgIiVzLyVkIiwgcGF0aCwgaW5kZXgpOwo+PiArCWlmICghc3RyZWFtX3Bh dGgpIHsKPj4gKwkJcmV0ID0gLUVOT01FTTsKPj4gKwkJZ290byBmYWlsOwo+PiArCX0KPj4gKwo+ PiArCXN0ciA9IHhlbmJ1c19yZWFkKFhCVF9OSUwsIHN0cmVhbV9wYXRoLCBYRU5TTkRfRklFTERf VFlQRSwgTlVMTCk7Cj4+ICsJaWYgKElTX0VSUihzdHIpKSB7Cj4+ICsJCXJldCA9IC1FSU5WQUw7 Cj4gU2FtZSBhcyBhYm92ZS4Kd2lsbCByZXR1cm4gUFRSX0VSUihzdHIpCj4KPj4gKwkJZ290byBm YWlsOwo+PiArCX0KPj4gKwo+PiArCWlmICghc3RybmNhc2VjbXAoc3RyLCBYRU5TTkRfU1RSRUFN X1RZUEVfUExBWUJBQ0ssCj4+ICsJCQkgc2l6ZW9mKFhFTlNORF9TVFJFQU1fVFlQRV9QTEFZQkFD SykpKSB7Cj4+ICsJCXN0cmVhbSA9ICZwY21faW5zdGFuY2UtPnN0cmVhbXNfcGJbKCpjdXJfcGIp KytdOwo+PiArCX0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKHN0ciwgWEVOU05EX1NUUkVBTV9UWVBF X0NBUFRVUkUsCj4+ICsJCQkgICAgICBzaXplb2YoWEVOU05EX1NUUkVBTV9UWVBFX0NBUFRVUkUp KSkgewo+PiArCQlzdHJlYW0gPSAmcGNtX2luc3RhbmNlLT5zdHJlYW1zX2NhcFsoKmN1cl9jYXAp KytdOwo+PiArCX0gZWxzZSB7Cj4+ICsJCXJldCA9IC1FSU5WQUw7Cj4+ICsJCWdvdG8gZmFpbDsK Pj4gKwl9Cj4gVW50aWwgaGVyZSB0aGlzIGZ1bmN0aW9uIGxvb2tzIHZlcnkgbXVjaCBsaWtlIGNm Z19nZXRfc3RyZWFtX3R5cGUoKS4KPiBDYW4ndCB0aGV5IHVzZSBhIGNvbW1vbiBzdWItZnVuY3Rp b24/Ck5vdCByZWFsbHksIGJlY2F1c2UgY2ZnX2dldF9zdHJlYW1fdHlwZSB1c2VzIGthc3ByaW50 Zgpmb3Igc3RyaW5ncyBhbmQgdGhpcyBvbmUgZGV2bV9rYXNwcmludGYuIFRyeWluZyB0byBtYWtl CmEgY29tbW9uIHN1Yi1mdW5jIGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBtZQo+Cj4+ICsKPj4gKwkv KiBnZXQgbmV4dCBzdHJlYW0gaW5kZXggKi8KPj4gKwlzdHJlYW0tPmluZGV4ID0gKCpzdHJlYW1f Y250KSsrOwo+PiArCXN0cmVhbS0+eGVuc3RvcmVfcGF0aCA9IHN0cmVhbV9wYXRoOwo+PiArCS8q Cj4+ICsJICogY2hlY2sgaW4gWGVuIHN0b3JlIGlmIFBDTSBIVyBjb25maWd1cmF0aW9uIGV4aXN0 cyBmb3IgdGhpcyBzdHJlYW0KPj4gKwkgKiBhbmQgdXBkYXRlIGlmIHNvLCBlLmcuIHdlIGluaGVy aXQgYWxsIHZhbHVlcyBmcm9tIGRldmljZSdzIFBDTSBIVywKPj4gKwkgKiBidXQgY2FuIHN0aWxs IG92ZXJyaWRlIHNvbWUgb2YgdGhlIHZhbHVlcyBmb3IgdGhlIHN0cmVhbQo+PiArCSAqLwo+PiAr CWNmZ19yZWFkX3BjbV9odyhzdHJlYW0tPnhlbnN0b3JlX3BhdGgsCj4+ICsJCQkmcGNtX2luc3Rh bmNlLT5wY21faHcsICZzdHJlYW0tPnBjbV9odyk7Cj4+ICsJcmV0ID0gMDsKPj4gKwo+PiArZmFp bDoKPj4gKwlrZnJlZShzdHIpOwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRp YyBpbnQgY2ZnX2RldmljZShzdHJ1Y3QgeGVuX3NuZF9mcm9udF9pbmZvICpmcm9udF9pbmZvLAo+ PiArCQkgICAgICBzdHJ1Y3QgeGVuX2Zyb250X2NmZ19wY21faW5zdGFuY2UgKnBjbV9pbnN0YW5j ZSwKPj4gKwkJICAgICAgc3RydWN0IHNuZF9wY21faGFyZHdhcmUgKnBhcmVudF9wY21faHcsCj4+ ICsJCSAgICAgIGNvbnN0IGNoYXIgKnBhdGgsIGludCBub2RlX2luZGV4LCBpbnQgKnN0cmVhbV9j bnQpCj4+ICt7Cj4+ICsJY2hhciAqc3RyOwo+PiArCWNoYXIgKmRldmljZV9wYXRoOwo+PiArCWlu dCByZXQsIGksIG51bV9zdHJlYW1zOwo+PiArCWludCBudW1fcGIsIG51bV9jYXA7Cj4+ICsJaW50 IGN1cl9wYiwgY3VyX2NhcDsKPj4gKwljaGFyIG5vZGVbM107Cj4+ICsKPj4gKwlkZXZpY2VfcGF0 aCA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAiJXMvJWQiLCBwYXRoLCBub2RlX2luZGV4KTsKPj4g KwlpZiAoIWRldmljZV9wYXRoKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCXN0ciA9 IHhlbmJ1c19yZWFkKFhCVF9OSUwsIGRldmljZV9wYXRoLCBYRU5TTkRfRklFTERfREVWSUNFX05B TUUsIE5VTEwpOwo+PiArCWlmICghSVNfRVJSKHN0cikpIHsKPj4gKwkJc3RybmNweShwY21faW5z dGFuY2UtPm5hbWUsIHN0ciwgc2l6ZW9mKHBjbV9pbnN0YW5jZS0+bmFtZSkpOwo+PiArCQlrZnJl ZShzdHIpOwo+PiArCX0KPj4gKwo+PiArCXBjbV9pbnN0YW5jZS0+ZGV2aWNlX2lkID0gbm9kZV9p bmRleDsKPj4gKwo+PiArCS8qCj4+ICsJICogY2hlY2sgaW4gWGVuIHN0b3JlIGlmIFBDTSBIVyBj b25maWd1cmF0aW9uIGV4aXN0cyBmb3IgdGhpcyBkZXZpY2UKPj4gKwkgKiBhbmQgdXBkYXRlIGlm IHNvLCBlLmcuIHdlIGluaGVyaXQgYWxsIHZhbHVlcyBmcm9tIGNhcmQncyBQQ00gSFcsCj4+ICsJ ICogYnV0IGNhbiBzdGlsbCBvdmVycmlkZSBzb21lIG9mIHRoZSB2YWx1ZXMgZm9yIHRoZSBkZXZp Y2UKPj4gKwkgKi8KPj4gKwljZmdfcmVhZF9wY21faHcoZGV2aWNlX3BhdGgsIHBhcmVudF9wY21f aHcsICZwY21faW5zdGFuY2UtPnBjbV9odyk7Cj4+ICsKPj4gKwkvKiBmaW5kIG91dCBob3cgbWFu eSBzdHJlYW1zIHdlcmUgY29uZmlndXJlZCBpbiBYZW4gc3RvcmUgKi8KPj4gKwludW1fc3RyZWFt cyA9IDA7Cj4+ICsJZG8gewo+PiArCQlzbnByaW50Zihub2RlLCBzaXplb2Yobm9kZSksICIlZCIs IG51bV9zdHJlYW1zKTsKPj4gKwkJaWYgKCF4ZW5idXNfZXhpc3RzKFhCVF9OSUwsIGRldmljZV9w YXRoLCBub2RlKSkKPj4gKwkJCWJyZWFrOwo+PiArCj4+ICsJCW51bV9zdHJlYW1zKys7Cj4+ICsJ fSB3aGlsZSAobnVtX3N0cmVhbXMgPCBWU05EX01BWF9TVFJFQU0pOwo+PiArCj4+ICsJcGNtX2lu c3RhbmNlLT5udW1fc3RyZWFtc19wYiA9IDA7Cj4+ICsJcGNtX2luc3RhbmNlLT5udW1fc3RyZWFt c19jYXAgPSAwOwo+PiArCS8qIGdldCBudW1iZXIgb2YgcGxheWJhY2sgYW5kIGNhcHR1cmUgc3Ry ZWFtcyAqLwo+PiArCWZvciAoaSA9IDA7IGkgPCBudW1fc3RyZWFtczsgaSsrKSB7Cj4+ICsJCXJl dCA9IGNmZ19nZXRfc3RyZWFtX3R5cGUoZGV2aWNlX3BhdGgsIGksICZudW1fcGIsICZudW1fY2Fw KTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlnb3RvIGZhaWw7Cj4+ICsKPj4gKwkJcGNtX2lu c3RhbmNlLT5udW1fc3RyZWFtc19wYiArPSBudW1fcGI7Cj4+ICsJCXBjbV9pbnN0YW5jZS0+bnVt X3N0cmVhbXNfY2FwICs9IG51bV9jYXA7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHBjbV9pbnN0YW5j ZS0+bnVtX3N0cmVhbXNfcGIpIHsKPj4gKwkJcGNtX2luc3RhbmNlLT5zdHJlYW1zX3BiID0KPj4g KwkJCQlkZXZtX2tjYWxsb2MoJmZyb250X2luZm8tPnhiX2Rldi0+ZGV2LAo+PiArCQkJCQkgICAg IHBjbV9pbnN0YW5jZS0+bnVtX3N0cmVhbXNfcGIsCj4+ICsJCQkJCSAgICAgc2l6ZW9mKHN0cnVj dCB4ZW5fZnJvbnRfY2ZnX3N0cmVhbSksCj4+ICsJCQkJCSAgICAgR0ZQX0tFUk5FTCk7Cj4+ICsJ CWlmICghcGNtX2luc3RhbmNlLT5zdHJlYW1zX3BiKSB7Cj4+ICsJCQlyZXQgPSAtRU5PTUVNOwo+ PiArCQkJZ290byBmYWlsOwo+PiArCQl9Cj4+ICsJfQo+PiArCj4+ICsJaWYgKHBjbV9pbnN0YW5j ZS0+bnVtX3N0cmVhbXNfY2FwKSB7Cj4+ICsJCXBjbV9pbnN0YW5jZS0+c3RyZWFtc19jYXAgPQo+ PiArCQkJCWRldm1fa2NhbGxvYygmZnJvbnRfaW5mby0+eGJfZGV2LT5kZXYsCj4+ICsJCQkJCSAg ICAgcGNtX2luc3RhbmNlLT5udW1fc3RyZWFtc19jYXAsCj4+ICsJCQkJCSAgICAgc2l6ZW9mKHN0 cnVjdCB4ZW5fZnJvbnRfY2ZnX3N0cmVhbSksCj4+ICsJCQkJCSAgICAgR0ZQX0tFUk5FTCk7Cj4+ ICsJCWlmICghcGNtX2luc3RhbmNlLT5zdHJlYW1zX2NhcCkgewo+PiArCQkJcmV0ID0gLUVOT01F TTsKPj4gKwkJCWdvdG8gZmFpbDsKPj4gKwkJfQo+PiArCX0KPj4gKwo+PiArCWN1cl9wYiA9IDA7 Cj4+ICsJY3VyX2NhcCA9IDA7Cj4+ICsJZm9yIChpID0gMDsgaSA8IG51bV9zdHJlYW1zOyBpKysp IHsKPj4gKwkJcmV0ID0gY2ZnX3N0cmVhbShmcm9udF9pbmZvLCBwY21faW5zdGFuY2UsIGRldmlj ZV9wYXRoLCBpLAo+PiArCQkJCSAmY3VyX3BiLCAmY3VyX2NhcCwgc3RyZWFtX2NudCk7Cj4+ICsJ CWlmIChyZXQgPCAwKQo+PiArCQkJZ290byBmYWlsOwo+PiArCX0KPj4gKwlyZXQgPSAwOwo+PiAr Cj4+ICtmYWlsOgo+PiArCWtmcmVlKGRldmljZV9wYXRoKTsKPj4gKwlyZXR1cm4gcmV0Owo+PiAr fQo+PiArCj4+ICtpbnQgeGVuX3NuZF9mcm9udF9jZmdfY2FyZChzdHJ1Y3QgeGVuX3NuZF9mcm9u dF9pbmZvICpmcm9udF9pbmZvLAo+PiArCQkJICAgaW50ICpzdHJlYW1fY250KQo+PiArewo+PiAr CXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4Yl9kZXYgPSBmcm9udF9pbmZvLT54Yl9kZXY7Cj4+ICsJ c3RydWN0IHhlbl9mcm9udF9jZmdfY2FyZCAqY2ZnID0gJmZyb250X2luZm8tPmNmZzsKPj4gKwlp bnQgcmV0LCBudW1fZGV2aWNlcywgaTsKPj4gKwljaGFyIG5vZGVbM107Cj4+ICsKPj4gKwkqc3Ry ZWFtX2NudCA9IDA7Cj4+ICsJbnVtX2RldmljZXMgPSAwOwo+PiArCWRvIHsKPj4gKwkJc25wcmlu dGYobm9kZSwgc2l6ZW9mKG5vZGUpLCAiJWQiLCBudW1fZGV2aWNlcyk7Cj4+ICsJCWlmICgheGVu YnVzX2V4aXN0cyhYQlRfTklMLCB4Yl9kZXYtPm5vZGVuYW1lLCBub2RlKSkKPj4gKwkJCWJyZWFr Owo+PiArCj4+ICsJCW51bV9kZXZpY2VzKys7Cj4+ICsJfSB3aGlsZSAobnVtX2RldmljZXMgPCBT TkRSVl9QQ01fREVWSUNFUyk7Cj4+ICsKPj4gKwlpZiAoIW51bV9kZXZpY2VzKSB7Cj4+ICsJCWRl dl93YXJuKCZ4Yl9kZXYtPmRldiwKPj4gKwkJCSAiTm8gZGV2aWNlcyBjb25maWd1cmVkIGZvciBz b3VuZCBjYXJkIGF0ICVzXG4iLAo+PiArCQkJIHhiX2Rldi0+bm9kZW5hbWUpOwo+PiArCQlyZXR1 cm4gLUVOT0RFVjsKPj4gKwl9Cj4+ICsKPj4gKwkvKiBzdGFydCBmcm9tIGRlZmF1bHQgUENNIEhX IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjYXJkICovCj4+ICsJY2ZnX3JlYWRfcGNtX2h3KHhiX2Rl di0+bm9kZW5hbWUsIE5VTEwsICZjZmctPnBjbV9odyk7Cj4+ICsKPj4gKwljZmctPnBjbV9pbnN0 YW5jZXMgPQo+PiArCQkJZGV2bV9rY2FsbG9jKCZmcm9udF9pbmZvLT54Yl9kZXYtPmRldiwgbnVt X2RldmljZXMsCj4+ICsJCQkJICAgICBzaXplb2Yoc3RydWN0IHhlbl9mcm9udF9jZmdfcGNtX2lu c3RhbmNlKSwKPj4gKwkJCQkgICAgIEdGUF9LRVJORUwpOwo+PiArCWlmICghY2ZnLT5wY21faW5z dGFuY2VzKQo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwo+PiArCWZvciAoaSA9IDA7IGkgPCBu dW1fZGV2aWNlczsgaSsrKSB7Cj4+ICsJCXJldCA9IGNmZ19kZXZpY2UoZnJvbnRfaW5mbywgJmNm Zy0+cGNtX2luc3RhbmNlc1tpXSwKPj4gKwkJCQkgJmNmZy0+cGNtX2h3LCB4Yl9kZXYtPm5vZGVu YW1lLCBpLCBzdHJlYW1fY250KTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlyZXR1cm4gcmV0 Owo+IFdobyB3aWxsIGZyZWUgYWxsIHRoZSBtZW1vcnkgYWxsb2NhdGVkIHVudGlsIG5vdyBpbiBj YXNlIG9mIGFuIGVycm9yPwpUaGUgbWVtb3J5IGlzIGFsbG9jYXRlZCB3aXRoIGRldm1feHh4IGZ1 bmN0aW9ucywgc28gaXQgd2lsbApiZSBmcmVlZCBvbiBkZXZpY2UgZGVzdHJ1Y3Rpb25zIGF1dG9t YXRpY2FsbHkKPgo+IEFuZCBJIHRoaW5rIHdoZW4gcmVtb3ZpbmcgdGhlIGRldmljZSBmcmVlaW5n IHRoZSBtZW1vcnkgaXMgbWlzc2luZywgdG9vLgpTYW1lIGFzIGFib3ZlLCB0aGUga2VybmVsIHdp bGwgdGFrZSBjYXJlIG9mIGl0IHdoaWxlIGRlc3Ryb3lpbmcgdGhlIGRldmljZQo+Cj4gSnVlcmdl bgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8v bGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=