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=-3.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no 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 2829BC0650F for ; Tue, 30 Jul 2019 16:36:47 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 E4D14208E3 for ; Tue, 30 Jul 2019 16:36:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="uU3qSqAu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E4D14208E3 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hsV74-0002hl-50; Tue, 30 Jul 2019 16:36:34 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hsV72-0002ha-LK for xen-devel@lists.xenproject.org; Tue, 30 Jul 2019 16:36:32 +0000 X-Inumbo-ID: 2d366af6-b2e8-11e9-ab74-cfd9db5ca503 Received: from NAM05-CO1-obe.outbound.protection.outlook.com (unknown [40.107.72.85]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 2d366af6-b2e8-11e9-ab74-cfd9db5ca503; Tue, 30 Jul 2019 16:36:27 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UaUzHAKxHjMlNwN3DAHCzquU2b6+AFLXYS1XROgTG/xJcAaqMGWd7Bf7H1fFamaCeXIAB5eX3/KuadrgLr7tb6ZFjePWsn48vwCC7le2QFDDcFUtEby7Yd6kGtlEkFqFK7XFr94gfKYL+pbDFKJvzLnVgJGvXvzbnKEpBbCOQelhHs6YtlTxJwVCNYHB56QgM3hJ9FAeHSwm0Ofg/m7V/aCeH5XXTmOP1AmVocuNKehpMe+3NrII0wR/D7/qn+LBto/ezGUxgagziKYvDiB/TlkS46j6y3emskuBFOUaiCX3hjKTGTr7sfs10WviEhHGbRC4yP2x6jeD3pCdXCTFjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6NbtVd7/QHZMn3rvJHgCM244IIO1nkH3wbmha9ec8hw=; b=FTFyUwMHfnTKO1IySdLKmqKzm3vJIyuQLufA57rg+0owaq2Aohz39iqgyvKMYpvp/WQInhftgZmuMj2xiZnOzMEdkCKWSSUVB82mh46K3BBZJzD2cMee9KG8OIyRyxpY4J94XUEIe0iUenRhgRJd4uio/5EKvB5oYOdifj2Y1t8AyZrYhpxilIbATPZLwgvqknciaX3SlxPQmwX/8NoDsbxStY1Qg8Eduubwq5Vstci8lS++SMCamFK2TJN28hwtkrR9sVD9yT457lGA9GHmmnagAnRIYcqkec1YS89F63Pu/mkiQnQHsOO3vDHz/SDpwvKLfUzttlvOSBWrTnbF9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=amd.com;dmarc=pass action=none header.from=amd.com;dkim=pass header.d=amd.com;arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6NbtVd7/QHZMn3rvJHgCM244IIO1nkH3wbmha9ec8hw=; b=uU3qSqAuG6/HEu1pE4fD/wx8yl6OY9dCFPU02DD8DRE0B6GtFGCqDKtA9zUR33aNNmRgtGfdquAGXxQVdO1P7tlDCUIjXOTao8Yp5OZn/3QgFQ7vvwltzZOT28idsK2CDxmC3CGV4HXiIN6EOAd/khMQa0ZvwszaKRPnuKM1asU= Received: from MN2PR12MB3520.namprd12.prod.outlook.com (20.179.82.28) by MN2PR12MB4207.namprd12.prod.outlook.com (52.135.50.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2115.10; Tue, 30 Jul 2019 16:36:26 +0000 Received: from MN2PR12MB3520.namprd12.prod.outlook.com ([fe80::3cfb:fd2c:cea1:9cb9]) by MN2PR12MB3520.namprd12.prod.outlook.com ([fe80::3cfb:fd2c:cea1:9cb9%5]) with mapi id 15.20.2115.005; Tue, 30 Jul 2019 16:36:26 +0000 From: "Woods, Brian" To: Jan Beulich Thread-Topic: [PATCH v4 05/12] AMD/IOMMU: introduce 128-bit IRTE non-guest-APIC IRTE format Thread-Index: AQHVQu62ltrfkgaV+kq8icW/LMbjJabjY/uA Date: Tue, 30 Jul 2019 16:36:26 +0000 Message-ID: <20190730163622.GB31577@amd.com> References: <193f3db9-5731-6841-4723-fa547f89db07@suse.com> In-Reply-To: <193f3db9-5731-6841-4723-fa547f89db07@suse.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: SN4PR0801CA0021.namprd08.prod.outlook.com (2603:10b6:803:29::31) To MN2PR12MB3520.namprd12.prod.outlook.com (2603:10b6:208:100::28) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Brian.Woods@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.77.1] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f6b990e8-60b0-4019-aec5-08d7150c109d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020); SRVR:MN2PR12MB4207; x-ms-traffictypediagnostic: MN2PR12MB4207: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 0114FF88F6 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(396003)(136003)(346002)(366004)(376002)(199004)(189003)(54094003)(316002)(476003)(2906002)(2616005)(66946007)(486006)(186003)(6436002)(99286004)(6916009)(66446008)(33656002)(14454004)(64756008)(71190400001)(7736002)(53946003)(6512007)(6486002)(1076003)(66556008)(66476007)(36756003)(11346002)(256004)(71200400001)(4326008)(478600001)(446003)(53936002)(14444005)(25786009)(5660300002)(229853002)(86362001)(6116002)(81166006)(81156014)(3846002)(30864003)(102836004)(8676002)(8936002)(305945005)(76176011)(54906003)(66066001)(52116002)(6246003)(68736007)(6506007)(26005)(386003); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR12MB4207; H:MN2PR12MB3520.namprd12.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 2dX+0X+k3J9wQVg+5HZHHZGX80Q9cySqmZhGFkfD7s5b2MJSSXKFVaSQfm9TFUE7w+nQNk2iyTh2S3sjYrr30hat1ZCyf580u/ysapseVOa1aClA7Fp8c20X+eojrFDyvsR52+Ch8C2xyCNoiSKl8VVxM+DUwU08uzii0s6CGYeN+RWVD9Gi4UkYB5eHmdqYpBdlAbX+QV8kGzWDmrI6msCb31fpGg2aBxRJtMpna0z7k0zNm52s43q6Q3ErVCzT22o8XqILPQMyWgUcXb44sOdJJQocnPaSQL2NIpZM5OAiae+qEBS3MjAeTIMT7yrBhym91kbut3ZsoxqjQVaaVXid468BnIkV2a4A7yAl9bSP2OteuXaHxDQkRf7AxR5R004cdN7vj5MwO+pIRK151UXvaHtQLYsxX5c7aay4Gbs= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6b990e8-60b0-4019-aec5-08d7150c109d X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jul 2019 16:36:26.0383 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: brwoods@amd.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4207 Subject: Re: [Xen-devel] [PATCH v4 05/12] AMD/IOMMU: introduce 128-bit IRTE non-guest-APIC IRTE format X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: "xen-devel@lists.xenproject.org" , "Woods, Brian" , "Suthikulpanit, Suravee" , Andrew Cooper Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gVGh1LCBKdWwgMjUsIDIwMTkgYXQgMDE6MzE6MDJQTSArMDAwMCwgSmFuIEJldWxpY2ggd3Jv dGU6Cj4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBvZiBhY3R1YWxseSBlbmFibGluZyB4MkFQSUMg bW9kZSwgd2hpY2ggcmVxdWlyZXMKPiB0aGlzIHdpZGVyIElSVEUgZm9ybWF0IHRvIGJlIHVzZWQu Cj4gCj4gQSBzcGVjaWZpYyByZW1hcmsgcmVnYXJkaW5nIHRoZSBmaXJzdCBodW5rIGNoYW5naW5n Cj4gYW1kX2lvbW11X2lvYXBpY191cGRhdGVfaXJlKCk6IFRoaXMgYnlwYXNzIHdhcyBpbnRyb2R1 Y2VkIGZvciBYU0EtMzYsCj4gaS5lLiBieSA5NGQ0YTExMTlkICgiQU1ELElPTU1VOiBDbGVhbiB1 cCBvbGQgZW50cmllcyBpbiByZW1hcHBpbmcKPiB0YWJsZXMgd2hlbiBjcmVhdGluZyBuZXcgb25l IikuIE90aGVyIGNvZGUgaW50cm9kdWNlZCBieSB0aGF0IGNoYW5nZSBoYXMKPiBtZWFud2hpbGUg ZGlzYXBwZWFyZWQgb3IgZnVydGhlciBjaGFuZ2VkLCBhbmQgSSB3b25kZXIgaWYgLSByYXRoZXIg dGhhbgo+IGFkZGluZyBhbiB4MmFwaWNfZW5hYmxlZCBjaGVjayB0byB0aGUgY29uZGl0aW9uYWwg LSB0aGUgYnlwYXNzIGNvdWxkbid0Cj4gYmUgZGVsZXRlZCBhbHRvZ2V0aGVyLiBGb3Igbm93IHRo ZSBnb2FsIGlzIHRvIGFmZmVjdCB0aGUgbm9uLXgyQVBJQwo+IHBhdGhzIGFzIGxpdHRsZSBhcyBw b3NzaWJsZS4KPiAKPiBUYWtlIHRoZSBsaWJlcnR5IGFuZCB1c2UgdGhlIG5ldyAiZnJlc2giIGZs YWcgdG8gc3VwcHJlc3MgYW4gdW5uZWVkZWQKPiBmbHVzaCBpbiB1cGRhdGVfaW50cmVtYXBfZW50 cnlfZnJvbV9pb2FwaWMoKS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxp Y2hAc3VzZS5jb20+CgpBY2tlZC1ieTogQnJpYW4gV29vZHMgPGJyaWFuLndvb2RzQGFtZC5jb20+ Cgo+IC0tLQo+IHY0OiBSZS1iYXNlLiBEbyBhd2F5IHdpdGggc3RhbmRhbG9uZSBzdHJ1Y3QgaXJ0 ZV9mdWxsLiBVc2Ugc21wX3dtYigpLgo+IHYzOiBBdm9pZCB1bnJlbGF0ZWQgdHlwZSBjaGFuZ2Vz IGluIHVwZGF0ZV9pbnRyZW1hcF9lbnRyeV9mcm9tX2lvYXBpYygpLgo+ICAgICAgRHJvcCBpcnRl X21vZGUgZW51bSBhbmQgdmFyaWFibGUuIENvbnZlcnQgSU5UUkVNQVBfVEFCTEVfT1JERVIgaW50 bwo+ICAgICAgYSBzdGF0aWMgaGVscGVyLiBDb21tZW50IGJhcnJpZXIoKSB1c2VzLiBTd2l0Y2gg Ym9vbGVhbiBiaXRmaWVsZHMgdG8KPiAgICAgIGJvb2wuCj4gdjI6IEFkZCBjYXN0IGluIGdldF9m dWxsX2Rlc3QoKS4gUmUtYmFzZSBvdmVyIGNoYW5nZXMgZWFybGllciBpbiB0aGUKPiAgICAgIHNl cmllcy4gRG9uJ3QgdXNlIGNtcHhjaGcxNmIuIFVzZSBiYXJyaWVyKCkgaW5zdGVhZCBvZiB3bWIo KS4KPiAtLS0KPiBOb3RlIHRoYXQgQU1EJ3MgZG9jIHNheXMgTG93ZXN0IFByaW9yaXR5ICgiQXJi aXRyYXRlZCIgYnkgdGhlaXIgbmFtaW5nKQo+IG1vZGUgaXMgdW5hdmFpbGFibGUgaW4geDJBUElD IG1vZGUsIGJ1dCB0aGV5J3ZlIGNvbmZpcm1lZCB0aGlzIHRvIGJlIGEKPiBtaXN0YWtlIG9uIHRo ZWlyIHBhcnQuCj4gCj4gLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYW1kL2lvbW11X2lu dHIuYwo+ICsrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2FtZC9pb21tdV9pbnRyLmMKPiBA QCAtMzksMTIgKzM5LDM2IEBAIHVuaW9uIGlydGUzMiB7Cj4gICAgICAgfSBmbGRzOwo+ICAgfTsK PiAgIAo+ICt1bmlvbiBpcnRlMTI4IHsKPiArICAgIHVpbnQ2NF90IHJhd1syXTsKPiArICAgIHN0 cnVjdCB7Cj4gKyAgICAgICAgYm9vbCByZW1hcF9lbjoxOwo+ICsgICAgICAgIGJvb2wgc3VwX2lv X3BmOjE7Cj4gKyAgICAgICAgdW5zaWduZWQgaW50IGludF90eXBlOjM7Cj4gKyAgICAgICAgYm9v bCBycV9lb2k6MTsKPiArICAgICAgICBib29sIGRtOjE7Cj4gKyAgICAgICAgYm9vbCBndWVzdF9t b2RlOjE7IC8qIE1CWiAqLwo+ICsgICAgICAgIHVuc2lnbmVkIGludCBkZXN0X2xvOjI0Owo+ICsg ICAgICAgIHVuc2lnbmVkIGludCA6MzI7Cj4gKyAgICAgICAgdW5zaWduZWQgaW50IHZlY3Rvcjo4 Owo+ICsgICAgICAgIHVuc2lnbmVkIGludCA6MjQ7Cj4gKyAgICAgICAgdW5zaWduZWQgaW50IDoy NDsKPiArICAgICAgICB1bnNpZ25lZCBpbnQgZGVzdF9oaTo4Owo+ICsgICAgfSBmdWxsOwo+ICt9 Owo+ICsKPiAgIHVuaW9uIGlydGVfcHRyIHsKPiAgICAgICB2b2lkICpwdHI7Cj4gICAgICAgdW5p b24gaXJ0ZTMyICpwdHIzMjsKPiArICAgIHVuaW9uIGlydGUxMjggKnB0cjEyODsKPiAgIH07Cj4g ICAKPiAtI2RlZmluZSBJTlRSRU1BUF9UQUJMRV9PUkRFUiAgICAxCj4gK3VuaW9uIGlydGVfY3B0 ciB7Cj4gKyAgICBjb25zdCB2b2lkICpwdHI7Cj4gKyAgICBjb25zdCB1bmlvbiBpcnRlMzIgKnB0 cjMyOwo+ICsgICAgY29uc3QgdW5pb24gaXJ0ZTEyOCAqcHRyMTI4Owo+ICt9IF9fdHJhbnNwYXJl bnRfXzsKPiArCj4gICAjZGVmaW5lIElOVFJFTUFQX0xFTkdUSCAweEIKPiAgICNkZWZpbmUgSU5U UkVNQVBfRU5UUklFUyAoMSA8PCBJTlRSRU1BUF9MRU5HVEgpCj4gICAKPiBAQCAtNTcsNiArODEs MTMgQEAgdW5zaWduZWQgaW50IG5yX2lvYXBpY19zYmRmOwo+ICAgCj4gICBzdGF0aWMgdm9pZCBk dW1wX2ludHJlbWFwX3RhYmxlcyh1bnNpZ25lZCBjaGFyIGtleSk7Cj4gICAKPiArc3RhdGljIHVu c2lnbmVkIGludCBfX2luaXQgaW50cmVtYXBfdGFibGVfb3JkZXIoY29uc3Qgc3RydWN0IGFtZF9p b21tdSAqaW9tbXUpCj4gK3sKPiArICAgIHJldHVybiBpb21tdS0+Y3RybC5nYV9lbgo+ICsgICAg ICAgICAgID8gZ2V0X29yZGVyX2Zyb21fYnl0ZXMoSU5UUkVNQVBfRU5UUklFUyAqIHNpemVvZih1 bmlvbiBpcnRlMTI4KSkKPiArICAgICAgICAgICA6IGdldF9vcmRlcl9mcm9tX2J5dGVzKElOVFJF TUFQX0VOVFJJRVMgKiBzaXplb2YodW5pb24gaXJ0ZTMyKSk7Cj4gK30KPiArCj4gICB1bnNpZ25l ZCBpbnQgaW9hcGljX2lkX3RvX2luZGV4KHVuc2lnbmVkIGludCBhcGljX2lkKQo+ICAgewo+ICAg ICAgIHVuc2lnbmVkIGludCBpZHg7Cj4gQEAgLTEzMSw3ICsxNjIsMTAgQEAgc3RhdGljIHVuaW9u IGlydGVfcHRyIGdldF9pbnRyZW1hcF9lbnRyeQo+ICAgCj4gICAgICAgQVNTRVJUKHRhYmxlLnB0 ciAmJiAoaW5kZXggPCBJTlRSRU1BUF9FTlRSSUVTKSk7Cj4gICAKPiAtICAgIHRhYmxlLnB0cjMy ICs9IGluZGV4Owo+ICsgICAgaWYgKCBpb21tdS0+Y3RybC5nYV9lbiApCj4gKyAgICAgICAgdGFi bGUucHRyMTI4ICs9IGluZGV4Owo+ICsgICAgZWxzZQo+ICsgICAgICAgIHRhYmxlLnB0cjMyICs9 IGluZGV4Owo+ICAgCj4gICAgICAgcmV0dXJuIHRhYmxlOwo+ICAgfQo+IEBAIC0xNDEsNyArMTc1 LDIyIEBAIHN0YXRpYyB2b2lkIGZyZWVfaW50cmVtYXBfZW50cnkoY29uc3Qgc3QKPiAgIHsKPiAg ICAgICB1bmlvbiBpcnRlX3B0ciBlbnRyeSA9IGdldF9pbnRyZW1hcF9lbnRyeShpb21tdSwgYmRm LCBpbmRleCk7Cj4gICAKPiAtICAgIEFDQ0VTU19PTkNFKGVudHJ5LnB0cjMyLT5yYXcpID0gMDsK PiArICAgIGlmICggaW9tbXUtPmN0cmwuZ2FfZW4gKQo+ICsgICAgewo+ICsgICAgICAgIEFDQ0VT U19PTkNFKGVudHJ5LnB0cjEyOC0+cmF3WzBdKSA9IDA7Cj4gKyAgICAgICAgLyoKPiArICAgICAg ICAgKiBMb3cgaGFsZiAoY29udGFpbmluZyBSZW1hcEVuKSBuZWVkcyB0byBiZSBjbGVhcmVkIGZp cnN0LiAgTm90ZSB0aGF0Cj4gKyAgICAgICAgICogc3RyaWN0bHkgc3BlYWtpbmcgc21wX3dtYigp IGlzbid0IGVub3VnaCwgYXMgY29uY2VwdHVhbGx5IGl0IGV4cGFuZHMKPiArICAgICAgICAgKiB0 byBqdXN0IGJhcnJpZXIoKSB3aGVuICFDT05GSUdfU01QLiAgQnV0IHdtYigpIHdvdWxkIGJlIG1v cmUgdGhhbiB3ZQo+ICsgICAgICAgICAqIG5lZWQsIHNpbmNlIHRoZSBJT01NVSBpcyBhIGNhY2hl LWNvaGVyZW50IGVudGl0eSBvbiB0aGUgYnVzLiAgQW5kCj4gKyAgICAgICAgICogZ2l2ZW4gdGhh dCB3ZSBkb24ndCBhbGxvdyBDT05GSUdfU01QIHRvIGJlIHR1cm5lZCBvZmYsIHRoZSBTTVAKPiAr ICAgICAgICAgKiB2YXJpYW50IHdpbGwgZG8uCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgc21w X3dtYigpOwo+ICsgICAgICAgIGVudHJ5LnB0cjEyOC0+cmF3WzFdID0gMDsKPiArICAgIH0KPiAr ICAgIGVsc2UKPiArICAgICAgICBBQ0NFU1NfT05DRShlbnRyeS5wdHIzMi0+cmF3KSA9IDA7Cj4g ICAKPiAgICAgICBfX2NsZWFyX2JpdChpbmRleCwgZ2V0X2l2cnNfbWFwcGluZ3MoaW9tbXUtPnNl ZylbYmRmXS5pbnRyZW1hcF9pbnVzZSk7Cj4gICB9Cj4gQEAgLTE1MSwxNyArMjAwLDQ0IEBAIHN0 YXRpYyB2b2lkIHVwZGF0ZV9pbnRyZW1hcF9lbnRyeShjb25zdAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2ZWN0b3IsIHVuc2lnbmVkIGludCBpbnRf dHlwZSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg ZGVzdF9tb2RlLCB1bnNpZ25lZCBpbnQgZGVzdCkKPiAgIHsKPiAtICAgIHVuaW9uIGlydGUzMiBp cnRlID0gewo+IC0gICAgICAgIC5mbGRzID0gewo+IC0gICAgICAgICAgICAucmVtYXBfZW4gPSB0 cnVlLAo+IC0gICAgICAgICAgICAuaW50X3R5cGUgPSBpbnRfdHlwZSwKPiAtICAgICAgICAgICAg LmRtID0gZGVzdF9tb2RlLAo+IC0gICAgICAgICAgICAuZGVzdCA9IGRlc3QsCj4gLSAgICAgICAg ICAgIC52ZWN0b3IgPSB2ZWN0b3IsCj4gLSAgICAgICAgfSwKPiAtICAgIH07Cj4gKyAgICBpZiAo IGlvbW11LT5jdHJsLmdhX2VuICkKPiArICAgIHsKPiArICAgICAgICB1bmlvbiBpcnRlMTI4IGly dGUgPSB7Cj4gKyAgICAgICAgICAgIC5mdWxsID0gewo+ICsgICAgICAgICAgICAgICAgLnJlbWFw X2VuID0gdHJ1ZSwKPiArICAgICAgICAgICAgICAgIC5pbnRfdHlwZSA9IGludF90eXBlLAo+ICsg ICAgICAgICAgICAgICAgLmRtID0gZGVzdF9tb2RlLAo+ICsgICAgICAgICAgICAgICAgLmRlc3Rf bG8gPSBkZXN0LAo+ICsgICAgICAgICAgICAgICAgLmRlc3RfaGkgPSBkZXN0ID4+IDI0LAo+ICsg ICAgICAgICAgICAgICAgLnZlY3RvciA9IHZlY3RvciwKPiArICAgICAgICAgICAgfSwKPiArICAg ICAgICB9Owo+ICsKPiArICAgICAgICBBQ0NFU1NfT05DRShlbnRyeS5wdHIxMjgtPnJhd1swXSkg PSAwOwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogTG93IGhhbGYsIGluIHBhcnRpY3VsYXIg UmVtYXBFbiwgbmVlZHMgdG8gYmUgY2xlYXJlZCBmaXJzdC4gIFNlZQo+ICsgICAgICAgICAqIGNv bW1lbnQgaW4gZnJlZV9pbnRyZW1hcF9lbnRyeSgpIHJlZ2FyZGluZyB0aGUgY2hvaWNlIG9mIGJh cnJpZXIuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgc21wX3dtYigpOwo+ICsgICAgICAgIGVu dHJ5LnB0cjEyOC0+cmF3WzFdID0gaXJ0ZS5yYXdbMV07Cj4gKyAgICAgICAgLyogSGlnaCBoYWxm IG5lZWRzIHRvIGJlIHNldCBiZWZvcmUgbG93IG9uZSAoY29udGFpbmluZyBSZW1hcEVuKS4gKi8K PiArICAgICAgICBzbXBfd21iKCk7Cj4gKyAgICAgICAgQUNDRVNTX09OQ0UoZW50cnkucHRyMTI4 LT5yYXdbMF0pID0gaXJ0ZS5yYXdbMF07Cj4gKyAgICB9Cj4gKyAgICBlbHNlCj4gKyAgICB7Cj4g KyAgICAgICAgdW5pb24gaXJ0ZTMyIGlydGUgPSB7Cj4gKyAgICAgICAgICAgIC5mbGRzID0gewo+ ICsgICAgICAgICAgICAgICAgLnJlbWFwX2VuID0gdHJ1ZSwKPiArICAgICAgICAgICAgICAgIC5p bnRfdHlwZSA9IGludF90eXBlLAo+ICsgICAgICAgICAgICAgICAgLmRtID0gZGVzdF9tb2RlLAo+ ICsgICAgICAgICAgICAgICAgLmRlc3QgPSBkZXN0LAo+ICsgICAgICAgICAgICAgICAgLnZlY3Rv ciA9IHZlY3RvciwKPiArICAgICAgICAgICAgfSwKPiArICAgICAgICB9Owo+ICAgCj4gLSAgICBB Q0NFU1NfT05DRShlbnRyeS5wdHIzMi0+cmF3KSA9IGlydGUucmF3Owo+ICsgICAgICAgIEFDQ0VT U19PTkNFKGVudHJ5LnB0cjMyLT5yYXcpID0gaXJ0ZS5yYXc7Cj4gKyAgICB9Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyBpbmxpbmUgaW50IGdldF9ydGVfaW5kZXgoY29uc3Qgc3RydWN0IElPX0FQSUNf cm91dGVfZW50cnkgKnJ0ZSkKPiBAQCAtMTc1LDYgKzI1MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZv aWQgc2V0X3J0ZV9pbmRleChzdHJ1Y3QKPiAgICAgICBydGUtPmRlbGl2ZXJ5X21vZGUgPSBvZmZz ZXQgPj4gODsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBnZXRfZnVs bF9kZXN0KGNvbnN0IHVuaW9uIGlydGUxMjggKmVudHJ5KQo+ICt7Cj4gKyAgICByZXR1cm4gZW50 cnktPmZ1bGwuZGVzdF9sbyB8ICgodW5zaWduZWQgaW50KWVudHJ5LT5mdWxsLmRlc3RfaGkgPDwg MjQpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCB1cGRhdGVfaW50cmVtYXBfZW50cnlfZnJvbV9p b2FwaWMoCj4gICAgICAgaW50IGJkZiwKPiAgICAgICBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSwK PiBAQCAtMTg0LDEwICsyNjUsMTEgQEAgc3RhdGljIGludCB1cGRhdGVfaW50cmVtYXBfZW50cnlf ZnJvbV9pbwo+ICAgewo+ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAgICAgdW5pb24g aXJ0ZV9wdHIgZW50cnk7Cj4gLSAgICB1OCBkZWxpdmVyeV9tb2RlLCBkZXN0LCB2ZWN0b3IsIGRl c3RfbW9kZTsKPiArICAgIHVpbnQ4X3QgZGVsaXZlcnlfbW9kZSwgdmVjdG9yLCBkZXN0X21vZGU7 Cj4gICAgICAgaW50IHJlcV9pZDsKPiAgICAgICBzcGlubG9ja190ICpsb2NrOwo+IC0gICAgdW5z aWduZWQgaW50IG9mZnNldDsKPiArICAgIHVuc2lnbmVkIGludCBkZXN0LCBvZmZzZXQ7Cj4gKyAg ICBib29sIGZyZXNoID0gZmFsc2U7Cj4gICAKPiAgICAgICByZXFfaWQgPSBnZXRfaW50cmVtYXBf cmVxdWVzdG9yX2lkKGlvbW11LT5zZWcsIGJkZik7Cj4gICAgICAgbG9jayA9IGdldF9pbnRyZW1h cF9sb2NrKGlvbW11LT5zZWcsIHJlcV9pZCk7Cj4gQEAgLTE5NSw3ICsyNzcsNyBAQCBzdGF0aWMg aW50IHVwZGF0ZV9pbnRyZW1hcF9lbnRyeV9mcm9tX2lvCj4gICAgICAgZGVsaXZlcnlfbW9kZSA9 IHJ0ZS0+ZGVsaXZlcnlfbW9kZTsKPiAgICAgICB2ZWN0b3IgPSBydGUtPnZlY3RvcjsKPiAgICAg ICBkZXN0X21vZGUgPSBydGUtPmRlc3RfbW9kZTsKPiAtICAgIGRlc3QgPSBydGUtPmRlc3QubG9n aWNhbC5sb2dpY2FsX2Rlc3Q7Cj4gKyAgICBkZXN0ID0geDJhcGljX2VuYWJsZWQgPyBydGUtPmRl c3QuZGVzdDMyIDogcnRlLT5kZXN0LmxvZ2ljYWwubG9naWNhbF9kZXN0Owo+ICAgCj4gICAgICAg c3Bpbl9sb2NrX2lycXNhdmUobG9jaywgZmxhZ3MpOwo+ICAgCj4gQEAgLTIxMCwyNSArMjkyLDQw IEBAIHN0YXRpYyBpbnQgdXBkYXRlX2ludHJlbWFwX2VudHJ5X2Zyb21faW8KPiAgICAgICAgICAg ICAgIHJldHVybiAtRU5PU1BDOwo+ICAgICAgICAgICB9Cj4gICAgICAgICAgICppbmRleCA9IG9m ZnNldDsKPiAtICAgICAgICBsb191cGRhdGUgPSAxOwo+ICsgICAgICAgIGZyZXNoID0gdHJ1ZTsK PiAgICAgICB9Cj4gICAKPiAgICAgICBlbnRyeSA9IGdldF9pbnRyZW1hcF9lbnRyeShpb21tdSwg cmVxX2lkLCBvZmZzZXQpOwo+IC0gICAgaWYgKCAhbG9fdXBkYXRlICkKPiArICAgIGlmICggZnJl c2ggKQo+ICsgICAgICAgIC8qIG5vdGhpbmcgKi87Cj4gKyAgICBlbHNlIGlmICggIWxvX3VwZGF0 ZSApCj4gICAgICAgewo+ICAgICAgICAgICAvKgo+ICAgICAgICAgICAgKiBMb3cgaGFsZiBvZiBp bmNvbWluZyBSVEUgaXMgYWxyZWFkeSBpbiByZW1hcHBlZCBmb3JtYXQsCj4gICAgICAgICAgICAq IHNvIG5lZWQgdG8gcmVjb3ZlciB2ZWN0b3IgYW5kIGRlbGl2ZXJ5IG1vZGUgZnJvbSBJUlRFLgo+ ICAgICAgICAgICAgKi8KPiAgICAgICAgICAgQVNTRVJUKGdldF9ydGVfaW5kZXgocnRlKSA9PSBv ZmZzZXQpOwo+IC0gICAgICAgIHZlY3RvciA9IGVudHJ5LnB0cjMyLT5mbGRzLnZlY3RvcjsKPiAr ICAgICAgICBpZiAoIGlvbW11LT5jdHJsLmdhX2VuICkKPiArICAgICAgICAgICAgdmVjdG9yID0g ZW50cnkucHRyMTI4LT5mdWxsLnZlY3RvcjsKPiArICAgICAgICBlbHNlCj4gKyAgICAgICAgICAg IHZlY3RvciA9IGVudHJ5LnB0cjMyLT5mbGRzLnZlY3RvcjsKPiArICAgICAgICAvKiBUaGUgSW50 VHlwZSBmaWVsZHMgbWF0Y2ggZm9yIGJvdGggZm9ybWF0cy4gKi8KPiAgICAgICAgICAgZGVsaXZl cnlfbW9kZSA9IGVudHJ5LnB0cjMyLT5mbGRzLmludF90eXBlOwo+ICAgICAgIH0KPiArICAgIGVs c2UgaWYgKCB4MmFwaWNfZW5hYmxlZCApCj4gKyAgICB7Cj4gKyAgICAgICAgLyoKPiArICAgICAg ICAgKiBIaWdoIGhhbGYgb2YgaW5jb21pbmcgUlRFIHdhcyByZWFkIGZyb20gdGhlIEkvTyBBUElD IGFuZCBoZW5jZSBtYXkKPiArICAgICAgICAgKiBub3QgaG9sZCB0aGUgZnVsbCBkZXN0aW5hdGlv biwgc28gbmVlZCB0byByZWNvdmVyIGZ1bGwgZGVzdGluYXRpb24KPiArICAgICAgICAgKiBmcm9t IElSVEUuCj4gKyAgICAgICAgICovCj4gKyAgICAgICAgZGVzdCA9IGdldF9mdWxsX2Rlc3QoZW50 cnkucHRyMTI4KTsKPiArICAgIH0KPiAgICAgICB1cGRhdGVfaW50cmVtYXBfZW50cnkoaW9tbXUs IGVudHJ5LCB2ZWN0b3IsIGRlbGl2ZXJ5X21vZGUsIGRlc3RfbW9kZSwgZGVzdCk7Cj4gICAKPiAg ICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKGxvY2ssIGZsYWdzKTsKPiAgIAo+IC0gICAgaWYg KCBpb21tdS0+ZW5hYmxlZCApCj4gKyAgICBpZiAoIGlvbW11LT5lbmFibGVkICYmICFmcmVzaCAp Cj4gICAgICAgewo+ICAgICAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmaW9tbXUtPmxvY2ssIGZs YWdzKTsKPiAgICAgICAgICAgYW1kX2lvbW11X2ZsdXNoX2ludHJlbWFwKGlvbW11LCByZXFfaWQp Owo+IEBAIC0yODYsNiArMzgzLDE4IEBAIGludCBfX2luaXQgYW1kX2lvbW11X3NldHVwX2lvYXBp Y19yZW1hcHAKPiAgICAgICAgICAgICAgIGRlc3RfbW9kZSA9IHJ0ZS5kZXN0X21vZGU7Cj4gICAg ICAgICAgICAgICBkZXN0ID0gcnRlLmRlc3QubG9naWNhbC5sb2dpY2FsX2Rlc3Q7Cj4gICAKPiAr ICAgICAgICAgICAgaWYgKCBpb21tdS0+Y3RybC54dF9lbiApCj4gKyAgICAgICAgICAgIHsKPiAr ICAgICAgICAgICAgICAgIC8qCj4gKyAgICAgICAgICAgICAgICAgKiBJbiB4MkFQSUMgbW9kZSB3 ZSBoYXZlIG5vIHdheSBvZiBkaXNjb3ZlcmluZyB0aGUgaGlnaCAyNAo+ICsgICAgICAgICAgICAg ICAgICogYml0cyBvZiB0aGUgZGVzdGluYXRpb24gb2YgYW4gYWxyZWFkeSBlbmFibGVkIGludGVy cnVwdC4KPiArICAgICAgICAgICAgICAgICAqIFdlIGNvbWUgaGVyZSBlYXJsaWVyIHRoYW4gZm9y IHhBUElDIG1vZGUsIHNvIG5vIGludGVycnVwdHMKPiArICAgICAgICAgICAgICAgICAqIHNob3Vs ZCBoYXZlIGJlZW4gc2V0IHVwIGJlZm9yZS4KPiArICAgICAgICAgICAgICAgICAqLwo+ICsgICAg ICAgICAgICAgICAgQU1EX0lPTU1VX0RFQlVHKCJVbm1hc2tlZCBJTy1BUElDIyV1IGVudHJ5ICV1 IGluIHgyQVBJQyBtb2RlXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElP X0FQSUNfSUQoYXBpYyksIHBpbik7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gICAgICAgICAgICAg ICBzcGluX2xvY2tfaXJxc2F2ZShsb2NrLCBmbGFncyk7Cj4gICAgICAgICAgICAgICBvZmZzZXQg PSBhbGxvY19pbnRyZW1hcF9lbnRyeShzZWcsIHJlcV9pZCwgMSk7Cj4gICAgICAgICAgICAgICBC VUdfT04ob2Zmc2V0ID49IElOVFJFTUFQX0VOVFJJRVMpOwo+IEBAIC0zMjAsNyArNDI5LDggQEAg dm9pZCBhbWRfaW9tbXVfaW9hcGljX3VwZGF0ZV9pcmUoCj4gICAgICAgc3RydWN0IElPX0FQSUNf cm91dGVfZW50cnkgbmV3X3J0ZSA9IHsgMCB9Owo+ICAgICAgIHVuc2lnbmVkIGludCBydGVfbG8g PSAocmVnICYgMSkgPyByZWcgLSAxIDogcmVnOwo+ICAgICAgIHVuc2lnbmVkIGludCBwaW4gPSAo cmVnIC0gMHgxMCkgLyAyOwo+IC0gICAgaW50IHNhdmVkX21hc2ssIHNlZywgYmRmLCByYzsKPiAr ICAgIGludCBzZWcsIGJkZiwgcmM7Cj4gKyAgICBib29sIHNhdmVkX21hc2ssIGZyZXNoID0gZmFs c2U7Cj4gICAgICAgc3RydWN0IGFtZF9pb21tdSAqaW9tbXU7Cj4gICAgICAgdW5zaWduZWQgaW50 IGlkeDsKPiAgIAo+IEBAIC0zNjIsMTIgKzQ3MiwyMiBAQCB2b2lkIGFtZF9pb21tdV9pb2FwaWNf dXBkYXRlX2lyZSgKPiAgICAgICAgICAgKigoKHUzMiAqKSZuZXdfcnRlKSArIDEpID0gdmFsdWU7 Cj4gICAgICAgfQo+ICAgCj4gLSAgICBpZiAoIG5ld19ydGUubWFzayAmJgo+IC0gICAgICAgICBp b2FwaWNfc2JkZltpZHhdLnBpbl8yX2lkeFtwaW5dID49IElOVFJFTUFQX0VOVFJJRVMgKQo+ICsg ICAgaWYgKCBpb2FwaWNfc2JkZltpZHhdLnBpbl8yX2lkeFtwaW5dID49IElOVFJFTUFQX0VOVFJJ RVMgKQo+ICAgICAgIHsKPiAgICAgICAgICAgQVNTRVJUKHNhdmVkX21hc2spOwo+IC0gICAgICAg IF9faW9fYXBpY193cml0ZShhcGljLCByZWcsIHZhbHVlKTsKPiAtICAgICAgICByZXR1cm47Cj4g Kwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogVGhlcmUncyBub3doZXJlIGV4Y2VwdCB0aGUg SVJURSB0byBzdG9yZSBhIGZ1bGwgMzItYml0IGRlc3RpbmF0aW9uLAo+ICsgICAgICAgICAqIHNv IHdlIG1heSBub3QgYnlwYXNzIGVudHJ5IGFsbG9jYXRpb24gYW5kIHVwZGF0aW5nIG9mIHRoZSBs b3cgUlRFCj4gKyAgICAgICAgICogaGFsZiBpbiB0aGUgKHVzdWFsKSBjYXNlIG9mIHRoZSBoaWdo IFJURSBoYWxmIGdldHRpbmcgd3JpdHRlbiBmaXJzdC4KPiArICAgICAgICAgKi8KPiArICAgICAg ICBpZiAoIG5ld19ydGUubWFzayAmJiAheDJhcGljX2VuYWJsZWQgKQo+ICsgICAgICAgIHsKPiAr ICAgICAgICAgICAgX19pb19hcGljX3dyaXRlKGFwaWMsIHJlZywgdmFsdWUpOwo+ICsgICAgICAg ICAgICByZXR1cm47Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBmcmVzaCA9IHRydWU7Cj4g ICAgICAgfQo+ICAgCj4gICAgICAgLyogbWFzayB0aGUgaW50ZXJydXB0IHdoaWxlIHdlIGNoYW5n ZSB0aGUgaW50cmVtYXAgdGFibGUgKi8KPiBAQCAtMzk2LDggKzUxNiwxMiBAQCB2b2lkIGFtZF9p b21tdV9pb2FwaWNfdXBkYXRlX2lyZSgKPiAgICAgICBpZiAoIHJlZyA9PSBydGVfbG8gKQo+ICAg ICAgICAgICByZXR1cm47Cj4gICAKPiAtICAgIC8qIHVubWFzayB0aGUgaW50ZXJydXB0IGFmdGVy IHdlIGhhdmUgdXBkYXRlZCB0aGUgaW50cmVtYXAgdGFibGUgKi8KPiAtICAgIGlmICggIXNhdmVk X21hc2sgKQo+ICsgICAgLyoKPiArICAgICAqIFVubWFzayB0aGUgaW50ZXJydXB0IGFmdGVyIHdl IGhhdmUgdXBkYXRlZCB0aGUgaW50cmVtYXAgdGFibGUuIEFsc28KPiArICAgICAqIHdyaXRlIHRo ZSBsb3cgaGFsZiBpZiBhIGZyZXNoIGVudHJ5IHdhcyBhbGxvY2F0ZWQgZm9yIGEgaGlnaCBoYWxm Cj4gKyAgICAgKiB1cGRhdGUgaW4geDJBUElDIG1vZGUuCj4gKyAgICAgKi8KPiArICAgIGlmICgg IXNhdmVkX21hc2sgfHwgKHgyYXBpY19lbmFibGVkICYmIGZyZXNoKSApCj4gICAgICAgewo+ICAg ICAgICAgICBvbGRfcnRlLm1hc2sgPSBzYXZlZF9tYXNrOwo+ICAgICAgICAgICBfX2lvX2FwaWNf d3JpdGUoYXBpYywgcnRlX2xvLCAqKCh1MzIgKikmb2xkX3J0ZSkpOwo+IEBAIC00MTEsMzEgKzUz NSw0MCBAQCB1bnNpZ25lZCBpbnQgYW1kX2lvbW11X3JlYWRfaW9hcGljX2Zyb21fCj4gICAgICAg dW5zaWduZWQgaW50IG9mZnNldDsKPiAgICAgICB1bnNpZ25lZCBpbnQgdmFsID0gX19pb19hcGlj X3JlYWQoYXBpYywgcmVnKTsKPiAgICAgICB1bnNpZ25lZCBpbnQgcGluID0gKHJlZyAtIDB4MTAp IC8gMjsKPiArICAgIHVpbnQxNl90IHNlZywgYmRmLCByZXFfaWQ7Cj4gKyAgICBjb25zdCBzdHJ1 Y3QgYW1kX2lvbW11ICppb21tdTsKPiArICAgIHVuaW9uIGlydGVfcHRyIGVudHJ5Owo+ICAgCj4g ICAgICAgaWR4ID0gaW9hcGljX2lkX3RvX2luZGV4KElPX0FQSUNfSUQoYXBpYykpOwo+ICAgICAg IGlmICggaWR4ID09IE1BWF9JT19BUElDUyApCj4gICAgICAgICAgIHJldHVybiB2YWw7Cj4gICAK PiAgICAgICBvZmZzZXQgPSBpb2FwaWNfc2JkZltpZHhdLnBpbl8yX2lkeFtwaW5dOwo+ICsgICAg aWYgKCBvZmZzZXQgPj0gSU5UUkVNQVBfRU5UUklFUyApCj4gKyAgICAgICAgcmV0dXJuIHZhbDsK PiAgIAo+IC0gICAgaWYgKCAhKHJlZyAmIDEpICYmIG9mZnNldCA8IElOVFJFTUFQX0VOVFJJRVMg KQo+IC0gICAgewo+IC0gICAgICAgIHUxNiBiZGYgPSBpb2FwaWNfc2JkZltpZHhdLmJkZjsKPiAt ICAgICAgICB1MTYgc2VnID0gaW9hcGljX3NiZGZbaWR4XS5zZWc7Cj4gLSAgICAgICAgdTE2IHJl cV9pZCA9IGdldF9pbnRyZW1hcF9yZXF1ZXN0b3JfaWQoc2VnLCBiZGYpOwo+IC0gICAgICAgIGNv bnN0IHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11ID0gZmluZF9pb21tdV9mb3JfZGV2aWNlKHNlZywg YmRmKTsKPiAtICAgICAgICB1bmlvbiBpcnRlX3B0ciBlbnRyeTsKPiArICAgIHNlZyA9IGlvYXBp Y19zYmRmW2lkeF0uc2VnOwo+ICsgICAgYmRmID0gaW9hcGljX3NiZGZbaWR4XS5iZGY7Cj4gKyAg ICBpb21tdSA9IGZpbmRfaW9tbXVfZm9yX2RldmljZShzZWcsIGJkZik7Cj4gKyAgICBpZiAoICFp b21tdSApCj4gKyAgICAgICAgcmV0dXJuIHZhbDsKPiArICAgIHJlcV9pZCA9IGdldF9pbnRyZW1h cF9yZXF1ZXN0b3JfaWQoc2VnLCBiZGYpOwo+ICsgICAgZW50cnkgPSBnZXRfaW50cmVtYXBfZW50 cnkoaW9tbXUsIHJlcV9pZCwgb2Zmc2V0KTsKPiAgIAo+IC0gICAgICAgIGlmICggIWlvbW11ICkK PiAtICAgICAgICAgICAgcmV0dXJuIHZhbDsKPiArICAgIGlmICggIShyZWcgJiAxKSApCj4gKyAg ICB7Cj4gICAgICAgICAgIEFTU0VSVChvZmZzZXQgPT0gKHZhbCAmIChJTlRSRU1BUF9FTlRSSUVT IC0gMSkpKTsKPiAtICAgICAgICBlbnRyeSA9IGdldF9pbnRyZW1hcF9lbnRyeShpb21tdSwgcmVx X2lkLCBvZmZzZXQpOwo+ICAgICAgICAgICB2YWwgJj0gfihJTlRSRU1BUF9FTlRSSUVTIC0gMSk7 Cj4gKyAgICAgICAgLyogVGhlIEludFR5cGUgZmllbGRzIG1hdGNoIGZvciBib3RoIGZvcm1hdHMu ICovCj4gICAgICAgICAgIHZhbCB8PSBNQVNLX0lOU1IoZW50cnkucHRyMzItPmZsZHMuaW50X3R5 cGUsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9fQVBJQ19SRURJUl9ERUxJVl9NT0RF X01BU0spOwo+IC0gICAgICAgIHZhbCB8PSBNQVNLX0lOU1IoZW50cnkucHRyMzItPmZsZHMudmVj dG9yLAo+ICsgICAgICAgIHZhbCB8PSBNQVNLX0lOU1IoaW9tbXUtPmN0cmwuZ2FfZW4KPiArICAg ICAgICAgICAgICAgICAgICAgICAgID8gZW50cnkucHRyMTI4LT5mdWxsLnZlY3Rvcgo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgOiBlbnRyeS5wdHIzMi0+Zmxkcy52ZWN0b3IsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU9fQVBJQ19SRURJUl9WRUNUT1JfTUFTSyk7Cj4gICAgICAg fQo+ICsgICAgZWxzZSBpZiAoIHgyYXBpY19lbmFibGVkICkKPiArICAgICAgICB2YWwgPSBnZXRf ZnVsbF9kZXN0KGVudHJ5LnB0cjEyOCk7Cj4gICAKPiAgICAgICByZXR1cm4gdmFsOwo+ICAgfQo+ IEBAIC00NDcsOSArNTgwLDkgQEAgc3RhdGljIGludCB1cGRhdGVfaW50cmVtYXBfZW50cnlfZnJv bV9tcwo+ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAgICAgdW5pb24gaXJ0ZV9wdHIg ZW50cnk7Cj4gICAgICAgdTE2IHJlcV9pZCwgYWxpYXNfaWQ7Cj4gLSAgICB1OCBkZWxpdmVyeV9t b2RlLCBkZXN0LCB2ZWN0b3IsIGRlc3RfbW9kZTsKPiArICAgIHVpbnQ4X3QgZGVsaXZlcnlfbW9k ZSwgdmVjdG9yLCBkZXN0X21vZGU7Cj4gICAgICAgc3BpbmxvY2tfdCAqbG9jazsKPiAtICAgIHVu c2lnbmVkIGludCBvZmZzZXQsIGk7Cj4gKyAgICB1bnNpZ25lZCBpbnQgZGVzdCwgb2Zmc2V0LCBp Owo+ICAgCj4gICAgICAgcmVxX2lkID0gZ2V0X2RtYV9yZXF1ZXN0b3JfaWQoaW9tbXUtPnNlZywg YmRmKTsKPiAgICAgICBhbGlhc19pZCA9IGdldF9pbnRyZW1hcF9yZXF1ZXN0b3JfaWQoaW9tbXUt PnNlZywgYmRmKTsKPiBAQCAtNDcwLDcgKzYwMywxMiBAQCBzdGF0aWMgaW50IHVwZGF0ZV9pbnRy ZW1hcF9lbnRyeV9mcm9tX21zCj4gICAgICAgZGVzdF9tb2RlID0gKG1zZy0+YWRkcmVzc19sbyA+ PiBNU0lfQUREUl9ERVNUTU9ERV9TSElGVCkgJiAweDE7Cj4gICAgICAgZGVsaXZlcnlfbW9kZSA9 IChtc2ctPmRhdGEgPj4gTVNJX0RBVEFfREVMSVZFUllfTU9ERV9TSElGVCkgJiAweDE7Cj4gICAg ICAgdmVjdG9yID0gKG1zZy0+ZGF0YSA+PiBNU0lfREFUQV9WRUNUT1JfU0hJRlQpICYgTVNJX0RB VEFfVkVDVE9SX01BU0s7Cj4gLSAgICBkZXN0ID0gKG1zZy0+YWRkcmVzc19sbyA+PiBNU0lfQURE Ul9ERVNUX0lEX1NISUZUKSAmIDB4ZmY7Cj4gKwo+ICsgICAgaWYgKCB4MmFwaWNfZW5hYmxlZCAp Cj4gKyAgICAgICAgZGVzdCA9IG1zZy0+ZGVzdDMyOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIGRl c3QgPSBNQVNLX0VYVFIobXNnLT5hZGRyZXNzX2xvLCBNU0lfQUREUl9ERVNUX0lEX01BU0spOwo+ ICsKPiAgICAgICBvZmZzZXQgPSAqcmVtYXBfaW5kZXg7Cj4gICAgICAgaWYgKCBvZmZzZXQgPj0g SU5UUkVNQVBfRU5UUklFUyApCj4gICAgICAgewo+IEBAIC02MTYsMTAgKzc1NCwyMSBAQCB2b2lk IGFtZF9pb21tdV9yZWFkX21zaV9mcm9tX2lyZSgKPiAgICAgICB9Cj4gICAKPiAgICAgICBtc2ct PmRhdGEgJj0gfihJTlRSRU1BUF9FTlRSSUVTIC0gMSk7Cj4gKyAgICAvKiBUaGUgSW50VHlwZSBm aWVsZHMgbWF0Y2ggZm9yIGJvdGggZm9ybWF0cy4gKi8KPiAgICAgICBtc2ctPmRhdGEgfD0gTUFT S19JTlNSKGVudHJ5LnB0cjMyLT5mbGRzLmludF90eXBlLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTVNJX0RBVEFfREVMSVZFUllfTU9ERV9NQVNLKTsKPiAtICAgIG1zZy0+ZGF0YSB8 PSBNQVNLX0lOU1IoZW50cnkucHRyMzItPmZsZHMudmVjdG9yLAo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICBNU0lfREFUQV9WRUNUT1JfTUFTSyk7Cj4gKyAgICBpZiAoIGlvbW11LT5jdHJs LmdhX2VuICkKPiArICAgIHsKPiArICAgICAgICBtc2ctPmRhdGEgfD0gTUFTS19JTlNSKGVudHJ5 LnB0cjEyOC0+ZnVsbC52ZWN0b3IsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN U0lfREFUQV9WRUNUT1JfTUFTSyk7Cj4gKyAgICAgICAgbXNnLT5kZXN0MzIgPSBnZXRfZnVsbF9k ZXN0KGVudHJ5LnB0cjEyOCk7Cj4gKyAgICB9Cj4gKyAgICBlbHNlCj4gKyAgICB7Cj4gKyAgICAg ICAgbXNnLT5kYXRhIHw9IE1BU0tfSU5TUihlbnRyeS5wdHIzMi0+Zmxkcy52ZWN0b3IsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0lfREFUQV9WRUNUT1JfTUFTSyk7Cj4gKyAg ICAgICAgbXNnLT5kZXN0MzIgPSBlbnRyeS5wdHIzMi0+Zmxkcy5kZXN0Owo+ICsgICAgfQo+ICAg fQo+ICAgCj4gICBpbnQgX19pbml0IGFtZF9pb21tdV9mcmVlX2ludHJlbWFwX3RhYmxlKAo+IEBA IC02MzEsNyArNzgwLDcgQEAgaW50IF9faW5pdCBhbWRfaW9tbXVfZnJlZV9pbnRyZW1hcF90YWJs ZQo+ICAgCj4gICAgICAgaWYgKCB0YiApCj4gICAgICAgewo+IC0gICAgICAgIF9fZnJlZV9hbWRf aW9tbXVfdGFibGVzKHRiLCBJTlRSRU1BUF9UQUJMRV9PUkRFUik7Cj4gKyAgICAgICAgX19mcmVl X2FtZF9pb21tdV90YWJsZXModGIsIGludHJlbWFwX3RhYmxlX29yZGVyKGlvbW11KSk7Cj4gICAg ICAgICAgIGl2cnNfbWFwcGluZy0+aW50cmVtYXBfdGFibGUgPSBOVUxMOwo+ICAgICAgIH0KPiAg IAo+IEBAIC02NDEsMTAgKzc5MCwxMCBAQCBpbnQgX19pbml0IGFtZF9pb21tdV9mcmVlX2ludHJl bWFwX3RhYmxlCj4gICB2b2lkICpfX2luaXQgYW1kX2lvbW11X2FsbG9jX2ludHJlbWFwX3RhYmxl KAo+ICAgICAgIGNvbnN0IHN0cnVjdCBhbWRfaW9tbXUgKmlvbW11LCB1bnNpZ25lZCBsb25nICoq aW51c2VfbWFwKQo+ICAgewo+IC0gICAgdm9pZCAqdGI7Cj4gLSAgICB0YiA9IF9fYWxsb2NfYW1k X2lvbW11X3RhYmxlcyhJTlRSRU1BUF9UQUJMRV9PUkRFUik7Cj4gKyAgICB2b2lkICp0YiA9IF9f YWxsb2NfYW1kX2lvbW11X3RhYmxlcyhpbnRyZW1hcF90YWJsZV9vcmRlcihpb21tdSkpOwo+ICsK PiAgICAgICBCVUdfT04odGIgPT0gTlVMTCk7Cj4gLSAgICBtZW1zZXQodGIsIDAsIFBBR0VfU0la RSAqICgxVUwgPDwgSU5UUkVNQVBfVEFCTEVfT1JERVIpKTsKPiArICAgIG1lbXNldCh0YiwgMCwg UEFHRV9TSVpFIDw8IGludHJlbWFwX3RhYmxlX29yZGVyKGlvbW11KSk7Cj4gICAgICAgKmludXNl X21hcCA9IHh6YWxsb2NfYXJyYXkodW5zaWduZWQgbG9uZywgQklUU19UT19MT05HUyhJTlRSRU1B UF9FTlRSSUVTKSk7Cj4gICAgICAgQlVHX09OKCppbnVzZV9tYXAgPT0gTlVMTCk7Cj4gICAgICAg cmV0dXJuIHRiOwo+IEBAIC02ODUsMTggKzgzNCwyOSBAQCBpbnQgX19pbml0IGFtZF9zZXR1cF9o cGV0X21zaShzdHJ1Y3QgbXNpCj4gICAgICAgcmV0dXJuIHJjOwo+ICAgfQo+ICAgCj4gLXN0YXRp YyB2b2lkIGR1bXBfaW50cmVtYXBfdGFibGUoY29uc3QgdTMyICp0YWJsZSkKPiArc3RhdGljIHZv aWQgZHVtcF9pbnRyZW1hcF90YWJsZShjb25zdCBzdHJ1Y3QgYW1kX2lvbW11ICppb21tdSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBpcnRlX2NwdHIgdGJsKQo+ICAg ewo+IC0gICAgdTMyIGNvdW50Owo+ICsgICAgdW5zaWduZWQgaW50IGNvdW50Owo+ICAgCj4gLSAg ICBpZiAoICF0YWJsZSApCj4gKyAgICBpZiAoICF0YmwucHRyICkKPiAgICAgICAgICAgcmV0dXJu Owo+ICAgCj4gICAgICAgZm9yICggY291bnQgPSAwOyBjb3VudCA8IElOVFJFTUFQX0VOVFJJRVM7 IGNvdW50KysgKQo+ICAgICAgIHsKPiAtICAgICAgICBpZiAoICF0YWJsZVtjb3VudF0gKQo+IC0g ICAgICAgICAgICBjb250aW51ZTsKPiAtICAgICAgICBwcmludGsoIiAgICBJUlRFWyUwM3hdICUw OHhcbiIsIGNvdW50LCB0YWJsZVtjb3VudF0pOwo+ICsgICAgICAgIGlmICggaW9tbXUtPmN0cmwu Z2FfZW4gKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgaWYgKCAhdGJsLnB0cjEyOFtjb3Vu dF0ucmF3WzBdICYmICF0YmwucHRyMTI4W2NvdW50XS5yYXdbMV0gKQo+ICsgICAgICAgICAgICAg ICAgY29udGludWU7Cj4gKyAgICAgICAgICAgIHByaW50aygiICAgIElSVEVbJTAzeF0gJTAxNmx4 XyUwMTZseFxuIiwKPiArICAgICAgICAgICAgICAgICAgIGNvdW50LCB0YmwucHRyMTI4W2NvdW50 XS5yYXdbMV0sIHRibC5wdHIxMjhbY291bnRdLnJhd1swXSk7Cj4gKyAgICAgICAgfQo+ICsgICAg ICAgIGVsc2UKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICggIXRibC5wdHIzMltjb3Vu dF0ucmF3ICkKPiArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+ICsgICAgICAgICAgICBwcmlu dGsoIiAgICBJUlRFWyUwM3hdICUwOHhcbiIsIGNvdW50LCB0YmwucHRyMzJbY291bnRdLnJhdyk7 Cj4gKyAgICAgICAgfQo+ICAgICAgIH0KPiAgIH0KPiAgIAo+IEBAIC03MTQsNyArODc0LDcgQEAg c3RhdGljIGludCBkdW1wX2ludHJlbWFwX21hcHBpbmcoY29uc3Qgcwo+ICAgICAgICAgICAgICBQ Q0lfRlVOQyhpdnJzX21hcHBpbmctPmR0ZV9yZXF1ZXN0b3JfaWQpKTsKPiAgIAo+ICAgICAgIHNw aW5fbG9ja19pcnFzYXZlKCYoaXZyc19tYXBwaW5nLT5pbnRyZW1hcF9sb2NrKSwgZmxhZ3MpOwo+ IC0gICAgZHVtcF9pbnRyZW1hcF90YWJsZShpdnJzX21hcHBpbmctPmludHJlbWFwX3RhYmxlKTsK PiArICAgIGR1bXBfaW50cmVtYXBfdGFibGUoaW9tbXUsIGl2cnNfbWFwcGluZy0+aW50cmVtYXBf dGFibGUpOwo+ICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJihpdnJzX21hcHBpbmctPmlu dHJlbWFwX2xvY2spLCBmbGFncyk7Cj4gICAKPiAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGly cXMoKTsKPiBAQCAtNzMzLDYgKzg5Myw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfaW50cmVtYXBfdGFi bGVzKHVuc2lnbmUKPiAgICAgICBwcmludGsoIi0tLSBEdW1waW5nIFNoYXJlZCBJT01NVSBJbnRl cnJ1cHQgUmVtYXBwaW5nIFRhYmxlIC0tLVxuIik7Cj4gICAKPiAgICAgICBzcGluX2xvY2tfaXJx c2F2ZSgmc2hhcmVkX2ludHJlbWFwX2xvY2ssIGZsYWdzKTsKPiAtICAgIGR1bXBfaW50cmVtYXBf dGFibGUoc2hhcmVkX2ludHJlbWFwX3RhYmxlKTsKPiArICAgIGR1bXBfaW50cmVtYXBfdGFibGUo bGlzdF9maXJzdF9lbnRyeSgmYW1kX2lvbW11X2hlYWQsIHN0cnVjdCBhbWRfaW9tbXUsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCksCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgIHNoYXJlZF9pbnRyZW1hcF90YWJsZSk7Cj4gICAgICAgc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmc2hhcmVkX2ludHJlbWFwX2xvY2ssIGZsYWdzKTsKPiAgIH0KPiAKCi0t IApCcmlhbiBXb29kcwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==