Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp2188809img; Sun, 24 Mar 2019 02:00:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqzSBF1pjUWHjRL6NqBexA35i/YctlEkzdC639iR5boGZRG+3P2WokuTfcksx3OXvIIsQw9b X-Received: by 2002:a63:f412:: with SMTP id g18mr17650813pgi.444.1553418045857; Sun, 24 Mar 2019 02:00:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553418045; cv=none; d=google.com; s=arc-20160816; b=J/eI3wkxXrHlH8PKGqFdP1rbAsjQSgzUt8j8CkwU3xrCoAOYa4zPQ3bAI0K+qZZ3ff fHoB19W7GKzBxOT018BwlvFSZ07U9PNr/7nhW/1fZ1CfnlTH2q3VXuEvWzPjCeKZBTc4 KredKSP2oX6nR+DYbdDn1SwX2JO3T9Z7orGHFyUEjc0Le+TCJcp5ad6zryDj/ZbAuui9 CCx+/kaPo8ODVruhlJ9aPBawd36e58uRcQYMTnaB2EuRjP5UV6s9G+ajUEKgRWAPmToA Cvjv32lQSzah/+iqWjNawUo5fuBLMkvyfbax78pJ0HPbPQxE0IS3WzA7OX/9AG3hPWZ5 NITA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :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=7M0KzY+5SKlhpKRIxXty3ESpjCoFBsNwLzK4zAHgd1E=; b=B3KbrYeCN+S+oJ4iCIQbf82P9y/FNyH+1QmbO0EqdxJKMkuv6g/LC4uHlGA5CxTgaD mkrLMIzS2O221NFM/0q7q6fVqWBP9jyKSK87Yo3wUVkxGMADSaCnZVakKvHP+n3BWrn6 57oxbuEEqrANzmRdfm41dqaGKFK+m1rXoXcNHvHpl/HlvI1Feon5xLIKFRPzZuMkGxbG tlnMhoYTEKQlZeJXD1RMPO/SX0rIT/kTdsszIuchpzaB5ulOR027QH3+6kte701Ntpgp lslv6jni22ddmTsKldyzyWB7pjItub8zrvvGz3ClQHAAc4fg+QnyCSDVPxyNCLv2P2Ok 31hw== 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 o4si2283002pgp.160.2019.03.24.02.00.31; Sun, 24 Mar 2019 02:00:45 -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; 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 S1728570AbfCXI7w (ORCPT + 99 others); Sun, 24 Mar 2019 04:59:52 -0400 Received: from mga05.intel.com ([192.55.52.43]:29987 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726139AbfCXI7w (ORCPT ); Sun, 24 Mar 2019 04:59:52 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Mar 2019 01:59:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,256,1549958400"; d="scan'208";a="157887442" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by fmsmga001.fm.intel.com with ESMTP; 24 Mar 2019 01:59:49 -0700 Received: from orsmsx113.amr.corp.intel.com (10.22.240.9) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 24 Mar 2019 01:59:48 -0700 Received: from orsmsx116.amr.corp.intel.com ([169.254.7.78]) by ORSMSX113.amr.corp.intel.com ([169.254.9.249]) with mapi id 14.03.0415.000; Sun, 24 Mar 2019 01:59:48 -0700 From: "Xing, Cedric" To: Andy Lutomirski CC: "Christopherson, Sean J" , "Jarkko Sakkinen" , "linux-kernel@vger.kernel.org" , "x86@kernel.org" , "linux-sgx@vger.kernel.org" , "akpm@linux-foundation.org" , "Hansen, Dave" , "nhorman@redhat.com" , "npmccallum@redhat.com" , "Ayoun, Serge" , "Katz-zamir, Shay" , "Huang, Haitao" , "andriy.shevchenko@linux.intel.com" , "tglx@linutronix.de" , "Svahn, Kai" , "bp@alien8.de" , "josh@joshtriplett.org" , "Huang, Kai" , "rientjes@google.com" , "Dave Hansen" , Haitao Huang , Jethro Beekman , "Dr . Greg Wettstein" Subject: RE: [PATCH v19,RESEND 24/27] x86/vdso: Add __vdso_sgx_enter_enclave() to wrap SGX enclave transitions Thread-Topic: [PATCH v19,RESEND 24/27] x86/vdso: Add __vdso_sgx_enter_enclave() to wrap SGX enclave transitions Thread-Index: AQHU3zmquZHDGSY4XUWmggeyxtSmi6YU12fwgACBcQD//5sEUIADt/WAgADIIJCAAMRtgP//souw Date: Sun, 24 Mar 2019 08:59:48 +0000 Message-ID: <960B34DE67B9E140824F1DCDEC400C0F4E85E989@ORSMSX116.amr.corp.intel.com> References: <20190320162119.4469-1-jarkko.sakkinen@linux.intel.com> <20190320162119.4469-25-jarkko.sakkinen@linux.intel.com> <960B34DE67B9E140824F1DCDEC400C0F4E85C484@ORSMSX116.amr.corp.intel.com> <20190320191318.GF30469@linux.intel.com> <960B34DE67B9E140824F1DCDEC400C0F4E85C5AB@ORSMSX116.amr.corp.intel.com> <20190322215903.GE12666@linux.intel.com> <960B34DE67B9E140824F1DCDEC400C0F4E85E481@ORSMSX116.amr.corp.intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMTdiMGM0MmEtM2QwZi00ZTk4LWEyNmEtOGQ0ZWRkYmVhMGRhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiQVhOV0hGUVJZRzF2MEcrQStyRlwvbXJENFdTMjBJR3pUQ0JOSnFYSjBneHdHUWhYaWhDUGdWNnRucWNJMHJOQnYifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.22.254.140] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQW5keSwNCg0KVGhhbmsgeW91IGZvciB5b3VyIHZhbHVhYmxlIGZlZWRiYWNrcyENCg0KUGVy IHdoYXQgeW91IGhhdmUgYmVlbiBzYXlpbmcsIHlvdXIgZmVlZGJhY2tzIGNvbWUgZnJvbSBkaWZm ZXJlbnQgYW5nbGVzIC0gaS5lLiBmdW5jdGlvbmFsaXR5IHZzLiBzZWN1cml0eSwgYnV0IHRoZXkg YXJlIG1peGVkIHVwIHNvbWVob3cuIEFzIGFuIGVmZm9ydCB0byBtYWtlIHRoZSBkaXNjdXNzaW9u IG1vcmUgY29uc3RydWN0aXZlIGdvaW5nIGZvcndhcmQsIEknZCBsaWtlIHlvdSB0byBhY2tub3ds ZWRnZSB0aGF0LCBpbiB0ZXJtcyBvZiBmdW5jdGlvbmFsaXR5LCBteSBwcm9wb3NhbCBpcyBhIHN1 cGVyc2V0IG9mIHRoZSBjdXJyZW50IHBhdGNoLCBhcyBJIGhhdmUgcHJvdmVuIGJ5IGltcGxlbWVu dGluZyBTZWFuJ3MgQVBJIHVzaW5nIG1pbmUgYXMgYSBzdWJyb3V0aW5lLiBUaGF0IHNhaWQsIGlm IHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggaGlzLCB5b3Ugc2hvdWxkIGJlIHNhdGlzZmllZCB3aXRo IG1pbmUgYXMgd2VsbCwgZnJvbSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLiBBbmQgYmVjYXVzZSBv ZiB0aGF0LCBJJ2xsIHRyeSB0byBpbnRlcnByZXQvYWRkcmVzcyB5b3VyIGNvbmNlcm5zIGZyb20g c2VjdXJpdHkgcGVyc3BlY3RpdmUgdW5sZXNzIG90aGVyd2lzZSBub3RlZC4gSSdtIGF3YXJlIHRo YXQgdGhlcmUncyBzdGlsbCBzdWJ0bGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFNlYW4ncyBBUEkgYW5k IG1pbmUgLSBlLmcuIG15IHByb3Bvc2FsIGNvbnN1bWVzIDI0IGJ5dGVzIG1vcmUgc3RhY2sgc3Bh Y2UgKGZvciB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LCBpLmUuIGV4aXQgY2FsbGJhY2sgaXMgbnVs bCkgdGhhbiBoaXMsIGR1ZSB0byB0aGUgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLiBCdXQgSSBkb24n dCBiZWxpZXZlIHRoYXQgd291bGQgYmVjb21lIGEgIm1ha2UgaXQgb3IgYnJlYWsgaXQiIHNpdHVh dGlvbiBpbiBwcmFjdGljZS4NCg0KPiBJ4oCZbSBnb2luZyB0byBwdXQgbXkgdkRTTyBtYWludGFp bmVyIGhhdCBvbiBmb3IgYSBtaW51dGUuICBDZWRyaWMsIHlvdXINCj4gcHJvcG9zYWwgaGFzIHRo ZSBmb2xsb3dpbmcgaXNzdWVzIHJlbGF0ZWQgc3BlY2lmaWNhbGx5IHRvIHRoZSB2RFNPOg0KPiAN Cj4gSXQgaW5oZXJlbnRseSBjb250YWlucyBpbmRpcmVjdCBicmFuY2hlcy4gIFRoaXMgbWVhbnMg dGhhdCwgb24gcmV0cG9saW5lDQo+IGNvbmZpZ3VyYXRpb25zLCBpdCBwcm9iYWJseSBuZWVkcyB0 byB1c2UgcmV0cG9saW5lcy4gIFRoaXMgaXMgZG9hYmxlLA0KPiBidXQgaXTigJlzIG5hc3R5LCBh bmQgeW91IG5lZWQgdG8gd29ycnkgYWJvdXQgcmVnaXN0ZXIgY2xvYmJlcnMuDQoNCk9ubHkgdGhl IHdlYWtlc3QgbGluayBtYXR0ZXJzIGluIHNlY3VyaXR5LiBXaXRoIGR5bmFtaWMgbGlua2luZyBp biB1c2UsIHRoaXMgYWRkaXRpb25hbCBpbmRpcmVjdCBDQUxMIGNhbid0IG1ha2UgdGhpbmdzIHdv cnNlLiBCdXQgSSdtIG9wZW4gdG8sIGFuZCBpbiBmYWN0IGFsc28gd2lsbGluZyB0bywgYXBwbHkg d2hhdGV2ZXIgbWl0aWdhdGlvbiB0aGF0IHlvdSB0aGluayBpcyBzYXRpc2ZhY3RvcnkgKG9yIHRo YXQgaGFzIGJlZW4gYXBwbGllZCB0byBvdGhlciBpbmRpcmVjdCBicmFuY2hlcywgc3VjaCBhcyBp biBQTFQpLCBzdWNoIGFzIHJldHBvbGluZS4gQnR3LCBkb24ndCB3b3JyeSBhYm91dCByZWdpc3Rl ciBjbG9iYmVycyBiZWNhdXNlIHdlIGhhdmUgYXQgbGVhc3QgJXJheCBhdCBvdXIgZGlzcG9zYWwu DQoNCj4gDQo+IEl0IHVzZXMgZWZmZWN0aXZlbHkgdW5ib3VuZGVkIHN0YWNrIHNwYWNlLiBUaGUg dkRTTyB0aW1pbmcgZnVuY3Rpb25zIGFyZQ0KPiBhbHJlYWR5IGEgcHJvYmxlbSBmb3IgR28sIGFu ZCB0aGlzIGlzIHdvcnNlLg0KDQpJZiB0YXJnZXRpbmcgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSAo aS5lLiBubyBleGl0IGNhbGxiYWNrKSwgbXkgQVBJIHVzZXMgZXhhY3RseSAyNCBieXRlcyBtb3Jl IHRoYW4gU2VhbidzLiBJcyBpdCByZWFsbHkgdGhlIGNhc2UgdGhhdCB0aG9zZSAyNCBieXRlcyB3 aWxsIGJyZWFrIEdvPw0KDQo+IA0KPiBBbmQgd2l0aCBteSB2RFNPIGhhdCBiYWNrIG9mZiwgSSBm aW5kIGl0IGRpc2FwcG9pbnRpbmcgdGhhdCBTR1ggU0RLcw0KPiBzZWVtIHdpbGxpbmcgdG8gY291 cGxlIHRoZSBTR1ggZW5jbGF2ZXMgc28gdGlnaHRseSB0byB0aGVpciBob3N0IEFCSXMuDQo+IEFu ICp1bm1vZGlmaWVkKiBTR1ggZW5jbGF2ZSBzaG91bGQgYmUgYWJsZSB0byBydW4sIHdpdGhvdXQg ZXhjZXNzaXZlDQo+IGFubm95YW5jZSwgaW4gYSBXaW5kb3dzIHByb2Nlc3MsIGEgTGludXggcHJv Y2VzcywgYSBDIHByb2Nlc3MsIGEgSmF2YQ0KPiBwcm9jZXNzLCBhIEdvIHByb2Nlc3MsIGFuZCBw cmV0dHkgbXVjaCBhbnkgb3RoZXIgcHJvY2Vzcy4gIFNheWluZyDigJxJ4oCZbGwNCj4ganVzdCBy ZWNvbXBpbGUgaXTigJ0gaXMgYSBiYWQgc29sdXRpb24g4oCUIGZvciBlbmNsYXZlcyB0aGF0IHVz ZSBNUkVOQ0xBVkUsDQo+IHlvdSBjYW7igJl0LCBhbmQgZm9yIGVuY2xhdmVzIHRoYXQgdXNlIE1S U0lHTkVSLCB5b3UgbmVlZCB0byBkZWFsIHdpdGggdGhlDQo+IGZhY3QgdGhlIHByb3RlY3Rpbmcg dGhlIHNpZ25pbmcga2V5IGlzIGEgYmlnIGRlYWwuDQo+IFNvbWVvbmUgc2hvdWxkIGJlIGFibGUg dG8gcG9ydCB0aGUgZW50aXJlIGhvc3QgcHJvZ3JhbSB0byBhIGRpZmZlcmVudA0KPiBsYW5ndWFn ZSB3aXRob3V0IGxvc2luZyBzZWNyZXRzIGFuZCB3aXRob3V0IGFjY2VzcyB0byBhIHNpZ25pbmcg a2V5Lg0KDQpJJ20gbm90IHN1cmUgd2hpY2ggU0dYIFNES3MgeW91IGFyZSByZWZlcnJpbmcgdG8u IEJ1dCBmb3IgSW50ZWwgU0dYIFNESywgd2UgZGVmaW5lZCBvdXIgb3duIEFCSSB0aGF0IGlzIGNv bnNpc3RlbnQgYmV0d2VlbiBXaW5kb3dzIGFuZCBMaW51eCAtIGkuZS4gdGhlcmUncyBubyB0ZWNo bmljYWwgcHJvYmxlbSB0byBsb2FkIG9uIFdpbmRvd3MgYW4gZW5jbGF2ZSBidWlsdCBvbiBMaW51 eCBvciB2aWNlIHZlcnNhLiBJbiB0ZXJtcyBvZiB3aGF0IHByb2dyYW1taW5nIGxhbmd1YWdlcyB0 aGV5IGNhbiB3b3JrIHdpdGgsIEkgaGF2ZSB0byBzYXkgaXQgd2FzIGRlc2lnbmVkIGV4Y2x1c2l2 ZWx5IGZvciBDL0MrKy4gRm9ydHVuYXRlbHksIHRoZXJlJ3MgdXN1YWxseSBhICJuYXRpdmUiIGlu dGVyZmFjZSAoZS5nLiBKTkksIGNnbywgZXRjLikgc3VwcG9ydGVkIGJ5IGEgbGFuZ3VhZ2UgcnVu dGltZSBzbyBpdCBoYXNuJ3QgYmVlbiBhIHJvYWRibG9jayBzbyBmYXIuIEFsdGVybmF0aXZlbHks IHRoZSBlbmNsYXZlIHZlbmRvciBjb3VsZCBzaGlwIGFuIGVuY2xhdmUgYWxvbmcgd2l0aCBhbiAi aW50ZXJmYWNlIiBzaGFyZWQgb2JqZWN0IHRoYXQgZW5jYXBzdWxhdGVzIGFsbCBvZiB0aGUgbWFy c2hhbGluZyBzcGVjaWZpY3MsIHRoZW4gdGhlIGNvbWJpbmF0aW9uIG9mIHRoYXQgZW5jbGF2ZSBh bmQgaXRzICJpbnRlcmZhY2UiIHNoYXJlZCBvYmplY3QgbWF5IGJlIGFibGUgdG8gd29yayAidW5p dmVyc2FsbHkiLCB3aGljaCBzaG91bGQgYmUgY2xvc2UgdG8gd2hhdCB5b3Ugd2FudC4NCg0KVGhl IGlkZWEgd2UgaGFkLCB3aGVuIEludGVsIFNHWCBTREsgd2FzIGRlc2lnbmVkLCB3YXMgdGhhdCBk aWZmZXJlbnQgU0RLcyB3b3VsZCBiZSBkZXZlbG9wZWQgZm9yIGRpZmZlcmVudCBsYW5ndWFnZXMg dG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygc3BlY2lmaWMgbGFuZ3VhZ2UgZmVhdHVyZXMuIFRoYXQgaXMg c2ltaWxhciB0byBkaWZmZXJlbnQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIHdlcmUgaW52ZW50ZWQg dG8gdGFyZ2V0IGRpZmZlcmVudCB1c2FnZXMuIEFzIHdlIGFsbCBrbm93LCBldmVyeSBwcm9ncmFt bWluZyBsYW5ndWFnZSBoYXMgYm90aCBhZHZhbnRhZ2VzIGFuZCBkaXNhZHZhbnRhZ2VzLCBoZW5j ZSBubyBzaW5nbGUgbGFuZ3VhZ2UgZG9taW5hdGVzLiBBbmQgdGhhdCBzYW1lIGlkZWEgYXBwbGll cyB0byBTR1ggU0RLcy4gSWYgdGhlcmUgZXhpc3RlZCBhbiBTREsgdGhhdCB3b3JrZWQgd2l0aCBl dmVyeXRoaW5nLCBwcm9iYWJseSBpdCB3b3VsZG4ndCB3b3JrIHdlbGwgd2l0aCBhbnl0aGluZy4N Cg0KPiANCj4gQ2VkcmljLCB5b3VyIHByb3Bvc2FsIGFsbG93cyBhbiBlbmNsYXZlIHRvIG11Y2sg d2l0aCBSU1AsIGJ1dCBub3QgaW4gYQ0KPiB3YXkgdGhhdOKAmXMgcGFydGljdWxhcmx5IHBsZWFz YW50Lg0KDQpGcm9tIHNlY3VyaXR5IHBlcnNwZWN0aXZlLCBpdCBpcyBTR1ggSVNBLCBidXQgTk9U IGFueSBwYXJ0aWN1bGFyIEFCSSwgdGhhdCBhbGxvd3MgZW5jbGF2ZXMgInRvIG11Y2sgd2l0aCBS U1AiLiANCg0KPiBTaW5jZSB0aGUgSVNBIGlzIHNldCBpbiBzdG9uZSwgd2UNCj4gY2Fu4oCZdCBk byBhbnl0aGluZyBhYm91dCB0aGUgZW5jbGF2ZeKAmXMgYWNjZXNzIHRvIGl0cyBjYWxsZXLigJlz IHJlZ2lzdGVycy4NCj4gSSB3b3VsZCBsb3ZlIHRvIHNlZSBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkg dG8gcnVuIGFuIGVuY2xhdmUgc3VjaCB0aGF0IGl0DQo+IGRvZXMgbm90IGFjY2VzcyB0aGUgbWFp biB1bnRydXN0ZWQgc3RhY2sgYXQgYWxsIOKAlCB1UlNQIGFuZCB1UkJQIHNob3VsZA0KPiBiZSBh cmJpdHJhcnkgdmFsdWVzIHBhc3NlZCBpbiB0aGUgdW50cnVzdGVkIGNvZGUsIGFuZCB0aGUgdmFs dWVzIHRoZQ0KPiBlbmNsYXZlIHNldHMgc2hvdWxkIGJlIHJlbGF5ZWQgYmFjayB0byB0aGUgY2Fs bGVyIGJ1dCBvdGhlcndpc2Ugbm90IGhhdmUNCj4gYW55IGVmZmVjdC4gIFNhZGx5IEkgc2VlIG5v IHdheSB0byBkbyB0aGlzIHNob3J0IG9mIHVzaW5nIEdTQkFTRSB0bw0KPiBzdG9yZSB0aGUgcmVh bCB1bnRydXN0ZWQgc3RhY2sgcG9pbnRlci4NCg0KSSB1bmRlcnN0YW5kIHlvdXIgc2FkbmVzcy4g WW91IGFyZSAiaG9waW5nIiBTR1ggdG8gYmUgYSBzYW5kYm94IHRlY2hub2xvZ3kgKGkuZS4gdG8g cHJldmVudCBlbmNsYXZlIGZyb20gcmVhY2hpbmcgb3V0IGludG8gdGhlIGhvc3QpIGJ1dCB0aGF0 IHdhc24ndCB0aGUgc2VjdXJpdHkgb2JqZWN0aXZlIHdoZW4gU0dYIHdhcyBkZWZpbmVkLg0KDQpB bnl3YXksIFNHWCBpcyB3aGF0IGl0IGlzLiBBIHJlc3RyaWN0aXZlIEFCSSBvbmx5IHRha2VzIGF3 YXkgZmxleGliaWxpdGllcyBmcm9tICJnb29kIiBlbmNsYXZlcyBidXQgY2FuIE5FVkVSIHJlc3Ry aWN0IG1hbGljaW91cyBvbmVzLCBzbyBTZWFuJ3MgQUJJIGNhbm5vdCBvZmZlciB3aGF0IHlvdSB3 YW50Lg0KDQo+IE90aGVyIHRoYW4gdGhlIHNlZ21lbnQgYmFzZXMsIHRoZXJlIGFwcGVhciB0byBi ZSBsaXRlcmFsbHkgemVybw0KPiB1bnRydXN0ZWQgcmVnaXN0ZXJzIHRoYXQgYXJlIHJlbGlhYmx5 IHByZXNlcnZlZCBhY3Jvc3MgYW4gZW5jbGF2ZSBlbnRyeQ0KPiBhbmQgZXhpdC4gIEkgc3VwcG9z ZSB3ZSBzaG91bGQgdXNlIGEgc3lzY2FsbCB0byBoZWxwLg0KDQpUaGUgZ29vZCBuZXdzIGlzIHdp dGggQ0VULCB0aGVyZSBhcmUgdmlhYmxlIHNvbHV0aW9ucyB0byBpbXBsZW1lbnQgYmktZGlyZWN0 aW9uYWwgcHJvdGVjdGlvbiBhcyB5b3Ugd291bGQgaG9wZS4gWW91IGFyZSBtb3JlIHRoYW4gd2Vs Y29tZSB0byBhc2sgbWUgb2ZmbGluZSBmb3IgbW9yZSBkZXRhaWxzLg0KDQo+IA0KPiBTaW5jZSB0 aGUgYWJvdmUgdHJpY2tzIHNlZW0gdW5saWtlbHkgdG8gbWFrZSBpdCBpbnRvIHRoZSBrZXJuZWws IEkgdGhpbmsNCj4gd2XigJlyZSBkb2luZyBldmVyeW9uZSBhIGZhdm9yIGlmIHRoZSBMaW51eCBB UElzIHN0cm9uZ2x5IGVuY291cmFnZSBTREsNCj4gYXV0aG9ycyB0byBidWlsZCBlbmNsYXZlcyBp biBhIHdheSB0aGF0IHRoZXkgZG9u4oCZdCBtYWtlIHByb2JsZW1hdGljDQo+IGFzc3VtcHRpb25z IGFib3V0IHRoZSB1bnRydXN0ZWQgd29ybGQuIEkgd291bGQgcmVhbGx5IGxpa2UgdG8gc2VlDQo+ IGVuY2xhdmVzIGdlbmVyYXRlZCBieSB0aGUgTGludXggU0RLIHdvcmsgb24gV2luZG93cyBhbmQg dmljZSB2ZXJzYS4NCg0KQXMgc2FpZCBpbiBteSBwcmV2aW91cyBlbWFpbCwgdGhpcyB2RFNPIEFQ SSBpc24ndCBldmVuIGNvbXBsaWFudCB0byB4ODZfNjQgQUJJIGFuZCBpcyBhYnNvbHV0ZWx5IE5P VCBmb3IgYXZlcmFnZSBkZXZlbG9wZXJzLiBJbnN0ZWFkLCBob3N0L2VuY2xhdmUgY29tbXVuaWNh dGlvbnMgYXJlIGV4cGVjdGVkIHRvIGJlIGhhbmRsZWQgYnkgU0RLcyBhbmQgdGhvc2UgZGV2ZWxv cGVycyB3aWxsIGJlIHZlcnkgYXdhcmUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZWlyIHRhcmdl dGVkIGVudmlyb25tZW50cywgYW5kIHdpbGwgbmVlZCB0aGUgZnJlZWRvbSB0byBkZXBsb3kgb3B0 aW1hbCBzb2x1dGlvbnMuIA0KDQpJIHVuZGVyc3RhbmQgeW91ciBpbnRlbnRpb24gdG8gYWR2b2Nh dGUgdGhlIHByb2dyYW1taW5nIG1vZGVsIHRoYXQgeW91IGJlbGlldmUgaXMgInJpZ2h0Ii4gQnV0 IHRoZXJlIGFyZSA3IGJpbGxpb24gcGVvcGxlIG9uIHRoaXMgcGxhbmV0IGFuZCB0aGUgInJpZ2h0 IiB0aGluZyBmb3IgeW91IGNvdWxkIGJlICJ3cm9uZyIgZm9yIG90aGVycywgZXNwZWNpYWxseSBp biBmdXR1cmUgdXNhZ2VzL3NpdHVhdGlvbnMgdGhhdCBjYW4ndCBiZSBmb3Jlc2VlbiB0b2RheS4g U29mdHdhcmUgaXMgc3RhY2tlZCwgd2l0aCB0aGUgbG93ZXIgbGF5ZXJzIGJlaW5nIG1vcmUgZ2Vu ZXJpYyBhbmQgaGlnaGVyIGxheWVycyBiZWluZyBtb3JlIHNwZWNpZmljLiBUaGlzIHZEU08gQVBJ IGlzIHNpdHRpbmcgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2ssIHRoZXJlZm9yZSBzaGFsbCBi ZSBhcyBnZW5lcmljIGFzIHBvc3NpYmxlLiBBIGJldHRlciBhcHByb2FjaCB0byBhZHZvY2F0ZSB5 b3VyIGlkZWEgaXMgdG8gd3JhcCBpdCAoaS5lLiB0byBpbXBsZW1lbnQgaXQgdXNpbmcgdGhlIG1v cmUgZ2VuZXJpYyB2RFNPIEFQSSBhcyBhIHN1YnJvdXRpbmUpIGluIGEgbGlicmFyeSBmb3IgdGhl IHB1YmxpYyB0byBjaG9vc2UgKGFuZCB5b3UgY2FuIGltYWdpbmUgb3RoZXJzIGJlYXJpbmcgZGlm ZmVyZW50IGlkZWFzIHdpbGwgZG8gdGhlIHNhbWUpLiBUaGVuIGdvb2QgaWRlYXMgd2lsbCBzdGFu ZCBvdXQhDQoNCi1DZWRyaWMNCg==