From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v5 1/5] drm/i915: setup bridge for HDMI LPE audio driver Date: Tue, 24 Jan 2017 15:25:14 +0200 Message-ID: <87a8ag7fph.fsf@intel.com> References: <20170124225753.9045-1-jerome.anand@intel.com> <20170124225753.9045-2-jerome.anand@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170124225753.9045-2-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 , intel-gfx@lists.freedesktop.org, alsa-devel@alsa-project.org Cc: tiwai@suse.de, broonie@kernel.org, rakesh.a.ughreja@intel.com List-Id: alsa-devel@alsa-project.org T24gV2VkLCAyNSBKYW4gMjAxNywgSmVyb21lIEFuYW5kIDxqZXJvbWUuYW5hbmRAaW50ZWwuY29t PiB3cm90ZToKPiBFbmFibGUgc3VwcG9ydCBmb3IgSERNSSBMUEUgYXVkaW8gbW9kZSBvbiBCYXl0 cmFpbCBhbmQKPiBDaGVycnl0cmFpbCB3aGVuIEhEYXVkaW8gY29udHJvbGxlciBpcyBub3QgZGV0 ZWN0ZWQKPgo+IFNldHVwIG1pbmltdW0gcmVxdWlyZWQgcmVzb3VyY2VzIGR1cmluZyBpOTE1X2Ry aXZlcl9sb2FkOgo+IDEuIENyZWF0ZSBhIHBsYXRmb3JtIGRldmljZSB0byBzaGFyZSBNTUlPL0lS USByZXNvdXJjZXMKPiAyLiBNYWtlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgY2hpbGQgb2YgaTkxNSBk ZXZpY2UgZm9yIHJ1bnRpbWUgUE0uCj4gMy4gQ3JlYXRlIElSUSBjaGlwIHRvIGZvcndhcmQgSERN SSBMUEUgYXVkaW8gaXJxcy4KPgo+IEhETUkgTFBFIGF1ZGlvIGRyaXZlciAoYSBzdGFuZGFsb25l IHNvdW5kIGRyaXZlcikgcHJvYmVzIHRoZQo+IExQRSBhdWRpbyBkZXZpY2UgYW5kIGNyZWF0ZXMg YSBuZXcgc291bmQgY2FyZC4KPgo+IFNpZ25lZC1vZmYtYnk6IFBpZXJyZS1Mb3VpcyBCb3NzYXJ0 IDxwaWVycmUtbG91aXMuYm9zc2FydEBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog SmVyb21lIEFuYW5kIDxqZXJvbWUuYW5hbmRAaW50ZWwuY29tPgoKQWNrZWQtYnk6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cgo+IC0tLQo+ICBEb2N1bWVudGF0aW9uL2dwdS9p OTE1LnJzdCAgICAgICAgICAgICB8ICAgOSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlICAgICAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAg ICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAg fCAgMTEgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgfCAgMTYg KysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgfCAgIDMgKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jICAgICB8ICAyNSArKysKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scGVfYXVkaW8uYyB8IDMyMSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKPiAgaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlvLmggICAgICAgICAgfCAgNDYg KysrKysKPiAgMTAgZmlsZXMgY2hhbmdlZCwgNDM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scGVf YXVkaW8uYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vaW50ZWxfbHBlX2F1ZGlv LmgKPgo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdCBiL0RvY3VtZW50 YXRpb24vZ3B1L2k5MTUucnN0Cj4gaW5kZXggMTA0Mjk2ZC4uYmQ5Yjc2NyAxMDA2NDQKPiAtLS0g YS9Eb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2k5 MTUucnN0Cj4gQEAgLTIyNSw2ICsyMjUsMTUgQEAgRGlzcGxheSBQTExzCj4gIC4uIGtlcm5lbC1k b2M6OiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGxsX21nci5oCj4gICAgIDppbnRlcm5h bDoKPiAgCj4gK2ludGVsIGhkbWkgbHBlIGF1ZGlvIHN1cHBvcnQKPiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+ICsKPiArLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xwZV9hdWRpby5jCj4gKyAgIDpkb2M6ICBMUEUgQXVkaW8gaW50ZWdyYXRpb24gZm9y IEhETUkgb3IgRFAgcGxheWJhY2sKPiArCj4gKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scGVfYXVkaW8uYwo+ICsgICA6aW50ZXJuYWw6Cj4gKwo+ICBNZW1vcnkg TWFuYWdlbWVudCBhbmQgQ29tbWFuZCBTdWJtaXNzaW9uCj4gID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA3NGNh MmU4Li5jNjJhYjQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTI5LDYgKzEyOSw5 IEBAIGk5MTUteSArPSBpbnRlbF9ndnQubwo+ICBpbmNsdWRlICQoc3JjKS9ndnQvTWFrZWZpbGUK PiAgZW5kaWYKPiAgCj4gKyMgTFBFIEF1ZGlvIGZvciBWTFYgYW5kIENIVAo+ICtpOTE1LXkgKz0g aW50ZWxfbHBlX2F1ZGlvLm8KPiArCj4gIG9iai0kKENPTkZJR19EUk1fSTkxNSkgKz0gaTkxNS5v Cj4gIAo+ICBDRkxBR1NfaTkxNV90cmFjZV9wb2ludHMubyA6PSAtSSQoc3JjKQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwo+IGluZGV4IGNhMTY4YjIuLjJlMDU3NGMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKPiBAQCAtMTE0MCw3ICsxMTQwLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2 ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJaWYgKElT X0dFTjUoZGV2X3ByaXYpKQo+ICAJCWludGVsX2dwdV9pcHNfaW5pdChkZXZfcHJpdik7Cj4gIAo+ IC0JaTkxNV9hdWRpb19jb21wb25lbnRfaW5pdChkZXZfcHJpdik7Cj4gKwlpbnRlbF9hdWRpb19p bml0KGRldl9wcml2KTsKPiAgCj4gIAkvKgo+ICAJICogU29tZSBwb3J0cyByZXF1aXJlIGNvcnJl Y3RseSBzZXQtdXAgaHBkIHJlZ2lzdGVycyBmb3IgZGV0ZWN0aW9uIHRvCj4gQEAgLTExNTgsNyAr MTE1OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgICovCj4gIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3Vu cmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gLQlpOTE1 X2F1ZGlvX2NvbXBvbmVudF9jbGVhbnVwKGRldl9wcml2KTsKPiArCWludGVsX2F1ZGlvX2RlaW5p dChkZXZfcHJpdik7Cj4gIAo+ICAJaW50ZWxfZ3B1X2lwc190ZWFyZG93bigpOwo+ICAJYWNwaV92 aWRlb191bnJlZ2lzdGVyKCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMjQ0NjI4 MC4uOGI2OGY5MDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjQ1NCw2ICsy NDU0LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCS8qIFVzZWQgdG8gc2F2ZSB0 aGUgcGlwZS10by1lbmNvZGVyIG1hcHBpbmcgZm9yIGF1ZGlvICovCj4gIAlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqYXZfZW5jX21hcFtJOTE1X01BWF9QSVBFU107Cj4gIAo+ICsJLyogbmVjZXNzYXJ5 IHJlc291cmNlIHNoYXJpbmcgd2l0aCBIRE1JIExQRSBhdWRpbyBkcml2ZXIuICovCj4gKwlzdHJ1 Y3Qgewo+ICsJCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBsYXRkZXY7Cj4gKwkJaW50CWlycTsK PiArCX0gbHBlX2F1ZGlvOwo+ICsKPiAgCS8qCj4gIAkgKiBOT1RFOiBUaGlzIGlzIHRoZSBkcmkx L3VtcyBkdW5nZW9uLCBkb24ndCBhZGQgc3R1ZmYgaGVyZS4gWW91ciBwYXRjaAo+ICAJICogd2ls bCBiZSByZWplY3RlZC4gSW5zdGVhZCBsb29rIGZvciBhIGJldHRlciBwbGFjZS4KPiBAQCAtMzU5 Miw2ICszNTk4LDExIEBAIGV4dGVybiBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaTkxNV9zZXR1cF9zeXNmcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5MTVfdGVhcmRvd25fc3lzZnMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgCj4gKy8qIGludGVsX2xwZV9h dWRpby5jICovCj4gK2ludCAgaW50ZWxfbHBlX2F1ZGlvX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF9scGVfYXVkaW9faXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArCj4gIC8qIGlu dGVsX2kyYy5jICovCj4gIGV4dGVybiBpbnQgaW50ZWxfc2V0dXBfZ21idXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgZXh0ZXJuIHZvaWQgaW50ZWxfdGVhcmRvd25fZ21i dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKPiBpbmRleCA2ZmVmYzM0Li40N2Q2MTMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCj4gQEAgLTE5MjYsNiArMTkyNiwxMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgdmFsbGV5dmll d19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCj4gIAkJICogc2lnbmFsbGVkIGluIGlp ciAqLwo+ICAJCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBl X3N0YXRzKTsKPiAgCj4gKwkJaWYgKGlpciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwK PiArCQkJICAgSTkxNV9MUEVfUElQRV9CX0lOVEVSUlVQVCkpCj4gKwkJCWludGVsX2xwZV9hdWRp b19pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gKwo+ICAJCS8qCj4gIAkJICogVkxWX0lJUiBpcyBz aW5nbGUgYnVmZmVyZWQsIGFuZCByZWZsZWN0cyB0aGUgbGV2ZWwKPiAgCQkgKiBmcm9tIFBJUEVT VEFUL1BPUlRfSE9UUExVR19TVEFULCBoZW5jZSBjbGVhciBpdCBsYXN0Lgo+IEBAIC0yMDA2LDYg KzIwMTAsMTEgQEAgc3RhdGljIGlycXJldHVybl90IGNoZXJyeXZpZXdfaXJxX2hhbmRsZXIoaW50 IGlycSwgdm9pZCAqYXJnKQo+ICAJCSAqIHNpZ25hbGxlZCBpbiBpaXIgKi8KPiAgCQl2YWxsZXl2 aWV3X3BpcGVzdGF0X2lycV9hY2soZGV2X3ByaXYsIGlpciwgcGlwZV9zdGF0cyk7Cj4gIAo+ICsJ CWlmIChpaXIgJiAoSTkxNV9MUEVfUElQRV9BX0lOVEVSUlVQVCB8Cj4gKwkJCSAgIEk5MTVfTFBF X1BJUEVfQl9JTlRFUlJVUFQgfAo+ICsJCQkgICBJOTE1X0xQRV9QSVBFX0NfSU5URVJSVVBUKSkK PiArCQkJaW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKGRldl9wcml2KTsKPiArCj4gIAkJLyoK PiAgCQkgKiBWTFZfSUlSIGlzIHNpbmdsZSBidWZmZXJlZCwgYW5kIHJlZmxlY3RzIHRoZSBsZXZl bAo+ICAJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQsIGhlbmNlIGNsZWFyIGl0 IGxhc3QuCj4gQEAgLTI5NDgsNiArMjk1Nyw3IEBAIHN0YXRpYyB2b2lkIHZsdl9kaXNwbGF5X2ly cV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAl1MzIg cGlwZXN0YXRfbWFzazsKPiAgCXUzMiBlbmFibGVfbWFzazsKPiAgCWVudW0gcGlwZSBwaXBlOwo+ ICsJdTMyIHZhbDsKPiAgCj4gIAlwaXBlc3RhdF9tYXNrID0gUExBTkVfRkxJUF9ET05FX0lOVF9T VEFUVVNfVkxWIHwKPiAgCQkJUElQRV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTOwo+IEBAIC0y OTY0LDYgKzI5NzQsMTIgQEAgc3RhdGljIHZvaWQgdmx2X2Rpc3BsYXlfaXJxX3Bvc3RpbnN0YWxs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlXQVJOX09OKGRldl9w cml2LT5pcnFfbWFzayAhPSB+MCk7Cj4gIAo+ICsJdmFsID0gKEk5MTVfTFBFX1BJUEVfQV9JTlRF UlJVUFQgfAo+ICsJCUk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQgfAo+ICsJCUk5MTVfTFBFX1BJ UEVfQ19JTlRFUlJVUFQpOwo+ICsKPiArCWVuYWJsZV9tYXNrIHw9IHZhbDsKPiArCj4gIAlkZXZf cHJpdi0+aXJxX21hc2sgPSB+ZW5hYmxlX21hc2s7Cj4gIAo+ICAJR0VONV9JUlFfSU5JVChWTFZf LCBkZXZfcHJpdi0+aXJxX21hc2ssIGVuYWJsZV9tYXNrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVn LmgKPiBpbmRleCA3MmY5ZjM2Li42NzJjYjEwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gQEAgLTI0MjgsNiArMjQyOCw5IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAj ZGVmaW5lIEk5MTVfQVNMRV9JTlRFUlJVUFQJCQkJKDE8PDApCj4gICNkZWZpbmUgSTkxNV9CU0Rf VVNFUl9JTlRFUlJVUFQJCQkJKDE8PDI1KQo+ICAKPiArI2RlZmluZSBJOTE1X0hETUlfTFBFX0FV RElPX0JBU0UJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDY1MDAwKQo+ICsjZGVmaW5lIEk5MTVfSERN SV9MUEVfQVVESU9fU0laRQkweDEwMDAKPiArCj4gICNkZWZpbmUgR0VONl9CU0RfUk5DSUQJCQlf TU1JTygweDEyMTk4KQo+ICAKPiAgI2RlZmluZSBHRU43X0ZGX1RIUkVBRF9NT0RFCQlfTU1JTygw eDIwYTApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gaW5kZXggMTZjMjAyNy4uMTAz MTU5ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+IEBAIC05NTYsMyArOTU2 LDI4IEBAIHZvaWQgaTkxNV9hdWRpb19jb21wb25lbnRfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAljb21wb25lbnRfZGVsKGRldl9wcml2LT5kcm0uZGV2LCAm aTkxNV9hdWRpb19jb21wb25lbnRfYmluZF9vcHMpOwo+ICAJZGV2X3ByaXYtPmF1ZGlvX2NvbXBv bmVudF9yZWdpc3RlcmVkID0gZmFsc2U7Cj4gIH0KPiArCj4gKy8qKgo+ICsgKiBpbnRlbF9hdWRp b19pbml0KCkgLSBJbml0aWFsaXplIHRoZSBhdWRpbyBkcml2ZXIgZWl0aGVyIHVzaW5nCj4gKyAq IGNvbXBvbmVudCBmcmFtZXdvcmsgb3IgdXNpbmcgbHBlIGF1ZGlvIGJyaWRnZQo+ICsgKiBAZGV2 X3ByaXY6IHRoZSBpOTE1IGRybSBkZXZpY2UgcHJpdmF0ZSBkYXRhCj4gKyAqCj4gKyAqLwo+ICt2 b2lkIGludGVsX2F1ZGlvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICt7Cj4gKwlpZiAoaW50ZWxfbHBlX2F1ZGlvX2luaXQoZGV2X3ByaXYpIDwgMCkKPiArCQlpOTE1 X2F1ZGlvX2NvbXBvbmVudF9pbml0KGRldl9wcml2KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGlu dGVsX2F1ZGlvX2RlaW5pdCgpIC0gZGVpbml0aWFsaXplIHRoZSBhdWRpbyBkcml2ZXIKPiArICog QGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ICsgKgo+ICsgKi8K PiArdm9pZCBpbnRlbF9hdWRpb19kZWluaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICt7Cj4gKwlpZiAoKGRldl9wcml2KS0+bHBlX2F1ZGlvLnBsYXRkZXYgIT0gTlVMTCkK PiArCQlpbnRlbF9scGVfYXVkaW9fdGVhcmRvd24oZGV2X3ByaXYpOwo+ICsJZWxzZQo+ICsJCWk5 MTVfYXVkaW9fY29tcG9uZW50X2NsZWFudXAoZGV2X3ByaXYpOwo+ICt9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBpbmRleCAwY2VjMDAxLi5mMTYyODgxIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBAQCAtMTIyNSw2ICsxMjI1LDggQEAgdm9pZCBpbnRlbF9hdWRpb19jb2Rl Y19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHZvaWQgaW50ZWxfYXVk aW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rlcik7Cj4gIHZvaWQg aTkxNV9hdWRpb19jb21wb25lbnRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+ICB2b2lkIGk5MTVfYXVkaW9fY29tcG9uZW50X2NsZWFudXAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBpbnRlbF9hdWRpb19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgaW50ZWxfYXVkaW9fZGVpbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+ICAvKiBpbnRlbF9kaXNwbGF5LmMg Ki8KPiAgZW51bSB0cmFuc2NvZGVyIGludGVsX2NydGNfcGNoX3RyYW5zY29kZXIoc3RydWN0IGlu dGVsX2NydGMgKmNydGMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scGVfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRpby5jCj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi43Y2UxYjViCj4gLS0tIC9kZXYv bnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xwZV9hdWRpby5jCj4gQEAg LTAsMCArMSwzMjEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9y YXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAr ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9yczoKPiAr ICogICAgUGllcnJlLUxvdWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4Lmlu dGVsLmNvbT4KPiArICogICAgSmVyb21lIEFuYW5kIDxqZXJvbWUuYW5hbmRAaW50ZWwuY29tPgo+ ICsgKiAgICBiYXNlZCBvbiBWRUQgcGF0Y2hlcwo+ICsgKgo+ICsgKi8KPiArCj4gKy8qKgo+ICsg KiBET0M6IExQRSBBdWRpbyBpbnRlZ3JhdGlvbiBmb3IgSERNSSBvciBEUCBwbGF5YmFjawo+ICsg Kgo+ICsgKiBNb3RpdmF0aW9uOgo+ICsgKiBBdG9tIHBsYXRmb3JtcyAoZS5nLiB2YWxsZXl2aWV3 IGFuZCBjaGVycnlUcmFpbCkgaW50ZWdyYXRlcyBhIERNQS1iYXNlZAo+ICsgKiBpbnRlcmZhY2Ug YXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIHRyYWRpdGlvbmFsIEhEYXVkaW8gcGF0aC4gV2hpbGUg dGhpcwo+ICsgKiBtb2RlIGlzIHVucmVsYXRlZCB0byB0aGUgTFBFIGFrYSBTU1QgYXVkaW8gZW5n aW5lLCB0aGUgZG9jdW1lbnRhdGlvbiByZWZlcnMKPiArICogdG8gdGhpcyBtb2RlIGFzIExQRSBz byB3ZSBrZWVwIHRoaXMgbm90YXRpb24gZm9yIHRoZSBzYWtlIG9mIGNvbnNpc3RlbmN5Lgo+ICsg Kgo+ICsgKiBUaGUgaW50ZXJmYWNlIGlzIGhhbmRsZWQgYnkgYSBzZXBhcmF0ZSBzdGFuZGFsb25l IGRyaXZlciBtYWludGFpbmVkIGluIHRoZQo+ICsgKiBBTFNBIHN1YnN5c3RlbSBmb3Igc2ltcGxp Y2l0eS4gVG8gbWluaW1pemUgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHR3bwo+ICsgKiBz dWJzeXN0ZW1zLCBhIGJyaWRnZSBpcyBzZXR1cCBiZXR3ZWVuIHRoZSBoZG1pLWxwZS1hdWRpbyBh bmQgaTkxNToKPiArICogMS4gQ3JlYXRlIGEgcGxhdGZvcm0gZGV2aWNlIHRvIHNoYXJlIE1NSU8v SVJRIHJlc291cmNlcwo+ICsgKiAyLiBNYWtlIHRoZSBwbGF0Zm9ybSBkZXZpY2UgY2hpbGQgb2Yg aTkxNSBkZXZpY2UgZm9yIHJ1bnRpbWUgUE0uCj4gKyAqIDMuIENyZWF0ZSBJUlEgY2hpcCB0byBm b3J3YXJkIHRoZSBMUEUgYXVkaW8gaXJxcy4KPiArICogdGhlIGhkbWktbHBlLWF1ZGlvIGRyaXZl ciBwcm9iZXMgdGhlIGxwZSBhdWRpbyBkZXZpY2UgYW5kIGNyZWF0ZXMgYSBuZXcKPiArICogc291 bmQgY2FyZAo+ICsgKgo+ICsgKiBUaHJlYXRzOgo+ICsgKiBEdWUgdG8gdGhlIHJlc3RyaWN0aW9u IGluIExpbnV4IHBsYXRmb3JtIGRldmljZSBtb2RlbCwgdXNlciBuZWVkIG1hbnVhbGx5Cj4gKyAq IHVuaW5zdGFsbCB0aGUgaGRtaS1scGUtYXVkaW8gZHJpdmVyIGJlZm9yZSB1bmluc3RhbGxpbmcg aTkxNSBtb2R1bGUsCj4gKyAqIG90aGVyd2lzZSB3ZSBtaWdodCBydW4gaW50byB1c2UtYWZ0ZXIt ZnJlZSBpc3N1ZXMgYWZ0ZXIgaTkxNSByZW1vdmVzIHRoZQo+ICsgKiBwbGF0Zm9ybSBkZXZpY2U6 IGV2ZW4gdGhvdWdoIGhkbWktbHBlLWF1ZGlvIGRyaXZlciBpcyByZWxlYXNlZCwgdGhlIG1vZHVs ZXMKPiArICogaXMgc3RpbGwgaW4gImluc3RhbGxlZCIgc3RhdHVzLgo+ICsgKgo+ICsgKiBJbXBs ZW1lbnRhdGlvbjoKPiArICogVGhlIE1NSU8vUkVHIHBsYXRmb3JtIHJlc291cmNlcyBhcmUgY3Jl YXRlZCBhY2NvcmRpbmcgdG8gdGhlIHJlZ2lzdGVycwo+ICsgKiBzcGVjaWZpY2F0aW9uLgo+ICsg KiBXaGVuIGZvcndhcmRpbmcgTFBFIGF1ZGlvIGlycXMsIHRoZSBmbG93IGNvbnRyb2wgaGFuZGxl ciBzZWxlY3Rpb24gZGVwZW5kcwo+ICsgKiBvbiB0aGUgcGxhdGZvcm0sIGZvciBleGFtcGxlIG9u IHZhbGxleXZpZXcgaGFuZGxlX3NpbXBsZV9pcnEgaXMgZW5vdWdoLgo+ICsgKgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlIDxsaW51eC9hY3BpLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4g KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2ludGVsX2xwZV9hdWRp by5oPgo+ICsKPiArI2RlZmluZSBIQVNfTFBFX0FVRElPKGRldl9wcml2KSAoKGRldl9wcml2KS0+ bHBlX2F1ZGlvLnBsYXRkZXYgIT0gTlVMTCkKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICoKPiArbHBlX2F1ZGlvX3BsYXRkZXZfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiArewo+ICsJaW50IHJldDsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSAmZGV2X3ByaXYtPmRybTsKPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2VfaW5mbyBwaW5m byA9IHt9Owo+ICsJc3RydWN0IHJlc291cmNlICpyc2M7Cj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2 aWNlICpwbGF0ZGV2Owo+ICsJc3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX3BkYXRhICpwZGF0 YTsKPiArCj4gKwlwZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKCpwZGF0YSksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCFwZGF0YSkKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlyc2Mg PSBrY2FsbG9jKDIsIHNpemVvZigqcnNjKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXJzYykgewo+ ICsJCWtmcmVlKHBkYXRhKTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCX0KPiAr Cj4gKwlyc2NbMF0uc3RhcnQgICAgPSByc2NbMF0uZW5kID0gZGV2X3ByaXYtPmxwZV9hdWRpby5p cnE7Cj4gKwlyc2NbMF0uZmxhZ3MgICAgPSBJT1JFU09VUkNFX0lSUTsKPiArCXJzY1swXS5uYW1l ICAgICA9ICJoZG1pLWxwZS1hdWRpby1pcnEiOwo+ICsKPiArCXJzY1sxXS5zdGFydCAgICA9IHBj aV9yZXNvdXJjZV9zdGFydChkZXYtPnBkZXYsIDApICsKPiArCQlJOTE1X0hETUlfTFBFX0FVRElP X0JBU0U7Cj4gKwlyc2NbMV0uZW5kICAgICAgPSBwY2lfcmVzb3VyY2Vfc3RhcnQoZGV2LT5wZGV2 LCAwKSArCj4gKwkJSTkxNV9IRE1JX0xQRV9BVURJT19CQVNFICsgSTkxNV9IRE1JX0xQRV9BVURJ T19TSVpFIC0gMTsKPiArCXJzY1sxXS5mbGFncyAgICA9IElPUkVTT1VSQ0VfTUVNOwo+ICsJcnNj WzFdLm5hbWUgICAgID0gImhkbWktbHBlLWF1ZGlvLW1taW8iOwo+ICsKPiArCXBpbmZvLnBhcmVu dCA9IGRldi0+ZGV2Owo+ICsJcGluZm8ubmFtZSA9ICJoZG1pLWxwZS1hdWRpbyI7Cj4gKwlwaW5m by5pZCA9IC0xOwo+ICsJcGluZm8ucmVzID0gcnNjOwo+ICsJcGluZm8ubnVtX3JlcyA9IDI7Cj4g KwlwaW5mby5kYXRhID0gcGRhdGE7Cj4gKwlwaW5mby5zaXplX2RhdGEgPSBzaXplb2YoKnBkYXRh KTsKPiArCXBpbmZvLmRtYV9tYXNrID0gRE1BX0JJVF9NQVNLKDMyKTsKPiArCj4gKwlzcGluX2xv Y2tfaW5pdCgmcGRhdGEtPmxwZV9hdWRpb19zbG9jayk7Cj4gKwo+ICsJcGxhdGRldiA9IHBsYXRm b3JtX2RldmljZV9yZWdpc3Rlcl9mdWxsKCZwaW5mbyk7Cj4gKwlpZiAoSVNfRVJSKHBsYXRkZXYp KSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihwbGF0ZGV2KTsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0 byBhbGxvY2F0ZSBMUEUgYXVkaW8gcGxhdGZvcm0gZGV2aWNlXG4iKTsKPiArCQlnb3RvIGVycjsK PiArCX0KPiArCj4gKwlrZnJlZShyc2MpOwo+ICsKPiArCXJldHVybiBwbGF0ZGV2Owo+ICsKPiAr ZXJyOgo+ICsJa2ZyZWUocnNjKTsKPiArCWtmcmVlKHBkYXRhKTsKPiArCXJldHVybiBFUlJfUFRS KHJldCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxwZV9hdWRpb19wbGF0ZGV2X2Rlc3Ryb3ko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlwbGF0Zm9ybV9kZXZp Y2VfdW5yZWdpc3RlcihkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpOwo+ICsJa2ZyZWUoZGV2 X3ByaXYtPmxwZV9hdWRpby5wbGF0ZGV2LT5kZXYuZG1hX21hc2spOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBscGVfYXVkaW9faXJxX3VubWFzayhzdHJ1Y3QgaXJxX2RhdGEgKmQpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGQtPmNoaXBfZGF0YTsKPiArCXVu c2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gKwl1MzIgdmFsID0gKEk5MTVfTFBFX1BJUEVfQV9JTlRF UlJVUFQgfAo+ICsJCUk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQpOwo+ICsKPiArCWlmIChJU19D SEVSUllWSUVXKGRldl9wcml2KSkKPiArCQl2YWwgfD0gSTkxNV9MUEVfUElQRV9DX0lOVEVSUlVQ VDsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFmbGFn cyk7Cj4gKwo+ICsJZGV2X3ByaXYtPmlycV9tYXNrICY9IH52YWw7Cj4gKwlJOTE1X1dSSVRFKFZM Vl9JSVIsIHZhbCk7Cj4gKwlJOTE1X1dSSVRFKFZMVl9JSVIsIHZhbCk7Cj4gKwlJOTE1X1dSSVRF KFZMVl9JTVIsIGRldl9wcml2LT5pcnFfbWFzayk7Cj4gKwlQT1NUSU5HX1JFQUQoVkxWX0lNUik7 Cj4gKwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmlycV9sb2NrLCBpcnFm bGFncyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGxwZV9hdWRpb19pcnFfbWFzayhzdHJ1Y3Qg aXJxX2RhdGEgKmQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGQtPmNoaXBfZGF0YTsKPiArCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gKwl1MzIgdmFsID0g KEk5MTVfTFBFX1BJUEVfQV9JTlRFUlJVUFQgfAo+ICsJCUk5MTVfTFBFX1BJUEVfQl9JTlRFUlJV UFQpOwo+ICsKPiArCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQl2YWwgfD0gSTkx NV9MUEVfUElQRV9DX0lOVEVSUlVQVDsKPiArCj4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3By aXYtPmlycV9sb2NrLCBpcnFmbGFncyk7Cj4gKwo+ICsJZGV2X3ByaXYtPmlycV9tYXNrIHw9IHZh bDsKPiArCUk5MTVfV1JJVEUoVkxWX0lNUiwgZGV2X3ByaXYtPmlycV9tYXNrKTsKPiArCUk5MTVf V1JJVEUoVkxWX0lJUiwgdmFsKTsKPiArCUk5MTVfV1JJVEUoVkxWX0lJUiwgdmFsKTsKPiArCVBP U1RJTkdfUkVBRChWTFZfSUlSKTsKPiArCj4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZf cHJpdi0+aXJxX2xvY2ssIGlycWZsYWdzKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpcnFf Y2hpcCBscGVfYXVkaW9faXJxY2hpcCA9IHsKPiArCS5uYW1lID0gImhkbWlfbHBlX2F1ZGlvX2ly cWNoaXAiLAo+ICsJLmlycV9tYXNrID0gbHBlX2F1ZGlvX2lycV9tYXNrLAo+ICsJLmlycV91bm1h c2sgPSBscGVfYXVkaW9faXJxX3VubWFzaywKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbHBlX2F1 ZGlvX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJ aW50IGlycSA9IGRldl9wcml2LT5scGVfYXVkaW8uaXJxOwo+ICsKPiArCVdBUk5fT04oIWludGVs X2lycXNfZW5hYmxlZChkZXZfcHJpdikpOwo+ICsJaXJxX3NldF9jaGlwX2FuZF9oYW5kbGVyX25h bWUoaXJxLAo+ICsJCQkJJmxwZV9hdWRpb19pcnFjaGlwLAo+ICsJCQkJaGFuZGxlX3NpbXBsZV9p cnEsCj4gKwkJCQkiaGRtaV9scGVfYXVkaW9faXJxX2hhbmRsZXIiKTsKPiArCj4gKwlyZXR1cm4g aXJxX3NldF9jaGlwX2RhdGEoaXJxLCBkZXZfcHJpdik7Cj4gK30KPiArCj4gK3N0YXRpYyBib29s IGxwZV9hdWRpb19kZXRlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7 Cj4gKwlpbnQgbHBlX3ByZXNlbnQgPSBmYWxzZTsKPiArCj4gKwlpZiAoSVNfVkFMTEVZVklFVyhk ZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiArCQlzdGF0aWMgY29uc3Qg c3RydWN0IHBjaV9kZXZpY2VfaWQgYXRvbV9oZGF1ZGlvX2lkc1tdID0gewo+ICsJCQkvKiBCYXl0 cmFpbCAqLwo+ICsJCQl7UENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0lOVEVMLCAweDBmMDQpfSwK PiArCQkJLyogQnJhc3dlbGwgKi8KPiArCQkJe1BDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9JTlRF TCwgMHgyMjg0KX0sCj4gKwkJCXt9Cj4gKwkJfTsKPiArCj4gKwkJaWYgKCFwY2lfZGV2X3ByZXNl bnQoYXRvbV9oZGF1ZGlvX2lkcykpIHsKPiArCQkJRFJNX0lORk8oIiVzXG4iLCAiSERhdWRpbyBj b250cm9sbGVyIG5vdCBkZXRlY3RlZCwgdXNpbmcgTFBFIGF1ZGlvIGluc3RlYWRcbiIpOwo+ICsJ CQlscGVfcHJlc2VudCA9IHRydWU7Cj4gKwkJfQo+ICsJfQo+ICsJcmV0dXJuIGxwZV9wcmVzZW50 Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGxwZV9hdWRpb19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJZGV2X3ByaXYtPmxw ZV9hdWRpby5pcnEgPSBpcnFfYWxsb2NfZGVzYygwKTsKPiArCWlmIChkZXZfcHJpdi0+bHBlX2F1 ZGlvLmlycSA8IDApIHsKPiArCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0ZSBJUlEgZGVz YzogJWRcbiIsCj4gKwkJCWRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiArCQlyZXQgPSBkZXZf cHJpdi0+bHBlX2F1ZGlvLmlycTsKPiArCQlnb3RvIGVycjsKPiArCX0KPiArCj4gKwlEUk1fREVC VUcoImlycSA9ICVkXG4iLCBkZXZfcHJpdi0+bHBlX2F1ZGlvLmlycSk7Cj4gKwo+ICsJcmV0ID0g bHBlX2F1ZGlvX2lycV9pbml0KGRldl9wcml2KTsKPiArCj4gKwlpZiAocmV0KSB7Cj4gKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBpcnFjaGlwIGZvciBscGUgYXVkaW86ICVkXG4i LAo+ICsJCQlyZXQpOwo+ICsJCWdvdG8gZXJyX2ZyZWVfaXJxOwo+ICsJfQo+ICsKPiArCWRldl9w cml2LT5scGVfYXVkaW8ucGxhdGRldiA9IGxwZV9hdWRpb19wbGF0ZGV2X2NyZWF0ZShkZXZfcHJp dik7Cj4gKwo+ICsJaWYgKElTX0VSUihkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpKSB7Cj4g KwkJcmV0ID0gUFRSX0VSUihkZXZfcHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYpOwo+ICsJCURSTV9F UlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBscGUgYXVkaW8gcGxhdGZvcm0gZGV2aWNlOiAlZFxuIiwK PiArCQkJcmV0KTsKPiArCQlnb3RvIGVycl9mcmVlX2lycTsKPiArCX0KPiArCj4gKwlyZXR1cm4g MDsKPiArZXJyX2ZyZWVfaXJxOgo+ICsJaXJxX2ZyZWVfZGVzYyhkZXZfcHJpdi0+bHBlX2F1ZGlv LmlycSk7Cj4gK2VycjoKPiArCWRldl9wcml2LT5scGVfYXVkaW8uaXJxID0gLTE7Cj4gKwlkZXZf cHJpdi0+bHBlX2F1ZGlvLnBsYXRkZXYgPSBOVUxMOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsK PiArLyoqCj4gKyAqIGludGVsX2xwZV9hdWRpb19pcnFfaGFuZGxlcigpIC0gZm9yd2FyZHMgdGhl IExQRSBhdWRpbyBpcnEKPiArICogQGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZh dGUgZGF0YQo+ICsgKgo+ICsgKiB0aGUgTFBFIEF1ZGlvIGlycSBpcyBmb3J3YXJkZWQgdG8gdGhl IGlycSBoYW5kbGVyIHJlZ2lzdGVyZWQgYnkgTFBFIGF1ZGlvCj4gKyAqIGRyaXZlci4KPiArICov Cj4gK3ZvaWQgaW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIUhBU19MUEVfQVVE SU8oZGV2X3ByaXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlyZXQgPSBnZW5lcmljX2hhbmRsZV9p cnEoZGV2X3ByaXYtPmxwZV9hdWRpby5pcnEpOwo+ICsJaWYgKHJldCkKPiArCQlEUk1fRVJST1Jf UkFURUxJTUlURUQoImVycm9yIGhhbmRsaW5nIExQRSBhdWRpbyBpcnE6ICVkXG4iLAo+ICsJCQkJ cmV0KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2xwZV9hdWRpb19pbml0KCkgLSBkZXRl Y3QgYW5kIHNldHVwIHRoZSBicmlkZ2UgYmV0d2VlbiBIRE1JIExQRSBBdWRpbwo+ICsgKiBkcml2 ZXIgYW5kIGk5MTUKPiArICogQGRldl9wcml2OiB0aGUgaTkxNSBkcm0gZGV2aWNlIHByaXZhdGUg ZGF0YQo+ICsgKgo+ICsgKiBSZXR1cm46IDAgaWYgc3VjY2Vzc2Z1bC4gbm9uLXplcm8gaWYgZGV0 ZWN0aW9uIG9yCj4gKyAqIGxsb2NhdGlvbi9pbml0aWFsaXphdGlvbiBmYWlscwo+ICsgKi8KPiAr aW50IGludGVsX2xwZV9hdWRpb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiArewo+ICsJaW50IHJldCA9IC1FTk9ERVY7Cj4gKwo+ICsJaWYgKGxwZV9hdWRpb19kZXRl Y3QoZGV2X3ByaXYpKSB7Cj4gKwkJcmV0ID0gbHBlX2F1ZGlvX3NldHVwKGRldl9wcml2KTsKPiAr CQlpZiAocmV0IDwgMCkKPiArCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0dXAgTFBFIEF1ZGlv IGJyaWRnZVxuIik7Cj4gKwl9Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKioKPiArICog aW50ZWxfbHBlX2F1ZGlvX3RlYXJkb3duKCkgLSBkZXN0cm95IHRoZSBicmlkZ2UgYmV0d2VlbiBI RE1JIExQRQo+ICsgKiBhdWRpbyBkcml2ZXIgYW5kIGk5MTUKPiArICogQGRldl9wcml2OiB0aGUg aTkxNSBkcm0gZGV2aWNlIHByaXZhdGUgZGF0YQo+ICsgKgo+ICsgKiByZWxlYXNlIGFsbCB0aGUg cmVzb3VyY2VzIGZvciBMUEUgYXVkaW8gPC0+IGk5MTUgYnJpZGdlLgo+ICsgKi8KPiArdm9pZCBp bnRlbF9scGVfYXVkaW9fdGVhcmRvd24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICt7Cj4gKwlzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2M7Cj4gKwo+ICsJaWYgKCFIQVNfTFBFX0FV RElPKGRldl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJZGVzYyA9IGlycV90b19kZXNjKGRl dl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiArCj4gKwlscGVfYXVkaW9faXJxX21hc2soJmRlc2Mt PmlycV9kYXRhKTsKPiArCj4gKwlscGVfYXVkaW9fcGxhdGRldl9kZXN0cm95KGRldl9wcml2KTsK PiArCj4gKwlpcnFfZnJlZV9kZXNjKGRldl9wcml2LT5scGVfYXVkaW8uaXJxKTsKPiArfQo+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pbnRlbF9scGVfYXVkaW8uaCBiL2luY2x1ZGUvZHJtL2lu dGVsX2xwZV9hdWRpby5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi45 NTJkZTA1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZHJtL2ludGVsX2xwZV9hdWRp by5oCj4gQEAgLTAsMCArMSw0NiBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNp Zm5kZWYgX0lOVEVMX0xQRV9BVURJT19IXwo+ICsjZGVmaW5lIF9JTlRFTF9MUEVfQVVESU9fSF8K PiArCj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3Bpbmxv Y2tfdHlwZXMuaD4KPiArCj4gKyNkZWZpbmUgSERNSV9NQVhfRUxEX0JZVEVTCTEyOAo+ICsKPiAr c3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX2VsZCB7Cj4gKwlpbnQgcG9ydF9pZDsKPiArCXVu c2lnbmVkIGNoYXIgZWxkX2RhdGFbSERNSV9NQVhfRUxEX0JZVEVTXTsKPiArfTsKPiArCj4gK3N0 cnVjdCBpbnRlbF9oZG1pX2xwZV9hdWRpb19wZGF0YSB7Cj4gKwlib29sIG5vdGlmeV9wZW5kaW5n Owo+ICsJaW50IHRtZHNfY2xvY2tfc3BlZWQ7Cj4gKwlib29sIGhkbWlfY29ubmVjdGVkOwo+ICsJ c3RydWN0IGludGVsX2hkbWlfbHBlX2F1ZGlvX2VsZCBlbGQ7Cj4gKwl2b2lkICgqbm90aWZ5X2F1 ZGlvX2xwZSkodm9pZCAqYXVkaW9fcHRyKTsKPiArCXNwaW5sb2NrX3QgbHBlX2F1ZGlvX3Nsb2Nr Owo+ICt9Owo+ICsKPiArI2VuZGlmIC8qIF9JOTE1X0xQRV9BVURJT19IXyAqLwoKLS0gCkphbmkg TmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK