From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Noralf_Tr=c3=b8nnes?= Subject: Re: [PATCH v2 1/3] drm: Add support for panic message output Date: Mon, 11 Mar 2019 23:33:15 +0100 Message-ID: References: <20190311174218.51899-1-noralf@tronnes.org> <20190311174218.51899-2-noralf@tronnes.org> <20190311192338.GR2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190311192338.GR2665@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, darwish.07@gmail.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org CgpEZW4gMTEuMDMuMjAxOSAyMC4yMywgc2tyZXYgRGFuaWVsIFZldHRlcjoKPiBPbiBNb24sIE1h ciAxMSwgMjAxOSBhdCAwNjo0MjoxNlBNICswMTAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4+ IFRoaXMgYWRkcyBzdXBwb3J0IGZvciBvdXRwdXR0aW5nIGtlcm5lbCBtZXNzYWdlcyBvbiBwYW5p YygpLgo+PiBBIGtlcm5lbCBtZXNzYWdlIGR1bXBlciBpcyB1c2VkIHRvIGR1bXAgdGhlIGxvZy4g VGhlIGR1bXBlciBpdGVyYXRlcwo+PiBvdmVyIGVhY2ggRFJNIGRldmljZSBhbmQgaXQncyBjcnRj J3MgdG8gZmluZCBzdWl0YWJsZSBmcmFtZWJ1ZmZlcnMuCj4+Cj4+IEFsbCB0aGUgb3RoZXIgZHVt cGVycyBhcmUgcnVuIGJlZm9yZSB0aGlzIG9uZSBleGNlcHQgbXRkb29wcy4KPj4gT25seSBhdG9t aWMgZHJpdmVycyBhcmUgc3VwcG9ydGVkLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLD uG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiAKPiBCdW5jaCBvZiBjb21tZW50cy9pZGVhcyBm b3IgeW91IG9yIERhcndpc2ggYmVsb3csIHdob2V2ZXIgcGlja3MgdGhpcyB1cC4KCkFjdHVhbGx5 IGl0IHdvdWxkIG5lIG5pY2UgaWYgRGFyd2lzaCBjb3VsZCBwaWNrIGl0IHVwIHNpbmNlIGhlIHdp bGwgZG8KaXQgb24gaTkxNSB3aGljaCB3aWxsIGJlIHVzZWZ1bCB0byBhIG11Y2ggYnJvYWRlciBh dWRpZW5jZS4KSWYgbm90IEknbGwgcmVzcGluIHdoZW4gSSdtIGRvbmUgd2l0aCB0aGUgZHJtX2Zi X2hlbHBlciByZWZhY3RvcmluZy4KCjxzbmlwPgoKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fcGFuaWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuaWMuYwo+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjRiY2E3ZjBiYzM2OQo+PiAtLS0g L2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGFuaWMuYwo+PiBAQCAtMCww ICsxLDM2MyBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8v IENvcHlyaWdodCAyMDE4IE5vcmFsZiBUcsO4bm5lcwo+PiArCj4+ICsjaW5jbHVkZSA8bGludXgv ZGVidWdmcy5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2ZvbnQuaD4KPj4gKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9rbXNnX2R1bXAuaD4KPj4gKyNpbmNsdWRl IDxsaW51eC9zZXFfZmlsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPj4gKyNpbmNs dWRlIDxsaW51eC91YWNjZXNzLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4K Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fZHJ2 Lmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9maWxlLmg+Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9m cmFtZWJ1ZmZlci5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9wbGFuZS5oPgo+PiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPj4g KyNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+PiArCj4+ICsjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgi Cj4+ICsKPj4gKy8qCj4+ICsgKiBUaGUgbG9nIGxpbmVzIGluIGFuIEFSTSBzdGFjayBkdW1wIGFy ZSA5MiBjaGFyYWN0ZXJzIGxvbmcKPj4gKyAqIGFuZCAxMjAgaXMgYSBuaWNlIG11bHRpcGxlIGZv ciBIRCBhbmQgNEsuCj4+ICsgKi8KPj4gKyNkZWZpbmUgRFJNX1BBTklDX0NPTFVNTl9XSURUSAkx MjAKPiAKPiBJIHRoaW5rIHdlIHNob3VsZCBjb21wdXRlIHRoaXMgZHluYW1pY2FsbHkgZnJvbSB0 aGUgYWN0dWFsIGZiIHdpZHRoIGFuZAo+IGZvbnQgd2l0ZHRoLgoKVGhlIGZvbnQgaXMgcGlja2Vk IGJhc2VkIG9uIHdoZXRoZXIgaXQgY2FuIGZpdCA1MCBsaW5lcyBvZiB0ZXh0LgoKVGhlIG5leHQg cnVsZSBpcyB0byBkZWNpZGUgd2hlbiB0byBhZGQgYW5vdGhlciBjb2x1bW4uIEkgZGVjaWRlZCB0 byB1c2UKYSBudW1iZXIgdGhhdCBnZXRzIG1vc3QgbG9nIGxpbmVzIGluIG9uZSBsaW5lIG9uIHRo ZSBzY3JlZW4uIElmIG1vc3QKbGluZXMgZ2V0IGJyb2tlbiBpbnRvIHR3byBsaW5lcywgdGhlcmUn cyBub3QgbXVjaCB1c2UgaW4gYW4gZXh0cmEgY29sdW1uLgoKRG8geW91IGhhdmUgYW5vdGhlciBp ZGVhIG9uIGhvdyB0byBkbyB0aGlzPwoKKFRoZXJlJ3MgZXZlbiBhIDE2eDMyIGZvbnQgbm93IHRo YXQgd2Fzbid0IGF2YWlsYWJsZSB3aGVuIEkgZGlkIHRoaXMuKQoKPiAKPj4gKwo+PiArc3RydWN0 IGRybV9wYW5pY19jdHggewo+PiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+PiArCXVu c2lnbmVkIGludCB3aWR0aDsKPj4gKwl1bnNpZ25lZCBpbnQgaGVpZ2h0Owo+PiArCXZvaWQgKnZt YXA7Cj4+ICsKPj4gKwljb25zdCBzdHJ1Y3QgZm9udF9kZXNjICpmb250Owo+PiArCXVuc2lnbmVk IGludCBjb2xfd2lkdGg7Cj4+ICsJdW5zaWduZWQgaW50IGJvdHRvbV95Owo+PiArCXNpemVfdCBt YXhfbGluZV9sZW5ndGg7Cj4+ICsKPj4gKwl1bnNpZ25lZCBpbnQgeDsKPj4gKwl1bnNpZ25lZCBp bnQgeTsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZm9udF9kZXNjICpkcm1f cGFuaWNfZm9udDh4OCwgKmRybV9wYW5pY19mb250OHgxNjsKPj4gKwo+PiArc3RhdGljIHZvaWQg ZHJtX3BhbmljX2RyYXdfeHkoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHZvaWQgKnZtYXAs Cj4+ICsJCQkgICAgICBpbnQgeCwgaW50IHksIGJvb2wgZmcpCj4+ICt7Cj4+ICsJaWYgKGZiLT5m dW5jcy0+cGFuaWNfZHJhd194eSkKPj4gKwkJZmItPmZ1bmNzLT5wYW5pY19kcmF3X3h5KGZiLCB2 bWFwLCB4LCB5LCBmZyk7Cj4+ICsJZWxzZQo+PiArCQlkcm1fZnJhbWVidWZmZXJfcGFuaWNfZHJh d194eShmYiwgdm1hcCwgeCwgeSwgZmcpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBkcm1f cGFuaWNfcmVuZGVyX2NoYXIoc3RydWN0IGRybV9wYW5pY19jdHggKmN0eCwKPj4gKwkJCQkgIHVu c2lnbmVkIGludCBvZmZzZXQsIGNoYXIgYykKPj4gK3sKPj4gKwl1bnNpZ25lZCBpbnQgaCwgdywg eCwgeTsKPj4gKwl1OCBmb250bGluZTsKPj4gKwo+PiArCWZvciAoaCA9IDA7IGggPCBjdHgtPmZv bnQtPmhlaWdodDsgaCsrKSB7Cj4+ICsJCWZvbnRsaW5lID0gKih1OCAqKShjdHgtPmZvbnQtPmRh dGEgKyBjICogY3R4LT5mb250LT5oZWlnaHQgKyBoKTsKPj4gKwo+PiArCQlmb3IgKHcgPSAwOyB3 IDwgY3R4LT5mb250LT53aWR0aDsgdysrKSB7Cj4+ICsJCQl4ID0gY3R4LT54ICsgKG9mZnNldCAq IGN0eC0+Zm9udC0+d2lkdGgpICsgdzsKPj4gKwkJCXkgPSBjdHgtPnkgKyBoOwo+PiArCQkJZHJt X3BhbmljX2RyYXdfeHkoY3R4LT5mYiwgY3R4LT52bWFwLCB4LCB5LAo+PiArCQkJCQkgIGZvbnRs aW5lICYgQklUKDcgLSB3KSk7Cj4+ICsJCX0KPj4gKwl9Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2 b2lkIGRybV9wYW5pY19yZW5kZXJfbGluZShzdHJ1Y3QgZHJtX3BhbmljX2N0eCAqY3R4LAo+PiAr CQkJCSAgY29uc3QgY2hhciAqbGluZSwgc2l6ZV90IGxlbikKPj4gK3sKPj4gKwl1bnNpZ25lZCBp bnQgaTsKPj4gKwo+PiArCWZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKPj4gKwkJZHJtX3Bhbmlj X3JlbmRlcl9jaGFyKGN0eCwgaSwgbGluZVtpXSk7Cj4+ICsKPj4gKwkvKiBDbGVhciBvdXQgdGhl IHJlc3Qgb2YgdGhlIGxpbmUgKi8KPj4gKwlmb3IgKGkgPSBsZW47IGkgPCBjdHgtPm1heF9saW5l X2xlbmd0aDsgaSsrKQo+PiArCQlkcm1fcGFuaWNfcmVuZGVyX2NoYXIoY3R4LCBpLCAnICcpOwo+ PiArfQo+PiArCj4+ICtzdGF0aWMgYm9vbCBkcm1fcGFuaWNfbmV3bGluZShzdHJ1Y3QgZHJtX3Bh bmljX2N0eCAqY3R4KQo+PiArewo+PiArCWlmIChjdHgtPnggPT0gMCAmJiBjdHgtPnkgPT0gMCkK Pj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCWlmIChjdHgtPnkgPT0gMCkgewo+PiArCQljdHgtPngg LT0gY3R4LT5jb2xfd2lkdGg7Cj4+ICsJCWN0eC0+eSA9IGN0eC0+Ym90dG9tX3k7Cj4+ICsJfSBl bHNlIHsKPj4gKwkJY3R4LT55IC09IGN0eC0+Zm9udC0+aGVpZ2h0Owo+PiArCX0KPj4gKwo+PiAr CXJldHVybiB0cnVlOwo+PiArfQo+PiArCj4+ICsvKiBSZW5kZXIgZnJvbSBib3R0b20gcmlnaHQg bW9zdCBjb2x1bW4gKi8KPj4gK3N0YXRpYyBib29sIGRybV9wYW5pY19yZW5kZXJfbGluZXMoc3Ry dWN0IGRybV9wYW5pY19jdHggKmN0eCwKPj4gKwkJCQkgICBjb25zdCBjaGFyICpzdHIsIHNpemVf dCBsZW4pCj4+ICt7Cj4+ICsJc2l6ZV90IGwsIGxpbmVfbGVuZ3RoOwo+PiArCWNvbnN0IGNoYXIg KnBvczsKPj4gKwlpbnQgaTsKPj4gKwo+PiArCXdoaWxlIChsZW4pIHsKPj4gKwkJcG9zID0gc3Ry ICsgbGVuIC0gMTsKPj4gKwo+PiArCQlpZiAoKnBvcyA9PSAnXG4nKSB7Cj4+ICsJCQlsZW4tLTsK Pj4gKwkJCWlmICghZHJtX3BhbmljX25ld2xpbmUoY3R4KSkKPj4gKwkJCQlyZXR1cm4gZmFsc2U7 Cj4+ICsJCQljb250aW51ZTsKPj4gKwkJfQo+PiArCj4+ICsJCXdoaWxlIChwb3MgPiBzdHIgJiYg Kihwb3MgLSAxKSAhPSAnXG4nKQo+PiArCQkJcG9zLS07Cj4+ICsKPj4gKwkJbGluZV9sZW5ndGgg PSBsZW4gLSAocG9zIC0gc3RyKTsKPj4gKwo+PiArCQlpZiAoIWxpbmVfbGVuZ3RoIHx8IGxlbiA8 IGxpbmVfbGVuZ3RoKSB7Cj4+ICsJCQlwcl9lcnIoIiVzOiBCdWchIGxpbmVfbGVuZ3RoPSV6dSBs ZW49JXp1XG4iLAo+PiArCQkJICAgICAgIF9fZnVuY19fLCBsaW5lX2xlbmd0aCwgbGVuKTsKPj4g KwkJCXJldHVybiBmYWxzZTsKPj4gKwkJfQo+PiArCj4+ICsJCWxlbiAtPSBsaW5lX2xlbmd0aDsK Pj4gKwo+PiArCQlmb3IgKGkgPSBESVZfUk9VTkRfVVAobGluZV9sZW5ndGgsIGN0eC0+bWF4X2xp bmVfbGVuZ3RoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Cj4+ICsJCQlsID0gbWluKGN0eC0+bWF4X2xp bmVfbGVuZ3RoLCBsaW5lX2xlbmd0aCAtIGkgKiBjdHgtPm1heF9saW5lX2xlbmd0aCk7Cj4+ICsJ CQlkcm1fcGFuaWNfcmVuZGVyX2xpbmUoY3R4LCBwb3MgKyAoaSAqIGN0eC0+bWF4X2xpbmVfbGVu Z3RoKSwgbCk7Cj4+ICsJCQlpZiAoaSAmJiAhZHJtX3BhbmljX25ld2xpbmUoY3R4KSkKPj4gKwkJ CQlyZXR1cm4gZmFsc2U7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gdHJ1ZTsKPj4g K30KPj4gKwo+PiArc3RhdGljIHZvaWQgZHJtX3BhbmljX2ttc2dfcmVuZGVyX3NjcmVlbihzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4gKwkJCQkJIHN0cnVjdCBrbXNnX2R1bXBlciAqZHVtcGVy KQo+PiArewo+PiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmUtPnN0YXRlLT5m YjsKPj4gKwlib29sIGZpcnN0X2l0ZXJhdGlvbiA9IHRydWU7Cj4+ICsJc3RydWN0IGRybV9wYW5p Y19jdHggY3R4Owo+PiArCXN0YXRpYyBjaGFyIHRleHRbMTAyNF07Cj4+ICsJc2l6ZV90IGxlbjsK Pj4gKwo+PiArCWN0eC52bWFwID0gZmItPmZ1bmNzLT5wYW5pY192bWFwKGZiKTsKPj4gKwo+PiAr CS8qIFByaW50IHNvbWUgaW5mbyB3aGVuIHRlc3RpbmcgKi8KPj4gKwlpZiAoZHVtcGVyLT5tYXhf cmVhc29uID09IEtNU0dfRFVNUF9PT1BTKSB7Cj4+ICsJCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVf YnVmIGZvcm1hdF9uYW1lOwo+PiArCj4+ICsJCXByX2luZm8oIiVzOiBbRkI6JWRdICV1eCV1IGZv cm1hdD0lcyB2bWFwPSVwXG4iLAo+PiArCQkJX19mdW5jX18sIGZiLT5iYXNlLmlkLCBmYi0+d2lk dGgsIGZiLT5oZWlnaHQsCj4+ICsJCQlkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3JtYXQtPmZv cm1hdCwgJmZvcm1hdF9uYW1lKSwKPj4gKwkJCWN0eC52bWFwKTsKPj4gKwl9Cj4+ICsKPj4gKwlp ZiAoIWN0eC52bWFwKQo+PiArCQlyZXR1cm47Cj4gCj4gRm9yIHNvbWUgZnJhbWVidWZmZXJzIGl0 IG1pZ2h0IGJlIHVzZWZ1bCB0byBub3QgcmVxdWlyZSB2bWFwLCBidXQgaW5zdGVhZAo+IGhhdmUg c29tZSBwYWdlLWJ5LXBhZ2Uga2luZCBvZiBhY2Nlc3MgaGVscGVyLiBTaW5jZSBwcmVlbXB0aXZl bHkgc2V0dGluZwo+IHVwIGEgdm1hcCBmb3IgYWxsIHRoZSBub24tY29udGlub3VzIGJ1ZmZlcnMg aXMgYSBiaXQgbXVjaCwgYW5kIHdlIHJlYWxseQo+IGNhbid0IHNldCB1cCB0aGUgdm1hcCBpbiB0 aGUgcGFuaWMgaGFuZGxlci4KPiAKPiBNYXliZSB3ZSBzaG91bGQgY2FsbCB0aGlzIHBhbmljX3By ZXBhcmUvcGFuaWNfZmluaXNoIGFuZAo+IHMvdm1hcC9jb29raWUvLCB0byBtYWtlIGl0IGVudGly ZWx5IG9wYXF1ZT8KPiAKPiBCdXQgYSBiaXQgb3ZlcmVuZ2luZWVyaW5nIHBlcmhhcHMgOi0pCj4g CgpJIGd1ZXNzIGk5MTUgd2FudHMgc29tZXRoaW5nIGVsc2UgdGhhbiB2bWFwLCBidXQgSSBoYXZl IG5vIGlkZWEgaG93IGEKcGFnZS1ieS1wYWdlIHNvbHV0aW9uIGlzIHRvIGJlIGltcGxlbWVudGVk LgoKV2hlbiB3ZSBnZXQgYm9vdHNwbGFzaCwgd2Ugd2lsbCBhdCBsZWFzdCBoYXZlIGEga2VybmVs IGFkZHJlc3MgZHVyaW5nCnRoYXQgcGhhc2UgZm9yIGFsbCBkcml2ZXJzIHN1cHBvcnRpbmcgaXQu Cgo+PiArCj4+ICsJY3R4LmZiID0gZmI7Cj4+ICsJY3R4LndpZHRoID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lLT5zdGF0ZS0+c3JjKSA+PiAxNjsKPj4gKwljdHguaGVpZ2h0ID0gZHJtX3JlY3RfaGVp Z2h0KCZwbGFuZS0+c3RhdGUtPnNyYykgPj4gMTY7Cj4+ICsKPj4gKwkvKgo+PiArCSAqIFRPRE86 Cj4+ICsJICogRmluZCB3aGljaCBwYXJ0IG9mIHRoZSBmYiB0aGF0IGlzIHZpc2libGUuCj4+ICsJ ICogV2lkdGggYW5kIGhlaWdodCBhcmUgemVybyBvbiB2YzQKPj4gKwkgKi8KPj4gKwlpZiAoIWN0 eC53aWR0aCB8fCAhY3R4LmhlaWdodCkgewo+PiArCQljdHgud2lkdGggPSBmYi0+d2lkdGg7Cj4+ ICsJCWN0eC5oZWlnaHQgPSBmYi0+aGVpZ2h0Owo+PiArCX0KPj4gKwo+PiArCS8qIFRyeSB0byBm aXQgNTAgbGluZXMgKi8KPj4gKwlpZiAoY3R4LmhlaWdodCA8IDUwICogMTYgJiYgZHJtX3Bhbmlj X2ZvbnQ4eDgpCj4+ICsJCWN0eC5mb250ID0gZHJtX3BhbmljX2ZvbnQ4eDg7Cj4+ICsJZWxzZQo+ PiArCQljdHguZm9udCA9IGRybV9wYW5pY19mb250OHgxNjsKPj4gKwo+PiArCWN0eC5jb2xfd2lk dGggPSBEUk1fUEFOSUNfQ09MVU1OX1dJRFRIICogY3R4LmZvbnQtPndpZHRoOwo+PiArCWN0eC5i b3R0b21feSA9ICgoY3R4LmhlaWdodCAvIGN0eC5mb250LT5oZWlnaHQpIC0gMSkgKiBjdHguZm9u dC0+aGVpZ2h0Owo+PiArCj4+ICsJaWYgKGN0eC53aWR0aCA8IDIgKiBjdHguY29sX3dpZHRoKQo+ PiArCQljdHgubWF4X2xpbmVfbGVuZ3RoID0gY3R4LndpZHRoIC8gY3R4LmZvbnQtPndpZHRoOwo+ PiArCWVsc2UKPj4gKwkJY3R4Lm1heF9saW5lX2xlbmd0aCA9IERSTV9QQU5JQ19DT0xVTU5fV0lE VEggLSAyOyAvKiBib3JkZXI9MiAqLwo+PiArCj4+ICsJY3R4LnggPSAwOwo+PiArCWN0eC55ID0g Y3R4LmJvdHRvbV95Owo+PiArCWlmIChjdHgud2lkdGggPiBjdHguY29sX3dpZHRoKQo+PiArCQlj dHgueCA9ICgoY3R4LndpZHRoIC8gY3R4LmNvbF93aWR0aCkgLSAxKSAqIGN0eC5jb2xfd2lkdGg7 Cj4+ICsKPj4gKwlwcl9kZWJ1ZygiJXM6IGZvbnQ9JXMgJXV4JXUgbWF4X2xpbmVfbGVuZ3RoPSV6 dSAoJXUsJXUpXG4iLAo+PiArCQkgX19mdW5jX18sIGN0eC5mb250LT5uYW1lLCBjdHgud2lkdGgs IGN0eC5oZWlnaHQsCj4+ICsJCSBjdHgubWF4X2xpbmVfbGVuZ3RoLCBjdHgueCwgY3R4LnkpOwo+ PiArCj4+ICsJa21zZ19kdW1wX3Jld2luZChkdW1wZXIpOwo+PiArCj4+ICsJLyogVGhlIGxhdGVz dCBtZXNzYWdlcyBhcmUgZmV0Y2hlZCBmaXJzdCAqLwo+PiArCXdoaWxlIChrbXNnX2R1bXBfZ2V0 X2J1ZmZlcihkdW1wZXIsIGZhbHNlLCB0ZXh0LCBzaXplb2YodGV4dCksICZsZW4pKSB7Cj4+ICsJ CS8qIFN0cmlwIG9mZiB0aGUgdmVyeSBsYXN0IG5ld2xpbmUgc28gd2Ugc3RhcnQgYXQgdGhlIGJv dHRvbSAqLwo+PiArCQlpZiAoZmlyc3RfaXRlcmF0aW9uKSB7Cj4+ICsJCQlsZW4tLTsKPj4gKwkJ CWZpcnN0X2l0ZXJhdGlvbiA9IGZhbHNlOwo+PiArCQl9Cj4+ICsKPj4gKwkJaWYgKCFkcm1fcGFu aWNfcmVuZGVyX2xpbmVzKCZjdHgsIHRleHQsIGxlbikpCj4+ICsJCQlicmVhazsKPj4gKwl9Cj4+ ICsKPj4gKwlpZiAoZmItPmZ1bmNzLT5wYW5pY192dW5tYXApCj4+ICsJCWZiLT5mdW5jcy0+cGFu aWNfdnVubWFwKGZiLCB2bWFwKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZHJtX3Bhbmlj X3RyeV9kZXYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGttc2dfZHVtcGVyICpkdW1w ZXIpCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4+ICsJc3RydWN0IGRy bV9wbGFuZSAqcGxhbmU7Cj4+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiArCj4+ICsJaWYg KCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0FUT01JQykpCj4+ICsJCXJldHVy bjsKPj4gKwo+PiArCWlmIChkdW1wZXItPm1heF9yZWFzb24gPT0gS01TR19EVU1QX09PUFMpCj4+ ICsJCXByX2luZm8oIiVzOiAlcyBvbiBtaW5vciAlZFxuIiwgX19mdW5jX18sIGRldi0+ZHJpdmVy LT5uYW1lLAo+PiArCQkJZGV2LT5wcmltYXJ5LT5pbmRleCk7Cj4+ICsKPj4gKwlkcm1fZm9yX2Vh Y2hfY3J0YyhjcnRjLCBkZXYpIHsKPj4gKwkJaWYgKCF3d19tdXRleF90cnlsb2NrKCZjcnRjLT5t dXRleC5tdXRleCkpCj4+ICsJCQljb250aW51ZTsKPj4gKwo+PiArCQlpZiAoIWNydGMtPmVuYWJs ZWQgfHwgIWNydGMtPnByaW1hcnkpCj4+ICsJCQlnb3RvIGNydGNfdW5sb2NrOwo+PiArCj4+ICsJ CWlmICghY3J0Yy0+c3RhdGUgfHwgIWNydGMtPnN0YXRlLT5hY3RpdmUpCj4+ICsJCQlnb3RvIGNy dGNfdW5sb2NrOwo+PiArCj4+ICsJCXBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKPj4gKwkJaWYgKCF3 d19tdXRleF90cnlsb2NrKCZwbGFuZS0+bXV0ZXgubXV0ZXgpKQo+PiArCQkJZ290byBjcnRjX3Vu bG9jazsKPj4gKwo+PiArCQkvKgo+PiArCQkgKiBUT0RPOiBTaG91bGQgd2UgY2hlY2sgcGxhbmVf c3RhdGUtPnZpc2libGU/Cj4+ICsJCSAqIEl0IGlzIG5vdCBzZXQgb24gdmM0Cj4gCj4gSSB0aGlu ayB3ZSBzaG91bGQuIAoKSSBuZWVkIHRvIHJlY2hlY2sgdmM0LCBiZWNhdXNlIHdoZW4gSSBkaWQg dGhpcyBhIHllYXIgYWdvIC0+dmlzaWJsZSB3YXMKbm90IHNldCBvbiB2YzQuCgo+IFdlIHNob3Vs ZCBhbHNvIGNoZWNrIHdoZXRoZXIgdGhhdCBwcmltYXJ5IGlzIGNvbm5lY3RlZAo+IHRvIHRoZSBj cnRjIChzb21lIGh3IHlvdSBjYW4gcmVhc3NpZ24gcGxhbmVzIGZyZWVseSBiZXR3ZWVuIGNydGMs IGFuZCB0aGUKPiBjcnRjLT5wcmltYXJ5IHBvaW50ZXIgaXMgb25seSB1c2VkIGZvciBjb21wYXQg d2l0aCBsZWdhY3kgaW9jdGwpLgoKTGlrZSB0aGlzPwoJCS8qIENoZWNrIHRoYXQgdGhlIHBsYW5l IGhhcyBub3QgYmVlbiByZWFzc2lnbmVkICovCgkJaWYgKHBsYW5lLT5zdGF0ZS0+Y3J0YyAhPSBj cnRjKQoJCQlnb3RvIHBsYW5lX3VubG9jazsKCj4gCj4+ICsJCWlmICghcGxhbmUtPnN0YXRlIHx8 ICFwbGFuZS0+c3RhdGUtPnZpc2libGUpCj4+ICsJCSAqLwo+PiArCQlpZiAoIXBsYW5lLT5zdGF0 ZSkKPj4gKwkJCWdvdG8gcGxhbmVfdW5sb2NrOwo+PiArCj4+ICsJCWZiID0gcGxhbmUtPnN0YXRl LT5mYjsKPj4gKwkJaWYgKCFmYiB8fCAhZmItPmZ1bmNzLT5wYW5pY192bWFwKQo+IAo+IERvY3Mg c2F5cyB0aGlzIGlzIG9wdGlvbmFsLCBkb2Vzbid0IHNlZW0gdG8gYmUgYWxsIHRoYXQgb3B0aW9u YWwuIEknZAo+IGNoZWNrIGZvciB0aGlzIG9yIGEgZHJpdmVyLXNwZWNpZmljIC0+cGFuaWNfZHJh d194eSBpbnN0ZWFkLgoKLT5wYW5pY192bWFwIGRldGVybWluZXMgd2hldGhlciBwYW5pYyBpcyBz dXBwb3J0ZWQgb3Igbm90LCBzbyBpbiB0aGF0CnNlbnNlIGl0J3Mgb3B0aW9uYWwuIC0+cGFuaWNf ZHJhd194eSBpcyBvcHRpb25hbCB3aXRoIGEgZGVmYXVsdCBmYWxsYmFjawpmb3IgdGhlIGxpbmVh ciBjYXNlLgoKPj4gKwkJCWdvdG8gcGxhbmVfdW5sb2NrOwo+PiArCj4+ICsJCS8qCj4+ICsJCSAq IGZiY29uIHB1dHMgb3V0IHBhbmljIG1lc3NhZ2VzIHNvIHN0YXkgYXdheSB0byBhdm9pZCBqdW1i bGVkCj4+ICsJCSAqIG91dHB1dC4gSWYgdmMtPnZjX21vZGUgIT0gS0RfVEVYVCBmYmNvbiB3b24n dCBwdXQgb3V0Cj4+ICsJCSAqIG1lc3NhZ2VzIChzZWUgdnRfY29uc29sZV9wcmludCkuCj4+ICsJ CSAqLwo+PiArCQlpZiAoZGV2LT5mYl9oZWxwZXIgJiYgZGV2LT5mYl9oZWxwZXItPmZiID09IGZi KQo+PiArCQkJZ290byBwbGFuZV91bmxvY2s7Cj4+ICsKPj4gKwkJZHJtX3BhbmljX2ttc2dfcmVu ZGVyX3NjcmVlbihwbGFuZSwgZHVtcGVyKTsKPj4gK3BsYW5lX3VubG9jazoKPj4gKwkJd3dfbXV0 ZXhfdW5sb2NrKCZwbGFuZS0+bXV0ZXgubXV0ZXgpOwo+PiArY3J0Y191bmxvY2s6Cj4+ICsJCXd3 X211dGV4X3VubG9jaygmY3J0Yy0+bXV0ZXgubXV0ZXgpOwo+PiArCX0KPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBkcm1fcGFuaWNfZGV2X2l0ZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpk YXRhKQo+PiArewo+PiArCXN0cnVjdCBkcm1fbWlub3IgKm1pbm9yID0gZGV2X2dldF9kcnZkYXRh KGRldik7Cj4+ICsKPj4gKwlpZiAobWlub3IgJiYgbWlub3ItPnR5cGUgPT0gRFJNX01JTk9SX1BS SU1BUlkpCj4+ICsJCWRybV9wYW5pY190cnlfZGV2KG1pbm9yLT5kZXYsIGRhdGEpOwo+PiArCj4+ ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIGRybV9wYW5pY19rbXNnX2R1 bXAoc3RydWN0IGttc2dfZHVtcGVyICpkdW1wZXIsCj4+ICsJCQkJZW51bSBrbXNnX2R1bXBfcmVh c29uIHJlYXNvbikKPj4gK3sKPj4gKwljbGFzc19mb3JfZWFjaF9kZXZpY2UoZHJtX2NsYXNzLCBO VUxMLCBkdW1wZXIsIGRybV9wYW5pY19kZXZfaXRlcik7Cj4gCj4gY2xhc3NfZm9yX2VhY2hfZGV2 aWNlIHVzZXMga2xpc3QsIHdoaWNoIG9ubHkgdXNlcyBhbiBpcnFzYXZlIHNwaW5sb2NrLiBJCj4g dGhpbmsgdGhhdCdzIGdvb2QgZW5vdWdoLiBDb21tZW50IHRvIHRoYXQgZWZmZWN0IHdvdWxkIGJl IGdvb2QgZS5nLgo+IAo+IAkvKiBiYXNlZCBvbiBrbGlzdCwgd2hpY2ggdXNlcyBvbmx5IGEgc3Bp bl9sb2NrX2lycXNhdmUsIHdoaWNoIHdlCj4gCSAqIGFzc3VtZSBzdGlsbCB3b3JrcyAqLwo+IAo+ IElmIHdlIGFpbSBmb3IgcGVyZmVjdCB0aGlzIHNob3VsZCBiZSBhIHRyeWxvY2sgc3RpbGwsIG1h eWJlIHVzaW5nIG91ciBvd24KPiBkZXZpY2UgbGlzdC4KPiAKPj4gK30KPj4gKwo+PiArc3RhdGlj IHN0cnVjdCBrbXNnX2R1bXBlciBkcm1fcGFuaWNfa21zZ19kdW1wZXIgPSB7Cj4+ICsJLmR1bXAg PSBkcm1fcGFuaWNfa21zZ19kdW1wLAo+PiArCS5tYXhfcmVhc29uID0gS01TR19EVU1QX1BBTklD LAo+PiArfTsKPj4gKwo+PiArc3RhdGljIHNzaXplX3QgZHJtX3BhbmljX2ZpbGVfcGFuaWNfd3Jp dGUoc3RydWN0IGZpbGUgKmZpbGUsCj4+ICsJCQkJCSAgY29uc3QgY2hhciBfX3VzZXIgKnVzZXJf YnVmLAo+PiArCQkJCQkgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQo+PiArewo+PiArCXVu c2lnbmVkIGxvbmcgbG9uZyB2YWw7Cj4+ICsJY2hhciBidWZbMjRdOwo+PiArCXNpemVfdCBzaXpl Owo+PiArCXNzaXplX3QgcmV0Owo+PiArCj4+ICsJc2l6ZSA9IG1pbihzaXplb2YoYnVmKSAtIDEs IGNvdW50KTsKPj4gKwlpZiAoY29weV9mcm9tX3VzZXIoYnVmLCB1c2VyX2J1Ziwgc2l6ZSkpCj4+ ICsJCXJldHVybiAtRUZBVUxUOwo+PiArCj4+ICsJYnVmW3NpemVdID0gJ1wwJzsKPj4gKwlyZXQg PSBrc3RydG91bGwoYnVmLCAwLCAmdmFsKTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0 Owo+PiArCj4+ICsJZHJtX3BhbmljX2ttc2dfZHVtcGVyLm1heF9yZWFzb24gPSBLTVNHX0RVTVBf T09QUzsKPj4gKwl3bWIoKTsKPj4gKwo+PiArCS8qIERvIGEgcmVhbCB0ZXN0IHdpdGg6IGVjaG8g YyA+IC9wcm9jL3N5c3JxLXRyaWdnZXIgKi8KPj4gKwo+PiArCWlmICh2YWwgPT0gMCkgewo+PiAr CQlwcl9pbmZvKCJUZXN0IHBhbmljIHNjcmVlbiB1c2luZyBrbXNnX2R1bXAoT09QUylcbiIpOwo+ PiArCQlrbXNnX2R1bXAoS01TR19EVU1QX09PUFMpOwo+PiArCX0gZWxzZSBpZiAodmFsID09IDEp IHsKPj4gKwkJY2hhciAqbnVsbF9wb2ludGVyID0gTlVMTDsKPj4gKwo+PiArCQlwcl9pbmZvKCJU ZXN0IHBhbmljIHNjcmVlbiB1c2luZyBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VcbiIpOwo+PiAr CQkqbnVsbF9wb2ludGVyID0gMTsKPj4gKwl9IGVsc2Ugewo+PiArCQlyZXR1cm4gLUVJTlZBTDsK Pj4gKwl9Cj4gCj4gVGhpcyBpc24ndCBxdWl0ZSB3aGF0IEkgaGFkIGluIG1pbmQsIHNpbmNlIGl0 IHN0aWxsIGtpbGxzIHRoZSBrZXJuZWwgKGxpa2UKPiBzeXNycS10cmlnZ2VyKS4gCgpJZiB2YWwg PT0gMCwgaXQgZG9lc24ndCBraWxsIHRoZSBrZXJuZWwsIGl0IG9ubHkgZHVtcHMgdGhlIGtlcm5l bCBsb2cuCkFuZCBpdCBkb2Vzbid0IHRhaW50IHRoZSBrZXJuZWwgZWl0aGVyLgoKPiBJbnN0ZWFk IHdoYXQgSSBoYWQgaW4gbWluZCBpcyB0byByZWNyZWF0ZSB0aGUgd29yc3QKPiBwb3NzaWJsZSBw YW5pYyBjb250ZXh0IGFzIG11Y2ggYXMgZmVhc2libGUgKGRpc2FibGluZyBpbnRlcnJ1cHRzIHNo b3VsZCBiZQo+IGEgZ29vZCBzdGFydCwgbWF5YmUgd2UgY2FuIGV2ZW4gZG8gYW4gbm1pIGNhbGxi YWNrKSwgYW5kIHRoZW4gY2FsbCBvdXIKPiBwYW5pYyBpbXBsZW1lbnRhdGlvbi4gVGhhdCB3YXkg d2UgY2FuIHRlc3QgdGhlIHBhbmljIGhhbmRsZXIgaW4gYQo+IG5vbi1kZXN0cnVjdGl2ZSB3YXkg KGkuZS4gYXNpZGUgZnJvbSBsYXN0IGRtZXNnIGxpbmVzIHByaW50ZWQgdG8gdGhlCj4gc2NyZWVu IG5vdGhpbmcgYmFkIGhhcHBlbnMgdG8gdGhlIGtlcm5lbDogTm8gcmVhbCBwYW5pYywgbm8gb29w cywgbm8KPiB0YWludGluZykuCgpUaGUgaW50ZXJydXB0IGNhc2UgSSBjYW4gZG8sIG5taSBJIGhh dmUgbm8gaWRlYS4KCk5vcmFsZi4KCj4gCj4gQW5kIGlndCB0ZXN0Y2FzZSBjb3VsZCB0aGVuIGV4 ZXJjaXNlIHRoaXMsIGFuZCBDSSBydW4gaXQuCj4gCj4+ICsKPj4gKwlyZXR1cm4gY291bnQ7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRybV9wYW5p Y19wYW5pY19vcHMgPSB7Cj4+ICsJLndyaXRlID0gICAgICAgIGRybV9wYW5pY19maWxlX3Bhbmlj X3dyaXRlLAo+PiArCS5vcGVuID0gICAgICAgICBzaW1wbGVfb3BlbiwKPj4gKwkubGxzZWVrID0g ICAgICAgZGVmYXVsdF9sbHNlZWssCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGRlbnRy eSAqZHJtX3BhbmljX2RfcGFuaWM7Cj4+ICsKPj4gK3ZvaWQgX19pbml0IGRybV9wYW5pY19pbml0 KHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcm9vdCkKPj4gK3sKPj4gKwlkcm1fcGFuaWNfZm9udDh4 OCA9IGZpbmRfZm9udCgiVkdBOHg4Iik7Cj4+ICsJZHJtX3BhbmljX2ZvbnQ4eDE2ID0gZmluZF9m b250KCJWR0E4eDE2Iik7Cj4+ICsJaWYgKCFkcm1fcGFuaWNfZm9udDh4MTYpIHsKPj4gKwkJRFJN X1dBUk4oIkNvdWxkbid0IGZpbmQgZm9udCwgcGFuaWMgc2NyZWVuIGRpc2FibGVkXG4iKTsKPj4g KwkJcmV0dXJuOwo+PiArCX0KPj4gKwo+PiArCWRybV9wYW5pY19kX3BhbmljID0gZGVidWdmc19j cmVhdGVfZmlsZSgicGFuaWMtdGVzdCIsIDAyMDAsCj4+ICsJCQkJCQlkZWJ1Z2ZzX3Jvb3QsIE5V TEwsCj4+ICsJCQkJCQkmZHJtX3BhbmljX3BhbmljX29wcyk7Cj4+ICsJa21zZ19kdW1wX3JlZ2lz dGVyKCZkcm1fcGFuaWNfa21zZ19kdW1wZXIpOwo+PiArfQo+PiArCj4+ICt2b2lkIGRybV9wYW5p Y19leGl0KHN0cnVjdCBkZW50cnkgKmRlYnVnZnNfcm9vdCkKPj4gK3sKPj4gKwlrbXNnX2R1bXBf dW5yZWdpc3RlcigmZHJtX3BhbmljX2ttc2dfZHVtcGVyKTsKPj4gKwlkZWJ1Z2ZzX3JlbW92ZShk cm1fcGFuaWNfZF9wYW5pYyk7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f ZnJhbWVidWZmZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mcmFtZWJ1ZmZlci5oCj4+IGluZGV4IGYw YjM0Yzk3N2VjNS4uZjMyNzQ3OThlY2ZlIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1f ZnJhbWVidWZmZXIuaAo+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fZnJhbWVidWZmZXIuaAo+PiBA QCAtOTQsNiArOTQsNDQgQEAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyB7Cj4+ICAJCSAg ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsIHVuc2lnbmVkIGZsYWdzLAo+PiAgCQkgICAg IHVuc2lnbmVkIGNvbG9yLCBzdHJ1Y3QgZHJtX2NsaXBfcmVjdCAqY2xpcHMsCj4+ICAJCSAgICAg dW5zaWduZWQgbnVtX2NsaXBzKTsKPj4gKwo+PiArCS8qKgo+PiArCSAqIEBwYW5pY192bWFwOgo+ PiArCSAqCj4+ICsJICogT3B0aW9uYWwgY2FsbGJhY2sgZm9yIHBhbmljIGhhbmRsaW5nLgo+PiAr CSAqCj4+ICsJICogRm9yIHZtYXBwaW5nIHRoZSBzZWxlY3RlZCBmcmFtZWJ1ZmZlciBpbiBhIHBh bmljIGNvbnRleHQuIE11c3QKPj4gKwkgKiBiZSBzdXBlciBjYXJlZnVsIGFib3V0IGxvY2tpbmcg KG9ubHkgdHJ5bG9ja2luZyBhbGxvd2VkKS4KPj4gKwkgKgo+PiArCSAqIFJFVFVSTlM6Cj4+ICsJ ICoKPj4gKwkgKiBOVUxMIGlmIGl0IGRpZG4ndCB3b3JrIG91dCwgb3RoZXJ3aXNlIGFuIG9wYXF1 ZSBjb29raWUgd2hpY2ggaXMKPj4gKwkgKiBwYXNzZWQgdG8gQHBhbmljX2RyYXdfeHkuIEl0IGNh biBiZSBhbnl0aGluZzogdm1hcCBhcmVhLCBzdHJ1Y3R1cmUKPj4gKwkgKiB3aXRoIG1vcmUgZGV0 YWlscywganVzdCBhIGZldyBmbGFncywgLi4uCj4+ICsJICovCj4+ICsJdm9pZCAqKCpwYW5pY192 bWFwKShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBA cGFuaWNfdnVubWFwOgo+PiArCSAqCj4+ICsJICogT3B0aW9uYWwgY2FsbGJhY2sgZm9yIGNsZWFu aW5nIHVwIGFmdGVyIHBhbmljIHRlc3RpbmcuCj4+ICsJICoKPj4gKwkgKiBDcnRjIGFuZCBwbGFu ZSBsb2NrcyBhcmUgcmVsZWFzZWQgYWZ0ZXIgdGhpcyBjYWxsYmFjayBoYXMgcnVuLgo+PiArCSAq IHZtYXAgaXMgdGhlIGNvb2tpZSByZXR1cm5lZCBieSBAcGFuaWNfdm1hcC4KPj4gKwkgKi8KPj4g Kwl2b2lkICgqcGFuaWNfdnVubWFwKShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgdm9pZCAq dm1hcCk7Cj4+ICsKPj4gKwkvKioKPj4gKwkgKiBAcGFuaWNfZHJhd194eToKPj4gKwkgKgo+PiAr CSAqIE9wdGlvbmFsIGNhbGxiYWNrIGZvciBkcmF3aW5nIHBpeGVscyBkdXJpbmcgcGFuaWMuCj4+ ICsJICoKPj4gKwkgKiBGb3IgZHJhd2luZyBwaXhlbHMgb250byBhIGZyYW1lYnVmZmVyIHByZXBh cmVkIHdpdGggQHBhbmljX3ZtYXAuCj4+ICsJICogdm1hcCBpcyB0aGUgY29va2llIHJldHVybmVk IGJ5IEBwYW5pY192bWFwLgo+PiArCSAqIElmIGl0J3Mgbm90IHNldCwgZHJtX2ZyYW1lYnVmZmVy X3BhbmljX2RyYXdfeHkoKSBpcyB1c2VkLgo+PiArCSAqLwo+PiArCXZvaWQgKCpwYW5pY19kcmF3 X3h5KShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgdm9pZCAqdm1hcCwKPj4gKwkJCSAgICAg IGludCB4LCBpbnQgeSwgYm9vbCBmb3JlZ3JvdW5kKTsKPj4gIH07Cj4+ICAKPj4gIC8qKgo+PiBA QCAtMjkzLDQgKzMzMSw3IEBAIGludCBkcm1fZnJhbWVidWZmZXJfcGxhbmVfd2lkdGgoaW50IHdp ZHRoLAo+PiAgaW50IGRybV9mcmFtZWJ1ZmZlcl9wbGFuZV9oZWlnaHQoaW50IGhlaWdodCwKPj4g IAkJCQkgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBwbGFuZSk7Cj4+ICAK Pj4gK3ZvaWQgZHJtX2ZyYW1lYnVmZmVyX3BhbmljX2RyYXdfeHkoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIHZvaWQgKnZtYXAsCj4+ICsJCQkJICAgaW50IHgsIGludCB5LCBib29sIGZvcmVn cm91bmQpOwo+PiArCj4+ICAjZW5kaWYKPj4gLS0gCj4+IDIuMjAuMQo+Pgo+IApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=