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=-8.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_MUTT autolearn=ham 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 AFEE5C07E85 for ; Tue, 11 Dec 2018 08:31:03 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 780CD2082F for ; Tue, 11 Dec 2018 08:31:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="UbU/eub5" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 780CD2082F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.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:References: 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=ciSggjbiJtWXnlxiRbVEwT0jprm/+EpMgUt4a7ylNcY=; b=UbU/eub5TM5k1c MtPMQT6owUXmswUWNFx8Cg77boxH+TXt8svxAFdT9zTFwaw7UT4zLN5JHEizRxlsTdMiKtjRS+B0B EcIA/b9q9TZPPT3SSuxJ7kmr7sU+93PPS9+PB0sNBfpOUNJd/Jo/keW3QIdAQF9oPdUYQv22LjaOX i/QLGaCi10NlPaOe7JIMqaZOFHwnp9/KfLebaAAo1Z4YgTOpeBTnf67VbJslBYKh37UE1+1LAllBl SZznCPb4oW07eAmC/AV5K39oqoVjNYb5hD4Ft+/4DDsonuOz8fZrbR4S3v3AgBFp4AZPhXeFZTceZ +c8FVB8939cNVWry0Svw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gWdRV-0005hK-Se; Tue, 11 Dec 2018 08:31:01 +0000 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70] helo=foss.arm.com) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gWdRK-0005Yl-01 for linux-arm-kernel@lists.infradead.org; Tue, 11 Dec 2018 08:30:51 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 77961EBD; Tue, 11 Dec 2018 00:30:39 -0800 (PST) Received: from localhost (e113682-lin.copenhagen.arm.com [10.32.144.41]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DB6083F614; Tue, 11 Dec 2018 00:30:38 -0800 (PST) Date: Tue, 11 Dec 2018 09:30:37 +0100 From: Christoffer Dall To: Mark Rutland Subject: Re: [PATCH 2/2] kvm/arm: consistently advance singlestep when emulating instructions Message-ID: <20181211083037.GT30263@e113682-lin.lund.arm.com> References: <20181109150711.45864-1-mark.rutland@arm.com> <20181109150711.45864-3-mark.rutland@arm.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20181109150711.45864-3-mark.rutland@arm.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181211_003050_050148_80350B61 X-CRM114-Status: GOOD ( 33.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marc.zyngier@arm.com, peter.maydell@linaro.org, alex.bennee@linaro.org, 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+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBOb3YgMDksIDIwMTggYXQgMDM6MDc6MTFQTSArMDAwMCwgTWFyayBSdXRsYW5kIHdy b3RlOgo+IFdoZW4gd2UgZW11bGF0ZSBhIGd1ZXN0IGluc3RydWN0aW9uLCB3ZSBkb24ndCBhZHZh bmNlIHRoZSBoYXJkd2FyZQo+IHNpbmdsZXN0ZXAgc3RhdGUgbWFjaGluZSwgYW5kIHRodXMgdGhl IGd1ZXN0IHdpbGwgcmVjZWl2ZSBhIHNvZnR3YXJlCj4gc3RlcCBleGNlcHRpb24gYWZ0ZXIgYSBu ZXh0IGluc3RydWN0aW9uIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBieSB0aGUKPiBob3N0Lgo+IAo+ IFdlIGJvZGdlIGFyb3VuZCB0aGlzIGluIGFuIGFkLWhvYyBmYXNoaW9uLiBTb21ldGltZXMgd2Ug ZXhwbGljaXRseSBjaGVjawo+IHdoZXRoZXIgdXNlcnNwYWNlIHJlcXVlc3RlZCBhIHNpbmdsZSBz dGVwLCBhbmQgZmFrZSBhIGRlYnVnIGV4Y2VwdGlvbgo+IGZyb20gd2l0aGluIHRoZSBrZXJuZWwu IE90aGVyIHRpbWVzLCB3ZSBhZHZhbmNlIHRoZSBIVyBzaW5nbGVzdGVwIHN0YXRlCj4gcmVseSBv biB0aGUgSFcgdG8gZ2VuZXJhdGUgdGhlIGV4Y2VwdGlvbiBmb3IgdXMuIFRodXMsIHRoZSBvYnNl cnZlZCBzdGVwCj4gYmVoYXZpb3VyIGRpZmZlcnMgZm9yIGhvc3QgYW5kIGd1ZXN0Lgo+IAo+IExl dCdzIG1ha2UgdGhpcyBzaW1wbGVyIGFuZCBjb25zaXN0ZW50IGJ5IGFsd2F5cyBhZHZhbmNpbmcg dGhlIEhXCj4gc2luZ2xlc3RlcCBzdGF0ZSBtYWNoaW5lIHdoZW4gd2Ugc2tpcCBhbiBpbnN0cnVj dGlvbi4gVGh1cyB3ZSBjYW4gcmVseQo+IG9uIHRoZSBoYXJkd2FyZSB0byBnZW5lcmF0ZSB0aGUg c2luZ2xlc3RlcCBleGNlcHRpb24gZm9yIHVzLCBhbmQgbmV2ZXIKPiBuZWVkIHRvIGV4cGxpY2l0 bHkgY2hlY2sgZm9yIGFuIGFjdGl2ZS1wZW5kaW5nIHN0ZXAsIG5vciBkbyB3ZSBuZWVkIHRvCj4g ZmFrZSBhIGRlYnVnIGV4Y2VwdGlvbiBmcm9tIHRoZSBndWVzdC4KPiAKPiBTaWduZWQtb2ZmLWJ5 OiBNYXJrIFJ1dGxhbmQgPG1hcmsucnV0bGFuZEBhcm0uY29tPgo+IENjOiBBbGV4IEJlbm7DqWUg PGFsZXguYmVubmVlQGxpbmFyby5vcmc+Cj4gQ2M6IENocmlzdG9mZmVyIERhbGwgPGNocmlzdG9m ZmVyLmRhbGxAYXJtLmNvbT4KPiBDYzogTWFyYyBaeW5naWVyIDxtYXJjLnp5bmdpZXJAYXJtLmNv bT4KPiBDYzogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgo+IC0tLQo+ ICBhcmNoL2FybS9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAgICAgIHwgIDUgLS0tLQo+ICBh cmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmggICAgIHwgMzUgKysrKysrKysrKysr KysrKysrKystLS0tLS0KPiAgYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oICAgICAg ICB8ICAxIC0KPiAgYXJjaC9hcm02NC9rdm0vZGVidWcuYyAgICAgICAgICAgICAgICAgICB8IDIx IC0tLS0tLS0tLS0tLS0tLS0KPiAgYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQuYyAgICAgICAg ICAgICB8IDE0ICstLS0tLS0tLS0tCj4gIGFyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYyAgICAg ICAgICAgICAgfCA0MyArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBhcmNoL2Fy bTY0L2t2bS9oeXAvdmdpYy12Mi1jcHVpZi1wcm94eS5jIHwgMTIgKysrKysrLS0tCj4gIHZpcnQv a3ZtL2FybS9hcm0uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiAtLQo+ICB2aXJ0L2t2bS9h cm0vaHlwL3ZnaWMtdjMtc3IuYyAgICAgICAgICAgIHwgIDYgKysrKy0KPiAgOSBmaWxlcyBjaGFu Z2VkLCA0NiBpbnNlcnRpb25zKCspLCA5MyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv YXJjaC9hcm0vaW5jbHVkZS9hc20va3ZtX2hvc3QuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2t2 bV9ob3N0LmgKPiBpbmRleCA1Y2E1ZDlhZjBjMjYuLmM1NjM0YzZmZmNlYSAxMDA2NDQKPiAtLS0g YS9hcmNoL2FybS9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gKysrIGIvYXJjaC9hcm0vaW5jbHVk ZS9hc20va3ZtX2hvc3QuaAo+IEBAIC0yOTYsMTEgKzI5Niw2IEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBrdm1fYXJtX2luaXRfZGVidWcodm9pZCkge30KPiAgc3RhdGljIGlubGluZSB2b2lkIGt2bV9h cm1fc2V0dXBfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KSB7fQo+ICBzdGF0aWMgaW5saW5l IHZvaWQga3ZtX2FybV9jbGVhcl9kZWJ1ZyhzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpIHt9Cj4gIHN0 YXRpYyBpbmxpbmUgdm9pZCBrdm1fYXJtX3Jlc2V0X2RlYnVnX3B0cihzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpIHt9Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBrdm1fYXJtX2hhbmRsZV9zdGVwX2RlYnVn KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiAtCQkJCQkgICAgIHN0cnVjdCBrdm1fcnVuICpydW4p Cj4gLXsKPiAtCXJldHVybiBmYWxzZTsKPiAtfQo+ICAKPiAgaW50IGt2bV9hcm1fdmNwdV9hcmNo X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKPiAgCQkJICAgICAgIHN0cnVjdCBrdm1f ZGV2aWNlX2F0dHIgKmF0dHIpOwo+IGRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L2t2bV9lbXVsYXRlLmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmgKPiBp bmRleCAyMTI0Nzg3MGRlZjcuLjUwNjM4NmEzZWRkZSAxMDA2NDQKPiAtLS0gYS9hcmNoL2FybTY0 L2luY2x1ZGUvYXNtL2t2bV9lbXVsYXRlLmgKPiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNt L2t2bV9lbXVsYXRlLmgKPiBAQCAtMjQsNiArMjQsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4 L2t2bV9ob3N0Lmg+Cj4gIAo+ICsjaW5jbHVkZSA8YXNtL2RlYnVnLW1vbml0b3JzLmg+Cj4gICNp bmNsdWRlIDxhc20vZXNyLmg+Cj4gICNpbmNsdWRlIDxhc20va3ZtX2FybS5oPgo+ICAjaW5jbHVk ZSA8YXNtL2t2bV9oeXAuaD4KPiBAQCAtMTQ3LDE0ICsxNDgsNiBAQCBzdGF0aWMgaW5saW5lIGJv b2wga3ZtX2NvbmRpdGlvbl92YWxpZChjb25zdCBzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gIAly ZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSB2b2lkIGt2bV9za2lwX2luc3Ry KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBpc193aWRlX2luc3RyKQo+IC17Cj4gLQlpZiAo dmNwdV9tb2RlX2lzXzMyYml0KHZjcHUpKQo+IC0JCWt2bV9za2lwX2luc3RyMzIodmNwdSwgaXNf d2lkZV9pbnN0cik7Cj4gLQllbHNlCj4gLQkJKnZjcHVfcGModmNwdSkgKz0gNDsKPiAtfQo+IC0K PiAgc3RhdGljIGlubGluZSB2b2lkIHZjcHVfc2V0X3RodW1iKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSkKPiAgewo+ICAJKnZjcHVfY3Bzcih2Y3B1KSB8PSBQU1JfQUEzMl9UX0JJVDsKPiBAQCAtNDI0 LDQgKzQxNywzMCBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgdmNwdV9kYXRhX2hvc3Rf dG9fZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICAJcmV0dXJuIGRhdGE7CQkvKiBMZWF2 ZSBMRSB1bnRvdWNoZWQgKi8KPiAgfQo+ICAKPiArc3RhdGljIGlubGluZSB2b2lkIGt2bV9za2lw X2luc3RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBpc193aWRlX2luc3RyKQo+ICt7Cj4g KwlpZiAodmNwdV9tb2RlX2lzXzMyYml0KHZjcHUpKQo+ICsJCWt2bV9za2lwX2luc3RyMzIodmNw dSwgaXNfd2lkZV9pbnN0cik7Cj4gKwllbHNlCj4gKwkJKnZjcHVfcGModmNwdSkgKz0gNDsKPiAr Cj4gKwkvKiBhZHZhbmNlIHRoZSBzaW5nbGVzdGVwIHN0YXRlIG1hY2hpbmUgKi8KPiArCSp2Y3B1 X2Nwc3IodmNwdSkgJj0gfkRCR19TUFNSX1NTOwo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBTa2lwIGFu IGluc3RydWN0aW9uIHdoaWNoIGhhcyBiZWVuIGVtdWxhdGVkIGF0IGh5cCB3aGlsZSBtb3N0IGd1 ZXN0IHN5c3JlZ3MKPiArICogYXJlIGxpdmUuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHZvaWQg X19oeXBfdGV4dCBfX2t2bV9za2lwX2luc3RyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiArewo+ ICsJKnZjcHVfcGModmNwdSkgPSByZWFkX3N5c3JlZ19lbDIoZWxyKTsKPiArCXZjcHUtPmFyY2gu Y3R4dC5ncF9yZWdzLnJlZ3MucHN0YXRlID0gcmVhZF9zeXNyZWdfZWwyKHNwc3IpOwo+ICsKPiAr CWt2bV9za2lwX2luc3RyKHZjcHUsIGt2bV92Y3B1X3RyYXBfaWxfaXMzMmJpdCh2Y3B1KSk7Cj4g Kwo+ICsJd3JpdGVfc3lzcmVnX2VsMih2Y3B1LT5hcmNoLmN0eHQuZ3BfcmVncy5yZWdzLnBzdGF0 ZSwgc3Bzcik7Cj4gKwl3cml0ZV9zeXNyZWdfZWwyKCp2Y3B1X3BjKHZjcHUpLCBlbHIpOwo+ICt9 Cj4gKwo+ICAjZW5kaWYgLyogX19BUk02NF9LVk1fRU1VTEFURV9IX18gKi8KPiBkaWZmIC0tZ2l0 IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oIGIvYXJjaC9hcm02NC9pbmNsdWRl L2FzbS9rdm1faG9zdC5oCj4gaW5kZXggNTJmYmM4MjNmZjhjLi43YTUwMzVmOWM1YzMgMTAwNjQ0 Cj4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gKysrIGIvYXJjaC9h cm02NC9pbmNsdWRlL2FzbS9rdm1faG9zdC5oCj4gQEAgLTQ0NSw3ICs0NDUsNiBAQCB2b2lkIGt2 bV9hcm1faW5pdF9kZWJ1Zyh2b2lkKTsKPiAgdm9pZCBrdm1fYXJtX3NldHVwX2RlYnVnKHN0cnVj dCBrdm1fdmNwdSAqdmNwdSk7Cj4gIHZvaWQga3ZtX2FybV9jbGVhcl9kZWJ1ZyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpOwo+ICB2b2lkIGt2bV9hcm1fcmVzZXRfZGVidWdfcHRyKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSk7Cj4gLWJvb2wga3ZtX2FybV9oYW5kbGVfc3RlcF9kZWJ1ZyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIHN0cnVjdCBrdm1fcnVuICpydW4pOwo+ICBpbnQga3ZtX2FybV92Y3B1X2Fy Y2hfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LAo+ICAJCQkgICAgICAgc3RydWN0IGt2 bV9kZXZpY2VfYXR0ciAqYXR0cik7Cj4gIGludCBrdm1fYXJtX3ZjcHVfYXJjaF9nZXRfYXR0cihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2RlYnVn LmMgYi9hcmNoL2FybTY0L2t2bS9kZWJ1Zy5jCj4gaW5kZXggMDBkNDIyMzM2YTQ1Li5mMzk4MDFl NDEzNmMgMTAwNjQ0Cj4gLS0tIGEvYXJjaC9hcm02NC9rdm0vZGVidWcuYwo+ICsrKyBiL2FyY2gv YXJtNjQva3ZtL2RlYnVnLmMKPiBAQCAtMjM2LDI0ICsyMzYsMyBAQCB2b2lkIGt2bV9hcm1fY2xl YXJfZGVidWcoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ICAJCX0KPiAgCX0KPiAgfQo+IC0KPiAt Cj4gLS8qCj4gLSAqIEFmdGVyIHN1Y2Nlc3NmdWxseSBlbXVsYXRpbmcgYW4gaW5zdHJ1Y3Rpb24s IHdlIG1pZ2h0IHdhbnQgdG8KPiAtICogcmV0dXJuIHRvIHVzZXIgc3BhY2Ugd2l0aCBhIEtWTV9F WElUX0RFQlVHLiBXZSBjYW4gb25seSBkbyB0aGlzCj4gLSAqIG9uY2UgdGhlIGVtdWxhdGlvbiBp cyBjb21wbGV0ZSwgdGhvdWdoLCBzbyBmb3IgdXNlcnNwYWNlIGVtdWxhdGlvbnMKPiAtICogd2Ug aGF2ZSB0byB3YWl0IHVudGlsIHdlIGhhdmUgcmUtZW50ZXJlZCBLVk0gYmVmb3JlIGNhbGxpbmcg dGhpcwo+IC0gKiBoZWxwZXIuCj4gLSAqCj4gLSAqIFJldHVybiB0cnVlIChhbmQgc2V0IGV4aXRf cmVhc29uKSB0byByZXR1cm4gdG8gdXNlcnNwYWNlIG9yIGZhbHNlCj4gLSAqIGlmIG5vIGZ1cnRo ZXIgYWN0aW9uIGlzIHJlcXVpcmVkLgo+IC0gKi8KPiAtYm9vbCBrdm1fYXJtX2hhbmRsZV9zdGVw X2RlYnVnKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bikKPiAtewo+ IC0JaWYgKHZjcHUtPmd1ZXN0X2RlYnVnICYgS1ZNX0dVRVNUREJHX1NJTkdMRVNURVApIHsKPiAt CQlydW4tPmV4aXRfcmVhc29uID0gS1ZNX0VYSVRfREVCVUc7Cj4gLQkJcnVuLT5kZWJ1Zy5hcmNo LmhzciA9IEVTUl9FTHhfRUNfU09GVFNUUF9MT1cgPDwgRVNSX0VMeF9FQ19TSElGVDsKPiAtCQly ZXR1cm4gdHJ1ZTsKPiAtCX0KPiAtCXJldHVybiBmYWxzZTsKPiAtfQo+IGRpZmYgLS1naXQgYS9h cmNoL2FybTY0L2t2bS9oYW5kbGVfZXhpdC5jIGIvYXJjaC9hcm02NC9rdm0vaGFuZGxlX2V4aXQu Ywo+IGluZGV4IDM1YTgxYmViZDAyYi4uYjA2NDNmOWM0ODczIDEwMDY0NAo+IC0tLSBhL2FyY2gv YXJtNjQva3ZtL2hhbmRsZV9leGl0LmMKPiArKysgYi9hcmNoL2FybTY0L2t2bS9oYW5kbGVfZXhp dC5jCj4gQEAgLTIyOSwxMyArMjI5LDYgQEAgc3RhdGljIGludCBoYW5kbGVfdHJhcF9leGNlcHRp b25zKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV9ydW4gKnJ1bikKPiAgCQloYW5k bGVkID0gZXhpdF9oYW5kbGVyKHZjcHUsIHJ1bik7Cj4gIAl9Cj4gIAo+IC0JLyoKPiAtCSAqIGt2 bV9hcm1faGFuZGxlX3N0ZXBfZGVidWcoKSBzZXRzIHRoZSBleGl0X3JlYXNvbiBvbiB0aGUga3Zt X3J1bgo+IC0JICogc3RydWN0dXJlIGlmIHdlIG5lZWQgdG8gcmV0dXJuIHRvIHVzZXJzcGFjZS4K PiAtCSAqLwo+IC0JaWYgKGhhbmRsZWQgPiAwICYmIGt2bV9hcm1faGFuZGxlX3N0ZXBfZGVidWco dmNwdSwgcnVuKSkKPiAtCQloYW5kbGVkID0gMDsKPiAtCj4gIAlyZXR1cm4gaGFuZGxlZDsKPiAg fQo+ICAKPiBAQCAtMjY5LDEyICsyNjIsNyBAQCBpbnQgaGFuZGxlX2V4aXQoc3RydWN0IGt2bV92 Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuLAo+ICAJY2FzZSBBUk1fRVhDRVBUSU9OX0lS UToKPiAgCQlyZXR1cm4gMTsKPiAgCWNhc2UgQVJNX0VYQ0VQVElPTl9FTDFfU0VSUk9SOgo+IC0J CS8qIFdlIG1heSBzdGlsbCBuZWVkIHRvIHJldHVybiBmb3Igc2luZ2xlLXN0ZXAgKi8KPiAtCQlp ZiAoISgqdmNwdV9jcHNyKHZjcHUpICYgREJHX1NQU1JfU1MpCj4gLQkJCSYmIGt2bV9hcm1faGFu ZGxlX3N0ZXBfZGVidWcodmNwdSwgcnVuKSkKPiAtCQkJcmV0dXJuIDA7Cj4gLQkJZWxzZQo+IC0J CQlyZXR1cm4gMTsKPiArCQlyZXR1cm4gMTsKPiAgCWNhc2UgQVJNX0VYQ0VQVElPTl9UUkFQOgo+ ICAJCXJldHVybiBoYW5kbGVfdHJhcF9leGNlcHRpb25zKHZjcHUsIHJ1bik7Cj4gIAljYXNlIEFS TV9FWENFUFRJT05fSFlQX0dPTkU6Cj4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQva3ZtL2h5cC9z d2l0Y2guYyBiL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYwo+IGluZGV4IDdjYzE3NWM4OGEz Ny4uNDI4MmYwNTc3MWMxIDEwMDY0NAo+IC0tLSBhL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2gu Ywo+ICsrKyBiL2FyY2gvYXJtNjQva3ZtL2h5cC9zd2l0Y2guYwo+IEBAIC0zMDUsMzMgKzMwNSw2 IEBAIHN0YXRpYyBib29sIF9faHlwX3RleHQgX19wb3B1bGF0ZV9mYXVsdF9pbmZvKHN0cnVjdCBr dm1fdmNwdSAqdmNwdSkKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IC0vKiBTa2lwIGFuIGlu c3RydWN0aW9uIHdoaWNoIGhhcyBiZWVuIGVtdWxhdGVkLiBSZXR1cm5zIHRydWUgaWYKPiAtICog ZXhlY3V0aW9uIGNhbiBjb250aW51ZSBvciBmYWxzZSBpZiB3ZSBuZWVkIHRvIGV4aXQgaHlwIG1v ZGUgYmVjYXVzZQo+IC0gKiBzaW5nbGUtc3RlcCB3YXMgaW4gZWZmZWN0Lgo+IC0gKi8KPiAtc3Rh dGljIGJvb2wgX19oeXBfdGV4dCBfX3NraXBfaW5zdHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ IC17Cj4gLQkqdmNwdV9wYyh2Y3B1KSA9IHJlYWRfc3lzcmVnX2VsMihlbHIpOwo+IC0KPiAtCWlm ICh2Y3B1X21vZGVfaXNfMzJiaXQodmNwdSkpIHsKPiAtCQl2Y3B1LT5hcmNoLmN0eHQuZ3BfcmVn cy5yZWdzLnBzdGF0ZSA9IHJlYWRfc3lzcmVnX2VsMihzcHNyKTsKPiAtCQlrdm1fc2tpcF9pbnN0 cjMyKHZjcHUsIGt2bV92Y3B1X3RyYXBfaWxfaXMzMmJpdCh2Y3B1KSk7Cj4gLQkJd3JpdGVfc3lz cmVnX2VsMih2Y3B1LT5hcmNoLmN0eHQuZ3BfcmVncy5yZWdzLnBzdGF0ZSwgc3Bzcik7Cj4gLQl9 IGVsc2Ugewo+IC0JCSp2Y3B1X3BjKHZjcHUpICs9IDQ7Cj4gLQl9Cj4gLQo+IC0Jd3JpdGVfc3lz cmVnX2VsMigqdmNwdV9wYyh2Y3B1KSwgZWxyKTsKPiAtCj4gLQlpZiAodmNwdS0+Z3Vlc3RfZGVi dWcgJiBLVk1fR1VFU1REQkdfU0lOR0xFU1RFUCkgewo+IC0JCXZjcHUtPmFyY2guZmF1bHQuZXNy X2VsMiA9Cj4gLQkJCShFU1JfRUx4X0VDX1NPRlRTVFBfTE9XIDw8IEVTUl9FTHhfRUNfU0hJRlQp IHwgMHgyMjsKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQl9IGVsc2Ugewo+IC0JCXJldHVybiB0cnVl Owo+IC0JfQo+IC19Cj4gLQo+ICBzdGF0aWMgYm9vbCBfX2h5cF90ZXh0IF9faHlwX3N3aXRjaF9m cHNpbWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ICB7Cj4gIAlzdHJ1Y3QgdXNlcl9mcHNpbWRf c3RhdGUgKmhvc3RfZnBzaW1kID0gdmNwdS0+YXJjaC5ob3N0X2Zwc2ltZF9zdGF0ZTsKPiBAQCAt NDIwLDIwICszOTMsMTIgQEAgc3RhdGljIGJvb2wgX19oeXBfdGV4dCBmaXh1cF9ndWVzdF9leGl0 KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTY0ICpleGl0X2NvZGUpCj4gIAkJaWYgKHZhbGlkKSB7 Cj4gIAkJCWludCByZXQgPSBfX3ZnaWNfdjJfcGVyZm9ybV9jcHVpZl9hY2Nlc3ModmNwdSk7Cj4g IAo+IC0JCQlpZiAocmV0ID09ICAxICYmIF9fc2tpcF9pbnN0cih2Y3B1KSkKPiArCQkJaWYgKHJl dCA9PSAxKQo+ICAJCQkJcmV0dXJuIHRydWU7Cj4gIAo+IC0JCQlpZiAocmV0ID09IC0xKSB7Cj4g LQkJCQkvKiBQcm9tb3RlIGFuIGlsbGVnYWwgYWNjZXNzIHRvIGFuCj4gLQkJCQkgKiBTRXJyb3Iu IElmIHdlIHdvdWxkIGJlIHJldHVybmluZwo+IC0JCQkJICogZHVlIHRvIHNpbmdsZS1zdGVwIGNs ZWFyIHRoZSBTUwo+IC0JCQkJICogYml0IHNvIGhhbmRsZV9leGl0IGtub3dzIHdoYXQgdG8KPiAt CQkJCSAqIGRvIGFmdGVyIGRlYWxpbmcgd2l0aCB0aGUgZXJyb3IuCj4gLQkJCQkgKi8KPiAtCQkJ CWlmICghX19za2lwX2luc3RyKHZjcHUpKQo+IC0JCQkJCSp2Y3B1X2Nwc3IodmNwdSkgJj0gfkRC R19TUFNSX1NTOwo+ICsJCQkvKiBQcm9tb3RlIGFuIGlsbGVnYWwgYWNjZXNzIHRvIGFuIFNFcnJv ci4qLwo+ICsJCQlpZiAocmV0ID09IC0xKQo+ICAJCQkJKmV4aXRfY29kZSA9IEFSTV9FWENFUFRJ T05fRUwxX1NFUlJPUjsKPiAtCQkJfQo+ICAKPiAgCQkJZ290byBleGl0Owo+ICAJCX0KPiBAQCAt NDQ0LDcgKzQwOSw3IEBAIHN0YXRpYyBib29sIF9faHlwX3RleHQgZml4dXBfZ3Vlc3RfZXhpdChz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU2NCAqZXhpdF9jb2RlKQo+ICAJICAgICBrdm1fdmNwdV90 cmFwX2dldF9jbGFzcyh2Y3B1KSA9PSBFU1JfRUx4X0VDX0NQMTVfMzIpKSB7Cj4gIAkJaW50IHJl dCA9IF9fdmdpY192M19wZXJmb3JtX2NwdWlmX2FjY2Vzcyh2Y3B1KTsKPiAgCj4gLQkJaWYgKHJl dCA9PSAxICYmIF9fc2tpcF9pbnN0cih2Y3B1KSkKPiArCQlpZiAocmV0ID09IDEpCj4gIAkJCXJl dHVybiB0cnVlOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9rdm0vaHlwL3Zn aWMtdjItY3B1aWYtcHJveHkuYyBiL2FyY2gvYXJtNjQva3ZtL2h5cC92Z2ljLXYyLWNwdWlmLXBy b3h5LmMKPiBpbmRleCAyMTVjN2MwZWIzYjAuLjljYmRkMDM0YTU2MyAxMDA2NDQKPiAtLS0gYS9h cmNoL2FybTY0L2t2bS9oeXAvdmdpYy12Mi1jcHVpZi1wcm94eS5jCj4gKysrIGIvYXJjaC9hcm02 NC9rdm0vaHlwL3ZnaWMtdjItY3B1aWYtcHJveHkuYwo+IEBAIC00MSw3ICs0MSw3IEBAIHN0YXRp YyBib29sIF9faHlwX3RleHQgX19pc19iZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCj4gICAqIFJl dHVybnM6Cj4gICAqICAxOiBHSUNWIGFjY2VzcyBzdWNjZXNzZnVsbHkgcGVyZm9ybWVkCj4gICAq ICAwOiBOb3QgYSBHSUNWIGFjY2Vzcwo+IC0gKiAtMTogSWxsZWdhbCBHSUNWIGFjY2Vzcwo+ICsg KiAtMTogSWxsZWdhbCBHSUNWIGFjY2VzcyBzdWNjZXNzZnVsbHkgcGVyZm9ybWVkCj4gICAqLwo+ ICBpbnQgX19oeXBfdGV4dCBfX3ZnaWNfdjJfcGVyZm9ybV9jcHVpZl9hY2Nlc3Moc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQo+ICB7Cj4gQEAgLTYxLDEyICs2MSwxNiBAQCBpbnQgX19oeXBfdGV4dCBf X3ZnaWNfdjJfcGVyZm9ybV9jcHVpZl9hY2Nlc3Moc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQo+ICAJ CXJldHVybiAwOwo+ICAKPiAgCS8qIFJlamVjdCBhbnl0aGluZyBidXQgYSAzMmJpdCBhY2Nlc3Mg Ki8KPiAtCWlmIChrdm1fdmNwdV9kYWJ0X2dldF9hcyh2Y3B1KSAhPSBzaXplb2YodTMyKSkKPiAr CWlmIChrdm1fdmNwdV9kYWJ0X2dldF9hcyh2Y3B1KSAhPSBzaXplb2YodTMyKSkgewo+ICsJCV9f a3ZtX3NraXBfaW5zdHIodmNwdSk7Cj4gIAkJcmV0dXJuIC0xOwo+ICsJfQo+ICAKPiAgCS8qIE5v dCBhbGlnbmVkPyBEb24ndCBib3RoZXIgKi8KPiAtCWlmIChmYXVsdF9pcGEgJiAzKQo+ICsJaWYg KGZhdWx0X2lwYSAmIDMpIHsKPiArCQlfX2t2bV9za2lwX2luc3RyKHZjcHUpOwo+ICAJCXJldHVy biAtMTsKPiArCX0KPiAgCj4gIAlyZCA9IGt2bV92Y3B1X2RhYnRfZ2V0X3JkKHZjcHUpOwo+ICAJ YWRkciAgPSBoeXBfc3ltYm9sX2FkZHIoa3ZtX3ZnaWNfZ2xvYmFsX3N0YXRlKS0+dmNwdV9oeXBf dmE7Cj4gQEAgLTg4LDUgKzkyLDcgQEAgaW50IF9faHlwX3RleHQgX192Z2ljX3YyX3BlcmZvcm1f Y3B1aWZfYWNjZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKPiAgCQl2Y3B1X3NldF9yZWcodmNw dSwgcmQsIGRhdGEpOwo+ICAJfQo+ICAKPiArCV9fa3ZtX3NraXBfaW5zdHIodmNwdSk7Cj4gKwo+ ICAJcmV0dXJuIDE7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvdmlydC9rdm0vYXJtL2FybS5jIGIvdmly dC9rdm0vYXJtL2FybS5jCj4gaW5kZXggMjM3NzQ5NzBjOWRmLi40YWRjZWU1ZmMxMjYgMTAwNjQ0 Cj4gLS0tIGEvdmlydC9rdm0vYXJtL2FybS5jCj4gKysrIGIvdmlydC9rdm0vYXJtL2FybS5jCj4g QEAgLTY3NCw4ICs2NzQsNiBAQCBpbnQga3ZtX2FyY2hfdmNwdV9pb2N0bF9ydW4oc3RydWN0IGt2 bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3J1biAqcnVuKQo+ICAJCXJldCA9IGt2bV9oYW5kbGVf bW1pb19yZXR1cm4odmNwdSwgdmNwdS0+cnVuKTsKPiAgCQlpZiAocmV0KQo+ICAJCQlyZXR1cm4g cmV0Owo+IC0JCWlmIChrdm1fYXJtX2hhbmRsZV9zdGVwX2RlYnVnKHZjcHUsIHZjcHUtPnJ1bikp Cj4gLQkJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAgCWlmIChydW4tPmltbWVkaWF0ZV9leGl0KQo+ IGRpZmYgLS1naXQgYS92aXJ0L2t2bS9hcm0vaHlwL3ZnaWMtdjMtc3IuYyBiL3ZpcnQva3ZtL2Fy bS9oeXAvdmdpYy12My1zci5jCj4gaW5kZXggNjE2ZTVhNDMzYWIwLi45NjUyYzQ1MzQ4MGYgMTAw NjQ0Cj4gLS0tIGEvdmlydC9rdm0vYXJtL2h5cC92Z2ljLXYzLXNyLmMKPiArKysgYi92aXJ0L2t2 bS9hcm0vaHlwL3ZnaWMtdjMtc3IuYwo+IEBAIC0xMDEyLDggKzEwMTIsMTAgQEAgaW50IF9faHlw X3RleHQgX192Z2ljX3YzX3BlcmZvcm1fY3B1aWZfYWNjZXNzKHN0cnVjdCBrdm1fdmNwdSAqdmNw dSkKPiAgCj4gIAllc3IgPSBrdm1fdmNwdV9nZXRfaHNyKHZjcHUpOwo+ICAJaWYgKHZjcHVfbW9k ZV9pc18zMmJpdCh2Y3B1KSkgewo+IC0JCWlmICgha3ZtX2NvbmRpdGlvbl92YWxpZCh2Y3B1KSkK PiArCQlpZiAoIWt2bV9jb25kaXRpb25fdmFsaWQodmNwdSkpIHsKPiArCQkJX19rdm1fc2tpcF9p bnN0cih2Y3B1KTsKPiAgCQkJcmV0dXJuIDE7Cj4gKwkJfQo+ICAKPiAgCQlzeXNyZWcgPSBlc3Jf Y3AxNV90b19zeXNyZWcoZXNyKTsKPiAgCX0gZWxzZSB7Cj4gQEAgLTExMjMsNiArMTEyNSw4IEBA IGludCBfX2h5cF90ZXh0IF9fdmdpY192M19wZXJmb3JtX2NwdWlmX2FjY2VzcyhzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUpCj4gIAlydCA9IGt2bV92Y3B1X3N5c19nZXRfcnQodmNwdSk7Cj4gIAlmbih2 Y3B1LCB2bWNyLCBydCk7Cj4gIAo+ICsJX19rdm1fc2tpcF9pbnN0cih2Y3B1KTsKPiArCj4gIAly ZXR1cm4gMTsKPiAgfQo+ICAKCkkgd291bGQgaGF2ZSBwcmVmZXJyZWQgZWl0aGVyIGNhbGxpbmcg X19rdm1fc2tpcF9pbnN0cigpIGF0IHRoZSBjYWxsc2l0ZQpmb3IgdGhlIEdJQyBlbXVsYXRpb24g ZnVuY3Rpb25zIG9yIHVzaW5nIGEgZ290byBvdXQgY29uc3RydWN0IGluIHRoZSB0d28KZnVuY3Rp b25zLCBidXQgSSdtIG5vdCBzdXJlIGl0J3Mgd29ydGggcmVzcGlubmluZyBmb3IgdGhhdCByZWFz b246CgpSZXZpZXdlZC1ieTogQ2hyaXN0b2ZmZXIgRGFsbCA8Y2hyaXN0b2ZmZXIuZGFsbEBhcm0u Y29tPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=