From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH 3/7] ALSA: add shell for Intel HDMI LPE audio driver Date: Wed, 14 Dec 2016 13:45:31 +0100 Message-ID: References: <20161212181043.12512-1-jerome.anand@intel.com> <20161212181043.12512-4-jerome.anand@intel.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161212181043.12512-4-jerome.anand@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jerome Anand Cc: alsa-devel@alsa-project.org, intel-gfx@lists.freedesktop.org, broonie@kernel.org, rakesh.a.ughreja@intel.com List-Id: alsa-devel@alsa-project.org T24gTW9uLCAxMiBEZWMgMjAxNiAxOToxMDozOSArMDEwMCwKSmVyb21lIEFuYW5kIHdyb3RlOgo+ IAo+IE9uIEJheXRyYWlsIGFuZCBDaGVycnl0cmFpbCwgSERhdWRpbyBtYXkgYmUgZnVzZWQgb3V0 IG9yIGRpc2FibGVkCj4gYnkgdGhlIEJJT1MuIFRoaXMgZHJpdmVyIGVuYWJsZXMgYW4gYWx0ZXJu YXRlIHBhdGggdG8gdGhlIGk5MTUKPiBkaXNwbGF5IHJlZ2lzdGVycyBhbmQgRE1BLgo+IAo+IEFs dGhvdWdoIHRoZXJlIGlzIG5vIGhhcmR3YXJlIHBhdGggYmV0d2VlbiBpOTE1IGRpc3BsYXkgYW5k IExQRS9TU1QKPiBhdWRpbyBjbHVzdGVycywgdGhpcyBIRE1JIGNhcGFiaWxpdHkgaXMgcmVmZXJy ZWQgdG8gaW4gdGhlIGRvY3VtZW50YXRpb24KPiBhcyAiSERNSSBMUEUgQXVkaW8iIHNvIHdlIGtl ZXAgdGhlIG5hbWUgZm9yIGNvbnNpc3RlbmN5LiBUaGVyZSBpcyBubwo+IGhhcmR3YXJlIHBhdGgg b3IgY29udHJvbCBkZXBlbmRlbmNpZXMgd2l0aCB0aGUgTFBFL1NTVCBEU1AgZnVuY3Rpb25hbGl0 eS4KPiAKPiBUaGUgaGRtaS1scGUtYXVkaW8gZHJpdmVyIHdpbGwgYmUgcHJvYmVkIHdoZW4gdGhl IGk5MTUgZHJpdmVyIGNyZWF0ZXMKPiBhIGNoaWxkIHBsYXRmb3JtIGRldmljZS4KPiAKPiBTaW5j ZSB0aGlzIGRyaXZlciBpcyBuZWl0aGVyIFNvQyBub3IgUENJLCBhIG5ldyB4ODYgZm9sZGVyIGlz IGFkZGVkCj4gCj4gU2lnbmVkLW9mZi1ieTogUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1s b3Vpcy5ib3NzYXJ0QGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKZXJvbWUgQW5h bmQgPGplcm9tZS5hbmFuZEBpbnRlbC5jb20+CgpXaHkgZG8gd2UgbmVlZCBhICJzaGVsbCIgYW5k IGluZGlyZWN0IGNhbGxzPwpUaGlzIGlzIGEgc21hbGwgZHJpdmVyIHNldCwgc28gaXQncyBub3Qg dXR0ZXJseSB1bmFjY2VwdGFibGUsIGJ1dCBpdApzdGlsbCBtYWtlcyB0aGluZ3MgYSBiaXQgbW9y ZSBjb21wbGljYXRlZCB0aGFuIG5lY2Vzc2FyeSwgc28gSSdkIGxpa2UKdG8gdW5kZXJzdGFuZCB0 aGUgaWRlYSBiZWhpbmQgaXQuCgoKPiAtLS0KPiAgc291bmQvS2NvbmZpZyAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKwo+ICBzb3VuZC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQo+ICBzb3VuZC94ODYvS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAxNiArCj4gIHNvdW5kL3g4 Ni9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgICA4ICsKPiAgc291bmQveDg2L2ludGVsX2hkbWlf bHBlX2F1ZGlvLmMgfCA2MjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAg c291bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmggfCA2OTIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTM0MSBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBzb3VuZC94ODYvS2NvbmZp Zwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgc291bmQveDg2L01ha2VmaWxlCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzb3VuZC94ODYvaW50ZWxfaGRtaV9scGVfYXVkaW8uYwo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgc291bmQveDg2L2ludGVsX2hkbWlfbHBlX2F1ZGlvLmgKPiAKPiBkaWZmIC0tZ2l0IGEv c291bmQvS2NvbmZpZyBiL3NvdW5kL0tjb25maWcKPiBpbmRleCA1YTI0MGUwLi5lZTJlNjlhIDEw MDY0NAo+IC0tLSBhL3NvdW5kL0tjb25maWcKPiArKysgYi9zb3VuZC9LY29uZmlnCj4gQEAgLTEw OCw2ICsxMDgsOCBAQCBzb3VyY2UgInNvdW5kL3BhcmlzYy9LY29uZmlnIgo+ICAKPiAgc291cmNl ICJzb3VuZC9zb2MvS2NvbmZpZyIKPiAgCj4gK3NvdXJjZSAic291bmQveDg2L0tjb25maWciCj4g Kwo+ICBlbmRpZiAjIFNORAo+ICAKPiAgbWVudWNvbmZpZyBTT1VORF9QUklNRQo+IGRpZmYgLS1n aXQgYS9zb3VuZC9NYWtlZmlsZSBiL3NvdW5kL01ha2VmaWxlCj4gaW5kZXggYzQxYmRmNS4uNmRl NDVkMiAxMDA2NDQKPiAtLS0gYS9zb3VuZC9NYWtlZmlsZQo+ICsrKyBiL3NvdW5kL01ha2VmaWxl Cj4gQEAgLTUsNyArNSw3IEBAIG9iai0kKENPTkZJR19TT1VORCkgKz0gc291bmRjb3JlLm8KPiAg b2JqLSQoQ09ORklHX1NPVU5EX1BSSU1FKSArPSBvc3MvCj4gIG9iai0kKENPTkZJR19ETUFTT1VO RCkgKz0gb3NzLwo+ICBvYmotJChDT05GSUdfU05EKSArPSBjb3JlLyBpMmMvIGRyaXZlcnMvIGlz YS8gcGNpLyBwcGMvIGFybS8gc2gvIHN5bnRoLyB1c2IvIFwKPiAtCWZpcmV3aXJlLyBzcGFyYy8g c3BpLyBwYXJpc2MvIHBjbWNpYS8gbWlwcy8gc29jLyBhdG1lbC8gaGRhLwo+ICsJZmlyZXdpcmUv IHNwYXJjLyBzcGkvIHBhcmlzYy8gcGNtY2lhLyBtaXBzLyBzb2MvIGF0bWVsLyBoZGEvIHg4Ni8K PiAgb2JqLSQoQ09ORklHX1NORF9BT0EpICs9IGFvYS8KPiAgCj4gICMgVGhpcyBvbmUgbXVzdCBi ZSBjb21waWxhYmxlIGV2ZW4gaWYgc291bmQgaXMgY29uZmlndXJlZCBvdXQKPiBkaWZmIC0tZ2l0 IGEvc291bmQveDg2L0tjb25maWcgYi9zb3VuZC94ODYvS2NvbmZpZwo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTgyYWRmMwo+IC0tLSAvZGV2L251bGwKPiArKysgYi9z b3VuZC94ODYvS2NvbmZpZwo+IEBAIC0wLDAgKzEsMTYgQEAKPiArbWVudWNvbmZpZyBTTkRfWDg2 Cj4gKwl0cmlzdGF0ZSAiWDg2IHNvdW5kIGRldmljZXMiCj4gKwktLS1oZWxwLS0tCj4gKwo+ICsJ ICBYODYgc291bmQgZGV2aWNlcyB0aGF0IGRvbid0IGZhbGwgdW5kZXIgU29DIG9yIFBDSSBjYXRl Z29yaWVzCj4gKwo+ICtpZiBTTkRfWDg2Cj4gKwo+ICtjb25maWcgSERNSV9MUEVfQVVESU8KPiAr CXRyaXN0YXRlICJIRE1JIGF1ZGlvIHdpdGhvdXQgSERhdWRpbyBvbiBJbnRlbCBBdG9tIHBsYXRm b3JtcyIKPiArCWRlcGVuZHMgb24gRFJNX0k5MTUKPiArICAgICAgICBkZWZhdWx0IG4KPiArICAg ICAgICBoZWxwCj4gKyAgICAgICAgICBDaG9vc2UgdGhpcyBvcHRpb24gdG8gc3VwcG9ydCBIRE1J IExQRSBBdWRpbyBtb2RlCgpQbGVhc2UgZml4IHRoZSBpbmRlbnRhdGlvbi4gIEFsc28gYSBiaXQg bW9yZSBkZXNjcmlwdGlvbiB3b3VsZCBiZSBtb3JlCnVzZXItZnJpZW5kbHkuCgoKPiArCj4gK2Vu ZGlmCSMgU05EX1g4Ngo+IGRpZmYgLS1naXQgYS9zb3VuZC94ODYvTWFrZWZpbGUgYi9zb3VuZC94 ODYvTWFrZWZpbGUKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjc4YjJh ZTEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc291bmQveDg2L01ha2VmaWxlCj4gQEAgLTAsMCAr MSw4IEBACj4gK0RSSVZFUl9OQU1FIDo9IGhkbWlfbHBlX2F1ZGlvCj4gKwo+ICtjY2ZsYWdzLXkg Kz0gLUlkcml2ZXJzL2dwdS9kcm0vaTkxNQoKSXMgaXQganVzdCBmb3IgaW50ZWxfbHBlX2F1ZGlv Lmg/ICBUaGVuIHJhdGhlciBwdXQgaW50ZWxfbHBlX2F1ZGlvLmgKdG8gaW5jbHVkZS9kcm0uCgoK PiArJChEUklWRVJfTkFNRSktb2JqcyArPSBcCj4gKwlpbnRlbF9oZG1pX2xwZV9hdWRpby5vCj4g Kwo+ICtvYmotJChDT05GSUdfSERNSV9MUEVfQVVESU8pICs9ICQoRFJJVkVSX05BTUUpLm8KCkRv bid0IHVzZSBzdWJzdGl0dXRpb24sIGl0J3MgcmF0aGVyIGNvbmZ1c2luZy4KQWxzbywgd2UgZ2l2 ZSAic25kLSIgcHJlZml4IGZvciB0aGUgc291bmQgZHJpdmVyIGluIGdlbmVyYWwuCklmIG5vIGJp ZyByZWFzb24gYWdhaW5zdCBpdCwga2VlcCB0aGlzIHJ1bGUgcGxlYXNlLgoKCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL3NvdW5kL3g4Ni9pbnRlbF9oZG1pX2xwZV9hdWRpby5jCihzbmlwKQo+IEBA IC0wLDAgKzEsNjIyIEBACj4gKy8qCj4gKyAqICBpbnRlbF9oZG1pX2xwZV9hdWRpby5jIC0gSW50 ZWwgSERNSSBMUEUgYXVkaW8gZHJpdmVyIGZvciBBdG9tIHBsYXRmb3Jtcwo+ICsgKgo+ICsgKiAg Q29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnAKPiArICogIEF1dGhvcnM6Cj4gKyAqCQlKZXJv bWUgQW5hbmQgPGplcm9tZS5hbmFuZEBpbnRlbC5jb20+Cj4gKyAqCQlBcmF2aW5kIFNpZGRhcHBh amkgPGFyYXZpbmR4LnNpZGRhcHBhamlAaW50ZWwuY29tPgo+ICsgKiAgfn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn4KPiArICoKPiArICogIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgo+ICsg Kgo+ICsgKiAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dAo+ICsgKiAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn4KPiArICovCj4gKwo+ICsjZGVmaW5lIHByX2ZtdChmbXQpCSJoZG1pX2xwZV9hdWRp bzogIiBmbXQKCkJldHRlciB0byB1c2UgZGV2XyooKSB2YXJpYW50LgoKCj4gKyNpbmNsdWRlIDxs aW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lycXJldHVybi5oPgo+ ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pby5oPgo+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiArI2luY2x1ZGUgPHNvdW5kL3BjbS5oPgo+ICsjaW5j bHVkZSA8c291bmQvY29yZS5oPgo+ICsjaW5jbHVkZSA8c291bmQvcGNtX3BhcmFtcy5oPgo+ICsj aW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgo+ICsjaW5jbHVkZSA8c291bmQvY29udHJvbC5oPgo+ ICsjaW5jbHVkZSA8c291bmQvaW5pdHZhbC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2ludGVsX2xwZV9h dWRpby5oPgo+ICsjaW5jbHVkZSAiaW50ZWxfaGRtaV9scGVfYXVkaW8uaCIKPiArCj4gKy8qIGds b2JhbHMqLwo+ICtzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpncGRldjsKPiAraW50IF9oZG1pX3N0 YXRlOwo+ICt1bmlvbiBvdG1faGRtaV9lbGRfdCBoZG1pX2VsZDsKCkZvciB0aGUgZ2xvYmFsIHZh cmlhYmxlcywgZ2l2ZSBzb21lIHByZWZpeCwgYXMgd2UgaGF2ZSBubyBwcm9wZXIKbmFtZXNwYWNl IGluIEMuCgpBbmQsIHdoYXQncyB0aGUgcmVhc29uIHRvIGtlZXAgY29waWVzIG9mIHRoZSBzdGF0 ZSBoZXJlPyAgQ2FuJ3Qgd2UKcGVlayB0aGUgcGRhdGEgYXQgZWFjaCB0aW1lPwoKCj4gKwo+ICtz dHJ1Y3QgaGRtaV9scGVfYXVkaW9fY3R4IHsKPiArCWludCBpcnE7Cj4gKwl2b2lkIF9faW9tZW0g Km1taW9fc3RhcnQ7Cj4gKwloYWRfZXZlbnRfY2FsbF9iYWNrIGhhZF9ldmVudF9jYWxsYmFja3M7 Cj4gKwlzdHJ1Y3Qgc25kX2ludGVsX2hhZF9pbnRlcmZhY2UgKmhhZF9pbnRlcmZhY2U7Cj4gKwl2 b2lkICpoYWRfcHZ0X2RhdGE7Cj4gKwlpbnQgdG1kc19jbG9ja19zcGVlZDsKPiArCXVuc2lnbmVk IGludCBoYWRfY29uZmlnX29mZnNldDsKPiArCWludCBoZG1pX2F1ZGlvX2ludGVycnVwdF9tYXNr Owo+ICsJc3RydWN0IHdvcmtfc3RydWN0IGhkbWlfYXVkaW9fd3E7Cj4gK307Cj4gKwo+ICtzdGF0 aWMgaW5saW5lIHZvaWQgaGRtaV9zZXRfZWxkKHZvaWQgKmVsZCkKPiArewo+ICsJaW50IHNpemUg PSAoc2l6ZW9mKGhkbWlfZWxkKSkgPiBIRE1JX01BWF9FTERfQllURVMgPwo+ICsJCQkJSERNSV9N QVhfRUxEX0JZVEVTIDoKPiArCQkJCShzaXplb2YoaGRtaV9lbGQpKTsKCkhvdyBjYW4gdGhlIHNp emUgZGlmZmVyLi4uPyAgSWYgYW55LCBpdCBzaG91bGQgYmUgY2hlY2tlZCBieQpCVUlMRF9CVUdf T04oKSBvciBzdWNoLgoKPiArCj4gKwltZW1jcHkoKHZvaWQgKikmaGRtaV9lbGQsIGVsZCwgc2l6 ZSk7CgpBbHNvLCB3aGVuIGNvcHlpbmcgZnJvbSB0aGUgZ3JhcGhpY3Mgc2lkZSwgaXNuJ3QgaXQg c2FmZXIgdG8gcGFzcyB0aGUKZ2l2ZW4gRUxEIHNpemUgYXMgd2VsbD8gIFRoZW4gd2UgY2FuIHpl cm8tY2xlYXIgdGhlIHJlc3QgYnl0ZXMgaWYgaXQncwpzaG9ydC4KCj4gK30KPiArCj4gK3N0YXRp YyBpbmxpbmUgaW50IGhkbWlfZ2V0X2VsZCh2b2lkICplbGQpCj4gK3sKPiArCW1lbWNweShlbGQs ICh2b2lkICopJmhkbWlfZWxkLCBzaXplb2YoaGRtaV9lbGQpKTsKPiArCj4gKwl7Cj4gKwkJaW50 IGk7Cj4gKwkJdWludDhfdCAqZWxkX2RhdGEgPSAodWludDhfdCAqKSZoZG1pX2VsZDsKPiArCj4g KwkJcHJfZGVidWcoImhkbWlfZ2V0X2VsZDpcbnt7Iik7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkg PCBzaXplb2YoaGRtaV9lbGQpOyBpKyspCj4gKwkJCXByX2RlYnVnKCIweCV4LCAiLCBlbGRfZGF0 YVtpXSk7Cj4gKwo+ICsJCXByX2RlYnVnKCJ9fVxuIik7Cj4gKwl9CgpUaGVyZSBpcyBhIGhleGR1 bXAgZGVidWcgcHJpbnQgaGVscGVyLCB0b28uCgoKPiArCXJldHVybiBIQURfU1VDQ0VTUzsKCkxl dCdzIHVzZSB0aGUgbm9ybWFsIHJldHVybiBjb2RlLCBpLmUuIDAgb3IgYSBuZWdhdGl2ZSBlcnJv ci4KCgo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgaGRtaV9scGVfYXVkaW9f Y3R4ICpnZXRfaGRtaV9jb250ZXh0KHZvaWQpCj4gK3sKPiArCXN0cnVjdCBoZG1pX2xwZV9hdWRp b19jdHggKmN0eDsKPiArCj4gKwljdHggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShncGRldik7Cj4g KwlyZXR1cm4gY3R4Owo+ICt9CgpIcm0uLi4gIFdoeSBub3Qgc3RvcmluZyB0aGUgYXVkaW8gcGRl diBpbiBpOTE1IHBkYXRhPwpUaGVuIHRoZSBub3RpZnkgY2FsbGJhY2sgY2FuIGV4dHJhY3QgaXQg ZWFzaWx5LgoKKHNuaXApCj4gK3N0YXRpYyBpbnQgaGRtaV9scGVfYXVkaW9fcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsJc3RydWN0IGhkbWlfbHBlX2F1ZGlvX2N0 eCAqY3R4Owo+ICsJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3BkYXRhICpwZGF0YTsKPiAr CWludCBpcnE7Cj4gKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlc19tbWlvOwo+ICsJdm9pZCBfX2lvbWVt ICptbWlvX3N0YXJ0Owo+ICsJaW50IHJldCA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdfaXJx Owo+ICsJY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2hlcnJ5dmlld19pZHNbXSA9IHsKCk1p c3Npbmcgc3RhdGljLgoKPiArCQl7UENJX0RFVklDRSgweDgwODYsIDB4MjJiMCl9LAo+ICsJCXtQ Q0lfREVWSUNFKDB4ODA4NiwgMHgyMmIxKX0sCj4gKwkJe1BDSV9ERVZJQ0UoMHg4MDg2LCAweDIy YjIpfSwKPiArCQl7UENJX0RFVklDRSgweDgwODYsIDB4MjJiMyl9LAo+ICsJCXt9Cj4gKwl9Owo+ ICsKPiArCXByX2RlYnVnKCJFbnRlciAlc1xuIiwgX19mdW5jX18pOwo+ICsKPiArCS8qVEJEOnJl bW92ZSBnbG9iYWxzKi8KPiArCWdwZGV2ID0gcGRldjsKPiArCV9oZG1pX3N0YXRlID0gaGRtaV9j b25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiArCj4gKwkvKiBnZXQgcmVzb3VyY2VzICov Cj4gKwlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApOwo+ICsJaWYgKGlycSA8IDApIHsK PiArCQlwcl9lcnIoIkNvdWxkIG5vdCBnZXQgaXJxIHJlc291cmNlXG4iKTsKPiArCQlyZXR1cm4g LUVOT0RFVjsKPiArCX0KPiArCj4gKwlyZXNfbW1pbyA9IHBsYXRmb3JtX2dldF9yZXNvdXJjZShw ZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKwlpZiAoIXJlc19tbWlvKSB7Cj4gKwkJcHJfZXJy KCJDb3VsZCBub3QgZ2V0IElPX01FTSByZXNvdXJjZXNcbiIpOwo+ICsJCXJldHVybiAtRU5YSU87 Cj4gKwl9Cj4gKwo+ICsJcHJfZGVidWcoIiVzOiBtbWlvX3N0YXJ0ID0gMHgleCwgbW1pb19lbmQg PSAweCV4XG4iLCBfX2Z1bmNfXywKPiArCQkodW5zaWduZWQgaW50KXJlc19tbWlvLT5zdGFydCwg KHVuc2lnbmVkIGludClyZXNfbW1pby0+ZW5kKTsKPiArCj4gKwltbWlvX3N0YXJ0ID0gaW9yZW1h cF9ub2NhY2hlKHJlc19tbWlvLT5zdGFydCwKPiArCQkJCShzaXplX3QpKChyZXNfbW1pby0+ZW5k IC0gcmVzX21taW8tPnN0YXJ0KQo+ICsJCQkJCQkrIDEpKTsKPiArCWlmICghbW1pb19zdGFydCkg ewo+ICsJCXByX2VycigiQ291bGQgbm90IGdldCBpb3JlbWFwXG4iKTsKPiArCQlyZXR1cm4gLUVB Q0NFUzsKPiArCX0KPiArCj4gKwkvKiBzZXR1cCBpbnRlcnJ1cHQgaGFuZGxlciAqLwo+ICsJcmV0 ID0gcmVxdWVzdF9pcnEoaXJxLCBkaXNwbGF5X3BpcGVfaW50ZXJydXB0X2hhbmRsZXIsCj4gKwkJ CTAsIC8qIEZJWE1FOiBpcyBJUlFGX1NIQVJFRCBuZWVkZWQgPyAqLwoKSXQncyBhIGlycWNoaXAs IHNvIG5vIHNoYXJpbmcgaXMgY29uc2lkZXJlZCwgcmlnaHQ/ClRoZW4gSVJRRl9TSEFSRUQgaXMg cmF0aGVyIHdyb25nLgoKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvc291bmQveDg2L2ludGVsX2hk bWlfbHBlX2F1ZGlvLmgKKHNuaXApCj4gKyNkZWZpbmUgSE1ESV9MUEVfQVVESU9fRFJJVkVSX05B TUUJCSJpbnRlbC1oZG1pLWxwZS1hdWRpbyIKPiArI2RlZmluZSBIQURfRFJJVkVSX1ZFUlNJT04J IjAuMDEuMDAzIgoKVGhlIGRyaXZlciB2ZXJzaW9uIHN0cmluZyBkb2Vzbid0IG1ha2Ugc2Vuc2Ug aW4gbW9zdCBjYXNlcyBmb3IKaW4ta2VybmVsIGNvZGVzLgoKPiArI2RlZmluZSBIQURfTUFYX0RF VklDRVMJCTEKPiArI2RlZmluZSBIQURfTUlOX0NIQU5ORUwJCTIKPiArI2RlZmluZSBIQURfTUFY X0NIQU5ORUwJCTgKPiArI2RlZmluZSBIQURfTlVNX09GX1JJTkdfQlVGUwk0Cj4gKwo+ICsvKiBI RE1JIEF1ZGlvIExQRSBFcnJvciBDb2RlcyAqLwo+ICsjZGVmaW5lIEhBRF9TVUNDRVNTCQkwCj4g KyNkZWZpbmUgSEFEX0ZBSUwJCTEKCkF2b2lkIHRoZSBvd24gZGVmaW5pdGlvbi4KCgo+ICsvKiBB c3N1bWUgMTkyS0h6LCA4Y2hhbm5lbCwgMjVtc2VjIHBlcmlvZCAqLwo+ICsjZGVmaW5lIEhBRF9N QVhfQlVGRkVSCQkoNjAwKjEwMjQpCj4gKyNkZWZpbmUgSEFEX01JTl9CVUZGRVIJCSgzMioxMDI0 KQo+ICsjZGVmaW5lIEhBRF9NQVhfUEVSSU9EUwkJNAo+ICsjZGVmaW5lIEhBRF9NSU5fUEVSSU9E UwkJNAo+ICsjZGVmaW5lIEhBRF9NQVhfUEVSSU9EX0JZVEVTCShIQURfTUFYX0JVRkZFUi9IQURf TUlOX1BFUklPRFMpCj4gKyNkZWZpbmUgSEFEX01JTl9QRVJJT0RfQllURVMJMjU2Cj4gKyNkZWZp bmUgSEFEX0ZJRk9fU0laRQkJMCAvKiBmaWZvIG5vdCBiZWluZyB1c2VkICovCj4gKyNkZWZpbmUg TUFYX1NQRUFLRVJTCQk4Cj4gKy8qIFRPRE86IEFkZCBvd24gdGx2IHdoZW4gY2hhbm5lbCBtYXAg aXMgcG9ydGVkIGZvciB1c2VyIHNwYWNlICovCj4gKyNkZWZpbmUgVVNFX0FMU0FfREVGQVVMVF9U TFYKPiArCj4gKyNkZWZpbmUgQVVEX1NBTVBMRV9SQVRFXzMyCTMyMDAwCj4gKyNkZWZpbmUgQVVE X1NBTVBMRV9SQVRFXzQ0XzEJNDQxMDAKPiArI2RlZmluZSBBVURfU0FNUExFX1JBVEVfNDgJNDgw MDAKPiArI2RlZmluZSBBVURfU0FNUExFX1JBVEVfODhfMgk4ODIwMAo+ICsjZGVmaW5lIEFVRF9T QU1QTEVfUkFURV85Ngk5NjAwMAo+ICsjZGVmaW5lIEFVRF9TQU1QTEVfUkFURV8xNzZfNAkxNzY0 MDAKPiArI2RlZmluZSBBVURfU0FNUExFX1JBVEVfMTkyCTE5MjAwMAo+ICsKPiArI2RlZmluZSBI QURfTUlOX1JBVEUJCUFVRF9TQU1QTEVfUkFURV8zMgo+ICsjZGVmaW5lIEhBRF9NQVhfUkFURQkJ QVVEX1NBTVBMRV9SQVRFXzE5Mgo+ICsKPiArI2RlZmluZSBESVNfU0FNUExFX1JBVEVfMjVfMgky NTIwMAo+ICsjZGVmaW5lIERJU19TQU1QTEVfUkFURV8yNwkyNzAwMAo+ICsjZGVmaW5lIERJU19T QU1QTEVfUkFURV81NAk1NDAwMAo+ICsjZGVmaW5lIERJU19TQU1QTEVfUkFURV83NF8yNQk3NDI1 MAo+ICsjZGVmaW5lIERJU19TQU1QTEVfUkFURV8xNDhfNQkxNDg1MDAKPiArI2RlZmluZSBIQURf UkVHX1dJRFRICQkweDA4Cj4gKyNkZWZpbmUgSEFEX01BWF9IV19CVUZTCQkweDA0Cj4gKyNkZWZp bmUgSEFEX01BWF9ESVBfV09SRFMJCTE2Cj4gKyNkZWZpbmUgSU5URUxfSEFECQkiSW50ZWxIZG1p THBlQXVkaW8iCj4gKwo+ICsvKiBfQVVEX0NPTkZJRyByZWdpc3RlciBNQVNLICovCj4gKyNkZWZp bmUgQVVEX0NPTkZJR19NQVNLX1VOREVSUlVOCTB4QzAwMDAwMDAKPiArI2RlZmluZSBBVURfQ09O RklHX01BU0tfU1JEQkcJCTB4MDAwMDAwMDIKPiArI2RlZmluZSBBVURfQ09ORklHX01BU0tfRlVO Q1JTVAkJMHgwMDAwMDAwMQo+ICsKPiArI2RlZmluZSBNQVhfQ05UCQkJMHhGRgo+ICsjZGVmaW5l IEhBRF9TVVNQRU5EX0RFTEFZCTEwMDAKPiArCj4gKyNkZWZpbmUgT1RNX0hETUlfRUxEX1NJWkUg MTI4Cj4gKwo+ICt1bmlvbiBvdG1faGRtaV9lbGRfdCB7Cj4gKwl1aW50OF90IGVsZF9kYXRhW09U TV9IRE1JX0VMRF9TSVpFXTsKPiArCSNwcmFnbWEgcGFjaygxKQoKVXNlIF9fcGFja2VkIG5vdGlv biBmb3IgdGhlIHBhY2tlZCBzdHJ1Y3RzLgoKCj4gKwlzdHJ1Y3Qgewo+ICsJCS8qIEJ5dGVbMF0g PSBFTEQgVmVyc2lvbiBOdW1iZXIgKi8KPiArCQl1bmlvbiB7Cj4gKwkJCXVpbnQ4X3QgICBieXRl MDsKPiArCQkJc3RydWN0IHsKPiArCQkJCXVpbnQ4X3QgcmVzZXJ2ZWQ6MzsgLyogUmVzZXJmICov Cj4gKwkJCQl1aW50OF90IGVsZF92ZXI6NTsgLyogRUxEIFZlcnNpb24gTnVtYmVyICovCj4gKwkJ CQkvKiAwMDAwMGIgLSByZXNlcnZlZAo+ICsJCQkJICogMDAwMDFiIC0gZmlyc3QgcmV2LCBvYnNv bGV0ZWQKPiArCQkJCSAqIDAwMDEwYiAtIHZlcnNpb24gMiwgc3VwcG9ydGluZyBDRUEgdmVyc2lv bgo+ICsJCQkJICoJCQk4NjFEIG9yIGJlbG93Cj4gKwkJCQkgKiAwMDAxMWI6MTExMTFiIC0gcmVz ZXJ2ZWQKPiArCQkJCSAqIGZvciBmdXR1cmUKPiArCQkJCSAqLwo+ICsJCQl9Owo+ICsJCX07Cj4g Kwo+ICsJCS8qIEJ5dGVbMV0gPSBWZW5kb3IgVmVyc2lvbiBGaWVsZCAqLwo+ICsJCXVuaW9uIHsK PiArCQkJdWludDhfdCB2ZW5kb3JfdmVyc2lvbjsKPiArCQkJc3RydWN0IHsKPiArCQkJCXVpbnQ4 X3QgcmVzZXJ2ZWQxOjM7Cj4gKwkJCQl1aW50OF90IHZlbGRfdmVyOjU7IC8qIFZlcnNpb24gbnVt YmVyIG9mIHRoZSBFTEQKPiArCQkJCQkJICAgICAqIGV4dGVuc2lvbi4gVGhpcyB2YWx1ZSBpcwo+ ICsJCQkJCQkgICAgICogcHJvdmlzaW9uZWQgYW5kIHVuaXF1ZSB0bwo+ICsJCQkJCQkgICAgICog ZWFjaCB2ZW5kb3IuCj4gKwkJCQkJCSAgICAgKi8KPiArCQkJfTsKPiArCQl9Owo+ICsKPiArCQkv KiBCeXRlWzJdID0gQmFzZWxpbmUgTGVuZ3RoIGZpZWxkICovCj4gKwkJdWludDhfdCBiYXNlbGlu ZV9lbGRfbGVuZ3RoOyAvKiBMZW5ndGggb2YgdGhlIEJhc2VsaW5lIHN0cnVjdHVyZQo+ICsJCQkJ CSAgICAgICoJZGl2aWRlZCBieSBGb3VyLgo+ICsJCQkJCSAgICAgICovCj4gKwo+ICsJCS8qIEJ5 dGUgWzNdID0gUmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KPiArCQl1aW50OF90IGJ5dGUzOwo+ ICsKPiArCQkvKiBTdGFydGluZyBvZiB0aGUgQmFzZUxpbmUgRUVMRCBzdHJ1Y3R1cmUKPiArCQkg KiBCeXRlWzRdID0gTW9uaXRvciBOYW1lIExlbmd0aAo+ICsJCSAqLwo+ICsJCXVuaW9uIHsKPiAr CQkJdWludDhfdCBieXRlNDsKPiArCQkJc3RydWN0IHsKPiArCQkJCXVpbnQ4X3QgbW5sOjU7Cj4g KwkJCQl1aW50OF90IGNlYV9lZGlkX3Jldl9pZDozOwo+ICsJCQl9Owo+ICsJCX07Cj4gKwo+ICsJ CS8qIEJ5dGVbNV0gPSBDYXBhYmlsaXRpZXMgKi8KPiArCQl1bmlvbiB7Cj4gKwkJCXVpbnQ4X3Qg Y2FwYWJpbGl0aWVzOwo+ICsJCQlzdHJ1Y3Qgewo+ICsJCQkJdWludDhfdCBoZGNwOjE7IC8qIEhE Q1Agc3VwcG9ydCAqLwo+ICsJCQkJdWludDhfdCBhaV9zdXBwb3J0OjE7ICAgLyogQUkgc3VwcG9y dCAqLwo+ICsJCQkJdWludDhfdCBjb25uZWN0aW9uX3R5cGU6MjsgLyogQ29ubmVjdGlvbiB0eXBl Cj4gKwkJCQkJCQkgICAgKiAwMCAtIEhETUkKPiArCQkJCQkJCSAgICAqIDAxIC0gRFAKPiArCQkJ CQkJCSAgICAqIDEwIC0xMSAgUmVzZXJ2ZWQKPiArCQkJCQkJCSAgICAqIGZvciBmdXR1cmUKPiAr CQkJCQkJCSAgICAqIGNvbm5lY3Rpb24gdHlwZXMKPiArCQkJCQkJCSAgICAqLwo+ICsJCQkJdWlu dDhfdCBzYWRjOjQ7IC8qIEluZGljYXRlcyBudW1iZXIgb2YgMyBieXRlcwo+ICsJCQkJCQkgKiBT aG9ydCBBdWRpbyBEZXNjcmlwdG9ycy4KPiArCQkJCQkJICovCj4gKwkJCX07Cj4gKwkJfTsKPiAr Cj4gKwkJLyogQnl0ZVs2XSA9IEF1ZGlvIFN5bmNoIERlbGF5ICovCj4gKwkJdWludDhfdCBhdWRp b19zeW5jaF9kZWxheTsgLyogQW1vdW50IG9mIHRpbWUgcmVwb3J0ZWQgYnkgdGhlCj4gKwkJCQkJ ICAgICogc2luayB0aGF0IHRoZSB2aWRlbyB0cmFpbHMgYXVkaW8KPiArCQkJCQkgICAgKiBpbiBt aWxsaXNlY29uZHMuCj4gKwkJCQkJICAgICovCj4gKwo+ICsJCS8qIEJ5dGVbN10gPSBTcGVha2Vy IEFsbG9jYXRpb24gQmxvY2sgKi8KPiArCQl1bmlvbiB7Cj4gKwkJCXVpbnQ4X3Qgc3BlYWtlcl9h bGxvY2F0aW9uX2Jsb2NrOwo+ICsJCQlzdHJ1Y3Qgewo+ICsJCQkJdWludDhfdCBmbHI6MTsgLypG cm9udCBMZWZ0IGFuZCBSaWdodCBjaGFubmVscyovCj4gKwkJCQl1aW50OF90IGxmZToxOyAvKkxv dyBGcmVxdWVuY3kgRWZmZWN0IGNoYW5uZWwqLwo+ICsJCQkJdWludDhfdCBmYzoxOyAgLypDZW50 ZXIgdHJhbnNtaXNzaW9uIGNoYW5uZWwqLwo+ICsJCQkJdWludDhfdCBybHI6MTsgLypSZWFyIExl ZnQgYW5kIFJpZ2h0IGNoYW5uZWxzKi8KPiArCQkJCXVpbnQ4X3QgcmM6MTsgLypSZWFyIENlbnRl ciBjaGFubmVsKi8KPiArCQkJCXVpbnQ4X3QgZmxyYzoxOyAvKkZyb250IGxlZnQgYW5kIFJpZ2h0 IG9mIENlbnRlcgo+ICsJCQkJCQkgKnRyYW5zbWlzc2lvbiBjaGFubmVscwo+ICsJCQkJCQkgKi8K PiArCQkJCXVpbnQ4X3QgcmxyYzoxOyAvKlJlYXIgbGVmdCBhbmQgUmlnaHQgb2YgQ2VudGVyCj4g KwkJCQkJCSAqdHJhbnNtaXNzaW9uIGNoYW5uZWxzCj4gKwkJCQkJCSAqLwo+ICsJCQkJdWludDhf dCByZXNlcnZlZDM6MTsgLyogUmVzZXJ2ZWQgKi8KPiArCQkJfTsKPiArCQl9Owo+ICsKPiArCQkv KiBCeXRlWzggLSAxNV0gLSA4IEJ5dGUgcG9ydCBpZGVudGlmaWNhdGlvbiB2YWx1ZSAqLwo+ICsJ CXVpbnQ4X3QgcG9ydF9pZF92YWx1ZVs4XTsKPiArCj4gKwkJLyogQnl0ZVsxNiAtIDE3XSAtIDIg Qnl0ZSBNYW51ZmFjdHVyZXIgSUQgKi8KPiArCQl1aW50OF90IG1hbnVmYWN0dXJlcl9pZFsyXTsK PiArCj4gKwkJLyogQnl0ZVsxOCAtIDE5XSAtIDIgQnl0ZSBQcm9kdWN0IElEICovCj4gKwkJdWlu dDhfdCBwcm9kdWN0X2lkWzJdOwo+ICsKPiArCQkvKiBCeXRlIFsyMC04M10gLSA2NCBCeXRlcyBv ZiBCYXNlTGluZSBEYXRhICovCj4gKwkJdWludDhfdCBtbl9zYW5kX3NhZHNbNjRdOyAvKiBUaGlz IHdpbGwgaW5jbHVkZQo+ICsJCQkJCSAgICogLSBBU0NJSSBzdHJpbmcgb2YgTW9uaXRvciBuYW1l Cj4gKwkJCQkJICAgKiAtIExpc3Qgb2YgMyBieXRlIFNBRHMKPiArCQkJCQkgICAqIC0gWmVybyBw YWRkaW5nCj4gKwkJCQkJICAgKi8KPiArCj4gKwkJLyogVmVuZG9yIEVMRCBCbG9jayBzaG91bGQg Y29udGludWUgaGVyZSEKPiArCQkgKiBObyBWZW5kb3IgRUxEIGJsb2NrIGRlZmluZWQgYXMgb2Yg bm93Lgo+ICsJCSAqLwo+ICsJfTsKPiArCSNwcmFnbWEgcGFjaygpCj4gK307CgpXZWxsLCB3ZSBz aG91bGQgaGF2ZSBhIHNpbmdsZSBkZWZpbml0aW9uIG9mIEVMRCBzb21ld2hlcmUuCldlIGNhbiBr ZWVwIHRoaXMgbG9jYWxseSB1bnRpbCB3ZSBoYXZlIHNvbWUgdW5pZmllZCBoZWFkZXIsIHRob3Vn aC4KCkluIGFueXdheSwgYmV0dGVyIHRvIGF2b2lkIHVpbnQ4X3QuCgoKdGhhbmtzLAoKVGFrYXNo aQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK