From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v8,2/3] dmaengine: fsl-edma: add edma version and configurable registers From: Stefan Agner Message-Id: Date: Tue, 07 Aug 2018 10:01:52 +0200 To: Angelo Dureghello Cc: vinod.koul@linaro.org, dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-m68k@vger.kernel.org, krzk@kernel.org List-ID: T24gMDMuMDguMjAxOCAyMTozMiwgQW5nZWxvIER1cmVnaGVsbG8gd3JvdGU6Cj4gVGhpcyBwYXRj aCBhZGRzIGNvbmZpZ3VyYWJsZSByZWdpc3RlcnMgKHVzaW5nIF9faW9tZW0gYWRkcmVzc2VzKQo+ IHRvIGFsbG93IHRoZSB1c2Ugb2YgZnNsLWVkbWEtY29tbW9uIGNvZGUgd2l0aCBzbGlnaHRseSBk aWZmZXJlbnQKPiBlZG1hIG1vZHVsZSB2ZXJzaW9ucywgYXMgVnlicmlkICh2MSkgYW5kIENvbGRG aXJlICh2MikgYXJlLgo+IAo+IFJlbW92YWwgb2Ygb2xkIG1lbWJhc2UtcmVmZXJlbmNlZCByZWdp c3RlcnMsIGFtZCBzb21lIGZpeGVzIG9uCj4gbWFjcm9lcyBhcmUgaW5jbHVkZWQuCgpzL2FtZC9h bmQKcy9tYWNyb2VzL21hY3JvcwoKQWxzbyBzcGxpdCB0aGUgbWFjcm8gZml4ZXMgaW50byBhIHNl cGFyYXRlIGNvbW1pdC4gV2UgcmVhbGx5IHdhbnQgb25lCmNvbW1pdCBmb3IgZWFjaCBjaGFuZ2Uu Li4gSXRzIGJldHRlciB0byBoYXZlIDkgcGF0Y2hlcyB3aGljaCBtaWdodCBldmVuCnRvdWNoIHRo ZSBzYW1lIG1hY3JvcyBhZ2FpbiwgYnV0IHBhdGNoZXMgd2hpY2ggZG8gb25lIGxvZ2ljYWwgc3Rl cC4KLS0tClN0ZWZhbgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmdlbG8gRHVyZWdoZWxsbyA8YW5n ZWxvQHN5c2FtLml0Pgo+IC0tLQo+IENoYW5nZXMgZnJvbSB2NzoKPiAtIHBhdGNoIHJld3JpdHRl biBmcm9tIHNjcmF0Y2gsIHRoaXMgcGF0Y2ggKDIvMykgaGFzIGp1c3QgYmVlbiBhZGRlZC4KPiAt LS0KPiAgZHJpdmVycy9kbWEvZnNsLWVkbWEtY29tbW9uLmMgfCAxMzggKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQo+ICBkcml2ZXJzL2RtYS9mc2wtZWRtYS1jb21tb24uaCB8IDEx NSArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZG1hL2ZzbC1lZG1hLmMg ICAgICAgIHwgIDMyICsrKystLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTgyIGluc2VydGlvbnMo KyksIDEwMyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZnNsLWVk bWEtY29tbW9uLmMgYi9kcml2ZXJzL2RtYS9mc2wtZWRtYS1jb21tb24uYwo+IGluZGV4IDBhZTcw OTRmNDc3YS4uOTQ4YTNlZTUxYmJiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL2ZzbC1lZG1h LWNvbW1vbi5jCj4gKysrIGIvZHJpdmVycy9kbWEvZnNsLWVkbWEtY29tbW9uLmMKPiBAQCAtOSw2 ICs5LDM4IEBACj4gIAo+ICAjaW5jbHVkZSAiZnNsLWVkbWEtY29tbW9uLmgiCj4gIAo+ICsjZGVm aW5lIEVETUFfQ1IJCQkweDAwCj4gKyNkZWZpbmUgRURNQV9FUwkJCTB4MDQKPiArI2RlZmluZSBF RE1BX0VSUQkJMHgwQwo+ICsjZGVmaW5lIEVETUFfRUVJCQkweDE0Cj4gKyNkZWZpbmUgRURNQV9T RVJRCQkweDFCCj4gKyNkZWZpbmUgRURNQV9DRVJRCQkweDFBCj4gKyNkZWZpbmUgRURNQV9TRUVJ CQkweDE5Cj4gKyNkZWZpbmUgRURNQV9DRUVJCQkweDE4Cj4gKyNkZWZpbmUgRURNQV9DSU5UCQkw eDFGCj4gKyNkZWZpbmUgRURNQV9DRVJSCQkweDFFCj4gKyNkZWZpbmUgRURNQV9TU1JUCQkweDFE Cj4gKyNkZWZpbmUgRURNQV9DRE5FCQkweDFDCj4gKyNkZWZpbmUgRURNQV9JTlRSCQkweDI0Cj4g KyNkZWZpbmUgRURNQV9FUlIJCTB4MkMKPiArCj4gKyNkZWZpbmUgRURNQTY0X0VSUUgJCTB4MDgK PiArI2RlZmluZSBFRE1BNjRfRUVJSAkJMHgxMAo+ICsjZGVmaW5lIEVETUE2NF9TRVJRCQkweDE4 Cj4gKyNkZWZpbmUgRURNQTY0X0NFUlEJCTB4MTkKPiArI2RlZmluZSBFRE1BNjRfU0VFSQkJMHgx YQo+ICsjZGVmaW5lIEVETUE2NF9DRUVJCQkweDFiCj4gKyNkZWZpbmUgRURNQTY0X0NJTlQJCTB4 MWMKPiArI2RlZmluZSBFRE1BNjRfQ0VSUgkJMHgxZAo+ICsjZGVmaW5lIEVETUE2NF9TU1JUCQkw eDFlCj4gKyNkZWZpbmUgRURNQTY0X0NETkUJCTB4MWYKPiArI2RlZmluZSBFRE1BNjRfSU5USAkJ MHgyMAo+ICsjZGVmaW5lIEVETUE2NF9JTlRMCQkweDI0Cj4gKyNkZWZpbmUgRURNQTY0X0VSUkgJ CTB4MjgKPiArI2RlZmluZSBFRE1BNjRfRVJSTAkJMHgyYwo+ICsKPiArI2RlZmluZSBFRE1BX1RD RAkJMHgxMDAwCj4gKwo+ICAvKgo+ICAgKiBSL1cgZnVuY3Rpb25zIGZvciBiaWctIG9yIGxpdHRs ZS1lbmRpYW4gcmVnaXN0ZXJzOgo+ICAgKiBUaGUgZURNQSBjb250cm9sbGVyJ3MgZW5kaWFuIGlz IGluZGVwZW5kZW50IG9mIHRoZSBDUFUgY29yZSdzIGVuZGlhbi4KPiBAQCAtNjcsMjAgKzk5LDIw IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHRvX2ZzbF9lZG1hX2Rlc2MpOwo+ICAKPiAgc3RhdGljIHZv aWQgZnNsX2VkbWFfZW5hYmxlX3JlcXVlc3Qoc3RydWN0IGZzbF9lZG1hX2NoYW4gKmZzbF9jaGFu KQo+ICB7Cj4gLQl2b2lkIF9faW9tZW0gKmFkZHIgPSBmc2xfY2hhbi0+ZWRtYS0+bWVtYmFzZTsK PiArCXN0cnVjdCBlZG1hX3JlZ3MgKnJlZ3MgPSAmZnNsX2NoYW4tPmVkbWEtPnJlZ3M7Cj4gIAl1 MzIgY2ggPSBmc2xfY2hhbi0+dmNoYW4uY2hhbi5jaGFuX2lkOwo+ICAKPiAtCWVkbWFfd3JpdGVi KGZzbF9jaGFuLT5lZG1hLCBFRE1BX1NFRUlfU0VFSShjaCksIGFkZHIgKyBFRE1BX1NFRUkpOwo+ IC0JZWRtYV93cml0ZWIoZnNsX2NoYW4tPmVkbWEsIGNoLCBhZGRyICsgRURNQV9TRVJRKTsKPiAr CWVkbWFfd3JpdGViKGZzbF9jaGFuLT5lZG1hLCBFRE1BX1NFRUlfU0VFSShjaCksIHJlZ3MtPnNl ZWkpOwo+ICsJZWRtYV93cml0ZWIoZnNsX2NoYW4tPmVkbWEsIGNoLCByZWdzLT5zZXJxKTsKPiAg fQo+ICAKPiAgdm9pZCBmc2xfZWRtYV9kaXNhYmxlX3JlcXVlc3Qoc3RydWN0IGZzbF9lZG1hX2No YW4gKmZzbF9jaGFuKQo+ICB7Cj4gLQl2b2lkIF9faW9tZW0gKmFkZHIgPSBmc2xfY2hhbi0+ZWRt YS0+bWVtYmFzZTsKPiArCXN0cnVjdCBlZG1hX3JlZ3MgKnJlZ3MgPSAmZnNsX2NoYW4tPmVkbWEt PnJlZ3M7Cj4gIAl1MzIgY2ggPSBmc2xfY2hhbi0+dmNoYW4uY2hhbi5jaGFuX2lkOwo+ICAKPiAt CWVkbWFfd3JpdGViKGZzbF9jaGFuLT5lZG1hLCBjaCwgYWRkciArIEVETUFfQ0VSUSk7Cj4gLQll ZG1hX3dyaXRlYihmc2xfY2hhbi0+ZWRtYSwgRURNQV9DRUVJX0NFRUkoY2gpLCBhZGRyICsgRURN QV9DRUVJKTsKPiArCWVkbWFfd3JpdGViKGZzbF9jaGFuLT5lZG1hLCBjaCwgcmVncy0+Y2VycSk7 Cj4gKwllZG1hX3dyaXRlYihmc2xfY2hhbi0+ZWRtYSwgRURNQV9DRUVJX0NFRUkoY2gpLCByZWdz LT5jZWVpKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChmc2xfZWRtYV9kaXNhYmxlX3JlcXVl c3QpOwo+ICAKPiBAQCAtMjA4LDcgKzI0MCw3IEBAIHN0YXRpYyBzaXplX3QgZnNsX2VkbWFfZGVz Y19yZXNpZHVlKHN0cnVjdAo+IGZzbF9lZG1hX2NoYW4gKmZzbF9jaGFuLAo+ICAJCXN0cnVjdCB2 aXJ0X2RtYV9kZXNjICp2ZGVzYywgYm9vbCBpbl9wcm9ncmVzcykKPiAgewo+ICAJc3RydWN0IGZz bF9lZG1hX2Rlc2MgKmVkZXNjID0gZnNsX2NoYW4tPmVkZXNjOwo+IC0Jdm9pZCBfX2lvbWVtICph ZGRyID0gZnNsX2NoYW4tPmVkbWEtPm1lbWJhc2U7Cj4gKwlzdHJ1Y3QgZWRtYV9yZWdzICpyZWdz ID0gJmZzbF9jaGFuLT5lZG1hLT5yZWdzOwo+ICAJdTMyIGNoID0gZnNsX2NoYW4tPnZjaGFuLmNo YW4uY2hhbl9pZDsKPiAgCWVudW0gZG1hX3RyYW5zZmVyX2RpcmVjdGlvbiBkaXIgPSBmc2xfY2hh bi0+ZnNjLmRpcjsKPiAgCWRtYV9hZGRyX3QgY3VyX2FkZHIsIGRtYV9hZGRyOwo+IEBAIC0yMjQs MTEgKzI1Niw5IEBAIHN0YXRpYyBzaXplX3QgZnNsX2VkbWFfZGVzY19yZXNpZHVlKHN0cnVjdAo+ IGZzbF9lZG1hX2NoYW4gKmZzbF9jaGFuLAo+ICAJCXJldHVybiBsZW47Cj4gIAo+ICAJaWYgKGRp ciA9PSBETUFfTUVNX1RPX0RFVikKPiAtCQljdXJfYWRkciA9IGVkbWFfcmVhZGwoCj4gLQkJCWZz bF9jaGFuLT5lZG1hLCBhZGRyICsgRURNQV9UQ0RfU0FERFIoY2gpKTsKPiArCQljdXJfYWRkciA9 IGVkbWFfcmVhZGwoZnNsX2NoYW4tPmVkbWEsICZyZWdzLT50Y2RbY2hdLnNhZGRyKTsKPiAgCWVs c2UKPiAtCQljdXJfYWRkciA9IGVkbWFfcmVhZGwoCj4gLQkJCWZzbF9jaGFuLT5lZG1hLCBhZGRy ICsgRURNQV9UQ0RfREFERFIoY2gpKTsKPiArCQljdXJfYWRkciA9IGVkbWFfcmVhZGwoZnNsX2No YW4tPmVkbWEsICZyZWdzLT50Y2RbY2hdLmRhZGRyKTsKPiAgCj4gIAkvKiBmaWd1cmUgb3V0IHRo ZSBmaW5pc2hlZCBhbmQgY2FsY3VsYXRlIHRoZSByZXNpZHVlICovCj4gIAlmb3IgKGkgPSAwOyBp IDwgZnNsX2NoYW4tPmVkZXNjLT5uX3RjZHM7IGkrKykgewo+IEBAIC0yODUsNyArMzE1LDcgQEAg c3RhdGljIHZvaWQgZnNsX2VkbWFfc2V0X3RjZF9yZWdzKHN0cnVjdAo+IGZzbF9lZG1hX2NoYW4g KmZzbF9jaGFuLAo+ICAJCQkJICBzdHJ1Y3QgZnNsX2VkbWFfaHdfdGNkICp0Y2QpCj4gIHsKPiAg CXN0cnVjdCBmc2xfZWRtYV9lbmdpbmUgKmVkbWEgPSBmc2xfY2hhbi0+ZWRtYTsKPiAtCXZvaWQg X19pb21lbSAqYWRkciA9IGZzbF9jaGFuLT5lZG1hLT5tZW1iYXNlOwo+ICsJc3RydWN0IGVkbWFf cmVncyAqcmVncyA9ICZmc2xfY2hhbi0+ZWRtYS0+cmVnczsKPiAgCXUzMiBjaCA9IGZzbF9jaGFu LT52Y2hhbi5jaGFuLmNoYW5faWQ7Cj4gIAo+ICAJLyoKPiBAQCAtMjkzLDI0ICszMjMsMjQgQEAg c3RhdGljIHZvaWQgZnNsX2VkbWFfc2V0X3RjZF9yZWdzKHN0cnVjdAo+IGZzbF9lZG1hX2NoYW4g KmZzbF9jaGFuLAo+ICAJICogZW5kaWFuIGZvcm1hdC4gSG93ZXZlciwgd2UgbmVlZCB0byBsb2Fk IHRoZSBUQ0QgcmVnaXN0ZXJzIGluCj4gIAkgKiBiaWctIG9yIGxpdHRsZS1lbmRpYW4gb2JleWlu ZyB0aGUgZURNQSBlbmdpbmUgbW9kZWwgZW5kaWFuLgo+ICAJICovCj4gLQllZG1hX3dyaXRldyhl ZG1hLCAwLCBhZGRyICsgRURNQV9UQ0RfQ1NSKGNoKSk7Cj4gLQllZG1hX3dyaXRlbChlZG1hLCBs ZTMyX3RvX2NwdSh0Y2QtPnNhZGRyKSwgYWRkciArIEVETUFfVENEX1NBRERSKGNoKSk7Cj4gLQll ZG1hX3dyaXRlbChlZG1hLCBsZTMyX3RvX2NwdSh0Y2QtPmRhZGRyKSwgYWRkciArIEVETUFfVENE X0RBRERSKGNoKSk7Cj4gKwllZG1hX3dyaXRldyhlZG1hLCAwLCAgJnJlZ3MtPnRjZFtjaF0uY3Ny KTsKPiArCWVkbWFfd3JpdGVsKGVkbWEsIGxlMzJfdG9fY3B1KHRjZC0+c2FkZHIpLCAmcmVncy0+ dGNkW2NoXS5zYWRkcik7Cj4gKwllZG1hX3dyaXRlbChlZG1hLCBsZTMyX3RvX2NwdSh0Y2QtPmRh ZGRyKSwgJnJlZ3MtPnRjZFtjaF0uZGFkZHIpOwo+ICAKPiAtCWVkbWFfd3JpdGV3KGVkbWEsIGxl MTZfdG9fY3B1KHRjZC0+YXR0ciksIGFkZHIgKyBFRE1BX1RDRF9BVFRSKGNoKSk7Cj4gLQllZG1h X3dyaXRldyhlZG1hLCBsZTE2X3RvX2NwdSh0Y2QtPnNvZmYpLCBhZGRyICsgRURNQV9UQ0RfU09G RihjaCkpOwo+ICsJZWRtYV93cml0ZXcoZWRtYSwgbGUxNl90b19jcHUodGNkLT5hdHRyKSwgJnJl Z3MtPnRjZFtjaF0uYXR0cik7Cj4gKwllZG1hX3dyaXRldyhlZG1hLCBsZTE2X3RvX2NwdSh0Y2Qt PnNvZmYpLCAmcmVncy0+dGNkW2NoXS5zb2ZmKTsKPiAgCj4gLQllZG1hX3dyaXRlbChlZG1hLCBs ZTMyX3RvX2NwdSh0Y2QtPm5ieXRlcyksIGFkZHIgKyBFRE1BX1RDRF9OQllURVMoY2gpKTsKPiAt CWVkbWFfd3JpdGVsKGVkbWEsIGxlMzJfdG9fY3B1KHRjZC0+c2xhc3QpLCBhZGRyICsgRURNQV9U Q0RfU0xBU1QoY2gpKTsKPiArCWVkbWFfd3JpdGVsKGVkbWEsIGxlMzJfdG9fY3B1KHRjZC0+bmJ5 dGVzKSwgJnJlZ3MtPnRjZFtjaF0ubmJ5dGVzKTsKPiArCWVkbWFfd3JpdGVsKGVkbWEsIGxlMzJf dG9fY3B1KHRjZC0+c2xhc3QpLCAmcmVncy0+dGNkW2NoXS5zbGFzdCk7Cj4gIAo+IC0JZWRtYV93 cml0ZXcoZWRtYSwgbGUxNl90b19jcHUodGNkLT5jaXRlciksIGFkZHIgKyBFRE1BX1RDRF9DSVRF UihjaCkpOwo+IC0JZWRtYV93cml0ZXcoZWRtYSwgbGUxNl90b19jcHUodGNkLT5iaXRlciksIGFk ZHIgKyBFRE1BX1RDRF9CSVRFUihjaCkpOwo+IC0JZWRtYV93cml0ZXcoZWRtYSwgbGUxNl90b19j cHUodGNkLT5kb2ZmKSwgYWRkciArIEVETUFfVENEX0RPRkYoY2gpKTsKPiArCWVkbWFfd3JpdGV3 KGVkbWEsIGxlMTZfdG9fY3B1KHRjZC0+Y2l0ZXIpLCAmcmVncy0+dGNkW2NoXS5jaXRlcik7Cj4g KwllZG1hX3dyaXRldyhlZG1hLCBsZTE2X3RvX2NwdSh0Y2QtPmJpdGVyKSwgJnJlZ3MtPnRjZFtj aF0uYml0ZXIpOwo+ICsJZWRtYV93cml0ZXcoZWRtYSwgbGUxNl90b19jcHUodGNkLT5kb2ZmKSwg JnJlZ3MtPnRjZFtjaF0uZG9mZik7Cj4gIAo+IC0JZWRtYV93cml0ZWwoZWRtYSwKPiAtCQkgICAg bGUzMl90b19jcHUodGNkLT5kbGFzdF9zZ2EpLCBhZGRyICsgRURNQV9UQ0RfRExBU1RfU0dBKGNo KSk7Cj4gKwllZG1hX3dyaXRlbChlZG1hLCBsZTMyX3RvX2NwdSh0Y2QtPmRsYXN0X3NnYSksCj4g KwkJCSZyZWdzLT50Y2RbY2hdLmRsYXN0X3NnYSk7Cj4gIAo+IC0JZWRtYV93cml0ZXcoZWRtYSwg bGUxNl90b19jcHUodGNkLT5jc3IpLCBhZGRyICsgRURNQV9UQ0RfQ1NSKGNoKSk7Cj4gKwllZG1h X3dyaXRldyhlZG1hLCBsZTE2X3RvX2NwdSh0Y2QtPmNzciksICZyZWdzLT50Y2RbY2hdLmNzcik7 Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbmxpbmUKPiBAQCAtMzMyLDE1ICszNjIsMTUgQEAgdm9pZCBm c2xfZWRtYV9maWxsX3RjZChzdHJ1Y3QgZnNsX2VkbWFfaHdfdGNkCj4gKnRjZCwgdTMyIHNyYywg dTMyIGRzdCwKPiAgCj4gIAl0Y2QtPmF0dHIgPSBjcHVfdG9fbGUxNihhdHRyKTsKPiAgCj4gLQl0 Y2QtPnNvZmYgPSBjcHVfdG9fbGUxNihFRE1BX1RDRF9TT0ZGX1NPRkYoc29mZikpOwo+ICsJdGNk LT5zb2ZmID0gY3B1X3RvX2xlMTYoc29mZik7Cj4gIAo+IC0JdGNkLT5uYnl0ZXMgPSBjcHVfdG9f bGUzMihFRE1BX1RDRF9OQllURVNfTkJZVEVTKG5ieXRlcykpOwo+IC0JdGNkLT5zbGFzdCA9IGNw dV90b19sZTMyKEVETUFfVENEX1NMQVNUX1NMQVNUKHNsYXN0KSk7Cj4gKwl0Y2QtPm5ieXRlcyA9 IGNwdV90b19sZTMyKG5ieXRlcyk7Cj4gKwl0Y2QtPnNsYXN0ID0gY3B1X3RvX2xlMzIoc2xhc3Qp Owo+ICAKPiAgCXRjZC0+Y2l0ZXIgPSBjcHVfdG9fbGUxNihFRE1BX1RDRF9DSVRFUl9DSVRFUihj aXRlcikpOwo+IC0JdGNkLT5kb2ZmID0gY3B1X3RvX2xlMTYoRURNQV9UQ0RfRE9GRl9ET0ZGKGRv ZmYpKTsKPiArCXRjZC0+ZG9mZiA9IGNwdV90b19sZTE2KGRvZmYpOwo+ICAKPiAtCXRjZC0+ZGxh c3Rfc2dhID0gY3B1X3RvX2xlMzIoRURNQV9UQ0RfRExBU1RfU0dBX0RMQVNUX1NHQShkbGFzdF9z Z2EpKTsKPiArCXRjZC0+ZGxhc3Rfc2dhID0gY3B1X3RvX2xlMzIoZGxhc3Rfc2dhKTsKPiAgCj4g IAl0Y2QtPmJpdGVyID0gY3B1X3RvX2xlMTYoRURNQV9UQ0RfQklURVJfQklURVIoYml0ZXIpKTsK PiAgCWlmIChtYWpvcl9pbnQpCj4gQEAgLTU3Myw0ICs2MDMsNTIgQEAgdm9pZCBmc2xfZWRtYV9j bGVhbnVwX3ZjaGFuKHN0cnVjdCBkbWFfZGV2aWNlICpkbWFkZXYpCj4gIH0KPiAgRVhQT1JUX1NZ TUJPTF9HUEwoZnNsX2VkbWFfY2xlYW51cF92Y2hhbik7Cj4gIAo+ICsvKgo+ICsgKiBPbiB0aGUg MzIgY2hhbm5lbHMgVnlicmlkL21wYzU3N3ggZWRtYSB2ZXJzaW9uIChoZXJlIGNhbGxlZCAidjEi KSwKPiArICogcmVnaXN0ZXIgb2Zmc2V0cyBhcmUgZGlmZmVyZW50IGNvbXBhcmVkIHRvIENvbGRG aXJlIG1jZjU0NDF4IDY0IGNoYW5uZWxzCj4gKyAqIGVkbWEgKGhlcmUgY2FsbGVkICJ2MiIpLgo+ ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdXAgcmVnaXN0ZXIgb2Zmc2V0cyBhcyBwZXIg cHJvcGVyIGRlY2xhcmVkIHZlcnNpb24KPiArICogc28gbXVzdCBiZSBjYWxsZWQgaW4geHh4X2Vk bWFfcHJvYmUoKSBqdXN0IGFmdGVyIHNldHRpbmcgdGhlCj4gKyAqIGVkbWEgInZlcnNpb24iIGFu ZCAibWVtYmFzZSIgYXBwcm9wcmlhdGVseS4KPiArICovCj4gK3ZvaWQgZnNsX2VkbWFfc2V0dXBf cmVncyhzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lICplZG1hKQo+ICt7Cj4gKwllZG1hLT5yZWdzLmNy ID0gZWRtYS0+bWVtYmFzZSArIEVETUFfQ1I7Cj4gKwllZG1hLT5yZWdzLmVzID0gZWRtYS0+bWVt YmFzZSArIEVETUFfRVM7Cj4gKwllZG1hLT5yZWdzLmVycWwgPSBlZG1hLT5tZW1iYXNlICsgRURN QV9FUlE7Cj4gKwllZG1hLT5yZWdzLmVlaWwgPSBlZG1hLT5tZW1iYXNlICsgRURNQV9FRUk7Cj4g Kwo+ICsJZWRtYS0+cmVncy5zZXJxID0gZWRtYS0+bWVtYmFzZSArICgoZWRtYS0+dmVyc2lvbiA9 PSB2MSkgPwo+ICsJCQlFRE1BX1NFUlEgOiBFRE1BNjRfU0VSUSk7Cj4gKwllZG1hLT5yZWdzLmNl cnEgPSBlZG1hLT5tZW1iYXNlICsgKChlZG1hLT52ZXJzaW9uID09IHYxKSA/Cj4gKwkJCUVETUFf Q0VSUSA6IEVETUE2NF9DRVJRKTsKPiArCWVkbWEtPnJlZ3Muc2VlaSA9IGVkbWEtPm1lbWJhc2Ug KyAoKGVkbWEtPnZlcnNpb24gPT0gdjEpID8KPiArCQkJRURNQV9TRUVJIDogRURNQTY0X1NFRUkp Owo+ICsJZWRtYS0+cmVncy5jZWVpID0gZWRtYS0+bWVtYmFzZSArICgoZWRtYS0+dmVyc2lvbiA9 PSB2MSkgPwo+ICsJCQlFRE1BX0NFRUkgOiBFRE1BNjRfQ0VFSSk7Cj4gKwllZG1hLT5yZWdzLmNp bnQgPSBlZG1hLT5tZW1iYXNlICsgKChlZG1hLT52ZXJzaW9uID09IHYxKSA/Cj4gKwkJCUVETUFf Q0lOVCA6IEVETUE2NF9DSU5UKTsKPiArCWVkbWEtPnJlZ3MuY2VyciA9IGVkbWEtPm1lbWJhc2Ug KyAoKGVkbWEtPnZlcnNpb24gPT0gdjEpID8KPiArCQkJRURNQV9DRVJSIDogRURNQTY0X0NFUlIp Owo+ICsJZWRtYS0+cmVncy5zc3J0ID0gZWRtYS0+bWVtYmFzZSArICgoZWRtYS0+dmVyc2lvbiA9 PSB2MSkgPwo+ICsJCQlFRE1BX1NTUlQgOiBFRE1BNjRfU1NSVCk7Cj4gKwllZG1hLT5yZWdzLmNk bmUgPSBlZG1hLT5tZW1iYXNlICsgKChlZG1hLT52ZXJzaW9uID09IHYxKSA/Cj4gKwkJCUVETUFf Q0RORSA6IEVETUE2NF9DRE5FKTsKPiArCWVkbWEtPnJlZ3MuaW50bCA9IGVkbWEtPm1lbWJhc2Ug KyAoKGVkbWEtPnZlcnNpb24gPT0gdjEpID8KPiArCQkJRURNQV9JTlRSIDogRURNQTY0X0lOVEwp Owo+ICsJZWRtYS0+cmVncy5lcnJsID0gZWRtYS0+bWVtYmFzZSArICgoZWRtYS0+dmVyc2lvbiA9 PSB2MSkgPwo+ICsJCQlFRE1BX0VSUiA6IEVETUE2NF9FUlJMKTsKPiArCj4gKwlpZiAoZWRtYS0+ dmVyc2lvbiA9PSB2Mikgewo+ICsJCWVkbWEtPnJlZ3MuZXJxaCA9IGVkbWEtPm1lbWJhc2UgKyBF RE1BNjRfRVJRSDsKPiArCQllZG1hLT5yZWdzLmVlaWggPSBlZG1hLT5tZW1iYXNlICsgRURNQTY0 X0VFSUg7Cj4gKwkJZWRtYS0+cmVncy5lcnJoID0gZWRtYS0+bWVtYmFzZSArIEVETUE2NF9FUlJI Owo+ICsJCWVkbWEtPnJlZ3MuaW50aCA9IGVkbWEtPm1lbWJhc2UgKyBFRE1BNjRfSU5USDsKPiAr CX0KPiArCj4gKwllZG1hLT5yZWdzLnRjZCA9IGVkbWEtPm1lbWJhc2UgKyBFRE1BX1RDRDsKPiAr fQo+ICtFWFBPUlRfU1lNQk9MX0dQTChmc2xfZWRtYV9zZXR1cF9yZWdzKTsKPiArCj4gIE1PRFVM RV9MSUNFTlNFKCJHUEwgdjIiKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZnNsLWVkbWEt Y29tbW9uLmggYi9kcml2ZXJzL2RtYS9mc2wtZWRtYS1jb21tb24uaAo+IGluZGV4IGYzZWE2OGUx NWIyMy4uN2E5MjMxZTc2MzlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL2ZzbC1lZG1hLWNv bW1vbi5oCj4gKysrIGIvZHJpdmVycy9kbWEvZnNsLWVkbWEtY29tbW9uLmgKPiBAQCAtOCwzNSAr OCw2IEBACj4gIAo+ICAjaW5jbHVkZSAidmlydC1kbWEuaCIKPiAgCj4gLSNkZWZpbmUgRURNQV9D UgkJCTB4MDAKPiAtI2RlZmluZSBFRE1BX0VTCQkJMHgwNAo+IC0jZGVmaW5lIEVETUFfRVJRCQkw eDBDCj4gLSNkZWZpbmUgRURNQV9FRUkJCTB4MTQKPiAtI2RlZmluZSBFRE1BX1NFUlEJCTB4MUIK PiAtI2RlZmluZSBFRE1BX0NFUlEJCTB4MUEKPiAtI2RlZmluZSBFRE1BX1NFRUkJCTB4MTkKPiAt I2RlZmluZSBFRE1BX0NFRUkJCTB4MTgKPiAtI2RlZmluZSBFRE1BX0NJTlQJCTB4MUYKPiAtI2Rl ZmluZSBFRE1BX0NFUlIJCTB4MUUKPiAtI2RlZmluZSBFRE1BX1NTUlQJCTB4MUQKPiAtI2RlZmlu ZSBFRE1BX0NETkUJCTB4MUMKPiAtI2RlZmluZSBFRE1BX0lOVFIJCTB4MjQKPiAtI2RlZmluZSBF RE1BX0VSUgkJMHgyQwo+IC0KPiAtI2RlZmluZSBFRE1BX1RDRF9TQUREUih4KQkoMHgxMDAwICsg MzIgKiAoeCkpCj4gLSNkZWZpbmUgRURNQV9UQ0RfU09GRih4KQkoMHgxMDA0ICsgMzIgKiAoeCkp Cj4gLSNkZWZpbmUgRURNQV9UQ0RfQVRUUih4KQkoMHgxMDA2ICsgMzIgKiAoeCkpCj4gLSNkZWZp bmUgRURNQV9UQ0RfTkJZVEVTKHgpCSgweDEwMDggKyAzMiAqICh4KSkKPiAtI2RlZmluZSBFRE1B X1RDRF9TTEFTVCh4KQkoMHgxMDBDICsgMzIgKiAoeCkpCj4gLSNkZWZpbmUgRURNQV9UQ0RfREFE RFIoeCkJKDB4MTAxMCArIDMyICogKHgpKQo+IC0jZGVmaW5lIEVETUFfVENEX0RPRkYoeCkJKDB4 MTAxNCArIDMyICogKHgpKQo+IC0jZGVmaW5lIEVETUFfVENEX0NJVEVSX0VMSU5LKHgpCSgweDEw MTYgKyAzMiAqICh4KSkKPiAtI2RlZmluZSBFRE1BX1RDRF9DSVRFUih4KQkoMHgxMDE2ICsgMzIg KiAoeCkpCj4gLSNkZWZpbmUgRURNQV9UQ0RfRExBU1RfU0dBKHgpCSgweDEwMTggKyAzMiAqICh4 KSkKPiAtI2RlZmluZSBFRE1BX1RDRF9DU1IoeCkJCSgweDEwMUMgKyAzMiAqICh4KSkKPiAtI2Rl ZmluZSBFRE1BX1RDRF9CSVRFUl9FTElOSyh4KQkoMHgxMDFFICsgMzIgKiAoeCkpCj4gLSNkZWZp bmUgRURNQV9UQ0RfQklURVIoeCkJKDB4MTAxRSArIDMyICogKHgpKQo+IC0KPiAgI2RlZmluZSBF RE1BX0NSX0VEQkcJCUJJVCgxKQo+ICAjZGVmaW5lIEVETUFfQ1JfRVJDQQkJQklUKDIpCj4gICNk ZWZpbmUgRURNQV9DUl9FUkdBCQlCSVQoMykKPiBAQCAtNDcsMzQgKzE4LDI5IEBACj4gICNkZWZp bmUgRURNQV9DUl9FQ1gJCUJJVCgxNikKPiAgI2RlZmluZSBFRE1BX0NSX0NYCQlCSVQoMTcpCj4g IAo+IC0jZGVmaW5lIEVETUFfU0VFSV9TRUVJKHgpCSgoeCkgJiAweDFGKQo+IC0jZGVmaW5lIEVE TUFfQ0VFSV9DRUVJKHgpCSgoeCkgJiAweDFGKQo+IC0jZGVmaW5lIEVETUFfQ0lOVF9DSU5UKHgp CSgoeCkgJiAweDFGKQo+IC0jZGVmaW5lIEVETUFfQ0VSUl9DRVJSKHgpCSgoeCkgJiAweDFGKQo+ IC0KPiAtI2RlZmluZSBFRE1BX1RDRF9BVFRSX0RTSVpFKHgpCQkoKCh4KSAmIDB4MDAwNykpCj4g LSNkZWZpbmUgRURNQV9UQ0RfQVRUUl9ETU9EKHgpCQkoKCh4KSAmIDB4MDAxRikgPDwgMykKPiAt I2RlZmluZSBFRE1BX1RDRF9BVFRSX1NTSVpFKHgpCQkoKCh4KSAmIDB4MDAwNykgPDwgOCkKPiAt I2RlZmluZSBFRE1BX1RDRF9BVFRSX1NNT0QoeCkJCSgoKHgpICYgMHgwMDFGKSA8PCAxMSkKPiAt I2RlZmluZSBFRE1BX1RDRF9BVFRSX1NTSVpFXzhCSVQJKDB4MDAwMCkKPiAtI2RlZmluZSBFRE1B X1RDRF9BVFRSX1NTSVpFXzE2QklUCSgweDAxMDApCj4gLSNkZWZpbmUgRURNQV9UQ0RfQVRUUl9T U0laRV8zMkJJVAkoMHgwMjAwKQo+IC0jZGVmaW5lIEVETUFfVENEX0FUVFJfU1NJWkVfNjRCSVQJ KDB4MDMwMCkKPiAtI2RlZmluZSBFRE1BX1RDRF9BVFRSX1NTSVpFXzMyQllURQkoMHgwNTAwKQo+ IC0jZGVmaW5lIEVETUFfVENEX0FUVFJfRFNJWkVfOEJJVAkoMHgwMDAwKQo+IC0jZGVmaW5lIEVE TUFfVENEX0FUVFJfRFNJWkVfMTZCSVQJKDB4MDAwMSkKPiAtI2RlZmluZSBFRE1BX1RDRF9BVFRS X0RTSVpFXzMyQklUCSgweDAwMDIpCj4gLSNkZWZpbmUgRURNQV9UQ0RfQVRUUl9EU0laRV82NEJJ VAkoMHgwMDAzKQo+IC0jZGVmaW5lIEVETUFfVENEX0FUVFJfRFNJWkVfMzJCWVRFCSgweDAwMDUp Cj4gLQo+IC0jZGVmaW5lIEVETUFfVENEX1NPRkZfU09GRih4KQkJKHgpCj4gLSNkZWZpbmUgRURN QV9UQ0RfTkJZVEVTX05CWVRFUyh4KQkoeCkKPiAtI2RlZmluZSBFRE1BX1RDRF9TTEFTVF9TTEFT VCh4KQkJKHgpCj4gLSNkZWZpbmUgRURNQV9UQ0RfREFERFJfREFERFIoeCkJCSh4KQo+IC0jZGVm aW5lIEVETUFfVENEX0NJVEVSX0NJVEVSKHgpCQkoKHgpICYgMHg3RkZGKQo+IC0jZGVmaW5lIEVE TUFfVENEX0RPRkZfRE9GRih4KQkJKHgpCj4gLSNkZWZpbmUgRURNQV9UQ0RfRExBU1RfU0dBX0RM QVNUX1NHQSh4KQkoeCkKPiAtI2RlZmluZSBFRE1BX1RDRF9CSVRFUl9CSVRFUih4KQkJKCh4KSAm IDB4N0ZGRikKPiArI2RlZmluZSBFRE1BX1NFRUlfU0VFSSh4KQkoKHgpICYgR0VOTUFTSyg0LCAw KSkKPiArI2RlZmluZSBFRE1BX0NFRUlfQ0VFSSh4KQkoKHgpICYgR0VOTUFTSyg0LCAwKSkKPiAr I2RlZmluZSBFRE1BX0NJTlRfQ0lOVCh4KQkoKHgpICYgR0VOTUFTSyg0LCAwKSkKPiArI2RlZmlu ZSBFRE1BX0NFUlJfQ0VSUih4KQkoKHgpICYgR0VOTUFTSyg0LCAwKSkKPiArCj4gKyNkZWZpbmUg RURNQV9UQ0RfQVRUUl9EU0laRSh4KQkJKCgoeCkgJiBHRU5NQVNLKDIsIDApKSkKPiArI2RlZmlu ZSBFRE1BX1RDRF9BVFRSX0RNT0QoeCkJCSgoKHgpICYgR0VOTUFTSyg0LCAwKSkgPDwgMykKPiAr I2RlZmluZSBFRE1BX1RDRF9BVFRSX1NTSVpFKHgpCQkoKCh4KSAmIEdFTk1BU0soMiwgMCkpIDw8 IDgpCj4gKyNkZWZpbmUgRURNQV9UQ0RfQVRUUl9TTU9EKHgpCQkoKCh4KSAmIEdFTk1BU0soNCwg MCkpIDw8IDExKQo+ICsKPiArI2RlZmluZSBFRE1BX1RDRF9BVFRSX0RTSVpFXzhCSVQJMAo+ICsj ZGVmaW5lIEVETUFfVENEX0FUVFJfRFNJWkVfMTZCSVQJQklUKDApCj4gKyNkZWZpbmUgRURNQV9U Q0RfQVRUUl9EU0laRV8zMkJJVAlCSVQoMSkKPiArI2RlZmluZSBFRE1BX1RDRF9BVFRSX0RTSVpF XzY0QklUCShCSVQoMCkgfCBCSVQoMSkpCj4gKyNkZWZpbmUgRURNQV9UQ0RfQVRUUl9EU0laRV8z MkJZVEUJKEJJVCgzKSB8IEJJVCgwKSkKPiArI2RlZmluZSBFRE1BX1RDRF9BVFRSX1NTSVpFXzhC SVQJMAo+ICsjZGVmaW5lIEVETUFfVENEX0FUVFJfU1NJWkVfMTZCSVQJKEVETUFfVENEX0FUVFJf RFNJWkVfMTZCSVQgPDwgOCkKPiArI2RlZmluZSBFRE1BX1RDRF9BVFRSX1NTSVpFXzMyQklUCShF RE1BX1RDRF9BVFRSX0RTSVpFXzMyQklUIDw8IDgpCj4gKyNkZWZpbmUgRURNQV9UQ0RfQVRUUl9T U0laRV82NEJJVAkoRURNQV9UQ0RfQVRUUl9EU0laRV82NEJJVCA8PCA4KQo+ICsjZGVmaW5lIEVE TUFfVENEX0FUVFJfU1NJWkVfMzJCWVRFCShFRE1BX1RDRF9BVFRSX0RTSVpFXzMyQllURSA8PCA4 KQo+ICsKPiArI2RlZmluZSBFRE1BX1RDRF9DSVRFUl9DSVRFUih4KQkJKCh4KSAmIEdFTk1BU0so MTQsIDApKQo+ICsjZGVmaW5lIEVETUFfVENEX0JJVEVSX0JJVEVSKHgpCQkoKHgpICYgR0VOTUFT SygxNCwgMCkpCj4gIAo+ICAjZGVmaW5lIEVETUFfVENEX0NTUl9TVEFSVAkJQklUKDApCj4gICNk ZWZpbmUgRURNQV9UQ0RfQ1NSX0lOVF9NQUpPUgkJQklUKDEpCj4gQEAgLTg3LDcgKzUzLDcgQEAK PiAgCj4gICNkZWZpbmUgRURNQU1VWF9DSENGR19ESVMJCTB4MAo+ICAjZGVmaW5lIEVETUFNVVhf Q0hDRkdfRU5CTAkJMHg4MAo+IC0jZGVmaW5lIEVETUFNVVhfQ0hDRkdfU09VUkNFKG4pCQkoKG4p ICYgMHgzRikKPiArI2RlZmluZSBFRE1BTVVYX0NIQ0ZHX1NPVVJDRShuKQkJKChuKSAmIEdFTk1B U0soNiwgMCkpCj4gIAo+ICAjZGVmaW5lIERNQU1VWF9OUgkyCj4gIAo+IEBAIC0xMTQsNiArODAs MzEgQEAgc3RydWN0IGZzbF9lZG1hX2h3X3RjZCB7Cj4gIAlfX2xlMTYJYml0ZXI7Cj4gIH07Cj4g IAo+ICsvKgo+ICsgKiBUaGlzIGFyZSBpb21lbSBwb2ludGVycywgZm9yIGJvdGggdjMyIGFuZCB2 NjQuCj4gKyAqLwo+ICtzdHJ1Y3QgZWRtYV9yZWdzIHsKPiArCXZvaWQgX19pb21lbSAqY3I7Cj4g Kwl2b2lkIF9faW9tZW0gKmVzOwo+ICsJdm9pZCBfX2lvbWVtICplcnFoOwo+ICsJdm9pZCBfX2lv bWVtICplcnFsOwkvKiBha2EgZXJxIG9uIHYzMiAqLwo+ICsJdm9pZCBfX2lvbWVtICplZWloOwo+ ICsJdm9pZCBfX2lvbWVtICplZWlsOwkvKiBha2EgZWVpIG9uIHYzMiAqLwo+ICsJdm9pZCBfX2lv bWVtICpzZWVpOwo+ICsJdm9pZCBfX2lvbWVtICpjZWVpOwo+ICsJdm9pZCBfX2lvbWVtICpzZXJx Owo+ICsJdm9pZCBfX2lvbWVtICpjZXJxOwo+ICsJdm9pZCBfX2lvbWVtICpjaW50Owo+ICsJdm9p ZCBfX2lvbWVtICpjZXJyOwo+ICsJdm9pZCBfX2lvbWVtICpzc3J0Owo+ICsJdm9pZCBfX2lvbWVt ICpjZG5lOwo+ICsJdm9pZCBfX2lvbWVtICppbnRoOwo+ICsJdm9pZCBfX2lvbWVtICppbnRsOwo+ ICsJdm9pZCBfX2lvbWVtICplcnJoOwo+ICsJdm9pZCBfX2lvbWVtICplcnJsOwo+ICsJc3RydWN0 IGZzbF9lZG1hX2h3X3RjZCBfX2lvbWVtICp0Y2Q7Cj4gK307Cj4gKwo+ICBzdHJ1Y3QgZnNsX2Vk bWFfc3dfdGNkIHsKPiAgCWRtYV9hZGRyX3QJCQlwdGNkOwo+ICAJc3RydWN0IGZzbF9lZG1hX2h3 X3RjZAkJKnZ0Y2Q7Cj4gQEAgLTE0Nyw2ICsxMzgsMTEgQEAgc3RydWN0IGZzbF9lZG1hX2Rlc2Mg ewo+ICAJc3RydWN0IGZzbF9lZG1hX3N3X3RjZAkJdGNkW107Cj4gIH07Cj4gIAo+ICtlbnVtIGVk bWFfdmVyc2lvbiB7Cj4gKwl2MSwgLyogMzJjaCwgVnliZGlyLCBtcGM1N3gsIGV0YyAqLwo+ICsJ djIsIC8qIDY0Y2ggQ29sZGZpcmUgKi8KPiArfTsKPiArCj4gIHN0cnVjdCBmc2xfZWRtYV9lbmdp bmUgewo+ICAJc3RydWN0IGRtYV9kZXZpY2UJZG1hX2RldjsKPiAgCXZvaWQgX19pb21lbQkJKm1l bWJhc2U7Cj4gQEAgLTE1Nyw2ICsxNTMsOCBAQCBzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lIHsKPiAg CWludAkJCXR4aXJxOwo+ICAJaW50CQkJZXJyaXJxOwo+ICAJYm9vbAkJCWJpZ19lbmRpYW47Cj4g KwllbnVtIGVkbWFfdmVyc2lvbgl2ZXJzaW9uOwo+ICsJc3RydWN0IGVkbWFfcmVncwlyZWdzOwo+ ICAJc3RydWN0IGZzbF9lZG1hX2NoYW4JY2hhbnNbXTsKPiAgfTsKPiAgCj4gQEAgLTE5Miw1ICsx OTAsNiBAQCB2b2lkIGZzbF9lZG1hX2lzc3VlX3BlbmRpbmcoc3RydWN0IGRtYV9jaGFuICpjaGFu KTsKPiAgaW50IGZzbF9lZG1hX2FsbG9jX2NoYW5fcmVzb3VyY2VzKHN0cnVjdCBkbWFfY2hhbiAq Y2hhbik7Cj4gIHZvaWQgZnNsX2VkbWFfZnJlZV9jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2No YW4gKmNoYW4pOwo+ICB2b2lkIGZzbF9lZG1hX2NsZWFudXBfdmNoYW4oc3RydWN0IGRtYV9kZXZp Y2UgKmRtYWRldik7Cj4gK3ZvaWQgZnNsX2VkbWFfc2V0dXBfcmVncyhzdHJ1Y3QgZnNsX2VkbWFf ZW5naW5lICplZG1hKTsKPiAgCj4gICNlbmRpZiAvKiBfRlNMX0VETUFfQ09NTU9OX0hfICovCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2ZzbC1lZG1hLmMgYi9kcml2ZXJzL2RtYS9mc2wtZWRt YS5jCj4gaW5kZXggMzM3YWQwYzBlYTc4Li4zNGQ3MDExMmZjYzkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9kbWEvZnNsLWVkbWEuYwo+ICsrKyBiL2RyaXZlcnMvZG1hL2ZzbC1lZG1hLmMKPiBAQCAt MjgsMTkgKzI4LDE2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBmc2xfZWRtYV90eF9oYW5kbGVyKGlu dCBpcnEsCj4gdm9pZCAqZGV2X2lkKQo+ICB7Cj4gIAlzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lICpm c2xfZWRtYSA9IGRldl9pZDsKPiAgCXVuc2lnbmVkIGludCBpbnRyLCBjaDsKPiAtCXZvaWQgX19p b21lbSAqYmFzZV9hZGRyOwo+ICsJc3RydWN0IGVkbWFfcmVncyAqcmVncyA9ICZmc2xfZWRtYS0+ cmVnczsKPiAgCXN0cnVjdCBmc2xfZWRtYV9jaGFuICpmc2xfY2hhbjsKPiAgCj4gLQliYXNlX2Fk ZHIgPSBmc2xfZWRtYS0+bWVtYmFzZTsKPiAtCj4gLQlpbnRyID0gZWRtYV9yZWFkbChmc2xfZWRt YSwgYmFzZV9hZGRyICsgRURNQV9JTlRSKTsKPiArCWludHIgPSBlZG1hX3JlYWRsKGZzbF9lZG1h LCByZWdzLT5pbnRsKTsKPiAgCWlmICghaW50cikKPiAgCQlyZXR1cm4gSVJRX05PTkU7Cj4gIAo+ ICAJZm9yIChjaCA9IDA7IGNoIDwgZnNsX2VkbWEtPm5fY2hhbnM7IGNoKyspIHsKPiAgCQlpZiAo aW50ciAmICgweDEgPDwgY2gpKSB7Cj4gLQkJCWVkbWFfd3JpdGViKGZzbF9lZG1hLCBFRE1BX0NJ TlRfQ0lOVChjaCksCj4gLQkJCQliYXNlX2FkZHIgKyBFRE1BX0NJTlQpOwo+ICsJCQllZG1hX3dy aXRlYihmc2xfZWRtYSwgRURNQV9DSU5UX0NJTlQoY2gpLCByZWdzLT5jaW50KTsKPiAgCj4gIAkJ CWZzbF9jaGFuID0gJmZzbF9lZG1hLT5jaGFuc1tjaF07Cj4gIAo+IEBAIC02OCwxNiArNjUsMTYg QEAgc3RhdGljIGlycXJldHVybl90IGZzbF9lZG1hX2Vycl9oYW5kbGVyKGludCBpcnEsCj4gdm9p ZCAqZGV2X2lkKQo+ICB7Cj4gIAlzdHJ1Y3QgZnNsX2VkbWFfZW5naW5lICpmc2xfZWRtYSA9IGRl dl9pZDsKPiAgCXVuc2lnbmVkIGludCBlcnIsIGNoOwo+ICsJc3RydWN0IGVkbWFfcmVncyAqcmVn cyA9ICZmc2xfZWRtYS0+cmVnczsKPiAgCj4gLQllcnIgPSBlZG1hX3JlYWRsKGZzbF9lZG1hLCBm c2xfZWRtYS0+bWVtYmFzZSArIEVETUFfRVJSKTsKPiArCWVyciA9IGVkbWFfcmVhZGwoZnNsX2Vk bWEsIHJlZ3MtPmVycmwpOwo+ICAJaWYgKCFlcnIpCj4gIAkJcmV0dXJuIElSUV9OT05FOwo+ICAK PiAgCWZvciAoY2ggPSAwOyBjaCA8IGZzbF9lZG1hLT5uX2NoYW5zOyBjaCsrKSB7Cj4gIAkJaWYg KGVyciAmICgweDEgPDwgY2gpKSB7Cj4gIAkJCWZzbF9lZG1hX2Rpc2FibGVfcmVxdWVzdCgmZnNs X2VkbWEtPmNoYW5zW2NoXSk7Cj4gLQkJCWVkbWFfd3JpdGViKGZzbF9lZG1hLCBFRE1BX0NFUlJf Q0VSUihjaCksCj4gLQkJCQlmc2xfZWRtYS0+bWVtYmFzZSArIEVETUFfQ0VSUik7Cj4gKwkJCWVk bWFfd3JpdGViKGZzbF9lZG1hLCBFRE1BX0NFUlJfQ0VSUihjaCksIHJlZ3MtPmNlcnIpOwo+ICAJ CQlmc2xfZWRtYS0+Y2hhbnNbY2hdLnN0YXR1cyA9IERNQV9FUlJPUjsKPiAgCQkJZnNsX2VkbWEt PmNoYW5zW2NoXS5pZGxlID0gdHJ1ZTsKPiAgCQl9Cj4gQEAgLTE5Miw2ICsxODksNyBAQCBzdGF0 aWMgaW50IGZzbF9lZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlz dHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2Lm9mX25vZGU7Cj4gIAlzdHJ1Y3QgZnNs X2VkbWFfZW5naW5lICpmc2xfZWRtYTsKPiAgCXN0cnVjdCBmc2xfZWRtYV9jaGFuICpmc2xfY2hh bjsKPiArCXN0cnVjdCBlZG1hX3JlZ3MgKnJlZ3M7Cj4gIAlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsK PiAgCWludCBsZW4sIGNoYW5zOwo+ICAJaW50IHJldCwgaTsKPiBAQCAtMjA3LDYgKzIwNSw3IEBA IHN0YXRpYyBpbnQgZnNsX2VkbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiAgCWlmICghZnNsX2VkbWEpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+ICsJZnNsX2VkbWEt PnZlcnNpb24gPSB2MTsKPiAgCWZzbF9lZG1hLT5uX2NoYW5zID0gY2hhbnM7Cj4gIAltdXRleF9p bml0KCZmc2xfZWRtYS0+ZnNsX2VkbWFfbXV0ZXgpOwo+ICAKPiBAQCAtMjE1LDYgKzIxNCw5IEBA IHN0YXRpYyBpbnQgZnNsX2VkbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiAgCWlmIChJU19FUlIoZnNsX2VkbWEtPm1lbWJhc2UpKQo+ICAJCXJldHVybiBQVFJfRVJSKGZz bF9lZG1hLT5tZW1iYXNlKTsKPiAgCj4gKwlmc2xfZWRtYV9zZXR1cF9yZWdzKGZzbF9lZG1hKTsK PiArCXJlZ3MgPSAmZnNsX2VkbWEtPnJlZ3M7Cj4gKwo+ICAJZm9yIChpID0gMDsgaSA8IERNQU1V WF9OUjsgaSsrKSB7Cj4gIAkJY2hhciBjbGtuYW1lWzMyXTsKPiAgCj4gQEAgLTI1NSwxMSArMjU3 LDExIEBAIHN0YXRpYyBpbnQgZnNsX2VkbWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPiAgCQlmc2xfY2hhbi0+dmNoYW4uZGVzY19mcmVlID0gZnNsX2VkbWFfZnJlZV9kZXNj Owo+ICAJCXZjaGFuX2luaXQoJmZzbF9jaGFuLT52Y2hhbiwgJmZzbF9lZG1hLT5kbWFfZGV2KTsK PiAgCj4gLQkJZWRtYV93cml0ZXcoZnNsX2VkbWEsIDB4MCwgZnNsX2VkbWEtPm1lbWJhc2UgKyBF RE1BX1RDRF9DU1IoaSkpOwo+ICsJCWVkbWFfd3JpdGV3KGZzbF9lZG1hLCAweDAsICZyZWdzLT50 Y2RbaV0uY3NyKTsKPiAgCQlmc2xfZWRtYV9jaGFuX211eChmc2xfY2hhbiwgMCwgZmFsc2UpOwo+ ICAJfQo+ICAKPiAtCWVkbWFfd3JpdGVsKGZzbF9lZG1hLCB+MCwgZnNsX2VkbWEtPm1lbWJhc2Ug KyBFRE1BX0lOVFIpOwo+ICsJZWRtYV93cml0ZWwoZnNsX2VkbWEsIH4wLCByZWdzLT5pbnRsKTsK PiAgCXJldCA9IGZzbF9lZG1hX2lycV9pbml0KHBkZXYsIGZzbF9lZG1hKTsKPiAgCWlmIChyZXQp Cj4gIAkJcmV0dXJuIHJldDsKPiBAQCAtMzA2LDcgKzMwOCw3IEBAIHN0YXRpYyBpbnQgZnNsX2Vk bWFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgCX0KPiAgCj4gIAkvKiBl bmFibGUgcm91bmQgcm9iaW4gYXJiaXRyYXRpb24gKi8KPiAtCWVkbWFfd3JpdGVsKGZzbF9lZG1h LCBFRE1BX0NSX0VSR0EgfCBFRE1BX0NSX0VSQ0EsIGZzbF9lZG1hLT5tZW1iYXNlCj4gKyBFRE1B X0NSKTsKPiArCWVkbWFfd3JpdGVsKGZzbF9lZG1hLCBFRE1BX0NSX0VSR0EgfCBFRE1BX0NSX0VS Q0EsIHJlZ3MtPmNyKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC0zNTMsMTggKzM1NSwx OCBAQCBzdGF0aWMgaW50IGZzbF9lZG1hX3Jlc3VtZV9lYXJseShzdHJ1Y3QgZGV2aWNlICpkZXYp Cj4gIHsKPiAgCXN0cnVjdCBmc2xfZWRtYV9lbmdpbmUgKmZzbF9lZG1hID0gZGV2X2dldF9kcnZk YXRhKGRldik7Cj4gIAlzdHJ1Y3QgZnNsX2VkbWFfY2hhbiAqZnNsX2NoYW47Cj4gKwlzdHJ1Y3Qg ZWRtYV9yZWdzICpyZWdzID0gJmZzbF9lZG1hLT5yZWdzOwo+ICAJaW50IGk7Cj4gIAo+ICAJZm9y IChpID0gMDsgaSA8IGZzbF9lZG1hLT5uX2NoYW5zOyBpKyspIHsKPiAgCQlmc2xfY2hhbiA9ICZm c2xfZWRtYS0+Y2hhbnNbaV07Cj4gIAkJZnNsX2NoYW4tPnBtX3N0YXRlID0gUlVOTklORzsKPiAt CQllZG1hX3dyaXRldyhmc2xfZWRtYSwgMHgwLCBmc2xfZWRtYS0+bWVtYmFzZSArIEVETUFfVENE X0NTUihpKSk7Cj4gKwkJZWRtYV93cml0ZXcoZnNsX2VkbWEsIDB4MCwgJnJlZ3MtPnRjZFtpXS5j c3IpOwo+ICAJCWlmIChmc2xfY2hhbi0+c2xhdmVfaWQgIT0gMCkKPiAgCQkJZnNsX2VkbWFfY2hh bl9tdXgoZnNsX2NoYW4sIGZzbF9jaGFuLT5zbGF2ZV9pZCwgdHJ1ZSk7Cj4gIAl9Cj4gIAo+IC0J ZWRtYV93cml0ZWwoZnNsX2VkbWEsIEVETUFfQ1JfRVJHQSB8IEVETUFfQ1JfRVJDQSwKPiAtCQkJ ZnNsX2VkbWEtPm1lbWJhc2UgKyBFRE1BX0NSKTsKPiArCWVkbWFfd3JpdGVsKGZzbF9lZG1hLCBF RE1BX0NSX0VSR0EgfCBFRE1BX0NSX0VSQ0EsIHJlZ3MtPmNyKTsKPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQotLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5z dWJzY3JpYmUgZG1hZW5naW5lIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8gbWFqb3Jkb21v QHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8vdmdlci5rZXJu ZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK