From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 06/16] drm/i915/fbdev: Move intel_fb_initial_config() to fbdev helper Date: Wed, 27 Mar 2019 15:33:04 +0200 Message-ID: <87zhpg30j3.fsf@intel.com> References: <20190326175546.18126-1-noralf@tronnes.org> <20190326175546.18126-7-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190326175546.18126-7-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?utf-8?Q?Tr=C3=B8nnes?= , dri-devel@lists.freedesktop.org Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, mstaudt@suse.de, Rodrigo Vivi List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAyNiBNYXIgMjAxOSwgTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ IHdyb3RlOgo+IEl0IGlzIGdlbmVyaWMgY29kZSBhbmQgaGF2aW5nIGl0IGluIHRoZSBoZWxwZXIg d2lsbCBsZXQgb3RoZXIgZHJpdmVycwo+IGJlbmVmaXQgZnJvbSBpdC4KPgo+IE9uZSBjaGFuZ2Ug d2FzIG5lY2Vzc2FyeSBhc3N1bWluZyB0aGlzIHRvIGJlIHRydWU6Cj4gSU5URUxfSU5GTyhkZXZf cHJpdiktPm51bV9waXBlcyA9PSBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjCgpUaGlzIGhvbGRz IGFmdGVyIGludGVsX21vZGVzZXRfaW5pdCgpLCBpbiB0aW1lIGZvciB0aGUgdXNlIGhlcmUuCgo+ IFN1Z2dlc3RlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBD YzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogSm9vbmFz IExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IENjOiBSb2RyaWdv IFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9u bmVzLm9yZz4KClJldmlld2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29t PgoKYW5kCgpBY2tlZC1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KCmZv ciBtZXJnaW5nIHZpYSBkcm0tbWlzYyBvciB3aGljaGV2ZXIgdHJlZSBtYWtlcyBtb3N0IHNlbnNl LgoKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgICAgfCAxOTQgKysr KysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jIHwgMjE4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGluY2x1ZGUvZHJtL2Ry bV9mYl9oZWxwZXIuaCAgICAgICAgfCAgMjMgLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTkwIGlu c2VydGlvbnMoKyksIDI0NSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ IGluZGV4IDM2MzEwOTAxZTkzNS4uNjM0ZjRkY2YwYzQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hl bHBlci5jCj4gQEAgLTI1NDUsNiArMjU0NSwxOTQgQEAgc3RhdGljIGludCBkcm1fcGlja19jcnRj cyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJcmV0dXJuIGJlc3Rfc2NvcmU7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoKPiArZHJtX2Zi X2hlbHBlcl9jcnRjKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGZiX2hl bHBlci0+Y3J0Y19jb3VudDsgaSsrKQo+ICsJCWlmIChmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5t b2RlX3NldC5jcnRjID09IGNydGMpCj4gKwkJCXJldHVybiAmZmJfaGVscGVyLT5jcnRjX2luZm9b aV07Cj4gKwo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gKy8qIFRyeSB0byByZWFkIHRoZSBC SU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0IGZvciB0aGUgaW5pdGlhbCBjb25m aWcgKi8KPiArc3RhdGljIGJvb2wgZHJtX2ZiX2hlbHBlcl9maXJtd2FyZV9jb25maWcoc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiArCQkJCQkgIHN0cnVjdCBkcm1fZmJfaGVscGVy X2NydGMgKipjcnRjcywKPiArCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMs Cj4gKwkJCQkJICBzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0cywKPiArCQkJCQkgIGJvb2wg KmVuYWJsZWQsIGludCB3aWR0aCwgaW50IGhlaWdodCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ICsJdW5zaWduZWQgaW50IGNvdW50ID0gbWluKGZi X2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LCBCSVRTX1BFUl9MT05HKTsKPiArCXVuc2lnbmVkIGxv bmcgY29ubl9jb25maWd1cmVkLCBjb25uX3NlcTsKPiArCWludCBpLCBqOwo+ICsJYm9vbCAqc2F2 ZV9lbmFibGVkOwo+ICsJYm9vbCBmYWxsYmFjayA9IHRydWUsIHJldCA9IHRydWU7Cj4gKwlpbnQg bnVtX2Nvbm5lY3RvcnNfZW5hYmxlZCA9IDA7Cj4gKwlpbnQgbnVtX2Nvbm5lY3RvcnNfZGV0ZWN0 ZWQgPSAwOwo+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCj4gKwlz YXZlX2VuYWJsZWQgPSBrY2FsbG9jKGNvdW50LCBzaXplb2YoYm9vbCksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCFzYXZlX2VuYWJsZWQpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWRybV9tb2Rl c2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiArCj4gKwl3aGlsZSAoZHJtX21vZGVzZXRfbG9j a19hbGxfY3R4KGRldiwgJmN0eCkgIT0gMCkKPiArCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgp Owo+ICsKPiArCW1lbWNweShzYXZlX2VuYWJsZWQsIGVuYWJsZWQsIGNvdW50KTsKPiArCWNvbm5f c2VxID0gR0VOTUFTSyhjb3VudCAtIDEsIDApOwo+ICsJY29ubl9jb25maWd1cmVkID0gMDsKPiAr cmV0cnk6Cj4gKwlmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewo+ICsJCXN0cnVjdCBkcm1f ZmJfaGVscGVyX2Nvbm5lY3RvciAqZmJfY29ubjsKPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yOwo+ICsJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCQlzdHJ1Y3Qg ZHJtX2ZiX2hlbHBlcl9jcnRjICpuZXdfY3J0YzsKPiArCj4gKwkJZmJfY29ubiA9IGZiX2hlbHBl ci0+Y29ubmVjdG9yX2luZm9baV07Cj4gKwkJY29ubmVjdG9yID0gZmJfY29ubi0+Y29ubmVjdG9y Owo+ICsKPiArCQlpZiAoY29ubl9jb25maWd1cmVkICYgQklUKGkpKQo+ICsJCQljb250aW51ZTsK PiArCj4gKwkJLyogRmlyc3QgcGFzcywgb25seSBjb25zaWRlciB0aWxlZCBjb25uZWN0b3JzICov Cj4gKwkJaWYgKGNvbm5fc2VxID09IEdFTk1BU0soY291bnQgLSAxLCAwKSAmJiAhY29ubmVjdG9y LT5oYXNfdGlsZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChjb25uZWN0b3ItPnN0YXR1 cyA9PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiArCQkJbnVtX2Nvbm5lY3RvcnNfZGV0 ZWN0ZWQrKzsKPiArCj4gKwkJaWYgKCFlbmFibGVkW2ldKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMo ImNvbm5lY3RvciAlcyBub3QgZW5hYmxlZCwgc2tpcHBpbmdcbiIsCj4gKwkJCQkgICAgICBjb25u ZWN0b3ItPm5hbWUpOwo+ICsJCQljb25uX2NvbmZpZ3VyZWQgfD0gQklUKGkpOwo+ICsJCQljb250 aW51ZTsKPiArCQl9Cj4gKwo+ICsJCWlmIChjb25uZWN0b3ItPmZvcmNlID09IERSTV9GT1JDRV9P RkYpIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9yICVzIGlzIGRpc2FibGVkIGJ5IHVz ZXIsIHNraXBwaW5nXG4iLAo+ICsJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPiArCQkJZW5h YmxlZFtpXSA9IGZhbHNlOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCWVuY29kZXIg PSBjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXI7Cj4gKwkJaWYgKCFlbmNvZGVyIHx8IFdB Uk5fT04oIWNvbm5lY3Rvci0+c3RhdGUtPmNydGMpKSB7Cj4gKwkJCWlmIChjb25uZWN0b3ItPmZv cmNlID4gRFJNX0ZPUkNFX09GRikKPiArCQkJCWdvdG8gYmFpbDsKPiArCj4gKwkJCURSTV9ERUJV R19LTVMoImNvbm5lY3RvciAlcyBoYXMgbm8gZW5jb2RlciBvciBjcnRjLCBza2lwcGluZ1xuIiwK PiArCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4gKwkJCWVuYWJsZWRbaV0gPSBmYWxzZTsK PiArCQkJY29ubl9jb25maWd1cmVkIHw9IEJJVChpKTsKPiArCQkJY29udGludWU7Cj4gKwkJfQo+ ICsKPiArCQludW1fY29ubmVjdG9yc19lbmFibGVkKys7Cj4gKwo+ICsJCW5ld19jcnRjID0gZHJt X2ZiX2hlbHBlcl9jcnRjKGZiX2hlbHBlciwgY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yyk7Cj4gKwo+ ICsJCS8qCj4gKwkJICogTWFrZSBzdXJlIHdlJ3JlIG5vdCB0cnlpbmcgdG8gZHJpdmUgbXVsdGlw bGUgY29ubmVjdG9ycwo+ICsJCSAqIHdpdGggYSBzaW5nbGUgQ1JUQywgc2luY2Ugb3VyIGNsb25p bmcgc3VwcG9ydCBtYXkgbm90Cj4gKwkJICogbWF0Y2ggdGhlIEJJT1MuCj4gKwkJICovCj4gKwkJ Zm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHsKPiArCQkJaWYgKGNydGNzW2pdID09IG5ld19j cnRjKSB7Cj4gKwkJCQlEUk1fREVCVUdfS01TKCJmYWxsYmFjazogY2xvbmVkIGNvbmZpZ3VyYXRp b25cbiIpOwo+ICsJCQkJZ290byBiYWlsOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQlEUk1fREVC VUdfS01TKCJsb29raW5nIGZvciBjbWRsaW5lIG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+ICsJ CQkgICAgICBjb25uZWN0b3ItPm5hbWUpOwo+ICsKPiArCQkvKiBnbyBmb3IgY29tbWFuZCBsaW5l IG1vZGUgZmlyc3QgKi8KPiArCQltb2Rlc1tpXSA9IGRybV9waWNrX2NtZGxpbmVfbW9kZShmYl9j b25uKTsKPiArCj4gKwkJLyogdHJ5IGZvciBwcmVmZXJyZWQgbmV4dCAqLwo+ICsJCWlmICghbW9k ZXNbaV0pIHsKPiArCQkJRFJNX0RFQlVHX0tNUygibG9va2luZyBmb3IgcHJlZmVycmVkIG1vZGUg b24gY29ubmVjdG9yICVzICVkXG4iLAo+ICsJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lLCBjb25u ZWN0b3ItPmhhc190aWxlKTsKPiArCQkJbW9kZXNbaV0gPSBkcm1faGFzX3ByZWZlcnJlZF9tb2Rl KGZiX2Nvbm4sIHdpZHRoLAo+ICsJCQkJCQkJICBoZWlnaHQpOwo+ICsJCX0KPiArCj4gKwkJLyog Tm8gcHJlZmVycmVkIG1vZGUgbWFya2VkIGJ5IHRoZSBFRElEPyBBcmUgdGhlcmUgYW55IG1vZGVz PyAqLwo+ICsJCWlmICghbW9kZXNbaV0gJiYgIWxpc3RfZW1wdHkoJmNvbm5lY3Rvci0+bW9kZXMp KSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoInVzaW5nIGZpcnN0IG1vZGUgbGlzdGVkIG9uIGNvbm5l Y3RvciAlc1xuIiwKPiArCQkJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4gKwkJCW1vZGVzW2ld ID0gbGlzdF9maXJzdF9lbnRyeSgmY29ubmVjdG9yLT5tb2RlcywKPiArCQkJCQkJICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlLAo+ICsJCQkJCQkgICAgaGVhZCk7Cj4gKwkJfQo+ICsKPiArCQkv KiBsYXN0IHJlc29ydDogdXNlIGN1cnJlbnQgbW9kZSAqLwo+ICsJCWlmICghbW9kZXNbaV0pIHsK PiArCQkJLyoKPiArCQkJICogSU1QT1JUQU5UOiBXZSB3YW50IHRvIHVzZSB0aGUgYWRqdXN0ZWQg bW9kZSAoaS5lLgo+ICsJCQkgKiBhZnRlciB0aGUgcGFuZWwgZml0dGVyIHVwc2NhbGluZykgYXMg dGhlIGluaXRpYWwKPiArCQkJICogY29uZmlnLCBub3QgdGhlIGlucHV0IG1vZGUsIHdoaWNoIGlz IHdoYXQgY3J0Yy0+bW9kZQo+ICsJCQkgKiB1c3VhbGx5IGNvbnRhaW5zLiBCdXQgc2luY2Ugb3Vy IGN1cnJlbnQKPiArCQkJICogY29kZSBwdXRzIGEgbW9kZSBkZXJpdmVkIGZyb20gdGhlIHBvc3Qt cGZpdCB0aW1pbmdzCj4gKwkJCSAqIGludG8gY3J0Yy0+bW9kZSB0aGlzIHdvcmtzIG91dCBjb3Jy ZWN0bHkuCj4gKwkJCSAqCj4gKwkJCSAqIFRoaXMgaXMgY3J0Yy0+bW9kZSBhbmQgbm90IGNydGMt PnN0YXRlLT5tb2RlIGZvciB0aGUKPiArCQkJICogZmFzdGJvb3QgY2hlY2sgdG8gd29yayBjb3Jy ZWN0bHkuCj4gKwkJCSAqLwo+ICsJCQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZvciBjdXJyZW50 IG1vZGUgb24gY29ubmVjdG9yICVzXG4iLAo+ICsJCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsK PiArCQkJbW9kZXNbaV0gPSAmY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yy0+bW9kZTsKPiArCQl9Cj4g KwkJY3J0Y3NbaV0gPSBuZXdfY3J0YzsKPiArCj4gKwkJRFJNX0RFQlVHX0tNUygiY29ubmVjdG9y ICVzIG9uIFtDUlRDOiVkOiVzXTogJWR4JWQlc1xuIiwKPiArCQkJICAgICAgY29ubmVjdG9yLT5u YW1lLAo+ICsJCQkgICAgICBjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5iYXNlLmlkLAo+ICsJCQkg ICAgICBjb25uZWN0b3ItPnN0YXRlLT5jcnRjLT5uYW1lLAo+ICsJCQkgICAgICBtb2Rlc1tpXS0+ aGRpc3BsYXksIG1vZGVzW2ldLT52ZGlzcGxheSwKPiArCQkJICAgICAgbW9kZXNbaV0tPmZsYWdz ICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgPyAiaSIgOiAiIik7Cj4gKwo+ICsJCWZhbGxiYWNr ID0gZmFsc2U7Cj4gKwkJY29ubl9jb25maWd1cmVkIHw9IEJJVChpKTsKPiArCX0KPiArCj4gKwlp ZiAoY29ubl9jb25maWd1cmVkICE9IGNvbm5fc2VxKSB7IC8qIHJlcGVhdCB1bnRpbCBubyBtb3Jl IGFyZSBmb3VuZCAqLwo+ICsJCWNvbm5fc2VxID0gY29ubl9jb25maWd1cmVkOwo+ICsJCWdvdG8g cmV0cnk7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIElmIHRoZSBCSU9TIGRpZG4ndCBlbmFibGUg ZXZlcnl0aGluZyBpdCBjb3VsZCwgZmFsbCBiYWNrIHRvIGhhdmUgdGhlCj4gKwkgKiBzYW1lIHVz ZXIgZXhwZXJpZW5jaW5nIG9mIGxpZ2h0aW5nIHVwIGFzIG11Y2ggYXMgcG9zc2libGUgbGlrZSB0 aGUKPiArCSAqIGZiZGV2IGhlbHBlciBsaWJyYXJ5Lgo+ICsJICovCj4gKwlpZiAobnVtX2Nvbm5l Y3RvcnNfZW5hYmxlZCAhPSBudW1fY29ubmVjdG9yc19kZXRlY3RlZCAmJgo+ICsJICAgIG51bV9j b25uZWN0b3JzX2VuYWJsZWQgPCBkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjKSB7Cj4gKwkJRFJN X0RFQlVHX0tNUygiZmFsbGJhY2s6IE5vdCBhbGwgb3V0cHV0cyBlbmFibGVkXG4iKTsKPiArCQlE Uk1fREVCVUdfS01TKCJFbmFibGVkOiAlaSwgZGV0ZWN0ZWQ6ICVpXG4iLCBudW1fY29ubmVjdG9y c19lbmFibGVkLAo+ICsJCQkgICAgICBudW1fY29ubmVjdG9yc19kZXRlY3RlZCk7Cj4gKwkJZmFs bGJhY2sgPSB0cnVlOwo+ICsJfQo+ICsKPiArCWlmIChmYWxsYmFjaykgewo+ICtiYWlsOgo+ICsJ CURSTV9ERUJVR19LTVMoIk5vdCB1c2luZyBmaXJtd2FyZSBjb25maWd1cmF0aW9uXG4iKTsKPiAr CQltZW1jcHkoZW5hYmxlZCwgc2F2ZV9lbmFibGVkLCBjb3VudCk7Cj4gKwkJcmV0ID0gZmFsc2U7 Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiArCWRybV9tb2Rl c2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiArCj4gKwlrZnJlZShzYXZlX2VuYWJsZWQpOwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAkJCSAgICB1MzIgd2lkdGgsIHUzMiBoZWln aHQpCj4gIHsKPiBAQCAtMjU3NywxMCArMjc2NSw4IEBAIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9j cnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICAJCURSTV9ERUJVR19LTVMo Ik5vIGNvbm5lY3RvcnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGggbW9kZXNcbiIpOwo+ICAJZHJt X2VuYWJsZV9jb25uZWN0b3JzKGZiX2hlbHBlciwgZW5hYmxlZCk7Cj4gIAo+IC0JaWYgKCEoZmJf aGVscGVyLT5mdW5jcy0+aW5pdGlhbF9jb25maWcgJiYKPiAtCSAgICAgIGZiX2hlbHBlci0+ZnVu Y3MtPmluaXRpYWxfY29uZmlnKGZiX2hlbHBlciwgY3J0Y3MsIG1vZGVzLAo+IC0JCQkJCSAgICAg ICBvZmZzZXRzLAo+IC0JCQkJCSAgICAgICBlbmFibGVkLCB3aWR0aCwgaGVpZ2h0KSkpIHsKPiAr CWlmICghZHJtX2ZiX2hlbHBlcl9maXJtd2FyZV9jb25maWcoZmJfaGVscGVyLCBjcnRjcywgbW9k ZXMsIG9mZnNldHMsCj4gKwkJCQkJICAgZW5hYmxlZCwgd2lkdGgsIGhlaWdodCkpIHsKPiAgCQlt ZW1zZXQobW9kZXMsIDAsIGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50KnNpemVvZihtb2Rlc1sw XSkpOwo+ICAJCW1lbXNldChjcnRjcywgMCwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQqc2l6 ZW9mKGNydGNzWzBdKSk7Cj4gIAkJbWVtc2V0KG9mZnNldHMsIDAsIGZiX2hlbHBlci0+Y29ubmVj dG9yX2NvdW50KnNpemVvZihvZmZzZXRzWzBdKSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRl di5jCj4gaW5kZXggZThmNjk0YjU3YjhhLi4yMGU5MTYwMGNmNzEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJkZXYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2ZiZGV2LmMKPiBAQCAtMjkyLDIyNSArMjkyLDcgQEAgc3RhdGljIGludCBpbnRl bGZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyLAo+ICAJcmV0dXJuIHJldDsK PiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKgo+IC1pbnRlbF9m Yl9oZWxwZXJfY3J0YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gLXsKPiAtCWludCBpOwo+IC0KPiAtCWZvciAoaSA9IDA7IGkgPCBmYl9o ZWxwZXItPmNydGNfY291bnQ7IGkrKykKPiAtCQlpZiAoZmJfaGVscGVyLT5jcnRjX2luZm9baV0u bW9kZV9zZXQuY3J0YyA9PSBjcnRjKQo+IC0JCQlyZXR1cm4gJmZiX2hlbHBlci0+Y3J0Y19pbmZv W2ldOwo+IC0KPiAtCXJldHVybiBOVUxMOwo+IC19Cj4gLQo+IC0vKgo+IC0gKiBUcnkgdG8gcmVh ZCB0aGUgQklPUyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gYW5kIHVzZSBpdCBmb3IgdGhlIGluaXRp YWwKPiAtICogZmIgY29uZmlndXJhdGlvbi4KPiAtICoKPiAtICogVGhlIEJJT1Mgb3IgYm9vdCBs b2FkZXIgd2lsbCBnZW5lcmFsbHkgY3JlYXRlIGFuIGluaXRpYWwgZGlzcGxheQo+IC0gKiBjb25m aWd1cmF0aW9uIGZvciB1cyB0aGF0IGluY2x1ZGVzIHNvbWUgc2V0IG9mIGFjdGl2ZSBwaXBlcyBh bmQgZGlzcGxheXMuCj4gLSAqIFRoaXMgcm91dGluZSB0cmllcyB0byBmaWd1cmUgb3V0IHdoaWNo IHBpcGVzIGFuZCBjb25uZWN0b3JzIGFyZSBhY3RpdmUKPiAtICogYW5kIHN0dWZmcyB0aGVtIGlu dG8gdGhlIGNydGNzIGFuZCBtb2RlcyBhcnJheSBnaXZlbiB0byB1cyBieSB0aGUKPiAtICogZHJt X2ZiX2hlbHBlciBjb2RlLgo+IC0gKgo+IC0gKiBUaGUgb3ZlcmFsbCBzZXF1ZW5jZSBpczoKPiAt ICogICBpbnRlbF9mYmRldl9pbml0IC0gZnJvbSBkcml2ZXIgbG9hZAo+IC0gKiAgICAgaW50ZWxf ZmJkZXZfaW5pdF9iaW9zIC0gaW5pdGlhbGl6ZSB0aGUgaW50ZWxfZmJkZXYgdXNpbmcgQklPUyBk YXRhCj4gLSAqICAgICBkcm1fZmJfaGVscGVyX2luaXQgLSBidWlsZCBmYiBoZWxwZXIgc3RydWN0 cwo+IC0gKiAgICAgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0b3JzIC0gbW9y ZSBmYiBoZWxwZXIgc3RydWN0cwo+IC0gKiAgIGludGVsX2ZiZGV2X2luaXRpYWxfY29uZmlnIC0g YXBwbHkgdGhlIGNvbmZpZwo+IC0gKiAgICAgZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyAt IGNhbGwgLT5wcm9iZSB0aGVuIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKCkKPiAtICogICAgICAgICBk cm1fc2V0dXBfY3J0Y3MgLSBidWlsZCBjcnRjIGNvbmZpZyBmb3IgZmJkZXYKPiAtICogICAgICAg ICAgIGludGVsX2ZiX2luaXRpYWxfY29uZmlnIC0gZmluZCBhY3RpdmUgY29ubmVjdG9ycyBldGMK PiAtICogICAgICAgICBkcm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZSAtIHNldCB1cCBmYmRl dgo+IC0gKiAgICAgICAgICAgaW50ZWxmYl9jcmVhdGUgLSByZS11c2Ugb3IgYWxsb2MgZmIsIGJ1 aWxkIG91dCBmYmRldiBzdHJ1Y3RzCj4gLSAqCj4gLSAqIE5vdGUgdGhhdCB3ZSBkb24ndCBtYWtl IHNwZWNpYWwgY29uc2lkZXJhdGlvbiB3aGV0aGVyIHdlIGNvdWxkIGFjdHVhbGx5Cj4gLSAqIHN3 aXRjaCB0byB0aGUgc2VsZWN0ZWQgbW9kZXMgd2l0aG91dCBhIGZ1bGwgbW9kZXNldC4gRS5nLiB3 aGVuIHRoZSBkaXNwbGF5Cj4gLSAqIGlzIGluIFZHQSBtb2RlIHdlIG5lZWQgdG8gcmVjYWxjdWxh dGUgd2F0ZXJtYXJrcyBhbmQgc2V0IGEgbmV3IGhpZ2gtcmVzCj4gLSAqIGZyYW1lYnVmZmVyIGFu eXdheS4KPiAtICovCj4gLXN0YXRpYyBib29sIGludGVsX2ZiX2luaXRpYWxfY29uZmlnKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gLQkJCQkgICAgc3RydWN0IGRybV9mYl9oZWxw ZXJfY3J0YyAqKmNydGNzLAo+IC0JCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9k ZXMsCj4gLQkJCQkgICAgc3RydWN0IGRybV9mYl9vZmZzZXQgKm9mZnNldHMsCj4gLQkJCQkgICAg Ym9vbCAqZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQo+IC17Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGZiX2hlbHBlci0+ZGV2KTsKPiAtCXVu c2lnbmVkIGludCBjb3VudCA9IG1pbihmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwgQklUU19Q RVJfTE9ORyk7Cj4gLQl1bnNpZ25lZCBsb25nIGNvbm5fY29uZmlndXJlZCwgY29ubl9zZXE7Cj4g LQlpbnQgaSwgajsKPiAtCWJvb2wgKnNhdmVfZW5hYmxlZDsKPiAtCWJvb2wgZmFsbGJhY2sgPSB0 cnVlLCByZXQgPSB0cnVlOwo+IC0JaW50IG51bV9jb25uZWN0b3JzX2VuYWJsZWQgPSAwOwo+IC0J aW50IG51bV9jb25uZWN0b3JzX2RldGVjdGVkID0gMDsKPiAtCXN0cnVjdCBkcm1fbW9kZXNldF9h Y3F1aXJlX2N0eCBjdHg7Cj4gLQo+IC0Jc2F2ZV9lbmFibGVkID0ga2NhbGxvYyhjb3VudCwgc2l6 ZW9mKGJvb2wpLCBHRlBfS0VSTkVMKTsKPiAtCWlmICghc2F2ZV9lbmFibGVkKQo+IC0JCXJldHVy biBmYWxzZTsKPiAtCj4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gLQo+ IC0Jd2hpbGUgKGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChmYl9oZWxwZXItPmRldiwgJmN0eCkg IT0gMCkKPiAtCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+IC0KPiAtCW1lbWNweShzYXZl X2VuYWJsZWQsIGVuYWJsZWQsIGNvdW50KTsKPiAtCWNvbm5fc2VxID0gR0VOTUFTSyhjb3VudCAt IDEsIDApOwo+IC0JY29ubl9jb25maWd1cmVkID0gMDsKPiAtcmV0cnk6Cj4gLQlmb3IgKGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+IC0JCXN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAq ZmJfY29ubjsKPiAtCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+IC0JCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAtCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpu ZXdfY3J0YzsKPiAtCj4gLQkJZmJfY29ubiA9IGZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm9baV07 Cj4gLQkJY29ubmVjdG9yID0gZmJfY29ubi0+Y29ubmVjdG9yOwo+IC0KPiAtCQlpZiAoY29ubl9j b25maWd1cmVkICYgQklUKGkpKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJLyogRmlyc3QgcGFz cywgb25seSBjb25zaWRlciB0aWxlZCBjb25uZWN0b3JzICovCj4gLQkJaWYgKGNvbm5fc2VxID09 IEdFTk1BU0soY291bnQgLSAxLCAwKSAmJiAhY29ubmVjdG9yLT5oYXNfdGlsZSkKPiAtCQkJY29u dGludWU7Cj4gLQo+IC0JCWlmIChjb25uZWN0b3ItPnN0YXR1cyA9PSBjb25uZWN0b3Jfc3RhdHVz X2Nvbm5lY3RlZCkKPiAtCQkJbnVtX2Nvbm5lY3RvcnNfZGV0ZWN0ZWQrKzsKPiAtCj4gLQkJaWYg KCFlbmFibGVkW2ldKSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoImNvbm5lY3RvciAlcyBub3QgZW5h YmxlZCwgc2tpcHBpbmdcbiIsCj4gLQkJCQkgICAgICBjb25uZWN0b3ItPm5hbWUpOwo+IC0JCQlj b25uX2NvbmZpZ3VyZWQgfD0gQklUKGkpOwo+IC0JCQljb250aW51ZTsKPiAtCQl9Cj4gLQo+IC0J CWlmIChjb25uZWN0b3ItPmZvcmNlID09IERSTV9GT1JDRV9PRkYpIHsKPiAtCQkJRFJNX0RFQlVH X0tNUygiY29ubmVjdG9yICVzIGlzIGRpc2FibGVkIGJ5IHVzZXIsIHNraXBwaW5nXG4iLAo+IC0J CQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPiAtCQkJZW5hYmxlZFtpXSA9IGZhbHNlOwo+IC0J CQljb250aW51ZTsKPiAtCQl9Cj4gLQo+IC0JCWVuY29kZXIgPSBjb25uZWN0b3ItPnN0YXRlLT5i ZXN0X2VuY29kZXI7Cj4gLQkJaWYgKCFlbmNvZGVyIHx8IFdBUk5fT04oIWNvbm5lY3Rvci0+c3Rh dGUtPmNydGMpKSB7Cj4gLQkJCWlmIChjb25uZWN0b3ItPmZvcmNlID4gRFJNX0ZPUkNFX09GRikK PiAtCQkJCWdvdG8gYmFpbDsKPiAtCj4gLQkJCURSTV9ERUJVR19LTVMoImNvbm5lY3RvciAlcyBo YXMgbm8gZW5jb2RlciBvciBjcnRjLCBza2lwcGluZ1xuIiwKPiAtCQkJCSAgICAgIGNvbm5lY3Rv ci0+bmFtZSk7Cj4gLQkJCWVuYWJsZWRbaV0gPSBmYWxzZTsKPiAtCQkJY29ubl9jb25maWd1cmVk IHw9IEJJVChpKTsKPiAtCQkJY29udGludWU7Cj4gLQkJfQo+IC0KPiAtCQludW1fY29ubmVjdG9y c19lbmFibGVkKys7Cj4gLQo+IC0JCW5ld19jcnRjID0gaW50ZWxfZmJfaGVscGVyX2NydGMoZmJf aGVscGVyLAo+IC0JCQkJCQljb25uZWN0b3ItPnN0YXRlLT5jcnRjKTsKPiAtCj4gLQkJLyoKPiAt CQkgKiBNYWtlIHN1cmUgd2UncmUgbm90IHRyeWluZyB0byBkcml2ZSBtdWx0aXBsZSBjb25uZWN0 b3JzCj4gLQkJICogd2l0aCBhIHNpbmdsZSBDUlRDLCBzaW5jZSBvdXIgY2xvbmluZyBzdXBwb3J0 IG1heSBub3QKPiAtCQkgKiBtYXRjaCB0aGUgQklPUy4KPiAtCQkgKi8KPiAtCQlmb3IgKGogPSAw OyBqIDwgY291bnQ7IGorKykgewo+IC0JCQlpZiAoY3J0Y3Nbal0gPT0gbmV3X2NydGMpIHsKPiAt CQkJCURSTV9ERUJVR19LTVMoImZhbGxiYWNrOiBjbG9uZWQgY29uZmlndXJhdGlvblxuIik7Cj4g LQkJCQlnb3RvIGJhaWw7Cj4gLQkJCX0KPiAtCQl9Cj4gLQo+IC0JCURSTV9ERUJVR19LTVMoImxv b2tpbmcgZm9yIGNtZGxpbmUgbW9kZSBvbiBjb25uZWN0b3IgJXNcbiIsCj4gLQkJCSAgICAgIGNv bm5lY3Rvci0+bmFtZSk7Cj4gLQo+IC0JCS8qIGdvIGZvciBjb21tYW5kIGxpbmUgbW9kZSBmaXJz dCAqLwo+IC0JCW1vZGVzW2ldID0gZHJtX3BpY2tfY21kbGluZV9tb2RlKGZiX2Nvbm4pOwo+IC0K PiAtCQkvKiB0cnkgZm9yIHByZWZlcnJlZCBuZXh0ICovCj4gLQkJaWYgKCFtb2Rlc1tpXSkgewo+ IC0JCQlEUk1fREVCVUdfS01TKCJsb29raW5nIGZvciBwcmVmZXJyZWQgbW9kZSBvbiBjb25uZWN0 b3IgJXMgJWRcbiIsCj4gLQkJCQkgICAgICBjb25uZWN0b3ItPm5hbWUsIGNvbm5lY3Rvci0+aGFz X3RpbGUpOwo+IC0JCQltb2Rlc1tpXSA9IGRybV9oYXNfcHJlZmVycmVkX21vZGUoZmJfY29ubiwg d2lkdGgsCj4gLQkJCQkJCQkgIGhlaWdodCk7Cj4gLQkJfQo+IC0KPiAtCQkvKiBObyBwcmVmZXJy ZWQgbW9kZSBtYXJrZWQgYnkgdGhlIEVESUQ/IEFyZSB0aGVyZSBhbnkgbW9kZXM/ICovCj4gLQkJ aWYgKCFtb2Rlc1tpXSAmJiAhbGlzdF9lbXB0eSgmY29ubmVjdG9yLT5tb2RlcykpIHsKPiAtCQkJ RFJNX0RFQlVHX0tNUygidXNpbmcgZmlyc3QgbW9kZSBsaXN0ZWQgb24gY29ubmVjdG9yICVzXG4i LAo+IC0JCQkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsKPiAtCQkJbW9kZXNbaV0gPSBsaXN0X2Zp cnN0X2VudHJ5KCZjb25uZWN0b3ItPm1vZGVzLAo+IC0JCQkJCQkgICAgc3RydWN0IGRybV9kaXNw bGF5X21vZGUsCj4gLQkJCQkJCSAgICBoZWFkKTsKPiAtCQl9Cj4gLQo+IC0JCS8qIGxhc3QgcmVz b3J0OiB1c2UgY3VycmVudCBtb2RlICovCj4gLQkJaWYgKCFtb2Rlc1tpXSkgewo+IC0JCQkvKgo+ IC0JCQkgKiBJTVBPUlRBTlQ6IFdlIHdhbnQgdG8gdXNlIHRoZSBhZGp1c3RlZCBtb2RlIChpLmUu Cj4gLQkJCSAqIGFmdGVyIHRoZSBwYW5lbCBmaXR0ZXIgdXBzY2FsaW5nKSBhcyB0aGUgaW5pdGlh bAo+IC0JCQkgKiBjb25maWcsIG5vdCB0aGUgaW5wdXQgbW9kZSwgd2hpY2ggaXMgd2hhdCBjcnRj LT5tb2RlCj4gLQkJCSAqIHVzdWFsbHkgY29udGFpbnMuIEJ1dCBzaW5jZSBvdXIgY3VycmVudAo+ IC0JCQkgKiBjb2RlIHB1dHMgYSBtb2RlIGRlcml2ZWQgZnJvbSB0aGUgcG9zdC1wZml0IHRpbWlu Z3MKPiAtCQkJICogaW50byBjcnRjLT5tb2RlIHRoaXMgd29ya3Mgb3V0IGNvcnJlY3RseS4KPiAt CQkJICoKPiAtCQkJICogVGhpcyBpcyBjcnRjLT5tb2RlIGFuZCBub3QgY3J0Yy0+c3RhdGUtPm1v ZGUgZm9yIHRoZQo+IC0JCQkgKiBmYXN0Ym9vdCBjaGVjayB0byB3b3JrIGNvcnJlY3RseS4gY3J0 Y19zdGF0ZS0+bW9kZSBoYXMKPiAtCQkJICogSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVELCB3aGlj aCB3ZSBjbGVhciB0byBmb3JjZSBjaGVjawo+IC0JCQkgKiBzdGF0ZS4KPiAtCQkJICovCj4gLQkJ CURSTV9ERUJVR19LTVMoImxvb2tpbmcgZm9yIGN1cnJlbnQgbW9kZSBvbiBjb25uZWN0b3IgJXNc biIsCj4gLQkJCQkgICAgICBjb25uZWN0b3ItPm5hbWUpOwo+IC0JCQltb2Rlc1tpXSA9ICZjb25u ZWN0b3ItPnN0YXRlLT5jcnRjLT5tb2RlOwo+IC0JCX0KPiAtCQljcnRjc1tpXSA9IG5ld19jcnRj Owo+IC0KPiAtCQlEUk1fREVCVUdfS01TKCJjb25uZWN0b3IgJXMgb24gW0NSVEM6JWQ6JXNdOiAl ZHglZCVzXG4iLAo+IC0JCQkgICAgICBjb25uZWN0b3ItPm5hbWUsCj4gLQkJCSAgICAgIGNvbm5l Y3Rvci0+c3RhdGUtPmNydGMtPmJhc2UuaWQsCj4gLQkJCSAgICAgIGNvbm5lY3Rvci0+c3RhdGUt PmNydGMtPm5hbWUsCj4gLQkJCSAgICAgIG1vZGVzW2ldLT5oZGlzcGxheSwgbW9kZXNbaV0tPnZk aXNwbGF5LAo+IC0JCQkgICAgICBtb2Rlc1tpXS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVS TEFDRSA/ICJpIiA6IiIpOwo+IC0KPiAtCQlmYWxsYmFjayA9IGZhbHNlOwo+IC0JCWNvbm5fY29u ZmlndXJlZCB8PSBCSVQoaSk7Cj4gLQl9Cj4gLQo+IC0JaWYgKGNvbm5fY29uZmlndXJlZCAhPSBj b25uX3NlcSkgeyAvKiByZXBlYXQgdW50aWwgbm8gbW9yZSBhcmUgZm91bmQgKi8KPiAtCQljb25u X3NlcSA9IGNvbm5fY29uZmlndXJlZDsKPiAtCQlnb3RvIHJldHJ5Owo+IC0JfQo+IC0KPiAtCS8q Cj4gLQkgKiBJZiB0aGUgQklPUyBkaWRuJ3QgZW5hYmxlIGV2ZXJ5dGhpbmcgaXQgY291bGQsIGZh bGwgYmFjayB0byBoYXZlIHRoZQo+IC0JICogc2FtZSB1c2VyIGV4cGVyaWVuY2luZyBvZiBsaWdo dGluZyB1cCBhcyBtdWNoIGFzIHBvc3NpYmxlIGxpa2UgdGhlCj4gLQkgKiBmYmRldiBoZWxwZXIg bGlicmFyeS4KPiAtCSAqLwo+IC0JaWYgKG51bV9jb25uZWN0b3JzX2VuYWJsZWQgIT0gbnVtX2Nv bm5lY3RvcnNfZGV0ZWN0ZWQgJiYKPiAtCSAgICBudW1fY29ubmVjdG9yc19lbmFibGVkIDwgSU5U RUxfSU5GTyhkZXZfcHJpdiktPm51bV9waXBlcykgewo+IC0JCURSTV9ERUJVR19LTVMoImZhbGxi YWNrOiBOb3QgYWxsIG91dHB1dHMgZW5hYmxlZFxuIik7Cj4gLQkJRFJNX0RFQlVHX0tNUygiRW5h YmxlZDogJWksIGRldGVjdGVkOiAlaVxuIiwgbnVtX2Nvbm5lY3RvcnNfZW5hYmxlZCwKPiAtCQkJ ICAgICAgbnVtX2Nvbm5lY3RvcnNfZGV0ZWN0ZWQpOwo+IC0JCWZhbGxiYWNrID0gdHJ1ZTsKPiAt CX0KPiAtCj4gLQlpZiAoZmFsbGJhY2spIHsKPiAtYmFpbDoKPiAtCQlEUk1fREVCVUdfS01TKCJO b3QgdXNpbmcgZmlybXdhcmUgY29uZmlndXJhdGlvblxuIik7Cj4gLQkJbWVtY3B5KGVuYWJsZWQs IHNhdmVfZW5hYmxlZCwgY291bnQpOwo+IC0JCXJldCA9IGZhbHNlOwo+IC0JfQo+IC0KPiAtCWRy bV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gLQlkcm1fbW9kZXNldF9hY3F1aXJlX2Zpbmko JmN0eCk7Cj4gLQo+IC0Ja2ZyZWUoc2F2ZV9lbmFibGVkKTsKPiAtCXJldHVybiByZXQ7Cj4gLX0K PiAtCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyBpbnRlbF9mYl9o ZWxwZXJfZnVuY3MgPSB7Cj4gLQkuaW5pdGlhbF9jb25maWcgPSBpbnRlbF9mYl9pbml0aWFsX2Nv bmZpZywKPiAgCS5mYl9wcm9iZSA9IGludGVsZmJfY3JlYXRlLAo+ICB9Owo+ICAKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hl bHBlci5oCj4gaW5kZXggN2EwOTU5NjRmNmIyLi5iY2E0YjM0ZGM5M2IgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hl bHBlci5oCj4gQEAgLTEwMCwyOSArMTAwLDYgQEAgc3RydWN0IGRybV9mYl9oZWxwZXJfZnVuY3Mg ewo+ICAJICovCj4gIAlpbnQgKCpmYl9wcm9iZSkoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBl ciwKPiAgCQkJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcyk7Cj4gLQo+ IC0JLyoqCj4gLQkgKiBAaW5pdGlhbF9jb25maWc6Cj4gLQkgKgo+IC0JICogRHJpdmVyIGNhbGxi YWNrIHRvIHNldHVwIGFuIGluaXRpYWwgZmJkZXYgZGlzcGxheSBjb25maWd1cmF0aW9uLgo+IC0J ICogRHJpdmVycyBjYW4gdXNlIHRoaXMgY2FsbGJhY2sgdG8gdGVsbCB0aGUgZmJkZXYgZW11bGF0 aW9uIHdoYXQgdGhlCj4gLQkgKiBwcmVmZXJyZWQgaW5pdGlhbCBjb25maWd1cmF0aW9uIGlzLiBU aGlzIGlzIHVzZWZ1bCB0byBpbXBsZW1lbnQKPiAtCSAqIHNtb290aCBib290aW5nIHdoZXJlIHRo ZSBmYmRldiAoYW5kIHN1YnNlcXVlbnRseSBhbGwgdXNlcnNwYWNlKSBuZXZlcgo+IC0JICogY2hh bmdlcyB0aGUgbW9kZSwgYnV0IGFsd2F5cyBpbmhlcml0cyB0aGUgZXhpc3RpbmcgY29uZmlndXJh dGlvbi4KPiAtCSAqCj4gLQkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLgo+IC0JICoKPiAt CSAqIFJFVFVSTlM6Cj4gLQkgKgo+IC0JICogVGhlIGRyaXZlciBzaG91bGQgcmV0dXJuIHRydWUg aWYgYSBzdWl0YWJsZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24gaGFzCj4gLQkgKiBiZWVuIGZpbGxl ZCBvdXQgYW5kIGZhbHNlIHdoZW4gdGhlIGZiZGV2IGhlbHBlciBzaG91bGQgZmFsbCBiYWNrIHRv Cj4gLQkgKiB0aGUgZGVmYXVsdCBwcm9iaW5nIGxvZ2ljLgo+IC0JICovCj4gLQlib29sICgqaW5p dGlhbF9jb25maWcpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gLQkJCSAgICAg ICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsCj4gLQkJCSAgICAgICBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzLAo+IC0JCQkgICAgICAgc3RydWN0IGRybV9mYl9vZmZz ZXQgKm9mZnNldHMsCj4gLQkJCSAgICAgICBib29sICplbmFibGVkLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQpOwo+ICB9Owo+ICAKPiAgc3RydWN0IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yIHsKCi0t IApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==