Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1267107ybl; Mon, 2 Dec 2019 00:25:27 -0800 (PST) X-Google-Smtp-Source: APXvYqw2eWTPQFDlWzoWDzTSp64g+gdROD6O58OcK5L8cscgX8yVxJAhe1oVkXafeFv2F+1cjJlS X-Received: by 2002:a17:906:9603:: with SMTP id s3mr35244967ejx.116.1575275127626; Mon, 02 Dec 2019 00:25:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575275127; cv=none; d=google.com; s=arc-20160816; b=GJN0YzRM2BFjKAZEz+1OQuqd0nJQFko6U8a8m0sfF4RY/ks23XjzzPdjWrGxpHPO/U B6WTEs4gE8IVNvNh/O9rrUiLbTLbmL1+RuIJAxMR9zww+sOjHLljvRU/qAnJsCa90E03 LQtKLrO0X3AM6IBOGMIGS+ZPGYfxleZbsgY6AgRuwu3/fYeeleE3g9/Q8E7bRlVJjsjy xakJhm1ciKvQr8zdiMmwjitiW+FHRyAosIMpG8rMc69ORdRBFMV1ysumpAhzyWmLNzK/ M5rlCvH3ah1AC2rT3PlpXHxtsr8fCOCHsBoVPg00GgTx+HATvFG95eDLrULb8rdkzuZC OrZw== 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 :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from; bh=4NHNfCfCcH1VHzE+yfDZ3HUm7crmrA0qkbwFjjuyj0I=; b=a3bqvPYaRftsuonRuSe597Vyz1RN5bZFvEzUhu/DCtkEKPZa1MoN5pf3BArzxs824H kHjl265B1KfXJKjd8NUcfkH1KaiDKW2OYApQjuo5fK7QOs6LaaoNTi5edDpf93xArsUV dOV4kGuTUeedWjiT9sFsmDY3UZIw5ODZ5JmZTRr8Vx5GWOYUG/015+oWfKICJ1mAWx/k TK527A57DSWlbPwYSnhDzX1zCNm9YtDx+X1kqiRpihmzyh6z+bp73uvyRaS+GWhqHuMy XvygxrexmHGXcvxTFYHuxyuCkHTcFQ8p+1Lf6tqH8Edjbh150IpsPGZF+JPTipsiIFHR 0pUg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ns21si20919323ejb.272.2019.12.02.00.25.03; Mon, 02 Dec 2019 00:25:27 -0800 (PST) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726251AbfLBIX4 (ORCPT + 99 others); Mon, 2 Dec 2019 03:23:56 -0500 Received: from mga12.intel.com ([192.55.52.136]:2856 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726079AbfLBIXz (ORCPT ); Mon, 2 Dec 2019 03:23:55 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Dec 2019 00:23:54 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,268,1571727600"; d="scan'208";a="235391355" Received: from irsmsx108.ger.corp.intel.com ([163.33.3.3]) by fmsmga004.fm.intel.com with ESMTP; 02 Dec 2019 00:23:52 -0800 Received: from irsmsx104.ger.corp.intel.com ([169.254.5.252]) by IRSMSX108.ger.corp.intel.com ([169.254.11.131]) with mapi id 14.03.0439.000; Mon, 2 Dec 2019 08:23:51 +0000 From: "Metzger, Markus T" To: Andy Lutomirski CC: Thomas Gleixner , "Bae, Chang Seok" , "linux-kernel@vger.kernel.org" , "bp@alien8.de" , "hpa@zytor.com" , "Hansen, Dave" , "Luck, Tony" , "Shankar, Ravi V" , Pedro Alves , Simon Marchi , Andi Kleen Subject: RE: [PATCH v9 00/17] Enable FSGSBASE instructions Thread-Topic: [PATCH v9 00/17] Enable FSGSBASE instructions Thread-Index: AQHVm+iTbaIQs/3oqE+UcwYHBKDTgKeiRc1QgAAs94CAAQmLwA== Date: Mon, 2 Dec 2019 08:23:50 +0000 Message-ID: References: <1570212969-21888-1-git-send-email-chang.seok.bae@intel.com> <20191115191200.GD22747@tassilo.jf.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [163.33.239.180] Content-Type: text/plain; charset="utf-8" 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 PiBPbiBGcmksIE5vdiAyOSwgMjAxOSBhdCA2OjU2IEFNIE1ldHpnZXIsIE1hcmt1cyBUDQo+IDxt YXJrdXMudC5tZXR6Z2VyQGludGVsLmNvbT4gd3JvdGU6DQo+ID4NCj4gPiA+IE9uIEZyaSwgTm92 IDE1LCAyMDE5IGF0IDA3OjI5OjE3UE0gKzAxMDAsIFRob21hcyBHbGVpeG5lciB3cm90ZToNCj4g PiA+ID4gT24gRnJpLCA0IE9jdCAyMDE5LCBDaGFuZyBTLiBCYWUgd3JvdGU6DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBVcGRhdGVzIGZyb20gdjggWzEwXToNCj4gPiA+ID4gPiAqIEludGVybmFsaXpl ZCB0aGUgaW50ZXJydXB0IGNoZWNrIGluIHRoZSBoZWxwZXIgZnVuY3Rpb25zIChBbmR5IEwuKQ0K PiA+ID4gPiA+ICogU2ltcGxpZmllZCBHUyBiYXNlIGhlbHBlciBmdW5jdGlvbnMgKFRvbnkgTC4p DQo+ID4gPiA+ID4gKiBDaGFuZ2VkIHRoZSBwYXRjaCBvcmRlciB0byBwdXQgdGhlIHBhcmFub2lk IHBhdGggY2hhbmdlcyBiZWZvcmUgdGhlDQo+ID4gPiA+ID4gICBjb250ZXh0IHN3aXRjaCBjaGFu Z2VzIChUb255IEwuKQ0KPiA+ID4gPiA+ICogRml4ZWQgdHlwb3MgKFJhbmR5IEQuKSBhbmQgbWFz c2FnZWQgYSBmZXcgc2VudGVuY2VzIGluIHRoZQ0KPiBkb2N1bWVudGF0aW9uDQo+ID4gPiA+ID4g KiBNYXNzYWdlZCB0aGUgRlNHU0JBU0UgZW5hYmxlbWVudCBtZXNzYWdlDQo+ID4gPiA+DQo+ID4g PiA+IFRoYXQgc3RpbGwgbGFja3Mgd2hhdCBBbmR5IHJlcXVlc3RlZCBxdWl0ZSBzb21lIHRpbWUg YWdvIGluIHRoZSBWOCB0aHJlYWQ6DQo+ID4gPiA+DQo+ID4gPiA+ICAgICAgaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvbGttbC8wMzRhYWYzYS1hOTNkLWVjMDMtMGJiZC0NCj4gPiA+IDA2OGUxOTA1 Yjc3NEBrZXJuZWwub3JnLw0KPiA+ID4gPg0KPiA+ID4gPiAgICJJIGFsc28gdGhpbmsgdGhhdCwg YmVmb3JlIHRoaXMgc2VyaWVzIGNhbiBoYXZlIG15IGFjaywgaXQgbmVlZHMgYW4NCj4gPiA+ID4g ICAgYWN0dWFsIGdkYiBtYWludGFpbmVyIHRvIGNoaW1lIGluLCBwdWJsaWNseSwgYW5kIHN0YXRl IHRoYXQgdGhleSBoYXZlDQo+ID4gPiA+ICAgIHRob3VnaHQgYWJvdXQgYW5kIHRlc3RlZCB0aGUg QUJJIGNoYW5nZXMgYW5kIHRoYXQgZ2RiIHN0aWxsIHdvcmtzIG9uDQo+ID4gPiA+ICAgIHBhdGNo ZWQga2VybmVscyB3aXRoIGFuZCB3aXRob3V0IEZTR1NCQVNFIGVuYWJsZWQuICBJIHJlYWxpemUg dGhhdCB0aGVyZQ0KPiA+ID4gPiAgICB3ZXJlIGFsbCBraW5kcyBvZiBkaXNjdXNzaW9ucywgYnV0 IHRoZXkgd2VyZSBhbGwgcXVpdGUgdGhlb3JldGljYWwsIGFuZA0KPiA+ID4gPiAgICBJIHRoaW5r IHRoYXQgdGhlIGFjdHVhbCBwYXRjaGVzIG5lZWQgdG8gYmUgY29uc2lkZXJlZCBieSBwZW9wbGUg d2hvDQo+ID4gPiA+ICAgIHVuZGVyc3RhbmQgdGhlIGNvbmNlcm5zLiAgU3BlY2lmaWMgdGVzdCBj YXNlcyB3b3VsZCBiZSBuaWNlLCB0b28uIg0KPiA+ID4gPg0KPiA+ID4gPiBXaGF0J3MgdGhlIHN0 YXRlIG9mIHRoaXM/DQo+ID4NCj4gPiBPbiBicmFuY2ggdXNlcnMvbW1ldHpnZXIvZnNncyBpbiBz b3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdCwNCj4gPiB0aGVyZSdzIGEgR0RCIHRl c3QgY292ZXJpbmcgdGhlIGJlaGF2aW9yIGRpc2N1c3NlZCB0aGVvcmV0aWNhbGx5IGJhY2sgdGhl bi4NCj4gPg0KPiA+IEl0IGNvdmVycyBtb2RpZnlpbmcgdGhlIHNlbGVjdG9yIGFzIHdlbGwgYXMg dGhlIGJhc2UgZnJvbSBHREIgYW5kIHVzaW5nDQo+ID4gdGhlIG1vZGlmaWVkIHZhbHVlcyBmb3Ig aW5mZXJpb3IgY2FsbHMgYXMgd2VsbCBhcyBmb3IgcmVzdW1pbmcgdGhlIGluZmVyaW9yLg0KPiA+ DQo+ID4gQ3VycmVudCBrZXJuZWxzIGFsbG93IGNoYW5naW5nIHRoZSBzZWxlY3RvciBhbmQgcHJv dmlkZSB0aGUgcmVzdWx0aW5nDQo+ID4gYmFzZSBiYWNrIHRvIHRoZSBwdHJhY2VyLiAgVGhleSBh bHNvIGFsbG93IGNoYW5naW5nIHRoZSBiYXNlIGFzIGxvbmcgYXMNCj4gPiB0aGUgc2VsZWN0b3Ig aXMgemVyby4gIFRoYXQncyB0aGUgYmVoYXZpb3Igd2Ugd2FudGVkIHRvIHByZXNlcnZlIElJUkMu DQo+IA0KPiBUaGUgZ2VuZXJhbCBrZXJuZWwgcnVsZSBpcyB0aGF0IHdlIGRvbid0IGJyZWFrIHdv cmtpbmcgYXBwbGljYXRpb25zLg0KPiBPdGhlciB0aGFuIHRoYXQsIHdlJ3JlIGFsbG93ZWQgdG8g Y2hhbmdlIHRoZSBBQkkgaWYgZXhpc3Rpbmcgd29ya2luZw0KPiBhcHBsaWNhdGlvbnMgZG9uJ3Qg YnJlYWsuICBJIGNhbid0IHRlbGwgd2hldGhlciB5b3Ugd3JvdGUgYSB0ZXN0IHRoYXQNCj4gZGV0 ZWN0cyBhIGJlaGF2aW9yIGNoYW5nZSBvciB3aGV0aGVyIHlvdSB3cm90ZSBhIHRlc3QgdGhhdCB0 ZXN0cw0KPiBiZWhhdmlvciB0aGF0IGdkYiBvciBvdGhlciBwcm9ncmFtcyBhY3R1YWxseSByZWx5 IG9uLg0KDQpXZWxsLCB0aGF0J3MgYSB0b3VnaCBxdWVzdGlvbi4gIFRoZSB0ZXN0IGNvdmVycyBH REIncyBiZWhhdmlvciBvbiB0b2RheSdzDQpzeXN0ZW1zLiAgR0RCIGl0c2VsZiBkb2VzIG5vdCBh Y3R1YWxseSByZWx5IG9uIHRoYXQgYmVoYXZpb3IuICBUaGF0IGlzLCBHREINCml0c2VsZiB3b3Vs ZG4ndCBicmVhay4gIFlvdSBjb3VsZG4ndCBkbyBhbGwgdGhhdCB5b3UgY291bGQgZG8gd2l0aCBp dCBiZWZvcmUsDQp0aG91Z2guDQoNCkl0IHdvdWxkIGJlIEdEQidzIHVzZXJzIHRoYXQgYXJlIGFm ZmVjdGVkLiAgSG93IGRvIHlvdSB0ZWxsIGlmIGFueW9uZSBpcw0KYWN0dWFsbHkgcmVseWluZyBv biBpdD8NCg0KDQo+IENlcnRhaW5seSwgd2l0aCBhIDMyLWJpdCAqZ2RiKiwgd3JpdGluZyBhIG5v bnplcm8gdmFsdWUgdG8gRlMgb3IgR1MNCj4gdXNpbmcgcHRyYWNlIHNob3VsZCBjaGFuZ2UgdGhl IGJhc2UgYWNjb3JkaW5nbHkuICBJIHRoaW5rIHRoZSBjdXJyZW50DQo+IHBhdGNoZXMgZ2V0IHRo aXMgd3JvbmcuDQo+IA0KPiBXaXRoIGEgNjQtYml0IGdkYiBhbmQgYSAzMi1iaXQgaW5mZXJpb3Is IGluIGFuIGlkZWFsIHdvcmxkLCBldmVyeXRoaW5nDQo+IHdvdWxkIHdvcmsganVzdCBsaWtlIGZ1 bGwgNjQtYml0LCBzaW5jZSB0aGF0J3MgaG93IHRoZSBoYXJkd2FyZSB3b3Jrcy4NCg0KTm90IHN1 cmUgd2hhdCB5b3UgbWVhbi4gIFRoZSBoL3cgcnVucyBpbiBjb21wYXRpYmlsaXR5IG1vZGUgYW5k IHRoZQ0KaW5mZXJpb3IgY2Fubm90IHNldCB0aGUgYmFzZSBkaXJlY3RseSwgY2FuIGl0Pw0KDQoN Cj4gQnV0IHdlIGRvbid0IG5lY2Vzc2FyeSBsaXZlIGluIGFuIGlkZWFsIHdvcmxkLg0KPiANCj4g V2l0aCBhIDY0LWJpdCBnZGIgYW5kIGEgNjQtYml0IGluZmVyaW9yLCB0aGUgaW5mZXJpb3IgY2Fu IHNldCBGUyB0bw0KPiBzb21lIG5vbnplcm8gdmFsdWUgYW5kIHRoZW4gc2V0IEZTQkFTRSB0byBh biBhcmJpdHJhcnkgNjQtYml0IG51bWJlciwNCj4gYW5kIEZTIHdpbGwgcmV0YWluIGl0cyB2YWx1 ZS4gIHB0cmFjZSBuZWVkcyB0byBnaXZlIGdkYiBzb21lIHdheSB0bw0KPiByZWFkLCBzYXZlLCBh bmQgcmVzdG9yZSB0aGlzIHN0YXRlLg0KDQpXaXRoIENoYW5nJ3MgcGF0Y2ggc2VyaWVzLCB0aGF0 IGFjdHVhbGx5IHdvcmtzLiAgWW91IGNhbiBzZXQgRlMgYW5kIHRoZW4NCnNldCBGU0JBU0Ugd2l0 aG91dCBzZXR0aW5nIEZTIHRvIHplcm8gcHJldmlvdXNseS4gIFRoZSB0ZXN0cyBkbyBub3QgY292 ZXINCnRoYXQgc2luY2Ugb24gY3VycmVudCBzeXN0ZW0gdGhhdCBsZWFkcyB0byB0aGUgaW5mZXJp b3IgY3Jhc2hpbmcgaW4gcmVhZF9mcygpLg0KDQoNCj4gSSB0aGluayB0aGUgaWRlYWwgYmVoYXZp b3IgaXMgdGhhdCA2NC1iaXQgcHRyYWNlIGNhbGxlcnMgc2hvdWxkDQo+IGNvbnRyb2wgRlMgYW5k IEZTQkFTRSBpbmRlcGVuZGVudGx5LiAgVGhlIHF1ZXN0aW9uIGlzOiB3aWxsIHRoYXQgYnJlYWsN Cj4gdGhpbmdzPyAgSWYgaXQgd2lsbCwgdGhlbiB3ZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0 IHRoZXJlIGlzIGFuIEFQSQ0KPiBieSB3aGljaCBhIGRlYnVnZ2VyIGNhbiBpbmRlcGVuZGVudGx5 IGNvbnRyb2wgRlMgYW5kIEZTQkFTRSwgYW5kIHdlJ2xsDQo+IGFsc28gbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCB3aGF0ZXZlciBleGlzdGluZyBBUEkgZGVidWdnZXJzIHVzZSB0bw0KPiBjaGFuZ2Ug RlMgYW5kIGV4cGVjdCBGU0JBU0UgdG8gbWFnaWNhbGx5IGNoYW5nZSBhcyB3ZWxsIGNvbnRpbnVl IHRvDQo+IGhhdmUgdGhhdCBlZmZlY3QuDQoNCldlIGhhZCBkaXNjdXNzZWQgdGhpcyBzb21lIHRp bWUgYWdvIGFuZCBwcm9wb3NlZCB0aGUgZm9sbG93aW5nIGJlaGF2aW9yOiAiDQpodHRwczovL2xv cmUua2VybmVsLm9yZy9sa21sLzE1MjE0ODE3NjctMjIxMTMtMTUtZ2l0LXNlbmQtZW1haWwtY2hh bmcuc2Vvay5iYWVAaW50ZWwuY29tLw0KDQoJSW4gYSBzdW1tYXJ5LCBwdHJhY2VyJ3MgdXBkYXRl IG9uIEZTL0dTIHNlbGVjdG9yIGFuZCBiYXNlDQoJeWllbGRzIHN1Y2ggcmVzdWx0cyBvbiB0cmFj ZWUncyBiYXNlOg0KCS0gV2hlbiBGUy9HUyBzZWxlY3RvciBvbmx5IGNoYW5nZWQgKHRvIG5vbnpl cm8pLCBmZXRjaCBiYXNlDQoJZnJvbSBHRFQvTERUIChsZWdhY3kgYmVoYXZpb3IpDQoJLSBXaGVu IEZTL0dTIGJhc2UgKHJlZ2FyZGxlc3Mgb2Ygc2VsZWN0b3IpIGNoYW5nZWQsIHRyYWNlZQ0KCXdp bGwgaGF2ZSB0aGUgYmFzZQ0KIg0KDQpUaGUgcHRyYWNlciB3b3VsZCBuZWVkIHRvIHJlYWQgcmVn aXN0ZXJzIGJhY2sgYWZ0ZXIgY2hhbmdpbmcgdGhlIHNlbGVjdG9yDQp0byBnZXQgdGhlIHVwZGF0 ZWQgYmFzZS4NCg0KVGhlIG9ubHkgdGltZSB3aGVuIGJvdGggY2hhbmdlIGF0IHRoZSBzYW1lIHRp bWUsIHRoZW4sIGlzIHdoZW4gcmVnaXN0ZXJzDQphcmUgcmVzdG9yZWQgYWZ0ZXIgcmV0dXJuaW5n IGZyb20gYW4gaW5mZXJpb3IgY2FsbC4gIEFuZCB0aGVuLCBpdCdzIHRoZSBiYXNlDQp3ZSB3YW50 IHRvIHRha2UgcHJpb3JpdHkgc2luY2Ugd2UgcHJldmlvdXNseSBlbnN1cmVkIHRoYXQgdGhlIGJh c2UgaXMgYWx3YXlzDQp1cC10by1kYXRlLg0KDQoNCj4gPiBUaGUgcGF0Y2ggc2VyaWVzIG9uIGJy YW5jaCBmc2dzX3RpcF81LjQtcmMxXzEwMDMxOSBhdA0KPiA+IGdpdGh1Yi5jb20vY2hhbmdiYWUv TGludXgta2VybmVsLmdpdCBicmVha3MgdGVzdHMgdGhhdCBtb2RpZnkgdGhlDQo+ID4gc2VsZWN0 b3IgYW5kIGV4cGVjdCB0aGF0IHRvIGNoYW5nZSB0aGUgYmFzZS4NCj4gPg0KPiA+IFRoYXQga2Vy bmVsIGFsbG93cyBjaGFuZ2luZyB0aGUgYmFzZSB2aWEgcHRyYWNlIGJ1dCBpZ25vcmVzIGNoYW5n ZXMNCj4gPiB0byB0aGUgc2VsZWN0b3IuDQo+ID4NCj4gDQo+IEkgZG9uJ3QgcmVhbGx5IHVuZGVy c3RhbmQgeW91ciB0ZXN0LCBidXQgSSdtIHByZXR0eSBzdXJlIEkgZm91bmQgYQ0KPiBjb3VwbGUg YnVncyBpbiB0aGUgdGVzdDoNCg0KVGhhbmtzIGZvciB5b3VyIHJldmlldy4NCg0KDQo+ICAgODgg aW50DQo+ICAgODkgc3dpdGNoX2ZzX3JlYWQgKHVuc2lnbmVkIGludCBmcykNCj4gICA5MCB7DQo+ ICAgOTEgICBfX2FzbV9fIHZvbGF0aWxlICgibW92ICUwLCAlJWZzIiA6OiAicm0iKGZzKSA6ICJt ZW1vcnkiKTsNCj4gICA5Mg0KPiAgIDkzICAgcmV0dXJuIHJlYWRfZnMgKCk7DQo+ICAgOTQgfQ0K PiANCj4gVGhpcyBoYXMgZnVuZGFtZW50YWxseSBpbmNvbnNpc3RlbnQgYmVoYXZpb3Igb24gSW50 ZWwgdnMgQU1EIENQVXMuDQo+IEludGVsIENQVXMgd2lsbCBjbGVhciBGU0JBU0Ugd2hlbiB5b3Ug d3JpdGUgMCB0byBGUy4gIE9sZGVyIEFNRCBDUFVzDQo+IGRvICpub3QqIGNsZWFyIEZTQkFTRSB3 aGVuIHlvdSB3cml0ZSAwIHRvIEZTLiAgVmVyeSB2ZXJ5IG5ldyBBTUQgQ1BVcw0KPiBiZWhhdmUg bW9yZSBsaWtlIEludGVsIENQVXMsIEkgYmVsaWV2ZS4NCg0KVGhhbmtzIGZvciBwb2ludGluZyB0 aGlzIG91dCBidXQgSSBkb24ndCB0aGluayB0aGF0IHRoaXMgaXMgYWN0dWFsbHkgYW4gaXNzdWUg Zm9yDQp0aGlzIHRlc3QuICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXZlciB1c2VkIHdpdGggZnM9 PTB4YTcgdG8gc3dpdGNoIHRvIHRoZSBMRFQNCmVudHJ5IHRoYXQgdGhlIHRlc3QgcHJvZ3JhbSBo YXMgc2V0dXAgYmVmb3JlLg0KDQpUaGUgdGVzdCBzZXRzIEZTL0dTIHRvIHplcm8gdmlhIHB0cmFj ZSBmcm9tIEdEQi4NCg0KDQo+ICAgNDAgICAgIHN0cnVjdCB1c2VyX2Rlc2MgdWQ7DQo+ICAgNDEg ICAgIGludCBlcnJjb2RlOw0KPiAgIDQyDQo+ICAgNDMgICAgIG1lbXNldCAoJnVkLCAwLCBzaXpl b2YgKHVkKSk7DQo+ICAgNDQgICAgIHVkLmVudHJ5X251bWJlciA9IGVudHJ5Ow0KPiAgIDQ1ICAg ICB1ZC5iYXNlX2FkZHIgPSAodW5zaWduZWQgbG9uZykgYmFzZTsNCj4gICA0NiAgICAgdWQubGlt aXQgPSAodW5zaWduZWQgaW50KSBzaXplOw0KPiAgIDQ3DQo+ICAgNDggICAgIC8qIFNvbWUgNjQt Yml0IHN5c3RlbXMgZGVjbGFyZSB1ZC5iYXNlX2FkZHIgJ3Vuc2lnbmVkIGludCcgaW5zdGVhZCBv Zg0KPiAgIDQ5ICAgICAgICAndW5zaWduZWQgbG9uZycuDQo+ICAgNTANCj4gICA1MSAgICAgICAg Q29tYmluZWQgd2l0aCBhZGRyZXNzIHNwYWNlIGxheW91dCByYW5kb21pemF0aW9uLCB0aGlzIG1p Z2h0DQo+ICAgNTIgICAgICAgIHRydW5jYXRlIG91ciBiYXNlIGFkZHJlc3MgYW5kIHJlc3VsdCBp biBhIGNyYXNoIHdoZW4gd2UgdHJ5IHRvIHJlYWQNCj4gICA1MyAgICAgICAgc2VnbWVudC1yZWxh dGl2ZS4NCj4gICA1NA0KPiAgIDU1ICAgICAgICBDaGVja2luZyB0aGUgZmllbGQgc2l6ZSB3b3Vs ZCBleGNsdWRlIHRvbyBtYW55IHN5c3RlbXMgc28gd2Ugc2V0dGxlDQo+ICAgNTYgICAgICAgIGZv ciBjaGVja2luZyB3aGV0aGVyIHdlIGFjdHVhbGx5IHRydW5jYXRlZCB0aGUgYWRkcmVzcy4gICov DQo+ICAgNTcNCj4gICA1OCAgICAgaWYgKHVkLmJhc2VfYWRkciAhPSAodW5zaWduZWQgbG9uZykg YmFzZSkNCj4gICA1OSAgICAgICByZXR1cm4gMHU7DQo+IA0KPiBUaGUgYmFzZSBvZiBhIHNlZ21l bnQgaW4gYSBkZXNjcmlwdG9yIHRhYmxlIGlzIDMyIGJpdHMsIGZ1bGwgc3RvcC4NCj4gVGhpcyBp cyBhIGhhcmR3YXJlIGxpbWl0YXRpb24gYW5kIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIGtl cm5lbC4NCj4gYmFzZV9hZGRyIGlzIGNvcnJlY3RseSB1bnNpZ25lZCBpbnQgaW4gdGhlIGtlcm5l bCBoZWFkZXJzLiAgSWYgeW91DQo+IGFjdHVhbGx5IGZpbmQgYSBzeXN0ZW0gd2hlcmUgYmFzZV9h ZGRyIGlzIHVuc2lnbmVkIGxvbmcgYW5kIHVuc2lnbmVkDQo+IGxvbmcgaXMgNjQgYml0cywgdGhl biB5b3VyIHRlc3Qgd2lsbCBtYWxmdW5jdGlvbi4NCg0KVGhlIG1vZGlmeV9sZHQoMikgbWFuIHBh Z2Ugc2F5czogIg0KICAgICAgIFRoZSB1c2VyX2Rlc2Mgc3RydWN0dXJlIGlzIGRlZmluZWQgaW4g PGFzbS9sZHQuaD4gYXM6DQoNCiAgICAgICAgICAgc3RydWN0IHVzZXJfZGVzYyB7DQogICAgICAg ICAgICAgICB1bnNpZ25lZCBpbnQgIGVudHJ5X251bWJlcjsNCiAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgYmFzZV9hZGRyOw0KICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICBsaW1pdDsN CiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgc2VnXzMyYml0OjE7DQogICAgICAgICAgICAg ICB1bnNpZ25lZCBpbnQgIGNvbnRlbnRzOjI7DQogICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg IHJlYWRfZXhlY19vbmx5OjE7DQogICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgIGxpbWl0X2lu X3BhZ2VzOjE7DQogICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgIHNlZ19ub3RfcHJlc2VudDox Ow0KICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICB1c2VhYmxlOjE7DQogICAgICAgICAgIH07 DQoiDQoNClRoZSBkZWNsYXJhdGlvbiBpbiBhc20vbGR0LmggYWN0dWFsbHkgZGVmaW5lcyBiYXNl X2FkZHIgYXMgdW5zaWduZWQgaW50Lg0KDQpTbyBteSBjb21tZW50IGFib3V0ICdzb21lIDY0LWJp dCBzeXN0ZW1zJyBpcyB3cm9uZyBhbmQgc2hvdWxkIGFjdHVhbGx5DQpzYXkgJ2FsbCBzeXN0ZW1z Jy4gIFdpbGwgZml4Lg0KDQpUaGF0IGJ5IGl0c2VsZiBpcyBub3QgYW4gaXNzdWUgYXMgbG9uZyBh cyB0aGUgbWFpbiBleGVjdXRhYmxlIGlzIG5vdCBsb2FkZWQgYXQNCmEgaGlnaCBhZGRyZXNzLiAg SSBvbmx5IHJhbiBpbnRvIHByb2JsZW1zIHdpdGggdGhhdCBvbiBzb21lIHVidW50dSBzeXN0ZW0N CmluIG91ciB0ZXN0IHBvb2wuDQoNCk1hcmt1cy4NCg0KDQpJbnRlbCBEZXV0c2NobGFuZCBHbWJI ClJlZ2lzdGVyZWQgQWRkcmVzczogQW0gQ2FtcGVvbiAxMC0xMiwgODU1NzkgTmV1YmliZXJnLCBH ZXJtYW55ClRlbDogKzQ5IDg5IDk5IDg4NTMtMCwgd3d3LmludGVsLmRlCk1hbmFnaW5nIERpcmVj dG9yczogQ2hyaXN0aW4gRWlzZW5zY2htaWQsIEdhcnkgS2Vyc2hhdwpDaGFpcnBlcnNvbiBvZiB0 aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUKUmVnaXN0ZXJlZCBPZmZpY2U6IE11bmlj aApDb21tZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hlbiBIUkIgMTg2OTI4Cg==