From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: Re: [PATCH 16/25] drm/amdgpu: untie user ring ids from kernel ring ids v4 Date: Tue, 4 Apr 2017 23:06:51 -0400 Message-ID: References: <20170404220551.8669-1-andresx7@gmail.com> <20170404220551.8669-17-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-17-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Andres Rodriguez Cc: amd-gfx list T24gVHVlLCBBcHIgNCwgMjAxNyBhdCA2OjA1IFBNLCBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4 N0BnbWFpbC5jb20+IHdyb3RlOgo+IEFkZCBhbWRncHVfcXVldWVfbWdyLCBhIG1lY2hhbmlzbSB0 aGF0IGFsbG93cyBkaXNqb2ludGluZyB1c2VybW9kZSdzCj4gcmluZyBpZHMgZnJvbSB0aGUga2Vy bmVsJ3MgcmluZyBpZHMuCj4KPiBUaGUgcXVldWUgbWFuYWdlciBtYWludGFpbnMgYSBwZXItZmls ZSBkZXNjcmlwdG9yIG1hcCBvZiB1c2VyIHJpbmcgaWRzCj4gdG8gYW1kZ3B1X3JpbmcgcG9pbnRl cnMuIE9uY2UgYSBtYXAgaXMgY3JlYXRlZCBpdCBpcyBwZXJtYW5lbnQgKHRoaXMgaXMKPiByZXF1 aXJlZCB0byBtYWludGFpbiBGSUZPIGV4ZWN1dGlvbiBndWFyYW50ZWVzIGZvciBhIGNvbnRleHQn cyByaW5nKS4KPgo+IERpZmZlcmVudCBxdWV1ZSBtYXAgcG9saWNpZXMgY2FuIGJlIGNvbmZpZ3Vy ZWQgZm9yIGVhY2ggSFcgSVAuCj4gQ3VycmVudGx5IGFsbCBIVyBJUHMgdXNlIHRoZSBpZGVudGl0 eSBtYXBwZXIsIGkuZS4ga2VybmVsIHJpbmcgaWQgaXMKPiBlcXVhbCB0byB0aGUgdXNlciByaW5n IGlkLgo+Cj4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZWNoYW5pc20gaXMgdG8gZGlzdHJpYnV0ZSB0 aGUgbG9hZCBhY3Jvc3MgbXVsdGlwbGUKPiBxdWV1ZXMgbW9yZSBlZmZlY3RpdmVseSBmb3IgSFcg SVBzIHRoYXQgc3VwcG9ydCBtdWx0aXBsZSByaW5ncy4KPiBVc2Vyc3BhY2UgY2xpZW50cyBhcmUg dW5hYmxlIHRvIGNoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyByZXNvdXJjZSBpcyBpbgo+IHVzZSBi eSBhIGRpZmZlcmVudCBjbGllbnQuIFRoZXJlZm9yZSwgaXQgaXMgdXAgdG8gdGhlIGtlcm5lbCBk cml2ZXIgdG8KPiBtYWtlIHRoZSBvcHRpbWFsIGNob2ljZS4KPgo+IHYyOiByZW1vdmUgYW1kZ3B1 X3F1ZXVlX21hcHBlcl9mdW5jcwo+IHYzOiBtYWRlIGFtZGdwdV9xdWV1ZV9tZ3IgcGVyIGNvbnRl eHQgaW5zdGVhZCBvZiBwZXItZmQKPiB2NDogYWRkIGNvbnRleHRfcHV0IG9uIGVycm9yIHBhdGhz Cj4KPiBSZXZpZXdlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQu Y29tPgo+IFNpZ25lZC1vZmYtYnk6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgICAgICAgICAg IHwgICAzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAg ICB8ICAyNyArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgICAg ICAgIHwgMTE3ICsrKy0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2N0eC5jICAgICAgIHwgICA2ICsKPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3F1ZXVlX21nci5jIHwgMjMwICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMgICAgICB8ICA0NSArKysrKwo+ICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oICAgICAgfCAgIDIgKwo+ICA3 IGZpbGVzIGNoYW5nZWQsIDMzNSBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9xdWV1ZV9t Z3IuYwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKPiBpbmRleCA2NjA3ODZhLi5k ZDQ4ZWIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxl Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKPiBAQCAtMTcsMjEg KzE3LDIyIEBAIGFtZGdwdS15IDo9IGFtZGdwdV9kcnYubwo+ICBhbWRncHUteSArPSBhbWRncHVf ZGV2aWNlLm8gYW1kZ3B1X2ttcy5vIFwKPiAgICAgICAgIGFtZGdwdV9hdG9tYmlvcy5vIGF0b21i aW9zX2NydGMubyBhbWRncHVfY29ubmVjdG9ycy5vIFwKPiAgICAgICAgIGF0b20ubyBhbWRncHVf ZmVuY2UubyBhbWRncHVfdHRtLm8gYW1kZ3B1X29iamVjdC5vIGFtZGdwdV9nYXJ0Lm8gXAo+ICAg ICAgICAgYW1kZ3B1X2VuY29kZXJzLm8gYW1kZ3B1X2Rpc3BsYXkubyBhbWRncHVfaTJjLm8gXAo+ ICAgICAgICAgYW1kZ3B1X2ZiLm8gYW1kZ3B1X2dlbS5vIGFtZGdwdV9yaW5nLm8gXAo+ICAgICAg ICAgYW1kZ3B1X2NzLm8gYW1kZ3B1X2Jpb3MubyBhbWRncHVfYmVuY2htYXJrLm8gYW1kZ3B1X3Rl c3QubyBcCj4gICAgICAgICBhbWRncHVfcG0ubyBhdG9tYmlvc19kcC5vIGFtZGdwdV9hZm10Lm8g YW1kZ3B1X3RyYWNlX3BvaW50cy5vIFwKPiAgICAgICAgIGF0b21iaW9zX2VuY29kZXJzLm8gYW1k Z3B1X3NhLm8gYXRvbWJpb3NfaTJjLm8gXAo+ICAgICAgICAgYW1kZ3B1X3ByaW1lLm8gYW1kZ3B1 X3ZtLm8gYW1kZ3B1X2liLm8gYW1kZ3B1X3BsbC5vIFwKPiAgICAgICAgIGFtZGdwdV91Y29kZS5v IGFtZGdwdV9ib19saXN0Lm8gYW1kZ3B1X2N0eC5vIGFtZGdwdV9zeW5jLm8gXAo+IC0gICAgICAg YW1kZ3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3IubyBhbWRncHVfdmlydC5vIGFtZGdwdV9h dG9tZmlybXdhcmUubwo+ICsgICAgICAgYW1kZ3B1X2d0dF9tZ3IubyBhbWRncHVfdnJhbV9tZ3Iu byBhbWRncHVfdmlydC5vIGFtZGdwdV9hdG9tZmlybXdhcmUubyBcCj4gKyAgICAgICBhbWRncHVf cXVldWVfbWdyLm8KPgo+ICAjIGFkZCBhc2ljIHNwZWNpZmljIGJsb2NrCj4gIGFtZGdwdS0kKENP TkZJR19EUk1fQU1ER1BVX0NJSykrPSBjaWsubyBjaWtfaWgubyBrdl9zbWMubyBrdl9kcG0ubyBc Cj4gICAgICAgICBjaV9zbWMubyBjaV9kcG0ubyBkY2VfdjhfMC5vIGdmeF92N18wLm8gY2lrX3Nk bWEubyB1dmRfdjRfMi5vIHZjZV92Ml8wLm8gXAo+ICAgICAgICAgYW1kZ3B1X2FtZGtmZF9nZnhf djcubwo+Cj4gIGFtZGdwdS0kKENPTkZJR19EUk1fQU1ER1BVX1NJKSs9IHNpLm8gZ21jX3Y2XzAu byBnZnhfdjZfMC5vIHNpX2loLm8gc2lfZG1hLm8gZGNlX3Y2XzAubyBzaV9kcG0ubyBzaV9zbWMu bwo+Cj4gIGFtZGdwdS15ICs9IFwKPiAgICAgICAgIHZpLm8gbXhncHVfdmkubyBuYmlvX3Y2XzEu byBzb2MxNS5vIG14Z3B1X2FpLm8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+IGlu ZGV4IDA2NzRiYTAuLjljYTY0NzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aAo+IEBAIC03ODAsMzIgKzc4MCw1NiBAQCBpbnQgYW1kZ3B1X2pvYl9hbGxvYyhzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgbnVtX2licywKPiAgaW50IGFtZGdwdV9qb2JfYWxs b2Nfd2l0aF9pYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgc2l6ZSwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfam9iICoqam9iKTsKPgo+ ICB2b2lkIGFtZGdwdV9qb2JfZnJlZV9yZXNvdXJjZXMoc3RydWN0IGFtZGdwdV9qb2IgKmpvYik7 Cj4gIHZvaWQgYW1kZ3B1X2pvYl9mcmVlKHN0cnVjdCBhbWRncHVfam9iICpqb2IpOwo+ICBpbnQg YW1kZ3B1X2pvYl9zdWJtaXQoc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwgc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLAo+ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kX3NjaGVkX2VudGl0 eSAqZW50aXR5LCB2b2lkICpvd25lciwKPiAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRt YV9mZW5jZSAqKmYpOwo+Cj4gIC8qCj4gKyAqIFF1ZXVlIG1hbmFnZXIKPiArICovCj4gK3N0cnVj dCBhbWRncHVfcXVldWVfbWFwcGVyIHsKPiArICAgICAgIGludCAgICAgICAgICAgICBod19pcDsK PiArICAgICAgIHN0cnVjdCBtdXRleCAgICBsb2NrOwo+ICsgICAgICAgLyogcHJvdGVjdGVkIGJ5 IGxvY2sgKi8KPiArICAgICAgIHN0cnVjdCBhbWRncHVfcmluZyAqcXVldWVfbWFwW0FNREdQVV9N QVhfUklOR1NdOwo+ICt9Owo+ICsKPiArc3RydWN0IGFtZGdwdV9xdWV1ZV9tZ3Igewo+ICsgICAg ICAgc3RydWN0IGFtZGdwdV9xdWV1ZV9tYXBwZXIgbWFwcGVyW0FNREdQVV9NQVhfSVBfTlVNXTsK PiArfTsKPiArCj4gK2ludCBhbWRncHVfcXVldWVfbWdyX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3F1ZXVl X21nciAqbWdyKTsKPiAraW50IGFtZGdwdV9xdWV1ZV9tZ3JfZmluaShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfcXVl dWVfbWdyICptZ3IpOwo+ICtpbnQgYW1kZ3B1X3F1ZXVlX21ncl9tYXAoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfcXVl dWVfbWdyICptZ3IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBod19pcCwgaW50IGlu c3RhbmNlLCBpbnQgcmluZywKPiArICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdw dV9yaW5nICoqb3V0X3JpbmcpOwo+ICsKClBsZWFzZSBhZGQgYSBuZXcgYW1kZ3B1X3F1ZXVlX21n ci5oIGZvciB0aGVzZS4KCkFsZXgKCj4gKy8qCj4gICAqIGNvbnRleHQgcmVsYXRlZCBzdHJ1Y3R1 cmVzCj4gICAqLwo+Cj4gIHN0cnVjdCBhbWRncHVfY3R4X3Jpbmcgewo+ICAgICAgICAgdWludDY0 X3QgICAgICAgICAgICAgICAgc2VxdWVuY2U7Cj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICAg ICAgICAqKmZlbmNlczsKPiAgICAgICAgIHN0cnVjdCBhbWRfc2NoZWRfZW50aXR5IGVudGl0eTsK PiAgfTsKPgo+ICBzdHJ1Y3QgYW1kZ3B1X2N0eCB7Cj4gICAgICAgICBzdHJ1Y3Qga3JlZiAgICAg ICAgICAgICByZWZjb3VudDsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICAgICphZGV2 Owo+ICsgICAgICAgc3RydWN0IGFtZGdwdV9xdWV1ZV9tZ3IgcXVldWVfbWdyOwo+ICAgICAgICAg dW5zaWduZWQgICAgICAgICAgICAgICAgcmVzZXRfY291bnRlcjsKPiAgICAgICAgIHNwaW5sb2Nr X3QgICAgICAgICAgICAgIHJpbmdfbG9jazsKPiAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgICAg ICAgICoqZmVuY2VzOwo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9jdHhfcmluZyAgcmluZ3NbQU1E R1BVX01BWF9SSU5HU107Cj4gICAgICAgICBib29sIHByZWFtYmxlX3ByZXNlbnRlZDsKPiAgfTsK Pgo+ICBzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3Igewo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZp Y2UgICAgKmFkZXY7Cj4gICAgICAgICBzdHJ1Y3QgbXV0ZXggICAgICAgICAgICBsb2NrOwo+IEBA IC0xODczLDIzICsxODk3LDIwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhbWRncHVfaXNfbWVjX3F1 ZXVlX2VuYWJsZWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICNkZWZpbmUgYW1kZ3B1 X3BzcF9jaGVja19md19sb2FkaW5nX3N0YXR1cyhhZGV2LCBpKSAoYWRldiktPmZpcm13YXJlLmZ1 bmNzLT5jaGVja19md19sb2FkaW5nX3N0YXR1cygoYWRldiksIChpKSkKPgo+ICAvKiBDb21tb24g ZnVuY3Rpb25zICovCj4gIGludCBhbWRncHVfZ3B1X3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KTsKPiAgYm9vbCBhbWRncHVfbmVlZF9iYWNrdXAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYpOwo+ICB2b2lkIGFtZGdwdV9wY2lfY29uZmlnX3Jlc2V0KHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2KTsKPiAgYm9vbCBhbWRncHVfbmVlZF9wb3N0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2KTsKPiAgdm9pZCBhbWRncHVfdXBkYXRlX2Rpc3BsYXlfcHJpb3JpdHkoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYpOwo+Cj4gIGludCBhbWRncHVfY3NfcGFyc2VyX2luaXQoc3RydWN0 IGFtZGdwdV9jc19wYXJzZXIgKnAsIHZvaWQgKmRhdGEpOwo+IC1pbnQgYW1kZ3B1X2NzX2dldF9y aW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgaXBfdHlwZSwKPiAtICAgICAgICAg ICAgICAgICAgICAgIHUzMiBpcF9pbnN0YW5jZSwgdTMyIHJpbmcsCj4gLSAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKipvdXRfcmluZyk7Cj4gIHZvaWQgYW1kZ3B1X2Nz X3JlcG9ydF9tb3ZlZF9ieXRlcyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdTY0IG51bV9i eXRlcyk7Cj4gIHZvaWQgYW1kZ3B1X3R0bV9wbGFjZW1lbnRfZnJvbV9kb21haW4oc3RydWN0IGFt ZGdwdV9ibyAqYWJvLCB1MzIgZG9tYWluKTsKPiAgYm9vbCBhbWRncHVfdHRtX2JvX2lzX2FtZGdw dV9ibyhzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKTsKPiAgaW50IGFtZGdwdV90dG1fdHRf Z2V0X3VzZXJfcGFnZXMoc3RydWN0IHR0bV90dCAqdHRtLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzKTsK PiAgaW50IGFtZGdwdV90dG1fdHRfc2V0X3VzZXJwdHIoc3RydWN0IHR0bV90dCAqdHRtLCB1aW50 NjRfdCBhZGRyLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf dCBmbGFncyk7Cj4gIGJvb2wgYW1kZ3B1X3R0bV90dF9oYXNfdXNlcnB0cihzdHJ1Y3QgdHRtX3R0 ICp0dG0pOwo+ICBzdHJ1Y3QgbW1fc3RydWN0ICphbWRncHVfdHRtX3R0X2dldF91c2VybW0oc3Ry dWN0IHR0bV90dCAqdHRtKTsKPiAgYm9vbCBhbWRncHVfdHRtX3R0X2FmZmVjdF91c2VycHRyKHN0 cnVjdCB0dG1fdHQgKnR0bSwgdW5zaWduZWQgbG9uZyBzdGFydCwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBlbmQpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9jcy5jCj4gaW5kZXggOWM3ZjdlZC4uMWQ5MWVlOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gQEAgLTIzLDkyICsyMywyMCBAQAo+ICAg Kgo+ICAgKiBBdXRob3JzOgo+ICAgKiAgICBKZXJvbWUgR2xpc3NlIDxnbGlzc2VAZnJlZWRlc2t0 b3Aub3JnPgo+ICAgKi8KPiAgI2luY2x1ZGUgPGxpbnV4L3BhZ2VtYXAuaD4KPiAgI2luY2x1ZGUg PGRybS9kcm1QLmg+Cj4gICNpbmNsdWRlIDxkcm0vYW1kZ3B1X2RybS5oPgo+ICAjaW5jbHVkZSAi YW1kZ3B1LmgiCj4gICNpbmNsdWRlICJhbWRncHVfdHJhY2UuaCIKPgo+IC1pbnQgYW1kZ3B1X2Nz X2dldF9yaW5nKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1MzIgaXBfdHlwZSwKPiAtICAg ICAgICAgICAgICAgICAgICAgIHUzMiBpcF9pbnN0YW5jZSwgdTMyIHJpbmcsCj4gLSAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKipvdXRfcmluZykKPiAtewo+IC0gICAg ICAgLyogUmlnaHQgbm93IGFsbCBJUHMgaGF2ZSBvbmx5IG9uZSBpbnN0YW5jZSAtIG11bHRpcGxl IHJpbmdzLiAqLwo+IC0gICAgICAgaWYgKGlwX2luc3RhbmNlICE9IDApIHsKPiAtICAgICAgICAg ICAgICAgRFJNX0VSUk9SKCJpbnZhbGlkIGlwIGluc3RhbmNlOiAlZFxuIiwgaXBfaW5zdGFuY2Up Owo+IC0gICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgIH0KPiAtCj4gLSAg ICAgICBzd2l0Y2ggKGlwX3R5cGUpIHsKPiAtICAgICAgIGRlZmF1bHQ6Cj4gLSAgICAgICAgICAg ICAgIERSTV9FUlJPUigidW5rbm93biBpcCB0eXBlOiAlZFxuIiwgaXBfdHlwZSk7Cj4gLSAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgY2FzZSBBTURHUFVfSFdfSVBfR0ZY Ogo+IC0gICAgICAgICAgICAgICBpZiAocmluZyA8IGFkZXYtPmdmeC5udW1fZ2Z4X3JpbmdzKSB7 Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgKm91dF9yaW5nID0gJmFkZXYtPmdmeC5nZnhfcmlu Z1tyaW5nXTsKPiAtICAgICAgICAgICAgICAgfSBlbHNlIHsKPiAtICAgICAgICAgICAgICAgICAg ICAgICBEUk1fRVJST1IoIm9ubHkgJWQgZ2Z4IHJpbmdzIGFyZSBzdXBwb3J0ZWQgbm93XG4iLAo+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGV2LT5nZngubnVtX2dmeF9yaW5n cyk7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICAg ICAgICAgIH0KPiAtICAgICAgICAgICAgICAgYnJlYWs7Cj4gLSAgICAgICBjYXNlIEFNREdQVV9I V19JUF9DT01QVVRFOgo+IC0gICAgICAgICAgICAgICBpZiAocmluZyA8IGFkZXYtPmdmeC5udW1f Y29tcHV0ZV9yaW5ncykgewo+IC0gICAgICAgICAgICAgICAgICAgICAgICpvdXRfcmluZyA9ICZh ZGV2LT5nZnguY29tcHV0ZV9yaW5nW3JpbmddOwo+IC0gICAgICAgICAgICAgICB9IGVsc2Ugewo+ IC0gICAgICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigib25seSAlZCBjb21wdXRlIHJpbmdz IGFyZSBzdXBwb3J0ZWQgbm93XG4iLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3MpOwo+IC0gICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+IC0gICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgICAgIGJy ZWFrOwo+IC0gICAgICAgY2FzZSBBTURHUFVfSFdfSVBfRE1BOgo+IC0gICAgICAgICAgICAgICBp ZiAocmluZyA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlcykgewo+IC0gICAgICAgICAgICAgICAg ICAgICAgICpvdXRfcmluZyA9ICZhZGV2LT5zZG1hLmluc3RhbmNlW3JpbmddLnJpbmc7Cj4gLSAg ICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgRFJNX0VSUk9S KCJvbmx5ICVkIFNETUEgcmluZ3MgYXJlIHN1cHBvcnRlZFxuIiwKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWRldi0+c2RtYS5udW1faW5zdGFuY2VzKTsKPiAtICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgICAgICAgICAgfQo+IC0gICAg ICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1VWRDoKPiAtICAg ICAgICAgICAgICAgKm91dF9yaW5nID0gJmFkZXYtPnV2ZC5yaW5nOwo+IC0gICAgICAgICAgICAg ICBicmVhazsKPiAtICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1ZDRToKPiAtICAgICAgICAgICAg ICAgaWYgKHJpbmcgPCBhZGV2LT52Y2UubnVtX3JpbmdzKXsKPiAtICAgICAgICAgICAgICAgICAg ICAgICAqb3V0X3JpbmcgPSAmYWRldi0+dmNlLnJpbmdbcmluZ107Cj4gLSAgICAgICAgICAgICAg IH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJvbmx5ICVkIFZD RSByaW5ncyBhcmUgc3VwcG9ydGVkXG4iLCBhZGV2LT52Y2UubnVtX3JpbmdzKTsKPiAtICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgICAgICAgICAgfQo+IC0g ICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1VWRF9FTkM6 Cj4gLSAgICAgICAgICAgICAgIGlmIChyaW5nIDwgYWRldi0+dXZkLm51bV9lbmNfcmluZ3Mpewo+ IC0gICAgICAgICAgICAgICAgICAgICAgICpvdXRfcmluZyA9ICZhZGV2LT51dmQucmluZ19lbmNb cmluZ107Cj4gLSAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAg ICAgRFJNX0VSUk9SKCJvbmx5ICVkIFVWRCBFTkMgcmluZ3MgYXJlIHN1cHBvcnRlZFxuIiwKPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZXYtPnV2ZC5udW1fZW5jX3JpbmdzKTsK PiAtICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAtICAgICAgICAgICAg ICAgfQo+IC0gICAgICAgICAgICAgICBicmVhazsKPiAtICAgICAgIH0KPiAtCj4gLSAgICAgICBp ZiAoISgqb3V0X3JpbmcgJiYgKCpvdXRfcmluZyktPmFkZXYpKSB7Cj4gLSAgICAgICAgICAgICAg IERSTV9FUlJPUigiUmluZyAlZCBpcyBub3QgaW5pdGlhbGl6ZWQgb24gSVAgJWRcbiIsCj4gLSAg ICAgICAgICAgICAgICAgICAgICAgICByaW5nLCBpcF90eXBlKTsKPiAtICAgICAgICAgICAgICAg cmV0dXJuIC1FSU5WQUw7Cj4gLSAgICAgICB9Cj4gLQo+IC0gICAgICAgcmV0dXJuIDA7Cj4gLX0K PiAtCj4gIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3VzZXJfZmVuY2VfY2h1bmsoc3RydWN0IGFtZGdw dV9jc19wYXJzZXIgKnAsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19mZW5jZSAqZGF0YSwKPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpvZmZzZXQpCj4gIHsKPiAgICAgICAgIHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ29iajsKPiAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2l6ZTsK Pgo+ICAgICAgICAgZ29iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChwLT5maWxwLCBkYXRhLT5o YW5kbGUpOwo+ICAgICAgICAgaWYgKGdvYmogPT0gTlVMTCkKPiAgICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gQEAgLTkwOSwyMyArODM3LDIyIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2Nz X2liX2ZpbGwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNlX3ByZWVtcHQrKzsKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2UKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVfcHJlZW1wdCsrOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIH0KPgo+ICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIGVhY2ggR0ZYIGNvbW1hbmQgc3VibWl0IGFsbG93cyAwIG9yIDEg SUIgcHJlZW1wdGlibGUgZm9yIENFICYgREUgKi8KPiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoY2VfcHJlZW1wdCA+IDEgfHwgZGVfcHJlZW1wdCA+IDEpCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAgICAgICAgICAgICAgICAgfQo+Cj4gLSAg ICAgICAgICAgICAgIHIgPSBhbWRncHVfY3NfZ2V0X3JpbmcoYWRldiwgY2h1bmtfaWItPmlwX3R5 cGUsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfaWItPmlw X2luc3RhbmNlLCBjaHVua19pYi0+cmluZywKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmcmluZyk7Cj4gKyAgICAgICAgICAgICAgIHIgPSBhbWRncHVfcXVldWVfbWdy X21hcChhZGV2LCAmcGFyc2VyLT5jdHgtPnF1ZXVlX21nciwgY2h1bmtfaWItPmlwX3R5cGUsCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua19pYi0+aXBfaW5z dGFuY2UsIGNodW5rX2liLT5yaW5nLCAmcmluZyk7Cj4gICAgICAgICAgICAgICAgIGlmIChyKQo+ ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+Cj4gICAgICAgICAgICAgICAgIGlm IChjaHVua19pYi0+ZmxhZ3MgJiBBTURHUFVfSUJfRkxBR19QUkVBTUJMRSkgewo+ICAgICAgICAg ICAgICAgICAgICAgICAgIHBhcnNlci0+am9iLT5wcmVhbWJsZV9zdGF0dXMgfD0gQU1ER1BVX1BS RUFNQkxFX0lCX1BSRVNFTlQ7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZXIt PmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXJzZXItPmpvYi0+cHJlYW1ibGVfc3RhdHVzIHw9IEFNREdQVV9QUkVBTUJMRV9JQl9Q UkVTRU5UX0ZJUlNUOwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5j dHgtPnByZWFtYmxlX3ByZXNlbnRlZCA9IHRydWU7Cj4gICAgICAgICAgICAgICAgICAgICAgICAg fQo+ICAgICAgICAgICAgICAgICB9Cj4gQEAgLTEwMTMsMzAgKzk0MCwzMyBAQCBzdGF0aWMgaW50 IGFtZGdwdV9jc19kZXBlbmRlbmNpZXMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4KPiAg ICAgICAgICAgICAgICAgZGVwcyA9IChzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19kZXAgKilj aHVuay0+a2RhdGE7Cj4gICAgICAgICAgICAgICAgIG51bV9kZXBzID0gY2h1bmstPmxlbmd0aF9k dyAqIDQgLwo+ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgZHJtX2FtZGdw dV9jc19jaHVua19kZXApOwo+Cj4gICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBudW1f ZGVwczsgKytqKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfY3R4ICpjdHg7 Cj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4KPiAt ICAgICAgICAgICAgICAgICAgICAgICByID0gYW1kZ3B1X2NzX2dldF9yaW5nKGFkZXYsIGRlcHNb al0uaXBfdHlwZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlcHNbal0uaXBfaW5zdGFuY2UsCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZXBzW2pdLnJpbmcsICZyaW5nKTsKPiAtICAgICAgICAgICAgICAg ICAgICAgICBpZiAocikKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBy Owo+IC0KPiAgICAgICAgICAgICAgICAgICAgICAgICBjdHggPSBhbWRncHVfY3R4X2dldChmcHJp diwgZGVwc1tqXS5jdHhfaWQpOwo+ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdHggPT0g TlVMTCkKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgciA9IGFtZGdwdV9xdWV1ZV9tZ3JfbWFwKGFkZXYs ICZjdHgtPnF1ZXVlX21nciwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVwc1tqXS5pcF90eXBlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXBzW2pdLmlwX2luc3RhbmNlLAo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzW2pdLnJpbmcsICZyaW5n KTsKPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocikgewo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYW1kZ3B1X2N0eF9wdXQoY3R4KTsKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByOwo+ICsgICAgICAgICAgICAgICAgICAgICAgIH0KPiArCj4g ICAgICAgICAgICAgICAgICAgICAgICAgZmVuY2UgPSBhbWRncHVfY3R4X2dldF9mZW5jZShjdHgs IHJpbmcsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXBzW2pdLmhhbmRsZSk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElTX0VS UihmZW5jZSkpIHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBQVFJfRVJS KGZlbmNlKTsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtZGdwdV9jdHhfcHV0 KGN0eCk7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPgo+ICAg ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmVuY2UpIHsKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHIgPSBhbWRncHVfc3luY19mZW5jZShhZGV2LCAmcC0+am9iLT5z eW5jLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZlbmNlKTsKPiBAQCAtMTE0OCwyOSArMTA3OCwzMiBAQCBpbnQgYW1kZ3B1X2NzX3dhaXRf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxwKQo+ICB7Cj4gICAgICAgICB1bmlvbiBk cm1fYW1kZ3B1X3dhaXRfY3MgKndhaXQgPSBkYXRhOwo+ICAgICAgICAgc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgICAgICAgdW5zaWduZWQgbG9uZyB0 aW1lb3V0ID0gYW1kZ3B1X2dlbV90aW1lb3V0KHdhaXQtPmluLnRpbWVvdXQpOwo+ICAgICAgICAg c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gTlVMTDsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVf Y3R4ICpjdHg7Cj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAgICAgICAgIGxv bmcgcjsKPgo+IC0gICAgICAgciA9IGFtZGdwdV9jc19nZXRfcmluZyhhZGV2LCB3YWl0LT5pbi5p cF90eXBlLCB3YWl0LT5pbi5pcF9pbnN0YW5jZSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2FpdC0+aW4ucmluZywgJnJpbmcpOwo+IC0gICAgICAgaWYgKHIpCj4gLSAgICAgICAg ICAgICAgIHJldHVybiByOwo+IC0KPiAgICAgICAgIGN0eCA9IGFtZGdwdV9jdHhfZ2V0KGZpbHAt PmRyaXZlcl9wcml2LCB3YWl0LT5pbi5jdHhfaWQpOwo+ICAgICAgICAgaWYgKGN0eCA9PSBOVUxM KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPgo+ICsgICAgICAgciA9IGFtZGdw dV9xdWV1ZV9tZ3JfbWFwKGFkZXYsICZjdHgtPnF1ZXVlX21nciwKPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3YWl0LT5pbi5pcF90eXBlLCB3YWl0LT5pbi5pcF9pbnN0YW5jZSwK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0LT5pbi5yaW5nLCAmcmluZyk7 Cj4gKyAgICAgICBpZiAocikgewo+ICsgICAgICAgICAgICAgICBhbWRncHVfY3R4X3B1dChjdHgp Owo+ICsgICAgICAgICAgICAgICByZXR1cm4gcjsKPiArICAgICAgIH0KPiArCj4gICAgICAgICBm ZW5jZSA9IGFtZGdwdV9jdHhfZ2V0X2ZlbmNlKGN0eCwgcmluZywgd2FpdC0+aW4uaGFuZGxlKTsK PiAgICAgICAgIGlmIChJU19FUlIoZmVuY2UpKQo+ICAgICAgICAgICAgICAgICByID0gUFRSX0VS UihmZW5jZSk7Cj4gICAgICAgICBlbHNlIGlmIChmZW5jZSkgewo+ICAgICAgICAgICAgICAgICBy ID0gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChmZW5jZSwgdHJ1ZSwgdGltZW91dCk7Cj4gICAgICAg ICAgICAgICAgIGRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICAgICAgICAgfSBlbHNlCj4gICAgICAg ICAgICAgICAgIHIgPSAxOwo+Cj4gICAgICAgICBhbWRncHVfY3R4X3B1dChjdHgpOwo+IEBAIC0x MTkyLDI5ICsxMTI1LDMxIEBAIGludCBhbWRncHVfY3Nfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgKi8KPiAgc3RhdGljIHN0cnVjdCBkbWFfZmVuY2Ug KmFtZGdwdV9jc19nZXRfZmVuY2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpm aWxwLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBkcm1fYW1kZ3B1X2ZlbmNlICp1c2VyKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmc7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4Owo+ICAgICAgICAgc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gICAgICAgICBpbnQgcjsKPgo+IC0gICAgICAgciA9IGFt ZGdwdV9jc19nZXRfcmluZyhhZGV2LCB1c2VyLT5pcF90eXBlLCB1c2VyLT5pcF9pbnN0YW5jZSwK PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci0+cmluZywgJnJpbmcpOwo+IC0g ICAgICAgaWYgKHIpCj4gLSAgICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKHIpOwo+IC0KPiAg ICAgICAgIGN0eCA9IGFtZGdwdV9jdHhfZ2V0KGZpbHAtPmRyaXZlcl9wcml2LCB1c2VyLT5jdHhf aWQpOwo+ICAgICAgICAgaWYgKGN0eCA9PSBOVUxMKQo+ICAgICAgICAgICAgICAgICByZXR1cm4g RVJSX1BUUigtRUlOVkFMKTsKPgo+ICsgICAgICAgciA9IGFtZGdwdV9xdWV1ZV9tZ3JfbWFwKGFk ZXYsICZjdHgtPnF1ZXVlX21nciwgdXNlci0+aXBfdHlwZSwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1c2VyLT5pcF9pbnN0YW5jZSwgdXNlci0+cmluZywgJnJpbmcpOwo+ICsg ICAgICAgaWYgKHIpIHsKPiArICAgICAgICAgICAgICAgYW1kZ3B1X2N0eF9wdXQoY3R4KTsKPiAr ICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9QVFIocik7Cj4gKyAgICAgICB9Cj4gKwo+ICAgICAg ICAgZmVuY2UgPSBhbWRncHVfY3R4X2dldF9mZW5jZShjdHgsIHJpbmcsIHVzZXItPnNlcV9ubyk7 Cj4gICAgICAgICBhbWRncHVfY3R4X3B1dChjdHgpOwo+Cj4gICAgICAgICByZXR1cm4gZmVuY2U7 Cj4gIH0KPgo+ICAvKioKPiAgICogYW1kZ3B1X2NzX3dhaXRfYWxsX2ZlbmNlIC0gd2FpdCBvbiBh bGwgZmVuY2VzIHRvIHNpZ25hbAo+ICAgKgo+ICAgKiBAYWRldjogYW1kZ3B1IGRldmljZQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMgYi9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMKPiBpbmRleCBjZjA1MDA2Li5iMzhl ZGFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHgu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwo+IEBAIC01 MSwyMCArNTEsMjQgQEAgc3RhdGljIGludCBhbWRncHVfY3R4X2luaXQoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfY3R4ICpjdHgpCj4gICAgICAgICAgICAgICAgIHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZyA9IGFkZXYtPnJpbmdzW2ldOwo+ICAgICAgICAgICAgICAg ICBzdHJ1Y3QgYW1kX3NjaGVkX3JxICpycTsKPgo+ICAgICAgICAgICAgICAgICBycSA9ICZyaW5n LT5zY2hlZC5zY2hlZF9ycVtBTURfU0NIRURfUFJJT1JJVFlfTk9STUFMXTsKPiAgICAgICAgICAg ICAgICAgciA9IGFtZF9zY2hlZF9lbnRpdHlfaW5pdCgmcmluZy0+c2NoZWQsICZjdHgtPnJpbmdz W2ldLmVudGl0eSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy cSwgYW1kZ3B1X3NjaGVkX2pvYnMpOwo+ICAgICAgICAgICAgICAgICBpZiAocikKPiAgICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKPiAgICAgICAgIH0KPgo+ICsgICAgICAgciA9 IGFtZGdwdV9xdWV1ZV9tZ3JfaW5pdChhZGV2LCAmY3R4LT5xdWV1ZV9tZ3IpOwo+ICsgICAgICAg aWYgKHIpCj4gKyAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwo+ICsKPiAgICAgICAgIHJldHVy biAwOwo+Cj4gIGZhaWxlZDoKPiAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspCj4gICAg ICAgICAgICAgICAgIGFtZF9zY2hlZF9lbnRpdHlfZmluaSgmYWRldi0+cmluZ3Nbal0tPnNjaGVk LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eC0+cmluZ3Nbal0u ZW50aXR5KTsKPiAgICAgICAgIGtmcmVlKGN0eC0+ZmVuY2VzKTsKPiAgICAgICAgIGN0eC0+ZmVu Y2VzID0gTlVMTDsKPiAgICAgICAgIHJldHVybiByOwo+ICB9Cj4gQEAgLTc5LDIwICs4MywyMiBA QCBzdGF0aWMgdm9pZCBhbWRncHVfY3R4X2Zpbmkoc3RydWN0IGFtZGdwdV9jdHggKmN0eCkKPgo+ ICAgICAgICAgZm9yIChpID0gMDsgaSA8IEFNREdQVV9NQVhfUklOR1M7ICsraSkKPiAgICAgICAg ICAgICAgICAgZm9yIChqID0gMDsgaiA8IGFtZGdwdV9zY2hlZF9qb2JzOyArK2opCj4gICAgICAg ICAgICAgICAgICAgICAgICAgZG1hX2ZlbmNlX3B1dChjdHgtPnJpbmdzW2ldLmZlbmNlc1tqXSk7 Cj4gICAgICAgICBrZnJlZShjdHgtPmZlbmNlcyk7Cj4gICAgICAgICBjdHgtPmZlbmNlcyA9IE5V TEw7Cj4KPiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhZGV2LT5udW1fcmluZ3M7IGkrKykKPiAg ICAgICAgICAgICAgICAgYW1kX3NjaGVkX2VudGl0eV9maW5pKCZhZGV2LT5yaW5nc1tpXS0+c2No ZWQsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4LT5yaW5nc1tp XS5lbnRpdHkpOwo+ICsKPiArICAgICAgIGFtZGdwdV9xdWV1ZV9tZ3JfZmluaShhZGV2LCAmY3R4 LT5xdWV1ZV9tZ3IpOwo+ICB9Cj4KPiAgc3RhdGljIGludCBhbWRncHVfY3R4X2FsbG9jKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgKmlkKQo+ICB7Cj4gICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2N0eF9tZ3IgKm1nciA9ICZm cHJpdi0+Y3R4X21ncjsKPiAgICAgICAgIHN0cnVjdCBhbWRncHVfY3R4ICpjdHg7Cj4gICAgICAg ICBpbnQgcjsKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfcXVldWVfbWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcXVldWVf bWdyLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjNlOWFjODAKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3F1 ZXVlX21nci5jCj4gQEAgLTAsMCArMSwyMzAgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTcg VmFsdmUgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi U29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVz ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwK PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu Y2x1ZGVkIGluCj4gKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl IFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMp IE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgo+ICsgKiBP VEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwKPiArICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCj4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9yczogQW5kcmVzIFJvZHJpZ3Vlego+ICsgKi8K PiArCj4gKyNpbmNsdWRlICJhbWRncHUuaCIKPiArI2luY2x1ZGUgImFtZGdwdV9yaW5nLmgiCj4g Kwo+ICtzdGF0aWMgaW50IGFtZGdwdV9xdWV1ZV9tYXBwZXJfaW5pdChzdHJ1Y3QgYW1kZ3B1X3F1 ZXVlX21hcHBlciAqbWFwcGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBod19pcCkKPiArewo+ICsgICAgICAgaWYgKCFtYXBwZXIpCj4gKyAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgICAgIGlmIChod19pcCA+IEFNREdQVV9NQVhfSVBf TlVNKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiArCj4gKyAgICAgICBtYXBw ZXItPmh3X2lwID0gaHdfaXA7Cj4gKyAgICAgICBtdXRleF9pbml0KCZtYXBwZXItPmxvY2spOwo+ ICsKPiArICAgICAgIG1lbXNldChtYXBwZXItPnF1ZXVlX21hcCwgMCwgc2l6ZW9mKG1hcHBlci0+ cXVldWVfbWFwKSk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBz dHJ1Y3QgYW1kZ3B1X3JpbmcgKmFtZGdwdV9nZXRfY2FjaGVkX21hcChzdHJ1Y3QgYW1kZ3B1X3F1 ZXVlX21hcHBlciAqbWFwcGVyLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCByaW5nKQo+ICt7Cj4gKyAgICAgICByZXR1cm4gbWFwcGVyLT5xdWV1ZV9tYXBb cmluZ107Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYW1kZ3B1X3VwZGF0ZV9jYWNoZWRfbWFwKHN0 cnVjdCBhbWRncHVfcXVldWVfbWFwcGVyICptYXBwZXIsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgcmluZywgc3RydWN0IGFtZGdwdV9yaW5nICpwcmluZykKPiArewo+ICsgICAg ICAgaWYgKFdBUk5fT04obWFwcGVyLT5xdWV1ZV9tYXBbcmluZ10pKSB7Cj4gKyAgICAgICAgICAg ICAgIERSTV9FUlJPUigiVW4tZXhwZWN0ZWQgcmluZyByZS1tYXBcbiIpOwo+ICsgICAgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBtYXBwZXItPnF1 ZXVlX21hcFtyaW5nXSA9IHByaW5nOwo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGFtZGdwdV9pZGVudGl0eV9tYXAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfcXVldWVf bWFwcGVyICptYXBwZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByaW5n LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKipv dXRfcmluZykKPiArewo+ICsgICAgICAgc3dpdGNoIChtYXBwZXItPmh3X2lwKSB7Cj4gKyAgICAg ICBjYXNlIEFNREdQVV9IV19JUF9HRlg6Cj4gKyAgICAgICAgICAgICAgICpvdXRfcmluZyA9ICZh ZGV2LT5nZnguZ2Z4X3JpbmdbcmluZ107Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAg ICAgY2FzZSBBTURHUFVfSFdfSVBfQ09NUFVURToKPiArICAgICAgICAgICAgICAgKm91dF9yaW5n ID0gJmFkZXYtPmdmeC5jb21wdXRlX3JpbmdbcmluZ107Cj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgY2FzZSBBTURHUFVfSFdfSVBfRE1BOgo+ICsgICAgICAgICAgICAgICAqb3V0 X3JpbmcgPSAmYWRldi0+c2RtYS5pbnN0YW5jZVtyaW5nXS5yaW5nOwo+ICsgICAgICAgICAgICAg ICBicmVhazsKPiArICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1VWRDoKPiArICAgICAgICAgICAg ICAgKm91dF9yaW5nID0gJmFkZXYtPnV2ZC5yaW5nOwo+ICsgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1ZDRToKPiArICAgICAgICAgICAgICAgKm91dF9y aW5nID0gJmFkZXYtPnZjZS5yaW5nW3JpbmddOwo+ICsgICAgICAgICAgICAgICBicmVhazsKPiAr ICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgICpvdXRfcmluZyA9IE5VTEw7Cj4gKyAg ICAgICAgICAgICAgIERSTV9FUlJPUigidW5rbm93biBIVyBJUCB0eXBlOiAlZFxuIiwgbWFwcGVy LT5od19pcCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAgfQo+ ICsKPiArICAgICAgIHJldHVybiBhbWRncHVfdXBkYXRlX2NhY2hlZF9tYXAobWFwcGVyLCByaW5n LCAqb3V0X3JpbmcpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogYW1kZ3B1X3F1ZXVlX21ncl9pbml0 IC0gaW5pdCBhbiBhbWRncHVfcXVldWVfbWdyIHN0cnVjdAo+ICsgKgo+ICsgKiBAYWRldjogYW1k Z3B1X2RldmljZSBwb2ludGVyCj4gKyAqIEBtZ3I6IGFtZGdwdV9xdWV1ZV9tZ3Igc3RydWN0dXJl IGhvbGRpbmcgcXVldWUgaW5mb3JtYXRpb24KPiArICoKPiArICogSW5pdGlhbGl6ZSB0aGUgdGhl IHNlbGVjdGVkIEBtZ3IgKGFsbCBhc2ljcykuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBvbiBzdWNj ZXNzLCBlcnJvciBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGFtZGdwdV9xdWV1ZV9tZ3JfaW5p dChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBhbWRncHVfcXVldWVfbWdyICptZ3IpCj4gK3sKPiArICAgICAgIGludCBpLCByOwo+ ICsKPiArICAgICAgIGlmICghYWRldiB8fCAhbWdyKQo+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVJTlZBTDsKPiArCj4gKyAgICAgICBtZW1zZXQobWdyLCAwLCBzaXplb2YoKm1ncikpOwo+ICsK PiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBBTURHUFVfTUFYX0lQX05VTTsgKytpKSB7Cj4gKyAg ICAgICAgICAgICAgIHIgPSBhbWRncHVfcXVldWVfbWFwcGVyX2luaXQoJm1nci0+bWFwcGVyW2ld LCBpKTsKPiArICAgICAgICAgICAgICAgaWYgKHIpCj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHI7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g Ky8qKgo+ICsgKiBhbWRncHVfcXVldWVfbWdyX2ZpbmkgLSBkZS1pbml0aWFsaXplIGFuIGFtZGdw dV9xdWV1ZV9tZ3Igc3RydWN0Cj4gKyAqCj4gKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50 ZXIKPiArICogQG1ncjogYW1kZ3B1X3F1ZXVlX21nciBzdHJ1Y3R1cmUgaG9sZGluZyBxdWV1ZSBp bmZvcm1hdGlvbgo+ICsgKgo+ICsgKiBEZS1pbml0aWFsaXplIHRoZSB0aGUgc2VsZWN0ZWQgQG1n ciAoYWxsIGFzaWNzKS4KPiArICoKPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG9u IGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgYW1kZ3B1X3F1ZXVlX21ncl9maW5pKHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdw dV9xdWV1ZV9tZ3IgKm1ncikKPiArewo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gKy8q Kgo+ICsgKiBhbWRncHVfcXVldWVfbWdyX21hcCAtIE1hcCBhIHVzZXJzcGFjZSByaW5nIGlkIHRv IGFuIGFtZGdwdV9yaW5nCj4gKyAqCj4gKyAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIK PiArICogQG1ncjogYW1kZ3B1X3F1ZXVlX21nciBzdHJ1Y3R1cmUgaG9sZGluZyBxdWV1ZSBpbmZv cm1hdGlvbgo+ICsgKiBAaHdfaXA6IEhXIElQIGVudW0KPiArICogQGluc3RhbmNlOiBIVyBpbnN0 YW5jZQo+ICsgKiBAcmluZzogdXNlciByaW5nIGlkCj4gKyAqIEBvdXJfcmluZzogcG9pbnRlciB0 byBtYXBwZWQgYW1kZ3B1X3JpbmcKPiArICoKPiArICogTWFwIGEgdXNlcnNwYWNlIHJpbmcgaWQg dG8gYW4gYXBwcm9wcmlhdGUga2VybmVsIHJpbmcuIERpZmZlcmVudAo+ICsgKiBwb2xpY2llcyBh cmUgY29uZmlndXJhYmxlIGF0IGEgSFcgSVAgbGV2ZWwuCj4gKyAqCj4gKyAqIFJldHVybnMgMCBv biBzdWNjZXNzLCBlcnJvciBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50IGFtZGdwdV9xdWV1ZV9t Z3JfbWFwKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgYW1kZ3B1X3F1ZXVlX21nciAqbWdyLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgaHdfaXAsIGludCBpbnN0YW5jZSwgaW50IHJpbmcsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBhbWRncHVfcmluZyAqKm91dF9yaW5nKQo+ICt7Cj4gKyAgICAgICBp bnQgciwgaXBfbnVtX3JpbmdzOwo+ICsgICAgICAgc3RydWN0IGFtZGdwdV9xdWV1ZV9tYXBwZXIg Km1hcHBlciA9ICZtZ3ItPm1hcHBlcltod19pcF07Cj4gKwo+ICsgICAgICAgaWYgKCFhZGV2IHx8 ICFtZ3IgfHwgIW91dF9yaW5nKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiAr Cj4gKyAgICAgICBpZiAoaHdfaXAgPj0gQU1ER1BVX01BWF9JUF9OVU0pCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgICAgIGlmIChyaW5nID49IEFNREdQVV9NQVhf UklOR1MpCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsKPiArICAgICAgIC8q IFJpZ2h0IG5vdyBhbGwgSVBzIGhhdmUgb25seSBvbmUgaW5zdGFuY2UgLSBtdWx0aXBsZSByaW5n cy4gKi8KPiArICAgICAgIGlmIChpbnN0YW5jZSAhPSAwKSB7Cj4gKyAgICAgICAgICAgICAgIERS TV9FUlJPUigiaW52YWxpZCBpcCBpbnN0YW5jZTogJWRcbiIsIGluc3RhbmNlKTsKPiArICAgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgc3dpdGNo IChod19pcCkgewo+ICsgICAgICAgY2FzZSBBTURHUFVfSFdfSVBfR0ZYOgo+ICsgICAgICAgICAg ICAgICBpcF9udW1fcmluZ3MgPSBhZGV2LT5nZngubnVtX2dmeF9yaW5nczsKPiArICAgICAgICAg ICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEFNREdQVV9IV19JUF9DT01QVVRFOgo+ICsgICAg ICAgICAgICAgICBpcF9udW1fcmluZ3MgPSBhZGV2LT5nZngubnVtX2NvbXB1dGVfcmluZ3M7Cj4g KyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSBBTURHUFVfSFdfSVBfRE1BOgo+ ICsgICAgICAgICAgICAgICBpcF9udW1fcmluZ3MgPSBhZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7 Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgY2FzZSBBTURHUFVfSFdfSVBfVVZE Ogo+ICsgICAgICAgICAgICAgICBpcF9udW1fcmluZ3MgPSAxOwo+ICsgICAgICAgICAgICAgICBi cmVhazsKPiArICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1ZDRToKPiArICAgICAgICAgICAgICAg aXBfbnVtX3JpbmdzID0gYWRldi0+dmNlLm51bV9yaW5nczsKPiArICAgICAgICAgICAgICAgYnJl YWs7Cj4gKyAgICAgICBkZWZhdWx0Ogo+ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoInVua25v d24gaXAgdHlwZTogJWRcbiIsIGh3X2lwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKHJpbmcgPj0gaXBfbnVtX3JpbmdzKSB7 Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigiUmluZyBpbmRleDolZCBleGNlZWRzIG1heGlt dW06JWQgZm9yIGlwOiVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlu ZywgaXBfbnVtX3JpbmdzLCBod19pcCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIG11dGV4X2xvY2soJm1hcHBlci0+bG9jayk7Cj4g Kwo+ICsgICAgICAgKm91dF9yaW5nID0gYW1kZ3B1X2dldF9jYWNoZWRfbWFwKG1hcHBlciwgcmlu Zyk7Cj4gKyAgICAgICBpZiAoKm91dF9yaW5nKSB7Cj4gKyAgICAgICAgICAgICAgIC8qIGNhY2hl IGhpdCAqLwo+ICsgICAgICAgICAgICAgICByID0gMDsKPiArICAgICAgICAgICAgICAgZ290byBv dXRfdW5sb2NrOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHN3aXRjaCAobWFwcGVyLT5od19p cCkgewo+ICsgICAgICAgY2FzZSBBTURHUFVfSFdfSVBfR0ZYOgo+ICsgICAgICAgY2FzZSBBTURH UFVfSFdfSVBfQ09NUFVURToKPiArICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX0RNQToKPiArICAg ICAgIGNhc2UgQU1ER1BVX0hXX0lQX1VWRDoKPiArICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX1ZD RToKPiArICAgICAgICAgICAgICAgciA9IGFtZGdwdV9pZGVudGl0eV9tYXAoYWRldiwgbWFwcGVy LCByaW5nLCBvdXRfcmluZyk7Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgZGVm YXVsdDoKPiArICAgICAgICAgICAgICAgKm91dF9yaW5nID0gTlVMTDsKPiArICAgICAgICAgICAg ICAgciA9IC1FSU5WQUw7Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigidW5rbm93biBIVyBJ UCB0eXBlOiAlZFxuIiwgbWFwcGVyLT5od19pcCk7Cj4gKyAgICAgICB9Cj4gKwo+ICtvdXRfdW5s b2NrOgo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZtYXBwZXItPmxvY2spOwo+ICsgICAgICAgcmV0 dXJuIHI7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPiBp bmRleCA2YTg1ZGIwLi4xMmZjODE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9yaW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfcmluZy5jCj4gQEAgLTQ1LDIwICs0NSw2NSBAQAo+ICAgKiBwb2ludGVycyBhcmUgZXF1 YWwsIHRoZSByaW5nIGlzIGlkbGUuICBXaGVuIHRoZSBob3N0Cj4gICAqIHdyaXRlcyBjb21tYW5k cyB0byB0aGUgcmluZyBidWZmZXIsIGl0IGluY3JlbWVudHMgdGhlCj4gICAqIHdwdHIuICBUaGUg R1BVIHRoZW4gc3RhcnRzIGZldGNoaW5nIGNvbW1hbmRzIGFuZCBleGVjdXRlcwo+ICAgKiB0aGVt IHVudGlsIHRoZSBwb2ludGVycyBhcmUgZXF1YWwgYWdhaW4uCj4gICAqLwo+ICBzdGF0aWMgaW50 IGFtZGdwdV9kZWJ1Z2ZzX3JpbmdfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcpOwo+ICBzdGF0aWMgdm9pZCBhbWRncHVfZGVidWdmc19yaW5nX2Zpbmkoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nKTsKPgo+ICAvKioKPiArICogYW1kZ3B1X3JpbmdfaXNfdmFsaWRfaW5kZXgg LSBjaGVjayBpZiBhIHJpbmcgaWRleCBpcyB2YWxpZCBmb3IgYSBIVyBJUAo+ICsgKgo+ICsgKiBA YWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4gKyAqIEBpcF90eXBlOiBUaGUgSFcgSVAgdG8g Y2hlY2sgYWdhaW5zdAo+ICsgKiBAcmluZzogdGhlIHJpbmcgaW5kZXgKPiArICoKPiArICogQ2hl Y2sgaWYgQHJpbmcgaXMgYSB2YWxpZCBpbmRleCBmb3IgQGlwX3R5cGUgKGFsbCBhc2ljcykuCj4g KyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBvbiBmYWlsdXJlLgo+ICsgKi8KPiAraW50 IGFtZGdwdV9yaW5nX2lzX3ZhbGlkX2luZGV4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXBfdHlwZSwgaW50IHJpbmcpCj4g K3sKPiArICAgICAgIGludCBpcF9udW1fcmluZ3M7Cj4gKwo+ICsgICAgICAgc3dpdGNoIChpcF90 eXBlKSB7Cj4gKyAgICAgICBjYXNlIEFNREdQVV9IV19JUF9HRlg6Cj4gKyAgICAgICAgICAgICAg IGlwX251bV9yaW5ncyA9IGFkZXYtPmdmeC5udW1fZ2Z4X3JpbmdzOwo+ICsgICAgICAgICAgICAg ICBicmVhazsKPiArICAgICAgIGNhc2UgQU1ER1BVX0hXX0lQX0NPTVBVVEU6Cj4gKyAgICAgICAg ICAgICAgIGlwX251bV9yaW5ncyA9IGFkZXYtPmdmeC5udW1fY29tcHV0ZV9yaW5nczsKPiArICAg ICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEFNREdQVV9IV19JUF9ETUE6Cj4gKyAg ICAgICAgICAgICAgIGlwX251bV9yaW5ncyA9IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsKPiAr ICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICBjYXNlIEFNREdQVV9IV19JUF9VVkQ6Cj4g KyAgICAgICAgICAgICAgIGlwX251bV9yaW5ncyA9IDE7Cj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+ICsgICAgICAgY2FzZSBBTURHUFVfSFdfSVBfVkNFOgo+ICsgICAgICAgICAgICAgICBpcF9u dW1fcmluZ3MgPSBhZGV2LT52Y2UubnVtX3JpbmdzOwo+ICsgICAgICAgICAgICAgICBicmVhazsK PiArICAgICAgIGRlZmF1bHQ6Cj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigidW5rbm93biBp cCB0eXBlOiAlZFxuIiwgaXBfdHlwZSk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChyaW5nID49IGlwX251bV9yaW5ncykgewo+ ICsgICAgICAgICAgICAgICBEUk1fRVJST1IoIlJpbmcgaW5kZXg6JWQgZXhjZWVkcyBtYXhpbXVt OiVkIGZvciBpcDolZFxuIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpbmcs IGlwX251bV9yaW5ncywgaXBfdHlwZSk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiAg ICogYW1kZ3B1X3JpbmdfYWxsb2MgLSBhbGxvY2F0ZSBzcGFjZSBvbiB0aGUgcmluZyBidWZmZXIK PiAgICoKPiAgICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9pbnRlcgo+ICAgKiBAcmluZzogYW1k Z3B1X3Jpbmcgc3RydWN0dXJlIGhvbGRpbmcgcmluZyBpbmZvcm1hdGlvbgo+ICAgKiBAbmR3OiBu dW1iZXIgb2YgZHdvcmRzIHRvIGFsbG9jYXRlIGluIHRoZSByaW5nIGJ1ZmZlcgo+ICAgKgo+ICAg KiBBbGxvY2F0ZSBAbmR3IGR3b3JkcyBpbiB0aGUgcmluZyBidWZmZXIgKGFsbCBhc2ljcykuCj4g ICAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBvbiBmYWlsdXJlLgo+ICAgKi8KPiAgaW50 IGFtZGdwdV9yaW5nX2FsbG9jKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgbmR3 KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5o IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+IGluZGV4IDYzZTU2 MzkuLmNmNDExZjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5n LmgKPiBAQCAtMTc2LDIwICsxNzYsMjIgQEAgc3RydWN0IGFtZGdwdV9yaW5nIHsKPiAgICAgICAg IHVpbnQ2NF90ICAgICAgICAgICAgICAgIGN1cnJlbnRfY3R4Owo+ICAgICAgICAgY2hhciAgICAg ICAgICAgICAgICAgICAgbmFtZVsxNl07Cj4gICAgICAgICB1bnNpZ25lZCAgICAgICAgICAgICAg ICBjb25kX2V4ZV9vZmZzOwo+ICAgICAgICAgdTY0ICAgICAgICAgICAgICAgICAgICAgY29uZF9l eGVfZ3B1X2FkZHI7Cj4gICAgICAgICB2b2xhdGlsZSB1MzIgICAgICAgICAgICAqY29uZF9leGVf Y3B1X2FkZHI7Cj4gICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKPiAgICAgICAgIHN0cnVj dCBkZW50cnkgKmVudDsKPiAgI2VuZGlmCj4gIH07Cj4KPiAraW50IGFtZGdwdV9yaW5nX2lzX3Zh bGlkX2luZGV4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgaHdfaXAsIGludCByaW5nKTsKPiAgaW50IGFtZGdwdV9yaW5nX2Fs bG9jKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgbmR3KTsKPiAgdm9pZCBhbWRn cHVfcmluZ19pbnNlcnRfbm9wKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdWludDMyX3QgY291 bnQpOwo+ICB2b2lkIGFtZGdwdV9yaW5nX2dlbmVyaWNfcGFkX2liKHN0cnVjdCBhbWRncHVfcmlu ZyAqcmluZywgc3RydWN0IGFtZGdwdV9pYiAqaWIpOwo+ICB2b2lkIGFtZGdwdV9yaW5nX2NvbW1p dChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICB2b2lkIGFtZGdwdV9yaW5nX3VuZG8oc3Ry dWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPiAgaW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCByaW5nX3NpemUsIHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqaXJx X3NyYywKPiAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpcnFfdHlwZSk7Cj4gIHZvaWQg YW1kZ3B1X3JpbmdfZmluaShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICBzdGF0aWMgaW5s aW5lIHZvaWQgYW1kZ3B1X3JpbmdfY2xlYXJfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcp Cj4gLS0KPiAyLjkuMwo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFt ZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=