From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE737C433E0 for ; Mon, 22 Feb 2021 17:42:08 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7E2EC64E3F for ; Mon, 22 Feb 2021 17:42:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E2EC64E3F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=MZCeJpWWZYmrZk3z80SAATbHqgPvYzmVKSXmlK/Trq0=; b=g5ge9hX5DjUpRsuFlhQqQlgK0 ndOE0l8/FU2KJkKUmWh7v7AHbnGyns5w3tzd+On84+0bXgTJ3RtORSyh23CamJ+Fu7Z/y7APL6y7Z pzHBrJAouB9ASHP9EghYR7NRsooxdzHY96tCCTcqZ1UAKfn5ktOsx8f+8EHmL25YHDZnOAoMs82vs tJwuxMdBRkXB0NaukzrAKAnwZgs1ADkvwC56bSxSdVA9jdtODER/Hk8wvGuZCdBOckKc8W3pPVoyE 41Y0c5EYqhYh1Sl8Lh+qc49Ne7hpl/dPyySMiPlDJv56Ui6pEcrT/lAO307GOoS3K2f0fTqe5M9Un wuzoMdztQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEFCJ-0005ZN-2O; Mon, 22 Feb 2021 17:40:39 +0000 Received: from foss.arm.com ([217.140.110.172]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEFCE-0005X9-0d for linux-arm-kernel@lists.infradead.org; Mon, 22 Feb 2021 17:40:35 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 748AF1FB; Mon, 22 Feb 2021 09:40:31 -0800 (PST) Received: from [192.168.0.110] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 75B003F73B; Mon, 22 Feb 2021 09:40:30 -0800 (PST) Subject: Re: [PATCH kvmtool 13/21] hw/serial: Refactor trap handler To: Andre Przywara References: <20201210142908.169597-1-andre.przywara@arm.com> <20201210142908.169597-14-andre.przywara@arm.com> <5c91e8f2-7bdf-4c4a-1da3-08dac79fd9a4@arm.com> <20210218144153.776fb089@slackpad.fritz.box> From: Alexandru Elisei Message-ID: <85c714de-edb8-666d-49be-90539e347e30@arm.com> Date: Mon, 22 Feb 2021 17:40:36 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: <20210218144153.776fb089@slackpad.fritz.box> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210222_124034_189664_CACED959 X-CRM114-Status: GOOD ( 28.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kvm@vger.kernel.org, Marc Zyngier , Julien Thierry , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQW5kcmUsCgpPbiAyLzE4LzIxIDI6NDEgUE0sIEFuZHJlIFByenl3YXJhIHdyb3RlOgo+IE9u IFR1ZSwgMTYgRmViIDIwMjEgMTQ6MjI6MDUgKzAwMDAKPiBBbGV4YW5kcnUgRWxpc2VpIDxhbGV4 YW5kcnUuZWxpc2VpQGFybS5jb20+IHdyb3RlOgo+Cj4+IEhpIEFuZHJlLAo+Pgo+PiBQYXRjaCBs b29rcyBnb29kLCBuaXRwaWNrcyBiZWxvdy4KPj4KPj4gT24gMTIvMTAvMjAgMjoyOSBQTSwgQW5k cmUgUHJ6eXdhcmEgd3JvdGU6Cj4+PiBXaXRoIHRoZSBwbGFubmVkIHJldGlyZW1lbnQgb2YgdGhl IHNwZWNpYWwgaW9wb3J0IGVtdWxhdGlvbiBjb2RlLCB3ZQo+Pj4gbmVlZCB0byBwcm92aWRlIGFu IGVtdWxhdGlvbiBmdW5jdGlvbiBjb21wYXRpYmxlIHdpdGggdGhlIE1NSU8gcHJvdG90eXBlLgo+ Pj4KPj4+IEFkanVzdCB0aGUgdHJhcCBoYW5kbGVyIHRvIHVzZSB0aGF0IG5ldyBmdW5jdGlvbiwg YW5kIHByb3ZpZGUgc2hpbXMgdG8KPj4+IGltcGxlbWVudCB0aGUgb2xkIGlvcG9ydCBpbnRlcmZh Y2UsIGZvciBub3cuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQW5kcmUgUHJ6eXdhcmEgPGFuZHJl LnByenl3YXJhQGFybS5jb20+Cj4+PiAtLS0KPj4+ICBody9zZXJpYWwuYyB8IDk3ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4+PiAgMSBmaWxl IGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYg LS1naXQgYS9ody9zZXJpYWwuYyBiL2h3L3NlcmlhbC5jCj4+PiBpbmRleCBiMDQ2NWQ5OS4uMjkw NzA4OWMgMTAwNjQ0Cj4+PiAtLS0gYS9ody9zZXJpYWwuYwo+Pj4gKysrIGIvaHcvc2VyaWFsLmMK Pj4+IEBAIC0yNDIsMzYgKzI0MiwzMSBAQCB2b2lkIHNlcmlhbDgyNTBfX2luamVjdF9zeXNycShz dHJ1Y3Qga3ZtICprdm0sIGNoYXIgc3lzcnEpCj4+PiAgCXN5c3JxX3BlbmRpbmcgPSBzeXNycTsK Pj4+ICB9Cj4+PiAgCj4+PiAtc3RhdGljIGJvb2wgc2VyaWFsODI1MF9vdXQoc3RydWN0IGlvcG9y dCAqaW9wb3J0LCBzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwgdTE2IHBvcnQsCj4+PiAtCQkJICAgdm9p ZCAqZGF0YSwgaW50IHNpemUpCj4+PiArc3RhdGljIGJvb2wgc2VyaWFsODI1MF9vdXQoc3RydWN0 IHNlcmlhbDgyNTBfZGV2aWNlICpkZXYsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LAo+Pj4gKwkJCSAg IHUxNiBvZmZzZXQsIHU4IGRhdGEpCj4+PiAgewo+Pj4gLQlzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZp Y2UgKmRldiA9IGlvcG9ydC0+cHJpdjsKPj4+IC0JdTE2IG9mZnNldDsKPj4+ICAJYm9vbCByZXQg PSB0cnVlOwo+Pj4gLQljaGFyICphZGRyID0gZGF0YTsKPj4+ICAKPj4+ICAJbXV0ZXhfbG9jaygm ZGV2LT5tdXRleCk7Cj4+PiAgCj4+PiAtCW9mZnNldCA9IHBvcnQgLSBkZXYtPmlvYmFzZTsKPj4+ IC0KPj4+ICAJc3dpdGNoIChvZmZzZXQpIHsKPj4+ICAJY2FzZSBVQVJUX1RYOgo+Pj4gIAkJaWYg KGRldi0+bGNyICYgVUFSVF9MQ1JfRExBQikgewo+Pj4gLQkJCWRldi0+ZGxsID0gaW9wb3J0X19y ZWFkOChkYXRhKTsKPj4+ICsJCQlkZXYtPmRsbCA9IGRhdGE7Cj4+PiAgCQkJYnJlYWs7Cj4+PiAg CQl9Cj4+PiAgCj4+PiAgCQkvKiBMb29wYmFjayBtb2RlICovCj4+PiAgCQlpZiAoZGV2LT5tY3Ig JiBVQVJUX01DUl9MT09QKSB7Cj4+PiAgCQkJaWYgKGRldi0+cnhjbnQgPCBGSUZPX0xFTikgewo+ Pj4gLQkJCQlkZXYtPnJ4YnVmW2Rldi0+cnhjbnQrK10gPSAqYWRkcjsKPj4+ICsJCQkJZGV2LT5y eGJ1ZltkZXYtPnJ4Y250KytdID0gZGF0YTsKPj4+ICAJCQkJZGV2LT5sc3IgfD0gVUFSVF9MU1Jf RFI7Cj4+PiAgCQkJfQo+Pj4gIAkJCWJyZWFrOwo+Pj4gIAkJfQo+Pj4gIAo+Pj4gIAkJaWYgKGRl di0+dHhjbnQgPCBGSUZPX0xFTikgewo+Pj4gLQkJCWRldi0+dHhidWZbZGV2LT50eGNudCsrXSA9 ICphZGRyOwo+Pj4gKwkJCWRldi0+dHhidWZbZGV2LT50eGNudCsrXSA9IGRhdGE7Cj4+PiAgCQkJ ZGV2LT5sc3IgJj0gflVBUlRfTFNSX1RFTVQ7Cj4+PiAgCQkJaWYgKGRldi0+dHhjbnQgPT0gRklG T19MRU4gLyAyKQo+Pj4gIAkJCQlkZXYtPmxzciAmPSB+VUFSVF9MU1JfVEhSRTsKPj4+IEBAIC0y ODMsMTggKzI3OCwxOCBAQCBzdGF0aWMgYm9vbCBzZXJpYWw4MjUwX291dChzdHJ1Y3QgaW9wb3J0 ICppb3BvcnQsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1MTYgcG9ydAo+Pj4gIAkJYnJlYWs7Cj4+ PiAgCWNhc2UgVUFSVF9JRVI6Cj4+PiAgCQlpZiAoIShkZXYtPmxjciAmIFVBUlRfTENSX0RMQUIp KQo+Pj4gLQkJCWRldi0+aWVyID0gaW9wb3J0X19yZWFkOChkYXRhKSAmIDB4MGY7Cj4+PiArCQkJ ZGV2LT5pZXIgPSBkYXRhICYgMHgwZjsKPj4+ICAJCWVsc2UKPj4+IC0JCQlkZXYtPmRsbSA9IGlv cG9ydF9fcmVhZDgoZGF0YSk7Cj4+PiArCQkJZGV2LT5kbG0gPSBkYXRhOwo+Pj4gIAkJYnJlYWs7 Cj4+PiAgCWNhc2UgVUFSVF9GQ1I6Cj4+PiAtCQlkZXYtPmZjciA9IGlvcG9ydF9fcmVhZDgoZGF0 YSk7Cj4+PiArCQlkZXYtPmZjciA9IGRhdGE7Cj4+PiAgCQlicmVhazsKPj4+ICAJY2FzZSBVQVJU X0xDUjoKPj4+IC0JCWRldi0+bGNyID0gaW9wb3J0X19yZWFkOChkYXRhKTsKPj4+ICsJCWRldi0+ bGNyID0gZGF0YTsKPj4+ICAJCWJyZWFrOwo+Pj4gIAljYXNlIFVBUlRfTUNSOgo+Pj4gLQkJZGV2 LT5tY3IgPSBpb3BvcnRfX3JlYWQ4KGRhdGEpOwo+Pj4gKwkJZGV2LT5tY3IgPSBkYXRhOwo+Pj4g IAkJYnJlYWs7Cj4+PiAgCWNhc2UgVUFSVF9MU1I6Cj4+PiAgCQkvKiBGYWN0b3J5IHRlc3QgKi8K Pj4+IEBAIC0zMDMsNyArMjk4LDcgQEAgc3RhdGljIGJvb2wgc2VyaWFsODI1MF9vdXQoc3RydWN0 IGlvcG9ydCAqaW9wb3J0LCBzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwgdTE2IHBvcnQKPj4+ICAJCS8q IE5vdCB1c2VkICovCj4+PiAgCQlicmVhazsKPj4+ICAJY2FzZSBVQVJUX1NDUjoKPj4+IC0JCWRl di0+c2NyID0gaW9wb3J0X19yZWFkOChkYXRhKTsKPj4+ICsJCWRldi0+c2NyID0gZGF0YTsKPj4+ ICAJCWJyZWFrOwo+Pj4gIAlkZWZhdWx0Ogo+Pj4gIAkJcmV0ID0gZmFsc2U7Cj4+PiBAQCAtMzM2 LDQ2ICszMzEsNDMgQEAgc3RhdGljIHZvaWQgc2VyaWFsODI1MF9yeChzdHJ1Y3Qgc2VyaWFsODI1 MF9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKPj4+ICAJfQo+Pj4gIH0KPj4+ICAKPj4+IC1zdGF0 aWMgYm9vbCBzZXJpYWw4MjUwX2luKHN0cnVjdCBpb3BvcnQgKmlvcG9ydCwgc3RydWN0IGt2bV9j cHUgKnZjcHUsIHUxNiBwb3J0LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkKPj4+ICtzdGF0aWMgYm9v bCBzZXJpYWw4MjUwX2luKHN0cnVjdCBzZXJpYWw4MjUwX2RldmljZSAqZGV2LCBzdHJ1Y3Qga3Zt X2NwdSAqdmNwdSwKPj4+ICsJCQkgIHUxNiBvZmZzZXQsIHU4ICpkYXRhKQo+Pj4gIHsKPj4+IC0J c3RydWN0IHNlcmlhbDgyNTBfZGV2aWNlICpkZXYgPSBpb3BvcnQtPnByaXY7Cj4+PiAtCXUxNiBv ZmZzZXQ7Cj4+PiAgCWJvb2wgcmV0ID0gdHJ1ZTsKPj4+ICAKPj4+ICAJbXV0ZXhfbG9jaygmZGV2 LT5tdXRleCk7Cj4+PiAgCj4+PiAtCW9mZnNldCA9IHBvcnQgLSBkZXYtPmlvYmFzZTsKPj4+IC0K Pj4+ICAJc3dpdGNoIChvZmZzZXQpIHsKPj4+ICAJY2FzZSBVQVJUX1JYOgo+Pj4gIAkJaWYgKGRl di0+bGNyICYgVUFSVF9MQ1JfRExBQikKPj4+IC0JCQlpb3BvcnRfX3dyaXRlOChkYXRhLCBkZXYt PmRsbCk7Cj4+PiArCQkJKmRhdGEgPSBkZXYtPmRsbDsKPj4+ICAJCWVsc2UKPj4+ICAJCQlzZXJp YWw4MjUwX3J4KGRldiwgZGF0YSk7Cj4+PiAgCQlicmVhazsKPj4+ICAJY2FzZSBVQVJUX0lFUjoK Pj4+ICAJCWlmIChkZXYtPmxjciAmIFVBUlRfTENSX0RMQUIpCj4+PiAtCQkJaW9wb3J0X193cml0 ZTgoZGF0YSwgZGV2LT5kbG0pOwo+Pj4gKwkJCSpkYXRhID0gZGV2LT5kbG07Cj4+PiAgCQllbHNl Cj4+PiAtCQkJaW9wb3J0X193cml0ZTgoZGF0YSwgZGV2LT5pZXIpOwo+Pj4gKwkJCSpkYXRhID0g ZGV2LT5pZXI7Cj4+PiAgCQlicmVhazsKPj4+ICAJY2FzZSBVQVJUX0lJUjoKPj4+IC0JCWlvcG9y dF9fd3JpdGU4KGRhdGEsIGRldi0+aWlyIHwgVUFSVF9JSVJfVFlQRV9CSVRTKTsKPj4+ICsJCSpk YXRhID0gZGV2LT5paXIgfCBVQVJUX0lJUl9UWVBFX0JJVFM7Cj4+PiAgCQlicmVhazsKPj4+ICAJ Y2FzZSBVQVJUX0xDUjoKPj4+IC0JCWlvcG9ydF9fd3JpdGU4KGRhdGEsIGRldi0+bGNyKTsKPj4+ ICsJCSpkYXRhID0gZGV2LT5sY3I7Cj4+PiAgCQlicmVhazsKPj4+ICAJY2FzZSBVQVJUX01DUjoK Pj4+IC0JCWlvcG9ydF9fd3JpdGU4KGRhdGEsIGRldi0+bWNyKTsKPj4+ICsJCSpkYXRhID0gZGV2 LT5tY3I7Cj4+PiAgCQlicmVhazsKPj4+ICAJY2FzZSBVQVJUX0xTUjoKPj4+IC0JCWlvcG9ydF9f d3JpdGU4KGRhdGEsIGRldi0+bHNyKTsKPj4+ICsJCSpkYXRhID0gZGV2LT5sc3I7Cj4+PiAgCQli cmVhazsKPj4+ICAJY2FzZSBVQVJUX01TUjoKPj4+IC0JCWlvcG9ydF9fd3JpdGU4KGRhdGEsIGRl di0+bXNyKTsKPj4+ICsJCSpkYXRhID0gZGV2LT5tc3I7Cj4+PiAgCQlicmVhazsKPj4+ICAJY2Fz ZSBVQVJUX1NDUjoKPj4+IC0JCWlvcG9ydF9fd3JpdGU4KGRhdGEsIGRldi0+c2NyKTsKPj4+ICsJ CSpkYXRhID0gZGV2LT5zY3I7Cj4+PiAgCQlicmVhazsKPj4+ICAJZGVmYXVsdDoKPj4+ICAJCXJl dCA9IGZhbHNlOwo+Pj4gQEAgLTM4OSw2ICszODEsNDcgQEAgc3RhdGljIGJvb2wgc2VyaWFsODI1 MF9pbihzdHJ1Y3QgaW9wb3J0ICppb3BvcnQsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1MTYgcG9y dCwKPj4+ICAJcmV0dXJuIHJldDsKPj4+ICB9Cj4+PiAgCj4+PiArc3RhdGljIHZvaWQgc2VyaWFs ODI1MF9tbWlvKHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1NjQgYWRkciwgdTggKmRhdGEsIHUzMiBs ZW4sCj4+PiArCQkJICAgIHU4IGlzX3dyaXRlLCB2b2lkICpwdHIpCj4+PiArewo+Pj4gKwlzdHJ1 Y3Qgc2VyaWFsODI1MF9kZXZpY2UgKmRldiA9IHB0cjsKPj4+ICsJdTggdmFsdWUgPSAwOwo+Pj4g Kwo+Pj4gKwlpZiAoaXNfd3JpdGUpIHsKPj4+ICsJCSB2YWx1ZSA9ICpkYXRhOyAgCj4+IEV4dHJh IHNwYWNlIGJlZm9yZSB2YWx1ZS4KPj4KPj4+ICsKPj4+ICsJCXNlcmlhbDgyNTBfb3V0KGRldiwg dmNwdSwgYWRkciAtIGRldi0+aW9iYXNlLCB2YWx1ZSk7Cj4+PiArCX0gZWxzZSB7Cj4+PiArCQlp ZiAoc2VyaWFsODI1MF9pbihkZXYsIHZjcHUsIGFkZHIgLSBkZXYtPmlvYmFzZSwgJnZhbHVlKSkK Pj4+ICsJCQkqZGF0YSA9IHZhbHVlOwo+Pj4gKwl9Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBi b29sIHNlcmlhbDgyNTBfaW9wb3J0X291dChzdHJ1Y3QgaW9wb3J0ICppb3BvcnQsIHN0cnVjdCBr dm1fY3B1ICp2Y3B1LAo+Pj4gKwkJCQkgIHUxNiBwb3J0LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkK Pj4+ICt7Cj4+PiArCXN0cnVjdCBzZXJpYWw4MjUwX2RldmljZSAqZGV2ID0gaW9wb3J0LT5wcml2 Owo+Pj4gKwl1OCB2YWx1ZSA9IGlvcG9ydF9fcmVhZDgoZGF0YSk7Cj4+PiArCj4+PiArCXNlcmlh bDgyNTBfbW1pbyh2Y3B1LCBwb3J0LCAmdmFsdWUsIDEsIHRydWUsIGRldik7Cj4+PiArCj4+PiAr CXJldHVybiB0cnVlOwo+Pj4gK30KPj4+ICsKPj4+ICtzdGF0aWMgYm9vbCBzZXJpYWw4MjUwX2lv cG9ydF9pbihzdHJ1Y3QgaW9wb3J0ICppb3BvcnQsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LAo+Pj4g KwkJCQkgdTE2IHBvcnQsIHZvaWQgKmRhdGEsIGludCBzaXplKQo+Pj4gK3sKPj4+ICsJc3RydWN0 IHNlcmlhbDgyNTBfZGV2aWNlICpkZXYgPSBpb3BvcnQtPnByaXY7Cj4+PiArCXU4IHZhbHVlID0g MDsKPj4+ICsKPj4+ICsKPj4+ICsJc2VyaWFsODI1MF9tbWlvKHZjcHUsIHBvcnQsICZ2YWx1ZSwg MSwgZmFsc2UsIGRldik7Cj4+PiArCj4+PiArCWlvcG9ydF9fd3JpdGU4KGRhdGEsIHZhbHVlKTsg IAo+PiBUaGlzIGlzIGNvcnJlY3QsIGJ1dCBjb25mdXNpbmcuIFlvdSBwYXNzIHRoZSBhZGRyZXNz IG9mIGEgbG9jYWwgdmFyaWFibGUgYXMgKmRhdGEKPj4gdG8gc2VyaWFsODI1MF9tbWlvLCBzZXJp YWw4MjUwX21taW8gY29uZGl0aW9uYWxseSB1cGRhdGVzIHRoZSB2YWx1ZSBhdCBkYXRhICh3aGlj aAo+PiBpcyAmdmFsdWUgZnJvbSBoZXJlKSwgYW5kIHRoZW4gaGVyZSB3ZSB1cGRhdGUgdGhlICpk YXRhIHVuY29uZGl0aW9uYWxseS4gV2h5IG5vdAo+PiBwYXNzIGRhdGEgZGlyZWN0bHkgdG8gc2Vy aWFsODI1MF9tbWlvIGFuZCBza2lwIHRoZSBsb2NhbCB2YXJpYWJsZT8gQW0gSSBtaXNzaW5nCj4+ IHNvbWV0aGluZz8KPiBUaGUgaWRlYSBpcyB0byBrZWVwIHRoZSBhYnN0cmFjdGlvbiBvZiBpb3Bv cnRfX3dyaXRlPHg+LiBJIGFncmVlIHRoaXMKPiBpcyBzb21ld2hhdCBwb2ludGxlc3MgZm9yIGEg c2luZ2xlIGJ5dGUgd3JpdGUsIHNpbmNlIHRoZSBwdXJwb3NlIG9mCj4gdGhvc2Ugd3JhcHBlcnMg aXMgdG8gZGVhbCB3aXRoIGVuZGlhbm5lc3MsIGJ1dCBpdCBzZWVtcyBuaWNlIHRvIHVzZQo+IHRo YXQgYW55d2F5LCBhbnl3aGVyZSwgaW4gY2FzZSB3ZSBuZWVkIHRvIGFkZCBzb21ldGhpbmcgdG8g dGhlIHdyYXBwZXJzCj4gYXQgc29tZSBwb2ludC4KCldoYXQgSSB3YXMgdGhpbmtpbmcgd2FzIHNv bWV0aGluZyBsaWtlIHRoaXM6CgpAQCAtMzg1LDI1ICszODYsMTkgQEAgc3RhdGljIHZvaWQgc2Vy aWFsODI1MF9tbWlvKHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1NjQgYWRkciwKdTggKmRhdGEsIHUz MiBsZW4sCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB1OCBpc193cml0ZSwgdm9pZCAqcHRyKQrCoHsKwqDCoMKgwqDCoMKgwqAgc3RydWN0IHNl cmlhbDgyNTBfZGV2aWNlICpkZXYgPSBwdHI7Ci3CoMKgwqDCoMKgwqAgdTggdmFsdWUgPSAwOwrC oAotwqDCoMKgwqDCoMKgIGlmIChpc193cml0ZSkgewotwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHZhbHVlID0gKmRhdGE7Ci0KLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2Vy aWFsODI1MF9vdXQoZGV2LCB2Y3B1LCBhZGRyIC0gZGV2LT5pb2Jhc2UsIHZhbHVlKTsKLcKgwqDC oMKgwqDCoCB9IGVsc2UgewotwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc2VyaWFs ODI1MF9pbihkZXYsIHZjcHUsIGFkZHIgLSBkZXYtPmlvYmFzZSwgJnZhbHVlKSkKLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpkYXRhID0gdmFsdWU7Ci3CoMKg wqDCoMKgwqAgfQorwqDCoMKgwqDCoMKgIGlmIChpc193cml0ZSkKK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc2VyaWFsODI1MF9vdXQoZGV2LCB2Y3B1LCBhZGRyIC0gZGV2LT5pb2Jhc2Us IGRhdGEpOworwqDCoMKgwqDCoMKgIGVsc2UKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c2VyaWFsODI1MF9pbihkZXYsIHZjcHUsIGFkZHIgLSBkZXYtPmlvYmFzZSwgZGF0YSk7CsKgfQrC oArCoHN0YXRpYyBib29sIHNlcmlhbDgyNTBfaW9wb3J0X291dChzdHJ1Y3QgaW9wb3J0ICppb3Bv cnQsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTE2IHBvcnQsIHZvaWQgKmRhdGEs IGludCBzaXplKQrCoHsKwqDCoMKgwqDCoMKgwqAgc3RydWN0IHNlcmlhbDgyNTBfZGV2aWNlICpk ZXYgPSBpb3BvcnQtPnByaXY7Ci3CoMKgwqDCoMKgwqAgdTggdmFsdWUgPSBpb3BvcnRfX3JlYWQ4 KGRhdGEpOwrCoAotwqDCoMKgwqDCoMKgIHNlcmlhbDgyNTBfbW1pbyh2Y3B1LCBwb3J0LCAmdmFs dWUsIDEsIHRydWUsIGRldik7CivCoMKgwqDCoMKgwqAgc2VyaWFsODI1MF9tbWlvKHZjcHUsIHBv cnQsIGRhdGEsIDEsIHRydWUsIGRldik7CsKgCsKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwrC oH0KQEAgLTQxMiwxMiArNDA3LDggQEAgc3RhdGljIGJvb2wgc2VyaWFsODI1MF9pb3BvcnRfaW4o c3RydWN0IGlvcG9ydCAqaW9wb3J0LApzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwKwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MTYg cG9ydCwgdm9pZCAqZGF0YSwgaW50IHNpemUpCsKgewrCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2Vy aWFsODI1MF9kZXZpY2UgKmRldiA9IGlvcG9ydC0+cHJpdjsKLcKgwqDCoMKgwqDCoCB1OCB2YWx1 ZSA9IDA7Ci0KLQotwqDCoMKgwqDCoMKgIHNlcmlhbDgyNTBfbW1pbyh2Y3B1LCBwb3J0LCAmdmFs dWUsIDEsIGZhbHNlLCBkZXYpOwrCoAotwqDCoMKgwqDCoMKgIGlvcG9ydF9fd3JpdGU4KGRhdGEs IHZhbHVlKTsKK8KgwqDCoMKgwqDCoCBzZXJpYWw4MjUwX21taW8odmNwdSwgcG9ydCwgZGF0YSwg MSwgZmFsc2UsIGRldik7CsKgCsKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwrCoH0KCkFuZCB0 aGUgaW9wb3J0X3tyZWFkLHdyaXRlfTggZnVuY3Rpb24gd2lsbCB1c2VkIGluc2lkZSB0aGUgc2Vy aWFsODI1MF97b3V0LGlufQpmdW5jdGlvbnMsIGxpa2UgdGhleSB3ZXJlIGJlZm9yZSB0aGlzIHBh dGNoLCB3aGljaCBzaG91bGQgYWxzbyBtYWtlIHRoZSBkaWZmCnNtYWxsZXIuIE9yIGlzIHRoZXJl IHNvbWV0aGluZyB0aGF0IEknbSBtaXNzaW5nIHdoaWNoIG1ha2VzIHRoaXMgdW5mZWFzaWJsZT8K ClRoYW5rcywKCkFsZXgKCj4gaW9wb3J0X193cml0ZTgoKSBpcyBhIHN0YXRpYyBpbmxpbmUgaW4g YSBoZWFkZXIgZmlsZSwgc28gaXQgc2hvdWxkbid0Cj4gcmVhbGx5IGh1cnQsIHRoZSBjb21waWxl ciBpcyBhYmxlIHRvIHNlZSB0aHJvdWdoIGl0LiBUaGUgZ2VuZXJhdGVkIGNvZGUKPiBpcyBhbG1v c3QgdGhlIHNhbWUsIGF0IGxlYXN0Lgo+Cj4gTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmshCj4K PiBDaGVlcnMsCj4gQW5kcmUKPgo+Pj4gKwo+Pj4gKwlyZXR1cm4gdHJ1ZTsKPj4+ICt9Cj4+PiAr Cj4+PiAgI2lmZGVmIENPTkZJR19IQVNfTElCRkRUCj4+PiAgCj4+PiAgY2hhciAqZmR0X3N0ZG91 dF9wYXRoID0gTlVMTDsKPj4+IEBAIC00MjcsOCArNDYwLDggQEAgdm9pZCBzZXJpYWw4MjUwX2dl bmVyYXRlX2ZkdF9ub2RlKHZvaWQgKmZkdCwgc3RydWN0IGRldmljZV9oZWFkZXIgKmRldl9oZHIs Cj4+PiAgI2VuZGlmCj4+PiAgCj4+PiAgc3RhdGljIHN0cnVjdCBpb3BvcnRfb3BlcmF0aW9ucyBz ZXJpYWw4MjUwX29wcyA9IHsKPj4+IC0JLmlvX2luCQkJPSBzZXJpYWw4MjUwX2luLAo+Pj4gLQku aW9fb3V0CQkJPSBzZXJpYWw4MjUwX291dCwKPj4+ICsJLmlvX2luCQkJPSBzZXJpYWw4MjUwX2lv cG9ydF9pbiwKPj4+ICsJLmlvX291dAkJCT0gc2VyaWFsODI1MF9pb3BvcnRfb3V0LAo+Pj4gIH07 Cj4+PiAgCj4+PiAgc3RhdGljIGludCBzZXJpYWw4MjUwX19kZXZpY2VfaW5pdChzdHJ1Y3Qga3Zt ICprdm0sICAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK