From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/4] amdgpu: use sync file for shared semaphores Date: Wed, 15 Mar 2017 10:01:29 +0100 Message-ID: <20170315090129.fneo5gafrz2jec32@phenom.ffwll.local> References: <20170314005054.7487-1-airlied@gmail.com> <20170314005054.7487-6-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170314005054.7487-6-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Dave Airlie Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXIgMTQsIDIwMTcgYXQgMTA6NTA6NTRBTSArMTAwMCwgRGF2ZSBBaXJsaWUgd3Jv dGU6Cj4gRnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KPiAKPiBUaGlzIGNy ZWF0ZXMgYSBuZXcgaW50ZXJmYWNlIGZvciBhbWRncHUgd2l0aCBpb2N0bHMgdG8KPiBjcmVhdGUv ZGVzdHJveS9pbXBvcnQgYW5kIGV4cG9ydCBzaGFyZWQgc2VtYXBob3JlcyB1c2luZwo+IHNlbSBv YmplY3QgYmFja2VkIGJ5IHRoZSBzeW5jX2ZpbGUgY29kZS4gVGhlIHNlbWFwaG9yZXMKPiBhcmUg bm90IGluc3RhbGxlZCBhcyBmZCAoZXhjZXB0IGZvciBleHBvcnQpLCBidXQgcmF0aGVyCj4gbGlr ZSBvdGhlciBkcml2ZXIgaW50ZXJuYWwgb2JqZWN0cyBpbiBhbiBpZHIuIFRoZSBpZHIKPiBob2xk cyB0aGUgaW5pdGlhbCByZWZlcmVuY2Ugb24gdGhlIHN5bmMgZmlsZS4KPiAKPiBUaGUgY29tbWFu ZCBzdWJtaXNzaW9uIGludGVyZmFjZSBpcyBlbmhhbmNlZCB3aXRoIHR3byBuZXcKPiBjaHVua3Ms IG9uZSBmb3Igc2VtYXBob3JlIHdhaXRpbmcsIG9uZSBmb3Igc2VtYXBob3JlIHNpZ25hbGxpbmcK PiBhbmQganVzdCB0YWtlcyBhIGxpc3Qgb2YgaGFuZGxlcyBmb3IgZWFjaC4KPiAKPiBUaGlzIGlz IGJhc2VkIG9uIHdvcmsgb3JpZ2luYWxseSBkb25lIGJ5IERhdmlkIFpob3UgYXQgQU1ELAo+IHdp dGggaW5wdXQgZnJvbSBDaHJpc3RpYW4gS29uaWcgb24gd2hhdCB0aGluZ3Mgc2hvdWxkIGxvb2sg bGlrZS4KPiAKPiBOT1RFOiB0aGlzIGludGVyZmFjZSBhZGRpdGlvbiBuZWVkcyBhIHZlcnNpb24g YnVtcCB0byBleHBvc2UKPiBpdCB0byB1c2Vyc3BhY2UuCj4gCj4gU2lnbmVkLW9mZi1ieTogRGF2 ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KCkFub3RoZXIgdWFwaSBjb3JuZXIgY2FzZTog U2luY2UgeW91IGFsbG93IHNlbWFwaG9yZXMgdG8gYmUgY3JlYXRlZCBiZWZvcmUKdGhleSBoYXZl IGEgZmlyc3QgZmVuY2UgYXR0YWNoZWQsIHRoYXQgZXNzZW50aWFsbHkgY3JlYXRlcyBmdXR1cmUg ZmVuY2VzLgpJLmUuIHN5bmNfZmlsZSBmZCB3aXRoIG5vIGZlbmNlIHlldCBhdHRhY2hlZC4gV2Ug d2FudCB0aGF0IGFueXdheSwgYnV0Cm1heWJlIG5vdCB0b2dldGhlciB3aXRoIHNlbWFwaG9yZXMg KHNpbmNlIHRoZXJlJ3Mgc29tZSBtb3JlIGltcGxpY2F0aW9ucykuCgpJIHRoaW5rIGl0J2QgYmUg Z29vZCB0byBhdHRhY2ggYSBkdW1teSBmZW5jZSB3aGljaCBhbHJlYWR5IHN0YXJ0cyBvdXQgYXMK c2lnbmFsbGVkIHRvIHN5bmNfZmlsZS0+ZmVuY2UgZm9yIHNlbWFwaG9yZXMuIFRoYXQgd2F5IHVz ZXJzcGFjZSBjYW4ndCBnbwpldmlsLCBjcmVhdGUgYSBzZW1hcGhvcmUsIHRoZW4gcGFzcyBpdCB0 byBhIGRyaXZlciB3aGljaCB0aGVuIHByb21wdGx5Cm9vcHNlcyBvciB3b3JzZSBiZWNhdXNlIGl0 IGFzc3VtZXMgdGhlbiB3aGVuIGl0IGhhcyBhIHN5bmNfZmlsZSwgaXQgYWxzbwpoYXMgYSBmZW5j ZS4gQW5kIHRoZSBkdW1teSBmZW5jZSBjb3VsZCBiZSBnbG9iYWxseSBzaGFyZWQsIHNvIG5vdCBy ZWFsbHkKb3ZlcmhlYWQuCi1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L01ha2VmaWxlICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCAgICAgfCAgMTIgKysKPiAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2NzLmMgIHwgIDcwICsrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9rbXMuYyB8ICAgOCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf c2VtLmMgfCAyMDQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS91 YXBpL2RybS9hbWRncHVfZHJtLmggICAgICAgICAgIHwgIDI4ICsrKysrCj4gIDYgZmlsZXMgY2hh bmdlZCwgMzIyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2VtLmMKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9NYWtlZmlsZQo+IGluZGV4IDI4MTRhYWQuLjQwNGJjYmEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9NYWtlZmlsZQo+IEBAIC0yNCw3ICsyNCw3IEBAIGFtZGdwdS15 ICs9IGFtZGdwdV9kZXZpY2UubyBhbWRncHVfa21zLm8gXAo+ICAJYXRvbWJpb3NfZW5jb2RlcnMu byBhbWRncHVfc2EubyBhdG9tYmlvc19pMmMubyBcCj4gIAlhbWRncHVfcHJpbWUubyBhbWRncHVf dm0ubyBhbWRncHVfaWIubyBhbWRncHVfcGxsLm8gXAo+ICAJYW1kZ3B1X3Vjb2RlLm8gYW1kZ3B1 X2JvX2xpc3QubyBhbWRncHVfY3R4Lm8gYW1kZ3B1X3N5bmMubyBcCj4gLQlhbWRncHVfZ3R0X21n ci5vIGFtZGdwdV92cmFtX21nci5vIGFtZGdwdV92aXJ0Lm8KPiArCWFtZGdwdV9ndHRfbWdyLm8g YW1kZ3B1X3ZyYW1fbWdyLm8gYW1kZ3B1X3ZpcnQubyBhbWRncHVfc2VtLm8KPiAgCj4gICMgYWRk IGFzaWMgc3BlY2lmaWMgYmxvY2sKPiAgYW1kZ3B1LSQoQ09ORklHX0RSTV9BTURHUFVfQ0lLKSs9 IGNpay5vIGNpa19paC5vIGt2X3NtYy5vIGt2X2RwbS5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHUuaAo+IGluZGV4IGMxYjkxMzUuLjRlZDg4MTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaAo+IEBAIC03MDIsNiArNzAyLDggQEAgc3RydWN0IGFtZGdwdV9mcHJp diB7Cj4gIAlzdHJ1Y3QgbXV0ZXgJCWJvX2xpc3RfbG9jazsKPiAgCXN0cnVjdCBpZHIJCWJvX2xp c3RfaGFuZGxlczsKPiAgCXN0cnVjdCBhbWRncHVfY3R4X21ncgljdHhfbWdyOwo+ICsJc3Bpbmxv Y2tfdAkJc2VtX2hhbmRsZXNfbG9jazsKPiArCXN0cnVjdCBpZHIJCXNlbV9oYW5kbGVzOwo+ICB9 Owo+ICAKPiAgLyoKPiBAQCAtMTgxNCw1ICsxODE2LDE1IEBAIGFtZGdwdV9jc19maW5kX21hcHBp bmcoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnBhcnNlciwKPiAgCQkgICAgICAgdWludDY0X3Qg YWRkciwgc3RydWN0IGFtZGdwdV9ibyAqKmJvKTsKPiAgaW50IGFtZGdwdV9jc19zeXN2bV9hY2Nl c3NfcmVxdWlyZWQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnBhcnNlcik7Cj4gIAo+ICtpbnQg YW1kZ3B1X3NlbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICsJ CSAgICAgc3RydWN0IGRybV9maWxlICpmaWxwKTsKPiArdm9pZCBhbWRncHVfc2VtX2Rlc3Ryb3ko c3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsIHUzMiBoYW5kbGUpOwo+ICtpbnQgYW1kZ3B1X3Nl bV9sb29rdXBfYW5kX3NpZ25hbChzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKPiArCQkJCSB1 aW50MzJfdCBoYW5kbGUsCj4gKwkJCQkgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOwo+ICtpbnQg YW1kZ3B1X3NlbV9sb29rdXBfYW5kX3N5bmMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4g KwkJCSAgICAgICBzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKPiArCQkJICAgICAgIHN0cnVj dCBhbWRncHVfc3luYyAqc3luYywKPiArCQkJICAgICAgIHVpbnQzMl90IGhhbmRsZSk7Cj4gICNp bmNsdWRlICJhbWRncHVfb2JqZWN0LmgiCj4gICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9jcy5jCj4gaW5kZXggNDY3MTQzMi4uODBmYzk0YiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gQEAgLTIxNyw2ICsyMTcsOCBAQCBpbnQgYW1k Z3B1X2NzX3BhcnNlcl9pbml0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLCB2b2lkICpkYXRh KQo+ICAJCQlicmVhazsKPiAgCj4gIAkJY2FzZSBBTURHUFVfQ0hVTktfSURfREVQRU5ERU5DSUVT Ogo+ICsJCWNhc2UgQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUOgo+ICsJCWNhc2UgQU1ER1BVX0NI VU5LX0lEX1NFTV9TSUdOQUw6Cj4gIAkJCWJyZWFrOwo+ICAKPiAgCQlkZWZhdWx0Ogo+IEBAIC0x MDA5LDYgKzEwMTEsMjggQEAgc3RhdGljIGludCBhbWRncHVfcHJvY2Vzc19mZW5jZV9kZXAoc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3RhdGlj IGludCBhbWRncHVfcHJvY2Vzc19zZW1fd2FpdF9kZXAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsCj4gKwkJCQkgICAgICAgc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4gKwkJCQkgICAg ICAgc3RydWN0IGFtZGdwdV9jc19jaHVuayAqY2h1bmspCj4gK3sKPiArCXN0cnVjdCBhbWRncHVf ZnByaXYgKmZwcml2ID0gcC0+ZmlscC0+ZHJpdmVyX3ByaXY7Cj4gKwl1bnNpZ25lZCBudW1fZGVw czsKPiArCWludCBpLCByOwo+ICsJc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtICpkZXBz Owo+ICsKPiArCWRlcHMgPSAoc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtICopY2h1bmst PmtkYXRhOwo+ICsJbnVtX2RlcHMgPSBjaHVuay0+bGVuZ3RoX2R3ICogNCAvCj4gKwkJc2l6ZW9m KHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8 IG51bV9kZXBzOyArK2kpIHsKPiArCQlyID0gYW1kZ3B1X3NlbV9sb29rdXBfYW5kX3N5bmMoYWRl diwgZnByaXYsICZwLT5qb2ItPnN5bmMsCj4gKwkJCQkJICAgICAgIGRlcHNbaV0uaGFuZGxlKTsK PiArCQlpZiAocikKPiArCQkJcmV0dXJuIHI7Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiAgc3RhdGljIGludCBhbWRncHVfY3NfZGVwZW5kZW5jaWVzKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAo+ICAJCQkJICBzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCkKPiAgewo+IEBAIC0x MDIzLDEyICsxMDQ3LDU2IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX2RlcGVuZGVuY2llcyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgCQkJciA9IGFtZGdwdV9wcm9jZXNzX2ZlbmNlX2Rl cChhZGV2LCBwLCBjaHVuayk7Cj4gIAkJCWlmIChyKQo+ICAJCQkJcmV0dXJuIHI7Cj4gKwkJfSBl bHNlIGlmIChjaHVuay0+Y2h1bmtfaWQgPT0gQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUKSB7Cj4g KwkJCXIgPSBhbWRncHVfcHJvY2Vzc19zZW1fd2FpdF9kZXAoYWRldiwgcCwgY2h1bmspOwo+ICsJ CQlpZiAocikKPiArCQkJCXJldHVybiByOwo+ICAJCX0KPiAgCX0KPiAgCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICAKPiArc3RhdGljIGludCBhbWRncHVfcHJvY2Vzc19zZW1fc2lnbmFsX2RlcChzdHJ1 Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKPiArCQkJCQkgc3RydWN0IGFtZGdwdV9jc19jaHVuayAq Y2h1bmssCj4gKwkJCQkJIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICt7Cj4gKwlzdHJ1Y3Qg YW1kZ3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAtPmRyaXZlcl9wcml2Owo+ICsJdW5zaWduZWQg bnVtX2RlcHM7Cj4gKwlpbnQgaSwgcjsKPiArCXN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3Nl bSAqZGVwczsKPiArCj4gKwlkZXBzID0gKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3NlbSAq KWNodW5rLT5rZGF0YTsKPiArCW51bV9kZXBzID0gY2h1bmstPmxlbmd0aF9kdyAqIDQgLwo+ICsJ CXNpemVvZihzdHJ1Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zZW0pOwo+ICsKPiArCWZvciAoaSA9 IDA7IGkgPCBudW1fZGVwczsgKytpKSB7Cj4gKwkJciA9IGFtZGdwdV9zZW1fbG9va3VwX2FuZF9z aWduYWwoZnByaXYsIGRlcHNbaV0uaGFuZGxlLAo+ICsJCQkJCQkgZmVuY2UpOwo+ICsJCWlmIChy KQo+ICsJCQlyZXR1cm4gcjsKPiArCX0KPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW50IGFtZGdwdV9jc19wb3N0X2RlcGVuZGVuY2llcyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAq cCkKPiArewo+ICsJaW50IGksIHI7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHAtPm5jaHVua3M7 ICsraSkgewo+ICsJCXN0cnVjdCBhbWRncHVfY3NfY2h1bmsgKmNodW5rOwo+ICsKPiArCQljaHVu ayA9ICZwLT5jaHVua3NbaV07Cj4gKwo+ICsJCWlmIChjaHVuay0+Y2h1bmtfaWQgPT0gQU1ER1BV X0NIVU5LX0lEX1NFTV9TSUdOQUwpIHsKPiArCQkJciA9IGFtZGdwdV9wcm9jZXNzX3NlbV9zaWdu YWxfZGVwKHAsIGNodW5rLCBwLT5mZW5jZSk7Cj4gKwkJCWlmIChyKQo+ICsJCQkJcmV0dXJuIHI7 Cj4gKwkJfQo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgYW1kZ3B1 X2NzX3N1Ym1pdChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKPiAgCQkJICAgIHVuaW9uIGRy bV9hbWRncHVfY3MgKmNzKQo+ICB7Cj4gQEAgLTEwNTYsNyArMTEyNCw3IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X2NzX3N1Ym1pdChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwKPiAgCXRyYWNlX2Ft ZGdwdV9jc19pb2N0bChqb2IpOwo+ICAJYW1kX3NjaGVkX2VudGl0eV9wdXNoX2pvYigmam9iLT5i YXNlKTsKPiAgCj4gLQlyZXR1cm4gMDsKPiArCXJldHVybiBhbWRncHVfY3NfcG9zdF9kZXBlbmRl bmNpZXMocCk7Cj4gIH0KPiAgCj4gIGludCBhbWRncHVfY3NfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxwKQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfa21zLmMKPiBpbmRleCA2MWQ5NGM3Li4wMTNhZWQxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYwo+IEBAIC02NjQsNiArNjY0 LDggQEAgaW50IGFtZGdwdV9kcml2ZXJfb3Blbl9rbXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCj4gIAltdXRleF9pbml0KCZmcHJpdi0+Ym9fbGlz dF9sb2NrKTsKPiAgCWlkcl9pbml0KCZmcHJpdi0+Ym9fbGlzdF9oYW5kbGVzKTsKPiAgCj4gKwlz cGluX2xvY2tfaW5pdCgmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOwo+ICsJaWRyX2luaXQoJmZw cml2LT5zZW1faGFuZGxlcyk7Cj4gIAlhbWRncHVfY3R4X21ncl9pbml0KCZmcHJpdi0+Y3R4X21n cik7Cj4gIAo+ICAJZmlsZV9wcml2LT5kcml2ZXJfcHJpdiA9IGZwcml2Owo+IEBAIC02ODksNiAr NjkxLDcgQEAgdm9pZCBhbWRncHVfZHJpdmVyX3Bvc3RjbG9zZV9rbXMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgCXN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gZmlsZV9wcml2LT5kcml2ZXJfcHJp djsKPiAgCXN0cnVjdCBhbWRncHVfYm9fbGlzdCAqbGlzdDsKPiArCXN0cnVjdCBhbWRncHVfc2Vt ICpzZW07Cj4gIAlpbnQgaGFuZGxlOwo+ICAKPiAgCWlmICghZnByaXYpCj4gQEAgLTcxNSw2ICs3 MTgsMTAgQEAgdm9pZCBhbWRncHVfZHJpdmVyX3Bvc3RjbG9zZV9rbXMoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgCWlkcl9kZXN0cm95KCZmcHJpdi0+Ym9fbGlzdF9oYW5kbGVzKTsKPiAgCW11 dGV4X2Rlc3Ryb3koJmZwcml2LT5ib19saXN0X2xvY2spOwo+ICAKPiArCWlkcl9mb3JfZWFjaF9l bnRyeSgmZnByaXYtPnNlbV9oYW5kbGVzLCBzZW0sIGhhbmRsZSkKPiArCQlhbWRncHVfc2VtX2Rl c3Ryb3koZnByaXYsIGhhbmRsZSk7Cj4gKwlpZHJfZGVzdHJveSgmZnByaXYtPnNlbV9oYW5kbGVz KTsKPiArCj4gIAlrZnJlZShmcHJpdik7Cj4gIAlmaWxlX3ByaXYtPmRyaXZlcl9wcml2ID0gTlVM TDsKPiAgCj4gQEAgLTg5Niw2ICs5MDMsNyBAQCBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2Mg YW1kZ3B1X2lvY3Rsc19rbXNbXSA9IHsKPiAgCURSTV9JT0NUTF9ERUZfRFJWKEFNREdQVV9HRU1f VkEsIGFtZGdwdV9nZW1fdmFfaW9jdGwsIERSTV9BVVRIfERSTV9SRU5ERVJfQUxMT1cpLAo+ICAJ RFJNX0lPQ1RMX0RFRl9EUlYoQU1ER1BVX0dFTV9PUCwgYW1kZ3B1X2dlbV9vcF9pb2N0bCwgRFJN X0FVVEh8RFJNX1JFTkRFUl9BTExPVyksCj4gIAlEUk1fSU9DVExfREVGX0RSVihBTURHUFVfR0VN X1VTRVJQVFIsIGFtZGdwdV9nZW1fdXNlcnB0cl9pb2N0bCwgRFJNX0FVVEh8RFJNX1JFTkRFUl9B TExPVyksCj4gKwlEUk1fSU9DVExfREVGX0RSVihBTURHUFVfU0VNLCBhbWRncHVfc2VtX2lvY3Rs LCBEUk1fQVVUSHxEUk1fUkVOREVSX0FMTE9XKSwKPiAgfTsKPiAgY29uc3QgaW50IGFtZGdwdV9t YXhfa21zX2lvY3RsID0gQVJSQVlfU0laRShhbWRncHVfaW9jdGxzX2ttcyk7Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfc2VtLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ IGluZGV4IDAwMDAwMDAuLjA2NjUyMGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3NlbS5jCj4gQEAgLTAsMCArMSwyMDQgQEAKPiArLyoK PiArICogQ29weXJpZ2h0IDIwMTYgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgo+ICsgKgo+ ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KPiArICogYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKPiArICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCj4gKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ICsgKiBBUklTSU5H IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IKPiArICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBB dXRob3JzOgo+ICsgKiAgICBDaHVubWluZyBaaG91IDxkYXZpZDEuemhvdUBhbWQuY29tPgo+ICsg Ki8KPiArI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BvbGwuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4K PiArI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4g KyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rl cy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3luY19maWxlLmg+Cj4gKyNpbmNsdWRlICJhbWRncHUu aCIKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKwo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBz eW5jX2ZpbGUgKmFtZGdwdV9zeW5jX2ZpbGVfbG9va3VwKHN0cnVjdCBhbWRncHVfZnByaXYgKmZw cml2LCB1MzIgaGFuZGxlKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGU7Cj4g Kwo+ICsJc3Bpbl9sb2NrKCZmcHJpdi0+c2VtX2hhbmRsZXNfbG9jayk7Cj4gKwo+ICsJLyogQ2hl Y2sgaWYgd2UgY3VycmVudGx5IGhhdmUgYSByZWZlcmVuY2Ugb24gdGhlIG9iamVjdCAqLwo+ICsJ c3luY19maWxlID0gaWRyX2ZpbmQoJmZwcml2LT5zZW1faGFuZGxlcywgaGFuZGxlKTsKPiArCj4g KwlzcGluX3VubG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOwo+ICsKPiArCXJldHVybiBz eW5jX2ZpbGU7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYW1kZ3B1X3NlbV9jcmVhdGUoc3RydWN0 IGFtZGdwdV9mcHJpdiAqZnByaXYsIHUzMiAqaGFuZGxlKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3luY19m aWxlICpzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfYWxsb2MoKTsKPiArCWludCByZXQ7Cj4gKwo+ICsJ aWYgKCFzeW5jX2ZpbGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc25wcmludGYoc3lu Y19maWxlLT5uYW1lLCBzaXplb2Yoc3luY19maWxlLT5uYW1lKSwgInN5bmNfc2VtIik7Cj4gKwo+ ICsJLyogd2UgZ2V0IGEgZmlsZSByZWZlcmVuY2UgYW5kIHdlIHVzZSB0aGF0IGluIHRoZSBpZHIu ICovCj4gKwlpZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsKPiArCXNwaW5fbG9jaygmZnByaXYtPnNl bV9oYW5kbGVzX2xvY2spOwo+ICsKPiArCXJldCA9IGlkcl9hbGxvYygmZnByaXYtPnNlbV9oYW5k bGVzLCBzeW5jX2ZpbGUsIDEsIDAsIEdGUF9OT1dBSVQpOwo+ICsKPiArCXNwaW5fdW5sb2NrKCZm cHJpdi0+c2VtX2hhbmRsZXNfbG9jayk7Cj4gKwlpZHJfcHJlbG9hZF9lbmQoKTsKPiArCj4gKwlp ZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCSpoYW5kbGUgPSByZXQ7Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArdm9pZCBhbWRncHVfc2VtX2Rlc3Ryb3koc3RydWN0IGFtZGdw dV9mcHJpdiAqZnByaXYsIHUzMiBoYW5kbGUpCj4gK3sKPiArCXN0cnVjdCBzeW5jX2ZpbGUgKnN5 bmNfZmlsZSA9IGFtZGdwdV9zeW5jX2ZpbGVfbG9va3VwKGZwcml2LCBoYW5kbGUpOwo+ICsJaWYg KCFzeW5jX2ZpbGUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXNwaW5fbG9jaygmZnByaXYtPnNlbV9o YW5kbGVzX2xvY2spOwo+ICsJaWRyX3JlbW92ZSgmZnByaXYtPnNlbV9oYW5kbGVzLCBoYW5kbGUp Owo+ICsJc3Bpbl91bmxvY2soJmZwcml2LT5zZW1faGFuZGxlc19sb2NrKTsKPiArCj4gKwlmcHV0 KHN5bmNfZmlsZS0+ZmlsZSk7Cj4gK30KPiArCj4gKwo+ICtpbnQgYW1kZ3B1X3NlbV9sb29rdXBf YW5kX3NpZ25hbChzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKPiArCQkJCSB1aW50MzJfdCBo YW5kbGUsCj4gKwkJCQkgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4gK3sKPiArCXN0cnVjdCBz eW5jX2ZpbGUgKnN5bmNfZmlsZTsKPiArCXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZTsKPiAr CXN5bmNfZmlsZSA9IGFtZGdwdV9zeW5jX2ZpbGVfbG9va3VwKGZwcml2LCBoYW5kbGUpOwo+ICsJ aWYgKCFzeW5jX2ZpbGUpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJb2xkX2ZlbmNlID0g c3luY19maWxlX3JlcGxhY2VfZmVuY2Uoc3luY19maWxlLCBmZW5jZSk7Cj4gKwlkbWFfZmVuY2Vf cHV0KG9sZF9mZW5jZSk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBhbWRn cHVfc2VtX2ltcG9ydChzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKPiArCQkJCSAgICAgICBp bnQgZmQsIHUzMiAqaGFuZGxlKQo+ICt7Cj4gKwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUg PSBzeW5jX2ZpbGVfZmRnZXQoZmQpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIXN5bmNfZmls ZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsK PiArCXNwaW5fbG9jaygmZnByaXYtPnNlbV9oYW5kbGVzX2xvY2spOwo+ICsKPiArCXJldCA9IGlk cl9hbGxvYygmZnByaXYtPnNlbV9oYW5kbGVzLCBzeW5jX2ZpbGUsIDEsIDAsIEdGUF9OT1dBSVQp Owo+ICsKPiArCXNwaW5fdW5sb2NrKCZmcHJpdi0+c2VtX2hhbmRsZXNfbG9jayk7Cj4gKwlpZHJf cHJlbG9hZF9lbmQoKTsKPiArCj4gKwlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7Cj4gKwlpZiAocmV0 IDwgMCkKPiArCQlnb3RvIGVycl9vdXQ7Cj4gKwo+ICsJKmhhbmRsZSA9IHJldDsKPiArCXJldHVy biAwOwo+ICtlcnJfb3V0Ogo+ICsJcmV0dXJuIHJldDsKPiArCj4gK30KPiArCj4gK3N0YXRpYyBp bnQgYW1kZ3B1X3NlbV9leHBvcnQoc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYsCj4gKwkJCSAg ICAgdTMyIGhhbmRsZSwgaW50ICpmZCkKPiArewo+ICsJc3RydWN0IHN5bmNfZmlsZSAqc3luY19m aWxlOwo+ICsJaW50IHJldDsKPiArCj4gKwlzeW5jX2ZpbGUgPSBhbWRncHVfc3luY19maWxlX2xv b2t1cChmcHJpdiwgaGFuZGxlKTsKPiArCWlmICghc3luY19maWxlKQo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsKPiArCXJldCA9IGdldF91bnVzZWRfZmRfZmxhZ3MoT19DTE9FWEVDKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCWdvdG8gZXJyX3B1dF9maWxlOwo+ICsKPiArCWZkX2luc3RhbGwocmV0 LCBzeW5jX2ZpbGUtPmZpbGUpOwo+ICsKPiArCSpmZCA9IHJldDsKPiArCXJldHVybiAwOwo+ICtl cnJfcHV0X2ZpbGU6Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtpbnQgYW1kZ3B1X3NlbV9s b29rdXBfYW5kX3N5bmMoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gKwkJCSAgICAgICBz dHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiwKPiArCQkJICAgICAgIHN0cnVjdCBhbWRncHVfc3lu YyAqc3luYywKPiArCQkJICAgICAgIHVpbnQzMl90IGhhbmRsZSkKPiArewo+ICsJaW50IHI7Cj4g KwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGU7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5j ZTsKPiArCj4gKwlzeW5jX2ZpbGUgPSBhbWRncHVfc3luY19maWxlX2xvb2t1cChmcHJpdiwgaGFu ZGxlKTsKPiArCWlmICghc3luY19maWxlKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWZl bmNlID0gc3luY19maWxlX3JlcGxhY2VfZmVuY2Uoc3luY19maWxlLCBOVUxMKTsKPiArCXIgPSBh bWRncHVfc3luY19mZW5jZShhZGV2LCBzeW5jLCBmZW5jZSk7Cj4gKwlkbWFfZmVuY2VfcHV0KGZl bmNlKTsKPiArCj4gKwlyZXR1cm4gcjsKPiArfQo+ICsKPiAraW50IGFtZGdwdV9zZW1faW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiArCQkgICAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlscCkKPiArewo+ICsJdW5pb24gZHJtX2FtZGdwdV9zZW0gKmFyZ3MgPSBkYXRhOwo+ ICsJc3RydWN0IGFtZGdwdV9mcHJpdiAqZnByaXYgPSBmaWxwLT5kcml2ZXJfcHJpdjsKPiArCWlu dCByID0gMDsKPiArCj4gKwlzd2l0Y2ggKGFyZ3MtPmluLm9wKSB7Cj4gKwljYXNlIEFNREdQVV9T RU1fT1BfQ1JFQVRFX1NFTToKPiArCQlyID0gYW1kZ3B1X3NlbV9jcmVhdGUoZnByaXYsICZhcmdz LT5vdXQuaGFuZGxlKTsKPiArCQlicmVhazsKPiArCWNhc2UgQU1ER1BVX1NFTV9PUF9JTVBPUlRf U0VNOgo+ICsJCXIgPSBhbWRncHVfc2VtX2ltcG9ydChmcHJpdiwgYXJncy0+aW4uaGFuZGxlLCAm YXJncy0+b3V0LmhhbmRsZSk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEFNREdQVV9TRU1fT1BfRVhQ T1JUX1NFTToKPiArCQlyID0gYW1kZ3B1X3NlbV9leHBvcnQoZnByaXYsIGFyZ3MtPmluLmhhbmRs ZSwgJmFyZ3MtPm91dC5mZCk7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEFNREdQVV9TRU1fT1BfREVT VFJPWV9TRU06Cj4gKwkJYW1kZ3B1X3NlbV9kZXN0cm95KGZwcml2LCBhcmdzLT5pbi5oYW5kbGUp Owo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlyID0gLUVJTlZBTDsKPiArCQlicmVhazsK PiArCX0KPiArCj4gKwlyZXR1cm4gcjsKPiArfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkv ZHJtL2FtZGdwdV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCj4gaW5kZXgg NTc5NzI4My4uNjQ2YjEwMyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9k cm0uaAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oCj4gQEAgLTUxLDYgKzUx LDcgQEAgZXh0ZXJuICJDIiB7Cj4gICNkZWZpbmUgRFJNX0FNREdQVV9HRU1fT1AJCTB4MTAKPiAg I2RlZmluZSBEUk1fQU1ER1BVX0dFTV9VU0VSUFRSCQkweDExCj4gICNkZWZpbmUgRFJNX0FNREdQ VV9XQUlUX0ZFTkNFUwkJMHgxMgo+ICsjZGVmaW5lIERSTV9BTURHUFVfU0VNICAgICAgICAgICAg ICAgICAgMHgxMwo+ICAKPiAgI2RlZmluZSBEUk1fSU9DVExfQU1ER1BVX0dFTV9DUkVBVEUJRFJN X0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX0NSRUFURSwgdW5pb24gZHJt X2FtZGdwdV9nZW1fY3JlYXRlKQo+ICAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfR0VNX01NQVAJ RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9BTURHUFVfR0VNX01NQVAsIHVuaW9uIGRy bV9hbWRncHVfZ2VtX21tYXApCj4gQEAgLTY1LDYgKzY2LDcgQEAgZXh0ZXJuICJDIiB7Cj4gICNk ZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9HRU1fT1AJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0Ug KyBEUk1fQU1ER1BVX0dFTV9PUCwgc3RydWN0IGRybV9hbWRncHVfZ2VtX29wKQo+ICAjZGVmaW5l IERSTV9JT0NUTF9BTURHUFVfR0VNX1VTRVJQVFIJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9BTURHUFVfR0VNX1VTRVJQVFIsIHN0cnVjdCBkcm1fYW1kZ3B1X2dlbV91c2VycHRyKQo+ ICAjZGVmaW5lIERSTV9JT0NUTF9BTURHUFVfV0FJVF9GRU5DRVMJRFJNX0lPV1IoRFJNX0NPTU1B TkRfQkFTRSArIERSTV9BTURHUFVfV0FJVF9GRU5DRVMsIHVuaW9uIGRybV9hbWRncHVfd2FpdF9m ZW5jZXMpCj4gKyNkZWZpbmUgRFJNX0lPQ1RMX0FNREdQVV9TRU0JCURSTV9JT1dSKERSTV9DT01N QU5EX0JBU0UgKyBEUk1fQU1ER1BVX1NFTSwgdW5pb24gZHJtX2FtZGdwdV9zZW0pCj4gIAo+ICAj ZGVmaW5lIEFNREdQVV9HRU1fRE9NQUlOX0NQVQkJMHgxCj4gICNkZWZpbmUgQU1ER1BVX0dFTV9E T01BSU5fR1RUCQkweDIKPiBAQCAtMzM1LDYgKzMzNywyNiBAQCB1bmlvbiBkcm1fYW1kZ3B1X3dh aXRfZmVuY2VzIHsKPiAgCXN0cnVjdCBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzX291dCBvdXQ7Cj4g IH07Cj4gIAo+ICsjZGVmaW5lIEFNREdQVV9TRU1fT1BfQ1JFQVRFX1NFTSAwCj4gKyNkZWZpbmUg QU1ER1BVX1NFTV9PUF9JTVBPUlRfU0VNIDEKPiArI2RlZmluZSBBTURHUFVfU0VNX09QX0VYUE9S VF9TRU0gMgo+ICsjZGVmaW5lIEFNREdQVV9TRU1fT1BfREVTVFJPWV9TRU0gMwo+ICsKPiArc3Ry dWN0IGRybV9hbWRncHVfc2VtX2luIHsKPiArCV9fdTMyIG9wOwo+ICsJX191MzIgaGFuZGxlOwo+ ICt9Owo+ICsKPiArc3RydWN0IGRybV9hbWRncHVfc2VtX291dCB7Cj4gKwlfX3UzMiBmZDsKPiAr CV9fdTMyIGhhbmRsZTsKPiArfTsKPiArCj4gK3VuaW9uIGRybV9hbWRncHVfc2VtIHsKPiArCXN0 cnVjdCBkcm1fYW1kZ3B1X3NlbV9pbiBpbjsKPiArCXN0cnVjdCBkcm1fYW1kZ3B1X3NlbV9vdXQg b3V0Owo+ICt9Owo+ICsKPiAgI2RlZmluZSBBTURHUFVfR0VNX09QX0dFVF9HRU1fQ1JFQVRFX0lO Rk8JMAo+ICAjZGVmaW5lIEFNREdQVV9HRU1fT1BfU0VUX1BMQUNFTUVOVAkJMQo+ICAKPiBAQCAt MzkwLDYgKzQxMiw4IEBAIHN0cnVjdCBkcm1fYW1kZ3B1X2dlbV92YSB7Cj4gICNkZWZpbmUgQU1E R1BVX0NIVU5LX0lEX0lCCQkweDAxCj4gICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX0ZFTkNFCQkw eDAyCj4gICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX0RFUEVOREVOQ0lFUwkweDAzCj4gKyNkZWZp bmUgQU1ER1BVX0NIVU5LX0lEX1NFTV9XQUlUICAgICAgICAweDA0Cj4gKyNkZWZpbmUgQU1ER1BV X0NIVU5LX0lEX1NFTV9TSUdOQUwgICAgICAweDA1Cj4gIAo+ICBzdHJ1Y3QgZHJtX2FtZGdwdV9j c19jaHVuayB7Cj4gIAlfX3UzMgkJY2h1bmtfaWQ7Cj4gQEAgLTQ1NCw2ICs0NzgsMTAgQEAgc3Ry dWN0IGRybV9hbWRncHVfY3NfY2h1bmtfZmVuY2Ugewo+ICAJX191MzIgb2Zmc2V0Owo+ICB9Owo+ ICAKPiArc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfc2VtIHsKPiArCV9fdTMyIGhhbmRsZTsK PiArfTsKPiArCj4gIHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2RhdGEgewo+ICAJdW5pb24g ewo+ICAJCXN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2liCQlpYl9kYXRhOwo+IC0tIAo+IDIu Ny40Cj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cg==