From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: [PATCH v3 3/3] console/fbcon: Add support for deferred console takeover Date: Tue, 26 Jun 2018 20:36:12 +0200 Message-ID: <20180626183612.321-4-hdegoede@redhat.com> References: <20180626183612.321-1-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by gabe.freedesktop.org (Postfix) with ESMTPS id 12D5A6E61D for ; Tue, 26 Jun 2018 18:36:20 +0000 (UTC) In-Reply-To: <20180626183612.321-1-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: Bartlomiej Zolnierkiewicz , Petr Mladek , Sergey Senozhatsky Cc: Hans de Goede , linux-fbdev@vger.kernel.org, Steven Rostedt , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org Q3VycmVudGx5IGZiY29uIGNsYWltcyBmYmRldnMgYXMgc29vbiBhcyB0aGV5IGFyZSByZWdpc3Rl cmVkIGFuZCB0YWtlcyBvdmVyCnRoZSBjb25zb2xlIGFzIHNvb24gYXMgdGhlIGZpcnN0IGZiZGV2 IGdldHMgcmVnaXN0ZXJlZC4KClRoaXMgYmVoYXZpb3IgaXMgdW5kZXNpcmFibGUgaW4gY2FzZXMg d2hlcmUgYSBzbW9vdGggZ3JhcGhpY2FsIGJvb3R1cCBpcwpkZXNpcmVkLCBpbiBzdWNoIGNhc2Vz IHdlIHR5cGljYWxseSB3YW50IHRoZSBjb250ZW50cyBvZiB0aGUgZnJhbWVidWZmZXIKKHR5cGlj YWxseSBhIHZlbmRvciBsb2dvKSB0byBzdGF5IGluIHBsYWNlIGFzIGlzLgoKVGhlIGN1cnJlbnQg c29sdXRpb24gZm9yIHRoaXMgcHJvYmxlbSAob24gZW1iZWRkZWQgc3lzdGVtcykgaXMgdG8gbm90 CmVuYWJsZSBmYmNvbi4KClRoaXMgY29tbWl0IGFkZHMgYSBuZXcgRlJBTUVCVUZGRVJfQ09OU09M RV9ERUZFUlJFRF9UQUtFT1ZFUiBjb25maWcgb3B0aW9uLAp3aGljaCB3aGVuIGVuYWJsZWQgZGVm ZXJzIGZiY29uIHRha2luZyBvdmVyIHRoZSBjb25zb2xlIGZyb20gdGhlIGR1bW15CmNvbnNvbGUg dW50aWwgdGhlIGZpcnN0IHRleHQgaXMgZGlzcGxheWVkIG9uIHRoZSBjb25zb2xlLiBUb2dldGhl ciB3aXRoIHRoZQoicXVpZXQiIGtlcm5lbCBjb21tYW5kbGluZSBvcHRpb24sIHRoaXMgYWxsb3dz IGZiY29uIHRvIHN0aWxsIGJlIHVzZWQKdG9nZXRoZXIgd2l0aCBhIHNtb290aCBncmFwaGljYWwg Ym9vdHVwLCBoYXZpbmcgaXQgdGFrZSBvdmVyIHRoZSBjb25zb2xlIGFzCnNvb24gYXMgZS5nLiBh biBlcnJvciBtZXNzYWdlIGlzIGxvZ2dlZC4KClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxk YW5pZWwudmV0dGVyQGZmd2xsLmNoPgpTaWduZWQtb2ZmLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVn b2VkZUByZWRoYXQuY29tPgotLS0KQ2hhbmdlcyBpbiB2MjoKLUNoZWNrIHRoZSB3aG9sZSBzdHJp bmcgd2hlbiBjaGVja2luZyBmb3IgZXJhc2VzIGluIHB1dGNzLCBpbnN0ZWFkIG9mIGp1c3QKIHRo ZSBmaXJzdCBjaGFyCi1NYWtlIGR1bW15Y29uX2JsYW5rIHJldHVybiAxLCBzbyB0aGF0IGEgcmVk cmF3IGdldHMgdHJpZ2dlcmVkIGFuZCBhbnkgdGV4dAogcmVuZGVyZWQgd2hpbGUgYmxhbmtlZCBn ZXRzIG91dHB1dCBzbyB0aGF0IGl0IGNhbiB0cmlnZ2VyIGEgZGVmZXJyZWQKIHRha2VvdmVyIGlm IG9uZSBpcyBwZW5kaW5nCgpDaGFuZ2VzIGluIHYzOgotQ2FsbCBXQVJOX0NPTlNPTEVfVU5MT0NL RUQoKSBmcm9tIGZiY29uX291dHB1dF9ub3RpZmllcigpCi1VbnJlZ2lzdGVyIHRoZSBub3RpZmll ciBvbiBmYmNvbl9leGl0KCkKLURvY3VtZW50IHRoZSBmYmNvbj1ub2RlZmVyIGNvbW1hbmRsaW5l IG9wdGlvbiBpbiBEb2N1bWVudGF0aW9uL2ZiL2ZiY29uLnR4dAotLS0KIERvY3VtZW50YXRpb24v ZmIvZmJjb24udHh0ICAgICAgIHwgIDcgKysrKwogZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25m aWcgICAgfCAxMSArKysrKwogZHJpdmVycy92aWRlby9jb25zb2xlL2R1bW15Y29uLmMgfCA2NyAr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2Zi Y29uLmMgfCA3MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9saW51 eC9jb25zb2xlLmggICAgICAgICAgfCAgNSArKysKIDUgZmlsZXMgY2hhbmdlZCwgMTU0IGluc2Vy dGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9mYi9m YmNvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZiL2ZiY29uLnR4dAppbmRleCA3OWMyMmQwOTZiYmMu LmQ0ZDY0MmUxY2U5YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9mYi9mYmNvbi50eHQKKysr IGIvRG9jdW1lbnRhdGlvbi9mYi9mYmNvbi50eHQKQEAgLTE1NSw2ICsxNTUsMTMgQEAgQy4gQm9v dCBvcHRpb25zCiAJdXNlZCBieSB0ZXh0LiBCeSBkZWZhdWx0LCB0aGlzIGFyZWEgd2lsbCBiZSBi bGFjay4gVGhlICdjb2xvcicgdmFsdWUKIAlpcyBhbiBpbnRlZ2VyIG51bWJlciB0aGF0IGRlcGVu ZHMgb24gdGhlIGZyYW1lYnVmZmVyIGRyaXZlciBiZWluZyB1c2VkLgogCis2LiBmYmNvbj1ub2Rl ZmVyCisKKwlJZiB0aGUga2VybmVsIGlzIGNvbXBpbGVkIHdpdGggZGVmZXJyZWQgZmJjb24gdGFr ZW92ZXIgc3VwcG9ydCwgbm9ybWFsbHkKKwl0aGUgZnJhbWVidWZmZXIgY29udGVudHMsIGxlZnQg aW4gcGxhY2UgYnkgdGhlIGZpcm13YXJlL2Jvb3Rsb2FkZXIsIHdpbGwKKwliZSBwcmVzZXJ2ZWQg dW50aWwgdGhlcmUgYWN0dWFsbHkgaXMgc29tZSB0ZXh0IGlzIG91dHB1dCB0byB0aGUgY29uc29s ZS4KKwlUaGlzIG9wdGlvbiBjYXVzZXMgZmJjb24gdG8gYmluZCBpbW1lZGlhdGVseSB0byB0aGUg ZmJkZXYgZGV2aWNlLgorCiBDLiBBdHRhY2hpbmcsIERldGFjaGluZyBhbmQgVW5sb2FkaW5nCiAK IEJlZm9yZSBnb2luZyBvbiBob3cgdG8gYXR0YWNoLCBkZXRhY2ggYW5kIHVubG9hZCB0aGUgZnJh bWVidWZmZXIgY29uc29sZSwgYW4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS9L Y29uZmlnIGIvZHJpdmVycy92aWRlby9jb25zb2xlL0tjb25maWcKaW5kZXggNDExMGJhN2Q3Y2E5 Li5lOTFlZGVmOTg2MzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmln CisrKyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9LY29uZmlnCkBAIC0xNTAsNiArMTUwLDE3IEBA IGNvbmZpZyBGUkFNRUJVRkZFUl9DT05TT0xFX1JPVEFUSU9OCiAgICAgICAgICBzdWNoIHRoYXQg b3RoZXIgdXNlcnMgb2YgdGhlIGZyYW1lYnVmZmVyIHdpbGwgcmVtYWluIG5vcm1hbGx5CiAgICAg ICAgICBvcmllbnRlZC4KIAorY29uZmlnIEZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJSRURfVEFL RU9WRVIKKwlib29sICJGcmFtZWJ1ZmZlciBDb25zb2xlIERlZmVycmVkIFRha2VvdmVyIgorCWRl cGVuZHMgb24gRlJBTUVCVUZGRVJfQ09OU09MRT15ICYmIERVTU1ZX0NPTlNPTEU9eQorCWhlbHAK KwkgIElmIGVuYWJsZWQgdGhpcyBkZWZlcnMgdGhlIGZyYW1lYnVmZmVyIGNvbnNvbGUgdGFraW5n IG92ZXIgdGhlCisJICBjb25zb2xlIGZyb20gdGhlIGR1bW15IGNvbnNvbGUgdW50aWwgdGhlIGZp cnN0IHRleHQgaXMgZGlzcGxheWVkIG9uCisJICB0aGUgY29uc29sZS4gVGhpcyBpcyB1c2VmdWwg aW4gY29tYmluYXRpb24gd2l0aCB0aGUgInF1aWV0IiBrZXJuZWwKKwkgIGNvbW1hbmRsaW5lIG9w dGlvbiB0byBrZWVwIHRoZSBmcmFtZWJ1ZmZlciBjb250ZW50cyBpbml0aWFsbHkgcHV0IHVwCisJ ICBieSB0aGUgZmlybXdhcmUgaW4gcGxhY2UsIHJhdGhlciB0aGVuIHJlcGxhY2luZyB0aGUgY29u dGVudHMgd2l0aCBhCisJICBibGFjayBzY3JlZW4gYXMgc29vbiBhcyBmYmNvbiBsb2Fkcy4KKwog Y29uZmlnIFNUSV9DT05TT0xFCiAgICAgICAgIGJvb2wgIlNUSSB0ZXh0IGNvbnNvbGUiCiAJZGVw ZW5kcyBvbiBQQVJJU0MgJiYgSEFTX0lPTUVNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Nv bnNvbGUvZHVtbXljb24uYyBiL2RyaXZlcnMvdmlkZW8vY29uc29sZS9kdW1teWNvbi5jCmluZGV4 IGYyZWFmZTJlZDk4MC4uNDVhZDkyNWFkNWY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2Nv bnNvbGUvZHVtbXljb24uYworKysgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZHVtbXljb24uYwpA QCAtMjYsNiArMjYsNjUgQEAKICNkZWZpbmUgRFVNTVlfUk9XUwlDT05GSUdfRFVNTVlfQ09OU09M RV9ST1dTCiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xFX0RFRkVS UkVEX1RBS0VPVkVSCisvKiBUaGVzZSBhcmUgYm90aCBwcm90ZWN0ZWQgYnkgdGhlIGNvbnNvbGVf bG9jayAqLworc3RhdGljIFJBV19OT1RJRklFUl9IRUFEKGR1bW15Y29uX291dHB1dF9uaCk7Citz dGF0aWMgYm9vbCBkdW1teWNvbl9wdXRjX2NhbGxlZDsKKwordm9pZCBkdW1teWNvbl9yZWdpc3Rl cl9vdXRwdXRfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKK3sKKwlyYXdfbm90 aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJmR1bW15Y29uX291dHB1dF9uaCwgbmIpOworCisJaWYgKGR1 bW15Y29uX3B1dGNfY2FsbGVkKQorCQluYi0+bm90aWZpZXJfY2FsbChuYiwgMCwgTlVMTCk7Cit9 CisKK3ZvaWQgZHVtbXljb25fdW5yZWdpc3Rlcl9vdXRwdXRfbm90aWZpZXIoc3RydWN0IG5vdGlm aWVyX2Jsb2NrICpuYikKK3sKKwlyYXdfbm90aWZpZXJfY2hhaW5fdW5yZWdpc3RlcigmZHVtbXlj b25fb3V0cHV0X25oLCBuYik7Cit9CisKK3N0YXRpYyB2b2lkIGR1bW15Y29uX3B1dGMoc3RydWN0 IHZjX2RhdGEgKnZjLCBpbnQgYywgaW50IHlwb3MsIGludCB4cG9zKQoreworCWR1bW15Y29uX3B1 dGNfY2FsbGVkID0gdHJ1ZTsKKwlyYXdfbm90aWZpZXJfY2FsbF9jaGFpbigmZHVtbXljb25fb3V0 cHV0X25oLCAwLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgZHVtbXljb25fcHV0Y3Moc3RydWN0 IHZjX2RhdGEgKnZjLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqcywKKwkJCSAgIGludCBjb3VudCwg aW50IHlwb3MsIGludCB4cG9zKQoreworCWludCBpOworCisJaWYgKCFkdW1teWNvbl9wdXRjX2Nh bGxlZCkgeworCQkvKiBJZ25vcmUgZXJhc2VzICovCisJCWZvciAoaSA9IDAgOyBpIDwgY291bnQ7 IGkrKykgeworCQkJaWYgKHNbaV0gIT0gdmMtPnZjX3ZpZGVvX2VyYXNlX2NoYXIpCisJCQkJYnJl YWs7CisJCX0KKwkJaWYgKGkgPT0gY291bnQpCisJCQlyZXR1cm47CisKKwkJZHVtbXljb25fcHV0 Y19jYWxsZWQgPSB0cnVlOworCX0KKworCXJhd19ub3RpZmllcl9jYWxsX2NoYWluKCZkdW1teWNv bl9vdXRwdXRfbmgsIDAsIE5VTEwpOworfQorCitzdGF0aWMgaW50IGR1bW15Y29uX2JsYW5rKHN0 cnVjdCB2Y19kYXRhICp2YywgaW50IGJsYW5rLCBpbnQgbW9kZV9zd2l0Y2gpCit7CisJLyogUmVk cmF3LCBzbyB0aGF0IHdlIGdldCBwdXRjKHMpIGZvciBvdXRwdXQgZG9uZSB3aGlsZSBibGFua2Vk ICovCisJcmV0dXJuIDE7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgZHVtbXljb25fcHV0YyhzdHJ1 Y3QgdmNfZGF0YSAqdmMsIGludCBjLCBpbnQgeXBvcywgaW50IHhwb3MpIHsgfQorc3RhdGljIHZv aWQgZHVtbXljb25fcHV0Y3Moc3RydWN0IHZjX2RhdGEgKnZjLCBjb25zdCB1bnNpZ25lZCBzaG9y dCAqcywKKwkJCSAgIGludCBjb3VudCwgaW50IHlwb3MsIGludCB4cG9zKSB7IH0KK3N0YXRpYyBp bnQgZHVtbXljb25fYmxhbmsoc3RydWN0IHZjX2RhdGEgKnZjLCBpbnQgYmxhbmssIGludCBtb2Rl X3N3aXRjaCkKK3sKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCiBzdGF0aWMgY29uc3QgY2hhciAq ZHVtbXljb25fc3RhcnR1cCh2b2lkKQogewogICAgIHJldHVybiAiZHVtbXkgZGV2aWNlIjsKQEAg LTQ0LDkgKzEwMyw2IEBAIHN0YXRpYyB2b2lkIGR1bW15Y29uX2luaXQoc3RydWN0IHZjX2RhdGEg KnZjLCBpbnQgaW5pdCkKIHN0YXRpYyB2b2lkIGR1bW15Y29uX2RlaW5pdChzdHJ1Y3QgdmNfZGF0 YSAqdmMpIHsgfQogc3RhdGljIHZvaWQgZHVtbXljb25fY2xlYXIoc3RydWN0IHZjX2RhdGEgKnZj LCBpbnQgc3ksIGludCBzeCwgaW50IGhlaWdodCwKIAkJCSAgIGludCB3aWR0aCkgeyB9Ci1zdGF0 aWMgdm9pZCBkdW1teWNvbl9wdXRjKHN0cnVjdCB2Y19kYXRhICp2YywgaW50IGMsIGludCB5cG9z LCBpbnQgeHBvcykgeyB9Ci1zdGF0aWMgdm9pZCBkdW1teWNvbl9wdXRjcyhzdHJ1Y3QgdmNfZGF0 YSAqdmMsIGNvbnN0IHVuc2lnbmVkIHNob3J0ICpzLAotCQkJICAgaW50IGNvdW50LCBpbnQgeXBv cywgaW50IHhwb3MpIHsgfQogc3RhdGljIHZvaWQgZHVtbXljb25fY3Vyc29yKHN0cnVjdCB2Y19k YXRhICp2YywgaW50IG1vZGUpIHsgfQogCiBzdGF0aWMgYm9vbCBkdW1teWNvbl9zY3JvbGwoc3Ry dWN0IHZjX2RhdGEgKnZjLCB1bnNpZ25lZCBpbnQgdG9wLApAQCAtNjEsMTEgKzExNyw2IEBAIHN0 YXRpYyBpbnQgZHVtbXljb25fc3dpdGNoKHN0cnVjdCB2Y19kYXRhICp2YykKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIGludCBkdW1teWNvbl9ibGFuayhzdHJ1Y3QgdmNfZGF0YSAqdmMsIGludCBi bGFuaywgaW50IG1vZGVfc3dpdGNoKQotewotCXJldHVybiAwOwotfQotCiBzdGF0aWMgaW50IGR1 bW15Y29uX2ZvbnRfc2V0KHN0cnVjdCB2Y19kYXRhICp2Yywgc3RydWN0IGNvbnNvbGVfZm9udCAq Zm9udCwKIAkJCSAgICAgdW5zaWduZWQgaW50IGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMgYi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJj b24uYwppbmRleCBjZDhkNTJhOTY3YWEuLjVmYjE1NmJkY2Y0ZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMKKysrIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3Jl L2ZiY29uLmMKQEAgLTEyOSw2ICsxMjksMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGZiY29uX21h cF9vdmVycmlkZSh2b2lkKQogfQogI2VuZGlmIC8qIENPTkZJR19GUkFNRUJVRkZFUl9DT05TT0xF X0RFVEVDVF9QUklNQVJZICovCiAKKyNpZmRlZiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9E RUZFUlJFRF9UQUtFT1ZFUgorc3RhdGljIGJvb2wgZGVmZXJyZWRfdGFrZW92ZXIgPSB0cnVlOwor I2Vsc2UKKyNkZWZpbmUgZGVmZXJyZWRfdGFrZW92ZXIgZmFsc2UKKyNlbmRpZgorCiAvKiBmb250 IGRhdGEgKi8KIHN0YXRpYyBjaGFyIGZvbnRuYW1lWzQwXTsKIApAQCAtNDk5LDYgKzUwNSwxMiBA QCBzdGF0aWMgaW50IF9faW5pdCBmYl9jb25zb2xlX3NldHVwKGNoYXIgKnRoaXNfb3B0KQogCQkJ CW1hcmdpbl9jb2xvciA9IHNpbXBsZV9zdHJ0b3VsKG9wdGlvbnMsICZvcHRpb25zLCAwKTsKIAkJ CWNvbnRpbnVlOwogCQl9CisjaWZkZWYgQ09ORklHX0ZSQU1FQlVGRkVSX0NPTlNPTEVfREVGRVJS RURfVEFLRU9WRVIKKwkJaWYgKCFzdHJjbXAob3B0aW9ucywgIm5vZGVmZXIiKSkgeworCQkJZGVm ZXJyZWRfdGFrZW92ZXIgPSBmYWxzZTsKKwkJCWNvbnRpbnVlOworCQl9CisjZW5kaWYKIAl9CiAJ cmV0dXJuIDE7CiB9CkBAIC0zMTAwLDYgKzMxMTIsOSBAQCBzdGF0aWMgaW50IGZiY29uX2ZiX3Vu cmVnaXN0ZXJlZChzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAogCVdBUk5fQ09OU09MRV9VTkxPQ0tF RCgpOwogCisJaWYgKGRlZmVycmVkX3Rha2VvdmVyKQorCQlyZXR1cm4gMDsKKwogCWlkeCA9IGlu Zm8tPm5vZGU7CiAJZm9yIChpID0gZmlyc3RfZmJfdmM7IGkgPD0gbGFzdF9mYl92YzsgaSsrKSB7 CiAJCWlmIChjb24yZmJfbWFwW2ldID09IGlkeCkKQEAgLTMxNDAsNiArMzE1NSwxMyBAQCBzdGF0 aWMgdm9pZCBmYmNvbl9yZW1hcF9hbGwoaW50IGlkeCkKIAogCVdBUk5fQ09OU09MRV9VTkxPQ0tF RCgpOwogCisJaWYgKGRlZmVycmVkX3Rha2VvdmVyKSB7CisJCWZvciAoaSA9IGZpcnN0X2ZiX3Zj OyBpIDw9IGxhc3RfZmJfdmM7IGkrKykKKwkJCWNvbjJmYl9tYXBfYm9vdFtpXSA9IGlkeDsKKwkJ ZmJjb25fbWFwX292ZXJyaWRlKCk7CisJCXJldHVybjsKKwl9CisKIAlmb3IgKGkgPSBmaXJzdF9m Yl92YzsgaSA8PSBsYXN0X2ZiX3ZjOyBpKyspCiAJCXNldF9jb24yZmJfbWFwKGksIGlkeCwgMCk7 CiAKQEAgLTMxOTEsNiArMzIxMywxMSBAQCBzdGF0aWMgaW50IGZiY29uX2ZiX3JlZ2lzdGVyZWQo c3RydWN0IGZiX2luZm8gKmluZm8pCiAJaWR4ID0gaW5mby0+bm9kZTsKIAlmYmNvbl9zZWxlY3Rf cHJpbWFyeShpbmZvKTsKIAorCWlmIChkZWZlcnJlZF90YWtlb3ZlcikgeworCQlwcl9pbmZvKCJm YmNvbjogRGVmZXJyaW5nIGNvbnNvbGUgdGFrZS1vdmVyXG4iKTsKKwkJcmV0dXJuIDA7CisJfQor CiAJaWYgKGluZm9faWR4ID09IC0xKSB7CiAJCWZvciAoaSA9IGZpcnN0X2ZiX3ZjOyBpIDw9IGxh c3RfZmJfdmM7IGkrKykgewogCQkJaWYgKGNvbjJmYl9tYXBfYm9vdFtpXSA9PSBpZHgpIHsKQEAg LTM1NjYsOCArMzU5Myw0NiBAQCBzdGF0aWMgaW50IGZiY29uX2luaXRfZGV2aWNlKHZvaWQpCiAJ cmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09MRV9ERUZFUlJF RF9UQUtFT1ZFUgorc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBmYmNvbl9vdXRwdXRfbmI7 CisKK3N0YXRpYyBpbnQgZmJjb25fb3V0cHV0X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9j ayAqbmIsCisJCQkJIHVuc2lnbmVkIGxvbmcgYWN0aW9uLCB2b2lkICpkYXRhKQoreworCWludCBp OworCisJV0FSTl9DT05TT0xFX1VOTE9DS0VEKCk7CisKKwlwcl9pbmZvKCJmYmNvbjogVGFraW5n IG92ZXIgY29uc29sZVxuIik7CisKKwlkdW1teWNvbl91bnJlZ2lzdGVyX291dHB1dF9ub3RpZmll cigmZmJjb25fb3V0cHV0X25iKTsKKwlkZWZlcnJlZF90YWtlb3ZlciA9IGZhbHNlOworCWxvZ29f c2hvd24gPSBGQkNPTl9MT0dPX0RPTlRTSE9XOworCisJZm9yIChpID0gMDsgaSA8IEZCX01BWDsg aSsrKSB7CisJCWlmIChyZWdpc3RlcmVkX2ZiW2ldKQorCQkJZmJjb25fZmJfcmVnaXN0ZXJlZChy ZWdpc3RlcmVkX2ZiW2ldKTsKKwl9CisKKwlyZXR1cm4gTk9USUZZX09LOworfQorCitzdGF0aWMg dm9pZCBmYmNvbl9yZWdpc3Rlcl9vdXRwdXRfbm90aWZpZXIodm9pZCkKK3sKKwlmYmNvbl9vdXRw dXRfbmIubm90aWZpZXJfY2FsbCA9IGZiY29uX291dHB1dF9ub3RpZmllcjsKKwlkdW1teWNvbl9y ZWdpc3Rlcl9vdXRwdXRfbm90aWZpZXIoJmZiY29uX291dHB1dF9uYik7Cit9CisjZWxzZQorc3Rh dGljIGlubGluZSB2b2lkIGZiY29uX3JlZ2lzdGVyX291dHB1dF9ub3RpZmllcih2b2lkKSB7fQor I2VuZGlmCisKIHN0YXRpYyB2b2lkIGZiY29uX3N0YXJ0KHZvaWQpCiB7CisJaWYgKGRlZmVycmVk X3Rha2VvdmVyKSB7CisJCWZiY29uX3JlZ2lzdGVyX291dHB1dF9ub3RpZmllcigpOworCQlyZXR1 cm47CisJfQorCiAJaWYgKG51bV9yZWdpc3RlcmVkX2ZiKSB7CiAJCWludCBpOwogCkBAIC0zNTk0 LDYgKzM2NTksMTMgQEAgc3RhdGljIHZvaWQgZmJjb25fZXhpdCh2b2lkKQogCWlmIChmYmNvbl9o YXNfZXhpdGVkKQogCQlyZXR1cm47CiAKKyNpZmRlZiBDT05GSUdfRlJBTUVCVUZGRVJfQ09OU09M RV9ERUZFUlJFRF9UQUtFT1ZFUgorCWlmIChkZWZlcnJlZF90YWtlb3ZlcikgeworCQlkdW1teWNv bl91bnJlZ2lzdGVyX291dHB1dF9ub3RpZmllcigmZmJjb25fb3V0cHV0X25iKTsKKwkJZGVmZXJy ZWRfdGFrZW92ZXIgPSBmYWxzZTsKKwl9CisjZW5kaWYKKwogCWtmcmVlKCh2b2lkICopc29mdGJh Y2tfYnVmKTsKIAlzb2Z0YmFja19idWYgPSAwVUw7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvY29uc29sZS5oIGIvaW5jbHVkZS9saW51eC9jb25zb2xlLmgKaW5kZXggZGZkNmIwZTk3ODU1 Li5mNTlmM2RiY2E2NWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY29uc29sZS5oCisrKyBi L2luY2x1ZGUvbGludXgvY29uc29sZS5oCkBAIC0yMSw2ICsyMSw3IEBAIHN0cnVjdCBjb25zb2xl X2ZvbnRfb3A7CiBzdHJ1Y3QgY29uc29sZV9mb250Owogc3RydWN0IG1vZHVsZTsKIHN0cnVjdCB0 dHlfc3RydWN0Oworc3RydWN0IG5vdGlmaWVyX2Jsb2NrOwogCiAvKgogICogdGhpcyBpcyB3aGF0 IHRoZSB0ZXJtaW5hbCBhbnN3ZXJzIHRvIGEgRVNDLVogb3IgY3NpMGMgcXVlcnkuCkBAIC0yMjAs NCArMjIxLDggQEAgc3RhdGljIGlubGluZSBib29sIHZnYWNvbl90ZXh0X2ZvcmNlKHZvaWQpIHsg cmV0dXJuIGZhbHNlOyB9CiAKIGV4dGVybiB2b2lkIGNvbnNvbGVfaW5pdCh2b2lkKTsKIAorLyog Rm9yIGRlZmVycmVkIGNvbnNvbGUgdGFrZW92ZXIgKi8KK3ZvaWQgZHVtbXljb25fcmVnaXN0ZXJf b3V0cHV0X25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIpOwordm9pZCBkdW1teWNv bl91bnJlZ2lzdGVyX291dHB1dF9ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iKTsK KwogI2VuZGlmIC8qIF9MSU5VWF9DT05TT0xFX0ggKi8KLS0gCjIuMTcuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==