From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: Re: [PATCH v3 3/3] console/fbcon: Add support for deferred console takeover Date: Thu, 28 Jun 2018 10:58:42 +0200 Message-ID: <4498d646-337e-df0e-90bf-2caa17fd77b5@redhat.com> References: <20180626183612.321-1-hdegoede@redhat.com> <20180626183612.321-4-hdegoede@redhat.com> <20180628075500.GP13978@phenom.ffwll.local> <4365b09a-639b-2217-a49e-30f9119e4f96@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-f67.google.com (mail-ed1-f67.google.com [209.85.208.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 650D5892A7 for ; Thu, 28 Jun 2018 08:58:45 +0000 (UTC) Received: by mail-ed1-f67.google.com with SMTP id v22-v6so4690792edq.4 for ; Thu, 28 Jun 2018 01:58:45 -0700 (PDT) In-Reply-To: Content-Language: en-US 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: Petr Mladek , Linux Fbdev development list , Bartlomiej Zolnierkiewicz , Linux Kernel Mailing List , dri-devel , Sergey Senozhatsky , Steven Rostedt List-Id: dri-devel@lists.freedesktop.org SGksCgpPbiAyOC0wNi0xOCAxMDozNywgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIEp1 biAyOCwgMjAxOCBhdCAxMDoyMCBBTSwgSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNv bT4gd3JvdGU6Cj4+IEhpLAo+Pgo+PiBPbiAyOC0wNi0xOCAwOTo1NSwgRGFuaWVsIFZldHRlciB3 cm90ZToKPj4+Cj4+PiBPbiBUdWUsIEp1biAyNiwgMjAxOCBhdCAwODozNjoxMlBNICswMjAwLCBI YW5zIGRlIEdvZWRlIHdyb3RlOgo+Pj4+Cj4+Pj4gQ3VycmVudGx5IGZiY29uIGNsYWltcyBmYmRl dnMgYXMgc29vbiBhcyB0aGV5IGFyZSByZWdpc3RlcmVkIGFuZCB0YWtlcwo+Pj4+IG92ZXIKPj4+ PiB0aGUgY29uc29sZSBhcyBzb29uIGFzIHRoZSBmaXJzdCBmYmRldiBnZXRzIHJlZ2lzdGVyZWQu Cj4+Pj4KPj4+PiBUaGlzIGJlaGF2aW9yIGlzIHVuZGVzaXJhYmxlIGluIGNhc2VzIHdoZXJlIGEg c21vb3RoIGdyYXBoaWNhbCBib290dXAgaXMKPj4+PiBkZXNpcmVkLCBpbiBzdWNoIGNhc2VzIHdl IHR5cGljYWxseSB3YW50IHRoZSBjb250ZW50cyBvZiB0aGUgZnJhbWVidWZmZXIKPj4+PiAodHlw aWNhbGx5IGEgdmVuZG9yIGxvZ28pIHRvIHN0YXkgaW4gcGxhY2UgYXMgaXMuCj4+Pj4KPj4+PiBU aGUgY3VycmVudCBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtIChvbiBlbWJlZGRlZCBzeXN0ZW1z KSBpcyB0byBub3QKPj4+PiBlbmFibGUgZmJjb24uCj4+Pj4KPj4+PiBUaGlzIGNvbW1pdCBhZGRz IGEgbmV3IEZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJSRURfVEFLRU9WRVIgY29uZmlnCj4+Pj4g b3B0aW9uLAo+Pj4+IHdoaWNoIHdoZW4gZW5hYmxlZCBkZWZlcnMgZmJjb24gdGFraW5nIG92ZXIg dGhlIGNvbnNvbGUgZnJvbSB0aGUgZHVtbXkKPj4+PiBjb25zb2xlIHVudGlsIHRoZSBmaXJzdCB0 ZXh0IGlzIGRpc3BsYXllZCBvbiB0aGUgY29uc29sZS4gVG9nZXRoZXIgd2l0aAo+Pj4+IHRoZQo+ Pj4+ICJxdWlldCIga2VybmVsIGNvbW1hbmRsaW5lIG9wdGlvbiwgdGhpcyBhbGxvd3MgZmJjb24g dG8gc3RpbGwgYmUgdXNlZAo+Pj4+IHRvZ2V0aGVyIHdpdGggYSBzbW9vdGggZ3JhcGhpY2FsIGJv b3R1cCwgaGF2aW5nIGl0IHRha2Ugb3ZlciB0aGUgY29uc29sZQo+Pj4+IGFzCj4+Pj4gc29vbiBh cyBlLmcuIGFuIGVycm9yIG1lc3NhZ2UgaXMgbG9nZ2VkLgo+Pj4+Cj4+Pj4gUmV2aWV3ZWQtYnk6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4+Pj4gU2lnbmVkLW9mZi1i eTogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KPj4+Cj4+Pgo+Pj4gQSBiaXQg YSBsYXRlIGNvbW1lbnQsIGFuZCBmZWVsIGZyZWUgdG8gcmVqZWN0OiBIYXZlIHlvdSBjb25zaWRl cmVkCj4+PiByZWdpc3RlcmluZyB0aGUgZmJjb24gZHJpdmVyLCBidXQgbm90IGRvaW5nIGFueSBt b2Rlc2V0cyB1bnRpbCB0aGUgdmVyeQo+Pj4gZmlyc3QgcmVhbCBtZXNzYWdlIHNob3dzIHVwPwo+ Pgo+Pgo+PiBJIGhhdmUgdHJpZWQgc29tZXRoaW5nIGxpa2UgdGhhdCwgYnV0IGl0IGRpZCBub3Qg d29yayBvdXQsIHRoaXMgcGF0Y2gtc2V0Cj4+IGFjdHVhbGx5IGlzIG15IDN0aCBhdHRlbXB0IGF0 IHRoaXMgKHRoZSBvdGhlciAyIHdlcmUgbmV2ZXIgcG9zdGVkCj4+IGJlY2F1c2UgdGhleSBkaWQg bm90IHdvcmspLgo+Pgo+PiBUaGUgZmJjb24gY29kZSBpcyB3b3ZlbiBxdWl0ZSB0aWdodGx5IGlu dG8gdGhlIGNvbnNvbGUgY29kZSwgc28gdGhpcyB3YXMKPj4gdGhlIG9ubHkgY2xlYW4gd2F5IEkg Y291bGQgZmluZCB0byBhY2hpZXZlIHdoYXQgSSB3YW50Lgo+IAo+IEkgYXNzdW1lZC9mZWFyZWQg YXMgbXVjaC4gV291bGQgYmUgZ29vZCB0byBjb3ZlciB0aGF0IGluIHRoZSBjb21taXQKPiBtZXNz YWdlLCB0byBqdXN0aWZ5IHlvdXIgYXBwcm9hY2ggYmV0dGVyLgoKT2ssIHY1IHdpdGggYW4gdXBk YXRlZCBjb21taXQgbWVzc2FnZSAoYW5kIHdpdGhvdXQgYW55IGNvZGUgY2hhbmdlcykKY29taW5n IHVwLgoKUmVnYXJkcywKCkhhbnMKCgoKPj4+PiAtLS0KPj4+PiBDaGFuZ2VzIGluIHYyOgo+Pj4+ IC1DaGVjayB0aGUgd2hvbGUgc3RyaW5nIHdoZW4gY2hlY2tpbmcgZm9yIGVyYXNlcyBpbiBwdXRj cywgaW5zdGVhZCBvZgo+Pj4+IGp1c3QKPj4+PiAgICB0aGUgZmlyc3QgY2hhcgo+Pj4+IC1NYWtl IGR1bW15Y29uX2JsYW5rIHJldHVybiAxLCBzbyB0aGF0IGEgcmVkcmF3IGdldHMgdHJpZ2dlcmVk IGFuZCBhbnkKPj4+PiB0ZXh0Cj4+Pj4gICAgcmVuZGVyZWQgd2hpbGUgYmxhbmtlZCBnZXRzIG91 dHB1dCBzbyB0aGF0IGl0IGNhbiB0cmlnZ2VyIGEgZGVmZXJyZWQKPj4+PiAgICB0YWtlb3ZlciBp ZiBvbmUgaXMgcGVuZGluZwo+Pj4+Cj4+Pj4gQ2hhbmdlcyBpbiB2MzoKPj4+PiAtQ2FsbCBXQVJO X0NPTlNPTEVfVU5MT0NLRUQoKSBmcm9tIGZiY29uX291dHB1dF9ub3RpZmllcigpCj4+Pj4gLVVu cmVnaXN0ZXIgdGhlIG5vdGlmaWVyIG9uIGZiY29uX2V4aXQoKQo+Pj4+IC1Eb2N1bWVudCB0aGUg ZmJjb249bm9kZWZlciBjb21tYW5kbGluZSBvcHRpb24gaW4KPj4+PiBEb2N1bWVudGF0aW9uL2Zi L2ZiY29uLnR4dAo+Pj4+IC0tLQo+Pj4+ICAgIERvY3VtZW50YXRpb24vZmIvZmJjb24udHh0ICAg ICAgIHwgIDcgKysrKwo+Pj4+ICAgIGRyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnICAgIHwg MTEgKysrKysKPj4+PiAgICBkcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZHVtbXljb24uYyB8IDY3ICsr KysrKysrKysrKysrKysrKysrKysrKystLS0tCj4+Pj4gICAgZHJpdmVycy92aWRlby9mYmRldi9j b3JlL2ZiY29uLmMgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAg IGluY2x1ZGUvbGludXgvY29uc29sZS5oICAgICAgICAgIHwgIDUgKysrCj4+Pj4gICAgNSBmaWxl cyBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZiL2ZiY29uLnR4dCBiL0RvY3VtZW50YXRpb24vZmIv ZmJjb24udHh0Cj4+Pj4gaW5kZXggNzljMjJkMDk2YmJjLi5kNGQ2NDJlMWNlOWMgMTAwNjQ0Cj4+ Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9mYi9mYmNvbi50eHQKPj4+PiArKysgYi9Eb2N1bWVudGF0 aW9uL2ZiL2ZiY29uLnR4dAo+Pj4+IEBAIC0xNTUsNiArMTU1LDEzIEBAIEMuIEJvb3Qgb3B0aW9u cwo+Pj4+ICAgICAgICAgIHVzZWQgYnkgdGV4dC4gQnkgZGVmYXVsdCwgdGhpcyBhcmVhIHdpbGwg YmUgYmxhY2suIFRoZSAnY29sb3InCj4+Pj4gdmFsdWUKPj4+PiAgICAgICAgICBpcyBhbiBpbnRl Z2VyIG51bWJlciB0aGF0IGRlcGVuZHMgb24gdGhlIGZyYW1lYnVmZmVyIGRyaXZlciBiZWluZwo+ Pj4+IHVzZWQuCj4+Pj4gICAgKzYuIGZiY29uPW5vZGVmZXIKPj4+PiArCj4+Pj4gKyAgICAgICBJ ZiB0aGUga2VybmVsIGlzIGNvbXBpbGVkIHdpdGggZGVmZXJyZWQgZmJjb24gdGFrZW92ZXIgc3Vw cG9ydCwKPj4+PiBub3JtYWxseQo+Pj4+ICsgICAgICAgdGhlIGZyYW1lYnVmZmVyIGNvbnRlbnRz LCBsZWZ0IGluIHBsYWNlIGJ5IHRoZQo+Pj4+IGZpcm13YXJlL2Jvb3Rsb2FkZXIsIHdpbGwKPj4+ PiArICAgICAgIGJlIHByZXNlcnZlZCB1bnRpbCB0aGVyZSBhY3R1YWxseSBpcyBzb21lIHRleHQg aXMgb3V0cHV0IHRvIHRoZQo+Pj4+IGNvbnNvbGUuCj4+Pj4gKyAgICAgICBUaGlzIG9wdGlvbiBj YXVzZXMgZmJjb24gdG8gYmluZCBpbW1lZGlhdGVseSB0byB0aGUgZmJkZXYgZGV2aWNlLgo+Pj4+ ICsKPj4+PiAgICBDLiBBdHRhY2hpbmcsIERldGFjaGluZyBhbmQgVW5sb2FkaW5nCj4+Pj4gICAg ICBCZWZvcmUgZ29pbmcgb24gaG93IHRvIGF0dGFjaCwgZGV0YWNoIGFuZCB1bmxvYWQgdGhlIGZy YW1lYnVmZmVyCj4+Pj4gY29uc29sZSwgYW4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl by9jb25zb2xlL0tjb25maWcKPj4+PiBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnCj4+ Pj4gaW5kZXggNDExMGJhN2Q3Y2E5Li5lOTFlZGVmOTg2MzMgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJp dmVycy92aWRlby9jb25zb2xlL0tjb25maWcKPj4+PiArKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNv bGUvS2NvbmZpZwo+Pj4+IEBAIC0xNTAsNiArMTUwLDE3IEBAIGNvbmZpZyBGUkFNRUJVRkZFUl9D T05TT0xFX1JPVEFUSU9OCj4+Pj4gICAgICAgICAgICAgc3VjaCB0aGF0IG90aGVyIHVzZXJzIG9m IHRoZSBmcmFtZWJ1ZmZlciB3aWxsIHJlbWFpbiBub3JtYWxseQo+Pj4+ICAgICAgICAgICAgIG9y aWVudGVkLgo+Pj4+ICAgICtjb25maWcgRlJBTUVCVUZGRVJfQ09OU09MRV9ERUZFUlJFRF9UQUtF T1ZFUgo+Pj4+ICsgICAgICAgYm9vbCAiRnJhbWVidWZmZXIgQ29uc29sZSBEZWZlcnJlZCBUYWtl b3ZlciIKPj4+PiArICAgICAgIGRlcGVuZHMgb24gRlJBTUVCVUZGRVJfQ09OU09MRT15ICYmIERV TU1ZX0NPTlNPTEU9eQo+Pj4+ICsgICAgICAgaGVscAo+Pj4+ICsgICAgICAgICBJZiBlbmFibGVk IHRoaXMgZGVmZXJzIHRoZSBmcmFtZWJ1ZmZlciBjb25zb2xlIHRha2luZyBvdmVyIHRoZQo+Pj4+ ICsgICAgICAgICBjb25zb2xlIGZyb20gdGhlIGR1bW15IGNvbnNvbGUgdW50aWwgdGhlIGZpcnN0 IHRleHQgaXMKPj4+PiBkaXNwbGF5ZWQgb24KPj4+PiArICAgICAgICAgdGhlIGNvbnNvbGUuIFRo aXMgaXMgdXNlZnVsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlICJxdWlldCIKPj4+PiBrZXJuZWwK Pj4+PiArICAgICAgICAgY29tbWFuZGxpbmUgb3B0aW9uIHRvIGtlZXAgdGhlIGZyYW1lYnVmZmVy IGNvbnRlbnRzIGluaXRpYWxseQo+Pj4+IHB1dCB1cAo+Pj4+ICsgICAgICAgICBieSB0aGUgZmly bXdhcmUgaW4gcGxhY2UsIHJhdGhlciB0aGVuIHJlcGxhY2luZyB0aGUgY29udGVudHMKPj4+PiB3 aXRoIGEKPj4+PiArICAgICAgICAgYmxhY2sgc2NyZWVuIGFzIHNvb24gYXMgZmJjb24gbG9hZHMu Cj4+Pj4gKwo+Pj4+ICAgIGNvbmZpZyBTVElfQ09OU09MRQo+Pj4+ICAgICAgICAgICAgYm9vbCAi U1RJIHRleHQgY29uc29sZSIKPj4+PiAgICAgICAgICBkZXBlbmRzIG9uIFBBUklTQyAmJiBIQVNf SU9NRU0KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9jb25zb2xlL2R1bW15Y29uLmMK Pj4+PiBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9kdW1teWNvbi5jCj4+Pj4gaW5kZXggZjJlYWZl MmVkOTgwLi40NWFkOTI1YWQ1ZjggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy92aWRlby9jb25z b2xlL2R1bW15Y29uLmMKPj4+PiArKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZHVtbXljb24u Ywo+Pj4+IEBAIC0yNiw2ICsyNiw2NSBAQAo+Pj4+ICAgICNkZWZpbmUgRFVNTVlfUk9XUyAgICBD T05GSUdfRFVNTVlfQ09OU09MRV9ST1dTCj4+Pj4gICAgI2VuZGlmCj4+Pj4gICAgKyNpZmRlZiBD T05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ERUZFUlJFRF9UQUtFT1ZFUgo+Pj4+ICsvKiBUaGVz ZSBhcmUgYm90aCBwcm90ZWN0ZWQgYnkgdGhlIGNvbnNvbGVfbG9jayAqLwo+Pj4+ICtzdGF0aWMg UkFXX05PVElGSUVSX0hFQUQoZHVtbXljb25fb3V0cHV0X25oKTsKPj4+PiArc3RhdGljIGJvb2wg ZHVtbXljb25fcHV0Y19jYWxsZWQ7Cj4+Pj4gKwo+Pj4+ICt2b2lkIGR1bW15Y29uX3JlZ2lzdGVy X291dHB1dF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKQo+Pj4+ICt7Cj4+Pj4g KyAgICAgICByYXdfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJmR1bW15Y29uX291dHB1dF9uaCwg bmIpOwo+Pj4+ICsKPj4+PiArICAgICAgIGlmIChkdW1teWNvbl9wdXRjX2NhbGxlZCkKPj4+PiAr ICAgICAgICAgICAgICAgbmItPm5vdGlmaWVyX2NhbGwobmIsIDAsIE5VTEwpOwo+Pj4+ICt9Cj4+ Pj4gKwo+Pj4+ICt2b2lkIGR1bW15Y29uX3VucmVnaXN0ZXJfb3V0cHV0X25vdGlmaWVyKHN0cnVj dCBub3RpZmllcl9ibG9jayAqbmIpCj4+Pj4gK3sKPj4+PiArICAgICAgIHJhd19ub3RpZmllcl9j aGFpbl91bnJlZ2lzdGVyKCZkdW1teWNvbl9vdXRwdXRfbmgsIG5iKTsKPj4+PiArfQo+Pj4+ICsK Pj4+PiArc3RhdGljIHZvaWQgZHVtbXljb25fcHV0YyhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBj LCBpbnQgeXBvcywgaW50IHhwb3MpCj4+Pj4gK3sKPj4+PiArICAgICAgIGR1bW15Y29uX3B1dGNf Y2FsbGVkID0gdHJ1ZTsKPj4+PiArICAgICAgIHJhd19ub3RpZmllcl9jYWxsX2NoYWluKCZkdW1t eWNvbl9vdXRwdXRfbmgsIDAsIE5VTEwpOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgdm9p ZCBkdW1teWNvbl9wdXRjcyhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGNvbnN0IHVuc2lnbmVkIHNob3J0 ICpzLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgaW50IHlwb3Ms IGludCB4cG9zKQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBpbnQgaTsKPj4+PiArCj4+Pj4gKyAgICAg ICBpZiAoIWR1bW15Y29uX3B1dGNfY2FsbGVkKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIC8qIEln bm9yZSBlcmFzZXMgKi8KPj4+PiArICAgICAgICAgICAgICAgZm9yIChpID0gMCA7IGkgPCBjb3Vu dDsgaSsrKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNbaV0gIT0gdmMtPnZj X3ZpZGVvX2VyYXNlX2NoYXIpCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi cmVhazsKPj4+PiArICAgICAgICAgICAgICAgfQo+Pj4+ICsgICAgICAgICAgICAgICBpZiAoaSA9 PSBjb3VudCkKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4gKwo+Pj4+ ICsgICAgICAgICAgICAgICBkdW1teWNvbl9wdXRjX2NhbGxlZCA9IHRydWU7Cj4+Pj4gKyAgICAg ICB9Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmF3X25vdGlmaWVyX2NhbGxfY2hhaW4oJmR1bW15Y29u X291dHB1dF9uaCwgMCwgTlVMTCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQgZHVt bXljb25fYmxhbmsoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgYmxhbmssIGludAo+Pj4+IG1vZGVf c3dpdGNoKQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICAvKiBSZWRyYXcsIHNvIHRoYXQgd2UgZ2V0IHB1 dGMocykgZm9yIG91dHB1dCBkb25lIHdoaWxlIGJsYW5rZWQKPj4+PiAqLwo+Pj4+ICsgICAgICAg cmV0dXJuIDE7Cj4+Pj4gK30KPj4+PiArI2Vsc2UKPj4+PiArc3RhdGljIHZvaWQgZHVtbXljb25f cHV0YyhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBjLCBpbnQgeXBvcywgaW50IHhwb3MpCj4+Pj4g eyB9Cj4+Pj4gK3N0YXRpYyB2b2lkIGR1bW15Y29uX3B1dGNzKHN0cnVjdCB2Y19kYXRhICp2Yywg Y29uc3QgdW5zaWduZWQgc2hvcnQgKnMsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGNvdW50LCBpbnQgeXBvcywgaW50IHhwb3MpIHsgfQo+Pj4+ICtzdGF0aWMgaW50IGR1bW15 Y29uX2JsYW5rKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGJsYW5rLCBpbnQKPj4+PiBtb2RlX3N3 aXRjaCkKPj4+PiArewo+Pj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArI2VuZGlm Cj4+Pj4gKwo+Pj4+ICAgIHN0YXRpYyBjb25zdCBjaGFyICpkdW1teWNvbl9zdGFydHVwKHZvaWQp Cj4+Pj4gICAgewo+Pj4+ICAgICAgICByZXR1cm4gImR1bW15IGRldmljZSI7Cj4+Pj4gQEAgLTQ0 LDkgKzEwMyw2IEBAIHN0YXRpYyB2b2lkIGR1bW15Y29uX2luaXQoc3RydWN0IHZjX2RhdGEgKnZj LCBpbnQKPj4+PiBpbml0KQo+Pj4+ICAgIHN0YXRpYyB2b2lkIGR1bW15Y29uX2RlaW5pdChzdHJ1 Y3QgdmNfZGF0YSAqdmMpIHsgfQo+Pj4+ICAgIHN0YXRpYyB2b2lkIGR1bW15Y29uX2NsZWFyKHN0 cnVjdCB2Y19kYXRhICp2YywgaW50IHN5LCBpbnQgc3gsIGludAo+Pj4+IGhlaWdodCwKPj4+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoKSB7IH0KPj4+PiAtc3RhdGljIHZv aWQgZHVtbXljb25fcHV0YyhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBjLCBpbnQgeXBvcywgaW50 IHhwb3MpCj4+Pj4geyB9Cj4+Pj4gLXN0YXRpYyB2b2lkIGR1bW15Y29uX3B1dGNzKHN0cnVjdCB2 Y19kYXRhICp2YywgY29uc3QgdW5zaWduZWQgc2hvcnQgKnMsCj4+Pj4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgeXBvcywgaW50IHhwb3MpIHsgfQo+Pj4+ICAgIHN0 YXRpYyB2b2lkIGR1bW15Y29uX2N1cnNvcihzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBtb2RlKSB7 IH0KPj4+PiAgICAgIHN0YXRpYyBib29sIGR1bW15Y29uX3Njcm9sbChzdHJ1Y3QgdmNfZGF0YSAq dmMsIHVuc2lnbmVkIGludCB0b3AsCj4+Pj4gQEAgLTYxLDExICsxMTcsNiBAQCBzdGF0aWMgaW50 IGR1bW15Y29uX3N3aXRjaChzdHJ1Y3QgdmNfZGF0YSAqdmMpCj4+Pj4gICAgICAgICAgcmV0dXJu IDA7Cj4+Pj4gICAgfQo+Pj4+ICAgIC1zdGF0aWMgaW50IGR1bW15Y29uX2JsYW5rKHN0cnVjdCB2 Y19kYXRhICp2YywgaW50IGJsYW5rLCBpbnQKPj4+PiBtb2RlX3N3aXRjaCkKPj4+PiAtewo+Pj4+ IC0gICAgICAgcmV0dXJuIDA7Cj4+Pj4gLX0KPj4+PiAtCj4+Pj4gICAgc3RhdGljIGludCBkdW1t eWNvbl9mb250X3NldChzdHJ1Y3QgdmNfZGF0YSAqdmMsIHN0cnVjdCBjb25zb2xlX2ZvbnQKPj4+ PiAqZm9udCwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg ZmxhZ3MpCj4+Pj4gICAgewo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2Nv cmUvZmJjb24uYwo+Pj4+IGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMKPj4+PiBp bmRleCBjZDhkNTJhOTY3YWEuLjVmYjE1NmJkY2Y0ZSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYwo+Pj4+ICsrKyBiL2RyaXZlcnMvdmlkZW8vZmJkZXYv Y29yZS9mYmNvbi5jCj4+Pj4gQEAgLTEyOSw2ICsxMjksMTIgQEAgc3RhdGljIGlubGluZSB2b2lk IGZiY29uX21hcF9vdmVycmlkZSh2b2lkKQo+Pj4+ICAgIH0KPj4+PiAgICAjZW5kaWYgLyogQ09O RklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVURUNUX1BSSU1BUlkgKi8KPj4+PiAgICArI2lmZGVm IENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVSUkVEX1RBS0VPVkVSCj4+Pj4gK3N0YXRp YyBib29sIGRlZmVycmVkX3Rha2VvdmVyID0gdHJ1ZTsKPj4+PiArI2Vsc2UKPj4+PiArI2RlZmlu ZSBkZWZlcnJlZF90YWtlb3ZlciBmYWxzZQo+Pj4+ICsjZW5kaWYKPj4+PiArCj4+Pj4gICAgLyog Zm9udCBkYXRhICovCj4+Pj4gICAgc3RhdGljIGNoYXIgZm9udG5hbWVbNDBdOwo+Pj4+ICAgIEBA IC00OTksNiArNTA1LDEyIEBAIHN0YXRpYyBpbnQgX19pbml0IGZiX2NvbnNvbGVfc2V0dXAoY2hh ciAqdGhpc19vcHQpCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2lu X2NvbG9yID0gc2ltcGxlX3N0cnRvdWwob3B0aW9ucywKPj4+PiAmb3B0aW9ucywgMCk7Cj4+Pj4g ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4+ICAgICAgICAgICAgICAgICAg fQo+Pj4+ICsjaWZkZWYgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJSRURfVEFLRU9W RVIKPj4+PiArICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAob3B0aW9ucywgIm5vZGVmZXIiKSkg ewo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkX3Rha2VvdmVyID0gZmFsc2U7 Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+Pj4gKyAgICAgICAgICAg ICAgIH0KPj4+PiArI2VuZGlmCj4+Pj4gICAgICAgICAgfQo+Pj4+ICAgICAgICAgIHJldHVybiAx Owo+Pj4+ICAgIH0KPj4+PiBAQCAtMzEwMCw2ICszMTEyLDkgQEAgc3RhdGljIGludCBmYmNvbl9m Yl91bnJlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8KPj4+PiAqaW5mbykKPj4+PiAgICAgICAgICBX QVJOX0NPTlNPTEVfVU5MT0NLRUQoKTsKPj4+PiAgICArICAgICBpZiAoZGVmZXJyZWRfdGFrZW92 ZXIpCj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOwo+Pj4+ICsKPj4+PiAgICAgICAgICBp ZHggPSBpbmZvLT5ub2RlOwo+Pj4+ICAgICAgICAgIGZvciAoaSA9IGZpcnN0X2ZiX3ZjOyBpIDw9 IGxhc3RfZmJfdmM7IGkrKykgewo+Pj4+ICAgICAgICAgICAgICAgICAgaWYgKGNvbjJmYl9tYXBb aV0gPT0gaWR4KQo+Pj4+IEBAIC0zMTQwLDYgKzMxNTUsMTMgQEAgc3RhdGljIHZvaWQgZmJjb25f cmVtYXBfYWxsKGludCBpZHgpCj4+Pj4gICAgICAgICAgV0FSTl9DT05TT0xFX1VOTE9DS0VEKCk7 Cj4+Pj4gICAgKyAgICAgaWYgKGRlZmVycmVkX3Rha2VvdmVyKSB7Cj4+Pj4gKyAgICAgICAgICAg ICAgIGZvciAoaSA9IGZpcnN0X2ZiX3ZjOyBpIDw9IGxhc3RfZmJfdmM7IGkrKykKPj4+PiArICAg ICAgICAgICAgICAgICAgICAgICBjb24yZmJfbWFwX2Jvb3RbaV0gPSBpZHg7Cj4+Pj4gKyAgICAg ICAgICAgICAgIGZiY29uX21hcF9vdmVycmlkZSgpOwo+Pj4+ICsgICAgICAgICAgICAgICByZXR1 cm47Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKwo+Pj4+ICAgICAgICAgIGZvciAoaSA9IGZpcnN0X2Zi X3ZjOyBpIDw9IGxhc3RfZmJfdmM7IGkrKykKPj4+PiAgICAgICAgICAgICAgICAgIHNldF9jb24y ZmJfbWFwKGksIGlkeCwgMCk7Cj4+Pj4gICAgQEAgLTMxOTEsNiArMzIxMywxMSBAQCBzdGF0aWMg aW50IGZiY29uX2ZiX3JlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8KPj4+PiAqaW5mbykKPj4+PiAg ICAgICAgICBpZHggPSBpbmZvLT5ub2RlOwo+Pj4+ICAgICAgICAgIGZiY29uX3NlbGVjdF9wcmlt YXJ5KGluZm8pOwo+Pj4+ICAgICsgICAgIGlmIChkZWZlcnJlZF90YWtlb3Zlcikgewo+Pj4+ICsg ICAgICAgICAgICAgICBwcl9pbmZvKCJmYmNvbjogRGVmZXJyaW5nIGNvbnNvbGUgdGFrZS1vdmVy XG4iKTsKPj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gKyAgICAgICB9Cj4+Pj4g Kwo+Pj4+ICAgICAgICAgIGlmIChpbmZvX2lkeCA9PSAtMSkgewo+Pj4+ICAgICAgICAgICAgICAg ICAgZm9yIChpID0gZmlyc3RfZmJfdmM7IGkgPD0gbGFzdF9mYl92YzsgaSsrKSB7Cj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChjb24yZmJfbWFwX2Jvb3RbaV0gPT0gaWR4KSB7Cj4+ Pj4gQEAgLTM1NjYsOCArMzU5Myw0NiBAQCBzdGF0aWMgaW50IGZiY29uX2luaXRfZGV2aWNlKHZv aWQpCj4+Pj4gICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gICAgfQo+Pj4+ICAgICsjaWZkZWYgQ09O RklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJSRURfVEFLRU9WRVIKPj4+PiArc3RhdGljIHN0 cnVjdCBub3RpZmllcl9ibG9jayBmYmNvbl9vdXRwdXRfbmI7Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMg aW50IGZiY29uX291dHB1dF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWN0aW9uLCB2 b2lkICpkYXRhKQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBpbnQgaTsKPj4+PiArCj4+Pj4gKyAgICAg ICBXQVJOX0NPTlNPTEVfVU5MT0NLRUQoKTsKPj4+PiArCj4+Pj4gKyAgICAgICBwcl9pbmZvKCJm YmNvbjogVGFraW5nIG92ZXIgY29uc29sZVxuIik7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgZHVtbXlj b25fdW5yZWdpc3Rlcl9vdXRwdXRfbm90aWZpZXIoJmZiY29uX291dHB1dF9uYik7Cj4+Pj4gKyAg ICAgICBkZWZlcnJlZF90YWtlb3ZlciA9IGZhbHNlOwo+Pj4+ICsgICAgICAgbG9nb19zaG93biA9 IEZCQ09OX0xPR09fRE9OVFNIT1c7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgZm9yIChpID0gMDsgaSA8 IEZCX01BWDsgaSsrKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGlmIChyZWdpc3RlcmVkX2ZiW2ld KQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGZiY29uX2ZiX3JlZ2lzdGVyZWQocmVnaXN0 ZXJlZF9mYltpXSk7Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0dXJuIE5P VElGWV9PSzsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHZvaWQgZmJjb25fcmVnaXN0ZXJf b3V0cHV0X25vdGlmaWVyKHZvaWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIGZiY29uX291dHB1dF9u Yi5ub3RpZmllcl9jYWxsID0gZmJjb25fb3V0cHV0X25vdGlmaWVyOwo+Pj4+ICsgICAgICAgZHVt bXljb25fcmVnaXN0ZXJfb3V0cHV0X25vdGlmaWVyKCZmYmNvbl9vdXRwdXRfbmIpOwo+Pj4+ICt9 Cj4+Pj4gKyNlbHNlCj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBmYmNvbl9yZWdpc3Rlcl9vdXRw dXRfbm90aWZpZXIodm9pZCkge30KPj4+PiArI2VuZGlmCj4+Pj4gKwo+Pj4+ICAgIHN0YXRpYyB2 b2lkIGZiY29uX3N0YXJ0KHZvaWQpCj4+Pj4gICAgewo+Pj4+ICsgICAgICAgaWYgKGRlZmVycmVk X3Rha2VvdmVyKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGZiY29uX3JlZ2lzdGVyX291dHB1dF9u b3RpZmllcigpOwo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4gKyAgICAgICB9Cj4+ Pj4gKwo+Pj4+ICAgICAgICAgIGlmIChudW1fcmVnaXN0ZXJlZF9mYikgewo+Pj4+ICAgICAgICAg ICAgICAgICAgaW50IGk7Cj4+Pj4gICAgQEAgLTM1OTQsNiArMzY1OSwxMyBAQCBzdGF0aWMgdm9p ZCBmYmNvbl9leGl0KHZvaWQpCj4+Pj4gICAgICAgICAgaWYgKGZiY29uX2hhc19leGl0ZWQpCj4+ Pj4gICAgICAgICAgICAgICAgICByZXR1cm47Cj4+Pj4gICAgKyNpZmRlZiBDT05GSUdfRlJBTUVC VUZGRVJfQ09OU09MRV9ERUZFUlJFRF9UQUtFT1ZFUgo+Pj4+ICsgICAgICAgaWYgKGRlZmVycmVk X3Rha2VvdmVyKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGR1bW15Y29uX3VucmVnaXN0ZXJfb3V0 cHV0X25vdGlmaWVyKCZmYmNvbl9vdXRwdXRfbmIpOwo+Pj4+ICsgICAgICAgICAgICAgICBkZWZl cnJlZF90YWtlb3ZlciA9IGZhbHNlOwo+Pj4+ICsgICAgICAgfQo+Pj4+ICsjZW5kaWYKPj4+PiAr Cj4+Pj4gICAgICAgICAga2ZyZWUoKHZvaWQgKilzb2Z0YmFja19idWYpOwo+Pj4+ICAgICAgICAg IHNvZnRiYWNrX2J1ZiA9IDBVTDsKPj4+PiAgICBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9j b25zb2xlLmggYi9pbmNsdWRlL2xpbnV4L2NvbnNvbGUuaAo+Pj4+IGluZGV4IGRmZDZiMGU5Nzg1 NS4uZjU5ZjNkYmNhNjVjIDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUvbGludXgvY29uc29sZS5o Cj4+Pj4gKysrIGIvaW5jbHVkZS9saW51eC9jb25zb2xlLmgKPj4+PiBAQCAtMjEsNiArMjEsNyBA QCBzdHJ1Y3QgY29uc29sZV9mb250X29wOwo+Pj4+ICAgIHN0cnVjdCBjb25zb2xlX2ZvbnQ7Cj4+ Pj4gICAgc3RydWN0IG1vZHVsZTsKPj4+PiAgICBzdHJ1Y3QgdHR5X3N0cnVjdDsKPj4+PiArc3Ry dWN0IG5vdGlmaWVyX2Jsb2NrOwo+Pj4+ICAgICAgLyoKPj4+PiAgICAgKiB0aGlzIGlzIHdoYXQg dGhlIHRlcm1pbmFsIGFuc3dlcnMgdG8gYSBFU0MtWiBvciBjc2kwYyBxdWVyeS4KPj4+PiBAQCAt MjIwLDQgKzIyMSw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2Z2Fjb25fdGV4dF9mb3JjZSh2b2lk KSB7IHJldHVybgo+Pj4+IGZhbHNlOyB9Cj4+Pj4gICAgICBleHRlcm4gdm9pZCBjb25zb2xlX2lu aXQodm9pZCk7Cj4+Pj4gICAgKy8qIEZvciBkZWZlcnJlZCBjb25zb2xlIHRha2VvdmVyICovCj4+ Pj4gK3ZvaWQgZHVtbXljb25fcmVnaXN0ZXJfb3V0cHV0X25vdGlmaWVyKHN0cnVjdCBub3RpZmll cl9ibG9jayAqbmIpOwo+Pj4+ICt2b2lkIGR1bW15Y29uX3VucmVnaXN0ZXJfb3V0cHV0X25vdGlm aWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwo+Pj4+ICsKPj4+PiAgICAjZW5kaWYgLyog X0xJTlVYX0NPTlNPTEVfSCAqLwo+Pj4+IC0tCj4+Pj4gMi4xNy4xCj4+Pj4KPj4+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IGRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKPj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKPj4+ Cj4+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwKPiAKPiAKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==