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 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B558C43217 for ; Wed, 6 Oct 2021 17:40:59 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 2C7E26113A for ; Wed, 6 Oct 2021 17:40:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2C7E26113A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=bitdefender.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 24EE660F18; Wed, 6 Oct 2021 17:40:58 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id DotP2R7XEdPr; Wed, 6 Oct 2021 17:40:56 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id BA7EB60EE9; Wed, 6 Oct 2021 17:40:55 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5A009C0025; Wed, 6 Oct 2021 17:40:54 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137]) by lists.linuxfoundation.org (Postfix) with ESMTP id 162E4C0035 for ; Wed, 6 Oct 2021 17:40:48 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 9442D408DF for ; Wed, 6 Oct 2021 17:40:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fzONWBReXYra for ; Wed, 6 Oct 2021 17:40:45 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from mx01.bbu.dsd.mx.bitdefender.com (mx01.bbu.dsd.mx.bitdefender.com [91.199.104.161]) by smtp4.osuosl.org (Postfix) with ESMTPS id 18150408D5 for ; Wed, 6 Oct 2021 17:40:44 +0000 (UTC) Received: from smtp.bitdefender.com (smtp01.buh.bitdefender.com [10.17.80.75]) by mx01.bbu.dsd.mx.bitdefender.com (Postfix) with ESMTPS id 6C76430828B8; Wed, 6 Oct 2021 20:31:22 +0300 (EEST) Received: from localhost (unknown [91.199.104.28]) by smtp.bitdefender.com (Postfix) with ESMTPSA id 4E9C1300F73A; Wed, 6 Oct 2021 20:31:22 +0300 (EEST) X-Is-Junk-Enabled: fGZTSsP0qEJE2AIKtlSuFiRRwg9xyHmJ From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= To: kvm@vger.kernel.org Subject: [PATCH v12 68/77] KVM: introspection: add KVMI_VCPU_CONTROL_MSR and KVMI_VCPU_EVENT_MSR Date: Wed, 6 Oct 2021 20:31:04 +0300 Message-Id: <20211006173113.26445-69-alazar@bitdefender.com> In-Reply-To: <20211006173113.26445-1-alazar@bitdefender.com> References: <20211006173113.26445-1-alazar@bitdefender.com> MIME-Version: 1.0 Cc: Tamas K Lengyel , Wanpeng Li , =?UTF-8?q?Nicu=C8=99or=20C=C3=AE=C8=9Bu?= , Sean Christopherson , Joerg Roedel , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , Mathieu Tarral , Paolo Bonzini , =?UTF-8?q?Mihai=20Don=C8=9Bu?= , Jim Mattson X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" RnJvbTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgoKVGhpcyBjb21tYW5k IGlzIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgaW50cm9zcGVjdGlvbiBmb3IgYSBzcGVjaWZpYwpN U1IuIFRoZSBLVk1JX1ZDUFVfRVZFTlRfTVNSIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgdHJhY2tl ZCBNU1IgaXMgZ29pbmcKdG8gYmUgY2hhbmdlZC4gVGhlIGludHJvc3BlY3Rpb24gdG9vbCBjYW4g cmVzcG9uZCBieSBhbGxvd2luZyB0aGUgZ3Vlc3QKdG8gY29udGludWUgd2l0aCBub3JtYWwgZXhl Y3V0aW9uIG9yIGJ5IGRpc2NhcmRpbmcgdGhlIGNoYW5nZS4KClRoaXMgaXMgbWVhbnQgdG8gcHJl dmVudCBtYWxpY2lvdXMgY2hhbmdlcyB0byBNU1JzCnN1Y2ggYXMgTVNSX0lBMzJfU1lTRU5URVJf RUlQLgoKU2lnbmVkLW9mZi1ieTogTWloYWkgRG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29t PgpDby1kZXZlbG9wZWQtYnk6IE5pY3XImW9yIEPDrsibdSA8bmljdS5jaXR1QGljbG91ZC5jb20+ ClNpZ25lZC1vZmYtYnk6IE5pY3XImW9yIEPDrsibdSA8bmljdS5jaXR1QGljbG91ZC5jb20+CkNv LWRldmVsb3BlZC1ieTogQWRhbGJlcnQgTGF6xINyIDxhbGF6YXJAYml0ZGVmZW5kZXIuY29tPgpT aWduZWQtb2ZmLWJ5OiBBZGFsYmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+Ci0t LQogRG9jdW1lbnRhdGlvbi92aXJ0L2t2bS9rdm1pLnJzdCAgICAgICAgICAgICAgIHwgIDc5ICsr KysrKysrKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaCAgICAgICAgICAgICAg fCAgMTIgKysKIGFyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oICAgICAgICAgICAgICB8 ICAxOCArKysKIGFyY2gveDg2L2t2bS9rdm1pLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDEyNiArKysrKysrKysrKysrKysrKysKIGFyY2gveDg2L2t2bS9rdm1pLmggICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMyArCiBhcmNoL3g4Ni9rdm0va3ZtaV9tc2cuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAgNTIgKysrKysrKysKIGFyY2gveDg2L2t2bS94ODYuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgMyArCiBpbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQv a3ZtaV90ZXN0LmMgIHwgMTExICsrKysrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCA0MDYg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5y c3QgYi9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0CmluZGV4IGUyNGE5M2U5M2ZlOC4u YjM5ZDZhYzQ3YzlhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2t2bWkucnN0 CisrKyBiL0RvY3VtZW50YXRpb24vdmlydC9rdm0va3ZtaS5yc3QKQEAgLTU0Miw2ICs1NDIsNyBA QCB0aGUgZm9sbG93aW5nIGV2ZW50czo6CiAJS1ZNSV9WQ1BVX0VWRU5UX0NSCiAJS1ZNSV9WQ1BV X0VWRU5UX0RFU0NSSVBUT1IKIAlLVk1JX1ZDUFVfRVZFTlRfSFlQRVJDQUxMCisJS1ZNSV9WQ1BV X0VWRU5UX01TUgogCUtWTUlfVkNQVV9FVkVOVF9YU0VUQlYKIAogV2hlbiBhbiBldmVudCBpcyBl bmFibGVkLCB0aGUgaW50cm9zcGVjdGlvbiB0b29sIGlzIG5vdGlmaWVkIGFuZApAQCAtOTAzLDYg KzkwNCw0OCBAQCBSZXR1cm5zIHRoZSBndWVzdCBtZW1vcnkgdHlwZSBmb3IgYSBzcGVjaWZpYyBn dWVzdCBwaHlzaWNhbCBhZGRyZXNzIChgYGdwYWBgKS4KICogLUtWTV9FSU5WQUwgLSB0aGUgcGFk ZGluZyBpcyBub3QgemVybwogKiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BVIGNhbid0 IGJlIGludHJvc3BlY3RlZCB5ZXQKIAorMjEuIEtWTUlfVkNQVV9DT05UUk9MX01TUgorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorCis6QXJjaGl0ZWN0dXJlczogeDg2Cis6VmVyc2lvbnM6ID49 IDEKKzpQYXJhbWV0ZXJzOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0 IGt2bWlfdmNwdV9jb250cm9sX21zciB7CisJCV9fdTggZW5hYmxlOworCQlfX3U4IHBhZGRpbmcx OworCQlfX3UxNiBwYWRkaW5nMjsKKwkJX191MzIgbXNyOworCX07CisKKzpSZXR1cm5zOgorCis6 OgorCisJc3RydWN0IGt2bWlfZXJyb3JfY29kZQorCitFbmFibGVzL2Rpc2FibGVzIGludHJvc3Bl Y3Rpb24gZm9yIGEgc3BlY2lmaWMgTVNSIGFuZCBtdXN0IGJlIHVzZWQKK2luIGFkZGl0aW9uIHRv ICpLVk1JX1ZDUFVfQ09OVFJPTF9FVkVOVFMqIHdpdGggdGhlICpLVk1JX1ZDUFVfRVZFTlRfTVNS KgorSUQgc2V0LgorCitDdXJyZW50bHksIG9ubHkgTVNScyB3aXRoaW4gdGhlIGZvbGxvd2luZyB0 d28gcmFuZ2VzIGFyZSBzdXBwb3J0ZWQuIFRyeWluZwordG8gY29udHJvbCBldmVudHMgZm9yIGFu eSBvdGhlciByZWdpc3RlciB3aWxsIGZhaWwgd2l0aCAtS1ZNX0VJTlZBTDo6CisKKwkwICAgICAg ICAgIC4uLiAweDAwMDAxZmZmCisJMHhjMDAwMDAwMCAuLi4gMHhjMDAwMWZmZgorCis6RXJyb3Jz OgorCisqIC1LVk1fRUlOVkFMIC0gdGhlIHNlbGVjdGVkIHZDUFUgaXMgaW52YWxpZAorKiAtS1ZN X0VJTlZBTCAtIHRoZSBzcGVjaWZpZWQgTVNSIGlzIGludmFsaWQKKyogLUtWTV9FSU5WQUwgLSB0 aGUgcGFkZGluZyBpcyBub3QgemVybworKiAtS1ZNX0VBR0FJTiAtIHRoZSBzZWxlY3RlZCB2Q1BV IGNhbid0IGJlIGludHJvc3BlY3RlZCB5ZXQKKyogLUtWTV9FUEVSTSAgLSB0aGUgaW50ZXJjZXB0 aW9uIG9mIHRoZSBzZWxlY3RlZCBNU1IgaXMgZGlzYWxsb3dlZAorICAgICAgICAgICAgICAgIGZy b20gdXNlcnNwYWNlIChLVk1fWDg2X1NFVF9NU1JfRklMVEVSKQorCiBFdmVudHMKID09PT09PQog CkBAIC0xMjQxLDMgKzEyODQsMzkgQEAgaW50cm9zcGVjdGlvbiB0b29sLgogCUtWTUlfREVTQ19U UgogCiBgYHdyaXRlYGAgaXMgMSBpZiB0aGUgZGVzY3JpcHRvciB3YXMgd3JpdHRlbiwgMCBvdGhl cndpc2UuCisKKzkuIEtWTUlfVkNQVV9FVkVOVF9NU1IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KworOkFyY2hpdGVjdHVyZXM6IHg4NgorOlZlcnNpb25zOiA+PSAxCis6QWN0aW9uczogQ09OVElO VUUsIENSQVNICis6UGFyYW1ldGVyczoKKworOjoKKworCXN0cnVjdCBrdm1pX3ZjcHVfZXZlbnQ7 CisJc3RydWN0IGt2bWlfdmNwdV9ldmVudF9tc3IgeworCQlfX3UzMiBtc3I7CisJCV9fdTMyIHBh ZGRpbmc7CisJCV9fdTY0IG9sZF92YWx1ZTsKKwkJX191NjQgbmV3X3ZhbHVlOworCX07CisKKzpS ZXR1cm5zOgorCis6OgorCisJc3RydWN0IGt2bWlfdmNwdV9oZHI7CisJc3RydWN0IGt2bWlfdmNw dV9ldmVudF9yZXBseTsKKwlzdHJ1Y3Qga3ZtaV92Y3B1X2V2ZW50X21zcl9yZXBseSB7CisJCV9f dTY0IG5ld192YWw7CisJfTsKKworVGhpcyBldmVudCBpcyBzZW50IHdoZW4gYSBtb2RlbCBzcGVj aWZpYyByZWdpc3RlciBpcyBnb2luZyB0byBiZSBjaGFuZ2VkCithbmQgdGhlIGludHJvc3BlY3Rp b24gaGFzIGJlZW4gZW5hYmxlZCBmb3IgdGhpcyBldmVudCBhbmQgZm9yIHRoaXMgc3BlY2lmaWMK K3JlZ2lzdGVyIChzZWUgKipLVk1JX1ZDUFVfQ09OVFJPTF9FVkVOVFMqKikuCisKK2Bga3ZtaV92 Y3B1X2V2ZW50YGAgKHdpdGggdGhlIHZDUFUgc3RhdGUpLCB0aGUgTVNSIG51bWJlciAoYGBtc3Jg YCksCit0aGUgb2xkIHZhbHVlIChgYG9sZF92YWx1ZWBgKSBhbmQgdGhlIG5ldyB2YWx1ZSAoYGBu ZXdfdmFsdWVgYCkgYXJlIHNlbnQKK3RvIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wuIFRoZSAqQ09O VElOVUUqIGFjdGlvbiB3aWxsIHNldCB0aGUgYGBuZXdfdmFsYGAuCmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlf aG9zdC5oCmluZGV4IGE4NzIyNzdlYmE2Ny4uNWE0ZmM1YjgwOTA3IDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2hvc3QuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9r dm1pX2hvc3QuaApAQCAtNCw3ICs0LDEwIEBACiAKICNpbmNsdWRlIDxhc20va3ZtaS5oPgogCitz dHJ1Y3QgbXNyX2RhdGE7CisKICNkZWZpbmUgS1ZNSV9OVU1fQ1IgNQorI2RlZmluZSBLVk1JX05V TV9NU1IgMHgyMDAwCiAKIHN0cnVjdCBrdm1pX21vbml0b3JfaW50ZXJjZXB0aW9uIHsKIAlib29s IGt2bWlfaW50ZXJjZXB0ZWQ7CkBAIC0xOCw2ICsyMSwxMiBAQCBzdHJ1Y3Qga3ZtaV9pbnRlcmNl cHRpb24gewogCXN0cnVjdCBrdm1pX21vbml0b3JfaW50ZXJjZXB0aW9uIGJyZWFrcG9pbnQ7CiAJ c3RydWN0IGt2bWlfbW9uaXRvcl9pbnRlcmNlcHRpb24gY3IzdzsKIAlzdHJ1Y3Qga3ZtaV9tb25p dG9yX2ludGVyY2VwdGlvbiBkZXNjcmlwdG9yOworCXN0cnVjdCB7CisJCXN0cnVjdCB7CisJCQlE RUNMQVJFX0JJVE1BUChsb3csIEtWTUlfTlVNX01TUik7CisJCQlERUNMQVJFX0JJVE1BUChoaWdo LCBLVk1JX05VTV9NU1IpOworCQl9IGt2bWlfbWFzazsKKwl9IG1zcnc7CiB9OwogCiBzdHJ1Y3Qg a3ZtX3ZjcHVfYXJjaF9pbnRyb3NwZWN0aW9uIHsKQEAgLTUxLDYgKzYwLDcgQEAgdm9pZCBrdm1p X3hzZXRidl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IHhjciwKIAkJICAgICAgIHU2 NCBvbGRfdmFsdWUsIHU2NCBuZXdfdmFsdWUpOwogYm9vbCBrdm1pX21vbml0b3JfZGVzY19pbnRl cmNlcHQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBib29sIGVuYWJsZSk7CiBib29sIGt2bWlfZGVz Y3JpcHRvcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IGRlc2NyaXB0b3IsIGJvb2wg d3JpdGUpOworYm9vbCBrdm1pX21zcl9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVj dCBtc3JfZGF0YSAqbXNyKTsKIAogI2Vsc2UgLyogQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OICov CiAKQEAgLTcwLDYgKzgwLDggQEAgc3RhdGljIGlubGluZSBib29sIGt2bWlfbW9uaXRvcl9kZXNj X2ludGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJCSAgICAgICBib29sIGVuYWJs ZSkgeyByZXR1cm4gZmFsc2U7IH0KIHN0YXRpYyBpbmxpbmUgYm9vbCBrdm1pX2Rlc2NyaXB0b3Jf ZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1OCBkZXNjcmlwdG9yLAogCQkJCQkgYm9vbCB3 cml0ZSkgeyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlubGluZSBib29sIGt2bWlfbXNyX2V2ZW50 KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IG1zcl9kYXRhICptc3IpCisJCQkJeyByZXR1 cm4gdHJ1ZTsgfQogCiAjZW5kaWYgLyogQ09ORklHX0tWTV9JTlRST1NQRUNUSU9OICovCiAKZGlm ZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oIGIvYXJjaC94ODYvaW5j bHVkZS91YXBpL2FzbS9rdm1pLmgKaW5kZXggOWM2MDhlZjVkYWEzLi42ZWYxNDRkZGI0YmIgMTAw NjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCisrKyBiL2FyY2gveDg2 L2luY2x1ZGUvdWFwaS9hc20va3ZtaS5oCkBAIC0xNDEsNCArMTQxLDIyIEBAIHN0cnVjdCBrdm1p X3ZjcHVfZXZlbnRfZGVzY3JpcHRvciB7CiAJX191OCBwYWRkaW5nWzZdOwogfTsKIAorc3RydWN0 IGt2bWlfdmNwdV9jb250cm9sX21zciB7CisJX191OCBlbmFibGU7CisJX191OCBwYWRkaW5nMTsK KwlfX3UxNiBwYWRkaW5nMjsKKwlfX3UzMiBtc3I7Cit9OworCitzdHJ1Y3Qga3ZtaV92Y3B1X2V2 ZW50X21zciB7CisJX191MzIgbXNyOworCV9fdTMyIHBhZGRpbmc7CisJX191NjQgb2xkX3ZhbHVl OworCV9fdTY0IG5ld192YWx1ZTsKK307CisKK3N0cnVjdCBrdm1pX3ZjcHVfZXZlbnRfbXNyX3Jl cGx5IHsKKwlfX3U2NCBuZXdfdmFsOworfTsKKwogI2VuZGlmIC8qIF9VQVBJX0FTTV9YODZfS1ZN SV9IICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5jIGIvYXJjaC94ODYva3ZtL2t2 bWkuYwppbmRleCBjMGMzOGU2NDc4Y2IuLmM4NGExNDBkYjQ1MSAxMDA2NDQKLS0tIGEvYXJjaC94 ODYva3ZtL2t2bWkuYworKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5jCkBAIC0xNiw2ICsxNiw3IEBA IHZvaWQga3ZtaV9hcmNoX2luaXRfdmNwdV9ldmVudHNfbWFzayh1bnNpZ25lZCBsb25nICpzdXBw b3J0ZWQpCiAJc2V0X2JpdChLVk1JX1ZDUFVfRVZFTlRfQ1IsIHN1cHBvcnRlZCk7CiAJc2V0X2Jp dChLVk1JX1ZDUFVfRVZFTlRfSFlQRVJDQUxMLCBzdXBwb3J0ZWQpOwogCXNldF9iaXQoS1ZNSV9W Q1BVX0VWRU5UX0RFU0NSSVBUT1IsIHN1cHBvcnRlZCk7CisJc2V0X2JpdChLVk1JX1ZDUFVfRVZF TlRfTVNSLCBzdXBwb3J0ZWQpOwogCXNldF9iaXQoS1ZNSV9WQ1BVX0VWRU5UX1RSQVAsIHN1cHBv cnRlZCk7CiAJc2V0X2JpdChLVk1JX1ZDUFVfRVZFTlRfWFNFVEJWLCBzdXBwb3J0ZWQpOwogfQpA QCAtMzQ0LDYgKzM0NSw3OCBAQCBzdGF0aWMgdm9pZCBrdm1pX2FyY2hfZGlzYWJsZV9kZXNjX2lu dGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJdmNwdS0+YXJjaC5rdm1pLT5kZXNjcmlw dG9yLmt2bV9pbnRlcmNlcHRlZCA9IGZhbHNlOwogfQogCitzdGF0aWMgdW5zaWduZWQgbG9uZyAq bXNyX21hc2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgKm1zcikKK3sKKwlz d2l0Y2ggKCptc3IpIHsKKwljYXNlIDAgLi4uIDB4MWZmZjoKKwkJcmV0dXJuIHZjcHUtPmFyY2gu a3ZtaS0+bXNydy5rdm1pX21hc2subG93OworCWNhc2UgMHhjMDAwMDAwMCAuLi4gMHhjMDAwMWZm ZjoKKwkJKm1zciAmPSAweDFmZmY7CisJCXJldHVybiB2Y3B1LT5hcmNoLmt2bWktPm1zcncua3Zt aV9tYXNrLmhpZ2g7CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBib29sIHRlc3Rf bXNyX21hc2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBpbnQgbXNyKQoreworCXVu c2lnbmVkIGxvbmcgKm1hc2sgPSBtc3JfbWFzayh2Y3B1LCAmbXNyKTsKKworCWlmICghbWFzaykK KwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuICEhdGVzdF9iaXQobXNyLCBtYXNrKTsKK30KKwor c3RhdGljIGJvb2wgbXNyX2NvbnRyb2woc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1bnNpZ25lZCBp bnQgbXNyLCBib29sIGVuYWJsZSkKK3sKKwl1bnNpZ25lZCBsb25nICptYXNrID0gbXNyX21hc2so dmNwdSwgJm1zcik7CisKKwlpZiAoIW1hc2spCisJCXJldHVybiBmYWxzZTsKKworCWlmIChlbmFi bGUpCisJCXNldF9iaXQobXNyLCBtYXNrKTsKKwllbHNlCisJCWNsZWFyX2JpdChtc3IsIG1hc2sp OworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbXNyX21hc2tfdG9f YmFzZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHVuc2lnbmVkIGxvbmcgKm1hc2spCit7CisJaWYg KG1hc2sgPT0gdmNwdS0+YXJjaC5rdm1pLT5tc3J3Lmt2bWlfbWFzay5oaWdoKQorCQlyZXR1cm4g MHhjMDAwMDAwMDsKKworCXJldHVybiAwOworfQorCit2b2lkIGt2bWlfY29udHJvbF9tc3J3X2lu dGVyY2VwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIGJvb2wgZW5hYmxlKQorewor CXN0YXRpY19jYWxsKGt2bV94ODZfY29udHJvbF9tc3JfaW50ZXJjZXB0KSh2Y3B1LCBtc3IsIE1T Ul9UWVBFX1csCisJCQkJCQkgICBlbmFibGUpOworCW1zcl9jb250cm9sKHZjcHUsIG1zciwgZW5h YmxlKTsKK30KKworc3RhdGljIHZvaWQga3ZtaV9hcmNoX2Rpc2FibGVfbXNyX2ludGVyY2VwdChz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nICptYXNrKQorewor CXVuc2lnbmVkIGludCBtc3JfYmFzZSA9IG1zcl9tYXNrX3RvX2Jhc2UodmNwdSwgbWFzayk7CisJ aW50IG9mZnNldCA9IC0xOworCisJZm9yICg7OykgeworCQlvZmZzZXQgPSBmaW5kX25leHRfYml0 KG1hc2ssIEtWTUlfTlVNX01TUiwgb2Zmc2V0ICsgMSk7CisKKwkJaWYgKG9mZnNldCA+PSBLVk1J X05VTV9NU1IpCisJCQlicmVhazsKKworCQlzdGF0aWNfY2FsbChrdm1feDg2X2NvbnRyb2xfbXNy X2ludGVyY2VwdCkodmNwdSwKKwkJCQltc3JfYmFzZSArIG9mZnNldCwgTVNSX1RZUEVfVywgZmFs c2UpOworCX0KKworCWJpdG1hcF96ZXJvKG1hc2ssIEtWTUlfTlVNX01TUik7Cit9CisKIGludCBr dm1pX2FyY2hfY21kX2NvbnRyb2xfaW50ZXJjZXB0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwKIAkJ CQkgICAgdW5zaWduZWQgaW50IGV2ZW50X2lkLCBib29sIGVuYWJsZSkKIHsKQEAgLTM4NSw5ICs0 NTgsMTMgQEAgdm9pZCBrdm1pX2FyY2hfYnJlYWtwb2ludF9ldmVudChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIHU2NCBndmEsIHU4IGluc25fbGVuKQogCiBzdGF0aWMgdm9pZCBrdm1pX2FyY2hfcmVz dG9yZV9pbnRlcmNlcHRpb24oc3RydWN0IGt2bV92Y3B1ICp2Y3B1KQogeworCXN0cnVjdCBrdm1p X2ludGVyY2VwdGlvbiAqYXJjaF92Y3B1aSA9IHZjcHUtPmFyY2gua3ZtaTsKKwogCWt2bWlfYXJj aF9kaXNhYmxlX2JwX2ludGVyY2VwdCh2Y3B1KTsKIAlrdm1pX2FyY2hfZGlzYWJsZV9jcjN3X2lu dGVyY2VwdCh2Y3B1KTsKIAlrdm1pX2FyY2hfZGlzYWJsZV9kZXNjX2ludGVyY2VwdCh2Y3B1KTsK Kwlrdm1pX2FyY2hfZGlzYWJsZV9tc3JfaW50ZXJjZXB0KHZjcHUsIGFyY2hfdmNwdWktPm1zcncu a3ZtaV9tYXNrLmxvdyk7CisJa3ZtaV9hcmNoX2Rpc2FibGVfbXNyX2ludGVyY2VwdCh2Y3B1LCBh cmNoX3ZjcHVpLT5tc3J3Lmt2bWlfbWFzay5oaWdoKTsKIH0KIAogYm9vbCBrdm1pX2FyY2hfY2xl YW5fdXBfaW50ZXJjZXB0aW9uKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKQEAgLTcwMCwzICs3Nzcs NTIgQEAgYm9vbCBrdm1pX2Rlc2NyaXB0b3JfZXZlbnQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCB1 OCBkZXNjcmlwdG9yLCBib29sIHdyaXRlKQogCXJldHVybiByZXQ7CiB9CiBFWFBPUlRfU1lNQk9M KGt2bWlfZGVzY3JpcHRvcl9ldmVudCk7CisKK3N0YXRpYyBib29sIF9fa3ZtaV9tc3JfZXZlbnQo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3QgbXNyX2RhdGEgKm1zcikKK3sKKwlzdHJ1Y3Qg bXNyX2RhdGEgb2xkX21zciA9IHsKKwkJLmhvc3RfaW5pdGlhdGVkID0gdHJ1ZSwKKwkJLmluZGV4 ID0gbXNyLT5pbmRleCwKKwl9OworCXU2NCByZXBseV92YWx1ZTsKKwl1MzIgYWN0aW9uOworCWJv b2wgcmV0OworCisJaWYgKCF0ZXN0X21zcl9tYXNrKHZjcHUsIG1zci0+aW5kZXgpKQorCQlyZXR1 cm4gdHJ1ZTsKKwlpZiAoc3RhdGljX2NhbGwoa3ZtX3g4Nl9nZXRfbXNyKSh2Y3B1LCAmb2xkX21z cikpCisJCXJldHVybiB0cnVlOworCWlmIChvbGRfbXNyLmRhdGEgPT0gbXNyLT5kYXRhKQorCQly ZXR1cm4gdHJ1ZTsKKworCWFjdGlvbiA9IGt2bWlfbXNnX3NlbmRfdmNwdV9tc3IodmNwdSwgbXNy LT5pbmRleCwgb2xkX21zci5kYXRhLAorCQkJCQltc3ItPmRhdGEsICZyZXBseV92YWx1ZSk7CisJ c3dpdGNoIChhY3Rpb24pIHsKKwljYXNlIEtWTUlfRVZFTlRfQUNUSU9OX0NPTlRJTlVFOgorCQlt c3ItPmRhdGEgPSByZXBseV92YWx1ZTsKKwkJcmV0ID0gdHJ1ZTsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJa3ZtaV9oYW5kbGVfY29tbW9uX2V2ZW50X2FjdGlvbnModmNwdSwgYWN0aW9uKTsKKwkJ cmV0ID0gZmFsc2U7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworYm9vbCBrdm1pX21zcl9ldmVu dChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVjdCBtc3JfZGF0YSAqbXNyKQoreworCXN0cnVj dCBrdm1faW50cm9zcGVjdGlvbiAqa3ZtaTsKKwlib29sIHJldCA9IHRydWU7CisKKwlrdm1pID0g a3ZtaV9nZXQodmNwdS0+a3ZtKTsKKwlpZiAoIWt2bWkpCisJCXJldHVybiB0cnVlOworCisJaWYg KGlzX3ZjcHVfZXZlbnRfZW5hYmxlZCh2Y3B1LCBLVk1JX1ZDUFVfRVZFTlRfTVNSKSkKKwkJcmV0 ID0gX19rdm1pX21zcl9ldmVudCh2Y3B1LCBtc3IpOworCisJa3ZtaV9wdXQodmNwdS0+a3ZtKTsK KworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0va3ZtaS5oIGIvYXJj aC94ODYva3ZtL2t2bWkuaAppbmRleCA5MjQyMmUyZTU3Y2YuLjY0ODNlZGJiODBjNSAxMDA2NDQK LS0tIGEvYXJjaC94ODYva3ZtL2t2bWkuaAorKysgYi9hcmNoL3g4Ni9rdm0va3ZtaS5oCkBAIC0x Nyw1ICsxNyw4IEBAIHUzMiBrdm1pX21zZ19zZW5kX3ZjcHVfdHJhcChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpOwogdTMyIGt2bWlfbXNnX3NlbmRfdmNwdV94c2V0YnYoc3RydWN0IGt2bV92Y3B1ICp2 Y3B1LCB1OCB4Y3IsCiAJCQkgICAgICB1NjQgb2xkX3ZhbHVlLCB1NjQgbmV3X3ZhbHVlKTsKIHUz MiBrdm1pX21zZ19zZW5kX3ZjcHVfZGVzY3JpcHRvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4 IGRlc2MsIGJvb2wgd3JpdGUpOwordm9pZCBrdm1pX2NvbnRyb2xfbXNyd19pbnRlcmNlcHQoc3Ry dWN0IGt2bV92Y3B1ICp2Y3B1LCB1MzIgbXNyLCBib29sIGVuYWJsZSk7Cit1MzIga3ZtaV9tc2df c2VuZF92Y3B1X21zcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBvbGRfdmFs dWUsCisJCQkgICB1NjQgbmV3X3ZhbHVlLCB1NjQgKnJldF92YWx1ZSk7CiAKICNlbmRpZgpkaWZm IC0tZ2l0IGEvYXJjaC94ODYva3ZtL2t2bWlfbXNnLmMgYi9hcmNoL3g4Ni9rdm0va3ZtaV9tc2cu YwppbmRleCBiNzRkZjNmYzgzMmQuLjk4ZTI5ZTFkMzk2MSAxMDA2NDQKLS0tIGEvYXJjaC94ODYv a3ZtL2t2bWlfbXNnLmMKKysrIGIvYXJjaC94ODYva3ZtL2t2bWlfbXNnLmMKQEAgLTI0OCw4ICsy NDgsMzYgQEAgc3RhdGljIGludCBoYW5kbGVfdmNwdV9nZXRfbXRycl90eXBlKGNvbnN0IHN0cnVj dCBrdm1pX3ZjcHVfbXNnX2pvYiAqam9iLAogCXJldHVybiBrdm1pX21zZ192Y3B1X3JlcGx5KGpv YiwgbXNnLCAwLCAmcnBsLCBzaXplb2YocnBsKSk7CiB9CiAKK3N0YXRpYyBib29sIGlzX3ZhbGlk X21zcih1bnNpZ25lZCBpbnQgbXNyKQoreworCXJldHVybiBtc3IgPD0gMHgxZmZmIHx8IChtc3Ig Pj0gMHhjMDAwMDAwMCAmJiBtc3IgPD0gMHhjMDAwMWZmZik7Cit9CisKK3N0YXRpYyBpbnQgaGFu ZGxlX3ZjcHVfY29udHJvbF9tc3IoY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9tc2dfam9iICpqb2Is CisJCQkJICAgY29uc3Qgc3RydWN0IGt2bWlfbXNnX2hkciAqbXNnLAorCQkJCSAgIGNvbnN0IHZv aWQgKl9yZXEpCit7CisJY29uc3Qgc3RydWN0IGt2bWlfdmNwdV9jb250cm9sX21zciAqcmVxID0g X3JlcTsKKwlpbnQgZWMgPSAwOworCisJaWYgKHJlcS0+cGFkZGluZzEgfHwgcmVxLT5wYWRkaW5n MiB8fCByZXEtPmVuYWJsZSA+IDEpCisJCWVjID0gLUtWTV9FSU5WQUw7CisJZWxzZSBpZiAoIWlz X3ZhbGlkX21zcihyZXEtPm1zcikpCisJCWVjID0gLUtWTV9FSU5WQUw7CisJZWxzZSBpZiAocmVx LT5lbmFibGUgJiYKKwkJICFrdm1fbXNyX2FsbG93ZWQoam9iLT52Y3B1LCByZXEtPm1zciwKKwkJ CQkgIEtWTV9NU1JfRklMVEVSX1dSSVRFKSkKKwkJZWMgPSAtS1ZNX0VQRVJNOworCWVsc2UKKwkJ a3ZtaV9jb250cm9sX21zcndfaW50ZXJjZXB0KGpvYi0+dmNwdSwgcmVxLT5tc3IsCisJCQkJCSAg ICByZXEtPmVuYWJsZSA9PSAxKTsKKworCXJldHVybiBrdm1pX21zZ192Y3B1X3JlcGx5KGpvYiwg bXNnLCBlYywgTlVMTCwgMCk7Cit9CisKIHN0YXRpYyBjb25zdCBrdm1pX3ZjcHVfbXNnX2pvYl9m Y3QgbXNnX3ZjcHVbXSA9IHsKIAlbS1ZNSV9WQ1BVX0NPTlRST0xfQ1JdICAgICAgID0gaGFuZGxl X3ZjcHVfY29udHJvbF9jciwKKwlbS1ZNSV9WQ1BVX0NPTlRST0xfTVNSXSAgICAgID0gaGFuZGxl X3ZjcHVfY29udHJvbF9tc3IsCiAJW0tWTUlfVkNQVV9HRVRfQ1BVSURdICAgICAgICA9IGhhbmRs ZV92Y3B1X2dldF9jcHVpZCwKIAlbS1ZNSV9WQ1BVX0dFVF9JTkZPXSAgICAgICAgID0gaGFuZGxl X3ZjcHVfZ2V0X2luZm8sCiAJW0tWTUlfVkNQVV9HRVRfTVRSUl9UWVBFXSAgICA9IGhhbmRsZV92 Y3B1X2dldF9tdHJyX3R5cGUsCkBAIC0zNDksMyArMzc3LDI3IEBAIHUzMiBrdm1pX21zZ19zZW5k X3ZjcHVfZGVzY3JpcHRvcihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHU4IGRlc2MsIGJvb2wgd3Jp dGUpCiAJcmV0dXJuIGFjdGlvbjsKIAogfQorCit1MzIga3ZtaV9tc2dfc2VuZF92Y3B1X21zcihz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHUzMiBtc3IsIHU2NCBvbGRfdmFsdWUsCisJCQkgICB1NjQg bmV3X3ZhbHVlLCB1NjQgKnJldF92YWx1ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV92Y3B1X2V2ZW50X21z ciBlOworCXN0cnVjdCBrdm1pX3ZjcHVfZXZlbnRfbXNyX3JlcGx5IHI7CisJaW50IGVyciwgYWN0 aW9uOworCisJbWVtc2V0KCZlLCAwLCBzaXplb2YoZSkpOworCWUubXNyID0gbXNyOworCWUub2xk X3ZhbHVlID0gb2xkX3ZhbHVlOworCWUubmV3X3ZhbHVlID0gbmV3X3ZhbHVlOworCisJZXJyID0g a3ZtaV9zZW5kX3ZjcHVfZXZlbnQodmNwdSwgS1ZNSV9WQ1BVX0VWRU5UX01TUiwgJmUsIHNpemVv ZihlKSwKKwkJCQkgICAmciwgc2l6ZW9mKHIpLCAmYWN0aW9uKTsKKwlpZiAoZXJyKSB7CisJCWFj dGlvbiA9IEtWTUlfRVZFTlRfQUNUSU9OX0NPTlRJTlVFOworCQkqcmV0X3ZhbHVlID0gbmV3X3Zh bHVlOworCX0gZWxzZSB7CisJCSpyZXRfdmFsdWUgPSByLm5ld192YWw7CisJfQorCisJcmV0dXJu IGFjdGlvbjsKK30KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2 bS94ODYuYwppbmRleCA5OWIzNWU2OTAyOWEuLjIzOGYzZGUxMDg5NCAxMDA2NDQKLS0tIGEvYXJj aC94ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMTcxNCw2ICsxNzE0 LDkgQEAgc3RhdGljIGludCBfX2t2bV9zZXRfbXNyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgdTMy IGluZGV4LCB1NjQgZGF0YSwKIAltc3IuaW5kZXggPSBpbmRleDsKIAltc3IuaG9zdF9pbml0aWF0 ZWQgPSBob3N0X2luaXRpYXRlZDsKIAorCWlmICghaG9zdF9pbml0aWF0ZWQgJiYgIWt2bWlfbXNy X2V2ZW50KHZjcHUsICZtc3IpKQorCQlyZXR1cm4gMTsKKwogCXJldHVybiBzdGF0aWNfY2FsbChr dm1feDg2X3NldF9tc3IpKHZjcHUsICZtc3IpOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Vh cGkvbGludXgva3ZtaS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWkuaAppbmRleCBhYTI1N2Iw MTFmZjEuLjJkM2VjODk5ODgwMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L2t2bWku aAorKysgYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtaS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGVudW0g ewogCUtWTUlfVkNQVV9HRVRfWFNBVkUgICAgICAgID0gS1ZNSV9WQ1BVX01FU1NBR0VfSUQoOSks CiAJS1ZNSV9WQ1BVX1NFVF9YU0FWRSAgICAgICAgPSBLVk1JX1ZDUFVfTUVTU0FHRV9JRCgxMCks CiAJS1ZNSV9WQ1BVX0dFVF9NVFJSX1RZUEUgICAgPSBLVk1JX1ZDUFVfTUVTU0FHRV9JRCgxMSks CisJS1ZNSV9WQ1BVX0NPTlRST0xfTVNSICAgICAgPSBLVk1JX1ZDUFVfTUVTU0FHRV9JRCgxMiks CiAKIAlLVk1JX05FWFRfVkNQVV9NRVNTQUdFCiB9OwpAQCAtNjgsNiArNjksNyBAQCBlbnVtIHsK IAlLVk1JX1ZDUFVfRVZFTlRfVFJBUCAgICAgICA9IEtWTUlfVkNQVV9FVkVOVF9JRCg0KSwKIAlL Vk1JX1ZDUFVfRVZFTlRfWFNFVEJWICAgICA9IEtWTUlfVkNQVV9FVkVOVF9JRCg1KSwKIAlLVk1J X1ZDUFVfRVZFTlRfREVTQ1JJUFRPUiA9IEtWTUlfVkNQVV9FVkVOVF9JRCg2KSwKKwlLVk1JX1ZD UFVfRVZFTlRfTVNSICAgICAgICA9IEtWTUlfVkNQVV9FVkVOVF9JRCg3KSwKIAogCUtWTUlfTkVY VF9WQ1BVX0VWRU5UCiB9OwpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3Zt L3g4Nl82NC9rdm1pX3Rlc3QuYyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQv a3ZtaV90ZXN0LmMKaW5kZXggYzFjZTE2M2JjM2M0Li4zOTNhN2NjOTNjZTYgMTAwNjQ0Ci0tLSBh L3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODZfNjQva3ZtaV90ZXN0LmMKKysrIGIvdG9v bHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtL3g4Nl82NC9rdm1pX3Rlc3QuYwpAQCAtNjAsNiArNjAs NyBAQCBlbnVtIHsKIAlHVUVTVF9URVNUX0NSLAogCUdVRVNUX1RFU1RfREVTQ1JJUFRPUiwKIAlH VUVTVF9URVNUX0hZUEVSQ0FMTCwKKwlHVUVTVF9URVNUX01TUiwKIAlHVUVTVF9URVNUX1hTRVRC ViwKIH07CiAKQEAgLTEwNCw2ICsxMDUsMTUgQEAgc3RhdGljIHZvaWQgZ3Vlc3RfaHlwZXJjYWxs X3Rlc3Qodm9pZCkKIAlhc20gdm9sYXRpbGUoIi5ieXRlIDB4MGYsMHgwMSwweGMxIik7CiB9CiAK K3N0YXRpYyB2b2lkIGd1ZXN0X21zcl90ZXN0KHZvaWQpCit7CisJdWludDY0X3QgbXNyOworCisJ bXNyID0gcmRtc3IoTVNSX01JU0NfRkVBVFVSRVNfRU5BQkxFUyk7CisJbXNyIHw9IDE7IC8qIE1T Ul9NSVNDX0ZFQVRVUkVTX0VOQUJMRVNfQ1BVSURfRkFVTFQgKi8KKwl3cm1zcihNU1JfTUlTQ19G RUFUVVJFU19FTkFCTEVTLCBtc3IpOworfQorCiAvKiBmcm9tIGZwdS9pbnRlcm5hbC5oICovCiBz dGF0aWMgdTY0IHhnZXRidih1MzIgaW5kZXgpCiB7CkBAIC0xNjEsNiArMTcxLDkgQEAgc3RhdGlj IHZvaWQgZ3Vlc3RfY29kZSh2b2lkKQogCQljYXNlIEdVRVNUX1RFU1RfSFlQRVJDQUxMOgogCQkJ Z3Vlc3RfaHlwZXJjYWxsX3Rlc3QoKTsKIAkJCWJyZWFrOworCQljYXNlIEdVRVNUX1RFU1RfTVNS OgorCQkJZ3Vlc3RfbXNyX3Rlc3QoKTsKKwkJCWJyZWFrOwogCQljYXNlIEdVRVNUX1RFU1RfWFNF VEJWOgogCQkJZ3Vlc3RfeHNldGJ2X3Rlc3QoKTsKIAkJCWJyZWFrOwpAQCAtMTU2OCw2ICsxNTgx LDEwMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2V2ZW50X2Rlc2NyaXB0b3Ioc3RydWN0IGt2bV92bSAq dm0pCiAJZGlzYWJsZV92Y3B1X2V2ZW50KHZtLCBldmVudF9pZCk7CiB9CiAKK3N0YXRpYyB2b2lk IGNtZF9jb250cm9sX21zcihzdHJ1Y3Qga3ZtX3ZtICp2bSwgX191MzIgbXNyLCBfX3U4IGVuYWJs ZSwKKwkJCSAgICBpbnQgZXhwZWN0ZWRfZXJyKQoreworCXN0cnVjdCB7CisJCXN0cnVjdCBrdm1p X21zZ19oZHIgaGRyOworCQlzdHJ1Y3Qga3ZtaV92Y3B1X2hkciB2Y3B1X2hkcjsKKwkJc3RydWN0 IGt2bWlfdmNwdV9jb250cm9sX21zciBjbWQ7CisJfSByZXEgPSB7fTsKKworCXJlcS5jbWQubXNy ID0gbXNyOworCXJlcS5jbWQuZW5hYmxlID0gZW5hYmxlOworCisJdGVzdF92Y3B1MF9jb21tYW5k KHZtLCBLVk1JX1ZDUFVfQ09OVFJPTF9NU1IsICZyZXEuaGRyLCBzaXplb2YocmVxKSwKKwkJCSAg ICAgTlVMTCwgMCwgZXhwZWN0ZWRfZXJyKTsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlX21zcl9l dmVudHMoc3RydWN0IGt2bV92bSAqdm0sIF9fdTMyIG1zcikKK3sKKwllbmFibGVfdmNwdV9ldmVu dCh2bSwgS1ZNSV9WQ1BVX0VWRU5UX01TUik7CisJY21kX2NvbnRyb2xfbXNyKHZtLCBtc3IsIDEs IDApOworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlX21zcl9ldmVudHMoc3RydWN0IGt2bV92bSAq dm0sIF9fdTMyIG1zcikKK3sKKwljbWRfY29udHJvbF9tc3Iodm0sIG1zciwgMCwgMCk7CisJZGlz YWJsZV92Y3B1X2V2ZW50KHZtLCBLVk1JX1ZDUFVfRVZFTlRfTVNSKTsKK30KKworc3RhdGljIHZv aWQgaGFuZGxlX21zcl9ldmVudChzdHJ1Y3Qga3ZtX3ZtICp2bSwgX191MTYgZXZlbnRfaWQsIF9f dTMyIG1zciwKKwkJCSAgICAgX191NjQgKm9sZF92YWx1ZSkKK3sKKwlzdHJ1Y3Qga3ZtaV9tc2df aGRyIGhkcjsKKwlzdHJ1Y3QgeworCQlzdHJ1Y3QgdmNwdV9ldmVudCB2Y3B1X2V2OworCQlzdHJ1 Y3Qga3ZtaV92Y3B1X2V2ZW50X21zciBtc3I7CisJfSBldjsKKwlzdHJ1Y3QgeworCQlzdHJ1Y3Qg dmNwdV9yZXBseSBjb21tb247CisJCXN0cnVjdCBrdm1pX3ZjcHVfZXZlbnRfbXNyX3JlcGx5IG1z cjsKKwl9IHJwbCA9IHt9OworCisJcmVjZWl2ZV92Y3B1X2V2ZW50KCZoZHIsICZldi52Y3B1X2V2 LCBzaXplb2YoZXYpLCBldmVudF9pZCk7CisKKwlwcl9kZWJ1ZygiTVNSIDB4JXgsIG9sZCAweCVs bHgsIG5ldyAweCVsbHhcbiIsCisJCSBldi5tc3IubXNyLCBldi5tc3Iub2xkX3ZhbHVlLCBldi5t c3IubmV3X3ZhbHVlKTsKKworCVRFU1RfQVNTRVJUKGV2Lm1zci5tc3IgPT0gbXNyLAorCQkiVW5l eHBlY3RlZCBNU1IgZXZlbnQsIHJlY2VpdmVkIE1TUiAweCV4LCBleHBlY3RlZCBNU1IgMHgleCIs CisJCWV2Lm1zci5tc3IsIG1zcik7CisKKwkqb2xkX3ZhbHVlID0gcnBsLm1zci5uZXdfdmFsID0g ZXYubXNyLm9sZF92YWx1ZTsKKworCXJlcGx5X3RvX2V2ZW50KCZoZHIsICZldi52Y3B1X2V2LCBL Vk1JX0VWRU5UX0FDVElPTl9DT05USU5VRSwKKwkJCSZycGwuY29tbW9uLCBzaXplb2YocnBsKSk7 Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfaW52YWxpZF9jb250cm9sX21zcihzdHJ1Y3Qga3ZtX3Zt ICp2bSwgX191MzIgbXNyKQoreworCV9fdTggZW5hYmxlID0gMSwgZW5hYmxlX2ludmFsID0gMjsK KwlpbnQgZXhwZWN0ZWRfZXJyID0gLUtWTV9FSU5WQUw7CisJX191MzIgbXNyX2ludmFsID0gLTE7 CisKKwljbWRfY29udHJvbF9tc3Iodm0sIG1zciwgZW5hYmxlX2ludmFsLCBleHBlY3RlZF9lcnIp OworCWNtZF9jb250cm9sX21zcih2bSwgbXNyX2ludmFsLCBlbmFibGUsIGV4cGVjdGVkX2Vycik7 Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfY21kX3ZjcHVfY29udHJvbF9tc3Ioc3RydWN0IGt2bV92 bSAqdm0pCit7CisJc3RydWN0IHZjcHVfd29ya2VyX2RhdGEgZGF0YSA9IHsKKwkJLnZtID0gdm0s CisJCS52Y3B1X2lkID0gVkNQVV9JRCwKKwkJLnRlc3RfaWQgPSBHVUVTVF9URVNUX01TUiwKKwl9 OworCV9fdTE2IGV2ZW50X2lkID0gS1ZNSV9WQ1BVX0VWRU5UX01TUjsKKwlfX3UzMiBtc3IgPSBN U1JfTUlTQ19GRUFUVVJFU19FTkFCTEVTOworCXB0aHJlYWRfdCB2Y3B1X3RocmVhZDsKKwl1aW50 NjRfdCBtc3JfZGF0YTsKKwlfX3U2NCBvbGRfdmFsdWU7CisKKwllbmFibGVfbXNyX2V2ZW50cyh2 bSwgbXNyKTsKKworCXZjcHVfdGhyZWFkID0gc3RhcnRfdmNwdV93b3JrZXIoJmRhdGEpOworCisJ aGFuZGxlX21zcl9ldmVudCh2bSwgZXZlbnRfaWQsIG1zciwgJm9sZF92YWx1ZSk7CisKKwl3YWl0 X3ZjcHVfd29ya2VyKHZjcHVfdGhyZWFkKTsKKworCWRpc2FibGVfbXNyX2V2ZW50cyh2bSwgbXNy KTsKKworCW1zcl9kYXRhID0gdmNwdV9nZXRfbXNyKHZtLCBWQ1BVX0lELCBtc3IpOworCVRFU1Rf QVNTRVJUKG1zcl9kYXRhID09IG9sZF92YWx1ZSwKKwkJIkZhaWxlZCB0byBibG9jayBNU1IgMHgl eCB1cGRhdGUsIHZhbHVlIDB4JWx4LCBleHBlY3RlZCAweCVsbHgiLAorCQltc3IsIG1zcl9kYXRh LCBvbGRfdmFsdWUpOworCisJdGVzdF9pbnZhbGlkX2NvbnRyb2xfbXNyKHZtLCBtc3IpOworfQor CiBzdGF0aWMgdm9pZCB0ZXN0X2ludHJvc3BlY3Rpb24oc3RydWN0IGt2bV92bSAqdm0pCiB7CiAJ c3JhbmRvbSh0aW1lKDApKTsKQEAgLTE1OTgsNiArMTcwOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rf aW50cm9zcGVjdGlvbihzdHJ1Y3Qga3ZtX3ZtICp2bSkKIAl0ZXN0X2NtZF92Y3B1X3hzYXZlKHZt KTsKIAl0ZXN0X2NtZF92Y3B1X2dldF9tdHJyX3R5cGUodm0pOwogCXRlc3RfZXZlbnRfZGVzY3Jp cHRvcih2bSk7CisJdGVzdF9jbWRfdmNwdV9jb250cm9sX21zcih2bSk7CiAKIAl1bmhvb2tfaW50 cm9zcGVjdGlvbih2bSk7CiB9Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0 cy5saW51eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcv bWFpbG1hbi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==