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=-1.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_PASS 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 6B2B9C10F03 for ; Tue, 23 Apr 2019 23:40:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 239BA217D9 for ; Tue, 23 Apr 2019 23:40:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728796AbfDWXkA (ORCPT ); Tue, 23 Apr 2019 19:40:00 -0400 Received: from mga17.intel.com ([192.55.52.151]:44429 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726342AbfDWXkA (ORCPT ); Tue, 23 Apr 2019 19:40:00 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 Apr 2019 16:39:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,387,1549958400"; d="scan'208";a="151806489" Received: from kmsmsx152.gar.corp.intel.com ([172.21.73.87]) by FMSMGA003.fm.intel.com with ESMTP; 23 Apr 2019 16:39:42 -0700 Received: from pgsmsx112.gar.corp.intel.com ([169.254.3.40]) by KMSMSX152.gar.corp.intel.com ([169.254.11.16]) with mapi id 14.03.0415.000; Wed, 24 Apr 2019 07:38:18 +0800 From: "Huang, Kai" To: "Christopherson, Sean J" CC: "kvm@vger.kernel.org" , "tglx@linutronix.de" , "guangrong.xiao@gmail.com" , "hpa@zytor.com" , "pbonzini@redhat.com" , "bp@alien8.de" , "thomas.lendacky@amd.com" , "rkrcmar@redhat.com" , "brijesh.singh@amd.com" , "junaids@google.com" Subject: Re: [PATCH] kvm: x86: Fix several SPTE mask calculation errors caused by MKTME Thread-Topic: [PATCH] kvm: x86: Fix several SPTE mask calculation errors caused by MKTME Thread-Index: AQHU9DW//hMP+P/kLkeZpj3T4GKBXaZH5WGAgACbvQCAAN0SAIAAjoAA Date: Tue, 23 Apr 2019 23:38:17 +0000 Message-ID: <1556062690.2776.95.camel@intel.com> References: <20190416091948.4420-1-kai.huang@linux.intel.com> <20190422163929.GB1236@linux.intel.com> <1555984614.2776.58.camel@intel.com> <20190423150808.GB10720@linux.intel.com> In-Reply-To: <20190423150808.GB10720@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.255.88.189] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org T24gVHVlLCAyMDE5LTA0LTIzIGF0IDA4OjA4IC0wNzAwLCBTZWFuIENocmlzdG9waGVyc29uIHdy b3RlOg0KPiBPbiBNb24sIEFwciAyMiwgMjAxOSBhdCAwNjo1NzowMVBNIC0wNzAwLCBIdWFuZywg S2FpIHdyb3RlOg0KPiA+IE9uIE1vbiwgMjAxOS0wNC0yMiBhdCAwOTozOSAtMDcwMCwgU2VhbiBD aHJpc3RvcGhlcnNvbiB3cm90ZToNCj4gPiA+IE9uIFR1ZSwgQXByIDE2LCAyMDE5IGF0IDA5OjE5 OjQ4UE0gKzEyMDAsIEthaSBIdWFuZyB3cm90ZToNCj4gPiA+ID4gV2l0aCBib3RoIEludGVsIE1L VE1FIGFuZCBBTUQgU01FL1NFViwgcGh5c2ljYWwgYWRkcmVzcyBiaXRzIGFyZSByZWR1Y2VkDQo+ ID4gPiA+IGR1ZSB0byBzZXZlcmFsIGhpZ2ggYml0cyBvZiBwaHlzaWNhbCBhZGRyZXNzIGFyZSBy ZXB1cnBvc2VkIGZvciBtZW1vcnkNCj4gPiA+ID4gZW5jcnlwdGlvbi4gVG8gaG9ub3Igc3VjaCBi ZWhhdmlvciB0aG9zZSByZXB1cnBvc2VkIGJpdHMgYXJlIHJlZHVjZWQgZnJvbQ0KPiA+ID4gPiBj cHVpbmZvX3g4Ni0+eDg2X3BoeXNfYml0cyBmb3IgYm90aCBJbnRlbCBNS1RNRSBhbmQgQU1EIFNN RS9TRVYsIHRodXMNCj4gPiA+ID4gYm9vdF9jcHVfZGF0YS54ODZfcGh5c19iaXRzIGRvZXNuJ3Qg aG9sZCBwaHlzaWNhbCBhZGRyZXNzIGJpdHMgcmVwb3J0ZWQNCj4gPiA+ID4gYnkgQ1BVSUQgYW55 bW9yZS4NCj4gPiA+IA0KPiA+ID4gVGhpcyBuZWdsZWN0cyB0byBtZW50aW9uIHRoZSBtb3N0IHJl bGV2YW50IHRpZGJpdCBvZiBpbmZvcm1hdGlvbiBpbiB0ZXJtcw0KPiA+ID4gb2YganVzdGlmaWNh dGlvbiBmb3IgdGhpcyBwYXRjaDogdGhlIG51bWJlciBvZiBiaXRzIHN0b2xlbiBmb3IgTUtUTUUg aXMNCj4gPiA+IHByb2dyYW1tZWQgYnkgQklPUywgaS5lLiBiaXRzIG1heSBiZSByZXB1cnBvc2Vk IGZvciBNS1RNRSByZWdhcmRsZXNzIG9mDQo+ID4gPiBrZXJuZWwgc3VwcG9ydC4NCj4gPiANCj4g PiBJIGNhbiBhZGQgQklPUyBwYXJ0LiBCdXQgdGhlIGtleSBpc3N1ZSBpcyBrZXJuZWwgYWRqdXN0 cw0KPiA+IGJvb3RfY3B1X2RhdGEueDg2X3BoeXNfYml0cywgaXNuJ3QgaXQ/DQo+ID4gDQo+ID4g SWYga2VybmVsIGRvZXNuJ3QgYWRqdXN0IGJvb3RfY3B1X2RhdGEueDg2X3BoeXNfYml0cyB0aGVu IHRoaXMgcGF0Y2gNCj4gPiB0aGVvcmV0aWNhbGx5IGlzIG5vdCBuZWVkZWQ/DQo+IA0KPiBUcnVl LCBidXQgdGhlIGNvbnRleHQgbWF0dGVycywgZS5nLiByZWFkZXJzIG1pZ2h0IHdvbmRlciB3aHkg dGhpcyBjb2RlDQo+IGRvZXNuJ3Qgc2ltcGx5IGNoZWNrIGEgZmVhdHVyZSBmbGFnIHRvIHNlZSBp ZiBNS1RNRSBpcyBlbmFibGVkLiAgS25vd2luZw0KPiB0aGF0IFBBIGJpdHMgY2FuIGJlIHJlcHVy cG9zZWQgcmVnYXJkbGVzcyBvZiAoZnVsbCkga2VybmVsIHN1cHBvcnQgaXMganVzdA0KPiBhcyBp bXBvcnRhbnQgYXMga25vd2luZyB0aGF0IHRoZSBrZXJuZWwgYWRqdXN0cyBib290X2NwdV9kYXRh Lng4Nl9waHlzX2JpdHMuDQoNCkZpbmUuDQoNClsuLi5dDQoNCj4gPiA+IA0KPiA+ID4gPiArDQo+ ID4gPiA+ICANCj4gPiA+ID4gIHN0YXRpYyB2b2lkIG1tdV9zcHRlX3NldCh1NjQgKnNwdGVwLCB1 NjQgc3B0ZSk7DQo+ID4gPiA+ICBzdGF0aWMgdW5pb24ga3ZtX21tdV9wYWdlX3JvbGUNCj4gPiA+ ID4gQEAgLTMwMyw2ICszMTksMzQgQEAgdm9pZCBrdm1fbW11X3NldF9tbWlvX3NwdGVfbWFzayh1 NjQgbW1pb19tYXNrLCB1NjQgbW1pb192YWx1ZSkNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIEVYUE9S VF9TWU1CT0xfR1BMKGt2bV9tbXVfc2V0X21taW9fc3B0ZV9tYXNrKTsNCj4gPiA+ID4gIA0KPiA+ ID4gPiArdm9pZCBrdm1fc2V0X21taW9fc3B0ZV9tYXNrKHZvaWQpDQo+ID4gPiANCj4gPiA+IE1v dmluZyB0aGlzIHRvIG1tdS5jIG1ha2VzIHNlbnNlLCBidXQgY2FsbGluZyBpdCBmcm9tIGt2bV9h cmNoX2luaXQoKSBpcw0KPiA+ID4gc2lsbHkuICBUaGUgY3VycmVudCBjYWxsIHNpdGUgaXMgaW1t ZWRpYXRlbHkgYWZ0ZXIga3ZtX21tdV9tb2R1bGVfaW5pdCgpLA0KPiA+ID4gSSBkb24ndCBzZWUg YW55IHJlYXNvbiBub3QgdG8ganVzdCBtb3ZlIHRoZSBjYWxsIHRoZXJlLg0KPiA+IA0KPiA+IEkg ZG9uJ3Qga25vdyB3aGV0aGVyIGNhbGxpbmcga3ZtX3NldF9tbWlvX3NwdGVfbWFzaygpIGZyb20g a3ZtX2FyY2hfaW5pdCgpIGlzDQo+ID4gc2lsbHkgYnV0IG1heWJlIHRoZXJlJ3MgaGlzdHJveSAt LSBLVk0gY2FsbHMga3ZtX21tdV9zZXRfbWFza19wdGVzKCkgZnJvbQ0KPiA+IGt2bV9hcmNoX2lu aXQoKSB0b28sIHdoaWNoIG1heSBhbHNvIGJlIHNpbGx5IGFjY29yZGluZyB0byB5b3VyIGp1ZGdl bWVudC4gSQ0KPiA+IGhhdmUgbm8gcHJvYmxlbSBjYWxsaW5nIGt2bV9zZXRfbW1pb19zcHRlX21h c2soKSBmcm9tIGt2bV9tbXVfbW9kdWxlX2luaXQoKSwNCj4gPiBidXQgSU1ITyB0aGlzIGxvZ2lj IGlzIGlycmVsZXZhbnQgdG8gdGhpcyBwYXRjaCwgYW5kIGl0J3MgYmV0dGVyIHRvIGhhdmUgYQ0K PiA+IHNlcGFyYXRlIHBhdGNoIGZvciB0aGlzIHB1cnBvc2UgaWYgbmVjZXNzYXJ5Pw0KPiANCj4g QSBzZXBhcmF0ZSBwYXRjaCB3b3VsZCBiZSBmaW5lLCBidXQgSSB3b3VsZCBkbyBpdCBhcyBhIHBy ZXJlcSwgaS5lLiBtb3ZlDQo+IHRoZSBmdW5jdGlvbiBmaXJzdCBhbmQgbW9kaWZ5IGl0IHNlY29u ZC4gIFRoYXQgd291bGQgaGVscCByZXZpZXcgdGhlDQo+IGZ1bmN0aW9uYWwgY2hhbmdlcy4NCg0K SSB0aGluayBJIGFtIHN0aWxsIGEgbGl0dGxlIGJpdCBjb25mdXNlZC4gQXNzdW1pbmcgeW91IHdh bnQgdG8gY2FsbCBrdm1fc2V0X21taW9fc3B0ZV9tYXNrKCkgZnJvbQ0Ka3ZtX21tdV9tb2R1bGVf aW5pdCgpLCByaWdodCBhZnRlciBrdm1fbW11X3Jlc2V0X2FsbF9wdGVfbWFza3MoKSBpcyBjYWxs ZWQsIGRvZXMgdGhpcyBjaGFuZ2UgZG8gYW55DQpyZWFsIGZpeCByZWxhdGVkIHRvIHRoaXMgaXNz dWU/IE9yIGV4YWN0bHkgd2hhdCBhcmUgeW91IHN1Z2dlc3RpbmcgaWYgSSBhbSBtaXN1bmRlcnN0 YW5kaW5nPw0KDQpCdHcgSSB0aGluayBjYWxsaW5nIGt2bV9zZXRfbW1pb19zcHRlX21hc2soKSBm cm9tIGt2bV9hcmNoX2luaXQoKSBoYXMgYmVuZWZpdHMsIHNpbmNlIHdlIGNhbiBjaGFuZ2UNCnRv IGNhbGwgaXQgYWZ0ZXIga3ZtX3g4Nl9vcHMgaGFzIGJlZW4gc2V0dXAsIGFuZCB0aGVuIHdlIGNh biBkbyBzb21lIGt2bV94ODZfb3BzLT54eHgoKSBpZiBuZWVkZWQNCmluc2lkZS4NCg0KQW5kIHdl IGFsc28gaGF2ZSBrdm1fbW11X3NldF9tYXNrX3B0ZXMoKSwgd2hpY2ggc2VlbXMgdG8gYmUgc2lt aWxhciB0aGluZyBhcw0Ka3ZtX3NldF9tbWlvX3NwdGVfbWFzaygpLiBJIGRvbid0IHNlZSB3aHkg d2Ugc2hvdWxkIGNhbGwga3ZtX3NldF9tbWlvX3NwdGVfbWFzaygpIGluDQprdm1fbW11X21vZHVs ZV9pbml0KCkgYnV0IGxlYXZlIGt2bV9tbXVfc2V0X21hc2tfcHRlcygpIG91dHNpZGUuIA0KDQoN ClsuLi5dDQoNCj4gPiA+IA0KPiA+IA0KPiA+ID4ge01LfVRNRSBwcm92aWRlcyBhIENQVUlEIGZl YXR1cmUgYml0IGFuZCBNU1JzIHRvIHF1ZXJ5IHN1cHBvcnQsIGFuZCB0aGlzDQo+ID4gPiBjb2Rl IG9ubHkgcnVucyBhdCBtb2R1bGUgaW5pdCBzbyB0aGUgb3ZlcmhlYWQgb2YgYSBSRE1TUiBpcyBu ZWdsaWdpYmxlLiANCj4gPiANCj4gPiBZZXMgY2FuIGNoZWNrIGFnYWluc3QgQ1BVSUQgZmVhdHVy ZSBiaXQgYnV0IG5vdCBzdXJlIHdoeSBpdCBpcyBiZXR0ZXIgdGhhbiBDUFUgdmVuZG9yLg0KPiAN Cj4gSXQgaGVscHMgcmVhZGVycyB1bmRlcnN0YW5kIHRoZSBjb2RlIGZsb3csIGkuZS4gaXQncyBh IG1lbnRhbCBjdWUgdGhhdCB0aGUNCj4gYml0IHN0ZWFsaW5nIG9ubHkgYXBwbGllcyB0byBNS1RN RS4gIENoZWNraW5nIGZvciAiSW50ZWwiIGNvdWxkIGVhc2lsaXkgYmUNCj4gbWlzaW50ZXJwcmV0 ZWQgYXMgIng4Nl9waHlzX2JpdHMgaXNuJ3QgYWNjdXJhdGUgZm9yIEludGVsIENQVXMuIg0KDQpP Sy4gRmluZSB0byBtZS4NCg0KPiANCj4gPiA+ID4gKwkJc2hhZG93X2ZpcnN0X3JzdmRfYml0ID0g Ym9vdF9jcHVfZGF0YS54ODZfcGh5c19iaXRzOw0KPiA+ID4gPiArCWVsc2UNCj4gPiA+ID4gKwkJ c2hhZG93X2ZpcnN0X3JzdmRfYml0ID0ga3ZtX2dldF9jcHVpZF9waHlzX2JpdHMoKTsNCj4gPiA+ IA0KPiA+ID4gSWYgeW91IHJlbmFtZSB0aGUgaGVscGVyIHRvIGJlIGxlc3Mgc3BlY2lmaWMgYW5k IGFjdHVhbGx5IGNoZWNrIGZvciBNS1RNRQ0KPiA+ID4gc3VwcG9ydCB0aGVuIHRoZSBNS1RNRSBj b21tZW50IGRvZXNuJ3QgbmVlZCB0byBiZSBhcyB2ZXJib3NlLCBlLmcuOiANCj4gPiA+IA0KPiA+ ID4gc3RhdGljIHU4IGt2bV9nZXRfc2hhZG93X3BoeXNfYml0cyh2b2lkKQ0KPiA+ID4gew0KPiA+ ID4gCWlmICghPGhhcyBNS1RNRT4gfHwNCj4gPiA+IAkgICAgV0FSTl9PTl9PTkNFKGJvb3RfY3B1 X2RhdGEuZXh0ZW5kZWRfY3B1aWRfbGV2ZWwgPCAweDgwMDAwMDA4KSkNCj4gPiA+IAkJcmV0dXJu IGJvb3RfY3B1X2RhdGEueDg2X3BoeXNfYml0czsNCj4gPiANCj4gPiBXaHkgZG8gd2UgbmVlZCBX QVJOX09OX09OQ0UgaGVyZT8NCj4gDQo+IEJlY2F1c2UgS1ZNIHdvdWxkIGVzc2VudGlhbGx5IGJl IGNvbnN1bWluZyBrbm93biBiYWQgZGF0YSBzaW5jZSB3ZSd2ZQ0KPiBhbHJlYWR5IGVzdGFibGlz aGVkIHRoYXQgJ3g4Nl9waHlzX2JpdHMnIGlzIHdyb25nIHdoZW4gTUtUTUUgaXMgZW5hYmxlZC4N Cj4gSS5lLiB3ZSBzaG91bGQgbmV2ZXIgZW5jb3VudGVyIGEgcGxhdGZvcm0gd2l0aCBNS1RNRSBi dXQgbm90IENQVUlEIGxlYWYNCj4gMHg4MDAwMDAwOC4NCg0KQ2FuIHlvdSBtYWtlIGFzc3VtcHRp b24gdGhhdCBjb21waWxlciB3b24ndCBkbyBXQVJOX09OX09OQ0UgcGFydCBiZWZvcmUgY2hlY2tp bmcgITxoYXNfbWt0bWU+Pw0KDQo+IA0KPiA+IEkgZG9uJ3QgaGF2ZSBwcm9ibGVtIHVzaW5nIGFz IHlvdSBzdWdnZXN0ZWQsIGJ1dCBJIGRvbid0IGdldCB3aHkgY2hlY2tpbmcNCj4gPiBhZ2FpbnN0 IENQVSB2ZW5kb3IgaXMgbGFzdCByZXNvcnQ/DQo+IA0KPiBBIGZldyByZWFzb25zIG9mIHRoZSB0 b3Agb2YgbXkgaGVhZDoNCj4gDQo+ICAgLSBDUFUgdmVuZG9yIGlzIGxlc3MgcHJlY2lzZSwgZS5n LiBieSBjaGVja2luZyBmb3IgTUtUTUUgc3VwcG9ydCBLVk0gY2FuDQo+ICAgICBXQVJOIGlmIGl0 J3MgY29uc3VtaW5nIGtub3duIGJhZCBkYXRhLiANCj4gDQo+ICAgLSBDaGVja2luZyBmb3IgZmVh dHVyZXMgbWFrZXMgdGhlIGNvZGUgc2VsZi1kb2N1bWVudGluZyB0byBzb21lIGV4dGVudC4NCj4g DQo+ICAgLSBNdWx0aXBsZSB2ZW5kb3JzIG1heSBzdXBwb3J0IGEgZmVhdHVyZSwgbm93IG9yIGlu IHRoZSBmdXR1cmUuICBFLmcuIHRoZQ0KPiAgICAgSHlnb24gY2FzZSBpcyBhIGdyZWF0IGV4YW1w bGUuDQoNCk9LLiANCg0KPiANCj4gPiA+IA0KPiA+ID4gCS8qDQo+ID4gPiAJICogTUtUTUUgc3Rl YWxzIHBoeXNpY2FsIGFkZHJlc3MgYml0cyBmb3Iga2V5IElEcywgYnV0IHRoZSBrZXkgSUQgYml0 cw0KPiA+ID4gCSAqIGFyZSBub3QgdHJlYXRlZCBhcyByZXNlcnZlZC4gIHg4Nl9waHlzX2JpdHMg aXMgYWRqdXN0ZWQgdG8gYWNjb3VudA0KPiA+ID4gCSAqIGZvciB0aGUgc3RvbGVuIGJpdHMsIHVz ZSBDUFVJRC5NQVhfUEFfV0lEVEggZGlyZWN0bHkgd2hpY2ggcmVwb3J0cw0KPiA+ID4gCSAqIHRo ZSBudW1iZXIgb2Ygc29mdHdhcmUtYXZhaWxhYmxlIGJpdHMgaXJyZXNwZWN0aXZlIG9mIE1LVE1F Lg0KPiA+ID4gCSAqLw0KPiA+ID4gCXJldHVybiBjcHVpZF9lYXgoMHg4MDAwMDAwOCkgJiAweGZm Ow0KPiA+ID4gfQ0KPiA+ID4gDQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkvKg0KPiA+ID4gPiArCSAq IE9ubHkgSW50ZWwgaXMgaW1wYWN0ZWQgYnkgTDFURiwgdGhlcmVmb3JlIGZvciBBTUQgYW5kIG90 aGVyIHg4Ng0KPiA+ID4gPiArCSAqIHZlbmRvcnMgTDFURiBtaXRpZ2F0aW9uIGlzIG5vdCBuZWVk ZWQuDQo+ID4gPiA+ICsJICoNCj4gPiA+ID4gKwkgKiBGb3IgSW50ZWwgQ1BVLCBpZiBpdCBoYXMg NDYgb3IgbGVzcyBwaHlzaWNhbCBhZGRyZXNzIGJpdHMsIHRoZW4gc2V0DQo+ID4gPiA+ICsJICog YW4gYXBwcm9wcmlhdGUgbWFzayB0byBndWFyZCBhZ2FpbnN0IEwxVEYgYXR0YWNrcy4gT3RoZXJ3 aXNlLCBpdCBpcw0KPiA+ID4gPiAgCSAqIGFzc3VtZWQgdGhhdCB0aGUgQ1BVIGlzIG5vdCB2dWxu ZXJhYmxlIHRvIEwxVEYuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+ICsJaWYgKChib290X2NwdV9k YXRhLng4Nl92ZW5kb3IgPT0gWDg2X1ZFTkRPUl9JTlRFTCkgJiYNCj4gPiA+IA0KPiA+ID4gQWdh aW4sIGNoZWNraW5nIHZlbmRvcnMgaXMgYmFkLiAgTm90IGVtcGxveWluZyBhIG1pdGlnYXRpb24g dGVjaG5pcXVlIGR1ZQ0KPiA+ID4gdG8gYW4gYXNzdW1wdGlvbiBhYm91dCB3aGF0IHByb2Nlc3Nv cnMgYXJlIGFmZmVjdGVkIGJ5IGEgdnVsbmVyYWJpbGl0eSBpcw0KPiA+ID4gZXZlbiB3b3JzZS4g IA0KPiA+IA0KPiA+IFdoeSwgaXNuJ3QgaXQgYSBmYWN0IHRoYXQgTDFURiBvbmx5IGltcGFjdHMg SW50ZWwgQ1BVcz8gV2hhdCdzIHRoZSBiZW5lZml0IG9mDQo+ID4gZW1wbG95aW5nIGEgbWl0aWdh dGlvbiB0byBDUFVzIHRoYXQgZG9uJ3QgaGF2ZSBMMVRGIGlzc3VlPyBTdWNoIG1pdGlnYXRpb24N Cj4gPiBvbmx5IG1ha2VzIHBlcmZvcm1hbmNlIHdvcnNlLCBldmVuIG5vdCBub3RpY2FibGUuIEZv ciBleGFtcGxlLCB3aHkgbm90DQo+ID4gZW1wbG95aW5nIHN1Y2ggbWl0aWdhdGlvbiByZWdhcmRs ZXNzIHRvIHBoeXNpY2FsIGFkZHJlc3MgYml0cyBhdCBhbGw/DQo+IA0KPiBUaGlzIHBhcnRpY3Vs YXIgbWl0aWdhdGlvbiBoYXMgbWluaW1hbCBlZmZlY3Qgb24gcGVyZm9ybWFuY2UsIGUuZy4gYWRk cw0KPiBhIGZldyBTSEwvU0hSL0FORC9PUiBvcGVyYXRpb25zLCBhbmQgdGhhdCBtaW5pbWFsIG92 ZXJoZWFkIGlzIGluY3VycmVkDQo+IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgcmVzZXJ2 ZWQgYml0cyBhcmUgc2V0LiAgSS5lLiBLVk0gaXMgcGF5aW5nDQo+IHRoZSBwZW5hbHR5IG5vIG1h dHRlciB3aGF0LCBzbyBiZWluZyBleHRyYSBwYXJhbm9pZCBpcyAiZnJlZSIuDQo+IA0KPiA+ID4g VGhlIGV4aXN0aW5nIGNvZGUgbWFrZXMgdGhlIGFzc3VtcHRpb24gcmVnYXJkaW5nIHByb2Nlc3Nv cnMNCj4gPiA+IHdpdGggPjQ2IGJpdHMgb2YgYWRkcmVzcyBzcGFjZSBiZWNhdXNlIGEpIG5vIHN1 Y2ggcHJvY2Vzc29yIGV4aXN0ZWQgYmVmb3JlDQo+ID4gPiB0aGUgZGlzY292ZXJ5IG9mIEwxVEYs IGFuZCBpdCdzIHJlYXNvbmFibGUgdG8gYXNzdW1lIGhhcmR3YXJlIHZlbmRvcnMNCj4gPiA+IHdv bid0IHNoaXAgZnV0dXJlIHByb2Nlc3NvcnMgd2l0aCBzdWNoIGFuIG9idmlvdXMgdnVsbmVyYWJp bGl0eSwgYW5kIGIpDQo+ID4gPiBoYXJkY29kaW5nIHRoZSBudW1iZXIgb2YgcmVzZXJ2ZWQgYml0 cyB0byBzZXQgc2ltcGxpZmllcyB0aGUgY29kZS4NCj4gPiANCj4gPiBZZXMsIGJ1dCB3ZSBjYW5u b3Qgc2ltcGx5IHVzZSAnc2hhZG93X3BoeXNfYml0cycgdG8gY2hlY2sgYWdhaW5zdCA0NiBhbnlt b3JlLA0KPiA+IHJpZ2h0Pw0KPiA+IA0KPiA+IEZvciBleGFtcGxlLCBpZiBBTUQgaGFzIDUyIHBo eXMgYml0cywgYnV0IGl0IHJlZHVjZXMgNSBvciBtb3JlIGJpdHMsIHRoZW4NCj4gPiBjdXJyZW50 IEtWTSBjb2RlIHdvdWxkIGVtcGxveSBsMXRmIG1pdGlnYXRpb24sIGJ1dCBhY3R1YWxseSBpdCBy ZWFsbHkNCj4gPiBzaG91bGRuJ3Q/DQo+IA0KPiBXaGF0IGRvIHlvdSBtZWFuIGJ5ICJzaG91bGRu J3QiPyAgU3VyZSwgaXQncyBub3QgYWJzb2x1dGVseSBuZWNlc3NhcnksIGJ1dA0KPiBhZ2FpbiBz ZXR0aW5nIHRoZSBiaXRzIGlzIGZyZWUgc2luY2UgYWRqdXN0aW5nIHRoZSBHUEEgaXMgaGFyZGNv ZGVkIGludG8NCj4gbWFya19tbWlvX3NwdGUoKSBhbmQgZ2V0X21taW9fc3B0ZV9nZm4oKS4NCg0K T0suIEkgYW0gbm90IHN1cmUgd2hldGhlciBDUFUgaGFzIGFueSBkaWZmZXJlbmNlIHdoZW4gZG9p bmcgeCA8PCA1IGFuZCB4IDw8IDAgYnV0IHRoaXMgaXMgcmVhbGx5DQp0cml2YWwgc28gd2lsbCBk byB3aGF0IHlvdSBzdWdnZXN0ZWQuDQoNCk9yIEkgZm91bmQgdGhlcmUncyBvbmUgQ1BVIGJ1ZyBm bGFnIChzb2Z0d2FyZSkgWDg2X0JVR19MMVRGLCBkbyB5b3UgdGhpbmsgd2Ugc2hvdWxkIGNoZWNr IHdoZXRoZXINCmJvb3RfY3B1X2hhcyhYODZfQlVHX0wxVEYpLCBhbmQgZG9uJ3Qgc2V0dXAgc2hh ZG93X25vbnByZXNlbnRfb3JfcnN2ZF9tYXNrIGlmIGl0IGRvZXNuJ3Q/DQoNCj4gDQo+ID4gPiA+ ICsJCQkoc2hhZG93X2ZpcnN0X3JzdmRfYml0IDwNCj4gPiA+ID4gKwkJCQk1MiAtIHNoYWRvd19u b25wcmVzZW50X29yX3JzdmRfbWFza19sZW4pKQ0KPiA+ID4gPiArCQluZWVkX2wxdGYgPSB0cnVl Ow0KPiA+ID4gPiArCWVsc2UNCj4gPiA+ID4gKwkJbmVlZF9sMXRmID0gZmFsc2U7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gIAlsb3dfcGh5c19iaXRzID0gYm9vdF9jcHVfZGF0YS54ODZfcGh5c19iaXRz Ow0KPiA+ID4gPiAtCWlmIChib290X2NwdV9kYXRhLng4Nl9waHlzX2JpdHMgPA0KPiA+ID4gPiAt CSAgICA1MiAtIHNoYWRvd19ub25wcmVzZW50X29yX3JzdmRfbWFza19sZW4pIHsNCj4gPiA+ID4g KwlzaGFkb3dfbm9ucHJlc2VudF9vcl9yc3ZkX21hc2sgPSAwOw0KPiA+ID4gPiArCWlmIChuZWVk X2wxdGYpIHsNCj4gPiA+ID4gIAkJc2hhZG93X25vbnByZXNlbnRfb3JfcnN2ZF9tYXNrID0NCj4g PiA+ID4gIAkJCXJzdmRfYml0cyhib290X2NwdV9kYXRhLng4Nl9waHlzX2JpdHMgLQ0KPiA+ID4g PiAgCQkJCSAgc2hhZG93X25vbnByZXNlbnRfb3JfcnN2ZF9tYXNrX2xlbiwNCj4gPiA+IA0KPiA+ ID4gVGhpcyBpcyBicm9rZW4sIHRoZSByZXNlcnZlZCBiaXRzIG1hc2sgaXMgYmVpbmcgY2FsY3Vs YXRlZCB3aXRoIHRoZSB3cm9uZw0KPiA+ID4gbnVtYmVyIG9mIHBoeXNpY2FsIGJpdHMuICBJIHRo aW5rIGZpeGluZyB0aGlzIHdvdWxkIGVsaW1pbmF0ZSB0aGUgbmVlZCBmb3INCj4gPiA+IHRoZSBo aWdoX2dwYV9vZmZzZXQgc2hlbmFuaWdhbnMuDQo+ID4gDQo+ID4gWW91IGFyZSByaWdodC4gc2hv dWxkIHVzZSAnc2hhZG93X3BoeXNfYml0cycgaW5zdGVhZC4gVGhhbmtzLiBMZXQgbWUgdGhpbmsg d2hldGhlcg0KPiA+IGhpZ2hfZ3BhX29mZnNldA0KPiA+IGNhbiBiZSBhdm9pZGVkLg0KPiA+IA0K PiA+ID4gDQo+ID4gPiA+IEBAIC00MzI2LDcgKzQ0MjIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg aXNfbGFzdF9ncHRlKHN0cnVjdCBrdm1fbW11ICptbXUsDQo+ID4gPiA+ICBzdGF0aWMgdm9pZA0K PiA+ID4gPiAgX19yZXNldF9yc3Zkc19iaXRzX21hc2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LA0K PiA+ID4gPiAgCQkJc3RydWN0IHJzdmRfYml0c192YWxpZGF0ZSAqcnN2ZF9jaGVjaywNCj4gPiA+ ID4gLQkJCWludCBtYXhwaHlhZGRyLCBpbnQgbGV2ZWwsIGJvb2wgbngsIGJvb2wgZ2JwYWdlcywN Cj4gPiA+ID4gKwkJCWludCBmaXJzdF9yc3ZkX2JpdCwgaW50IGxldmVsLCBib29sIG54LCBib29s IGdicGFnZXMsDQo+ID4gPiA+ICAJCQlib29sIHBzZSwgYm9vbCBhbWQpDQo+ID4gPiANCj4gPiA+ IFNpbWlsYXIgdG8gdGhlIGVhcmxpZXIgY29tbWVudCByZWdhcmRpbmcgJ2ZpcnN0JywgaXQncyBw cm9iYWJseSBsZXNzDQo+ID4gPiBjb25mdXNpbmcgb3ZlcmFsbCB0byBqdXN0IGxlYXZlIHRoaXMg YXMgJ21heHBoeWFkZHInLg0KPiA+IA0KPiA+IEJvdGggd29yayBmb3IgbWUuIEJ1dCBtYXliZSAn bm9uX3JzdmRfbWF4cGh5YWRkcicgaXMgYmV0dGVyPyANCj4gDQo+IE1heWJlPyAgTXkgcGVyc29u YWwgcHJlZmVyZW5jZSB3b3VsZCBiZSB0byBzdGF5IHdpdGggbWF4cGh5YWRkci4NCg0KRmluZSB0 byBtYXhwaHlhZGRyLiBCdHcsIHdoaWNoIG9uZSBkbyB5b3UgdGhpbmsgaXMgYmV0dGVyLCBzaGFk b3dfcGh5c19iaXRzLCBvciBtb3JlIGV4cGxpY2l0bHksDQpzaGFkb3dfbm9uX3JzdmRfcGh5c19i aXRzPw0KDQpUaGFua3MsDQotS2Fp