From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [alsa-devel] [PATCH v2 1/9] drm: bridge/dw_hdmi-ahb-audio: add audio driver Date: Fri, 14 Aug 2015 16:34:07 +0200 Message-ID: References: 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King Cc: Fabio Estevam , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Mark Brown , Yakir Yang , Andy Yan , linux-arm-kernel@lists.infradead.org List-Id: alsa-devel@alsa-project.org T24gRnJpLCAxNCBBdWcgMjAxNSAxNjowNDoyNSArMDIwMCwKUnVzc2VsbCBLaW5nIHdyb3RlOgo+ IAo+IEFkZCBBTFNBIGJhc2VkIEhETUkgQUhCIGF1ZGlvIGRyaXZlciBmb3IgZHdfaGRtaS4gIFRo ZSBvbmx5IGJ1ZmZlcgo+IGZvcm1hdCBzdXBwb3J0ZWQgYnkgdGhlIGhhcmR3YXJlIGlzIGl0cyBv d24gc3BlY2lhbCBJRUM5NTggYmFzZWQgZm9ybWF0LAo+IHdoaWNoIGlzIG5vdCBjb21wYXRpYmxl IHdpdGggYW55IEFMU0EgZm9ybWF0LiAgVG8gYXZvaWQgZG9pbmcgdG9vIG11Y2gKPiBkYXRhIG1h bmlwdWxhdGlvbiB3aXRoaW4gdGhlIGRyaXZlciwgd2Ugc3VwcG9ydCBvbmx5IEFMU0FzIElFQzk1 OCBMRSBhbmQKPiAyNC1iaXQgUENNIGZvcm1hdHMgZm9yIDIgdG8gNiBjaGFubmVscywgd2hpY2gg d2UgY29udmVydCB0byBpdHMgaGFyZHdhcmUKPiBmb3JtYXQuCj4gCj4gQSBtb3JlIGRlc2lyYWJs ZSBzb2x1dGlvbiB3b3VsZCBiZSB0byBoYXZlIHRoaXMgY29udmVyc2lvbiBpbiB1c2Vyc3BhY2Us Cj4gYnV0IEFMU0EgZG9lcyBub3QgYXBwZWFyIHRvIGFsbG93IHN1Y2ggdHJhbnNmb3JtYXRpb25z IG91dHNpZGUgb2YKPiBsaWJhc291bmQgaXRzZWxmLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJ1c3Nl bGwgS2luZyA8cm1rK2tlcm5lbEBhcm0ubGludXgub3JnLnVrPgo+IC0tLQo+IHYyOiB1cGRhdGVk IHdpdGggVGFrYXNoaSBJd2FpJ3MgY29tbWVudHMuLi4gYW5kIHdpdGggYSBmaXhlZCBDYzogbGlu ZS4KClJldmlld2VkLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CgoKdGhhbmtzLAoK VGFrYXNoaQoKCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZyAgICAgICAgICAgICB8 ICAxMCArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgICAgICAgICAgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS1haGItYXVkaW8uYyB8IDU3OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3 X2hkbWktYXVkaW8uaCAgICAgfCAgMTMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hk bWkuYyAgICAgICAgICAgfCAgMjQgKysKPiAgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1p LmggICAgICAgICAgIHwgICAzICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCA2MzAgaW5zZXJ0aW9ucygr KQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLWFo Yi1hdWRpby5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3 X2hkbWktYXVkaW8uaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBpbmRleCBhY2VmMzIyMzc3 MmMuLjU2ZWQzNWZlMDczNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tj b25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25maWcKPiBAQCAtMyw2ICsz LDE2IEBAIGNvbmZpZyBEUk1fRFdfSERNSQo+ICAJZGVwZW5kcyBvbiBEUk0KPiAgCXNlbGVjdCBE Uk1fS01TX0hFTFBFUgo+ICAKPiArY29uZmlnIERSTV9EV19IRE1JX0FIQl9BVURJTwo+ICsJdHJp c3RhdGUgIlN5bm9wc2lzIERlc2lnbndhcmUgQUhCIEF1ZGlvIGludGVyZmFjZSIKPiArCWRlcGVu ZHMgb24gRFJNX0RXX0hETUkgJiYgU05ECj4gKwlzZWxlY3QgU05EX1BDTQo+ICsJc2VsZWN0IFNO RF9QQ01fSUVDOTU4Cj4gKwloZWxwCj4gKwkgIFN1cHBvcnQgdGhlIEFIQiBBdWRpbyBpbnRlcmZh Y2Ugd2hpY2ggaXMgcGFydCBvZiB0aGUgU3lub3BzaXMKPiArCSAgRGVzaWdud2FyZSBIRE1JIGJs b2NrLiAgVGhpcyBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKPiArCSAgdGhlIGkuTVg2IEhE TUkgZHJpdmVyLgo+ICsKPiAgY29uZmlnIERSTV9QVE4zNDYwCj4gIAl0cmlzdGF0ZSAiUFROMzQ2 MCBEUC9MVkRTIGJyaWRnZSIKPiAgCWRlcGVuZHMgb24gRFJNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2Vm aWxlCj4gaW5kZXggOGRmZWJkOTg0MzcwLi5lYjgwZGJiYjgzNjUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2JyaWRnZS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvTWFrZWZpbGUKPiBAQCAtMywzICszLDQgQEAgY2NmbGFncy15IDo9IC1JaW5jbHVkZS9kcm0K PiAgb2JqLSQoQ09ORklHX0RSTV9QUzg2MjIpICs9IHBzODYyMi5vCj4gIG9iai0kKENPTkZJR19E Uk1fUFROMzQ2MCkgKz0gcHRuMzQ2MC5vCj4gIG9iai0kKENPTkZJR19EUk1fRFdfSERNSSkgKz0g ZHdfaGRtaS5vCj4gK29iai0kKENPTkZJR19EUk1fRFdfSERNSV9BSEJfQVVESU8pICs9IGR3X2hk bWktYWhiLWF1ZGlvLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19o ZG1pLWFoYi1hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLWFoYi1hdWRp by5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLmJmMzc5MzEw MDA4YQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hk bWktYWhiLWF1ZGlvLmMKPiBAQCAtMCwwICsxLDU3OSBAQAo+ICsvKgo+ICsgKiBEZXNpZ25XYXJl IEhETUkgYXVkaW8gZHJpdmVyCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz Cj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsgKgo+ ICsgKiBXcml0dGVuIGFuZCB0ZXN0ZWQgYWdhaW5zdCB0aGUgRGVzaWdud2FyZSBIRE1JIFR4IGZv dW5kIGluIGlNWDYuCj4gKyAqLwo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUg PGxpbnV4L2ludGVycnVwdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGRybS9icmlkZ2UvZHdf aGRtaS5oPgo+ICsKPiArI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZGVmLmg+Cj4gKyNpbmNsdWRlIDxz b3VuZC9jb3JlLmg+Cj4gKyNpbmNsdWRlIDxzb3VuZC9pbml0dmFsLmg+Cj4gKyNpbmNsdWRlIDxz b3VuZC9wY20uaD4KPiArI2luY2x1ZGUgPHNvdW5kL3BjbV9pZWM5NTguaD4KPiArCj4gKyNpbmNs dWRlICJkd19oZG1pLWF1ZGlvLmgiCj4gKwo+ICsjZGVmaW5lIERSSVZFUl9OQU1FICJkdy1oZG1p LWFoYi1hdWRpbyIKPiArCj4gKy8qIFByb3ZpZGUgc29tZSBiaXRzIHJhdGhlciB0aGFuIGJpdCBv ZmZzZXRzICovCj4gK2VudW0gewo+ICsJSERNSV9BSEJfRE1BX0NPTkYwX1NXX0ZJRk9fUlNUID0g QklUKDcpLAo+ICsJSERNSV9BSEJfRE1BX0NPTkYwX0VOX0hMT0NLID0gQklUKDMpLAo+ICsJSERN SV9BSEJfRE1BX1NUQVJUX1NUQVJUID0gQklUKDApLAo+ICsJSERNSV9BSEJfRE1BX1NUT1BfU1RP UCA9IEJJVCgwKSwKPiArCUhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfRVJST1IgPSBCSVQo NSksCj4gKwlIRE1JX0lIX01VVEVfQUhCRE1BQVVEX1NUQVQwX0xPU1QgPSBCSVQoNCksCj4gKwlI RE1JX0lIX01VVEVfQUhCRE1BQVVEX1NUQVQwX1JFVFJZID0gQklUKDMpLAo+ICsJSERNSV9JSF9N VVRFX0FIQkRNQUFVRF9TVEFUMF9ET05FID0gQklUKDIpLAo+ICsJSERNSV9JSF9NVVRFX0FIQkRN QUFVRF9TVEFUMF9CVUZGRlVMTCA9IEJJVCgxKSwKPiArCUhETUlfSUhfTVVURV9BSEJETUFBVURf U1RBVDBfQlVGRkVNUFRZID0gQklUKDApLAo+ICsJSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFU MF9BTEwgPQo+ICsJCUhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfRVJST1IgfAo+ICsJCUhE TUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfTE9TVCB8Cj4gKwkJSERNSV9JSF9NVVRFX0FIQkRN QUFVRF9TVEFUMF9SRVRSWSB8Cj4gKwkJSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9ET05F IHwKPiArCQlIRE1JX0lIX01VVEVfQUhCRE1BQVVEX1NUQVQwX0JVRkZGVUxMIHwKPiArCQlIRE1J X0lIX01VVEVfQUhCRE1BQVVEX1NUQVQwX0JVRkZFTVBUWSwKPiArCUhETUlfSUhfQUhCRE1BQVVE X1NUQVQwX0VSUk9SID0gQklUKDUpLAo+ICsJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfTE9TVCA9 IEJJVCg0KSwKPiArCUhETUlfSUhfQUhCRE1BQVVEX1NUQVQwX1JFVFJZID0gQklUKDMpLAo+ICsJ SERNSV9JSF9BSEJETUFBVURfU1RBVDBfRE9ORSA9IEJJVCgyKSwKPiArCUhETUlfSUhfQUhCRE1B QVVEX1NUQVQwX0JVRkZGVUxMID0gQklUKDEpLAo+ICsJSERNSV9JSF9BSEJETUFBVURfU1RBVDBf QlVGRkVNUFRZID0gQklUKDApLAo+ICsJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfQUxMID0KPiAr CQlIRE1JX0lIX0FIQkRNQUFVRF9TVEFUMF9FUlJPUiB8Cj4gKwkJSERNSV9JSF9BSEJETUFBVURf U1RBVDBfTE9TVCB8Cj4gKwkJSERNSV9JSF9BSEJETUFBVURfU1RBVDBfUkVUUlkgfAo+ICsJCUhE TUlfSUhfQUhCRE1BQVVEX1NUQVQwX0RPTkUgfAo+ICsJCUhETUlfSUhfQUhCRE1BQVVEX1NUQVQw X0JVRkZGVUxMIHwKPiArCQlIRE1JX0lIX0FIQkRNQUFVRF9TVEFUMF9CVUZGRU1QVFksCj4gKwlI RE1JX0FIQl9ETUFfQ09ORjBfSU5DUjE2ID0gMiA8PCAxLAo+ICsJSERNSV9BSEJfRE1BX0NPTkYw X0lOQ1I4ID0gMSA8PCAxLAo+ICsJSERNSV9BSEJfRE1BX0NPTkYwX0lOQ1I0ID0gMCwKPiArCUhE TUlfQUhCX0RNQV9DT05GMF9CVVJTVF9NT0RFID0gQklUKDApLAo+ICsJSERNSV9BSEJfRE1BX01B U0tfRE9ORSA9IEJJVCg3KSwKPiArCUhETUlfUkVWSVNJT05fSUQgPSAweDAwMDEsCj4gKwlIRE1J X0lIX0FIQkRNQUFVRF9TVEFUMCA9IDB4MDEwOSwKPiArCUhETUlfSUhfTVVURV9BSEJETUFBVURf U1RBVDAgPSAweDAxODksCj4gKwlIRE1JX0FIQl9ETUFfQ09ORjAgPSAweDM2MDAsCj4gKwlIRE1J X0FIQl9ETUFfU1RBUlQgPSAweDM2MDEsCj4gKwlIRE1JX0FIQl9ETUFfU1RPUCA9IDB4MzYwMiwK PiArCUhETUlfQUhCX0RNQV9USFJTTEQgPSAweDM2MDMsCj4gKwlIRE1JX0FIQl9ETUFfU1RSQURE UjAgPSAweDM2MDQsCj4gKwlIRE1JX0FIQl9ETUFfU1RQQUREUjAgPSAweDM2MDgsCj4gKwlIRE1J X0FIQl9ETUFfTUFTSyA9IDB4MzYxNCwKPiArCUhETUlfQUhCX0RNQV9QT0wgPSAweDM2MTUsCj4g KwlIRE1JX0FIQl9ETUFfQ09ORjEgPSAweDM2MTYsCj4gKwlIRE1JX0FIQl9ETUFfQlVGRlBPTCA9 IDB4MzYxYSwKPiArfTsKPiArCj4gK3N0cnVjdCBzbmRfZHdfaGRtaSB7Cj4gKwlzdHJ1Y3Qgc25k X2NhcmQgKmNhcmQ7Cj4gKwlzdHJ1Y3Qgc25kX3BjbSAqcGNtOwo+ICsJc3BpbmxvY2tfdCBsb2Nr Owo+ICsJc3RydWN0IGR3X2hkbWlfYXVkaW9fZGF0YSBkYXRhOwo+ICsJc3RydWN0IHNuZF9wY21f c3Vic3RyZWFtICpzdWJzdHJlYW07Cj4gKwl2b2lkICgqcmVmb3JtYXQpKHN0cnVjdCBzbmRfZHdf aGRtaSAqLCBzaXplX3QsIHNpemVfdCk7Cj4gKwl2b2lkICpidWZfc3JjOwo+ICsJdm9pZCAqYnVm X2RzdDsKPiArCWRtYV9hZGRyX3QgYnVmX2FkZHI7Cj4gKwl1bnNpZ25lZCBidWZfb2Zmc2V0Owo+ ICsJdW5zaWduZWQgYnVmX3BlcmlvZDsKPiArCXVuc2lnbmVkIGJ1Zl9zaXplOwo+ICsJdW5zaWdu ZWQgY2hhbm5lbHM7Cj4gKwl1OCByZXZpc2lvbjsKPiArCXU4IGllY19vZmZzZXQ7Cj4gKwl1OCBj c1sxOTJdWzhdOwo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgZHdfaGRtaV93cml0ZWwodTMyIHZh bCwgdm9pZCBfX2lvbWVtICpwdHIpCj4gK3sKPiArCXdyaXRlYl9yZWxheGVkKHZhbCwgcHRyKTsK PiArCXdyaXRlYl9yZWxheGVkKHZhbCA+PiA4LCBwdHIgKyAxKTsKPiArCXdyaXRlYl9yZWxheGVk KHZhbCA+PiAxNiwgcHRyICsgMik7Cj4gKwl3cml0ZWJfcmVsYXhlZCh2YWwgPj4gMjQsIHB0ciAr IDMpOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBDb252ZXJ0IHRvIGhhcmR3YXJlIGZvcm1hdDogVGhl IHVzZXJzcGFjZSBidWZmZXIgY29udGFpbnMgSUVDOTU4IHNhbXBsZXMsCj4gKyAqIHdpdGggdGhl IFBDVVYgYml0cyBpbiBiaXRzIDMxLi4yOCBhbmQgYXVkaW8gc2FtcGxlcyBpbiBiaXRzIDI3Li40 LiAgV2UKPiArICogbmVlZCB0aGVzZSB0byBiZSBpbiBiaXRzIDI3Li4yNCwgd2l0aCB0aGUgSUVD IEIgYml0IGluIGJpdCAyOCwgYW5kIGF1ZGlvCj4gKyAqIHNhbXBsZXMgaW4gMjMuLjAuCj4gKyAq Cj4gKyAqIERlZmF1bHQgcHJlYW1ibGUgaW4gYml0cyAzLi4wOiA4ID0gYmxvY2sgc3RhcnQsIDQg PSBldmVuIDIgPSBvZGQKPiArICoKPiArICogSWRlYWxseSwgd2UgY291bGQgZG8gd2l0aCBoYXZp bmcgdGhlIGRhdGEgcHJvcGVybHkgZm9ybWF0dGVkIGluIHVzZXJzcGFjZS4KPiArICovCj4gK3N0 YXRpYyB2b2lkIGR3X2hkbWlfcmVmb3JtYXRfaWVjOTU4KHN0cnVjdCBzbmRfZHdfaGRtaSAqZHcs Cj4gKwlzaXplX3Qgb2Zmc2V0LCBzaXplX3QgYnl0ZXMpCj4gK3sKPiArCXUzMiAqc3JjID0gZHct PmJ1Zl9zcmMgKyBvZmZzZXQ7Cj4gKwl1MzIgKmRzdCA9IGR3LT5idWZfZHN0ICsgb2Zmc2V0Owo+ ICsJdTMyICplbmQgPSBkdy0+YnVmX3NyYyArIG9mZnNldCArIGJ5dGVzOwo+ICsKPiArCWRvIHsK PiArCQl1MzIgYiwgc2FtcGxlID0gKnNyYysrOwo+ICsKPiArCQliID0gKHNhbXBsZSAmIDgpIDw8 ICgyOCAtIDMpOwo+ICsKPiArCQlzYW1wbGUgPj49IDQ7Cj4gKwo+ICsJCSpkc3QrKyA9IHNhbXBs ZSB8IGI7Cj4gKwl9IHdoaWxlIChzcmMgPCBlbmQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMyIHBh cml0eSh1MzIgc2FtcGxlKQo+ICt7Cj4gKwlzYW1wbGUgXj0gc2FtcGxlID4+IDE2Owo+ICsJc2Ft cGxlIF49IHNhbXBsZSA+PiA4Owo+ICsJc2FtcGxlIF49IHNhbXBsZSA+PiA0Owo+ICsJc2FtcGxl IF49IHNhbXBsZSA+PiAyOwo+ICsJc2FtcGxlIF49IHNhbXBsZSA+PiAxOwo+ICsJcmV0dXJuIChz YW1wbGUgJiAxKSA8PCAyNzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHdfaGRtaV9yZWZvcm1h dF9zMjQoc3RydWN0IHNuZF9kd19oZG1pICpkdywKPiArCXNpemVfdCBvZmZzZXQsIHNpemVfdCBi eXRlcykKPiArewo+ICsJdTMyICpzcmMgPSBkdy0+YnVmX3NyYyArIG9mZnNldDsKPiArCXUzMiAq ZHN0ID0gZHctPmJ1Zl9kc3QgKyBvZmZzZXQ7Cj4gKwl1MzIgKmVuZCA9IGR3LT5idWZfc3JjICsg b2Zmc2V0ICsgYnl0ZXM7Cj4gKwo+ICsJZG8gewo+ICsJCXVuc2lnbmVkIGk7Cj4gKwkJdTggKmNz Owo+ICsKPiArCQljcyA9IGR3LT5jc1tkdy0+aWVjX29mZnNldCsrXTsKPiArCQlpZiAoZHctPmll Y19vZmZzZXQgPj0gMTkyKQo+ICsJCQlkdy0+aWVjX29mZnNldCA9IDA7Cj4gKwo+ICsJCWkgPSBk dy0+Y2hhbm5lbHM7Cj4gKwkJZG8gewo+ICsJCQl1MzIgc2FtcGxlID0gKnNyYysrOwo+ICsKPiAr CQkJc2FtcGxlICY9IH4weGZmMDAwMDAwOwo+ICsJCQlzYW1wbGUgfD0gKmNzKysgPDwgMjQ7Cj4g KwkJCXNhbXBsZSB8PSBwYXJpdHkoc2FtcGxlICYgfjB4ZjgwMDAwMDApOwo+ICsKPiArCQkJKmRz dCsrID0gc2FtcGxlOwo+ICsJCX0gd2hpbGUgKC0taSk7Cj4gKwl9IHdoaWxlIChzcmMgPCBlbmQp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkd19oZG1pX2NyZWF0ZV9jcyhzdHJ1Y3Qgc25kX2R3 X2hkbWkgKmR3LAo+ICsJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVudGltZSkKPiArewo+ICsJ dTggY3NbNF07Cj4gKwl1bnNpZ25lZCBjaCwgaSwgajsKPiArCj4gKwlzbmRfcGNtX2NyZWF0ZV9p ZWM5NThfY29uc3VtZXIocnVudGltZSwgY3MsIHNpemVvZihjcykpOwo+ICsKPiArCW1lbXNldChk dy0+Y3MsIDAsIHNpemVvZihkdy0+Y3MpKTsKPiArCj4gKwlmb3IgKGNoID0gMDsgY2ggPCA4OyBj aCsrKSB7Cj4gKwkJY3NbMl0gJj0gfklFQzk1OF9BRVMyX0NPTl9DSEFOTkVMOwo+ICsJCWNzWzJd IHw9IChjaCArIDEpIDw8IDQ7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGNz KTsgaSsrKSB7Cj4gKwkJCXVuc2lnbmVkIGMgPSBjc1tpXTsKPiArCj4gKwkJCWZvciAoaiA9IDA7 IGogPCA4OyBqKyssIGMgPj49IDEpCj4gKwkJCQlkdy0+Y3NbaSAqIDggKyBqXVtjaF0gPSAoYyAm IDEpIDw8IDI7Cj4gKwkJfQo+ICsJfQo+ICsJZHctPmNzWzBdWzBdIHw9IEJJVCg0KTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgZHdfaGRtaV9zdGFydF9kbWEoc3RydWN0IHNuZF9kd19oZG1pICpk dykKPiArewo+ICsJdm9pZCBfX2lvbWVtICpiYXNlID0gZHctPmRhdGEuYmFzZTsKPiArCXVuc2ln bmVkIG9mZnNldCA9IGR3LT5idWZfb2Zmc2V0Owo+ICsJdW5zaWduZWQgcGVyaW9kID0gZHctPmJ1 Zl9wZXJpb2Q7Cj4gKwl1MzIgc3RhcnQsIHN0b3A7Cj4gKwo+ICsJZHctPnJlZm9ybWF0KGR3LCBv ZmZzZXQsIHBlcmlvZCk7Cj4gKwo+ICsJLyogQ2xlYXIgYWxsIGlycXMgYmVmb3JlIGVuYWJsaW5n IGlycXMgYW5kIHN0YXJ0aW5nIERNQSAqLwo+ICsJd3JpdGViX3JlbGF4ZWQoSERNSV9JSF9BSEJE TUFBVURfU1RBVDBfQUxMLAo+ICsJCSAgICAgICBiYXNlICsgSERNSV9JSF9BSEJETUFBVURfU1RB VDApOwo+ICsKPiArCXN0YXJ0ID0gZHctPmJ1Zl9hZGRyICsgb2Zmc2V0Owo+ICsJc3RvcCA9IHN0 YXJ0ICsgcGVyaW9kIC0gMTsKPiArCj4gKwkvKiBTZXR1cCB0aGUgaGFyZHdhcmUgc3RhcnQvc3Rv cCBhZGRyZXNzZXMgKi8KPiArCWR3X2hkbWlfd3JpdGVsKHN0YXJ0LCBiYXNlICsgSERNSV9BSEJf RE1BX1NUUkFERFIwKTsKPiArCWR3X2hkbWlfd3JpdGVsKHN0b3AsIGJhc2UgKyBIRE1JX0FIQl9E TUFfU1RQQUREUjApOwo+ICsKPiArCXdyaXRlYl9yZWxheGVkKCh1OCl+SERNSV9BSEJfRE1BX01B U0tfRE9ORSwgYmFzZSArIEhETUlfQUhCX0RNQV9NQVNLKTsKPiArCXdyaXRlYihIRE1JX0FIQl9E TUFfU1RBUlRfU1RBUlQsIGJhc2UgKyBIRE1JX0FIQl9ETUFfU1RBUlQpOwo+ICsKPiArCW9mZnNl dCArPSBwZXJpb2Q7Cj4gKwlpZiAob2Zmc2V0ID49IGR3LT5idWZfc2l6ZSkKPiArCQlvZmZzZXQg PSAwOwo+ICsJZHctPmJ1Zl9vZmZzZXQgPSBvZmZzZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGR3X2hkbWlfc3RvcF9kbWEoc3RydWN0IHNuZF9kd19oZG1pICpkdykKPiArewo+ICsJLyogRGlz YWJsZSBpbnRlcnJ1cHRzIGJlZm9yZSBkaXNhYmxpbmcgRE1BICovCj4gKwl3cml0ZWJfcmVsYXhl ZCh+MCwgZHctPmRhdGEuYmFzZSArIEhETUlfQUhCX0RNQV9NQVNLKTsKPiArCXdyaXRlYl9yZWxh eGVkKEhETUlfQUhCX0RNQV9TVE9QX1NUT1AsIGR3LT5kYXRhLmJhc2UgKyBIRE1JX0FIQl9ETUFf U1RPUCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpcnFyZXR1cm5fdCBzbmRfZHdfaGRtaV9pcnEoaW50 IGlycSwgdm9pZCAqZGF0YSkKPiArewo+ICsJc3RydWN0IHNuZF9kd19oZG1pICpkdyA9IGRhdGE7 Cj4gKwlzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbTsKPiArCXVuc2lnbmVkIHN0 YXQ7Cj4gKwo+ICsJc3RhdCA9IHJlYWRiX3JlbGF4ZWQoZHctPmRhdGEuYmFzZSArIEhETUlfSUhf QUhCRE1BQVVEX1NUQVQwKTsKPiArCWlmICghc3RhdCkKPiArCQlyZXR1cm4gSVJRX05PTkU7Cj4g Kwo+ICsJd3JpdGViX3JlbGF4ZWQoc3RhdCwgZHctPmRhdGEuYmFzZSArIEhETUlfSUhfQUhCRE1B QVVEX1NUQVQwKTsKPiArCj4gKwlzdWJzdHJlYW0gPSBkdy0+c3Vic3RyZWFtOwo+ICsJaWYgKHN0 YXQgJiBIRE1JX0lIX0FIQkRNQUFVRF9TVEFUMF9ET05FICYmIHN1YnN0cmVhbSkgewo+ICsJCXNu ZF9wY21fcGVyaW9kX2VsYXBzZWQoc3Vic3RyZWFtKTsKPiArCj4gKwkJc3Bpbl9sb2NrKCZkdy0+ bG9jayk7Cj4gKwkJaWYgKGR3LT5zdWJzdHJlYW0pCj4gKwkJCWR3X2hkbWlfc3RhcnRfZG1hKGR3 KTsKPiArCQlzcGluX3VubG9jaygmZHctPmxvY2spOwo+ICsJfQo+ICsKPiArCXJldHVybiBJUlFf SEFORExFRDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBzbmRfcGNtX2hhcmR3YXJlIGR3X2hk bWlfaHcgPSB7Cj4gKwkuaW5mbyA9IFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVEIHwKPiArCQlT TkRSVl9QQ01fSU5GT19CTE9DS19UUkFOU0ZFUiB8Cj4gKwkJU05EUlZfUENNX0lORk9fTU1BUCB8 Cj4gKwkJU05EUlZfUENNX0lORk9fTU1BUF9WQUxJRCwKPiArCS5mb3JtYXRzID0gU05EUlZfUENN X0ZNVEJJVF9JRUM5NThfU1VCRlJBTUVfTEUgfAo+ICsJCSAgIFNORFJWX1BDTV9GTVRCSVRfUzI0 X0xFLAo+ICsJLnJhdGVzID0gU05EUlZfUENNX1JBVEVfMzIwMDAgfAo+ICsJCSBTTkRSVl9QQ01f UkFURV80NDEwMCB8Cj4gKwkJIFNORFJWX1BDTV9SQVRFXzQ4MDAwIHwKPiArCQkgU05EUlZfUENN X1JBVEVfODgyMDAgfAo+ICsJCSBTTkRSVl9QQ01fUkFURV85NjAwMCB8Cj4gKwkJIFNORFJWX1BD TV9SQVRFXzE3NjQwMCB8Cj4gKwkJIFNORFJWX1BDTV9SQVRFXzE5MjAwMCwKPiArCS5jaGFubmVs c19taW4gPSAyLAo+ICsJLmNoYW5uZWxzX21heCA9IDgsCj4gKwkuYnVmZmVyX2J5dGVzX21heCA9 IDY0ICogMTAyNCwKPiArCS5wZXJpb2RfYnl0ZXNfbWluID0gMjU2LAo+ICsJLnBlcmlvZF9ieXRl c19tYXggPSA4MTkyLAkvKiBFUlIwMDQzMjM6IG11c3QgbGltaXQgdG8gOGsgKi8KPiArCS5wZXJp b2RzX21pbiA9IDIsCj4gKwkucGVyaW9kc19tYXggPSAxNiwKPiArCS5maWZvX3NpemUgPSAwLAo+ ICt9Owo+ICsKPiArc3RhdGljIGludCBkd19oZG1pX29wZW4oc3RydWN0IHNuZF9wY21fc3Vic3Ry ZWFtICpzdWJzdHJlYW0pCj4gK3sKPiArCXN0cnVjdCBzbmRfcGNtX3J1bnRpbWUgKnJ1bnRpbWUg PSBzdWJzdHJlYW0tPnJ1bnRpbWU7Cj4gKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gc3Vic3Ry ZWFtLT5wcml2YXRlX2RhdGE7Cj4gKwl2b2lkIF9faW9tZW0gKmJhc2UgPSBkdy0+ZGF0YS5iYXNl Owo+ICsJaW50IHJldDsKPiArCj4gKwlydW50aW1lLT5odyA9IGR3X2hkbWlfaHc7Cj4gKwo+ICsJ cmV0ID0gc25kX3BjbV9saW1pdF9od19yYXRlcyhydW50aW1lKTsKPiArCWlmIChyZXQgPCAwKQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gc25kX3BjbV9od19jb25zdHJhaW50X2ludGVn ZXIocnVudGltZSwgU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRFMpOwo+ICsJaWYgKHJldCA8IDAp Cj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwkvKiBDbGVhciBGSUZPICovCj4gKwl3cml0ZWJfcmVs YXhlZChIRE1JX0FIQl9ETUFfQ09ORjBfU1dfRklGT19SU1QsCj4gKwkJICAgICAgIGJhc2UgKyBI RE1JX0FIQl9ETUFfQ09ORjApOwo+ICsKPiArCS8qIENvbmZpZ3VyZSBpbnRlcnJ1cHQgcG9sYXJp dGllcyAqLwo+ICsJd3JpdGViX3JlbGF4ZWQofjAsIGJhc2UgKyBIRE1JX0FIQl9ETUFfUE9MKTsK PiArCXdyaXRlYl9yZWxheGVkKH4wLCBiYXNlICsgSERNSV9BSEJfRE1BX0JVRkZQT0wpOwo+ICsK PiArCS8qIEtlZXAgaW50ZXJydXB0cyBtYXNrZWQsIGFuZCBjbGVhciBhbnkgcGVuZGluZyAqLwo+ ICsJd3JpdGViX3JlbGF4ZWQofjAsIGJhc2UgKyBIRE1JX0FIQl9ETUFfTUFTSyk7Cj4gKwl3cml0 ZWJfcmVsYXhlZCh+MCwgYmFzZSArIEhETUlfSUhfQUhCRE1BQVVEX1NUQVQwKTsKPiArCj4gKwly ZXQgPSByZXF1ZXN0X2lycShkdy0+ZGF0YS5pcnEsIHNuZF9kd19oZG1pX2lycSwgSVJRRl9TSEFS RUQsCj4gKwkJCSAgImR3LWhkbWktYXVkaW8iLCBkdyk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVy biByZXQ7Cj4gKwo+ICsJLyogVW4tbXV0ZSBkb25lIGludGVycnVwdCAqLwo+ICsJd3JpdGViX3Jl bGF4ZWQoSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9BTEwgJgo+ICsJCSAgICAgICB+SERN SV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMF9ET05FLAo+ICsJCSAgICAgICBiYXNlICsgSERNSV9J SF9NVVRFX0FIQkRNQUFVRF9TVEFUMCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgZHdfaGRtaV9jbG9zZShzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVh bSkKPiArewo+ICsJc3RydWN0IHNuZF9kd19oZG1pICpkdyA9IHN1YnN0cmVhbS0+cHJpdmF0ZV9k YXRhOwo+ICsKPiArCS8qIE11dGUgYWxsIGludGVycnVwdHMgKi8KPiArCXdyaXRlYl9yZWxheGVk KEhETUlfSUhfTVVURV9BSEJETUFBVURfU1RBVDBfQUxMLAo+ICsJCSAgICAgICBkdy0+ZGF0YS5i YXNlICsgSERNSV9JSF9NVVRFX0FIQkRNQUFVRF9TVEFUMCk7Cj4gKwo+ICsJZnJlZV9pcnEoZHct PmRhdGEuaXJxLCBkdyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg ZHdfaGRtaV9od19mcmVlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQo+ICt7 Cj4gKwlyZXR1cm4gc25kX3BjbV9saWJfZnJlZV92bWFsbG9jX2J1ZmZlcihzdWJzdHJlYW0pOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGR3X2hkbWlfaHdfcGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1 YnN0cmVhbSAqc3Vic3RyZWFtLAo+ICsJc3RydWN0IHNuZF9wY21faHdfcGFyYW1zICpwYXJhbXMp Cj4gK3sKPiArCXJldHVybiBzbmRfcGNtX2xpYl9hbGxvY192bWFsbG9jX2J1ZmZlcihzdWJzdHJl YW0sCj4gKwkJCQkJCXBhcmFtc19idWZmZXJfYnl0ZXMocGFyYW1zKSk7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgZHdfaGRtaV9wcmVwYXJlKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtKQo+ICt7Cj4gKwlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFt LT5ydW50aW1lOwo+ICsJc3RydWN0IHNuZF9kd19oZG1pICpkdyA9IHN1YnN0cmVhbS0+cHJpdmF0 ZV9kYXRhOwo+ICsJdTggdGhyZXNob2xkLCBjb25mMCwgY29uZjE7Cj4gKwo+ICsJLyogU2V0dXAg YXMgcGVyIDMuMC41IEZTTCA0LjEuMCBCU1AgKi8KPiArCXN3aXRjaCAoZHctPnJldmlzaW9uKSB7 Cj4gKwljYXNlIDB4MGE6Cj4gKwkJY29uZjAgPSBIRE1JX0FIQl9ETUFfQ09ORjBfQlVSU1RfTU9E RSB8Cj4gKwkJCUhETUlfQUhCX0RNQV9DT05GMF9JTkNSNDsKPiArCQlpZiAocnVudGltZS0+Y2hh bm5lbHMgPT0gMikKPiArCQkJdGhyZXNob2xkID0gMTI2Owo+ICsJCWVsc2UKPiArCQkJdGhyZXNo b2xkID0gMTI0Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSAweDFhOgo+ICsJCWNvbmYwID0gSERNSV9B SEJfRE1BX0NPTkYwX0JVUlNUX01PREUgfAo+ICsJCQlIRE1JX0FIQl9ETUFfQ09ORjBfSU5DUjg7 Cj4gKwkJdGhyZXNob2xkID0gMTI4Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQkvKiBO T1RSRUFDSEVEICovCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJZHdfaGRtaV9z ZXRfc2FtcGxlX3JhdGUoZHctPmRhdGEuaGRtaSwgcnVudGltZS0+cmF0ZSk7Cj4gKwo+ICsJLyog TWluaW11bSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGZpZm8uICovCj4gKwlydW50aW1lLT5ody5m aWZvX3NpemUgPSB0aHJlc2hvbGQgKiAzMjsKPiArCj4gKwljb25mMCB8PSBIRE1JX0FIQl9ETUFf Q09ORjBfRU5fSExPQ0s7Cj4gKwljb25mMSA9ICgxIDw8IHJ1bnRpbWUtPmNoYW5uZWxzKSAtIDE7 Cj4gKwo+ICsJd3JpdGViX3JlbGF4ZWQodGhyZXNob2xkLCBkdy0+ZGF0YS5iYXNlICsgSERNSV9B SEJfRE1BX1RIUlNMRCk7Cj4gKwl3cml0ZWJfcmVsYXhlZChjb25mMCwgZHctPmRhdGEuYmFzZSAr IEhETUlfQUhCX0RNQV9DT05GMCk7Cj4gKwl3cml0ZWJfcmVsYXhlZChjb25mMSwgZHctPmRhdGEu YmFzZSArIEhETUlfQUhCX0RNQV9DT05GMSk7Cj4gKwo+ICsJc3dpdGNoIChydW50aW1lLT5mb3Jt YXQpIHsKPiArCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEU6Cj4gKwkJ ZHctPnJlZm9ybWF0ID0gZHdfaGRtaV9yZWZvcm1hdF9pZWM5NTg7Cj4gKwkJYnJlYWs7Cj4gKwlj YXNlIFNORFJWX1BDTV9GT1JNQVRfUzI0X0xFOgo+ICsJCWR3X2hkbWlfY3JlYXRlX2NzKGR3LCBy dW50aW1lKTsKPiArCQlkdy0+cmVmb3JtYXQgPSBkd19oZG1pX3JlZm9ybWF0X3MyNDsKPiArCQli cmVhazsKPiArCX0KPiArCWR3LT5pZWNfb2Zmc2V0ID0gMDsKPiArCWR3LT5jaGFubmVscyA9IHJ1 bnRpbWUtPmNoYW5uZWxzOwo+ICsJZHctPmJ1Zl9zcmMgID0gcnVudGltZS0+ZG1hX2FyZWE7Cj4g Kwlkdy0+YnVmX2RzdCAgPSBzdWJzdHJlYW0tPmRtYV9idWZmZXIuYXJlYTsKPiArCWR3LT5idWZf YWRkciA9IHN1YnN0cmVhbS0+ZG1hX2J1ZmZlci5hZGRyOwo+ICsJZHctPmJ1Zl9wZXJpb2QgPSBz bmRfcGNtX2xpYl9wZXJpb2RfYnl0ZXMoc3Vic3RyZWFtKTsKPiArCWR3LT5idWZfc2l6ZSA9IHNu ZF9wY21fbGliX2J1ZmZlcl9ieXRlcyhzdWJzdHJlYW0pOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgaW50IGR3X2hkbWlfdHJpZ2dlcihzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJl YW0gKnN1YnN0cmVhbSwgaW50IGNtZCkKPiArewo+ICsJc3RydWN0IHNuZF9kd19oZG1pICpkdyA9 IHN1YnN0cmVhbS0+cHJpdmF0ZV9kYXRhOwo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCWlu dCByZXQgPSAwOwo+ICsKPiArCXN3aXRjaCAoY21kKSB7Cj4gKwljYXNlIFNORFJWX1BDTV9UUklH R0VSX1NUQVJUOgo+ICsJCXNwaW5fbG9ja19pcnFzYXZlKCZkdy0+bG9jaywgZmxhZ3MpOwo+ICsJ CWR3LT5idWZfb2Zmc2V0ID0gMDsKPiArCQlkdy0+c3Vic3RyZWFtID0gc3Vic3RyZWFtOwo+ICsJ CWR3X2hkbWlfc3RhcnRfZG1hKGR3KTsKPiArCQlkd19oZG1pX2F1ZGlvX2VuYWJsZShkdy0+ZGF0 YS5oZG1pKTsKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkdy0+bG9jaywgZmxhZ3MpOwo+ ICsJCXN1YnN0cmVhbS0+cnVudGltZS0+ZGVsYXkgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPnBlcmlv ZF9zaXplOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1RPUDoK PiArCQlzcGluX2xvY2tfaXJxc2F2ZSgmZHctPmxvY2ssIGZsYWdzKTsKPiArCQlkdy0+c3Vic3Ry ZWFtID0gTlVMTDsKPiArCQlkd19oZG1pX3N0b3BfZG1hKGR3KTsKPiArCQlkd19oZG1pX2F1ZGlv X2Rpc2FibGUoZHctPmRhdGEuaGRtaSk7Cj4gKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHct PmxvY2ssIGZsYWdzKTsKPiArCQlicmVhazsKPiArCj4gKwlkZWZhdWx0Ogo+ICsJCXJldCA9IC1F SU5WQUw7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiAr c3RhdGljIHNuZF9wY21fdWZyYW1lc190IGR3X2hkbWlfcG9pbnRlcihzdHJ1Y3Qgc25kX3BjbV9z dWJzdHJlYW0gKnN1YnN0cmVhbSkKPiArewo+ICsJc3RydWN0IHNuZF9wY21fcnVudGltZSAqcnVu dGltZSA9IHN1YnN0cmVhbS0+cnVudGltZTsKPiArCXN0cnVjdCBzbmRfZHdfaGRtaSAqZHcgPSBz dWJzdHJlYW0tPnByaXZhdGVfZGF0YTsKPiArCj4gKwkvKgo+ICsJICogV2UgYXJlIHVuYWJsZSB0 byByZXBvcnQgdGhlIGV4YWN0IGhhcmR3YXJlIHBvc2l0aW9uIGFzCj4gKwkgKiByZWFkaW5nIHRo ZSAzMi1iaXQgRE1BIHBvc2l0aW9uIHVzaW5nIDgtYml0IHJlYWRzIGlzIHJhY3kuCj4gKwkgKi8K PiArCXJldHVybiBieXRlc190b19mcmFtZXMocnVudGltZSwgZHctPmJ1Zl9vZmZzZXQpOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgc3RydWN0IHNuZF9wY21fb3BzIHNuZF9kd19oZG1pX29wcyA9IHsKPiAr CS5vcGVuID0gZHdfaGRtaV9vcGVuLAo+ICsJLmNsb3NlID0gZHdfaGRtaV9jbG9zZSwKPiArCS5p b2N0bCA9IHNuZF9wY21fbGliX2lvY3RsLAo+ICsJLmh3X3BhcmFtcyA9IGR3X2hkbWlfaHdfcGFy YW1zLAo+ICsJLmh3X2ZyZWUgPSBkd19oZG1pX2h3X2ZyZWUsCj4gKwkucHJlcGFyZSA9IGR3X2hk bWlfcHJlcGFyZSwKPiArCS50cmlnZ2VyID0gZHdfaGRtaV90cmlnZ2VyLAo+ICsJLnBvaW50ZXIg PSBkd19oZG1pX3BvaW50ZXIsCj4gKwkucGFnZSA9IHNuZF9wY21fbGliX2dldF92bWFsbG9jX3Bh Z2UsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IHNuZF9kd19oZG1pX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBkd19oZG1pX2F1ZGlvX2Rh dGEgKmRhdGEgPSBwZGV2LT5kZXYucGxhdGZvcm1fZGF0YTsKPiArCXN0cnVjdCBkZXZpY2UgKmRl diA9IHBkZXYtPmRldi5wYXJlbnQ7Cj4gKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3Owo+ICsJc3Ry dWN0IHNuZF9jYXJkICpjYXJkOwo+ICsJc3RydWN0IHNuZF9wY20gKnBjbTsKPiArCXVuc2lnbmVk IHJldmlzaW9uOwo+ICsJaW50IHJldDsKPiArCj4gKwl3cml0ZWJfcmVsYXhlZChIRE1JX0lIX01V VEVfQUhCRE1BQVVEX1NUQVQwX0FMTCwKPiArCQkgICAgICAgZGF0YS0+YmFzZSArIEhETUlfSUhf TVVURV9BSEJETUFBVURfU1RBVDApOwo+ICsJcmV2aXNpb24gPSByZWFkYl9yZWxheGVkKGRhdGEt PmJhc2UgKyBIRE1JX1JFVklTSU9OX0lEKTsKPiArCWlmIChyZXZpc2lvbiAhPSAweDBhICYmIHJl dmlzaW9uICE9IDB4MWEpIHsKPiArCQlkZXZfZXJyKGRldiwgImR3LWhkbWktYXVkaW86IHVua25v d24gcmV2aXNpb24gMHglMDJ4XG4iLAo+ICsJCQlyZXZpc2lvbik7Cj4gKwkJcmV0dXJuIC1FTlhJ TzsKPiArCX0KPiArCj4gKwlyZXQgPSBzbmRfY2FyZF9uZXcoZGV2LCBTTkRSVl9ERUZBVUxUX0lE WDEsIFNORFJWX0RFRkFVTFRfU1RSMSwKPiArCQkJICAgICAgVEhJU19NT0RVTEUsIHNpemVvZihz dHJ1Y3Qgc25kX2R3X2hkbWkpLCAmY2FyZCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4g cmV0Owo+ICsKPiArCXN0cmxjcHkoY2FyZC0+ZHJpdmVyLCBEUklWRVJfTkFNRSwgc2l6ZW9mKGNh cmQtPmRyaXZlcikpOwo+ICsJc3RybGNweShjYXJkLT5zaG9ydG5hbWUsICJEVy1IRE1JIiwgc2l6 ZW9mKGNhcmQtPnNob3J0bmFtZSkpOwo+ICsJc25wcmludGYoY2FyZC0+bG9uZ25hbWUsIHNpemVv ZihjYXJkLT5sb25nbmFtZSksCj4gKwkJICIlcyByZXYgMHglMDJ4LCBpcnEgJWQiLCBjYXJkLT5z aG9ydG5hbWUsIHJldmlzaW9uLAo+ICsJCSBkYXRhLT5pcnEpOwo+ICsKPiArCWR3ID0gY2FyZC0+ cHJpdmF0ZV9kYXRhOwo+ICsJZHctPmNhcmQgPSBjYXJkOwo+ICsJZHctPmRhdGEgPSAqZGF0YTsK PiArCWR3LT5yZXZpc2lvbiA9IHJldmlzaW9uOwo+ICsKPiArCXNwaW5fbG9ja19pbml0KCZkdy0+ bG9jayk7Cj4gKwo+ICsJcmV0ID0gc25kX3BjbV9uZXcoY2FyZCwgIkRXIEhETUkiLCAwLCAxLCAw LCAmcGNtKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdvdG8gZXJyOwo+ICsKPiArCWR3LT5wY20g PSBwY207Cj4gKwlwY20tPnByaXZhdGVfZGF0YSA9IGR3Owo+ICsJc3RybGNweShwY20tPm5hbWUs IERSSVZFUl9OQU1FLCBzaXplb2YocGNtLT5uYW1lKSk7Cj4gKwlzbmRfcGNtX3NldF9vcHMocGNt LCBTTkRSVl9QQ01fU1RSRUFNX1BMQVlCQUNLLCAmc25kX2R3X2hkbWlfb3BzKTsKPiArCj4gKwlz bmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlc19mb3JfYWxsKHBjbSwgU05EUlZfRE1BX1RZUEVf REVWLAo+ICsJCQlkZXYsIDY0ICogMTAyNCwgNjQgKiAxMDI0KTsKPiArCj4gKwlyZXQgPSBzbmRf Y2FyZF9yZWdpc3RlcihjYXJkKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdvdG8gZXJyOwo+ICsK PiArCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGR3KTsKPiArCj4gKwlyZXR1cm4gMDsKPiAr Cj4gK2VycjoKPiArCXNuZF9jYXJkX2ZyZWUoY2FyZCk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50IHNuZF9kd19oZG1pX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gcGxhdGZvcm1fZ2V0X2Ry dmRhdGEocGRldik7Cj4gKwo+ICsJc25kX2NhcmRfZnJlZShkdy0+Y2FyZCk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gKyNpZiBkZWZpbmVkKENPTkZJR19QTV9TTEVFUCkgJiYgZGVmaW5l ZChJU19OT1RfQlJPS0VOKQo+ICsvKgo+ICsgKiBUaGlzIGNvZGUgaXMgZmluZSwgYnV0IHJlcXVp cmVzIGltcGxlbWVudGF0aW9uIGluIHRoZSBkd19oZG1pX3RyaWdnZXIoKQo+ICsgKiBtZXRob2Qg d2hpY2ggaXMgY3VycmVudGx5IG1pc3NpbmcgYXMgSSBoYXZlIG5vIHdheSB0byB0ZXN0IHRoaXMu Cj4gKyAqLwo+ICtzdGF0aWMgaW50IHNuZF9kd19oZG1pX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQo+ICt7Cj4gKwlzdHJ1Y3Qgc25kX2R3X2hkbWkgKmR3ID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gKwo+ICsJc25kX3Bvd2VyX2NoYW5nZV9zdGF0ZShkdy0+Y2FyZCwgU05EUlZfQ1RMX1BP V0VSX0QzY29sZCk7Cj4gKwlzbmRfcGNtX3N1c3BlbmRfYWxsKGR3LT5wY20pOwo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IHNuZF9kd19oZG1pX3Jlc3VtZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBzbmRfZHdfaGRtaSAqZHcgPSBkZXZfZ2V0X2Ry dmRhdGEoZGV2KTsKPiArCj4gKwlzbmRfcG93ZXJfY2hhbmdlX3N0YXRlKGR3LT5jYXJkLCBTTkRS Vl9DVExfUE9XRVJfRDApOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgU0lN UExFX0RFVl9QTV9PUFMoc25kX2R3X2hkbWlfcG0sIHNuZF9kd19oZG1pX3N1c3BlbmQsCj4gKwkJ CSBzbmRfZHdfaGRtaV9yZXN1bWUpOwo+ICsjZGVmaW5lIFBNX09QUyAmc25kX2R3X2hkbWlfcG0K PiArI2Vsc2UKPiArI2RlZmluZSBQTV9PUFMgTlVMTAo+ICsjZW5kaWYKPiArCj4gK3N0YXRpYyBz dHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHNuZF9kd19oZG1pX2RyaXZlciA9IHsKPiArCS5wcm9iZQk9 IHNuZF9kd19oZG1pX3Byb2JlLAo+ICsJLnJlbW92ZQk9IHNuZF9kd19oZG1pX3JlbW92ZSwKPiAr CS5kcml2ZXIJPSB7Cj4gKwkJLm5hbWUgPSBEUklWRVJfTkFNRSwKPiArCQkub3duZXIgPSBUSElT X01PRFVMRSwKPiArCQkucG0gPSBQTV9PUFMsCj4gKwl9LAo+ICt9Owo+ICsKPiArbW9kdWxlX3Bs YXRmb3JtX2RyaXZlcihzbmRfZHdfaGRtaV9kcml2ZXIpOwo+ICsKPiArTU9EVUxFX0FVVEhPUigi UnVzc2VsbCBLaW5nIDxybWsra2VybmVsQGFybS5saW51eC5vcmcudWs+Iik7Cj4gK01PRFVMRV9E RVNDUklQVElPTigiU3lub3BzaXMgRGVzaWdud2FyZSBIRE1JIEFIQiBBTFNBIGludGVyZmFjZSIp Owo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Cj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06 IiBEUklWRVJfTkFNRSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdf aGRtaS1hdWRpby5oIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLWF1ZGlvLmgKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMWU4NDAxMThkOTBhCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfaGRtaS1hdWRp by5oCj4gQEAgLTAsMCArMSwxMyBAQAo+ICsjaWZuZGVmIERXX0hETUlfQVVESU9fSAo+ICsjZGVm aW5lIERXX0hETUlfQVVESU9fSAo+ICsKPiArc3RydWN0IGR3X2hkbWk7Cj4gKwo+ICtzdHJ1Y3Qg ZHdfaGRtaV9hdWRpb19kYXRhIHsKPiArCXBoeXNfYWRkcl90IHBoeXM7Cj4gKwl2b2lkIF9faW9t ZW0gKmJhc2U7Cj4gKwlpbnQgaXJxOwo+ICsJc3RydWN0IGR3X2hkbWkgKmhkbWk7Cj4gK307Cj4g Kwo+ICsjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1p LmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuYwo+IGluZGV4IGZiYTI1NjA3ZWY4 OC4uYjY1NDY0Nzg5ZmJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdf aGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmMKPiBAQCAtMjgs NiArMjgsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2JyaWRnZS9kd19oZG1pLmg+Cj4gIAo+ICAjaW5j bHVkZSAiZHdfaGRtaS5oIgo+ICsjaW5jbHVkZSAiZHdfaGRtaS1hdWRpby5oIgo+ICAKPiAgI2Rl ZmluZSBIRE1JX0VESURfTEVOCQk1MTIKPiAgCj4gQEAgLTEwNCw2ICsxMDUsNyBAQCBzdHJ1Y3Qg ZHdfaGRtaSB7Cj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlOwo+ICAKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmF1ZGlvOwo+ ICAJZW51bSBkd19oZG1pX2RldnR5cGUgZGV2X3R5cGU7Cj4gIAlzdHJ1Y3QgZGV2aWNlICpkZXY7 Cj4gIAlzdHJ1Y3QgY2xrICppc2ZyX2NsazsKPiBAQCAtMTczMiw3ICsxNzM0LDkgQEAgaW50IGR3 X2hkbWlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKPiAg ewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRhdGE7Cj4gIAlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wID0gZGV2LT5vZl9ub2RlOwo+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZV9pbmZvIHBk ZXZpbmZvOwo+ICAJc3RydWN0IGRldmljZV9ub2RlICpkZGNfbm9kZTsKPiArCXN0cnVjdCBkd19o ZG1pX2F1ZGlvX2RhdGEgYXVkaW87Cj4gIAlzdHJ1Y3QgZHdfaGRtaSAqaGRtaTsKPiAgCWludCBy ZXQ7Cj4gIAl1MzIgdmFsID0gMTsKPiBAQCAtMTg2MCw2ICsxODY0LDIzIEBAIGludCBkd19oZG1p X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCj4gIAloZG1p X3dyaXRlYihoZG1pLCB+KEhETUlfSUhfUEhZX1NUQVQwX0hQRCB8IEhETUlfSUhfUEhZX1NUQVQw X1JYX1NFTlNFKSwKPiAgCQkgICAgSERNSV9JSF9NVVRFX1BIWV9TVEFUMCk7Cj4gIAo+ICsJbWVt c2V0KCZwZGV2aW5mbywgMCwgc2l6ZW9mKHBkZXZpbmZvKSk7Cj4gKwlwZGV2aW5mby5wYXJlbnQg PSBkZXY7Cj4gKwlwZGV2aW5mby5pZCA9IFBMQVRGT1JNX0RFVklEX0FVVE87Cj4gKwo+ICsJaWYg KGhkbWlfcmVhZGIoaGRtaSwgSERNSV9DT05GSUcxX0lEKSAmIEhETUlfQ09ORklHMV9BSEIpIHsK PiArCQlhdWRpby5waHlzID0gaW9yZXMtPnN0YXJ0Owo+ICsJCWF1ZGlvLmJhc2UgPSBoZG1pLT5y ZWdzOwo+ICsJCWF1ZGlvLmlycSA9IGlycTsKPiArCQlhdWRpby5oZG1pID0gaGRtaTsKPiArCj4g KwkJcGRldmluZm8ubmFtZSA9ICJkdy1oZG1pLWFoYi1hdWRpbyI7Cj4gKwkJcGRldmluZm8uZGF0 YSA9ICZhdWRpbzsKPiArCQlwZGV2aW5mby5zaXplX2RhdGEgPSBzaXplb2YoYXVkaW8pOwo+ICsJ CXBkZXZpbmZvLmRtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKTsKPiArCQloZG1pLT5hdWRpbyA9 IHBsYXRmb3JtX2RldmljZV9yZWdpc3Rlcl9mdWxsKCZwZGV2aW5mbyk7Cj4gKwl9Cj4gKwo+ICAJ ZGV2X3NldF9kcnZkYXRhKGRldiwgaGRtaSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTE4Nzcs NiArMTg5OCw5IEBAIHZvaWQgZHdfaGRtaV91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkd19oZG1pICpo ZG1pID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gIAo+ICsJaWYgKGhkbWktPmF1ZGlvICYmICFJ U19FUlIoaGRtaS0+YXVkaW8pKQo+ICsJCXBsYXRmb3JtX2RldmljZV91bnJlZ2lzdGVyKGhkbWkt PmF1ZGlvKTsKPiArCj4gIAkvKiBEaXNhYmxlIGFsbCBpbnRlcnJ1cHRzICovCj4gIAloZG1pX3dy aXRlYihoZG1pLCB+MCwgSERNSV9JSF9NVVRFX1BIWV9TVEFUMCk7Cj4gIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2R3X2hkbWkuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlk Z2UvZHdfaGRtaS5oCj4gaW5kZXggMTc1ZGJjODlhODI0Li43OGU1NGU4MTMyMTIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9kd19oZG1pLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYnJpZGdlL2R3X2hkbWkuaAo+IEBAIC01NDUsNiArNTQ1LDkgQEAKPiAgI2RlZmluZSBI RE1JX0kyQ01fRlNfU0NMX0xDTlRfMF9BRERSICAgICAgICAgICAgMHg3RTEyCj4gIAo+ICBlbnVt IHsKPiArLyogQ09ORklHMV9JRCBmaWVsZCB2YWx1ZXMgKi8KPiArCUhETUlfQ09ORklHMV9BSEIg PSAweDAxLAo+ICsKPiAgLyogSUhfRkNfSU5UMiBmaWVsZCB2YWx1ZXMgKi8KPiAgCUhETUlfSUhf RkNfSU5UMl9PVkVSRkxPV19NQVNLID0gMHgwMywKPiAgCUhETUlfSUhfRkNfSU5UMl9MT1dfUFJJ T1JJVFlfT1ZFUkZMT1cgPSAweDAyLAo+IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBBbHNhLWRldmVsIG1haWxpbmcgbGlz dAo+IEFsc2EtZGV2ZWxAYWxzYS1wcm9qZWN0Lm9yZwo+IGh0dHA6Ly9tYWlsbWFuLmFsc2EtcHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbHNhLWRldmVsCj4gCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==