Received: by 10.192.165.156 with SMTP id m28csp2156601imm; Sat, 14 Apr 2018 15:33:53 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/3zXkL6XnAqiMJpaBx/+ovDHZAZvOHbridrO0kYuG766CuEPRRUDu9A2AHpRXXQAGlZuy5 X-Received: by 10.99.95.20 with SMTP id t20mr1117241pgb.400.1523745233210; Sat, 14 Apr 2018 15:33:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523745233; cv=none; d=google.com; s=arc-20160816; b=YVCUWNqjrSwM23rXWgEnvccYM6uoKB51u6NkAjoUb1DwGDN4keqI7xuzcrGmb0gN80 80tpIisiguYwfdXpVWgKSa22g1l+F0lI/TXJBURzpHU6+C6lUyusI/ROnW2G5iMOVzS/ qlobJKTbDv1XrwO2Q5JgiU1bHxxTEIiP7ctDQC37j6C25yb4VIFMarsIrgUWSQP9TeMJ lJAcQkFRDWJW8On8NaYdEM7nxp898DGZcEhTGf6QtSzv9U8VNFuPMugORd11X9CdicHR ET18CdalAXuD8oHoFaM+QKwss+fllh2N3+/19/qu7LSDck68MhC9D7b+tBx2w468Ua86 WgDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=dxuaLZXc4fOeNEwWB1yTL6Ds2z+GpkN8Pa1JWJnqA7I=; b=0MhwM7lIkE9kYRes93y8zKKMRE6ZUDmBHm6JZEnCqPLQMrxV0JpdGphZnI128o+Xwz WO20WToYEqmdx7fTc/gaRIjZrj8TWF9A9a6ROCTOIMTmd8iXY3LK1QEvT3L7bUmLibSd p4xdPDmwmOFjQOcc7tMFSRlwLi/a6Otwn6Yc5lZp1whSmq/T4Wxn0pGrWTnRkml7Nlo1 pg8zTtgWCTHjI1t90MSMfsYk5qc26m4oURkwxt58mQ+YHwFizop7oyQ34EReMjcxuHAw z+cT3F/UFOrjDU5SUWeGMvo/yXOHAkDiwXmeRu3frfi2BjMM+GyBuv3nswqSJDBfEF+i U9gQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=L3IAMqQS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r7si1522526pfi.98.2018.04.14.15.33.39; Sat, 14 Apr 2018 15:33:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amazon.de header.s=amazon201209 header.b=L3IAMqQS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=amazon.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752218AbeDNWcE (ORCPT + 99 others); Sat, 14 Apr 2018 18:32:04 -0400 Received: from smtp-fw-4101.amazon.com ([72.21.198.25]:35070 "EHLO smtp-fw-4101.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751946AbeDNWcC (ORCPT ); Sat, 14 Apr 2018 18:32:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209; t=1523745121; x=1555281121; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:mime-version: content-transfer-encoding; bh=dxuaLZXc4fOeNEwWB1yTL6Ds2z+GpkN8Pa1JWJnqA7I=; b=L3IAMqQSCxQxWb7y7oD2uTek7gj0IdkXrCHliSvmREfQtM17wXOdFbSz Uz9BBWDAKsGcBbkecYpAEdKioIS3/uyj4DPwBvbPLub4QwuJyb/D4Okjh QrU+bwWOiNBcGcCYWR5x5/yILrskLw8bbtlAaWyjbfRZdqOlCNwsUa17O 8=; X-IronPort-AV: E=Sophos;i="5.48,451,1517875200"; d="scan'208";a="715956504" Received: from iad6-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-2c-4e7c8266.us-west-2.amazon.com) ([10.124.125.6]) by smtp-border-fw-out-4101.iad4.amazon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 14 Apr 2018 22:31:56 +0000 Received: from EX13MTAUEA001.ant.amazon.com (pdx1-ws-svc-p6-lb9-vlan3.pdx.amazon.com [10.236.137.198]) by email-inbound-relay-2c-4e7c8266.us-west-2.amazon.com (8.14.7/8.14.7) with ESMTP id w3EMVmjo069464 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Sat, 14 Apr 2018 22:31:55 GMT Received: from EX13D01EUB004.ant.amazon.com (10.43.166.180) by EX13MTAUEA001.ant.amazon.com (10.43.61.82) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Sat, 14 Apr 2018 22:31:54 +0000 Received: from EX13D01EUB003.ant.amazon.com (10.43.166.248) by EX13D01EUB004.ant.amazon.com (10.43.166.180) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Sat, 14 Apr 2018 22:31:53 +0000 Received: from EX13D01EUB003.ant.amazon.com ([10.43.166.248]) by EX13D01EUB003.ant.amazon.com ([10.43.166.248]) with mapi id 15.00.1236.000; Sat, 14 Apr 2018 22:31:53 +0000 From: "Raslan, KarimAllah" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "jmattson@google.com" , "tglx@linutronix.de" , "rkrcmar@redhat.com" , "hpa@zytor.com" , "pbonzini@redhat.com" , "mingo@redhat.com" , "x86@kernel.org" Subject: Re: [PATCH 2/2] kvm: nVMX: Introduce KVM_CAP_STATE Thread-Topic: [PATCH 2/2] kvm: nVMX: Introduce KVM_CAP_STATE Thread-Index: AQHT0nC6+MLPx/lKCUKGTnSUimWtFqQAbUeAgABunAA= Date: Sat, 14 Apr 2018 22:31:53 +0000 Message-ID: <1523745112.32594.73.camel@amazon.de> References: <1523545958-28059-1-git-send-email-karahmed@amazon.de> <1523545958-28059-2-git-send-email-karahmed@amazon.de> <1523721359.32594.71.camel@amazon.de> In-Reply-To: <1523721359.32594.71.camel@amazon.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.166.15] Content-Type: text/plain; charset="utf-8" Content-ID: MIME-Version: 1.0 Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gU2F0LCAyMDE4LTA0LTE0IGF0IDE1OjU2ICswMDAwLCBSYXNsYW4sIEthcmltQWxsYWggd3Jv dGU6DQo+IE9uIFRodSwgMjAxOC0wNC0xMiBhdCAxNzoxMiArMDIwMCwgS2FyaW1BbGxhaCBBaG1l ZCB3cm90ZToNCj4gPiANCj4gPiBGcm9tOiBKaW0gTWF0dHNvbiA8am1hdHRzb25AZ29vZ2xlLmNv bT4NCj4gPiANCj4gPiBGb3IgbmVzdGVkIHZpcnR1YWxpemF0aW9uIEwwIEtWTSBpcyBtYW5hZ2lu ZyBhIGJpdCBvZiBzdGF0ZSBmb3IgTDIgZ3Vlc3RzLA0KPiA+IHRoaXMgc3RhdGUgY2FuIG5vdCBi ZSBjYXB0dXJlZCB0aHJvdWdoIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIElPQ1RMcy4gSW4NCj4g PiBmYWN0IHRoZSBzdGF0ZSBjYXB0dXJlZCB0aHJvdWdoIGFsbCBvZiB0aGVzZSBJT0NUTHMgaXMg dXN1YWxseSBhIG1peCBvZiBMMQ0KPiA+IGFuZCBMMiBzdGF0ZS4gSXQgaXMgYWxzbyBkZXBlbmRl bnQgb24gd2hldGhlciB0aGUgTDIgZ3Vlc3Qgd2FzIHJ1bm5pbmcgYXQNCj4gPiB0aGUgbW9tZW50 IHdoZW4gdGhlIHByb2Nlc3Mgd2FzIGludGVycnVwdGVkIHRvIHNhdmUgaXRzIHN0YXRlLg0KPiA+ IA0KPiA+IFdpdGggdGhpcyBjYXBhYmlsaXR5LCB0aGVyZSBhcmUgdHdvIG5ldyB2Y3B1IGlvY3Rs czogS1ZNX0dFVF9WTVhfU1RBVEUgYW5kDQo+ID4gS1ZNX1NFVF9WTVhfU1RBVEUuIFRoZXNlIGNh biBiZSB1c2VkIGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhIFZNIHRoYXQgaXMNCj4gPiBpbiBW TVggb3BlcmF0aW9uLg0KPiA+IA0KPiA+IENjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRo YXQuY29tPg0KPiA+IENjOiBSYWRpbSBLcsSNbcOhxZkgPHJrcmNtYXJAcmVkaGF0LmNvbT4NCj4g PiBDYzogVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+DQo+ID4gQ2M6IEluZ28g TW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPg0KPiA+IENjOiBILiBQZXRlciBBbnZpbiA8aHBhQHp5 dG9yLmNvbT4NCj4gPiBDYzogeDg2QGtlcm5lbC5vcmcNCj4gPiBDYzoga3ZtQHZnZXIua2VybmVs Lm9yZw0KPiA+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+ID4gU2lnbmVkLW9m Zi1ieTogSmltIE1hdHRzb24gPGptYXR0c29uQGdvb2dsZS5jb20+DQo+ID4gW2thcmFobWVkQCAt IHJlbmFtZSBzdHJ1Y3RzIGFuZCBmdW5jdGlvbnMgYW5kIG1ha2UgdGhlbSByZWFkeSBmb3IgQU1E IGFuZA0KPiA+ICAgICAgICAgICAgICBhZGRyZXNzIHByZXZpb3VzIGNvbW1lbnRzLg0KPiA+ICAg ICAgICAgICAgLSByZWJhc2UgJiBhIGJpdCBvZiByZWZhY3RvcmluZy4NCj4gPiAgICAgICAgICAg IC0gTWVyZ2UgNy84IGFuZCA4LzggaW50byBvbmUgcGF0Y2guDQo+ID4gICAgICAgICAgICAtIEZv cmNlIGEgVk1FeGl0IGZyb20gTDIgYWZ0ZXIgcmVhZGluZyB0aGUga3ZtX3N0YXRlIHRvIGF2b2lk DQo+ID4gICAgICAgICAgICAgIG1peGVkIHN0YXRlIGJldHdlZW4gTDEgYW5kIEwyIG9uIHJlc3Vy cmVjdGluZyB0aGUgaW5zdGFuY2UuIF0NCj4gPiBTaWduZWQtb2ZmLWJ5OiBLYXJpbUFsbGFoIEFo bWVkIDxrYXJhaG1lZEBhbWF6b24uZGU+DQo+ID4gLS0tDQo+ID4gdjIgLT4gdjM6DQo+ID4gLSBS ZW1vdmUgdGhlIGZvcmNlZCBWTUV4aXQgZnJvbSBMMiBhZnRlciByZWFkaW5nIHRoZSBrdm1fc3Rh dGUuIFRoZSBhY3R1YWwNCj4gPiAgIHByb2JsZW0gaXMgc29sdmVkLg0KPiA+IC0gUmViYXNlIGFn YWluIQ0KPiA+IC0gU2V0IG5lc3RlZF9ydW5fcGVuZGluZyBkdXJpbmcgcmVzdG9yZSAobm90IHN1 cmUgaWYgaXQgbWFrZXMgc2Vuc2UgeWV0IG9yDQo+ID4gICBub3QpLg0KPiA+IC0gUmVkdWNlIEtW TV9SRVFVRVNUX0FSQ0hfQkFTRSB0byA3IGluc3RlYWQgb2YgOCAodGhlIG90aGVyIGFsdGVybmF0 aXZlIGlzDQo+ID4gICB0byBzd2l0Y2ggZXZlcnl0aGluZyB0byB1NjQpDQo+ID4gDQo+ID4gdjEg LT4gdjI6DQo+ID4gLSBSZW5hbWUgc3RydWN0cyBhbmQgZnVuY3Rpb25zIGFuZCBtYWtlIHRoZW0g cmVhZHkgZm9yIEFNRCBhbmQgYWRkcmVzcw0KPiA+ICAgcHJldmlvdXMgY29tbWVudHMuDQo+ID4g LSBSZWJhc2UgJiBhIGJpdCBvZiByZWZhY3RvcmluZy4NCj4gPiAtIE1lcmdlIDcvOCBhbmQgOC84 IGludG8gb25lIHBhdGNoLg0KPiA+IC0gRm9yY2UgYSBWTUV4aXQgZnJvbSBMMiBhZnRlciByZWFk aW5nIHRoZSBrdm1fc3RhdGUgdG8gYXZvaWQgbWl4ZWQgc3RhdGUNCj4gPiAgIGJldHdlZW4gTDEg YW5kIEwyIG9uIHJlc3VycmVjdGluZyB0aGUgaW5zdGFuY2UuDQo+ID4gLS0tDQo+ID4gIERvY3Vt ZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dCB8ICA0NyArKysrKysrKysrDQo+ID4gIGFyY2gv eDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmggICB8ICAgNyArKw0KPiA+ICBhcmNoL3g4Ni9pbmNs dWRlL3VhcGkvYXNtL2t2bS5oICAgfCAgMzggKysrKysrKysNCj4gPiAgYXJjaC94ODYva3ZtL3Zt eC5jICAgICAgICAgICAgICAgIHwgMTc3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystDQo+ID4gIGFyY2gveDg2L2t2bS94ODYuYyAgICAgICAgICAgICAgICB8ICAyMSArKysr Kw0KPiA+ICBpbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggICAgICAgICAgfCAgIDIgKy0NCj4gPiAg aW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oICAgICAgICAgIHwgICA1ICsrDQo+ID4gIDcgZmlsZXMg Y2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+ID4gDQo+ID4gZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBpLnR4dCBiL0RvY3VtZW50YXRp b24vdmlydHVhbC9rdm0vYXBpLnR4dA0KPiA+IGluZGV4IDFjNzk1OGIuLmM1MWQ1ZDMgMTAwNjQ0 DQo+ID4gLS0tIGEvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9hcGkudHh0DQo+ID4gKysrIGIv RG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9hcGkudHh0DQo+ID4gQEAgLTM1NDgsNiArMzU0OCw1 MyBAQCBSZXR1cm5zOiAwIG9uIHN1Y2Nlc3MsDQo+ID4gIAktRU5PRU5UIG9uIGRlYXNzaWduIGlm IHRoZSBjb25uX2lkIGlzbid0IHJlZ2lzdGVyZWQNCj4gPiAgCS1FRVhJU1Qgb24gYXNzaWduIGlm IHRoZSBjb25uX2lkIGlzIGFscmVhZHkgcmVnaXN0ZXJlZA0KPiA+ICANCj4gPiArNC4xMTQgS1ZN X0dFVF9TVEFURQ0KPiA+ICsNCj4gPiArQ2FwYWJpbGl0eTogS1ZNX0NBUF9TVEFURQ0KPiA+ICtB cmNoaXRlY3R1cmVzOiB4ODYNCj4gPiArVHlwZTogdmNwdSBpb2N0bA0KPiA+ICtQYXJhbWV0ZXJz OiBzdHJ1Y3Qga3ZtX3N0YXRlIChpbi9vdXQpDQo+ID4gK1JldHVybnM6IDAgb24gc3VjY2Vzcywg LTEgb24gZXJyb3INCj4gPiArRXJyb3JzOg0KPiA+ICsgIEUyQklHOiAgICAgdGhlIGRhdGEgc2l6 ZSBleGNlZWRzIHRoZSB2YWx1ZSBvZiAnc2l6ZScgc3BlY2lmaWVkIGJ5DQo+ID4gKyAgICAgICAg ICAgICB0aGUgdXNlciAodGhlIHNpemUgcmVxdWlyZWQgd2lsbCBiZSB3cml0dGVuIGludG8gc2l6 ZSkuDQo+ID4gKw0KPiA+ICtzdHJ1Y3Qga3ZtX3N0YXRlIHsNCj4gPiArCV9fdTE2IGZsYWdzOw0K PiA+ICsJX191MTYgZm9ybWF0Ow0KPiA+ICsJX191MzIgc2l6ZTsNCj4gPiArCXVuaW9uIHsNCj4g PiArCQlzdHJ1Y3Qga3ZtX3ZteF9zdGF0ZSB2bXg7DQo+ID4gKwkJc3RydWN0IGt2bV9zdm1fc3Rh dGUgc3ZtOw0KPiA+ICsJCV9fdTggcGFkWzEyMF07DQo+ID4gKwl9Ow0KPiA+ICsJX191OCBkYXRh WzBdOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArVGhpcyBpb2N0bCBjb3BpZXMgdGhlIHZjcHUncyBr dm1fc3RhdGUgc3RydWN0IGZyb20gdGhlIGtlcm5lbCB0byB1c2Vyc3BhY2UuDQo+ID4gKw0KPiA+ ICs0LjExNSBLVk1fU0VUX1NUQVRFDQo+ID4gKw0KPiA+ICtDYXBhYmlsaXR5OiBLVk1fQ0FQX1NU QVRFDQo+ID4gK0FyY2hpdGVjdHVyZXM6IHg4Ng0KPiA+ICtUeXBlOiB2Y3B1IGlvY3RsDQo+ID4g K1BhcmFtZXRlcnM6IHN0cnVjdCBrdm1fc3RhdGUgKGluKQ0KPiA+ICtSZXR1cm5zOiAwIG9uIHN1 Y2Nlc3MsIC0xIG9uIGVycm9yDQo+ID4gKw0KPiA+ICtzdHJ1Y3Qga3ZtX3N0YXRlIHsNCj4gPiAr CV9fdTE2IGZsYWdzOw0KPiA+ICsJX191MTYgZm9ybWF0Ow0KPiA+ICsJX191MzIgc2l6ZTsNCj4g PiArCXVuaW9uIHsNCj4gPiArCQlzdHJ1Y3Qga3ZtX3ZteF9zdGF0ZSB2bXg7DQo+ID4gKwkJc3Ry dWN0IGt2bV9zdm1fc3RhdGUgc3ZtOw0KPiA+ICsJCV9fdTggcGFkWzEyMF07DQo+ID4gKwl9Ow0K PiA+ICsJX191OCBkYXRhWzBdOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArVGhpcyBjb3BpZXMgdGhl IHZjcHUncyBrdm1fc3RhdGUgc3RydWN0IGZyb20gdXNlcnNwYWNlIHRvIHRoZSBrZXJuZWwuDQo+ ID4gKz4+Pj4+Pj4gMTNhN2M5ZS4uLiBrdm06IG5WTVg6IEludHJvZHVjZSBLVk1fQ0FQX1NUQVRF DQo+ID4gIA0KPiA+ICA1LiBUaGUga3ZtX3J1biBzdHJ1Y3R1cmUNCj4gPiAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9o b3N0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9zdC5oDQo+ID4gaW5kZXggOWZhNGY1 Ny4uYWQyMTE2YSAxMDA2NDQNCj4gPiAtLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1faG9z dC5oDQo+ID4gKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaA0KPiA+IEBAIC03 NSw2ICs3NSw3IEBADQo+ID4gICNkZWZpbmUgS1ZNX1JFUV9IVl9FWElUCQkJS1ZNX0FSQ0hfUkVR KDIxKQ0KPiA+ICAjZGVmaW5lIEtWTV9SRVFfSFZfU1RJTUVSCQlLVk1fQVJDSF9SRVEoMjIpDQo+ ID4gICNkZWZpbmUgS1ZNX1JFUV9MT0FEX0VPSV9FWElUTUFQCUtWTV9BUkNIX1JFUSgyMykNCj4g PiArI2RlZmluZSBLVk1fUkVRX0dFVF9WTUNTMTJfUEFHRVMJS1ZNX0FSQ0hfUkVRKDI0KQ0KPiA+ ICANCj4gPiAgI2RlZmluZSBDUjBfUkVTRVJWRURfQklUUyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiA+ICAJKH4odW5zaWduZWQgbG9uZykoWDg2X0NS MF9QRSB8IFg4Nl9DUjBfTVAgfCBYODZfQ1IwX0VNIHwgWDg2X0NSMF9UUyBcDQo+ID4gQEAgLTEw ODQsNiArMTA4NSwxMiBAQCBzdHJ1Y3Qga3ZtX3g4Nl9vcHMgew0KPiA+ICANCj4gPiAgCXZvaWQg KCpzZXR1cF9tY2UpKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSk7DQo+ID4gIA0KPiA+ICsJaW50ICgq Z2V0X3N0YXRlKShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsDQo+ID4gKwkJCSBzdHJ1Y3Qga3ZtX3N0 YXRlIF9fdXNlciAqdXNlcl9rdm1fc3RhdGUpOw0KPiA+ICsJaW50ICgqc2V0X3N0YXRlKShzdHJ1 Y3Qga3ZtX3ZjcHUgKnZjcHUsDQo+ID4gKwkJCSBzdHJ1Y3Qga3ZtX3N0YXRlIF9fdXNlciAqdXNl cl9rdm1fc3RhdGUpOw0KPiA+ICsJdm9pZCAoKmdldF92bWNzMTJfcGFnZXMpKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSk7DQo+ID4gKw0KPiA+ICAJaW50ICgqc21pX2FsbG93ZWQpKHN0cnVjdCBrdm1f dmNwdSAqdmNwdSk7DQo+ID4gIAlpbnQgKCpwcmVfZW50ZXJfc21tKShzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUsIGNoYXIgKnNtc3RhdGUpOw0KPiA+ICAJaW50ICgqcHJlX2xlYXZlX3NtbSkoc3RydWN0 IGt2bV92Y3B1ICp2Y3B1LCB1NjQgc21iYXNlKTsNCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYv aW5jbHVkZS91YXBpL2FzbS9rdm0uaCBiL2FyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtLmgN Cj4gPiBpbmRleCBjNTM1YzJmLi5kMmM4NjBhIDEwMDY0NA0KPiA+IC0tLSBhL2FyY2gveDg2L2lu Y2x1ZGUvdWFwaS9hc20va3ZtLmgNCj4gPiArKysgYi9hcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNt L2t2bS5oDQo+ID4gQEAgLTM3OCw0ICszNzgsNDIgQEAgc3RydWN0IGt2bV9zeW5jX3JlZ3Mgew0K PiA+ICAjZGVmaW5lIEtWTV9YODZfUVVJUktfTElOVDBfUkVFTkFCTEVECSgxIDw8IDApDQo+ID4g ICNkZWZpbmUgS1ZNX1g4Nl9RVUlSS19DRF9OV19DTEVBUkVECSgxIDw8IDEpDQo+ID4gIA0KPiA+ ICsjZGVmaW5lIEtWTV9TVEFURV9HVUVTVF9NT0RFCTB4MDAwMDAwMDENCj4gPiArI2RlZmluZSBL Vk1fU1RBVEVfUlVOX1BFTkRJTkcJMHgwMDAwMDAwMg0KPiA+ICsjZGVmaW5lIEtWTV9TVEFURV9H SUYJCTB4MDAwMDAwMDQNCj4gPiArDQo+ID4gK3N0cnVjdCBrdm1fdm14X3N0YXRlIHsNCj4gPiAr CV9fdTY0IHZteG9uX3BhOw0KPiA+ICsJX191NjQgdm1jc19wYTsNCj4gPiArfTsNCj4gPiArDQo+ ID4gK3N0cnVjdCBrdm1fc3ZtX3N0YXRlIHsNCj4gPiArCV9fdTY0IGhzYXZlX3BhOw0KPiA+ICsJ X191NjQgdm1jYl9wYTsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIGZvciBLVk1fQ0FQX1NUQVRF ICovDQo+ID4gK3N0cnVjdCBrdm1fc3RhdGUgew0KPiA+ICsJLyogS1ZNX1NUQVRFXyogZmxhZ3Mg Ki8NCj4gPiArCV9fdTE2IGZsYWdzOw0KPiA+ICsNCj4gPiArCS8qIDAgZm9yIFZNWCwgMSBmb3Ig U1ZNLiAgKi8NCj4gPiArCV9fdTE2IGZvcm1hdDsNCj4gPiArDQo+ID4gKwkvKiAxMjggZm9yIFNW TSwgMTI4ICsgVk1DUyBzaXplIGZvciBWTVguICAqLw0KPiA+ICsJX191MzIgc2l6ZTsNCj4gPiAr DQo+ID4gKwl1bmlvbiB7DQo+ID4gKwkJLyogVk1YT04sIFZNQ1MgKi8NCj4gPiArCQlzdHJ1Y3Qg a3ZtX3ZteF9zdGF0ZSB2bXg7DQo+ID4gKwkJLyogSFNBVkVfUEEsIFZNQ0IgKi8NCj4gPiArCQlz dHJ1Y3Qga3ZtX3N2bV9zdGF0ZSBzdm07DQo+ID4gKw0KPiA+ICsJCS8qIFBhZCB0aGUgdW5pb24g dG8gMTIwIGJ5dGVzLiAgKi8NCj4gPiArCQlfX3U4IHBhZFsxMjBdOw0KPiA+ICsJfTsNCj4gPiAr DQo+ID4gKwlfX3U4IGRhdGFbMF07DQo+ID4gK307DQo+ID4gKw0KPiA+ICAjZW5kaWYgLyogX0FT TV9YODZfS1ZNX0ggKi8NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC5jIGIvYXJj aC94ODYva3ZtL3ZteC5jDQo+ID4gaW5kZXggMmY1NzU3MS4uYzJiNDM2YiAxMDA2NDQNCj4gPiAt LS0gYS9hcmNoL3g4Ni9rdm0vdm14LmMNCj4gPiArKysgYi9hcmNoL3g4Ni9rdm0vdm14LmMNCj4g PiBAQCAtMTAzNTksMTAgKzEwMzU5LDEwIEBAIHN0YXRpYyB2b2lkIHZteF9pbmplY3RfcGFnZV9m YXVsdF9uZXN0ZWQoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LA0KPiA+ICBzdGF0aWMgaW5saW5lIGJv b2wgbmVzdGVkX3ZteF9wcmVwYXJlX21zcl9iaXRtYXAoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LA0K PiA+ICAJCQkJCQkgc3RydWN0IHZtY3MxMiAqdm1jczEyKTsNCj4gPiAgDQo+ID4gLXN0YXRpYyB2 b2lkIG5lc3RlZF9nZXRfdm1jczEyX3BhZ2VzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwNCj4gPiAt CQkJCQlzdHJ1Y3Qgdm1jczEyICp2bWNzMTIpDQo+ID4gK3N0YXRpYyB2b2lkIG5lc3RlZF9nZXRf dm1jczEyX3BhZ2VzKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkNCj4gPiAgew0KPiA+ICAJc3RydWN0 IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7DQo+ID4gKwlzdHJ1Y3Qgdm1jczEyICp2bWNz MTIgPSBnZXRfdm1jczEyKHZjcHUpOw0KPiA+ICANCj4gPiAgCWlmIChuZXN0ZWRfY3B1X2hhczIo dm1jczEyLCBTRUNPTkRBUllfRVhFQ19WSVJUVUFMSVpFX0FQSUNfQUNDRVNTRVMpKSB7DQo+ID4g IAkJaWYgKHZtY3MxMi0+YXBpY19hY2Nlc3NfYWRkciAhPSB2bXgtPm5lc3RlZC5hcGljX2FjY2Vz c19tYXBwaW5nLmdmbiA8PCBQQUdFX1NISUZUKSB7DQo+ID4gQEAgLTExNDMwLDggKzExNDMwLDYg QEAgc3RhdGljIGludCBlbnRlcl92bXhfbm9uX3Jvb3RfbW9kZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZj cHUsIGJvb2wgZnJvbV92bWVudHJ5KQ0KPiA+ICAJCXJldHVybiAxOw0KPiA+ICAJfQ0KPiA+ICAN Cj4gPiAtCW5lc3RlZF9nZXRfdm1jczEyX3BhZ2VzKHZjcHUsIHZtY3MxMik7DQo+ID4gLQ0KPiA+ ICAJbXNyX2VudHJ5X2lkeCA9IG5lc3RlZF92bXhfbG9hZF9tc3IodmNwdSwNCj4gPiAgCQkJCQkg ICAgdm1jczEyLT52bV9lbnRyeV9tc3JfbG9hZF9hZGRyLA0KPiA+ICAJCQkJCSAgICB2bWNzMTIt PnZtX2VudHJ5X21zcl9sb2FkX2NvdW50KTsNCj4gPiBAQCAtMTE1MjksNiArMTE1MjcsOCBAQCBz dGF0aWMgaW50IG5lc3RlZF92bXhfcnVuKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgYm9vbCBsYXVu Y2gpDQo+ID4gIAlpZiAocmV0KQ0KPiA+ICAJCXJldHVybiByZXQ7DQo+ID4gIA0KPiA+ICsJbmVz dGVkX2dldF92bWNzMTJfcGFnZXModmNwdSk7DQo+ID4gKw0KPiA+ICAJLyoNCj4gPiAgCSAqIElm IHdlJ3JlIGVudGVyaW5nIGEgaGFsdGVkIEwyIHZjcHUgYW5kIHRoZSBMMiB2Y3B1IHdvbid0IGJl IHdva2VuDQo+ID4gIAkgKiBieSBldmVudCBpbmplY3Rpb24sIGhhbHQgdmNwdS4NCj4gPiBAQCAt MTI1OTUsNiArMTI1OTUsMTcxIEBAIHN0YXRpYyBpbnQgZW5hYmxlX3NtaV93aW5kb3coc3RydWN0 IGt2bV92Y3B1ICp2Y3B1KQ0KPiA+ICAJcmV0dXJuIDA7DQo+ID4gIH0NCj4gPiAgDQo+ID4gK3N0 YXRpYyBpbnQgZ2V0X3ZtY3NfY2FjaGUoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LA0KPiA+ICsJCQkg IHN0cnVjdCBrdm1fc3RhdGUgX191c2VyICp1c2VyX2t2bV9zdGF0ZSkNCj4gPiArew0KPiA+ICsJ c3RydWN0IHZjcHVfdm14ICp2bXggPSB0b192bXgodmNwdSk7DQo+ID4gKwlzdHJ1Y3Qgdm1jczEy ICp2bWNzMTIgPSBnZXRfdm1jczEyKHZjcHUpOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBX aGVuIHJ1bm5pbmcgTDIsIHRoZSBhdXRob3JpdGF0aXZlIHZtY3MxMiBzdGF0ZSBpcyBpbiB0aGUN Cj4gPiArCSAqIHZtY3MwMi4gV2hlbiBydW5uaW5nIEwxLCB0aGUgYXV0aG9yaXRhdGl2ZSB2bWNz MTIgc3RhdGUgaXMNCj4gPiArCSAqIGluIHRoZSBzaGFkb3cgdm1jcyBsaW5rZWQgdG8gdm1jczAx LCB1bmxlc3MNCj4gPiArCSAqIHN5bmNfc2hhZG93X3ZtY3MgaXMgc2V0LCBpbiB3aGljaCBjYXNl LCB0aGUgYXV0aG9yaXRhdGl2ZQ0KPiA+ICsJICogdm1jczEyIHN0YXRlIGlzIGluIHRoZSB2bWNz MTIgYWxyZWFkeS4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKGlzX2d1ZXN0X21vZGUodmNwdSkpDQo+ ID4gKwkJc3luY192bWNzMTIodmNwdSwgdm1jczEyKTsNCj4gPiArCWVsc2UgaWYgKGVuYWJsZV9z aGFkb3dfdm1jcyAmJiAhdm14LT5uZXN0ZWQuc3luY19zaGFkb3dfdm1jcykNCj4gPiArCQljb3B5 X3NoYWRvd190b192bWNzMTIodm14KTsNCj4gPiArDQo+ID4gKwlpZiAoY29weV90b191c2VyKHVz ZXJfa3ZtX3N0YXRlLT5kYXRhLCB2bWNzMTIsIHNpemVvZigqdm1jczEyKSkpDQo+ID4gKwkJcmV0 dXJuIC1FRkFVTFQ7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4g K3N0YXRpYyBpbnQgZ2V0X3ZteF9zdGF0ZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsDQo+ID4gKwkJ CSBzdHJ1Y3Qga3ZtX3N0YXRlIF9fdXNlciAqdXNlcl9rdm1fc3RhdGUpDQo+ID4gK3sNCj4gPiAr CXUzMiB1c2VyX2RhdGFfc2l6ZTsNCj4gPiArCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14 KHZjcHUpOw0KPiA+ICsJc3RydWN0IGt2bV9zdGF0ZSBrdm1fc3RhdGUgPSB7DQo+ID4gKwkJLmZs YWdzID0gMCwNCj4gPiArCQkuZm9ybWF0ID0gMCwNCj4gPiArCQkuc2l6ZSA9IHNpemVvZihrdm1f c3RhdGUpLA0KPiA+ICsJCS52bXgudm14b25fcGEgPSAtMXVsbCwNCj4gPiArCQkudm14LnZtY3Nf cGEgPSAtMXVsbCwNCj4gPiArCX07DQo+ID4gKw0KPiA+ICsJaWYgKGNvcHlfZnJvbV91c2VyKCZ1 c2VyX2RhdGFfc2l6ZSwgJnVzZXJfa3ZtX3N0YXRlLT5zaXplLA0KPiA+ICsJCQkgICBzaXplb2Yo dXNlcl9kYXRhX3NpemUpKSkNCj4gPiArCQlyZXR1cm4gLUVGQVVMVDsNCj4gPiArDQo+ID4gKwlp ZiAobmVzdGVkX3ZteF9hbGxvd2VkKHZjcHUpICYmIHZteC0+bmVzdGVkLnZteG9uKSB7DQo+ID4g KwkJa3ZtX3N0YXRlLnZteC52bXhvbl9wYSA9IHZteC0+bmVzdGVkLnZteG9uX3B0cjsNCj4gPiAr CQlrdm1fc3RhdGUudm14LnZtY3NfcGEgPSB2bXgtPm5lc3RlZC5jdXJyZW50X3ZtcHRyOw0KPiA+ ICsNCj4gPiArCQlpZiAodm14LT5uZXN0ZWQuY3VycmVudF92bXB0ciAhPSAtMXVsbCkNCj4gPiAr CQkJa3ZtX3N0YXRlLnNpemUgKz0gVk1DUzEyX1NJWkU7DQo+ID4gKw0KPiA+ICsJCWlmIChpc19n dWVzdF9tb2RlKHZjcHUpKSB7DQo+ID4gKwkJCWt2bV9zdGF0ZS5mbGFncyB8PSBLVk1fU1RBVEVf R1VFU1RfTU9ERTsNCj4gPiArDQo+ID4gKwkJCWlmICh2bXgtPm5lc3RlZC5uZXN0ZWRfcnVuX3Bl bmRpbmcpDQo+ID4gKwkJCQlrdm1fc3RhdGUuZmxhZ3MgfD0gS1ZNX1NUQVRFX1JVTl9QRU5ESU5H Ow0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAodXNlcl9kYXRhX3NpemUgPCBr dm1fc3RhdGUuc2l6ZSkgew0KPiA+ICsJCWlmIChjb3B5X3RvX3VzZXIoJnVzZXJfa3ZtX3N0YXRl LT5zaXplLCAma3ZtX3N0YXRlLnNpemUsDQo+ID4gKwkJCQkgc2l6ZW9mKGt2bV9zdGF0ZS5zaXpl KSkpDQo+ID4gKwkJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsJCXJldHVybiAtRTJCSUc7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJaWYgKGNvcHlfdG9fdXNlcih1c2VyX2t2bV9zdGF0ZSwgJmt2bV9z dGF0ZSwgc2l6ZW9mKGt2bV9zdGF0ZSkpKQ0KPiA+ICsJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsN Cj4gPiArCWlmICh2bXgtPm5lc3RlZC5jdXJyZW50X3ZtcHRyID09IC0xdWxsKQ0KPiA+ICsJCXJl dHVybiAwOw0KPiA+ICsNCj4gPiArCXJldHVybiBnZXRfdm1jc19jYWNoZSh2Y3B1LCB1c2VyX2t2 bV9zdGF0ZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc2V0X3ZtY3NfY2FjaGUo c3RydWN0IGt2bV92Y3B1ICp2Y3B1LA0KPiA+ICsJCQkgIHN0cnVjdCBrdm1fc3RhdGUgX191c2Vy ICp1c2VyX2t2bV9zdGF0ZSwNCj4gPiArCQkJICBzdHJ1Y3Qga3ZtX3N0YXRlICprdm1fc3RhdGUp DQo+ID4gKw0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgdmNwdV92bXggKnZteCA9IHRvX3ZteCh2Y3B1 KTsNCj4gPiArCXN0cnVjdCB2bWNzMTIgKnZtY3MxMiA9IGdldF92bWNzMTIodmNwdSk7DQo+ID4g Kwl1MzIgZXhpdF9xdWFsOw0KPiA+ICsJaW50IHJldDsNCj4gPiArDQo+ID4gKwlpZiAoKGt2bV9z dGF0ZS0+c2l6ZSA8IChzaXplb2YoKnZtY3MxMikgKyBzaXplb2YoKmt2bV9zdGF0ZSkpKSB8fA0K PiA+ICsJICAgIGt2bV9zdGF0ZS0+dm14LnZtY3NfcGEgPT0ga3ZtX3N0YXRlLT52bXgudm14b25f cGEgfHwNCj4gPiArCSAgICAhcGFnZV9hZGRyZXNzX3ZhbGlkKHZjcHUsIGt2bV9zdGF0ZS0+dm14 LnZtY3NfcGEpKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmIChjb3B5 X2Zyb21fdXNlcih2bWNzMTIsIHVzZXJfa3ZtX3N0YXRlLT5kYXRhLCBzaXplb2YoKnZtY3MxMikp KQ0KPiA+ICsJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsNCj4gPiArCWlmICh2bWNzMTItPnJldmlz aW9uX2lkICE9IFZNQ1MxMl9SRVZJU0lPTikNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr DQo+ID4gKwlzZXRfY3VycmVudF92bXB0cih2bXgsIGt2bV9zdGF0ZS0+dm14LnZtY3NfcGEpOw0K PiA+ICsNCj4gPiArCWlmICghKGt2bV9zdGF0ZS0+ZmxhZ3MgJiBLVk1fU1RBVEVfR1VFU1RfTU9E RSkpDQo+ID4gKwkJcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICsJaWYgKGt2bV9zdGF0ZS0+ZmxhZ3Mg JiBLVk1fU1RBVEVfUlVOX1BFTkRJTkcpDQo+ID4gKwkJdm14LT5uZXN0ZWQubmVzdGVkX3J1bl9w ZW5kaW5nID0gMTsNCj4gPiArDQo+ID4gKwlpZiAoY2hlY2tfdm1lbnRyeV9wcmVyZXFzKHZjcHUs IHZtY3MxMikgfHwNCj4gPiArCSAgICBjaGVja192bWVudHJ5X3Bvc3RyZXFzKHZjcHUsIHZtY3Mx MiwgJmV4aXRfcXVhbCkpDQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJcmV0 ID0gZW50ZXJfdm14X25vbl9yb290X21vZGUodmNwdSwgdHJ1ZSk7DQo+ID4gKwlpZiAocmV0KQ0K PiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsJLyoNCj4gPiArCSAqIFRoaXMgcmVxdWVz dCB3aWxsIHJlc3VsdCBpbiBhIGNhbGwgdG8NCj4gPiArCSAqIG5lc3RlZF9nZXRfdm1jczEyX3Bh Z2VzIGJlZm9yZSB0aGUgbmV4dCBWTS1lbnRyeS4NCj4gPiArCSAqLw0KPiA+ICsJa3ZtX21ha2Vf cmVxdWVzdChLVk1fUkVRX0dFVF9WTUNTMTJfUEFHRVMsIHZjcHUpOw0KPiA+ICsNCj4gPiArCXZt eC0+bmVzdGVkLm5lc3RlZF9ydW5fcGVuZGluZyA9IDE7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc2V0X3ZteF9zdGF0ZShzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsDQo+ID4gKwkJCSBzdHJ1Y3Qga3ZtX3N0YXRlIF9fdXNlciAqdXNlcl9rdm1f c3RhdGUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCB2Y3B1X3ZteCAqdm14ID0gdG9fdm14KHZjcHUp Ow0KPiA+ICsJc3RydWN0IGt2bV9zdGF0ZSBrdm1fc3RhdGU7DQo+ID4gKwlpbnQgcmV0Ow0KPiA+ ICsNCj4gPiArCWlmIChjb3B5X2Zyb21fdXNlcigma3ZtX3N0YXRlLCB1c2VyX2t2bV9zdGF0ZSwg c2l6ZW9mKGt2bV9zdGF0ZSkpKQ0KPiA+ICsJCXJldHVybiAtRUZBVUxUOw0KPiA+ICsNCj4gPiAr CWlmIChrdm1fc3RhdGUuc2l6ZSA8IHNpemVvZihrdm1fc3RhdGUpKQ0KPiA+ICsJCXJldHVybiAt RUlOVkFMOw0KPiA+ICsNCj4gPiArCWlmIChrdm1fc3RhdGUuZm9ybWF0ICE9IDApDQo+ID4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJaWYgKGt2bV9zdGF0ZS5mbGFncyAmDQo+ID4g KwkgICAgfihLVk1fU1RBVEVfUlVOX1BFTkRJTkcgfCBLVk1fU1RBVEVfR1VFU1RfTU9ERSkpDQo+ ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJaWYgKCFuZXN0ZWRfdm14X2FsbG93 ZWQodmNwdSkpDQo+ID4gKwkJcmV0dXJuIGt2bV9zdGF0ZS52bXgudm14b25fcGEgPT0gLTF1bGwg PyAwIDogLUVJTlZBTDsNCj4gPiArDQo+ID4gKwl2bXhfbGVhdmVfbmVzdGVkKHZjcHUpOw0KPiA+ ICsNCj4gPiArCXZteC0+bmVzdGVkLm5lc3RlZF9ydW5fcGVuZGluZyA9DQo+ID4gKwkJISEoa3Zt X3N0YXRlLmZsYWdzICYgS1ZNX1NUQVRFX1JVTl9QRU5ESU5HKTsNCj4gPiArDQo+ID4gKwlpZiAo a3ZtX3N0YXRlLnZteC52bXhvbl9wYSA9PSAtMXVsbCkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiAr DQo+ID4gKwlpZiAoIXBhZ2VfYWRkcmVzc192YWxpZCh2Y3B1LCBrdm1fc3RhdGUudm14LnZteG9u X3BhKSkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwl2bXgtPm5lc3RlZC52 bXhvbl9wdHIgPSBrdm1fc3RhdGUudm14LnZteG9uX3BhOw0KPiA+ICsJcmV0ID0gZW50ZXJfdm14 X29wZXJhdGlvbih2Y3B1KTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4g PiArDQo+ID4gKwlpZiAoa3ZtX3N0YXRlLnZteC52bWNzX3BhID09IC0xdWxsKQ0KPiA+ICsJCXJl dHVybiAwOw0KPiA+ICsNCj4gPiArCXJldHVybiBzZXRfdm1jc19jYWNoZSh2Y3B1LCB1c2VyX2t2 bV9zdGF0ZSwgJmt2bV9zdGF0ZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0YXRpYyBzdHJ1Y3Qg a3ZtX3g4Nl9vcHMgdm14X3g4Nl9vcHMgX19yb19hZnRlcl9pbml0ID0gew0KPiA+ICAJLmNwdV9o YXNfa3ZtX3N1cHBvcnQgPSBjcHVfaGFzX2t2bV9zdXBwb3J0LA0KPiA+ICAJLmRpc2FibGVkX2J5 X2Jpb3MgPSB2bXhfZGlzYWJsZWRfYnlfYmlvcywNCj4gPiBAQCAtMTI3MjgsNiArMTI4OTMsMTAg QEAgc3RhdGljIHN0cnVjdCBrdm1feDg2X29wcyB2bXhfeDg2X29wcyBfX3JvX2FmdGVyX2luaXQg PSB7DQo+ID4gIA0KPiA+ICAJLnNldHVwX21jZSA9IHZteF9zZXR1cF9tY2UsDQo+ID4gIA0KPiA+ ICsJLmdldF9zdGF0ZSA9IGdldF92bXhfc3RhdGUsDQo+ID4gKwkuc2V0X3N0YXRlID0gc2V0X3Zt eF9zdGF0ZSwNCj4gPiArCS5nZXRfdm1jczEyX3BhZ2VzID0gbmVzdGVkX2dldF92bWNzMTJfcGFn ZXMsDQo+ID4gKw0KPiA+ICAJLnNtaV9hbGxvd2VkID0gdm14X3NtaV9hbGxvd2VkLA0KPiA+ICAJ LnByZV9lbnRlcl9zbW0gPSB2bXhfcHJlX2VudGVyX3NtbSwNCj4gPiAgCS5wcmVfbGVhdmVfc21t ID0gdm14X3ByZV9sZWF2ZV9zbW0sDQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYu YyBiL2FyY2gveDg2L2t2bS94ODYuYw0KPiA+IGluZGV4IDFhMmVkOTIuLjU2NWUxZGUgMTAwNjQ0 DQo+ID4gLS0tIGEvYXJjaC94ODYva3ZtL3g4Ni5jDQo+ID4gKysrIGIvYXJjaC94ODYva3ZtL3g4 Ni5jDQo+ID4gQEAgLTI5MjMsNiArMjkyMyw5IEBAIGludCBrdm1fdm1faW9jdGxfY2hlY2tfZXh0 ZW5zaW9uKHN0cnVjdCBrdm0gKmt2bSwgbG9uZyBleHQpDQo+ID4gIAljYXNlIEtWTV9DQVBfWDJB UElDX0FQSToNCj4gPiAgCQlyID0gS1ZNX1gyQVBJQ19BUElfVkFMSURfRkxBR1M7DQo+ID4gIAkJ YnJlYWs7DQo+ID4gKwljYXNlIEtWTV9DQVBfU1RBVEU6DQo+ID4gKwkJciA9ICEha3ZtX3g4Nl9v cHMtPmdldF9zdGF0ZTsNCj4gPiArCQlicmVhazsNCj4gPiAgCWRlZmF1bHQ6DQo+ID4gIAkJYnJl YWs7DQo+ID4gIAl9DQo+ID4gQEAgLTM5NDEsNiArMzk0NCwyMiBAQCBsb25nIGt2bV9hcmNoX3Zj cHVfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsDQo+ID4gIAkJciA9IGt2bV92Y3B1X2lvY3RsX2Vu YWJsZV9jYXAodmNwdSwgJmNhcCk7DQo+ID4gIAkJYnJlYWs7DQo+ID4gIAl9DQo+ID4gKwljYXNl IEtWTV9HRVRfU1RBVEU6IHsNCj4gPiArCQlzdHJ1Y3Qga3ZtX3N0YXRlIF9fdXNlciAqdXNlcl9r dm1fc3RhdGUgPSBhcmdwOw0KPiA+ICsNCj4gPiArCQlyID0gLUVJTlZBTDsNCj4gPiArCQlpZiAo a3ZtX3g4Nl9vcHMtPmdldF9zdGF0ZSkNCj4gPiArCQkJciA9IGt2bV94ODZfb3BzLT5nZXRfc3Rh dGUodmNwdSwgdXNlcl9rdm1fc3RhdGUpOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJfQ0KPiA+ICsJ Y2FzZSBLVk1fU0VUX1NUQVRFOiB7DQo+ID4gKwkJc3RydWN0IGt2bV9zdGF0ZSBfX3VzZXIgKnVz ZXJfa3ZtX3N0YXRlID0gYXJncDsNCj4gPiArDQo+ID4gKwkJciA9IC1FSU5WQUw7DQo+ID4gKwkJ aWYgKGt2bV94ODZfb3BzLT5zZXRfc3RhdGUpDQo+ID4gKwkJCXIgPSBrdm1feDg2X29wcy0+c2V0 X3N0YXRlKHZjcHUsIHVzZXJfa3ZtX3N0YXRlKTsNCj4gPiArCQlicmVhazsNCj4gPiArCX0NCj4g PiAgCWRlZmF1bHQ6DQo+ID4gIAkJciA9IC1FSU5WQUw7DQo+ID4gIAl9DQo+ID4gQEAgLTcyMTQs NiArNzIzMyw4IEBAIHN0YXRpYyBpbnQgdmNwdV9lbnRlcl9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpDQo+ID4gIAlib29sIHJlcV9pbW1lZGlhdGVfZXhpdCA9IGZhbHNlOw0KPiA+ICANCj4g PiAgCWlmIChrdm1fcmVxdWVzdF9wZW5kaW5nKHZjcHUpKSB7DQo+ID4gKwkJaWYgKGt2bV9jaGVj a19yZXF1ZXN0KEtWTV9SRVFfR0VUX1ZNQ1MxMl9QQUdFUywgdmNwdSkpDQo+ID4gKwkJCWt2bV94 ODZfb3BzLT5nZXRfdm1jczEyX3BhZ2VzKHZjcHUpOw0KPiA+ICAJCWlmIChrdm1fY2hlY2tfcmVx dWVzdChLVk1fUkVRX01NVV9SRUxPQUQsIHZjcHUpKQ0KPiA+ICAJCQlrdm1fbW11X3VubG9hZCh2 Y3B1KTsNCj4gPiAgCQlpZiAoa3ZtX2NoZWNrX3JlcXVlc3QoS1ZNX1JFUV9NSUdSQVRFX1RJTUVS LCB2Y3B1KSkNCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1faG9zdC5oIGIvaW5j bHVkZS9saW51eC9rdm1faG9zdC5oDQo+ID4gaW5kZXggN2EyODg5YS4uMDAxYjEyMiAxMDA2NDQN Cj4gPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgNCj4gPiArKysgYi9pbmNsdWRlL2xp bnV4L2t2bV9ob3N0LmgNCj4gPiBAQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCBpc19lcnJvcl9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKQ0KPiA+ICAjZGVmaW5lIEtWTV9SRVFf TU1VX1JFTE9BRCAgICAgICAgKDEgfCBLVk1fUkVRVUVTVF9XQUlUIHwgS1ZNX1JFUVVFU1RfTk9f V0FLRVVQKQ0KPiA+ICAjZGVmaW5lIEtWTV9SRVFfUEVORElOR19USU1FUiAgICAgMg0KPiA+ICAj ZGVmaW5lIEtWTV9SRVFfVU5IQUxUICAgICAgICAgICAgMw0KPiA+IC0jZGVmaW5lIEtWTV9SRVFV RVNUX0FSQ0hfQkFTRSAgICAgOA0KPiA+ICsjZGVmaW5lIEtWTV9SRVFVRVNUX0FSQ0hfQkFTRSAg ICAgNw0KPiANCj4gUGFvbG8vSmltLA0KPiANCj4gSXMgdGhpcyBiaXQgYWNjZXB0YWJsZSBmb3Ig eW91IG9yIHNob3VsZCBJIGp1c3QgZ28gYWhlYWQgYW5kIHVwZGF0ZQ0KPiAicmVxdWVzdHMiIHRv IGJlIDY0IGJpdCBpbnN0ZWFkPw0KPiANCj4gV2UgcmFuIG91dCBvZiBhcmNoaXRlY3R1cmUgc3Bl Y2lmaWMgYml0cyA6KQ0KDQpJIGp1c3QgZGVjaWRlZCB0byBvcHQgZm9yIHVzaW5nIGFsbCB0aGUg NjQtYml0cyBpbiByZXF1ZXN0czoNCmh0dHBzOi8vbGttbC5vcmcvbGttbC8yMDE4LzQvMTQvOTMN Cg0KU28gSSB3aWxsIGRyb3AgdGhpcyBjaGFuZ2UgdG/CoEtWTV9SRVFVRVNUX0FSQ0hfQkFTRSBp biB0aGUgbmV4dA0KdmVyc2lvbi4NCg0KPiANCj4gPiANCj4gPiAgDQo+ID4gICNkZWZpbmUgS1ZN X0FSQ0hfUkVRX0ZMQUdTKG5yLCBmbGFncykgKHsgXA0KPiA+ICAJQlVJTERfQlVHX09OKCh1bnNp Z25lZCkobnIpID49IDMyIC0gS1ZNX1JFUVVFU1RfQVJDSF9CQVNFKTsgXA0KPiA+IGRpZmYgLS1n aXQgYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmggYi9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgN Cj4gPiBpbmRleCAwNzdkMTZmLi42OWU2NzkxIDEwMDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUvdWFw aS9saW51eC9rdm0uaA0KPiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9rdm0uaA0KPiA+IEBA IC05NjEsNiArOTYxLDcgQEAgc3RydWN0IGt2bV9wcGNfcmVzaXplX2hwdCB7DQo+ID4gICNkZWZp bmUgS1ZNX0NBUF9TMzkwX0JQQiAxNTINCj4gPiAgI2RlZmluZSBLVk1fQ0FQX0dFVF9NU1JfRkVB VFVSRVMgMTUzDQo+ID4gICNkZWZpbmUgS1ZNX0NBUF9IWVBFUlZfRVZFTlRGRCAxNTQNCj4gPiAr I2RlZmluZSBLVk1fQ0FQX1NUQVRFIDE1NQ0KPiA+ICANCj4gPiAgI2lmZGVmIEtWTV9DQVBfSVJR X1JPVVRJTkcNCj4gPiAgDQo+ID4gQEAgLTEzOTIsNiArMTM5MywxMCBAQCBzdHJ1Y3Qga3ZtX3Mz OTBfdWNhc19tYXBwaW5nIHsNCj4gPiAgLyogTWVtb3J5IEVuY3J5cHRpb24gQ29tbWFuZHMgKi8N Cj4gPiAgI2RlZmluZSBLVk1fTUVNT1JZX0VOQ1JZUFRfT1AgICAgICBfSU9XUihLVk1JTywgMHhi YSwgdW5zaWduZWQgbG9uZykNCj4gPiAgDQo+ID4gKy8qIEF2YWlsYWJsZSB3aXRoIEtWTV9DQVBf U1RBVEUgKi8NCj4gPiArI2RlZmluZSBLVk1fR0VUX1NUQVRFICAgICAgICAgX0lPV1IoS1ZNSU8s IDB4YmIsIHN0cnVjdCBrdm1fdm14X3N0YXRlKQ0KPiA+ICsjZGVmaW5lIEtWTV9TRVRfU1RBVEUg ICAgICAgICBfSU9XKEtWTUlPLCAgMHhiYywgc3RydWN0IGt2bV92bXhfc3RhdGUpDQo+ID4gKw0K PiA+ICBzdHJ1Y3Qga3ZtX2VuY19yZWdpb24gew0KPiA+ICAJX191NjQgYWRkcjsNCj4gPiAgCV9f dTY0IHNpemU7DQpBbWF6b24gRGV2ZWxvcG1lbnQgQ2VudGVyIEdlcm1hbnkgR21iSApCZXJsaW4g LSBEcmVzZGVuIC0gQWFjaGVuCm1haW4gb2ZmaWNlOiBLcmF1c2Vuc3RyLiAzOCwgMTAxMTcgQmVy bGluCkdlc2NoYWVmdHNmdWVocmVyOiBEci4gUmFsZiBIZXJicmljaCwgQ2hyaXN0aWFuIFNjaGxh ZWdlcgpVc3QtSUQ6IERFMjg5MjM3ODc5CkVpbmdldHJhZ2VuIGFtIEFtdHNnZXJpY2h0IENoYXJs b3R0ZW5idXJnIEhSQiAxNDkxNzMgQgo=