From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kurtz Subject: Re: [PATCH v9 03/14] drm/mediatek: Add DSI sub driver Date: Tue, 2 Feb 2016 21:32:10 +0800 Message-ID: References: <1452611750-16283-1-git-send-email-p.zabel@pengutronix.de> <1452611750-16283-4-git-send-email-p.zabel@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1452611750-16283-4-git-send-email-p.zabel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Philipp Zabel Cc: Mark Rutland , Michael Turquette , dri-devel , Jie Qiu , Cawa Cheng , YT Shen , Yingjoe Chen , "open list:OPEN FIRMWARE AND..." , Jitao Shi , Sasha Hauer , Pawel Moll , Ian Campbell , Rob Herring , "moderated list:ARM/Mediatek SoC support" , Matthias Brugger , Paul Bolle , Stephen Boyd , Tomasz Figa , Kumar Gala List-Id: devicetree@vger.kernel.org SGkgUGhpbGlwcCwKCkkgcmFuIGludG8gc29tZSBpc3N1ZXMgd2hlbiB0cnlpbmcgdG8gYnJpbmcg dXAganVzdCB0aGUgRFNJIHBhdGggb2YKdGhlIE1lZGlhdGVrIERSTSBkcml2ZXIuClRoaW5ncyB3 ZXJlIGZhaWxpbmcgaW4gcHJvYmUvYmluZCB0aGF0IHRyaWdnZXJlZCBzb21lIG9vcHNlcyBpbiB0 aGUKdW5iaW5kL2Vycm9yIHBhdGhzLgpUaGlzIHJlc3VsdGVkIGluIHRoZSBmb2xsb3dpbmcgcmV2 aWV3IG9mIHRoZSBkc2kgcGF0Y2guLi4KCk9uIFR1ZSwgSmFuIDEyLCAyMDE2IGF0IDExOjE1IFBN LCBQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPiB3cm90ZToKPiBGcm9tOiBD SyBIdSA8Y2suaHVAbWVkaWF0ZWsuY29tPgo+Cj4gVGhpcyBwYXRjaCBhZGQgYSBkcm0gZW5jb2Rl ci9jb25uZWN0b3IgZHJpdmVyIGZvciB0aGUgTUlQSSBEU0kgZnVuY3Rpb24KPiBibG9jayBvZiB0 aGUgTWVkaWF0ZWsgZGlzcGxheSBzdWJzeXN0ZW0gYW5kIGEgcGh5IGRyaXZlciBmb3IgdGhlIE1J UEkgVFgKPiBELVBIWSBjb250cm9sIG1vZHVsZS4KPgo+IFNpZ25lZC1vZmYtYnk6IEppdGFvIFNo aSA8aml0YW8uc2hpQG1lZGlhdGVrLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQaGlsaXBwIFphYmVs IDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0 ZWsvS2NvbmZpZyAgICAgICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9NYWtl ZmlsZSAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Ry di5jIHwgICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggfCAg IDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5jICAgICB8IDg0NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL21lZGlhdGVr L210a19kc2kuaCAgICAgfCAgNTggKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf bWlwaV90eC5jIHwgNDg3ICsrKysrKysrKysrKysrKysrKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAx NDAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfbWlwaV90eC5jCj4KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21lZGlhdGVrL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv S2NvbmZpZwo+IGluZGV4IDhkYWQ4OTIuLmI3ZTA0MDQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21lZGlhdGVrL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv S2NvbmZpZwo+IEBAIC0zLDYgKzMsOSBAQCBjb25maWcgRFJNX01FRElBVEVLCj4gICAgICAgICBk ZXBlbmRzIG9uIERSTQo+ICAgICAgICAgZGVwZW5kcyBvbiBBUkNIX01FRElBVEVLIHx8IChBUk0g JiYgQ09NUElMRV9URVNUKQo+ICAgICAgICAgc2VsZWN0IERSTV9LTVNfSEVMUEVSCj4gKyAgICAg ICBzZWxlY3QgRFJNX01JUElfRFNJCj4gKyAgICAgICBzZWxlY3QgRFJNX1BBTkVMCj4gKyAgICAg ICBzZWxlY3QgRFJNX1BBTkVMX1NJTVBMRQo+ICAgICAgICAgc2VsZWN0IElPTU1VX0RNQQo+ICAg ICAgICAgc2VsZWN0IE1US19TTUkKPiAgICAgICAgIGhlbHAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL01h a2VmaWxlCj4gaW5kZXggYzdjYzQxYS4uZTFhNDBmNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv TWFrZWZpbGUKPiBAQCAtNSw2ICs1LDggQEAgbWVkaWF0ZWstZHJtLXkgOj0gbXRrX2Rpc3Bfb3Zs Lm8gXAo+ICAgICAgICAgICAgICAgICAgIG10a19kcm1fZHJ2Lm8gXAo+ICAgICAgICAgICAgICAg ICAgIG10a19kcm1fZmIubyBcCj4gICAgICAgICAgICAgICAgICAgbXRrX2RybV9nZW0ubyBcCj4g LSAgICAgICAgICAgICAgICAgbXRrX2RybV9wbGFuZS5vCj4gKyAgICAgICAgICAgICAgICAgbXRr X2RybV9wbGFuZS5vIFwKPiArICAgICAgICAgICAgICAgICBtdGtfZHNpLm8gXAo+ICsgICAgICAg ICAgICAgICAgIG10a19taXBpX3R4Lm8KPgo+ICBvYmotJChDT05GSUdfRFJNX01FRElBVEVLKSAr PSBtZWRpYXRlay1kcm0ubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsv bXRrX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHJtX2Rydi5jCj4g aW5kZXggOWRiMjJiNC4uMzkyNjdmOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWVk aWF0ZWsvbXRrX2RybV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtf ZHJtX2Rydi5jCj4gQEAgLTUzNiw2ICs1MzYsOCBAQCBzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Ry aXZlciBtdGtfZHJtX3BsYXRmb3JtX2RyaXZlciA9IHsKPiAgc3RhdGljIHN0cnVjdCBwbGF0Zm9y bV9kcml2ZXIgKiBjb25zdCBtdGtfZHJtX2RyaXZlcnNbXSA9IHsKPiAgICAgICAgICZtdGtfZHJt X3BsYXRmb3JtX2RyaXZlciwKPiAgICAgICAgICZtdGtfZGlzcF9vdmxfZHJpdmVyLAo+ICsgICAg ICAgJm10a19kc2lfZHJpdmVyLAo+ICsgICAgICAgJm10a19taXBpX3R4X2RyaXZlciwKPiAgfTsK Pgo+ICBzdGF0aWMgaW50IF9faW5pdCBtdGtfZHJtX2luaXQodm9pZCkKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v bWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+IGluZGV4IDc1ZTFiN2QuLmU4NmMxOWUgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9kcnYuaAo+IEBAIC00OCw1ICs0OCw3IEBAIHN0 cnVjdCBtdGtfZHJtX3ByaXZhdGUgewo+ICB9Owo+Cj4gIGV4dGVybiBzdHJ1Y3QgcGxhdGZvcm1f ZHJpdmVyIG10a19kaXNwX292bF9kcml2ZXI7Cj4gK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIG10a19kc2lfZHJpdmVyOwo+ICtleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtdGtf bWlwaV90eF9kcml2ZXI7Cj4KPiAgI2VuZGlmIC8qIE1US19EUk1fRFJWX0ggKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kc2kuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tZWRpYXRlay9tdGtfZHNpLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAuLjZhYjVhMzEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21lZGlh dGVrL210a19kc2kuYwo+IEBAIC0wLDAgKzEsODQ3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAo YykgMjAxNSBNZWRpYVRlayBJbmMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAy IGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ICsg Kgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxk cm0vZHJtUC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNs dWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX21pcGlfZHNp Lmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KPiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICsjaW5jbHVkZSA8bGludXgvb2Yu aD4KPiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9ncmFwaC5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KPiAr Cj4gKyNpbmNsdWRlICJtdGtfZHNpLmgiCj4gKwo+ICsjZGVmaW5lIERTSV9WSURFT19GSUZPX0RF UFRIICAgKDE5MjAgLyA0KQo+ICsjZGVmaW5lIERTSV9IT1NUX0ZJRk9fREVQVEggICAgNjQKPiAr Cj4gKyNkZWZpbmUgRFNJX1NUQVJUICAgICAgICAgICAgICAweDAwCj4gKwo+ICsjZGVmaW5lIERT SV9DT05fQ1RSTCAgICAgICAgICAgMHgxMAo+ICsjZGVmaW5lIERTSV9SRVNFVCAgICAgICAgICAg ICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBEU0lfRU4gICAgICAgICAgICAgICAgICAgICAg ICAgQklUKDEpCj4gKwo+ICsjZGVmaW5lIERTSV9NT0RFX0NUUkwgICAgICAgICAgMHgxNAo+ICsj ZGVmaW5lIE1PREUgICAgICAgICAgICAgICAgICAgICAgICAgICAoMykKPiArI2RlZmluZSBDTURf TU9ERSAgICAgICAgICAgICAgICAgICAgICAgMAo+ICsjZGVmaW5lIFNZTkNfUFVMU0VfTU9ERSAg ICAgICAgICAgICAgICAgICAgICAgIDEKPiArI2RlZmluZSBTWU5DX0VWRU5UX01PREUgICAgICAg ICAgICAgICAgICAgICAgICAyCj4gKyNkZWZpbmUgQlVSU1RfTU9ERSAgICAgICAgICAgICAgICAg ICAgIDMKPiArI2RlZmluZSBGUk1fTU9ERSAgICAgICAgICAgICAgICAgICAgICAgQklUKDE2KQo+ ICsjZGVmaW5lIE1JWF9NT0RFICAgICAgICAgICAgICAgICAgICAgICBCSVQoMTcpCj4gKwo+ICsj ZGVmaW5lIERTSV9UWFJYX0NUUkwgICAgICAgICAgMHgxOAo+ICsjZGVmaW5lIFZDX05VTSAgICAg ICAgICAgICAgICAgICAgICAgICAoMiA8PCAwKQo+ICsjZGVmaW5lIExBTkVfTlVNICAgICAgICAg ICAgICAgICAgICAgICAoMHhmIDw8IDIpCj4gKyNkZWZpbmUgRElTX0VPVCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQklUKDYpCj4gKyNkZWZpbmUgTlVMTF9FTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQklUKDcpCj4gKyNkZWZpbmUgVEVfRlJFRVJVTiAgICAgICAgICAg ICAgICAgICAgIEJJVCg4KQo+ICsjZGVmaW5lIEVYVF9URV9FTiAgICAgICAgICAgICAgICAgICAg ICBCSVQoOSkKPiArI2RlZmluZSBFWFRfVEVfRURHRSAgICAgICAgICAgICAgICAgICAgQklUKDEw KQo+ICsjZGVmaW5lIE1BWF9SVE5fU0laRSAgICAgICAgICAgICAgICAgICAoMHhmIDw8IDEyKQo+ ICsjZGVmaW5lIEhTVFhfQ0tMUF9FTiAgICAgICAgICAgICAgICAgICBCSVQoMTYpCj4gKwo+ICsj ZGVmaW5lIERTSV9QU0NUUkwgICAgICAgICAgICAgMHgxYwo+ICsjZGVmaW5lIERTSV9QU19XQyAg ICAgICAgICAgICAgICAgICAgICAweDNmZmYKPiArI2RlZmluZSBEU0lfUFNfU0VMICAgICAgICAg ICAgICAgICAgICAgKDMgPDwgMTYpCj4gKyNkZWZpbmUgUEFDS0VEX1BTXzE2QklUX1JHQjU2NSAg ICAgICAgICgwIDw8IDE2KQo+ICsjZGVmaW5lIExPT1NFTFlfUFNfMThCSVRfUkdCNjY2ICAgICAg ICAgICAgICAgICgxIDw8IDE2KQo+ICsjZGVmaW5lIFBBQ0tFRF9QU18xOEJJVF9SR0I2NjYgICAg ICAgICAoMiA8PCAxNikKPiArI2RlZmluZSBQQUNLRURfUFNfMjRCSVRfUkdCODg4ICAgICAgICAg KDMgPDwgMTYpCj4gKwo+ICsjZGVmaW5lIERTSV9WU0FfTkwgICAgICAgICAgICAgMHgyMAo+ICsj ZGVmaW5lIERTSV9WQlBfTkwgICAgICAgICAgICAgMHgyNAo+ICsjZGVmaW5lIERTSV9WRlBfTkwg ICAgICAgICAgICAgMHgyOAo+ICsjZGVmaW5lIERTSV9WQUNUX05MICAgICAgICAgICAgMHgyQwo+ ICsjZGVmaW5lIERTSV9IU0FfV0MgICAgICAgICAgICAgMHg1MAo+ICsjZGVmaW5lIERTSV9IQlBf V0MgICAgICAgICAgICAgMHg1NAo+ICsjZGVmaW5lIERTSV9IRlBfV0MgICAgICAgICAgICAgMHg1 OAo+ICsKPiArI2RlZmluZSBEU0lfSFNUWF9DS0xfV0MgICAgICAgICAgICAgICAgMHg2NAo+ICsK PiArI2RlZmluZSBEU0lfUEhZX0xDQ09OICAgICAgICAgIDB4MTA0Cj4gKyNkZWZpbmUgTENfSFNf VFhfRU4gICAgICAgICAgICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIExDX1VMUE1fRU4gICAg ICAgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBMQ19XQUtFVVBfRU4gICAgICAgICAg ICAgICAgICAgQklUKDIpCj4gKwo+ICsjZGVmaW5lIERTSV9QSFlfTEQwQ09OICAgICAgICAgMHgx MDgKPiArI2RlZmluZSBMRDBfSFNfVFhfRU4gICAgICAgICAgICAgICAgICAgQklUKDApCj4gKyNk ZWZpbmUgTEQwX1VMUE1fRU4gICAgICAgICAgICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lIExE MF9XQUtFVVBfRU4gICAgICAgICAgICAgICAgICBCSVQoMikKPiArCj4gKyNkZWZpbmUgRFNJX1BI WV9USU1FQ09OMCAgICAgICAweDExMAo+ICsjZGVmaW5lIExQWCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMHhmZiA8PCAwKQo+ICsjZGVmaW5lIEhTX1BSUFIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICgweGZmIDw8IDgpCj4gKyNkZWZpbmUgSFNfWkVSTyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKDB4ZmYgPDwgMTYpCj4gKyNkZWZpbmUgSFNfVFJBSUwgICAgICAg ICAgICAgICAgICAgICAgICgweGZmIDw8IDI0KQo+ICsKPiArI2RlZmluZSBEU0lfUEhZX1RJTUVD T04xICAgICAgIDB4MTE0Cj4gKyNkZWZpbmUgVEFfR08gICAgICAgICAgICAgICAgICAgICAgICAg ICgweGZmIDw8IDApCj4gKyNkZWZpbmUgVEFfU1VSRSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDB4ZmYgPDwgOCkKPiArI2RlZmluZSBUQV9HRVQgICAgICAgICAgICAgICAgICAgICAg ICAgKDB4ZmYgPDwgMTYpCj4gKyNkZWZpbmUgREFfSFNfRVhJVCAgICAgICAgICAgICAgICAgICAg ICgweGZmIDw8IDI0KQo+ICsKPiArI2RlZmluZSBEU0lfUEhZX1RJTUVDT04yICAgICAgIDB4MTE4 Cj4gKyNkZWZpbmUgQ09OVF9ERVQgICAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDApCj4g KyNkZWZpbmUgQ0xLX1pFUk8gICAgICAgICAgICAgICAgICAgICAgICgweGZmIDw8IDE2KQo+ICsj ZGVmaW5lIENMS19UUkFJTCAgICAgICAgICAgICAgICAgICAgICAoMHhmZiA8PCAyNCkKPiArCj4g KyNkZWZpbmUgRFNJX1BIWV9USU1FQ09OMyAgICAgICAweDExYwo+ICsjZGVmaW5lIENMS19IU19Q UlBSICAgICAgICAgICAgICAgICAgICAoMHhmZiA8PCAwKQo+ICsjZGVmaW5lIENMS19IU19QT1NU ICAgICAgICAgICAgICAgICAgICAoMHhmZiA8PCA4KQo+ICsjZGVmaW5lIENMS19IU19FWElUICAg ICAgICAgICAgICAgICAgICAoMHhmZiA8PCAxNikKPiArCj4gKyNkZWZpbmUgTlNfVE9fQ1lDTEUo biwgYykgICAgKChuKSAvIGMgKyAoKChuKSAlIGMpID8gMSA6IDApKQoKKCkgYXJvdW5kIGVhY2gg b2YgdGhlIHR3byAnYycgaW4gdGhlIG1hY3JvLgoKPiArCj4gK3N0YXRpYyB2b2lkIG10a19kc2lf bWFzayhzdHJ1Y3QgbXRrX2RzaSAqZHNpLCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywgdTMyIGRhdGEp Cj4gK3sKPiArICAgICAgIHUzMiB0ZW1wID0gcmVhZGwoZHNpLT5yZWdzICsgb2Zmc2V0KTsKPiAr Cj4gKyAgICAgICB3cml0ZWwoKHRlbXAgJiB+bWFzaykgfCAoZGF0YSAmIG1hc2spLCBkc2ktPnJl Z3MgKyBvZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkc2lfcGh5X3RpbWNvbmZpZyhz dHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICB1MzIgdGltY29uMCwgdGltY29uMSwg dGltY29uMiwgdGltY29uMzsKPiArICAgICAgIHVuc2lnbmVkIGludCB1aSwgY3ljbGVfdGltZTsK PiArICAgICAgIHVuc2lnbmVkIGludCBscHg7Cj4gKwo+ICsgICAgICAgdWkgPSAxMDAwIC8gZHNp LT5kYXRhX3JhdGUgKyAweDAxOwo+ICsgICAgICAgY3ljbGVfdGltZSA9IDgwMDAgLyBkc2ktPmRh dGFfcmF0ZSArIDB4MDE7Cj4gKyAgICAgICBscHggPSA1Owo+ICsKPiArICAgICAgIHRpbWNvbjAg PSAoOCA8PCAyNCkgfCAoMHhhIDw8IDE2KSB8ICgweDYgPDwgOCkgfCBscHg7Cj4gKyAgICAgICB0 aW1jb24xID0gKDcgPDwgMjQpIHwgKDUgKiBscHggPDwgMTYpIHwgKCgzICogbHB4KSAvIDIpIDw8 IDggfAo+ICsgICAgICAgICAgICAgICAgICg0ICogbHB4KTsKPiArICAgICAgIHRpbWNvbjIgPSAo KE5TX1RPX0NZQ0xFKDB4NjQsIGN5Y2xlX3RpbWUpICsgMHhhKSA8PCAyNCkgfAo+ICsgICAgICAg ICAgICAgICAgIChOU19UT19DWUNMRSgweDE1MCwgY3ljbGVfdGltZSkgPDwgMTYpOwo+ICsgICAg ICAgdGltY29uMyA9ICgyICogbHB4KSA8PCAxNiB8IE5TX1RPX0NZQ0xFKDgwICsgNTIgKiB1aSwg Y3ljbGVfdGltZSkgPDwgOCB8Cj4gKyAgICAgICAgICAgICAgICAgIE5TX1RPX0NZQ0xFKDB4NDAs IGN5Y2xlX3RpbWUpOwo+ICsKPiArICAgICAgIHdyaXRlbCh0aW1jb24wLCBkc2ktPnJlZ3MgKyBE U0lfUEhZX1RJTUVDT04wKTsKPiArICAgICAgIHdyaXRlbCh0aW1jb24xLCBkc2ktPnJlZ3MgKyBE U0lfUEhZX1RJTUVDT04xKTsKPiArICAgICAgIHdyaXRlbCh0aW1jb24yLCBkc2ktPnJlZ3MgKyBE U0lfUEhZX1RJTUVDT04yKTsKPiArICAgICAgIHdyaXRlbCh0aW1jb24zLCBkc2ktPnJlZ3MgKyBE U0lfUEhZX1RJTUVDT04zKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2RzaV9lbmFibGUo c3RydWN0IG10a19kc2kgKmRzaSkKPiArewo+ICsgICAgICAgbXRrX2RzaV9tYXNrKGRzaSwgRFNJ X0NPTl9DVFJMLCBEU0lfRU4sIERTSV9FTik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19k c2lfZGlzYWJsZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICBtdGtfZHNpX21h c2soZHNpLCBEU0lfQ09OX0NUUkwsIERTSV9FTiwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IG10a19kc2lfcmVzZXQoc3RydWN0IG10a19kc2kgKmRzaSkKPiArewo+ICsgICAgICAgbXRrX2Rz aV9tYXNrKGRzaSwgRFNJX0NPTl9DVFJMLCBEU0lfUkVTRVQsIERTSV9SRVNFVCk7Cj4gKyAgICAg ICBtdGtfZHNpX21hc2soZHNpLCBEU0lfQ09OX0NUUkwsIERTSV9SRVNFVCwgMCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgbXRrX2RzaV9wb3dlcm9uKHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gK3sK PiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IGRzaS0+ZGV2Owo+ICsgICAgICAgaW50IHJl dDsKPiArCj4gKyAgICAgICBpZiAoKytkc2ktPnJlZmNvdW50ICE9IDEpCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgIC8qKgo+ICsgICAgICAgICogZGF0YV9yYXRlID0g KHBpeGVsX2Nsb2NrIC8gMTAwMCkgKiBwaXhlbF9kaXB0aCAqIG1pcGlfcmF0aW87Cj4gKyAgICAg ICAgKiBwaXhlbF9jbG9jayB1bml0IGlzIEtoeiwgZGF0YV9yYXRhIHVuaXQgaXMgTUh6LCBzbyBu ZWVkIGRpdmlkZSAxMDAwLgo+ICsgICAgICAgICogbWlwaV9yYXRpbyBpcyBtaXBpIGNsayBjb2Vm ZmljaWVudCBmb3IgYmFsYW5jZSB0aGUgcGl4ZWwgY2xrIGluIG1pcGkuCj4gKyAgICAgICAgKiB3 ZSBzZXQgbWlwaV9yYXRpbyBpcyAxLjA1Lgo+ICsgICAgICAgICovCj4gKyAgICAgICBkc2ktPmRh dGFfcmF0ZSA9IGRzaS0+dm0ucGl4ZWxjbG9jayAqIDMgKiAyMSAvICgxICogMTAwMCAqIDEwKTsK PiArCj4gKyAgICAgICByZXQgPSBjbGtfc2V0X3JhdGUoZHNpLT5oc19jbGssIGRzaS0+ZGF0YV9y YXRlICogMTAwMDAwMCk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAg ZGV2X2VycihkZXYsICJGYWlsZWQgdG8gc2V0IGRhdGEgcmF0ZTogJWRcbiIsIHJldCk7CgpTaG91 bGQgd2UgZXJyb3Igb3V0IGhlcmU/Cgo+ICsKPiArICAgICAgIHBoeV9wb3dlcl9vbihkc2ktPnBo eSk7Cj4gKwo+ICsgICAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+ZW5naW5lX2Ns ayk7Cj4gKyAgICAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRl diwgIkZhaWxlZCB0byBlbmFibGUgZW5naW5lIGNsb2NrOiAlZFxuIiwgcmV0KTsKPiArICAgICAg ICAgICAgICAgZ290byBlcnJfZW5naW5lX2NsazsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBy ZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5kaWdpdGFsX2Nsayk7Cj4gKyAgICAgICBpZiAo cmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBlbmFi bGUgZGlnaXRhbCBjbG9jazogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJy X2RpZ2l0YWxfY2xrOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG10a19kc2lfZW5hYmxlKGRz aSk7Cj4gKyAgICAgICBtdGtfZHNpX3Jlc2V0KGRzaSk7Cj4gKyAgICAgICBkc2lfcGh5X3RpbWNv bmZpZyhkc2kpOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZXJyX2RpZ2l0YWxfY2xr Ogo+ICsgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+ZW5naW5lX2Nsayk7Cj4gK2Vy cl9lbmdpbmVfY2xrOgo+ICsgICAgICAgZHNpLT5yZWZjb3VudC0tOwo+ICsgICAgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHNpX2Nsa191bHBfbW9kZV9lbnRlcihzdHJ1 Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICBtdGtfZHNpX21hc2soZHNpLCBEU0lfUEhZ X0xDQ09OLCBMQ19IU19UWF9FTiwgMCk7Cj4gKyAgICAgICBtdGtfZHNpX21hc2soZHNpLCBEU0lf UEhZX0xDQ09OLCBMQ19VTFBNX0VOLCAwKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHNpX2Ns a191bHBfbW9kZV9sZWF2ZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICBtdGtf ZHNpX21hc2soZHNpLCBEU0lfUEhZX0xDQ09OLCBMQ19VTFBNX0VOLCAwKTsKPiArICAgICAgIG10 a19kc2lfbWFzayhkc2ksIERTSV9QSFlfTENDT04sIExDX1dBS0VVUF9FTiwgTENfV0FLRVVQX0VO KTsKPiArICAgICAgIG10a19kc2lfbWFzayhkc2ksIERTSV9QSFlfTENDT04sIExDX1dBS0VVUF9F TiwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRzaV9sYW5lMF91bHBfbW9kZV9lbnRlcihz dHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICBtdGtfZHNpX21hc2soZHNpLCBEU0lf UEhZX0xEMENPTiwgTEQwX0hTX1RYX0VOLCAwKTsKPiArICAgICAgIG10a19kc2lfbWFzayhkc2ks IERTSV9QSFlfTEQwQ09OLCBMRDBfVUxQTV9FTiwgMCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGRzaV9sYW5lMF91bHBfbW9kZV9sZWF2ZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAg ICAgICBtdGtfZHNpX21hc2soZHNpLCBEU0lfUEhZX0xEMENPTiwgTEQwX1VMUE1fRU4sIDApOwo+ ICsgICAgICAgbXRrX2RzaV9tYXNrKGRzaSwgRFNJX1BIWV9MRDBDT04sIExEMF9XQUtFVVBfRU4s IExEMF9XQUtFVVBfRU4pOwo+ICsgICAgICAgbXRrX2RzaV9tYXNrKGRzaSwgRFNJX1BIWV9MRDBD T04sIExEMF9XQUtFVVBfRU4sIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBkc2lfY2xrX2hz X3N0YXRlKHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gK3sKPiArICAgICAgIHUzMiB0bXBfcmVnMTsK PiArCj4gKyAgICAgICB0bXBfcmVnMSA9IHJlYWRsKGRzaS0+cmVncyArIERTSV9QSFlfTENDT04p Owo+ICsgICAgICAgcmV0dXJuICgodG1wX3JlZzEgJiBMQ19IU19UWF9FTikgPT0gMSkgPyB0cnVl IDogZmFsc2U7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRzaV9jbGtfaHNfbW9kZShzdHJ1Y3Qg bXRrX2RzaSAqZHNpLCBib29sIGVudGVyKQo+ICt7Cj4gKyAgICAgICBpZiAoZW50ZXIgJiYgIWRz aV9jbGtfaHNfc3RhdGUoZHNpKSkKPiArICAgICAgICAgICAgICAgbXRrX2RzaV9tYXNrKGRzaSwg RFNJX1BIWV9MQ0NPTiwgTENfSFNfVFhfRU4sIExDX0hTX1RYX0VOKTsKPiArICAgICAgIGVsc2Ug aWYgKCFlbnRlciAmJiBkc2lfY2xrX2hzX3N0YXRlKGRzaSkpCj4gKyAgICAgICAgICAgICAgIG10 a19kc2lfbWFzayhkc2ksIERTSV9QSFlfTENDT04sIExDX0hTX1RYX0VOLCAwKTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgZHNpX3NldF9tb2RlKHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gK3sKPiAr ICAgICAgIHUzMiB2aWRfbW9kZSA9IENNRF9NT0RFOwo+ICsKPiArICAgICAgIGlmIChkc2ktPm1v ZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPKSB7Cj4gKyAgICAgICAgICAgICAgIHZpZF9t b2RlID0gU1lOQ19QVUxTRV9NT0RFOwo+ICsKPiArICAgICAgICAgICAgICAgaWYgKChkc2ktPm1v ZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX0JVUlNUKSAmJgo+ICsgICAgICAgICAgICAg ICAgICAgIShkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0Up KQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHZpZF9tb2RlID0gQlVSU1RfTU9ERTsKPiArICAg ICAgIH0KPiArCj4gKyAgICAgICB3cml0ZWwodmlkX21vZGUsIGRzaS0+cmVncyArIERTSV9NT0RF X0NUUkwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBkc2lfcHNfY29udHJvbF92YWN0KHN0cnVj dCBtdGtfZHNpICpkc2kpCj4gK3sKPiArICAgICAgIHN0cnVjdCB2aWRlb21vZGUgKnZtID0gJmRz aS0+dm07Cj4gKyAgICAgICB1MzIgZHNpX2J1Zl9icHAsIHBzX3djOwo+ICsgICAgICAgdTMyIHBz X2JwcF9tb2RlOwo+ICsKPiArICAgICAgIGlmIChkc2ktPmZvcm1hdCA9PSBNSVBJX0RTSV9GTVRf UkdCNTY1KQo+ICsgICAgICAgICAgICAgICBkc2lfYnVmX2JwcCA9IDI7Cj4gKyAgICAgICBlbHNl Cj4gKyAgICAgICAgICAgICAgIGRzaV9idWZfYnBwID0gMzsKPiArCj4gKyAgICAgICBwc193YyA9 IHZtLT5oYWN0aXZlICogZHNpX2J1Zl9icHA7Cj4gKyAgICAgICBwc19icHBfbW9kZSA9IHBzX3dj Owo+ICsKPiArICAgICAgIHN3aXRjaCAoZHNpLT5mb3JtYXQpIHsKPiArICAgICAgIGNhc2UgTUlQ SV9EU0lfRk1UX1JHQjg4ODoKPiArICAgICAgICAgICAgICAgcHNfYnBwX21vZGUgfD0gUEFDS0VE X1BTXzI0QklUX1JHQjg4ODsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNl IE1JUElfRFNJX0ZNVF9SR0I2NjY6Cj4gKyAgICAgICAgICAgICAgIHBzX2JwcF9tb2RlIHw9IFBB Q0tFRF9QU18xOEJJVF9SR0I2NjY7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAg Y2FzZSBNSVBJX0RTSV9GTVRfUkdCNjY2X1BBQ0tFRDoKPiArICAgICAgICAgICAgICAgcHNfYnBw X21vZGUgfD0gTE9PU0VMWV9QU18xOEJJVF9SR0I2NjY7Cj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgY2FzZSBNSVBJX0RTSV9GTVRfUkdCNTY1Ogo+ICsgICAgICAgICAgICAgICBw c19icHBfbW9kZSB8PSBQQUNLRURfUFNfMTZCSVRfUkdCNTY1Owo+ICsgICAgICAgICAgICAgICBi cmVhazsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICB3cml0ZWwodm0tPnZhY3RpdmUsIGRzaS0+ cmVncyArIERTSV9WQUNUX05MKTsKPiArICAgICAgIHdyaXRlbChwc19icHBfbW9kZSwgZHNpLT5y ZWdzICsgRFNJX1BTQ1RSTCk7Cj4gKyAgICAgICB3cml0ZWwocHNfd2MsIGRzaS0+cmVncyArIERT SV9IU1RYX0NLTF9XQyk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRzaV9yeHR4X2NvbnRyb2wo c3RydWN0IG10a19kc2kgKmRzaSkKPiArewo+ICsgICAgICAgdTMyIHRtcF9yZWc7Cj4gKwo+ICsg ICAgICAgc3dpdGNoIChkc2ktPmxhbmVzKSB7Cj4gKyAgICAgICBjYXNlIDE6Cj4gKyAgICAgICAg ICAgICAgIHRtcF9yZWcgPSAxIDw8IDI7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAg ICAgY2FzZSAyOgo+ICsgICAgICAgICAgICAgICB0bXBfcmVnID0gMyA8PCAyOwo+ICsgICAgICAg ICAgICAgICBicmVhazsKPiArICAgICAgIGNhc2UgMzoKPiArICAgICAgICAgICAgICAgdG1wX3Jl ZyA9IDcgPDwgMjsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIDQ6Cj4g KyAgICAgICAgICAgICAgIHRtcF9yZWcgPSAweGYgPDwgMjsKPiArICAgICAgICAgICAgICAgYnJl YWs7Cj4gKyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICB0bXBfcmVnID0gMHhmIDw8 IDI7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHdy aXRlbCh0bXBfcmVnLCBkc2ktPnJlZ3MgKyBEU0lfVFhSWF9DVFJMKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgZHNpX3BzX2NvbnRyb2woc3RydWN0IG10a19kc2kgKmRzaSkKPiArewo+ICsgICAg ICAgdW5zaWduZWQgaW50IGRzaV90bXBfYnVmX2JwcDsKPiArICAgICAgIHUzMiB0bXBfcmVnOwo+ ICsKPiArICAgICAgIHN3aXRjaCAoZHNpLT5mb3JtYXQpIHsKPiArICAgICAgIGNhc2UgTUlQSV9E U0lfRk1UX1JHQjg4ODoKPiArICAgICAgICAgICAgICAgdG1wX3JlZyA9IFBBQ0tFRF9QU18yNEJJ VF9SR0I4ODg7Cj4gKyAgICAgICAgICAgICAgIGRzaV90bXBfYnVmX2JwcCA9IDM7Cj4gKyAgICAg ICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSBNSVBJX0RTSV9GTVRfUkdCNjY2Ogo+ICsg ICAgICAgICAgICAgICB0bXBfcmVnID0gTE9PU0VMWV9QU18xOEJJVF9SR0I2NjY7Cj4gKyAgICAg ICAgICAgICAgIGRzaV90bXBfYnVmX2JwcCA9IDM7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ ICsgICAgICAgY2FzZSBNSVBJX0RTSV9GTVRfUkdCNjY2X1BBQ0tFRDoKPiArICAgICAgICAgICAg ICAgdG1wX3JlZyA9IFBBQ0tFRF9QU18xOEJJVF9SR0I2NjY7Cj4gKyAgICAgICAgICAgICAgIGRz aV90bXBfYnVmX2JwcCA9IDM7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2Fz ZSBNSVBJX0RTSV9GTVRfUkdCNTY1Ogo+ICsgICAgICAgICAgICAgICB0bXBfcmVnID0gUEFDS0VE X1BTXzE2QklUX1JHQjU2NTsKPiArICAgICAgICAgICAgICAgZHNpX3RtcF9idWZfYnBwID0gMjsK PiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAg ICAgICB0bXBfcmVnID0gUEFDS0VEX1BTXzI0QklUX1JHQjg4ODsKPiArICAgICAgICAgICAgICAg ZHNpX3RtcF9idWZfYnBwID0gMzsKPiArICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICB9 Cj4gKwo+ICsgICAgICAgdG1wX3JlZyArPSBkc2ktPnZtLmhhY3RpdmUgKiBkc2lfdG1wX2J1Zl9i cHAgJiBEU0lfUFNfV0M7Cj4gKyAgICAgICB3cml0ZWwodG1wX3JlZywgZHNpLT5yZWdzICsgRFNJ X1BTQ1RSTCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRzaV9jb25maWdfdmRvX3RpbWluZyhz dHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgaG9yaXpvbnRh bF9zeW5jX2FjdGl2ZV9ieXRlOwo+ICsgICAgICAgdW5zaWduZWQgaW50IGhvcml6b250YWxfYmFj a3BvcmNoX2J5dGU7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgaG9yaXpvbnRhbF9mcm9udHBvcmNo X2J5dGU7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZHNpX3RtcF9idWZfYnBwOwo+ICsKPiArICAg ICAgIHN0cnVjdCB2aWRlb21vZGUgKnZtID0gJmRzaS0+dm07Cj4gKwo+ICsgICAgICAgaWYgKGRz aS0+Zm9ybWF0ID09IE1JUElfRFNJX0ZNVF9SR0I1NjUpCj4gKyAgICAgICAgICAgICAgIGRzaV90 bXBfYnVmX2JwcCA9IDI7Cj4gKyAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgIGRzaV90bXBf YnVmX2JwcCA9IDM7Cj4gKwo+ICsgICAgICAgd3JpdGVsKHZtLT52c3luY19sZW4sIGRzaS0+cmVn cyArIERTSV9WU0FfTkwpOwo+ICsgICAgICAgd3JpdGVsKHZtLT52YmFja19wb3JjaCwgZHNpLT5y ZWdzICsgRFNJX1ZCUF9OTCk7Cj4gKyAgICAgICB3cml0ZWwodm0tPnZmcm9udF9wb3JjaCwgZHNp LT5yZWdzICsgRFNJX1ZGUF9OTCk7Cj4gKyAgICAgICB3cml0ZWwodm0tPnZhY3RpdmUsIGRzaS0+ cmVncyArIERTSV9WQUNUX05MKTsKPiArCj4gKyAgICAgICBob3Jpem9udGFsX3N5bmNfYWN0aXZl X2J5dGUgPSAodm0tPmhzeW5jX2xlbiAqIGRzaV90bXBfYnVmX2JwcCAtIDEwKTsKPiArCj4gKyAg ICAgICBpZiAoZHNpLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19TWU5DX1BVTFNF KQo+ICsgICAgICAgICAgICAgICBob3Jpem9udGFsX2JhY2twb3JjaF9ieXRlID0KPiArICAgICAg ICAgICAgICAgICAgICAgICAodm0tPmhiYWNrX3BvcmNoICogZHNpX3RtcF9idWZfYnBwIC0gMTAp Owo+ICsgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICBob3Jpem9udGFsX2JhY2twb3JjaF9i eXRlID0gKCh2bS0+aGJhY2tfcG9yY2ggKyB2bS0+aHN5bmNfbGVuKSAqCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZHNpX3RtcF9idWZfYnBwIC0gMTApOwo+ICsKPiArICAgICAgIGhvcml6b250 YWxfZnJvbnRwb3JjaF9ieXRlID0gKHZtLT5oZnJvbnRfcG9yY2ggKiBkc2lfdG1wX2J1Zl9icHAg LSAxMik7Cj4gKwo+ICsgICAgICAgd3JpdGVsKGhvcml6b250YWxfc3luY19hY3RpdmVfYnl0ZSwg ZHNpLT5yZWdzICsgRFNJX0hTQV9XQyk7Cj4gKyAgICAgICB3cml0ZWwoaG9yaXpvbnRhbF9iYWNr cG9yY2hfYnl0ZSwgZHNpLT5yZWdzICsgRFNJX0hCUF9XQyk7Cj4gKyAgICAgICB3cml0ZWwoaG9y aXpvbnRhbF9mcm9udHBvcmNoX2J5dGUsIGRzaS0+cmVncyArIERTSV9IRlBfV0MpOwo+ICsKPiAr ICAgICAgIGRzaV9wc19jb250cm9sKGRzaSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19k c2lfc3RhcnQoc3RydWN0IG10a19kc2kgKmRzaSkKPiArewo+ICsgICAgICAgd3JpdGVsKDAsIGRz aS0+cmVncyArIERTSV9TVEFSVCk7Cj4gKyAgICAgICB3cml0ZWwoMSwgZHNpLT5yZWdzICsgRFNJ X1NUQVJUKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2RzaV9wb3dlcm9mZihzdHJ1Y3Qg bXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICBpZiAoV0FSTl9PTihkc2ktPnJlZmNvdW50ID09 IDApKQo+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgICAgaWYgKC0tZHNpLT5y ZWZjb3VudCAhPSAwKQo+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgICAgZHNp X2xhbmUwX3VscF9tb2RlX2VudGVyKGRzaSk7Cj4gKyAgICAgICBkc2lfY2xrX3VscF9tb2RlX2Vu dGVyKGRzaSk7Cj4gKwo+ICsgICAgICAgbXRrX2RzaV9kaXNhYmxlKGRzaSk7Cj4gKwo+ICsgICAg ICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+ZW5naW5lX2Nsayk7Cj4gKyAgICAgICBjbGtf ZGlzYWJsZV91bnByZXBhcmUoZHNpLT5kaWdpdGFsX2Nsayk7Cj4gKwo+ICsgICAgICAgcGh5X3Bv d2VyX29mZihkc2ktPnBoeSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19vdXRwdXRfZHNp X2VuYWJsZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsK PiArICAgICAgIGlmIChkc2ktPmVuYWJsZWQpCj4gKyAgICAgICAgICAgICAgIHJldHVybjsKPiAr Cj4gKyAgICAgICBpZiAoZHNpLT5wYW5lbCkgewo+ICsgICAgICAgICAgICAgICBpZiAoZHJtX3Bh bmVsX3ByZXBhcmUoZHNpLT5wYW5lbCkpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICBEUk1f RVJST1IoImZhaWxlZCB0byBzZXR1cCB0aGUgcGFuZWxcbiIpOwo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybjsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAgfQo+ICsKPiArICAg ICAgIHJldCA9IG10a19kc2lfcG93ZXJvbihkc2kpOwo+ICsgICAgICAgaWYgKHJldCA8IDApIHsK PiArICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJmYWlsZWQgdG8gcG93ZXIgb24gZHNpXG4iKTsK PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGRzaV9y eHR4X2NvbnRyb2woZHNpKTsKPiArCj4gKyAgICAgICBkc2lfY2xrX3VscF9tb2RlX2xlYXZlKGRz aSk7Cj4gKyAgICAgICBkc2lfbGFuZTBfdWxwX21vZGVfbGVhdmUoZHNpKTsKPiArICAgICAgIGRz aV9jbGtfaHNfbW9kZShkc2ksIDApOwo+ICsgICAgICAgZHNpX3NldF9tb2RlKGRzaSk7Cj4gKwo+ ICsgICAgICAgZHNpX3BzX2NvbnRyb2xfdmFjdChkc2kpOwo+ICsgICAgICAgZHNpX2NvbmZpZ192 ZG9fdGltaW5nKGRzaSk7Cj4gKwo+ICsgICAgICAgZHNpX3NldF9tb2RlKGRzaSk7Cj4gKyAgICAg ICBkc2lfY2xrX2hzX21vZGUoZHNpLCAxKTsKPiArCj4gKyAgICAgICBtdGtfZHNpX3N0YXJ0KGRz aSk7Cj4gKwo+ICsgICAgICAgZHNpLT5lbmFibGVkID0gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgbXRrX291dHB1dF9kc2lfZGlzYWJsZShzdHJ1Y3QgbXRrX2RzaSAqZHNpKQo+ICt7Cj4g KyAgICAgICBpZiAoIWRzaS0+ZW5hYmxlZCkKPiArICAgICAgICAgICAgICAgcmV0dXJuOwo+ICsK PiArICAgICAgIGlmIChkc2ktPnBhbmVsKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChkcm1fcGFu ZWxfZGlzYWJsZShkc2ktPnBhbmVsKSkgewo+ICsgICAgICAgICAgICAgICAgICAgICAgIERSTV9F UlJPUigiZmFpbGVkIHRvIGRpc2FibGUgdGhlIHBhbmVsXG4iKTsKPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm47Cj4gKyAgICAgICAgICAgICAgIH0KPiArICAgICAgIH0KPiArCj4gKyAg ICAgICBtdGtfZHNpX3Bvd2Vyb2ZmKGRzaSk7CgpUaGUgb3JkZXIgaXMgYSBiaXQgc3VzcGljaW91 cyBoZXJlOyBJIHdvdWxkIGV4cGVjdCB0byBwb3dlcm9mZiBkc2kKYmVmb3JlIHRoZSBwYW5lbCB0 byBtaXJyb3IgdGhlIHR1cm4gb24gb3JkZXIuCgo+ICsKPiArICAgICAgIGRzaS0+ZW5hYmxlZCA9 IGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfZHNpX2VuY29kZXJfZGVzdHJveShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiArICAgICAgIGRybV9lbmNvZGVyX2Ns ZWFudXAoZW5jb2Rlcik7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29k ZXJfZnVuY3MgbXRrX2RzaV9lbmNvZGVyX2Z1bmNzID0gewo+ICsgICAgICAgLmRlc3Ryb3kgPSBt dGtfZHNpX2VuY29kZXJfZGVzdHJveSwKPiArfTsKPiArCj4gK3N0YXRpYyBib29sIG10a19kc2lf ZW5jb2Rlcl9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKPiArewo+ICsgICAgICAgcmV0dXJu IHRydWU7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19kc2lfZW5jb2Rlcl9tb2RlX3NldChz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWQp Cj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNv ZGVyKTsKPiArCj4gKyAgICAgICBkc2ktPnZtLnBpeGVsY2xvY2sgPSBhZGp1c3RlZC0+Y2xvY2s7 Cj4gKyAgICAgICBkc2ktPnZtLmhhY3RpdmUgPSBhZGp1c3RlZC0+aGRpc3BsYXk7Cj4gKyAgICAg ICBkc2ktPnZtLmhiYWNrX3BvcmNoID0gYWRqdXN0ZWQtPmh0b3RhbCAtIGFkanVzdGVkLT5oc3lu Y19lbmQ7Cj4gKyAgICAgICBkc2ktPnZtLmhmcm9udF9wb3JjaCA9IGFkanVzdGVkLT5oc3luY19z dGFydCAtIGFkanVzdGVkLT5oZGlzcGxheTsKPiArICAgICAgIGRzaS0+dm0uaHN5bmNfbGVuID0g YWRqdXN0ZWQtPmhzeW5jX2VuZCAtIGFkanVzdGVkLT5oc3luY19zdGFydDsKPiArCj4gKyAgICAg ICBkc2ktPnZtLnZhY3RpdmUgPSBhZGp1c3RlZC0+dmRpc3BsYXk7Cj4gKyAgICAgICBkc2ktPnZt LnZiYWNrX3BvcmNoID0gYWRqdXN0ZWQtPnZ0b3RhbCAtIGFkanVzdGVkLT52c3luY19lbmQ7Cj4g KyAgICAgICBkc2ktPnZtLnZmcm9udF9wb3JjaCA9IGFkanVzdGVkLT52c3luY19zdGFydCAtIGFk anVzdGVkLT52ZGlzcGxheTsKPiArICAgICAgIGRzaS0+dm0udnN5bmNfbGVuID0gYWRqdXN0ZWQt PnZzeW5jX2VuZCAtIGFkanVzdGVkLT52c3luY19zdGFydDsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgbXRrX2RzaV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2RzaSAqZHNpID0gZW5jb2Rlcl90b19kc2koZW5jb2Rl cik7Cj4gKwo+ICsgICAgICAgbXRrX291dHB1dF9kc2lfZGlzYWJsZShkc2kpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgdm9pZCBtdGtfZHNpX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKPiArewo+ICsgICAgICAgc3RydWN0IG10a19kc2kgKmRzaSA9IGVuY29kZXJfdG9f ZHNpKGVuY29kZXIpOwo+ICsKPiArICAgICAgIG10a19vdXRwdXRfZHNpX2VuYWJsZShkc2kpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBtdGtfZHNpX2Nvbm5l Y3Rvcl9kZXRlY3QoCj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBi b29sIGZvcmNlKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19kc2lfY29ubmVjdG9yX2Rlc3Ryb3koc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsgICAgICAgZHJtX2Nvbm5lY3Rv cl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKyAgICAgICBkcm1fY29ubmVjdG9yX2NsZWFudXAo Y29ubmVjdG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfZHNpX2Nvbm5lY3Rvcl9nZXRf bW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsgICAgICAgc3Ry dWN0IG10a19kc2kgKmRzaSA9IGNvbm5lY3Rvcl90b19kc2koY29ubmVjdG9yKTsKPiArCj4gKyAg ICAgICByZXR1cm4gZHJtX3BhbmVsX2dldF9tb2Rlcyhkc2ktPnBhbmVsKTsKPiArfQo+ICsKPiAr c3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqbXRrX2RzaV9jb25uZWN0b3JfYmVzdF9lbmNvZGVy KAo+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7 Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2RzaSAqZHNpID0gY29ubmVjdG9yX3RvX2RzaShjb25uZWN0 b3IpOwo+ICsKPiArICAgICAgIHJldHVybiAmZHNpLT5lbmNvZGVyOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBtdGtfZHNpX2VuY29kZXJf aGVscGVyX2Z1bmNzID0gewo+ICsgICAgICAgLm1vZGVfZml4dXAgPSBtdGtfZHNpX2VuY29kZXJf bW9kZV9maXh1cCwKPiArICAgICAgIC5tb2RlX3NldCA9IG10a19kc2lfZW5jb2Rlcl9tb2RlX3Nl dCwKPiArICAgICAgIC5kaXNhYmxlID0gbXRrX2RzaV9lbmNvZGVyX2Rpc2FibGUsCj4gKyAgICAg ICAuZW5hYmxlID0gbXRrX2RzaV9lbmNvZGVyX2VuYWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBtdGtfZHNpX2Nvbm5lY3Rvcl9mdW5jcyA9 IHsKPiArICAgICAgIC5kcG1zID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2RwbXMsCj4g KyAgICAgICAuZGV0ZWN0ID0gbXRrX2RzaV9jb25uZWN0b3JfZGV0ZWN0LAo+ICsgICAgICAgLmZp bGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCj4gKyAg ICAgICAuZGVzdHJveSA9IG10a19kc2lfY29ubmVjdG9yX2Rlc3Ryb3ksCj4gKyAgICAgICAucmVz ZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gKyAgICAgICAuYXRvbWlj X2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVf c3RhdGUsCj4gKyAgICAgICAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKPiArICAgICAgIG10a19kc2lfY29ubmVjdG9y X2hlbHBlcl9mdW5jcyA9IHsKPiArICAgICAgIC5nZXRfbW9kZXMgPSBtdGtfZHNpX2Nvbm5lY3Rv cl9nZXRfbW9kZXMsCj4gKyAgICAgICAuYmVzdF9lbmNvZGVyID0gbXRrX2RzaV9jb25uZWN0b3Jf YmVzdF9lbmNvZGVyLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBtdGtfZHJtX2F0dGFjaF9sY21f YnJpZGdlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCgpXaGF0IGlzICJsY20iPwoKPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIGVuY29kZXItPmJyaWRn ZSA9IGJyaWRnZTsKPiArICAgICAgIGJyaWRnZS0+ZW5jb2RlciA9IGVuY29kZXI7Cj4gKyAgICAg ICByZXQgPSBkcm1fYnJpZGdlX2F0dGFjaChlbmNvZGVyLT5kZXYsIGJyaWRnZSk7Cj4gKyAgICAg ICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGF0dGFj aCBicmlkZ2UgdG8gZHJtXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAg ICAgIH0KPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtf ZHNpX2NyZWF0ZV9jb25uX2VuYyhzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLCBzdHJ1Y3QgbXRrX2Rz aSAqZHNpKQo+ICt7Cj4gKyAgICAgICBpbnQgcmV0Owo+ICsKPiArICAgICAgIHJldCA9IGRybV9l bmNvZGVyX2luaXQoZHJtLCAmZHNpLT5lbmNvZGVyLCAmbXRrX2RzaV9lbmNvZGVyX2Z1bmNzLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEUk1fTU9ERV9FTkNPREVSX0RTSSk7Cj4g KyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRv IGVuY29kZXIgaW5pdCB0byBkcm1cbiIpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ ICsgICAgICAgfQo+ICsgICAgICAgZHJtX2VuY29kZXJfaGVscGVyX2FkZCgmZHNpLT5lbmNvZGVy LCAmbXRrX2RzaV9lbmNvZGVyX2hlbHBlcl9mdW5jcyk7Cj4gKwo+ICsgICAgICAgZHNpLT5lbmNv ZGVyLnBvc3NpYmxlX2NydGNzID0gMTsKClRoaXMgZG9lc24ndCBsb29rIHJpZ2h0LiAgSWYgdGhl cmUgYXJlIE4gY3J0Y3MgaW4gdGhlIHN5c3RlbSwgaG93IGNhbgp3ZSBrbm93IHRoaXMgRFNJIHdp bGwgYWx3YXlzIGJlIGFzc29jaWF0ZWQgd2l0aCBDUlRDOjAgPwoKPiArCj4gKyAgICAgICAvKiBQ cmUtZW1wdCBEUCBjb25uZWN0b3IgY3JlYXRpb24gaWYgdGhlcmUncyBhIGJyaWRnZSAqLwo+ICsg ICAgICAgcmV0ID0gbXRrX2RybV9hdHRhY2hfbGNtX2JyaWRnZShkc2ktPmJyaWRnZSwgJmRzaS0+ ZW5jb2Rlcik7Cj4gKyAgICAgICBpZiAoIXJldCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7 CgpUcmlja3kuICBUaGUgIm5vLWVycm9yIiBjYXNlIGhlcmUgaXMgdG8gcmV0dXJuIDAgYW5kIHNr aXAgdGhlIHJlc3Qgb2YKdGhpcyBmdW5jdGlvbj8KSW4gcGFydGljdWxhciwgdGhpcyBza2lwcyBp bml0aWFsaXppbmcgYW5kIHJlZ2lzdGVyaW5nIHRoZSBjb25uZWN0b3IuCgpVbmZvcnR1bmF0ZWx5 LCBhZmFpY3QsIHRoZXJlIGlzIG5vIHdheSB0byB0ZWxsIHRoYXQgd2Ugc2tpcHBlZCB0aGlzLApz byBpbiBtdGtfZHNpX3VuYmluZCgpIHdlIHdpbGwgYWx3YXlzIGNhbGwgbXRrX2RzaV9kZXN0cm95 X2Nvbm5fZW5jKCksCndoaWNoIHdpbGwgdHJ5IHRvIGNsZWFudXAgdGhlIGNvbm5lY3RvciB0aGF0 IHdlIGRpZG4ndCBpbml0LgoKPiArCj4gKyAgICAgICByZXQgPSBkcm1fY29ubmVjdG9yX2luaXQo ZHJtLCAmZHNpLT5jb25uLCAmbXRrX2RzaV9jb25uZWN0b3JfZnVuY3MsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRFJNX01PREVfQ09OTkVDVE9SX0RTSSk7Cj4gKyAgICAgICBp ZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIGNvbm5lY3Rv ciBpbml0IHRvIGRybVxuIik7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyY29ubmVjdG9yOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmZHNpLT5j b25uLCAmbXRrX2RzaV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPiArCj4gKyAgICAgICByZXQg PSBkcm1fY29ubmVjdG9yX3JlZ2lzdGVyKCZkc2ktPmNvbm4pOwo+ICsgICAgICAgaWYgKHJldCkg ewo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byBjb25uZWN0b3IgcmVnaXN0 ZXIgdG8gZHJtXG4iKTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJjb25uZWN0b3JyZWc7Cj4g KyAgICAgICB9Cj4gKwo+ICsgICAgICAgZHNpLT5jb25uLmRwbXMgPSBEUk1fTU9ERV9EUE1TX09G RjsKPiArICAgICAgIGRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmZHNpLT5jb25u LCAmZHNpLT5lbmNvZGVyKTsKPiArCj4gKyAgICAgICBpZiAoZHNpLT5wYW5lbCkgewo+ICsgICAg ICAgICAgICAgICByZXQgPSBkcm1fcGFuZWxfYXR0YWNoKGRzaS0+cGFuZWwsICZkc2ktPmNvbm4p Owo+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg RFJNX0VSUk9SKCJGYWlsZWQgdG8gYXR0YWN0IHBhbmVsIHRvIGRybVxuIik7Cj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgICAgICAgICAgfQo+ICsgICAgICAg fQo+ICsgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICtlcnJjb25uZWN0b3I6Cj4gKyAgICAgICBkcm1f ZW5jb2Rlcl9jbGVhbnVwKCZkc2ktPmVuY29kZXIpOwo+ICtlcnJjb25uZWN0b3JyZWc6Cj4gKyAg ICAgICBkcm1fY29ubmVjdG9yX2NsZWFudXAoJmRzaS0+Y29ubik7CgpUaGUgY2xlYW51cCBvcmRl ciBpcyBiYWNrd2FyZHM7IGNsZWFuIHVwIGVuY29kZXIgbGFzdCB0byBpbnZlcnQgaW5pdCBvcmRl ci4KQWxzbywgdGhlc2UgbGFiZWxzIGFyZSBub3QgdmVyeSByZWFkYWJsZS4KCj4gKwo+ICsgICAg ICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX2RzaV9kZXN0cm95X2Nv bm5fZW5jKHN0cnVjdCBtdGtfZHNpICpkc2kpCj4gK3sKPiArICAgICAgIGRybV9lbmNvZGVyX2Ns ZWFudXAoJmRzaS0+ZW5jb2Rlcik7Cj4gKyAgICAgICBkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIo JmRzaS0+Y29ubik7Cj4gKyAgICAgICBkcm1fY29ubmVjdG9yX2NsZWFudXAoJmRzaS0+Y29ubik7 Cgp1bnJlZ2lzdGVyaW5nIC8gY2xlYW5pbmcgdXAgdGhlIGNvbm5lY3RvciB3aWxsIG9vcHMgaGVy ZSBpZiB3ZSB0b29rCnRoZSAiUHJlLWVtcHQgRFAgY29ubmVjdG9yIGNyZWF0aW9uIGlmIHRoZXJl J3MgYSBicmlkZ2UiIGNhc2UgaW4KbXRrX2RzaV9jcmVhdGVfY29ubl9lbmMgYW5kIG91ciBjb25u ZWN0b3IgaXMgbm90IGluaXRpYWxpemVkLgoKCj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19k c2lfZGRwX3N0YXJ0KHN0cnVjdCBtdGtfZGRwX2NvbXAgKmNvbXApCj4gK3sKPiArICAgICAgIHN0 cnVjdCBtdGtfZHNpICpkc2kgPSBjb250YWluZXJfb2YoY29tcCwgc3RydWN0IG10a19kc2ksIGRk cF9jb21wKTsKPiArCj4gKyAgICAgICBtdGtfZHNpX3Bvd2Vyb24oZHNpKTsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgbXRrX2RzaV9kZHBfc3RvcChzdHJ1Y3QgbXRrX2RkcF9jb21wICpjb21wKQo+ ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2RzaSAqZHNpID0gY29udGFpbmVyX29mKGNvbXAsIHN0 cnVjdCBtdGtfZHNpLCBkZHBfY29tcCk7Cj4gKwo+ICsgICAgICAgbXRrX2RzaV9wb3dlcm9mZihk c2kpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG10a19kZHBfY29tcF9mdW5jcyBt dGtfZHNpX2Z1bmNzID0gewo+ICsgICAgICAgLnN0YXJ0ID0gbXRrX2RzaV9kZHBfc3RhcnQsCj4g KyAgICAgICAuc3RvcCA9IG10a19kc2lfZGRwX3N0b3AsCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50 IG10a19kc2lfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwg dm9pZCAqZGF0YSkKPiArewo+ICsgICAgICAgaW50IHJldDsKPiArICAgICAgIHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0gPSBkYXRhOwo+ICsgICAgICAgc3RydWN0IG10a19kc2kgKmRzaSA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOwo+ICsKPiArICAgICAgIHJldCA9IG10a19kZHBfY29tcF9yZWdpc3Rl cihkcm0sICZkc2ktPmRkcF9jb21wKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvbXBvbmVudCAlczog JWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5vZl9ub2RlLT5mdWxsX25hbWUs IHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgcmV0ID0gbXRrX2RzaV9jcmVhdGVfY29ubl9lbmMoZHJtLCBkc2kpOwo+ICsgICAgICAg aWYgKHJldCkgewo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIkVuY29kZXIgY3JlYXRlIGZh aWxlZCB3aXRoICVkXG4iLCByZXQpOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl91bnJlZ2lz dGVyOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICsKPiArZXJyX3VucmVn aXN0ZXI6Cj4gKyAgICAgICBtdGtfZGRwX2NvbXBfdW5yZWdpc3Rlcihkcm0sICZkc2ktPmRkcF9j b21wKTsKPiArICAgICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIG10a19k c2lfdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpCj4gK3sKPiArICAgICAgIHN0cnVj dCBkcm1fZGV2aWNlICpkcm0gPSBkYXRhOwo+ICsgICAgICAgc3RydWN0IG10a19kc2kgKmRzaTsK PiArCj4gKyAgICAgICBkc2kgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YSh0b19wbGF0Zm9ybV9kZXZp Y2UoZGV2KSk7CgpKdXN0OgogICAgICAgc3RydWN0IG10a19kc2kgKmRzaSA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOwoKPiArICAgICAgIG10a19kc2lfZGVzdHJveV9jb25uX2VuYyhkc2kpOwo+ICsg ICAgICAgbXRrX2RkcF9jb21wX3VucmVnaXN0ZXIoZHJtLCAmZHNpLT5kZHBfY29tcCk7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9uZW50X29wcyBtdGtfZHNpX2NvbXBvbmVu dF9vcHMgPSB7Cj4gKyAgICAgICAuYmluZCA9IG10a19kc2lfYmluZCwKPiArICAgICAgIC51bmJp bmQgPSBtdGtfZHNpX3VuYmluZCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbXRrX2RzaV9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRr X2RzaSAqZHNpOwo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAr ICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcmVtb3RlX25vZGUsICplbmRwb2ludDsKPiArICAg ICAgIHN0cnVjdCByZXNvdXJjZSAqcmVnczsKPiArICAgICAgIGludCBjb21wX2lkOwo+ICsgICAg ICAgaW50IHJldDsKPiArCj4gKyAgICAgICBkc2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo KmRzaSksIEdGUF9LRVJORUwpOwoKQWx3YXlzIE5VTEwgY2hlY2sgYWxsb2NhdGlvbnMuCgo+ICsg ICAgICAgZHNpLT5tb2RlX2ZsYWdzID0gTUlQSV9EU0lfTU9ERV9WSURFTyB8IE1JUElfRFNJX01P REVfVklERU9fU1lOQ19QVUxTRTsKPiArICAgICAgIGRzaS0+Zm9ybWF0ID0gTUlQSV9EU0lfRk1U X1JHQjg4ODsKPiArICAgICAgIGRzaS0+bGFuZXMgPSA0OwoKQXMgZmFyIGFzIEkgY2FuIHRlbGws IHRoZXNlIHRocmVlIGZpZWxkcyBhcmUgY29uc3RhbnRzLCB3aGljaCBtZWFucyBlaXRoZXIgd2UK YXJlIG1pc3NpbmcgY29kZSB0byBwYXJzZSB0aGVzZSBmcm9tIHNvbWV3aGVyZSwgb3Igd2UgY2Fu IGhhcmQgY29kZSB0aGlzCnRocm91Z2hvdXQgYW5kIHNpbXBsaWZ5IHRoZSBkcml2ZXIuCgo+ICsK PiArICAgICAgIGVuZHBvaW50ID0gb2ZfZ3JhcGhfZ2V0X25leHRfZW5kcG9pbnQoZGV2LT5vZl9u b2RlLCBOVUxMKTsKPiArICAgICAgIGlmIChlbmRwb2ludCkgewo+ICsgICAgICAgICAgICAgICBy ZW1vdGVfbm9kZSA9IG9mX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZW5kcG9pbnQpOwo+ ICsgICAgICAgICAgICAgICBpZiAoIXJlbW90ZV9ub2RlKSB7Cj4gKyAgICAgICAgICAgICAgICAg ICAgICAgZGV2X2VycihkZXYsICJObyBwYW5lbCBjb25uZWN0ZWRcbiIpOwo+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsg ICAgICAgICAgICAgICBkc2ktPmJyaWRnZSA9IG9mX2RybV9maW5kX2JyaWRnZShyZW1vdGVfbm9k ZSk7Cj4gKyAgICAgICAgICAgICAgIGRzaS0+cGFuZWwgPSBvZl9kcm1fZmluZF9wYW5lbChyZW1v dGVfbm9kZSk7Cj4gKyAgICAgICAgICAgICAgIG9mX25vZGVfcHV0KHJlbW90ZV9ub2RlKTsKPiAr ICAgICAgICAgICAgICAgaWYgKCFkc2ktPmJyaWRnZSAmJiAhZHNpLT5wYW5lbCkgewo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRldl9pbmZvKGRldiwgIldhaXRpbmcgZm9yIGJyaWRnZSBvciBw YW5lbCBkcml2ZXJcbiIpOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRVBST0JF X0RFRkVSOwo+ICsgICAgICAgICAgICAgICB9Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZHNp LT5lbmdpbmVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImVuZ2luZSIpOwo+ICsgICAgICAgaWYg KElTX0VSUihkc2ktPmVuZ2luZV9jbGspKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9F UlIoZHNpLT5lbmdpbmVfY2xrKTsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWls ZWQgdG8gZ2V0IGVuZ2luZSBjbG9jazogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgZHNpLT5kaWdpdGFsX2NsayA9IGRl dm1fY2xrX2dldChkZXYsICJkaWdpdGFsIik7Cj4gKyAgICAgICBpZiAoSVNfRVJSKGRzaS0+ZGln aXRhbF9jbGspKSB7Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoZHNpLT5kaWdpdGFs X2Nsayk7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGdldCBkaWdp dGFsIGNsb2NrOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAr ICAgICAgIH0KPiArCj4gKyAgICAgICBkc2ktPmhzX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJo cyIpOwo+ICsgICAgICAgaWYgKElTX0VSUihkc2ktPmhzX2NsaykpIHsKPiArICAgICAgICAgICAg ICAgcmV0ID0gUFRSX0VSUihkc2ktPmhzX2Nsayk7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIo ZGV2LCAiRmFpbGVkIHRvIGdldCBocyBjbG9jazogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAg ICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmVncyA9IHBsYXRmb3Jt X2dldF9yZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKyAgICAgICBkc2ktPnJl Z3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2LCByZWdzKTsKPiArICAgICAgIGlmIChJU19F UlIoZHNpLT5yZWdzKSkgewo+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJSKGRzaS0+cmVn cyk7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGlvcmVtYXAgbWVt b3J5OiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAg IH0KPiArCj4gKyAgICAgICBkc2ktPnBoeSA9IGRldm1fcGh5X2dldChkZXYsICJkcGh5Iik7Cj4g KyAgICAgICBpZiAoSVNfRVJSKGRzaS0+cGh5KSkgewo+ICsgICAgICAgICAgICAgICByZXQgPSBQ VFJfRVJSKGRzaS0+cGh5KTsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQg dG8gZ2V0IE1JUEktRFBIWTogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgY29tcF9pZCA9IG10a19kZHBfY29tcF9nZXRf aWQoZGV2LT5vZl9ub2RlLCBNVEtfRFNJKTsKPiArICAgICAgIGlmIChjb21wX2lkIDwgMCkgewo+ ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpZGVudGlmeSBieSBhbGlh czogJWRcbiIsIGNvbXBfaWQpOwo+ICsgICAgICAgICAgICAgICByZXR1cm4gY29tcF9pZDsKPiAr ICAgICAgIH0KPiArCj4gKyAgICAgICByZXQgPSBtdGtfZGRwX2NvbXBfaW5pdChkZXYsIGRldi0+ b2Zfbm9kZSwgJmRzaS0+ZGRwX2NvbXAsIGNvbXBfaWQsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmbXRrX2RzaV9mdW5jcyk7Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgY29tcG9uZW50OiAl ZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiAr Cj4gKyAgICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkc2kpOwo+ICsKPiArICAgICAg IHJldCA9IGNvbXBvbmVudF9hZGQoJnBkZXYtPmRldiwgJm10a19kc2lfY29tcG9uZW50X29wcyk7 Cj4gKyAgICAgICBpZiAocmV0KSB7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFp bGVkIHRvIGFkZCBEU0kgY29tcG9uZW50XG4iKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1F UFJPQkVfREVGRVI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbnQgbXRrX2RzaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiArewo+ICsgICAgICAgc3RydWN0IG10a19kc2kgKmRzaSA9IHBsYXRmb3JtX2dldF9kcnZk YXRhKHBkZXYpOwo+ICsKPiArICAgICAgIG10a19vdXRwdXRfZHNpX2Rpc2FibGUoZHNpKTsKPiAr ICAgICAgIGNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJm10a19kc2lfY29tcG9uZW50X29wcyk7 Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKyNpZmRlZiBDT05GSUdfUE0KPiAr c3RhdGljIGludCBtdGtfZHNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KQo+ICt7Cj4gKyAg ICAgICBzdHJ1Y3QgbXRrX2RzaSAqZHNpOwo+ICsKPiArICAgICAgIGRzaSA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOwo+ICsKPiArICAgICAgIG10a19vdXRwdXRfZHNpX2Rpc2FibGUoZHNpKTsKPiAr ICAgICAgIERSTV9ERUJVR19EUklWRVIoImRzaSBzdXNwZW5kIHN1Y2Nlc3MhXG4iKTsKPiArCj4g KyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfZHNpX3Jlc3VtZShz dHJ1Y3QgZGV2aWNlICpkZXYpCj4gK3sKPiArICAgICAgIHN0cnVjdCBtdGtfZHNpICpkc2k7Cj4g Kwo+ICsgICAgICAgZHNpID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4gKwo+ICsgICAgICAgbXRr X291dHB1dF9kc2lfZW5hYmxlKGRzaSk7Cj4gKyAgICAgICBEUk1fREVCVUdfRFJJVkVSKCJkc2kg cmVzdW1lIHN1Y2Nlc3MhXG4iKTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsjZW5k aWYKPiArc3RhdGljIFNJTVBMRV9ERVZfUE1fT1BTKG10a19kc2lfcG1fb3BzLCBtdGtfZHNpX3N1 c3BlbmQsIG10a19kc2lfcmVzdW1lKTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2 aWNlX2lkIG10a19kc2lfb2ZfbWF0Y2hbXSA9IHsKPiArICAgICAgIHsgLmNvbXBhdGlibGUgPSAi bWVkaWF0ZWssbXQ4MTczLWRzaSIgfSwKPiArICAgICAgIHsgfSwKPiArfTsKPiArCj4gK3N0cnVj dCBwbGF0Zm9ybV9kcml2ZXIgbXRrX2RzaV9kcml2ZXIgPSB7Cj4gKyAgICAgICAucHJvYmUgPSBt dGtfZHNpX3Byb2JlLAo+ICsgICAgICAgLnJlbW92ZSA9IG10a19kc2lfcmVtb3ZlLAo+ICsgICAg ICAgLmRyaXZlciA9IHsKPiArICAgICAgICAgICAgICAgLm5hbWUgPSAibXRrLWRzaSIsCj4gKyAg ICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IG10a19kc2lfb2ZfbWF0Y2gsCj4gKyAgICAg ICAgICAgICAgIC5wbSA9ICZtdGtfZHNpX3BtX29wcywKPiArICAgICAgIH0sCj4gK307Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9tdGtfZHNpLmggYi9kcml2ZXJzL2dw dS9kcm0vbWVkaWF0ZWsvbXRrX2RzaS5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi40NzgwYWZjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t ZWRpYXRlay9tdGtfZHNpLmgKPiBAQCAtMCwwICsxLDU4IEBACj4gKy8qCj4gKyAqIENvcHlyaWdo dCAoYykgMjAxNSBNZWRpYVRlayBJbmMuCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv biAyIGFzCj4gKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgo+ ICsgKgo+ICsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQo+ICsgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYg X01US19EU0lfSF8KPiArI2RlZmluZSBfTVRLX0RTSV9IXwo+ICsKPiArI2luY2x1ZGUgPGRybS9k cm1fY3J0Yy5oPgo+ICsKPiArI2luY2x1ZGUgIm10a19kcm1fZGRwX2NvbXAuaCIKPiArCj4gK3N0 cnVjdCBwaHk7Cj4gKwo+ICtzdHJ1Y3QgbXRrX2RzaSB7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX2Rk cF9jb21wIGRkcF9jb21wOwo+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ICsgICAgICAg c3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciBjb25uOwo+ICsgICAgICAgc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7Cj4gKyAgICAgICBzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+ICsgICAgICAgc3RydWN0IHBoeSAqcGh5Owo+ICsKPiAr ICAgICAgIHZvaWQgX19pb21lbSAqcmVnczsKPiArCj4gKyAgICAgICBzdHJ1Y3QgY2xrICplbmdp bmVfY2xrOwo+ICsgICAgICAgc3RydWN0IGNsayAqZGlnaXRhbF9jbGs7Cj4gKyAgICAgICBzdHJ1 Y3QgY2xrICpoc19jbGs7Cj4gKwo+ICsgICAgICAgdTMyIGRhdGFfcmF0ZTsKPiArCj4gKyAgICAg ICB1bnNpZ25lZCBsb25nIG1vZGVfZmxhZ3M7Cj4gKyAgICAgICBlbnVtIG1pcGlfZHNpX3BpeGVs X2Zvcm1hdCBmb3JtYXQ7Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgbGFuZXM7Cj4gKyAgICAgICBz dHJ1Y3QgdmlkZW9tb2RlIHZtOwo+ICsgICAgICAgaW50IHJlZmNvdW50Owo+ICsgICAgICAgYm9v bCBlbmFibGVkOwo+ICt9Owo+ICsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbXRrX2RzaSAqZW5j b2Rlcl90b19kc2koc3RydWN0IGRybV9lbmNvZGVyICplKQo+ICt7Cj4gKyAgICAgICByZXR1cm4g Y29udGFpbmVyX29mKGUsIHN0cnVjdCBtdGtfZHNpLCBlbmNvZGVyKTsKPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSBzdHJ1Y3QgbXRrX2RzaSAqY29ubmVjdG9yX3RvX2RzaShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqYykKPiArewo+ICsgICAgICAgcmV0dXJuIGNvbnRhaW5lcl9vZihjLCBzdHJ1Y3Qg bXRrX2RzaSwgY29ubik7Cj4gK30KPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbWVkaWF0ZWsvbXRrX21pcGlfdHguYyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRl ay9tdGtfbWlwaV90eC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4z YjkxYTM2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZWRpYXRlay9t dGtfbWlwaV90eC5jCj4gQEAgLTAsMCArMSw0ODcgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IChj KSAyMDE1IE1lZGlhVGVrIEluYy4KPiArICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIg YXMKPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCj4gKyAq Cj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAo+ICsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCj4gKyAqIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxp bnV4L2Nsay5oPgo+ICsjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4KPiArI2luY2x1ZGUgPGxp bnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+Cj4gKwo+ICsjZGVmaW5lIE1JUElUWF9EU0lfQ09OICAg ICAgICAgMHgwMAo+ICsjZGVmaW5lIFJHX0RTSV9MRE9DT1JFX0VOICAgICAgICAgICAgICBCSVQo MCkKPiArI2RlZmluZSBSR19EU0lfQ0tHX0xET09VVF9FTiAgICAgICAgICAgQklUKDEpCj4gKyNk ZWZpbmUgUkdfRFNJX0JDTEtfU0VMICAgICAgICAgICAgICAgICAgICAgICAgKDMgPDwgMikKPiAr I2RlZmluZSBSR19EU0lfTERfSURYX1NFTCAgICAgICAgICAgICAgKDcgPDwgNCkKPiArI2RlZmlu ZSBSR19EU0lfUEhZQ0xLX1NFTCAgICAgICAgICAgICAgKDIgPDwgOCkKPiArI2RlZmluZSBSR19E U0lfRFNJQ0xLX0ZSRVFfU0VMICAgICAgICAgQklUKDEwKQo+ICsjZGVmaW5lIFJHX0RTSV9MUFRY X0NMTVBfRU4gICAgICAgICAgICBCSVQoMTEpCj4gKwo+ICsjZGVmaW5lIE1JUElUWF9EU0lfQ0xP Q0tfTEFORSAgMHgwNAo+ICsjZGVmaW5lIFJHX0RTSV9MTlRDX0xET09VVF9FTiAgICAgICAgICBC SVQoMCkKPiArI2RlZmluZSBSR19EU0lfTE5UQ19DS0xBTkVfRU4gICAgICAgICAgQklUKDEpCj4g KyNkZWZpbmUgUkdfRFNJX0xOVENfTFBUWF9JUExVUzEgICAgICAgICAgICAgICAgQklUKDIpCj4g KyNkZWZpbmUgUkdfRFNJX0xOVENfTFBUWF9JUExVUzIgICAgICAgICAgICAgICAgQklUKDMpCj4g KyNkZWZpbmUgUkdfRFNJX0xOVENfTFBUWF9JTUlOVVMgICAgICAgICAgICAgICAgQklUKDQpCj4g KyNkZWZpbmUgUkdfRFNJX0xOVENfTFBDRF9JUExVUyAgICAgICAgIEJJVCg1KQo+ICsjZGVmaW5l IFJHX0RTSV9MTlRDX0xQQ0RfSU1MVVMgICAgICAgICBCSVQoNikKPiArI2RlZmluZSBSR19EU0lf TE5UQ19SVF9DT0RFICAgICAgICAgICAgKDB4ZiA8PCA4KQo+ICsKPiArI2RlZmluZSBNSVBJVFhf RFNJX0RBVEFfTEFORTAgIDB4MDgKPiArI2RlZmluZSBSR19EU0lfTE5UMF9MRE9PVVRfRU4gICAg ICAgICAgQklUKDApCj4gKyNkZWZpbmUgUkdfRFNJX0xOVDBfQ0tMQU5FX0VOICAgICAgICAgIEJJ VCgxKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQwX0xQVFhfSVBMVVMxICAgICAgICAgICAgICAgIEJJ VCgyKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQwX0xQVFhfSVBMVVMyICAgICAgICAgICAgICAgIEJJ VCgzKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQwX0xQVFhfSU1JTlVTICAgICAgICAgICAgICAgIEJJ VCg0KQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQwX0xQQ0RfSVBMVVMgICAgICAgICBCSVQoNSkKPiAr I2RlZmluZSBSR19EU0lfTE5UMF9MUENEX0lNSU5VUyAgICAgICAgICAgICAgICBCSVQoNikKPiAr I2RlZmluZSBSR19EU0lfTE5UMF9SVF9DT0RFICAgICAgICAgICAgKDB4ZiA8PCA4KQo+ICsKPiAr I2RlZmluZSBNSVBJVFhfRFNJX0RBVEFfTEFORTEgIDB4MGMKPiArI2RlZmluZSBSR19EU0lfTE5U MV9MRE9PVVRfRU4gICAgICAgICAgQklUKDApCj4gKyNkZWZpbmUgUkdfRFNJX0xOVDFfQ0tMQU5F X0VOICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQxX0xQVFhfSVBMVVMxICAg ICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQxX0xQVFhfSVBMVVMyICAg ICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQxX0xQVFhfSU1JTlVTICAg ICAgICAgICAgICAgIEJJVCg0KQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQxX0xQQ0RfSVBMVVMgICAg ICAgICBCSVQoNSkKPiArI2RlZmluZSBSR19EU0lfTE5UMV9MUENEX0lNSU5VUyAgICAgICAgICAg ICAgICBCSVQoNikKPiArI2RlZmluZSBSR19EU0lfTE5UMV9SVF9DT0RFICAgICAgICAgICAgKDB4 ZiA8PCA4KQo+ICsKPiArI2RlZmluZSBNSVBJVFhfRFNJX0RBVEFfTEFORTIgIDB4MTAKPiArI2Rl ZmluZSBSR19EU0lfTE5UMl9MRE9PVVRfRU4gICAgICAgICAgQklUKDApCj4gKyNkZWZpbmUgUkdf RFNJX0xOVDJfQ0tMQU5FX0VOICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQy X0xQVFhfSVBMVVMxICAgICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQy X0xQVFhfSVBMVVMyICAgICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQy X0xQVFhfSU1JTlVTICAgICAgICAgICAgICAgIEJJVCg0KQo+ICsjZGVmaW5lIFJHX0RTSV9MTlQy X0xQQ0RfSVBMVVMgICAgICAgICBCSVQoNSkKPiArI2RlZmluZSBSR19EU0lfTE5UMl9MUENEX0lN SU5VUyAgICAgICAgICAgICAgICBCSVQoNikKPiArI2RlZmluZSBSR19EU0lfTE5UMl9SVF9DT0RF ICAgICAgICAgICAgKDB4ZiA8PCA4KQo+ICsKPiArI2RlZmluZSBNSVBJVFhfRFNJX0RBVEFfTEFO RTMgIDB4MTQKPiArI2RlZmluZSBSR19EU0lfTE5UM19MRE9PVVRfRU4gICAgICAgICAgQklUKDAp Cj4gKyNkZWZpbmUgUkdfRFNJX0xOVDNfQ0tMQU5FX0VOICAgICAgICAgIEJJVCgxKQo+ICsjZGVm aW5lIFJHX0RTSV9MTlQzX0xQVFhfSVBMVVMxICAgICAgICAgICAgICAgIEJJVCgyKQo+ICsjZGVm aW5lIFJHX0RTSV9MTlQzX0xQVFhfSVBMVVMyICAgICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVm aW5lIFJHX0RTSV9MTlQzX0xQVFhfSU1JTlVTICAgICAgICAgICAgICAgIEJJVCg0KQo+ICsjZGVm aW5lIFJHX0RTSV9MTlQzX0xQQ0RfSVBMVVMgICAgICAgICBCSVQoNSkKPiArI2RlZmluZSBSR19E U0lfTE5UM19MUENEX0lNSU5VUyAgICAgICAgICAgICAgICBCSVQoNikKPiArI2RlZmluZSBSR19E U0lfTE5UM19SVF9DT0RFICAgICAgICAgICAgKDB4ZiA8PCA4KQo+ICsKPiArI2RlZmluZSBNSVBJ VFhfRFNJX1RPUF9DT04gICAgIDB4NDAKPiArI2RlZmluZSBSR19EU0lfTE5UX0lOVFJfRU4gICAg ICAgICAgICAgQklUKDApCj4gKyNkZWZpbmUgUkdfRFNJX0xOVF9IU19CSUFTX0VOICAgICAgICAg IEJJVCgxKQo+ICsjZGVmaW5lIFJHX0RTSV9MTlRfSU1QX0NBTF9FTiAgICAgICAgICBCSVQoMikK PiArI2RlZmluZSBSR19EU0lfTE5UX1RFU1RNT0RFX0VOICAgICAgICAgQklUKDMpCj4gKyNkZWZp bmUgUkdfRFNJX0xOVF9JTVBfQ0FMX0NPREUgICAgICAgICAgICAgICAgKDB4ZiA8PCA0KQo+ICsj ZGVmaW5lIFJHX0RTSV9MTlRfQUlPX1NFTCAgICAgICAgICAgICAoNyA8PCA4KQo+ICsjZGVmaW5l IFJHX0RTSV9QQURfVElFX0xPV19FTiAgICAgICAgICBCSVQoMTEpCj4gKyNkZWZpbmUgUkdfRFNJ X0RFQlVHX0lOUFVUX0VOICAgICAgICAgIEJJVCgxMikKPiArI2RlZmluZSBSR19EU0lfUFJFU0VS VkUgICAgICAgICAgICAgICAgICAgICAgICAoNyA8PCAxMykKPiArCj4gKyNkZWZpbmUgTUlQSVRY X0RTSV9CR19DT04gICAgICAweDQ0Cj4gKyNkZWZpbmUgUkdfRFNJX0JHX0NPUkVfRU4gICAgICAg ICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIFJHX0RTSV9CR19DS0VOICAgICAgICAgICAgICAgICBC SVQoMSkKPiArI2RlZmluZSBSR19EU0lfQkdfRElWICAgICAgICAgICAgICAgICAgKDB4MyA8PCAy KQo+ICsjZGVmaW5lIFJHX0RTSV9CR19GQVNUX0NIQVJHRSAgICAgICAgICBCSVQoNCkKPiArI2Rl ZmluZSBSR19EU0lfVk9VVF9NU0sgICAgICAgICAgICAgICAgICAgICAgICAoMHgzZmZmZiA8PCA1 KQo+ICsjZGVmaW5lIFJHX0RTSV9WMTJfU0VMICAgICAgICAgICAgICAgICAoNyA8PCA1KQo+ICsj ZGVmaW5lIFJHX0RTSV9WMTBfU0VMICAgICAgICAgICAgICAgICAoNyA8PCA4KQo+ICsjZGVmaW5l IFJHX0RTSV9WMDcyX1NFTCAgICAgICAgICAgICAgICAgICAgICAgICg3IDw8IDExKQo+ICsjZGVm aW5lIFJHX0RTSV9WMDRfU0VMICAgICAgICAgICAgICAgICAoNyA8PCAxNCkKPiArI2RlZmluZSBS R19EU0lfVjAzMl9TRUwgICAgICAgICAgICAgICAgICAgICAgICAoNyA8PCAxNykKPiArI2RlZmlu ZSBSR19EU0lfVjAyX1NFTCAgICAgICAgICAgICAgICAgKDcgPDwgMjApCj4gKyNkZWZpbmUgUkdf RFNJX0JHX1IxX1RSSU0gICAgICAgICAgICAgICgweGYgPDwgMjQpCj4gKyNkZWZpbmUgUkdfRFNJ X0JHX1IyX1RSSU0gICAgICAgICAgICAgICgweGYgPDwgMjgpCj4gKwo+ICsjZGVmaW5lIE1JUElU WF9EU0lfUExMX0NPTjAgICAgMHg1MAo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9QTExfRU4gICAg ICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBSR19EU0lfTVBQTExfRElWX01TSyAgICAgICAgICAg KDB4MWZmIDw8IDEpCj4gKyNkZWZpbmUgUkdfRFNJX01QUExMX1BSRURJViAgICAgICAgICAgICgz IDw8IDEpCj4gKyNkZWZpbmUgUkdfRFNJX01QUExMX1RYRElWMCAgICAgICAgICAgICgzIDw8IDMp Cj4gKyNkZWZpbmUgUkdfRFNJX01QUExMX1RYRElWMSAgICAgICAgICAgICgzIDw8IDUpCj4gKyNk ZWZpbmUgUkdfRFNJX01QUExMX1BPU0RJViAgICAgICAgICAgICg3IDw8IDcpCj4gKyNkZWZpbmUg UkdfRFNJX01QUExMX01PTlZDX0VOICAgICAgICAgIEJJVCgxMCkKPiArI2RlZmluZSBSR19EU0lf TVBQTExfTU9OUkVGX0VOICAgICAgICAgQklUKDExKQo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9W T0RfRU4gICAgICAgICAgICBCSVQoMTIpCj4gKwo+ICsjZGVmaW5lIE1JUElUWF9EU0lfUExMX0NP TjEgICAgMHg1NAo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1fRlJBX0VOICAgICAgICAgICAg ICAgIEJJVCgwKQo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9TRE1fU1NDX1BIX0lOSVQgICBCSVQo MSkKPiArI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1NTQ19FTiAgICAgICAgICAgICAgICBCSVQo MikKPiArI2RlZmluZSBSR19EU0lfTVBQTExfU0RNX1NTQ19QUkQgICAgICAgKDB4ZmZmZiA8PCAx NikKPiArCj4gKyNkZWZpbmUgTUlQSVRYX0RTSV9QTExfQ09OMiAgICAweDU4Cj4gKwo+ICsjZGVm aW5lIE1JUElUWF9EU0lfUExMX1BXUiAgICAgMHg2OAo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9T RE1fUFdSX09OICAgICAgICAgICAgICAgIEJJVCgwKQo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9T RE1fSVNPX0VOICAgICAgICAgICAgICAgIEJJVCgxKQo+ICsjZGVmaW5lIFJHX0RTSV9NUFBMTF9T RE1fUFdSX0FDSyAgICAgICBCSVQoOCkKPiArCj4gKyNkZWZpbmUgTUlQSVRYX0RTSV9TV19DVFJM ICAgICAweDgwCj4gKyNkZWZpbmUgU1dfQ1RSTF9FTiAgICAgICAgICAgICAgICAgICAgIEJJVCgw KQo+ICsKPiArI2RlZmluZSBNSVBJVFhfRFNJX1NXX0NUUkxfQ09OMCAgICAgICAgMHg4NAo+ICsj ZGVmaW5lIFNXX0xOVENfTFBUWF9QUkVfT0UgICAgICAgICAgICBCSVQoMCkKPiArI2RlZmluZSBT V19MTlRDX0xQVFhfT0UgICAgICAgICAgICAgICAgICAgICAgICBCSVQoMSkKPiArI2RlZmluZSBT V19MTlRDX0xQVFhfUCAgICAgICAgICAgICAgICAgQklUKDIpCj4gKyNkZWZpbmUgU1dfTE5UQ19M UFRYX04gICAgICAgICAgICAgICAgIEJJVCgzKQo+ICsjZGVmaW5lIFNXX0xOVENfSFNUWF9QUkVf T0UgICAgICAgICAgICBCSVQoNCkKPiArI2RlZmluZSBTV19MTlRDX0hTVFhfT0UgICAgICAgICAg ICAgICAgICAgICAgICBCSVQoNSkKPiArI2RlZmluZSBTV19MTlRDX0hTVFhfWkVST0NMSyAgICAg ICAgICAgQklUKDYpCj4gKyNkZWZpbmUgU1dfTE5UMF9MUFRYX1BSRV9PRSAgICAgICAgICAgIEJJ VCg3KQo+ICsjZGVmaW5lIFNXX0xOVDBfTFBUWF9PRSAgICAgICAgICAgICAgICAgICAgICAgIEJJ VCg4KQo+ICsjZGVmaW5lIFNXX0xOVDBfTFBUWF9QICAgICAgICAgICAgICAgICBCSVQoOSkKPiAr I2RlZmluZSBTV19MTlQwX0xQVFhfTiAgICAgICAgICAgICAgICAgQklUKDEwKQo+ICsjZGVmaW5l IFNXX0xOVDBfSFNUWF9QUkVfT0UgICAgICAgICAgICBCSVQoMTEpCj4gKyNkZWZpbmUgU1dfTE5U MF9IU1RYX09FICAgICAgICAgICAgICAgICAgICAgICAgQklUKDEyKQo+ICsjZGVmaW5lIFNXX0xO VDBfTFBSWF9FTiAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxMykKPiArI2RlZmluZSBTV19M TlQxX0xQVFhfUFJFX09FICAgICAgICAgICAgQklUKDE0KQo+ICsjZGVmaW5lIFNXX0xOVDFfTFBU WF9PRSAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgxNSkKPiArI2RlZmluZSBTV19MTlQxX0xQ VFhfUCAgICAgICAgICAgICAgICAgQklUKDE2KQo+ICsjZGVmaW5lIFNXX0xOVDFfTFBUWF9OICAg ICAgICAgICAgICAgICBCSVQoMTcpCj4gKyNkZWZpbmUgU1dfTE5UMV9IU1RYX1BSRV9PRSAgICAg ICAgICAgIEJJVCgxOCkKPiArI2RlZmluZSBTV19MTlQxX0hTVFhfT0UgICAgICAgICAgICAgICAg ICAgICAgICBCSVQoMTkpCj4gKyNkZWZpbmUgU1dfTE5UMl9MUFRYX1BSRV9PRSAgICAgICAgICAg IEJJVCgyMCkKPiArI2RlZmluZSBTV19MTlQyX0xQVFhfT0UgICAgICAgICAgICAgICAgICAgICAg ICBCSVQoMjEpCj4gKyNkZWZpbmUgU1dfTE5UMl9MUFRYX1AgICAgICAgICAgICAgICAgIEJJVCgy MikKPiArI2RlZmluZSBTV19MTlQyX0xQVFhfTiAgICAgICAgICAgICAgICAgQklUKDIzKQo+ICsj ZGVmaW5lIFNXX0xOVDJfSFNUWF9QUkVfT0UgICAgICAgICAgICBCSVQoMjQpCj4gKyNkZWZpbmUg U1dfTE5UMl9IU1RYX09FICAgICAgICAgICAgICAgICAgICAgICAgQklUKDI1KQo+ICsKPiArc3Ry dWN0IG10a19taXBpX3R4IHsKPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsKPiArICAgICAg IHZvaWQgX19pb21lbSAqcmVnczsKPiArICAgICAgIHVuc2lnbmVkIGludCBkYXRhX3JhdGU7Cj4g KyAgICAgICBzdHJ1Y3QgY2xrX2h3IHBsbF9odzsKPiArICAgICAgIHN0cnVjdCBjbGsgKnBsbDsK PiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIG10a19taXBpX3R4X21hc2soc3RydWN0IG10a19taXBp X3R4ICptaXBpX3R4LCB1MzIgb2Zmc2V0LCB1MzIgbWFzaywKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUzMiBkYXRhKQo+ICt7Cj4gKyAgICAgICB1MzIgdGVtcCA9IHJlYWRsKG1pcGlf dHgtPnJlZ3MgKyBvZmZzZXQpOwo+ICsKPiArICAgICAgIHdyaXRlbCgodGVtcCAmIH5tYXNrKSB8 IChkYXRhICYgbWFzayksIG1pcGlfdHgtPnJlZ3MgKyBvZmZzZXQpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IG10a19taXBpX3R4X3BsbF9wcmVwYXJlKHN0cnVjdCBjbGtfaHcgKmh3KQo+ICt7Cj4g KyAgICAgICBzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBjb250YWluZXJfb2YoaHcsIHN0 cnVjdCBtdGtfbWlwaV90eCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwbGxfaHcpOwo+ICsgICAgICAgdW5zaWduZWQgaW50IHR4ZGl2LCB0eGRp djAsIHR4ZGl2MTsKPiArICAgICAgIHU2NCBwY3c7Cj4gKwo+ICsgICAgICAgZGV2X2RiZyhtaXBp X3R4LT5kZXYsICJwcmVwYXJlOiAldSBIelxuIiwgbWlwaV90eC0+ZGF0YV9yYXRlKTsKPiArCj4g KyAgICAgICBpZiAobWlwaV90eC0+ZGF0YV9yYXRlID49IDUwMDAwMDAwMCkgewo+ICsgICAgICAg ICAgICAgICB0eGRpdiA9IDE7Cj4gKyAgICAgICAgICAgICAgIHR4ZGl2MCA9IDA7Cj4gKyAgICAg ICAgICAgICAgIHR4ZGl2MSA9IDA7Cj4gKyAgICAgICB9IGVsc2UgaWYgKG1pcGlfdHgtPmRhdGFf cmF0ZSA+PSAyNTAwMDAwMDApIHsKPiArICAgICAgICAgICAgICAgdHhkaXYgPSAyOwo+ICsgICAg ICAgICAgICAgICB0eGRpdjAgPSAxOwo+ICsgICAgICAgICAgICAgICB0eGRpdjEgPSAwOwo+ICsg ICAgICAgfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gMTI1MDAwMDAwKSB7Cj4gKyAg ICAgICAgICAgICAgIHR4ZGl2ID0gNDsKPiArICAgICAgICAgICAgICAgdHhkaXYwID0gMjsKPiAr ICAgICAgICAgICAgICAgdHhkaXYxID0gMDsKPiArICAgICAgIH0gZWxzZSBpZiAobWlwaV90eC0+ ZGF0YV9yYXRlID4gNjIwMDAwMDApIHsKPiArICAgICAgICAgICAgICAgdHhkaXYgPSA4Owo+ICsg ICAgICAgICAgICAgICB0eGRpdjAgPSAyOwo+ICsgICAgICAgICAgICAgICB0eGRpdjEgPSAxOwo+ ICsgICAgICAgfSBlbHNlIGlmIChtaXBpX3R4LT5kYXRhX3JhdGUgPj0gNTAwMDAwMDApIHsKPiAr ICAgICAgICAgICAgICAgdHhkaXYgPSAxNjsKPiArICAgICAgICAgICAgICAgdHhkaXYwID0gMjsK PiArICAgICAgICAgICAgICAgdHhkaXYxID0gMjsKPiArICAgICAgIH0gZWxzZSB7Cj4gKyAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG10a19t aXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9CR19DT04sCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIFJHX0RTSV9WT1VUX01TSyB8IFJHX0RTSV9CR19DS0VOIHwgUkdfRFNJX0JHX0NP UkVfRU4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICg0IDw8IDIwKSB8ICg0IDw8IDE3KSB8 ICg0IDw8IDE0KSB8Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICg0IDw8IDExKSB8ICg0IDw8 IDgpIHwgKDQgPDwgNSkgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBSR19EU0lfQkdfQ0tF TiB8IFJHX0RTSV9CR19DT1JFX0VOKTsKPiArCj4gKyAgICAgICB1c2xlZXBfcmFuZ2UoMzAsIDEw MCk7Cj4gKwo+ICsgICAgICAgbXRrX21pcGlfdHhfbWFzayhtaXBpX3R4LCBNSVBJVFhfRFNJX1RP UF9DT04sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJHX0RTSV9MTlRfSU1QX0NBTF9DT0RF IHwgUkdfRFNJX0xOVF9IU19CSUFTX0VOLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAoOCA8 PCA0KSB8IFJHX0RTSV9MTlRfSFNfQklBU19FTik7Cj4gKwo+ICsgICAgICAgbXRrX21pcGlfdHhf bWFzayhtaXBpX3R4LCBNSVBJVFhfRFNJX0NPTiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg UkdfRFNJX0NLR19MRE9PVVRfRU4gfCBSR19EU0lfTERPQ09SRV9FTiwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgUkdfRFNJX0NLR19MRE9PVVRfRU4gfCBSR19EU0lfTERPQ09SRV9FTik7Cj4g Kwo+ICsgICAgICAgbXRrX21pcGlfdHhfbWFzayhtaXBpX3R4LCBNSVBJVFhfRFNJX1BMTF9QV1Is Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJHX0RTSV9NUFBMTF9TRE1fUFdSX09OIHwgUkdf RFNJX01QUExMX1NETV9JU09fRU4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJHX0RTSV9N UFBMTF9TRE1fUFdSX09OKTsKPiArCj4gKyAgICAgICBtdGtfbWlwaV90eF9tYXNrKG1pcGlfdHgs IE1JUElUWF9EU0lfUExMX0NPTjAsIFJHX0RTSV9NUFBMTF9QTExfRU4sIDApOwo+ICsKPiArICAg ICAgIG10a19taXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMCwKPiArICAg ICAgICAgICAgICAgICAgICAgICAgUkdfRFNJX01QUExMX1RYRElWMCB8IFJHX0RTSV9NUFBMTF9U WERJVjEgfAo+ICsgICAgICAgICAgICAgICAgICAgICAgICBSR19EU0lfTVBQTExfUFJFRElWLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAodHhkaXYwIDw8IDMpIHwgKHR4ZGl2MSA8PCA1KSk7 Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFBMTCBQQ1cgY29uZmlnCj4gKyAgICAgICAg KiBQQ1cgYml0IDI0fjMwID0gaW50ZWdlciBwYXJ0IG9mIHBjdwo+ICsgICAgICAgICogUENXIGJp dCAwfjIzID0gZnJhY3Rpb25hbCBwYXJ0IG9mIHBjdwo+ICsgICAgICAgICogcGN3ID0gZGF0YV9S YXRlKjQqdHhkaXYvKFJlZl9jbGsqMik7Cj4gKyAgICAgICAgKiBQb3N0IERJViA9NCwgc28gbmVl ZCBkYXRhX1JhdGUqNAo+ICsgICAgICAgICogUmVmX2NsayBpcyAyNk1Iego+ICsgICAgICAgICov Cj4gKyAgICAgICBwY3cgPSAoKHU2NCltaXBpX3R4LT5kYXRhX3JhdGUgKiAyICogdHhkaXYpIDw8 IDI0Owo+ICsgICAgICAgcGN3IC89IDI2MDAwMDAwOwo+ICsgICAgICAgd3JpdGVsKHBjdywgbWlw aV90eC0+cmVncyArIE1JUElUWF9EU0lfUExMX0NPTjIpOwo+ICsKPiArICAgICAgIG10a19taXBp X3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09OMSwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgUkdfRFNJX01QUExMX1NETV9GUkFfRU4sIFJHX0RTSV9NUFBMTF9TRE1fRlJBX0VO KTsKPiArCj4gKyAgICAgICBtdGtfbWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfUExM X0NPTjAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJHX0RTSV9NUFBMTF9QTExfRU4sIFJH X0RTSV9NUFBMTF9QTExfRU4pOwo+ICsKPiArICAgICAgIHVzbGVlcF9yYW5nZSgyMCwgMTAwKTsK PiArCj4gKyAgICAgICBtdGtfbWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX0NP TjEsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJHX0RTSV9NUFBMTF9TRE1fU1NDX0VOLCAw KTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbXRrX21p cGlfdHhfcGxsX3VucHJlcGFyZShzdHJ1Y3QgY2xrX2h3ICpodykKPiArewo+ICsgICAgICAgc3Ry dWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gY29udGFpbmVyX29mKGh3LCBzdHJ1Y3QgbXRrX21p cGlfdHgsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGxsX2h3KTsKPiArCj4gKyAgICAgICBkZXZfZGJnKG1pcGlfdHgtPmRldiwgInVucHJlcGFy ZVxuIik7Cj4gKwo+ICsgICAgICAgbXRrX21pcGlfdHhfbWFzayhtaXBpX3R4LCBNSVBJVFhfRFNJ X1BMTF9DT04wLCBSR19EU0lfTVBQTExfUExMX0VOLCAwKTsKPiArCj4gKyAgICAgICBtdGtfbWlw aV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfUExMX1BXUiwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgUkdfRFNJX01QUExMX1NETV9JU09fRU4gfCBSR19EU0lfTVBQTExfU0RNX1BXUl9P TiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgUkdfRFNJX01QUExMX1NETV9JU09fRU4pOwo+ ICsKPiArICAgICAgIG10a19taXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9UT1BfQ09O LCBSR19EU0lfTE5UX0hTX0JJQVNfRU4sIDApOwo+ICsKPiArICAgICAgIG10a19taXBpX3R4X21h c2sobWlwaV90eCwgTUlQSVRYX0RTSV9DT04sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIFJH X0RTSV9DS0dfTERPT1VUX0VOIHwgUkdfRFNJX0xET0NPUkVfRU4sIDApOwo+ICsKPiArICAgICAg IG10a19taXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9CR19DT04sCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIFJHX0RTSV9CR19DS0VOIHwgUkdfRFNJX0JHX0NPUkVfRU4sIDApOwo+ ICsKPiArICAgICAgIG10a19taXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9QTExfQ09O MCwgUkdfRFNJX01QUExMX0RJVl9NU0ssIDApOwo+ICt9Cj4gKwo+ICtzdGF0aWMgbG9uZyBtdGtf bWlwaV90eF9wbGxfcm91bmRfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodywgdW5zaWduZWQgbG9uZyBy YXRlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgKnByYXRlKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gY2xhbXBfdmFsKHJhdGUsIDUwMDAwMDAw LCAxMjUwMDAwMDAwKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtdGtfbWlwaV90eF9wbGxfc2V0 X3JhdGUoc3RydWN0IGNsa19odyAqaHcsIHVuc2lnbmVkIGxvbmcgcmF0ZSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+ICt7 Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX21pcGlfdHggKm1pcGlfdHggPSBjb250YWluZXJfb2YoaHcs IHN0cnVjdCBtdGtfbWlwaV90eCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwbGxfaHcpOwo+ICsKPiArICAgICAgIGRldl9kYmcobWlwaV90eC0+ ZGV2LCAic2V0IHJhdGU6ICVsdSBIelxuIiwgcmF0ZSk7Cj4gKwo+ICsgICAgICAgbWlwaV90eC0+ ZGF0YV9yYXRlID0gcmF0ZTsKPiArCj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIHVuc2lnbmVkIGxvbmcgbXRrX21pcGlfdHhfcGxsX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtf aHcgKmh3LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIHBhcmVudF9yYXRlKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX21p cGlfdHggKm1pcGlfdHggPSBjb250YWluZXJfb2YoaHcsIHN0cnVjdCBtdGtfbWlwaV90eCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGxfaHcp Owo+ICsgICAgICAgcmV0dXJuIG1pcGlfdHgtPmRhdGFfcmF0ZTsKPiArfQo+ICsKPiArc3RhdGlj IHN0cnVjdCBjbGtfb3BzIG10a19taXBpX3R4X3BsbF9vcHMgPSB7CgpzdGF0aWMgY29uc3QKCj4g KyAgICAgICAucHJlcGFyZSA9IG10a19taXBpX3R4X3BsbF9wcmVwYXJlLAo+ICsgICAgICAgLnVu cHJlcGFyZSA9IG10a19taXBpX3R4X3BsbF91bnByZXBhcmUsCj4gKyAgICAgICAucm91bmRfcmF0 ZSA9IG10a19taXBpX3R4X3BsbF9yb3VuZF9yYXRlLAo+ICsgICAgICAgLnNldF9yYXRlID0gbXRr X21pcGlfdHhfcGxsX3NldF9yYXRlLAo+ICsgICAgICAgLnJlY2FsY19yYXRlID0gbXRrX21pcGlf dHhfcGxsX3JlY2FsY19yYXRlLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBtdGtfbWlwaV90eF9w b3dlcl9vbl9zaWduYWwoc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRr X21pcGlfdHggKm1pcGlfdHggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiArCj4gKyAgICAgICBt dGtfbWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfQ0xPQ0tfTEFORSwKPiArICAgICAg ICAgICAgICAgICAgICAgICBSR19EU0lfTE5UQ19MRE9PVVRfRU4sIFJHX0RTSV9MTlRDX0xET09V VF9FTik7Cj4gKyAgICAgICBtdGtfbWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfREFU QV9MQU5FMCwKPiArICAgICAgICAgICAgICAgICAgICAgICBSR19EU0lfTE5UMF9MRE9PVVRfRU4s IFJHX0RTSV9MTlQwX0xET09VVF9FTik7Cj4gKyAgICAgICBtdGtfbWlwaV90eF9tYXNrKG1pcGlf dHgsIE1JUElUWF9EU0lfREFUQV9MQU5FMSwKPiArICAgICAgICAgICAgICAgICAgICAgICBSR19E U0lfTE5UMV9MRE9PVVRfRU4sIFJHX0RTSV9MTlQxX0xET09VVF9FTik7Cj4gKyAgICAgICBtdGtf bWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfREFUQV9MQU5FMiwKPiArICAgICAgICAg ICAgICAgICAgICAgICBSR19EU0lfTE5UMl9MRE9PVVRfRU4sIFJHX0RTSV9MTlQyX0xET09VVF9F Tik7Cj4gKyAgICAgICBtdGtfbWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfREFUQV9M QU5FMywKPiArICAgICAgICAgICAgICAgICAgICAgICBSR19EU0lfTE5UM19MRE9PVVRfRU4sIFJH X0RTSV9MTlQzX0xET09VVF9FTik7Cj4gKwo+ICsgICAgICAgbXRrX21pcGlfdHhfbWFzayhtaXBp X3R4LCBNSVBJVFhfRFNJX1RPUF9DT04sIFJHX0RTSV9QQURfVElFX0xPV19FTiwgMCk7Cj4gKwo+ ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX21pcGlfdHhfcG93 ZXJfb24oc3RydWN0IHBoeSAqcGh5KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgbXRrX21pcGlfdHgg Km1pcGlfdHggPSBwaHlfZ2V0X2RydmRhdGEocGh5KTsKPiArICAgICAgIGludCByZXQ7Cj4gKwo+ ICsgICAgICAgLyogUG93ZXIgdXAgY29yZSBhbmQgZW5hYmxlIFBMTCAqLwo+ICsgICAgICAgcmV0 ID0gY2xrX3ByZXBhcmVfZW5hYmxlKG1pcGlfdHgtPnBsbCk7Cj4gKyAgICAgICBpZiAocmV0IDwg MCkKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICAvKiBFbmFibGUg RFNJIExhbmUgTERPIG91dHB1dHMsIGRpc2FibGUgcGFkIHRpZSBsb3cgKi8KPiArICAgICAgIG10 a19taXBpX3R4X3Bvd2VyX29uX3NpZ25hbChwaHkpOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBtdGtfbWlwaV90eF9wb3dlcl9vZmZfc2lnbmFsKHN0cnVj dCBwaHkgKnBoeSkKPiArewo+ICsgICAgICAgc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4gKwo+ICsgICAgICAgbXRrX21pcGlfdHhfbWFzayhtaXBp X3R4LCBNSVBJVFhfRFNJX1RPUF9DT04sIFJHX0RTSV9QQURfVElFX0xPV19FTiwKPiArICAgICAg ICAgICAgICAgICAgICAgICBSR19EU0lfUEFEX1RJRV9MT1dfRU4pOwo+ICsKPiArICAgICAgIG10 a19taXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9DTE9DS19MQU5FLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICBSR19EU0lfTE5UQ19MRE9PVVRfRU4sIDApOwo+ICsgICAgICAgbXRr X21pcGlfdHhfbWFzayhtaXBpX3R4LCBNSVBJVFhfRFNJX0RBVEFfTEFORTAsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIFJHX0RTSV9MTlQwX0xET09VVF9FTiwgMCk7Cj4gKyAgICAgICBtdGtf bWlwaV90eF9tYXNrKG1pcGlfdHgsIE1JUElUWF9EU0lfREFUQV9MQU5FMSwKPiArICAgICAgICAg ICAgICAgICAgICAgICAgUkdfRFNJX0xOVDFfTERPT1VUX0VOLCAwKTsKPiArICAgICAgIG10a19t aXBpX3R4X21hc2sobWlwaV90eCwgTUlQSVRYX0RTSV9EQVRBX0xBTkUyLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICBSR19EU0lfTE5UMl9MRE9PVVRfRU4sIDApOwo+ICsgICAgICAgbXRrX21p cGlfdHhfbWFzayhtaXBpX3R4LCBNSVBJVFhfRFNJX0RBVEFfTEFORTMsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIFJHX0RTSV9MTlQzX0xET09VVF9FTiwgMCk7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgbXRrX21pcGlfdHhfcG93ZXJfb2ZmKHN0cnVjdCBwaHkgKnBoeSkKPiArewo+ICsgICAg ICAgc3RydWN0IG10a19taXBpX3R4ICptaXBpX3R4ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7Cj4g Kwo+ICsgICAgICAgLyogRW5hYmxlIHBhZCB0aWUgbG93LCBkaXNhYmxlIERTSSBMYW5lIExETyBv dXRwdXRzICovCj4gKyAgICAgICBtdGtfbWlwaV90eF9wb3dlcl9vZmZfc2lnbmFsKHBoeSk7Cj4g Kwo+ICsgICAgICAgLyogRGlzYWJsZSBQTEwgYW5kIHBvd2VyIGRvd24gY29yZSAqLwo+ICsgICAg ICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG1pcGlfdHgtPnBsbCk7Cj4gKwo+ICsgICAgICAgcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGh5X29wcyBtdGtfbWlwaV90eF9vcHMg PSB7CgpzdGF0aWMgY29uc3QKCj4gKyAgICAgICAucG93ZXJfb24gPSBtdGtfbWlwaV90eF9wb3dl cl9vbiwKPiArICAgICAgIC5wb3dlcl9vZmYgPSBtdGtfbWlwaV90eF9wb3dlcl9vZmYsCj4gKyAg ICAgICAub3duZXIgPSBUSElTX01PRFVMRSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgbXRrX21p cGlfdHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiArewo+ICsgICAgICAg c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiArICAgICAgIHN0cnVjdCBtdGtfbWlw aV90eCAqbWlwaV90eDsKPiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAqbWVtOwo+ICsgICAgICAg c3RydWN0IGNsayAqcmVmX2NsazsKPiArICAgICAgIGNvbnN0IGNoYXIgKnJlZl9jbGtfbmFtZTsK PiArICAgICAgIHN0cnVjdCBjbGtfaW5pdF9kYXRhIGNsa19pbml0ID0gewo+ICsgICAgICAgICAg ICAgICAub3BzID0gJm10a19taXBpX3R4X3BsbF9vcHMsCj4gKyAgICAgICAgICAgICAgIC5udW1f cGFyZW50cyA9IDEsCj4gKyAgICAgICAgICAgICAgIC5wYXJlbnRfbmFtZXMgPSAoY29uc3QgY2hh ciAqIGNvbnN0ICopJnJlZl9jbGtfbmFtZSwKPiArICAgICAgICAgICAgICAgLmZsYWdzID0gQ0xL X1NFVF9SQVRFX0dBVEUsCj4gKyAgICAgICB9Owo+ICsgICAgICAgc3RydWN0IHBoeSAqcGh5Owo+ ICsgICAgICAgc3RydWN0IHBoeV9wcm92aWRlciAqcGh5X3Byb3ZpZGVyOwo+ICsgICAgICAgaW50 IHJldDsKPiArCj4gKyAgICAgICBtaXBpX3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpt aXBpX3R4KSwgR0ZQX0tFUk5FTCk7Cj4gKyAgICAgICBpZiAoIW1pcGlfdHgpCj4gKyAgICAgICAg ICAgICAgIHJldHVybiAtRU5PTUVNOwo+ICsKPiArICAgICAgIG1lbSA9IHBsYXRmb3JtX2dldF9y ZXNvdXJjZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7Cj4gKyAgICAgICBtaXBpX3R4LT5yZWdz ID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgbWVtKTsKPiArICAgICAgIGlmIChJU19FUlIo bWlwaV90eC0+cmVncykpIHsKPiArICAgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihtaXBpX3R4 LT5yZWdzKTsKPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZ2V0IG1l bW9yeSByZXNvdXJjZTogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsIE5V TEwpOwo+ICsgICAgICAgaWYgKElTX0VSUihyZWZfY2xrKSkgewo+ICsgICAgICAgICAgICAgICBy ZXQgPSBQVFJfRVJSKHJlZl9jbGspOwo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZh aWxlZCB0byBnZXQgcmVmZXJlbmNlIGNsb2NrOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArICAgICAgIHJlZl9jbGtfbmFtZSA9IF9fY2xr X2dldF9uYW1lKHJlZl9jbGspOwo+ICsKPiArICAgICAgIHJldCA9IG9mX3Byb3BlcnR5X3JlYWRf c3RyaW5nKGRldi0+b2Zfbm9kZSwgImNsb2NrLW91dHB1dC1uYW1lcyIsCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xrX2luaXQubmFtZSk7Cj4gKyAgICAgICBpZiAo cmV0IDwgMCkgewo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byByZWFk IGNsb2NrLW91dHB1dC1uYW1lczogJWRcbiIsIHJldCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgbWlwaV90eC0+cGxsX2h3LmluaXQgPSAm Y2xrX2luaXQ7Cj4gKyAgICAgICBtaXBpX3R4LT5wbGwgPSBkZXZtX2Nsa19yZWdpc3RlcihkZXYs ICZtaXBpX3R4LT5wbGxfaHcpOwo+ICsgICAgICAgaWYgKElTX0VSUihtaXBpX3R4LT5wbGwpKSB7 Cj4gKyAgICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIobWlwaV90eC0+cGxsKTsKPiArICAgICAg ICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgUExMOiAlZFxuIiwgcmV0 KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAg ICBwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBOVUxMLCAmbXRrX21pcGlfdHhfb3BzKTsKPiAr ICAgICAgIGlmIChJU19FUlIocGh5KSkgewo+ICsgICAgICAgICAgICAgICByZXQgPSBQVFJfRVJS KHBoeSk7Cj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGNyZWF0ZSBN SVBJIEQtUEhZOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAr ICAgICAgIH0KPiArICAgICAgIHBoeV9zZXRfZHJ2ZGF0YShwaHksIG1pcGlfdHgpOwo+ICsKPiAr ICAgICAgIHBoeV9wcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3ZpZGVyX3JlZ2lzdGVyKGRldiwg b2ZfcGh5X3NpbXBsZV94bGF0ZSk7Cj4gKyAgICAgICBpZiAoSVNfRVJSKHBoeSkpIHsKPiArICAg ICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihwaHlfcHJvdmlkZXIpOwo+ICsgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG1pcGlfdHgtPmRldiA9IGRl djsKPiArCj4gKyAgICAgICByZXR1cm4gb2ZfY2xrX2FkZF9wcm92aWRlcihkZXYtPm9mX25vZGUs IG9mX2Nsa19zcmNfc2ltcGxlX2dldCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1pcGlfdHgtPnBsbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbXRrX21pcGlfdHhfcmVt b3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gK3sKPiArICAgICAgIG9mX2Nsa19k ZWxfcHJvdmlkZXIocGRldi0+ZGV2Lm9mX25vZGUpOwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG10a19taXBpX3R4X21hdGNo W10gPSB7Cj4gKyAgICAgICB7IC5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10ODE3My1taXBpLXR4 IiwgfSwKPiArICAgICAgIHt9LAo+ICt9Owo+ICsKPiArc3RydWN0IHBsYXRmb3JtX2RyaXZlciBt dGtfbWlwaV90eF9kcml2ZXIgPSB7Cj4gKyAgICAgICAucHJvYmUgPSBtdGtfbWlwaV90eF9wcm9i ZSwKPiArICAgICAgIC5yZW1vdmUgPSBtdGtfbWlwaV90eF9yZW1vdmUsCj4gKyAgICAgICAuZHJp dmVyID0gewo+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJtZWRpYXRlay1taXBpLXR4IiwKPiAr ICAgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gbXRrX21pcGlfdHhfbWF0Y2gsCj4gKyAg ICAgICB9LAo+ICt9Owo+IC0tCj4gMi42LjQKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=