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=-15.2 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,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_2 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 924B4C433E9 for ; Wed, 24 Feb 2021 14:56:52 +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 2438464E4B for ; Wed, 24 Feb 2021 14:56:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2438464E4B 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:MIME-Version:References:In-Reply-To:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=7OqMrP4QI5PrGsymSGgLViP/7aV7G7DE4FlwqjQi7+8=; b=OKAMIxplWeDng4zFlHSVkYGW7 Om7U22hpknFkUIAxaugMa45oO/4EIYTGDY+CQSGmWq2X/a6Db2YZ/LIcGUp3mRq+hMc+x8JcBnm7b 8tG7Td4RnLXiUm8eJLwqFvxVcccnB65bUHmV1NvJY2gTbxn0ffdgdPbJRDnIZ+N9o1auuDiWdRu+P c1WDkdFJ7swQDGqUubti52Zg8fH/rwoyhrl7bAS9kMz7s9kc+xAZWhpCn91YlhZCOTSsEWGjJIgaw YEJSUfuX6Bdzjc6CNBPaJYmPtpTOD6DgUhEE5b7sJDeVs9lO7gptwNO3x2D6loCRVrbNLPYaWfyJk B2opO9fHw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEvZf-0005wt-OV; Wed, 24 Feb 2021 14:55:35 +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 1lEvZc-0005wV-93 for linux-arm-kernel@lists.infradead.org; Wed, 24 Feb 2021 14:55:33 +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 14F15101E; Wed, 24 Feb 2021 06:55:25 -0800 (PST) Received: from slackpad.fritz.box (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D28A53F70D; Wed, 24 Feb 2021 06:55:23 -0800 (PST) Date: Wed, 24 Feb 2021 14:54:22 +0000 From: Andre Przywara To: Alexandru Elisei Subject: Re: [PATCH kvmtool 13/21] hw/serial: Refactor trap handler Message-ID: <20210224145422.6bfd0ff2@slackpad.fritz.box> In-Reply-To: <85c714de-edb8-666d-49be-90539e347e30@arm.com> 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> <85c714de-edb8-666d-49be-90539e347e30@arm.com> Organization: Arm Ltd. X-Mailer: Claws Mail 3.17.1 (GTK+ 2.24.31; x86_64-slackware-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210224_095532_453772_8ABBA097 X-CRM114-Status: GOOD ( 37.91 ) 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 T24gTW9uLCAyMiBGZWIgMjAyMSAxNzo0MDozNiArMDAwMApBbGV4YW5kcnUgRWxpc2VpIDxhbGV4 YW5kcnUuZWxpc2VpQGFybS5jb20+IHdyb3RlOgoKSGkgQWxleCwKCj4gT24gMi8xOC8yMSAyOjQx IFBNLCBBbmRyZSBQcnp5d2FyYSB3cm90ZToKPiA+IE9uIFR1ZSwgMTYgRmViIDIwMjEgMTQ6MjI6 MDUgKzAwMDAKPiA+IEFsZXhhbmRydSBFbGlzZWkgPGFsZXhhbmRydS5lbGlzZWlAYXJtLmNvbT4g d3JvdGU6Cj4gPiAgCj4gPj4gSGkgQW5kcmUsCj4gPj4KPiA+PiBQYXRjaCBsb29rcyBnb29kLCBu aXRwaWNrcyBiZWxvdy4KPiA+Pgo+ID4+IE9uIDEyLzEwLzIwIDI6MjkgUE0sIEFuZHJlIFByenl3 YXJhIHdyb3RlOiAgCj4gPj4+IFdpdGggdGhlIHBsYW5uZWQgcmV0aXJlbWVudCBvZiB0aGUgc3Bl Y2lhbCBpb3BvcnQgZW11bGF0aW9uIGNvZGUsIHdlCj4gPj4+IG5lZWQgdG8gcHJvdmlkZSBhbiBl bXVsYXRpb24gZnVuY3Rpb24gY29tcGF0aWJsZSB3aXRoIHRoZSBNTUlPIHByb3RvdHlwZS4KPiA+ Pj4KPiA+Pj4gQWRqdXN0IHRoZSB0cmFwIGhhbmRsZXIgdG8gdXNlIHRoYXQgbmV3IGZ1bmN0aW9u LCBhbmQgcHJvdmlkZSBzaGltcyB0bwo+ID4+PiBpbXBsZW1lbnQgdGhlIG9sZCBpb3BvcnQgaW50 ZXJmYWNlLCBmb3Igbm93Lgo+ID4+Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBQcnp5d2Fy YSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KPiA+Pj4gLS0tCj4gPj4+ICBody9zZXJpYWwuYyB8 IDk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t Cj4gPj4+ICAxIGZpbGUgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0p Cj4gPj4+Cj4gPj4+IGRpZmYgLS1naXQgYS9ody9zZXJpYWwuYyBiL2h3L3NlcmlhbC5jCj4gPj4+ IGluZGV4IGIwNDY1ZDk5Li4yOTA3MDg5YyAxMDA2NDQKPiA+Pj4gLS0tIGEvaHcvc2VyaWFsLmMK PiA+Pj4gKysrIGIvaHcvc2VyaWFsLmMKPiA+Pj4gQEAgLTI0MiwzNiArMjQyLDMxIEBAIHZvaWQg c2VyaWFsODI1MF9faW5qZWN0X3N5c3JxKHN0cnVjdCBrdm0gKmt2bSwgY2hhciBzeXNycSkKPiA+ Pj4gIAlzeXNycV9wZW5kaW5nID0gc3lzcnE7Cj4gPj4+ICB9Cj4gPj4+ICAKPiA+Pj4gLXN0YXRp YyBib29sIHNlcmlhbDgyNTBfb3V0KHN0cnVjdCBpb3BvcnQgKmlvcG9ydCwgc3RydWN0IGt2bV9j cHUgKnZjcHUsIHUxNiBwb3J0LAo+ID4+PiAtCQkJICAgdm9pZCAqZGF0YSwgaW50IHNpemUpCj4g Pj4+ICtzdGF0aWMgYm9vbCBzZXJpYWw4MjUwX291dChzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZpY2Ug KmRldiwgc3RydWN0IGt2bV9jcHUgKnZjcHUsCj4gPj4+ICsJCQkgICB1MTYgb2Zmc2V0LCB1OCBk YXRhKQo+ID4+PiAgewo+ID4+PiAtCXN0cnVjdCBzZXJpYWw4MjUwX2RldmljZSAqZGV2ID0gaW9w b3J0LT5wcml2Owo+ID4+PiAtCXUxNiBvZmZzZXQ7Cj4gPj4+ICAJYm9vbCByZXQgPSB0cnVlOwo+ ID4+PiAtCWNoYXIgKmFkZHIgPSBkYXRhOwo+ID4+PiAgCj4gPj4+ICAJbXV0ZXhfbG9jaygmZGV2 LT5tdXRleCk7Cj4gPj4+ICAKPiA+Pj4gLQlvZmZzZXQgPSBwb3J0IC0gZGV2LT5pb2Jhc2U7Cj4g Pj4+IC0KPiA+Pj4gIAlzd2l0Y2ggKG9mZnNldCkgewo+ID4+PiAgCWNhc2UgVUFSVF9UWDoKPiA+ Pj4gIAkJaWYgKGRldi0+bGNyICYgVUFSVF9MQ1JfRExBQikgewo+ID4+PiAtCQkJZGV2LT5kbGwg PSBpb3BvcnRfX3JlYWQ4KGRhdGEpOwo+ID4+PiArCQkJZGV2LT5kbGwgPSBkYXRhOwo+ID4+PiAg CQkJYnJlYWs7Cj4gPj4+ICAJCX0KPiA+Pj4gIAo+ID4+PiAgCQkvKiBMb29wYmFjayBtb2RlICov Cj4gPj4+ICAJCWlmIChkZXYtPm1jciAmIFVBUlRfTUNSX0xPT1ApIHsKPiA+Pj4gIAkJCWlmIChk ZXYtPnJ4Y250IDwgRklGT19MRU4pIHsKPiA+Pj4gLQkJCQlkZXYtPnJ4YnVmW2Rldi0+cnhjbnQr K10gPSAqYWRkcjsKPiA+Pj4gKwkJCQlkZXYtPnJ4YnVmW2Rldi0+cnhjbnQrK10gPSBkYXRhOwo+ ID4+PiAgCQkJCWRldi0+bHNyIHw9IFVBUlRfTFNSX0RSOwo+ID4+PiAgCQkJfQo+ID4+PiAgCQkJ YnJlYWs7Cj4gPj4+ICAJCX0KPiA+Pj4gIAo+ID4+PiAgCQlpZiAoZGV2LT50eGNudCA8IEZJRk9f TEVOKSB7Cj4gPj4+IC0JCQlkZXYtPnR4YnVmW2Rldi0+dHhjbnQrK10gPSAqYWRkcjsKPiA+Pj4g KwkJCWRldi0+dHhidWZbZGV2LT50eGNudCsrXSA9IGRhdGE7Cj4gPj4+ICAJCQlkZXYtPmxzciAm PSB+VUFSVF9MU1JfVEVNVDsKPiA+Pj4gIAkJCWlmIChkZXYtPnR4Y250ID09IEZJRk9fTEVOIC8g MikKPiA+Pj4gIAkJCQlkZXYtPmxzciAmPSB+VUFSVF9MU1JfVEhSRTsKPiA+Pj4gQEAgLTI4Mywx OCArMjc4LDE4IEBAIHN0YXRpYyBib29sIHNlcmlhbDgyNTBfb3V0KHN0cnVjdCBpb3BvcnQgKmlv cG9ydCwgc3RydWN0IGt2bV9jcHUgKnZjcHUsIHUxNiBwb3J0Cj4gPj4+ICAJCWJyZWFrOwo+ID4+ PiAgCWNhc2UgVUFSVF9JRVI6Cj4gPj4+ICAJCWlmICghKGRldi0+bGNyICYgVUFSVF9MQ1JfRExB QikpCj4gPj4+IC0JCQlkZXYtPmllciA9IGlvcG9ydF9fcmVhZDgoZGF0YSkgJiAweDBmOwo+ID4+ PiArCQkJZGV2LT5pZXIgPSBkYXRhICYgMHgwZjsKPiA+Pj4gIAkJZWxzZQo+ID4+PiAtCQkJZGV2 LT5kbG0gPSBpb3BvcnRfX3JlYWQ4KGRhdGEpOwo+ID4+PiArCQkJZGV2LT5kbG0gPSBkYXRhOwo+ ID4+PiAgCQlicmVhazsKPiA+Pj4gIAljYXNlIFVBUlRfRkNSOgo+ID4+PiAtCQlkZXYtPmZjciA9 IGlvcG9ydF9fcmVhZDgoZGF0YSk7Cj4gPj4+ICsJCWRldi0+ZmNyID0gZGF0YTsKPiA+Pj4gIAkJ YnJlYWs7Cj4gPj4+ICAJY2FzZSBVQVJUX0xDUjoKPiA+Pj4gLQkJZGV2LT5sY3IgPSBpb3BvcnRf X3JlYWQ4KGRhdGEpOwo+ID4+PiArCQlkZXYtPmxjciA9IGRhdGE7Cj4gPj4+ICAJCWJyZWFrOwo+ ID4+PiAgCWNhc2UgVUFSVF9NQ1I6Cj4gPj4+IC0JCWRldi0+bWNyID0gaW9wb3J0X19yZWFkOChk YXRhKTsKPiA+Pj4gKwkJZGV2LT5tY3IgPSBkYXRhOwo+ID4+PiAgCQlicmVhazsKPiA+Pj4gIAlj YXNlIFVBUlRfTFNSOgo+ID4+PiAgCQkvKiBGYWN0b3J5IHRlc3QgKi8KPiA+Pj4gQEAgLTMwMyw3 ICsyOTgsNyBAQCBzdGF0aWMgYm9vbCBzZXJpYWw4MjUwX291dChzdHJ1Y3QgaW9wb3J0ICppb3Bv cnQsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1MTYgcG9ydAo+ID4+PiAgCQkvKiBOb3QgdXNlZCAq Lwo+ID4+PiAgCQlicmVhazsKPiA+Pj4gIAljYXNlIFVBUlRfU0NSOgo+ID4+PiAtCQlkZXYtPnNj ciA9IGlvcG9ydF9fcmVhZDgoZGF0YSk7Cj4gPj4+ICsJCWRldi0+c2NyID0gZGF0YTsKPiA+Pj4g IAkJYnJlYWs7Cj4gPj4+ICAJZGVmYXVsdDoKPiA+Pj4gIAkJcmV0ID0gZmFsc2U7Cj4gPj4+IEBA IC0zMzYsNDYgKzMzMSw0MyBAQCBzdGF0aWMgdm9pZCBzZXJpYWw4MjUwX3J4KHN0cnVjdCBzZXJp YWw4MjUwX2RldmljZSAqZGV2LCB2b2lkICpkYXRhKQo+ID4+PiAgCX0KPiA+Pj4gIH0KPiA+Pj4g IAo+ID4+PiAtc3RhdGljIGJvb2wgc2VyaWFsODI1MF9pbihzdHJ1Y3QgaW9wb3J0ICppb3BvcnQs IHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1MTYgcG9ydCwgdm9pZCAqZGF0YSwgaW50IHNpemUpCj4g Pj4+ICtzdGF0aWMgYm9vbCBzZXJpYWw4MjUwX2luKHN0cnVjdCBzZXJpYWw4MjUwX2RldmljZSAq ZGV2LCBzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwKPiA+Pj4gKwkJCSAgdTE2IG9mZnNldCwgdTggKmRh dGEpCj4gPj4+ICB7Cj4gPj4+IC0Jc3RydWN0IHNlcmlhbDgyNTBfZGV2aWNlICpkZXYgPSBpb3Bv cnQtPnByaXY7Cj4gPj4+IC0JdTE2IG9mZnNldDsKPiA+Pj4gIAlib29sIHJldCA9IHRydWU7Cj4g Pj4+ICAKPiA+Pj4gIAltdXRleF9sb2NrKCZkZXYtPm11dGV4KTsKPiA+Pj4gIAo+ID4+PiAtCW9m ZnNldCA9IHBvcnQgLSBkZXYtPmlvYmFzZTsKPiA+Pj4gLQo+ID4+PiAgCXN3aXRjaCAob2Zmc2V0 KSB7Cj4gPj4+ICAJY2FzZSBVQVJUX1JYOgo+ID4+PiAgCQlpZiAoZGV2LT5sY3IgJiBVQVJUX0xD Ul9ETEFCKQo+ID4+PiAtCQkJaW9wb3J0X193cml0ZTgoZGF0YSwgZGV2LT5kbGwpOwo+ID4+PiAr CQkJKmRhdGEgPSBkZXYtPmRsbDsKPiA+Pj4gIAkJZWxzZQo+ID4+PiAgCQkJc2VyaWFsODI1MF9y eChkZXYsIGRhdGEpOwo+ID4+PiAgCQlicmVhazsKPiA+Pj4gIAljYXNlIFVBUlRfSUVSOgo+ID4+ PiAgCQlpZiAoZGV2LT5sY3IgJiBVQVJUX0xDUl9ETEFCKQo+ID4+PiAtCQkJaW9wb3J0X193cml0 ZTgoZGF0YSwgZGV2LT5kbG0pOwo+ID4+PiArCQkJKmRhdGEgPSBkZXYtPmRsbTsKPiA+Pj4gIAkJ ZWxzZQo+ID4+PiAtCQkJaW9wb3J0X193cml0ZTgoZGF0YSwgZGV2LT5pZXIpOwo+ID4+PiArCQkJ KmRhdGEgPSBkZXYtPmllcjsKPiA+Pj4gIAkJYnJlYWs7Cj4gPj4+ICAJY2FzZSBVQVJUX0lJUjoK PiA+Pj4gLQkJaW9wb3J0X193cml0ZTgoZGF0YSwgZGV2LT5paXIgfCBVQVJUX0lJUl9UWVBFX0JJ VFMpOwo+ID4+PiArCQkqZGF0YSA9IGRldi0+aWlyIHwgVUFSVF9JSVJfVFlQRV9CSVRTOwo+ID4+ PiAgCQlicmVhazsKPiA+Pj4gIAljYXNlIFVBUlRfTENSOgo+ID4+PiAtCQlpb3BvcnRfX3dyaXRl OChkYXRhLCBkZXYtPmxjcik7Cj4gPj4+ICsJCSpkYXRhID0gZGV2LT5sY3I7Cj4gPj4+ICAJCWJy ZWFrOwo+ID4+PiAgCWNhc2UgVUFSVF9NQ1I6Cj4gPj4+IC0JCWlvcG9ydF9fd3JpdGU4KGRhdGEs IGRldi0+bWNyKTsKPiA+Pj4gKwkJKmRhdGEgPSBkZXYtPm1jcjsKPiA+Pj4gIAkJYnJlYWs7Cj4g Pj4+ICAJY2FzZSBVQVJUX0xTUjoKPiA+Pj4gLQkJaW9wb3J0X193cml0ZTgoZGF0YSwgZGV2LT5s c3IpOwo+ID4+PiArCQkqZGF0YSA9IGRldi0+bHNyOwo+ID4+PiAgCQlicmVhazsKPiA+Pj4gIAlj YXNlIFVBUlRfTVNSOgo+ID4+PiAtCQlpb3BvcnRfX3dyaXRlOChkYXRhLCBkZXYtPm1zcik7Cj4g Pj4+ICsJCSpkYXRhID0gZGV2LT5tc3I7Cj4gPj4+ICAJCWJyZWFrOwo+ID4+PiAgCWNhc2UgVUFS VF9TQ1I6Cj4gPj4+IC0JCWlvcG9ydF9fd3JpdGU4KGRhdGEsIGRldi0+c2NyKTsKPiA+Pj4gKwkJ KmRhdGEgPSBkZXYtPnNjcjsKPiA+Pj4gIAkJYnJlYWs7Cj4gPj4+ICAJZGVmYXVsdDoKPiA+Pj4g IAkJcmV0ID0gZmFsc2U7Cj4gPj4+IEBAIC0zODksNiArMzgxLDQ3IEBAIHN0YXRpYyBib29sIHNl cmlhbDgyNTBfaW4oc3RydWN0IGlvcG9ydCAqaW9wb3J0LCBzdHJ1Y3Qga3ZtX2NwdSAqdmNwdSwg dTE2IHBvcnQsCj4gPj4+ICAJcmV0dXJuIHJldDsKPiA+Pj4gIH0KPiA+Pj4gIAo+ID4+PiArc3Rh dGljIHZvaWQgc2VyaWFsODI1MF9tbWlvKHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1NjQgYWRkciwg dTggKmRhdGEsIHUzMiBsZW4sCj4gPj4+ICsJCQkgICAgdTggaXNfd3JpdGUsIHZvaWQgKnB0cikK PiA+Pj4gK3sKPiA+Pj4gKwlzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZpY2UgKmRldiA9IHB0cjsKPiA+ Pj4gKwl1OCB2YWx1ZSA9IDA7Cj4gPj4+ICsKPiA+Pj4gKwlpZiAoaXNfd3JpdGUpIHsKPiA+Pj4g KwkJIHZhbHVlID0gKmRhdGE7ICAgIAo+ID4+IEV4dHJhIHNwYWNlIGJlZm9yZSB2YWx1ZS4KPiA+ PiAgCj4gPj4+ICsKPiA+Pj4gKwkJc2VyaWFsODI1MF9vdXQoZGV2LCB2Y3B1LCBhZGRyIC0gZGV2 LT5pb2Jhc2UsIHZhbHVlKTsKPiA+Pj4gKwl9IGVsc2Ugewo+ID4+PiArCQlpZiAoc2VyaWFsODI1 MF9pbihkZXYsIHZjcHUsIGFkZHIgLSBkZXYtPmlvYmFzZSwgJnZhbHVlKSkKPiA+Pj4gKwkJCSpk YXRhID0gdmFsdWU7Cj4gPj4+ICsJfQo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgYm9v bCBzZXJpYWw4MjUwX2lvcG9ydF9vdXQoc3RydWN0IGlvcG9ydCAqaW9wb3J0LCBzdHJ1Y3Qga3Zt X2NwdSAqdmNwdSwKPiA+Pj4gKwkJCQkgIHUxNiBwb3J0LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkK PiA+Pj4gK3sKPiA+Pj4gKwlzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZpY2UgKmRldiA9IGlvcG9ydC0+ cHJpdjsKPiA+Pj4gKwl1OCB2YWx1ZSA9IGlvcG9ydF9fcmVhZDgoZGF0YSk7Cj4gPj4+ICsKPiA+ Pj4gKwlzZXJpYWw4MjUwX21taW8odmNwdSwgcG9ydCwgJnZhbHVlLCAxLCB0cnVlLCBkZXYpOwo+ ID4+PiArCj4gPj4+ICsJcmV0dXJuIHRydWU7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gK3N0YXRp YyBib29sIHNlcmlhbDgyNTBfaW9wb3J0X2luKHN0cnVjdCBpb3BvcnQgKmlvcG9ydCwgc3RydWN0 IGt2bV9jcHUgKnZjcHUsCj4gPj4+ICsJCQkJIHUxNiBwb3J0LCB2b2lkICpkYXRhLCBpbnQgc2l6 ZSkKPiA+Pj4gK3sKPiA+Pj4gKwlzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZpY2UgKmRldiA9IGlvcG9y dC0+cHJpdjsKPiA+Pj4gKwl1OCB2YWx1ZSA9IDA7Cj4gPj4+ICsKPiA+Pj4gKwo+ID4+PiArCXNl cmlhbDgyNTBfbW1pbyh2Y3B1LCBwb3J0LCAmdmFsdWUsIDEsIGZhbHNlLCBkZXYpOwo+ID4+PiAr Cj4gPj4+ICsJaW9wb3J0X193cml0ZTgoZGF0YSwgdmFsdWUpOyAgICAKPiA+PiBUaGlzIGlzIGNv cnJlY3QsIGJ1dCBjb25mdXNpbmcuIFlvdSBwYXNzIHRoZSBhZGRyZXNzIG9mIGEgbG9jYWwgdmFy aWFibGUgYXMgKmRhdGEKPiA+PiB0byBzZXJpYWw4MjUwX21taW8sIHNlcmlhbDgyNTBfbW1pbyBj b25kaXRpb25hbGx5IHVwZGF0ZXMgdGhlIHZhbHVlIGF0IGRhdGEgKHdoaWNoCj4gPj4gaXMgJnZh bHVlIGZyb20gaGVyZSksIGFuZCB0aGVuIGhlcmUgd2UgdXBkYXRlIHRoZSAqZGF0YSB1bmNvbmRp dGlvbmFsbHkuIFdoeSBub3QKPiA+PiBwYXNzIGRhdGEgZGlyZWN0bHkgdG8gc2VyaWFsODI1MF9t bWlvIGFuZCBza2lwIHRoZSBsb2NhbCB2YXJpYWJsZT8gQW0gSSBtaXNzaW5nCj4gPj4gc29tZXRo aW5nPyAgCj4gPiBUaGUgaWRlYSBpcyB0byBrZWVwIHRoZSBhYnN0cmFjdGlvbiBvZiBpb3BvcnRf X3dyaXRlPHg+LiBJIGFncmVlIHRoaXMKPiA+IGlzIHNvbWV3aGF0IHBvaW50bGVzcyBmb3IgYSBz aW5nbGUgYnl0ZSB3cml0ZSwgc2luY2UgdGhlIHB1cnBvc2Ugb2YKPiA+IHRob3NlIHdyYXBwZXJz IGlzIHRvIGRlYWwgd2l0aCBlbmRpYW5uZXNzLCBidXQgaXQgc2VlbXMgbmljZSB0byB1c2UKPiA+ IHRoYXQgYW55d2F5LCBhbnl3aGVyZSwgaW4gY2FzZSB3ZSBuZWVkIHRvIGFkZCBzb21ldGhpbmcg dG8gdGhlIHdyYXBwZXJzCj4gPiBhdCBzb21lIHBvaW50LiAgCj4gCj4gV2hhdCBJIHdhcyB0aGlu a2luZyB3YXMgc29tZXRoaW5nIGxpa2UgdGhpczoKPiAKPiBAQCAtMzg1LDI1ICszODYsMTkgQEAg c3RhdGljIHZvaWQgc2VyaWFsODI1MF9tbWlvKHN0cnVjdCBrdm1fY3B1ICp2Y3B1LCB1NjQgYWRk ciwKPiB1OCAqZGF0YSwgdTMyIGxlbiwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTggaXNfd3JpdGUsIHZvaWQgKnB0cikKPiDCoHsKPiDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZpY2UgKmRldiA9IHB0cjsKPiAtwqDC oMKgwqDCoMKgIHU4IHZhbHVlID0gMDsKPiDCoAo+IC3CoMKgwqDCoMKgwqAgaWYgKGlzX3dyaXRl KSB7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2YWx1ZSA9ICpkYXRhOwo+IC0K PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZXJpYWw4MjUwX291dChkZXYsIHZjcHUs IGFkZHIgLSBkZXYtPmlvYmFzZSwgdmFsdWUpOwo+IC3CoMKgwqDCoMKgwqAgfSBlbHNlIHsKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoc2VyaWFsODI1MF9pbihkZXYsIHZjcHUs IGFkZHIgLSBkZXYtPmlvYmFzZSwgJnZhbHVlKSkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKmRhdGEgPSB2YWx1ZTsKPiAtwqDCoMKgwqDCoMKgIH0KPiAr wqDCoMKgwqDCoMKgIGlmIChpc193cml0ZSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzZXJpYWw4MjUwX291dChkZXYsIHZjcHUsIGFkZHIgLSBkZXYtPmlvYmFzZSwgZGF0YSk7Cj4g K8KgwqDCoMKgwqDCoCBlbHNlCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2VyaWFs ODI1MF9pbihkZXYsIHZjcHUsIGFkZHIgLSBkZXYtPmlvYmFzZSwgZGF0YSk7Cj4gwqB9Cj4gwqAK PiDCoHN0YXRpYyBib29sIHNlcmlhbDgyNTBfaW9wb3J0X291dChzdHJ1Y3QgaW9wb3J0ICppb3Bv cnQsIHN0cnVjdCBrdm1fY3B1ICp2Y3B1LAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MTYgcG9ydCwgdm9pZCAqZGF0 YSwgaW50IHNpemUpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqAgc3RydWN0IHNlcmlhbDgyNTBfZGV2 aWNlICpkZXYgPSBpb3BvcnQtPnByaXY7Cj4gLcKgwqDCoMKgwqDCoCB1OCB2YWx1ZSA9IGlvcG9y dF9fcmVhZDgoZGF0YSk7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgIHNlcmlhbDgyNTBfbW1pbyh2Y3B1 LCBwb3J0LCAmdmFsdWUsIDEsIHRydWUsIGRldik7Cj4gK8KgwqDCoMKgwqDCoCBzZXJpYWw4MjUw X21taW8odmNwdSwgcG9ydCwgZGF0YSwgMSwgdHJ1ZSwgZGV2KTsKPiDCoAo+IMKgwqDCoMKgwqDC oMKgIHJldHVybiB0cnVlOwo+IMKgfQo+IEBAIC00MTIsMTIgKzQwNyw4IEBAIHN0YXRpYyBib29s IHNlcmlhbDgyNTBfaW9wb3J0X2luKHN0cnVjdCBpb3BvcnQgKmlvcG9ydCwKPiBzdHJ1Y3Qga3Zt X2NwdSAqdmNwdSwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUxNiBwb3J0LCB2b2lkICpkYXRhLCBpbnQgc2l6ZSkKPiDC oHsKPiDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgc2VyaWFsODI1MF9kZXZpY2UgKmRldiA9IGlvcG9y dC0+cHJpdjsKPiAtwqDCoMKgwqDCoMKgIHU4IHZhbHVlID0gMDsKPiAtCj4gLQo+IC3CoMKgwqDC oMKgwqAgc2VyaWFsODI1MF9tbWlvKHZjcHUsIHBvcnQsICZ2YWx1ZSwgMSwgZmFsc2UsIGRldik7 Cj4gwqAKPiAtwqDCoMKgwqDCoMKgIGlvcG9ydF9fd3JpdGU4KGRhdGEsIHZhbHVlKTsKPiArwqDC oMKgwqDCoMKgIHNlcmlhbDgyNTBfbW1pbyh2Y3B1LCBwb3J0LCBkYXRhLCAxLCBmYWxzZSwgZGV2 KTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgIHJldHVybiB0cnVlOwo+IMKgfQo+IAo+IEFuZCB0aGUg aW9wb3J0X3tyZWFkLHdyaXRlfTggZnVuY3Rpb24gd2lsbCB1c2VkIGluc2lkZSB0aGUgc2VyaWFs ODI1MF97b3V0LGlufQo+IGZ1bmN0aW9ucywgbGlrZSB0aGV5IHdlcmUgYmVmb3JlIHRoaXMgcGF0 Y2gsIHdoaWNoIHNob3VsZCBhbHNvIG1ha2UgdGhlIGRpZmYKPiBzbWFsbGVyLiBPciBpcyB0aGVy ZSBzb21ldGhpbmcgdGhhdCBJJ20gbWlzc2luZyB3aGljaCBtYWtlcyB0aGlzIHVuZmVhc2libGU/ CgpOb3cgSSByZW1lbWJlciB3aGF0IHRoZSBwcm9ibGVtIHdhczoKVGhlIGNvbW1lbnQgYmVmb3Jl IHRoZSBkZWZpbml0aW9uIG9mIGlvcG9ydF9fcmVhZDE2KCkgc2F5cyB0aGUgUG93ZXJQQwpuZWVk cyB0byBieXRlc3dhcCBzcGVjaWZpY2FsbHkgUENJIHBvcnQgSS9PLCBidXQgYXBwYXJlbnRseSBu b3QgTU1JTy4KU28gSSBtb3ZlZCB0aGUgaW9wb3J0IHdyYXBwZXJzIG91dCBvZiB0aGUgYWN0dWFs IGhhbmRsZXJzLCBhbmQgaW4gKnRoaXMqCnBhdGNoIHRoZXkgYXJlIGp1c3QgaW4gdGhlIFBJTyBw YXRoLCBzbyBtYWtlIGl0IGZpdCBmb3IgYm90aCBraW5kIG9mCnRyYXBzLgpOb3cgd2l0aCBkcm9w cGluZyB0aGUgUElPIHNwZWNpZmljIHBhdGggaW4gdGhlIG5leHQgcGF0Y2ggd2UgbG9zZSB0aGlz CmRpZmZlcmVudGlhdGlvbi4gVGhpcyBpcyBub3QgYSByZWFsIHByb2JsZW0gaGVyZSwgc2luY2Ug YWxsIGFjY2Vzc2VzCmFyZSA4IGJpdCB3aWRlIG9ubHksIHdoaWNoIGRvZXNuJ3QgZG8gYW55dGhp bmcsIHJlYWxseS4KCkkgdGhpbmsgYSBwcm9wZXIgZml4IGZvciB0aGlzIHByb2JsZW0gd291bGQg YmUgdG8gZG8gdGhlIGJ5dGVzd2FwcGluZwoqb25jZSosIHZlcnkgZWFybHkgKHdyaXRlKSBvciBs YXRlIChyZWFkKSBpbiB0aGUgS1ZNX1JVTgpleGl0IGhhbmRsaW5nLCBvciBpbiB0aGUga3ZtX19l bXVsYXRlX2lvKCkgZnVuY3Rpb24uIFNvIHRoYXQgdGhlCndob2xlIGRldmljZSBlbXVsYXRpb24g YWx3YXlzIHdvcmtzIGluIG5hdGl2ZSBlbmRpYW5uZXNzLCBhbmQgY2FuIHVzZQpwb2ludGVycyBh dCB3aWxsLiBCdXQgdGhpcyB3b3VsZCBvYnZpb3VzbHkgYmUgYW5vdGhlciBwYXRjaC4KClNvIGlu IHByZXBhcmF0aW9uIGZvciB0aGlzIEkgY291bGQgZHJvcCBhbGwgdXNhZ2Ugb2YKaW9wb3J0X197 cmVhZCx3cml0ZX04IGZyb20gdGhpcyBmaWxlLCBhbmQgdXNlIHBvaW50ZXJzIGFsbCB0aGUgd2F5 LgpUaGF0IHdvdWxkbid0IGNoYW5nZSBhbnl0aGluZyAoc2luY2UgaXQncyBieXRlIGFjY2Vzc2Vz IG9ubHkgYW55d2F5KSwKYnV0IHdvdWxkIGFscmVhZHkgcHJlcGFyZSBmb3IgdGhpcyBtb3ZlLgoK V2hhdCBkbyB5b3UgdGhpbms/CgpDaGVlcnMsCkFuZHJlCgo+ID4gaW9wb3J0X193cml0ZTgoKSBp cyBhIHN0YXRpYyBpbmxpbmUgaW4gYSBoZWFkZXIgZmlsZSwgc28gaXQgc2hvdWxkbid0Cj4gPiBy ZWFsbHkgaHVydCwgdGhlIGNvbXBpbGVyIGlzIGFibGUgdG8gc2VlIHRocm91Z2ggaXQuIFRoZSBn ZW5lcmF0ZWQgY29kZQo+ID4gaXMgYWxtb3N0IHRoZSBzYW1lLCBhdCBsZWFzdC4KPiA+Cj4gPiBM ZXQgbWUga25vdyB3aGF0IHlvdSB0aGluayEKPiA+Cj4gPiBDaGVlcnMsCj4gPiBBbmRyZQo+ID4g IAo+ID4+PiArCj4gPj4+ICsJcmV0dXJuIHRydWU7Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+Pj4gICNp ZmRlZiBDT05GSUdfSEFTX0xJQkZEVAo+ID4+PiAgCj4gPj4+ICBjaGFyICpmZHRfc3Rkb3V0X3Bh dGggPSBOVUxMOwo+ID4+PiBAQCAtNDI3LDggKzQ2MCw4IEBAIHZvaWQgc2VyaWFsODI1MF9nZW5l cmF0ZV9mZHRfbm9kZSh2b2lkICpmZHQsIHN0cnVjdCBkZXZpY2VfaGVhZGVyICpkZXZfaGRyLAo+ ID4+PiAgI2VuZGlmCj4gPj4+ICAKPiA+Pj4gIHN0YXRpYyBzdHJ1Y3QgaW9wb3J0X29wZXJhdGlv bnMgc2VyaWFsODI1MF9vcHMgPSB7Cj4gPj4+IC0JLmlvX2luCQkJPSBzZXJpYWw4MjUwX2luLAo+ ID4+PiAtCS5pb19vdXQJCQk9IHNlcmlhbDgyNTBfb3V0LAo+ID4+PiArCS5pb19pbgkJCT0gc2Vy aWFsODI1MF9pb3BvcnRfaW4sCj4gPj4+ICsJLmlvX291dAkJCT0gc2VyaWFsODI1MF9pb3BvcnRf b3V0LAo+ID4+PiAgfTsKPiA+Pj4gIAo+ID4+PiAgc3RhdGljIGludCBzZXJpYWw4MjUwX19kZXZp Y2VfaW5pdChzdHJ1Y3Qga3ZtICprdm0sICAgIAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK