From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 3/3] console/fbcon: Add support for deferred console takeover Date: Thu, 28 Jun 2018 09:55:00 +0200 Message-ID: <20180628075500.GP13978@phenom.ffwll.local> References: <20180626183612.321-1-hdegoede@redhat.com> <20180626183612.321-4-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3E6E6E8FF for ; Thu, 28 Jun 2018 07:55:04 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id c17-v6so4582791eds.11 for ; Thu, 28 Jun 2018 00:55:04 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180626183612.321-4-hdegoede@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans de Goede Cc: Petr Mladek , linux-fbdev@vger.kernel.org, Bartlomiej Zolnierkiewicz , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Sergey Senozhatsky , Steven Rostedt List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMjYsIDIwMTggYXQgMDg6MzY6MTJQTSArMDIwMCwgSGFucyBkZSBHb2VkZSB3 cm90ZToKPiBDdXJyZW50bHkgZmJjb24gY2xhaW1zIGZiZGV2cyBhcyBzb29uIGFzIHRoZXkgYXJl IHJlZ2lzdGVyZWQgYW5kIHRha2VzIG92ZXIKPiB0aGUgY29uc29sZSBhcyBzb29uIGFzIHRoZSBm aXJzdCBmYmRldiBnZXRzIHJlZ2lzdGVyZWQuCj4gCj4gVGhpcyBiZWhhdmlvciBpcyB1bmRlc2ly YWJsZSBpbiBjYXNlcyB3aGVyZSBhIHNtb290aCBncmFwaGljYWwgYm9vdHVwIGlzCj4gZGVzaXJl ZCwgaW4gc3VjaCBjYXNlcyB3ZSB0eXBpY2FsbHkgd2FudCB0aGUgY29udGVudHMgb2YgdGhlIGZy YW1lYnVmZmVyCj4gKHR5cGljYWxseSBhIHZlbmRvciBsb2dvKSB0byBzdGF5IGluIHBsYWNlIGFz IGlzLgo+IAo+IFRoZSBjdXJyZW50IHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gKG9uIGVtYmVk ZGVkIHN5c3RlbXMpIGlzIHRvIG5vdAo+IGVuYWJsZSBmYmNvbi4KPiAKPiBUaGlzIGNvbW1pdCBh ZGRzIGEgbmV3IEZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJSRURfVEFLRU9WRVIgY29uZmlnIG9w dGlvbiwKPiB3aGljaCB3aGVuIGVuYWJsZWQgZGVmZXJzIGZiY29uIHRha2luZyBvdmVyIHRoZSBj b25zb2xlIGZyb20gdGhlIGR1bW15Cj4gY29uc29sZSB1bnRpbCB0aGUgZmlyc3QgdGV4dCBpcyBk aXNwbGF5ZWQgb24gdGhlIGNvbnNvbGUuIFRvZ2V0aGVyIHdpdGggdGhlCj4gInF1aWV0IiBrZXJu ZWwgY29tbWFuZGxpbmUgb3B0aW9uLCB0aGlzIGFsbG93cyBmYmNvbiB0byBzdGlsbCBiZSB1c2Vk Cj4gdG9nZXRoZXIgd2l0aCBhIHNtb290aCBncmFwaGljYWwgYm9vdHVwLCBoYXZpbmcgaXQgdGFr ZSBvdmVyIHRoZSBjb25zb2xlIGFzCj4gc29vbiBhcyBlLmcuIGFuIGVycm9yIG1lc3NhZ2UgaXMg bG9nZ2VkLgo+IAo+IFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZm d2xsLmNoPgo+IFNpZ25lZC1vZmYtYnk6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5j b20+CgpBIGJpdCBhIGxhdGUgY29tbWVudCwgYW5kIGZlZWwgZnJlZSB0byByZWplY3Q6IEhhdmUg eW91IGNvbnNpZGVyZWQKcmVnaXN0ZXJpbmcgdGhlIGZiY29uIGRyaXZlciwgYnV0IG5vdCBkb2lu ZyBhbnkgbW9kZXNldHMgdW50aWwgdGhlIHZlcnkKZmlyc3QgcmVhbCBtZXNzYWdlIHNob3dzIHVw PwoKVGhhdCB3b3VsZCBtYWtlIGl0IHdvcmsgd2l0aCBhbnkgY29uc29sZSBkcml2ZXIgc2V0dXAs IGV2ZW4gd2hlbiBkdW1teQpjb25zb2xlIGlzIGRlYWN0aXZhdGVkLiBBbmQgaXQgd291bGQgYXZv aWQgdGhlIG5vdGlmaWVyIGxheWVyaW5nCnZpb2xhdGlvbiwgd2hpY2ggc3RpbGwgaXJrcyBtZSBh IGJpdCB3aXRoIHRoaXMgYXBwcm9hY2ggaGVyZS4KLURhbmllbAoKPiAtLS0KPiBDaGFuZ2VzIGlu IHYyOgo+IC1DaGVjayB0aGUgd2hvbGUgc3RyaW5nIHdoZW4gY2hlY2tpbmcgZm9yIGVyYXNlcyBp biBwdXRjcywgaW5zdGVhZCBvZiBqdXN0Cj4gIHRoZSBmaXJzdCBjaGFyCj4gLU1ha2UgZHVtbXlj b25fYmxhbmsgcmV0dXJuIDEsIHNvIHRoYXQgYSByZWRyYXcgZ2V0cyB0cmlnZ2VyZWQgYW5kIGFu eSB0ZXh0Cj4gIHJlbmRlcmVkIHdoaWxlIGJsYW5rZWQgZ2V0cyBvdXRwdXQgc28gdGhhdCBpdCBj YW4gdHJpZ2dlciBhIGRlZmVycmVkCj4gIHRha2VvdmVyIGlmIG9uZSBpcyBwZW5kaW5nCj4gCj4g Q2hhbmdlcyBpbiB2MzoKPiAtQ2FsbCBXQVJOX0NPTlNPTEVfVU5MT0NLRUQoKSBmcm9tIGZiY29u X291dHB1dF9ub3RpZmllcigpCj4gLVVucmVnaXN0ZXIgdGhlIG5vdGlmaWVyIG9uIGZiY29uX2V4 aXQoKQo+IC1Eb2N1bWVudCB0aGUgZmJjb249bm9kZWZlciBjb21tYW5kbGluZSBvcHRpb24gaW4g RG9jdW1lbnRhdGlvbi9mYi9mYmNvbi50eHQKPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9mYi9mYmNv bi50eHQgICAgICAgfCAgNyArKysrCj4gIGRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnICAg IHwgMTEgKysrKysKPiAgZHJpdmVycy92aWRlby9jb25zb2xlL2R1bW15Y29uLmMgfCA2NyArKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQo+ICBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJj b24uYyB8IDcyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUvbGlu dXgvY29uc29sZS5oICAgICAgICAgIHwgIDUgKysrCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTU0IGlu c2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vZmIvZmJjb24udHh0IGIvRG9jdW1lbnRhdGlvbi9mYi9mYmNvbi50eHQKPiBpbmRleCA3OWMy MmQwOTZiYmMuLmQ0ZDY0MmUxY2U5YyAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0aW9uL2ZiL2Zi Y29uLnR4dAo+ICsrKyBiL0RvY3VtZW50YXRpb24vZmIvZmJjb24udHh0Cj4gQEAgLTE1NSw2ICsx NTUsMTMgQEAgQy4gQm9vdCBvcHRpb25zCj4gIAl1c2VkIGJ5IHRleHQuIEJ5IGRlZmF1bHQsIHRo aXMgYXJlYSB3aWxsIGJlIGJsYWNrLiBUaGUgJ2NvbG9yJyB2YWx1ZQo+ICAJaXMgYW4gaW50ZWdl ciBudW1iZXIgdGhhdCBkZXBlbmRzIG9uIHRoZSBmcmFtZWJ1ZmZlciBkcml2ZXIgYmVpbmcgdXNl ZC4KPiAgCj4gKzYuIGZiY29uPW5vZGVmZXIKPiArCj4gKwlJZiB0aGUga2VybmVsIGlzIGNvbXBp bGVkIHdpdGggZGVmZXJyZWQgZmJjb24gdGFrZW92ZXIgc3VwcG9ydCwgbm9ybWFsbHkKPiArCXRo ZSBmcmFtZWJ1ZmZlciBjb250ZW50cywgbGVmdCBpbiBwbGFjZSBieSB0aGUgZmlybXdhcmUvYm9v dGxvYWRlciwgd2lsbAo+ICsJYmUgcHJlc2VydmVkIHVudGlsIHRoZXJlIGFjdHVhbGx5IGlzIHNv bWUgdGV4dCBpcyBvdXRwdXQgdG8gdGhlIGNvbnNvbGUuCj4gKwlUaGlzIG9wdGlvbiBjYXVzZXMg ZmJjb24gdG8gYmluZCBpbW1lZGlhdGVseSB0byB0aGUgZmJkZXYgZGV2aWNlLgo+ICsKPiAgQy4g QXR0YWNoaW5nLCBEZXRhY2hpbmcgYW5kIFVubG9hZGluZwo+ICAKPiAgQmVmb3JlIGdvaW5nIG9u IGhvdyB0byBhdHRhY2gsIGRldGFjaCBhbmQgdW5sb2FkIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xl LCBhbgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZyBiL2RyaXZl cnMvdmlkZW8vY29uc29sZS9LY29uZmlnCj4gaW5kZXggNDExMGJhN2Q3Y2E5Li5lOTFlZGVmOTg2 MzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWcKPiArKysgYi9k cml2ZXJzL3ZpZGVvL2NvbnNvbGUvS2NvbmZpZwo+IEBAIC0xNTAsNiArMTUwLDE3IEBAIGNvbmZp ZyBGUkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OCj4gICAgICAgICAgIHN1Y2ggdGhhdCBvdGhl ciB1c2VycyBvZiB0aGUgZnJhbWVidWZmZXIgd2lsbCByZW1haW4gbm9ybWFsbHkKPiAgICAgICAg ICAgb3JpZW50ZWQuCj4gIAo+ICtjb25maWcgRlJBTUVCVUZGRVJfQ09OU09MRV9ERUZFUlJFRF9U QUtFT1ZFUgo+ICsJYm9vbCAiRnJhbWVidWZmZXIgQ29uc29sZSBEZWZlcnJlZCBUYWtlb3ZlciIK PiArCWRlcGVuZHMgb24gRlJBTUVCVUZGRVJfQ09OU09MRT15ICYmIERVTU1ZX0NPTlNPTEU9eQo+ ICsJaGVscAo+ICsJICBJZiBlbmFibGVkIHRoaXMgZGVmZXJzIHRoZSBmcmFtZWJ1ZmZlciBjb25z b2xlIHRha2luZyBvdmVyIHRoZQo+ICsJICBjb25zb2xlIGZyb20gdGhlIGR1bW15IGNvbnNvbGUg dW50aWwgdGhlIGZpcnN0IHRleHQgaXMgZGlzcGxheWVkIG9uCj4gKwkgIHRoZSBjb25zb2xlLiBU aGlzIGlzIHVzZWZ1bCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSAicXVpZXQiIGtlcm5lbAo+ICsJ ICBjb21tYW5kbGluZSBvcHRpb24gdG8ga2VlcCB0aGUgZnJhbWVidWZmZXIgY29udGVudHMgaW5p dGlhbGx5IHB1dCB1cAo+ICsJICBieSB0aGUgZmlybXdhcmUgaW4gcGxhY2UsIHJhdGhlciB0aGVu IHJlcGxhY2luZyB0aGUgY29udGVudHMgd2l0aCBhCj4gKwkgIGJsYWNrIHNjcmVlbiBhcyBzb29u IGFzIGZiY29uIGxvYWRzLgo+ICsKPiAgY29uZmlnIFNUSV9DT05TT0xFCj4gICAgICAgICAgYm9v bCAiU1RJIHRleHQgY29uc29sZSIKPiAgCWRlcGVuZHMgb24gUEFSSVNDICYmIEhBU19JT01FTQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZHVtbXljb24uYyBiL2RyaXZlcnMv dmlkZW8vY29uc29sZS9kdW1teWNvbi5jCj4gaW5kZXggZjJlYWZlMmVkOTgwLi40NWFkOTI1YWQ1 ZjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy92aWRlby9jb25zb2xlL2R1bW15Y29uLmMKPiArKysg Yi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZHVtbXljb24uYwo+IEBAIC0yNiw2ICsyNiw2NSBAQAo+ ICAjZGVmaW5lIERVTU1ZX1JPV1MJQ09ORklHX0RVTU1ZX0NPTlNPTEVfUk9XUwo+ICAjZW5kaWYK PiAgCj4gKyNpZmRlZiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ERUZFUlJFRF9UQUtFT1ZF Ugo+ICsvKiBUaGVzZSBhcmUgYm90aCBwcm90ZWN0ZWQgYnkgdGhlIGNvbnNvbGVfbG9jayAqLwo+ ICtzdGF0aWMgUkFXX05PVElGSUVSX0hFQUQoZHVtbXljb25fb3V0cHV0X25oKTsKPiArc3RhdGlj IGJvb2wgZHVtbXljb25fcHV0Y19jYWxsZWQ7Cj4gKwo+ICt2b2lkIGR1bW15Y29uX3JlZ2lzdGVy X291dHB1dF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQo+ICt7Cj4gKwlyYXdf bm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJmR1bW15Y29uX291dHB1dF9uaCwgbmIpOwo+ICsKPiAr CWlmIChkdW1teWNvbl9wdXRjX2NhbGxlZCkKPiArCQluYi0+bm90aWZpZXJfY2FsbChuYiwgMCwg TlVMTCk7Cj4gK30KPiArCj4gK3ZvaWQgZHVtbXljb25fdW5yZWdpc3Rlcl9vdXRwdXRfbm90aWZp ZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKPiArewo+ICsJcmF3X25vdGlmaWVyX2NoYWlu X3VucmVnaXN0ZXIoJmR1bW15Y29uX291dHB1dF9uaCwgbmIpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBkdW1teWNvbl9wdXRjKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGMsIGludCB5cG9zLCBp bnQgeHBvcykKPiArewo+ICsJZHVtbXljb25fcHV0Y19jYWxsZWQgPSB0cnVlOwo+ICsJcmF3X25v dGlmaWVyX2NhbGxfY2hhaW4oJmR1bW15Y29uX291dHB1dF9uaCwgMCwgTlVMTCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGR1bW15Y29uX3B1dGNzKHN0cnVjdCB2Y19kYXRhICp2YywgY29uc3Qg dW5zaWduZWQgc2hvcnQgKnMsCj4gKwkJCSAgIGludCBjb3VudCwgaW50IHlwb3MsIGludCB4cG9z KQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoIWR1bW15Y29uX3B1dGNfY2FsbGVkKSB7Cj4g KwkJLyogSWdub3JlIGVyYXNlcyAqLwo+ICsJCWZvciAoaSA9IDAgOyBpIDwgY291bnQ7IGkrKykg ewo+ICsJCQlpZiAoc1tpXSAhPSB2Yy0+dmNfdmlkZW9fZXJhc2VfY2hhcikKPiArCQkJCWJyZWFr Owo+ICsJCX0KPiArCQlpZiAoaSA9PSBjb3VudCkKPiArCQkJcmV0dXJuOwo+ICsKPiArCQlkdW1t eWNvbl9wdXRjX2NhbGxlZCA9IHRydWU7Cj4gKwl9Cj4gKwo+ICsJcmF3X25vdGlmaWVyX2NhbGxf Y2hhaW4oJmR1bW15Y29uX291dHB1dF9uaCwgMCwgTlVMTCk7Cj4gK30KPiArCj4gK3N0YXRpYyBp bnQgZHVtbXljb25fYmxhbmsoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgYmxhbmssIGludCBtb2Rl X3N3aXRjaCkKPiArewo+ICsJLyogUmVkcmF3LCBzbyB0aGF0IHdlIGdldCBwdXRjKHMpIGZvciBv dXRwdXQgZG9uZSB3aGlsZSBibGFua2VkICovCj4gKwlyZXR1cm4gMTsKPiArfQo+ICsjZWxzZQo+ ICtzdGF0aWMgdm9pZCBkdW1teWNvbl9wdXRjKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGMsIGlu dCB5cG9zLCBpbnQgeHBvcykgeyB9Cj4gK3N0YXRpYyB2b2lkIGR1bW15Y29uX3B1dGNzKHN0cnVj dCB2Y19kYXRhICp2YywgY29uc3QgdW5zaWduZWQgc2hvcnQgKnMsCj4gKwkJCSAgIGludCBjb3Vu dCwgaW50IHlwb3MsIGludCB4cG9zKSB7IH0KPiArc3RhdGljIGludCBkdW1teWNvbl9ibGFuayhz dHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBibGFuaywgaW50IG1vZGVfc3dpdGNoKQo+ICt7Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsjZW5kaWYKPiArCj4gIHN0YXRpYyBjb25zdCBjaGFyICpkdW1teWNv bl9zdGFydHVwKHZvaWQpCj4gIHsKPiAgICAgIHJldHVybiAiZHVtbXkgZGV2aWNlIjsKPiBAQCAt NDQsOSArMTAzLDYgQEAgc3RhdGljIHZvaWQgZHVtbXljb25faW5pdChzdHJ1Y3QgdmNfZGF0YSAq dmMsIGludCBpbml0KQo+ICBzdGF0aWMgdm9pZCBkdW1teWNvbl9kZWluaXQoc3RydWN0IHZjX2Rh dGEgKnZjKSB7IH0KPiAgc3RhdGljIHZvaWQgZHVtbXljb25fY2xlYXIoc3RydWN0IHZjX2RhdGEg KnZjLCBpbnQgc3ksIGludCBzeCwgaW50IGhlaWdodCwKPiAgCQkJICAgaW50IHdpZHRoKSB7IH0K PiAtc3RhdGljIHZvaWQgZHVtbXljb25fcHV0YyhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBjLCBp bnQgeXBvcywgaW50IHhwb3MpIHsgfQo+IC1zdGF0aWMgdm9pZCBkdW1teWNvbl9wdXRjcyhzdHJ1 Y3QgdmNfZGF0YSAqdmMsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzLAo+IC0JCQkgICBpbnQgY291 bnQsIGludCB5cG9zLCBpbnQgeHBvcykgeyB9Cj4gIHN0YXRpYyB2b2lkIGR1bW15Y29uX2N1cnNv cihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBtb2RlKSB7IH0KPiAgCj4gIHN0YXRpYyBib29sIGR1 bW15Y29uX3Njcm9sbChzdHJ1Y3QgdmNfZGF0YSAqdmMsIHVuc2lnbmVkIGludCB0b3AsCj4gQEAg LTYxLDExICsxMTcsNiBAQCBzdGF0aWMgaW50IGR1bW15Y29uX3N3aXRjaChzdHJ1Y3QgdmNfZGF0 YSAqdmMpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBkdW1teWNvbl9ibGFu ayhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBibGFuaywgaW50IG1vZGVfc3dpdGNoKQo+IC17Cj4g LQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIGludCBkdW1teWNvbl9mb250X3NldChzdHJ1 Y3QgdmNfZGF0YSAqdmMsIHN0cnVjdCBjb25zb2xlX2ZvbnQgKmZvbnQsCj4gIAkJCSAgICAgdW5z aWduZWQgaW50IGZsYWdzKQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYv Y29yZS9mYmNvbi5jIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMKPiBpbmRleCBj ZDhkNTJhOTY3YWEuLjVmYjE1NmJkY2Y0ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3ZpZGVvL2Zi ZGV2L2NvcmUvZmJjb24uYwo+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5j Cj4gQEAgLTEyOSw2ICsxMjksMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiY29uX21hcF9vdmVy cmlkZSh2b2lkKQo+ICB9Cj4gICNlbmRpZiAvKiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9E RVRFQ1RfUFJJTUFSWSAqLwo+ICAKPiArI2lmZGVmIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xF X0RFRkVSUkVEX1RBS0VPVkVSCj4gK3N0YXRpYyBib29sIGRlZmVycmVkX3Rha2VvdmVyID0gdHJ1 ZTsKPiArI2Vsc2UKPiArI2RlZmluZSBkZWZlcnJlZF90YWtlb3ZlciBmYWxzZQo+ICsjZW5kaWYK PiArCj4gIC8qIGZvbnQgZGF0YSAqLwo+ICBzdGF0aWMgY2hhciBmb250bmFtZVs0MF07Cj4gIAo+ IEBAIC00OTksNiArNTA1LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGZiX2NvbnNvbGVfc2V0dXAo Y2hhciAqdGhpc19vcHQpCj4gIAkJCQltYXJnaW5fY29sb3IgPSBzaW1wbGVfc3RydG91bChvcHRp b25zLCAmb3B0aW9ucywgMCk7Cj4gIAkJCWNvbnRpbnVlOwo+ICAJCX0KPiArI2lmZGVmIENPTkZJ R19GUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVSUkVEX1RBS0VPVkVSCj4gKwkJaWYgKCFzdHJjbXAo b3B0aW9ucywgIm5vZGVmZXIiKSkgewo+ICsJCQlkZWZlcnJlZF90YWtlb3ZlciA9IGZhbHNlOwo+ ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKyNlbmRpZgo+ICAJfQo+ICAJcmV0dXJuIDE7Cj4gIH0K PiBAQCAtMzEwMCw2ICszMTEyLDkgQEAgc3RhdGljIGludCBmYmNvbl9mYl91bnJlZ2lzdGVyZWQo c3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAo+ICAJV0FSTl9DT05TT0xFX1VOTE9DS0VEKCk7Cj4g IAo+ICsJaWYgKGRlZmVycmVkX3Rha2VvdmVyKQo+ICsJCXJldHVybiAwOwo+ICsKPiAgCWlkeCA9 IGluZm8tPm5vZGU7Cj4gIAlmb3IgKGkgPSBmaXJzdF9mYl92YzsgaSA8PSBsYXN0X2ZiX3ZjOyBp KyspIHsKPiAgCQlpZiAoY29uMmZiX21hcFtpXSA9PSBpZHgpCj4gQEAgLTMxNDAsNiArMzE1NSwx MyBAQCBzdGF0aWMgdm9pZCBmYmNvbl9yZW1hcF9hbGwoaW50IGlkeCkKPiAgCj4gIAlXQVJOX0NP TlNPTEVfVU5MT0NLRUQoKTsKPiAgCj4gKwlpZiAoZGVmZXJyZWRfdGFrZW92ZXIpIHsKPiArCQlm b3IgKGkgPSBmaXJzdF9mYl92YzsgaSA8PSBsYXN0X2ZiX3ZjOyBpKyspCj4gKwkJCWNvbjJmYl9t YXBfYm9vdFtpXSA9IGlkeDsKPiArCQlmYmNvbl9tYXBfb3ZlcnJpZGUoKTsKPiArCQlyZXR1cm47 Cj4gKwl9Cj4gKwo+ICAJZm9yIChpID0gZmlyc3RfZmJfdmM7IGkgPD0gbGFzdF9mYl92YzsgaSsr KQo+ICAJCXNldF9jb24yZmJfbWFwKGksIGlkeCwgMCk7Cj4gIAo+IEBAIC0zMTkxLDYgKzMyMTMs MTEgQEAgc3RhdGljIGludCBmYmNvbl9mYl9yZWdpc3RlcmVkKHN0cnVjdCBmYl9pbmZvICppbmZv KQo+ICAJaWR4ID0gaW5mby0+bm9kZTsKPiAgCWZiY29uX3NlbGVjdF9wcmltYXJ5KGluZm8pOwo+ ICAKPiArCWlmIChkZWZlcnJlZF90YWtlb3Zlcikgewo+ICsJCXByX2luZm8oImZiY29uOiBEZWZl cnJpbmcgY29uc29sZSB0YWtlLW92ZXJcbiIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiAg CWlmIChpbmZvX2lkeCA9PSAtMSkgewo+ICAJCWZvciAoaSA9IGZpcnN0X2ZiX3ZjOyBpIDw9IGxh c3RfZmJfdmM7IGkrKykgewo+ICAJCQlpZiAoY29uMmZiX21hcF9ib290W2ldID09IGlkeCkgewo+ IEBAIC0zNTY2LDggKzM1OTMsNDYgQEAgc3RhdGljIGludCBmYmNvbl9pbml0X2RldmljZSh2b2lk KQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gKyNpZmRlZiBDT05GSUdfRlJBTUVCVUZGRVJfQ09O U09MRV9ERUZFUlJFRF9UQUtFT1ZFUgo+ICtzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZi Y29uX291dHB1dF9uYjsKPiArCj4gK3N0YXRpYyBpbnQgZmJjb25fb3V0cHV0X25vdGlmaWVyKHN0 cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCj4gKwkJCQkgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZv aWQgKmRhdGEpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCVdBUk5fQ09OU09MRV9VTkxPQ0tFRCgp Owo+ICsKPiArCXByX2luZm8oImZiY29uOiBUYWtpbmcgb3ZlciBjb25zb2xlXG4iKTsKPiArCj4g KwlkdW1teWNvbl91bnJlZ2lzdGVyX291dHB1dF9ub3RpZmllcigmZmJjb25fb3V0cHV0X25iKTsK PiArCWRlZmVycmVkX3Rha2VvdmVyID0gZmFsc2U7Cj4gKwlsb2dvX3Nob3duID0gRkJDT05fTE9H T19ET05UU0hPVzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgRkJfTUFYOyBpKyspIHsKPiArCQlp ZiAocmVnaXN0ZXJlZF9mYltpXSkKPiArCQkJZmJjb25fZmJfcmVnaXN0ZXJlZChyZWdpc3RlcmVk X2ZiW2ldKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gTk9USUZZX09LOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBmYmNvbl9yZWdpc3Rlcl9vdXRwdXRfbm90aWZpZXIodm9pZCkKPiArewo+ICsJZmJj b25fb3V0cHV0X25iLm5vdGlmaWVyX2NhbGwgPSBmYmNvbl9vdXRwdXRfbm90aWZpZXI7Cj4gKwlk dW1teWNvbl9yZWdpc3Rlcl9vdXRwdXRfbm90aWZpZXIoJmZiY29uX291dHB1dF9uYik7Cj4gK30K PiArI2Vsc2UKPiArc3RhdGljIGlubGluZSB2b2lkIGZiY29uX3JlZ2lzdGVyX291dHB1dF9ub3Rp Zmllcih2b2lkKSB7fQo+ICsjZW5kaWYKPiArCj4gIHN0YXRpYyB2b2lkIGZiY29uX3N0YXJ0KHZv aWQpCj4gIHsKPiArCWlmIChkZWZlcnJlZF90YWtlb3Zlcikgewo+ICsJCWZiY29uX3JlZ2lzdGVy X291dHB1dF9ub3RpZmllcigpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gIAlpZiAobnVtX3Jl Z2lzdGVyZWRfZmIpIHsKPiAgCQlpbnQgaTsKPiAgCj4gQEAgLTM1OTQsNiArMzY1OSwxMyBAQCBz dGF0aWMgdm9pZCBmYmNvbl9leGl0KHZvaWQpCj4gIAlpZiAoZmJjb25faGFzX2V4aXRlZCkKPiAg CQlyZXR1cm47Cj4gIAo+ICsjaWZkZWYgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJS RURfVEFLRU9WRVIKPiArCWlmIChkZWZlcnJlZF90YWtlb3Zlcikgewo+ICsJCWR1bW15Y29uX3Vu cmVnaXN0ZXJfb3V0cHV0X25vdGlmaWVyKCZmYmNvbl9vdXRwdXRfbmIpOwo+ICsJCWRlZmVycmVk X3Rha2VvdmVyID0gZmFsc2U7Cj4gKwl9Cj4gKyNlbmRpZgo+ICsKPiAgCWtmcmVlKCh2b2lkICop c29mdGJhY2tfYnVmKTsKPiAgCXNvZnRiYWNrX2J1ZiA9IDBVTDsKPiAgCj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvY29uc29sZS5oIGIvaW5jbHVkZS9saW51eC9jb25zb2xlLmgKPiBpbmRl eCBkZmQ2YjBlOTc4NTUuLmY1OWYzZGJjYTY1YyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4 L2NvbnNvbGUuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvY29uc29sZS5oCj4gQEAgLTIxLDYgKzIx LDcgQEAgc3RydWN0IGNvbnNvbGVfZm9udF9vcDsKPiAgc3RydWN0IGNvbnNvbGVfZm9udDsKPiAg c3RydWN0IG1vZHVsZTsKPiAgc3RydWN0IHR0eV9zdHJ1Y3Q7Cj4gK3N0cnVjdCBub3RpZmllcl9i bG9jazsKPiAgCj4gIC8qCj4gICAqIHRoaXMgaXMgd2hhdCB0aGUgdGVybWluYWwgYW5zd2VycyB0 byBhIEVTQy1aIG9yIGNzaTBjIHF1ZXJ5Lgo+IEBAIC0yMjAsNCArMjIxLDggQEAgc3RhdGljIGlu bGluZSBib29sIHZnYWNvbl90ZXh0X2ZvcmNlKHZvaWQpIHsgcmV0dXJuIGZhbHNlOyB9Cj4gIAo+ ICBleHRlcm4gdm9pZCBjb25zb2xlX2luaXQodm9pZCk7Cj4gIAo+ICsvKiBGb3IgZGVmZXJyZWQg Y29uc29sZSB0YWtlb3ZlciAqLwo+ICt2b2lkIGR1bW15Y29uX3JlZ2lzdGVyX291dHB1dF9ub3Rp ZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKPiArdm9pZCBkdW1teWNvbl91bnJlZ2lz dGVyX291dHB1dF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsKPiArCj4gICNl bmRpZiAvKiBfTElOVVhfQ09OU09MRV9IICovCj4gLS0gCj4gMi4xNy4xCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==