Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E13A6C61DA3 for ; Fri, 24 Feb 2023 05:49:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229653AbjBXFtB (ORCPT ); Fri, 24 Feb 2023 00:49:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229506AbjBXFs7 (ORCPT ); Fri, 24 Feb 2023 00:48:59 -0500 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A8B035AF for ; Thu, 23 Feb 2023 21:48:56 -0800 (PST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id B140C3859F; Fri, 24 Feb 2023 05:48:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1677217734; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=Uj/OBStsmUdP9ek+s7FMyPm2HoT1toFrymVzDDl57ec=; b=pBmaH7uMCXJMSlyNCJwJJKNotfKp6Mn0SPyqcTmKCc33Zz8EQrwAkaC7JO8i1Yijv/moRK CkqBuMehiCxXfEk3jm6YGApBlDiCWErtBYmA6+Hv1ax3YQDVK6ZSKdKzFqAxJWaDZrxSmM Wlhtbiw88aXaAfB56Sy5FP2HHiphzoM= Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 6822B1391B; Fri, 24 Feb 2023 05:48:54 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id /qfUF8ZP+GOTTgAAMHmgww (envelope-from ); Fri, 24 Feb 2023 05:48:54 +0000 Message-ID: Date: Fri, 24 Feb 2023 06:48:53 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v3 10/12] x86/mtrr: use new cache_map in mtrr_type_lookup() Content-Language: en-US To: "Michael Kelley (LINUX)" , "linux-kernel@vger.kernel.org" , "x86@kernel.org" Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" References: <20230223093243.1180-1-jgross@suse.com> <20230223093243.1180-11-jgross@suse.com> From: Juergen Gross In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------0QVQPYHhjZlK0pCIM6ViPzKV" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------0QVQPYHhjZlK0pCIM6ViPzKV Content-Type: multipart/mixed; boundary="------------Fh4QDdnw5ozCsplexJL0Z4kQ"; protected-headers="v1" From: Juergen Gross To: "Michael Kelley (LINUX)" , "linux-kernel@vger.kernel.org" , "x86@kernel.org" Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" Message-ID: Subject: Re: [PATCH v3 10/12] x86/mtrr: use new cache_map in mtrr_type_lookup() References: <20230223093243.1180-1-jgross@suse.com> <20230223093243.1180-11-jgross@suse.com> In-Reply-To: --------------Fh4QDdnw5ozCsplexJL0Z4kQ Content-Type: multipart/mixed; boundary="------------dkSEqcM0tVyownhSwl6Eza2r" --------------dkSEqcM0tVyownhSwl6Eza2r Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 T24gMjMuMDIuMjMgMjA6MjQsIE1pY2hhZWwgS2VsbGV5IChMSU5VWCkgd3JvdGU6DQo+IEZy b206IEp1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT4gU2VudDogVGh1cnNkYXksIEZl YnJ1YXJ5IDIzLCAyMDIzIDE6MzMgQU0NCj4+DQo+PiBJbnN0ZWFkIG9mIGNyYXdsaW5nIHRo cm91Z2ggdGhlIE1UUlIgcmVnaXN0ZXIgc3RhdGUsIHVzZSB0aGUgbmV3DQo+PiBjYWNoZV9t YXAgZm9yIGxvb2tpbmcgdXAgdGhlIGNhY2hlIHR5cGUocykgb2YgYSBtZW1vcnkgcmVnaW9u Lg0KPj4NCj4+IFRoaXMgYWxsb3dzIG5vdyB0byBzZXQgdGhlIHVuaWZvcm0gcGFyYW1ldGVy IGFjY29yZGluZyB0byB0aGUNCj4+IHVuaWZvcm1pdHkgb2YgdGhlIGNhY2hlIG1vZGUgb2Yg dGhlIHJlZ2lvbiwgaW5zdGVhZCBvZiBzZXR0aW5nIGl0DQo+PiBvbmx5IGlmIHRoZSBjb21w bGV0ZSByZWdpb24gaXMgbWFwcGVkIGJ5IGEgc2luZ2xlIE1UUlIuIFRoaXMgbm93DQo+PiBp bmNsdWRlcyBldmVuIHRoZSByZWdpb24gY292ZXJlZCBieSB0aGUgZml4ZWQgTVRSUiByZWdp c3RlcnMuDQo+Pg0KPj4gTWFrZSBzdXJlIHVuaWZvcm0gaXMgYWx3YXlzIHNldC4NCj4+DQo+ PiBTaWduZWQtb2ZmLWJ5OiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+DQo+PiAt LS0NCj4+IFYzOg0KPj4gLSBuZXcgcGF0Y2gNCj4+IC0tLQ0KPj4gICBhcmNoL3g4Ni9rZXJu ZWwvY3B1L210cnIvZ2VuZXJpYy5jIHwgMjIzICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+PiAgIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRp b25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbXRyci9n ZW5lcmljLmMgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L210cnIvZ2VuZXJpYy5jDQo+PiBpbmRl eCBjYTliOGNlYzgxYTAuLjljOWNiZjZiNTZiYyAxMDA2NDQNCj4+IC0tLSBhL2FyY2gveDg2 L2tlcm5lbC9jcHUvbXRyci9nZW5lcmljLmMNCj4+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9j cHUvbXRyci9nZW5lcmljLmMNCj4+IEBAIC0xMzgsMTU0ICsxMzgsNiBAQCBzdGF0aWMgdTgg Z2V0X2VmZmVjdGl2ZV90eXBlKHU4IHR5cGUxLCB1OCB0eXBlMikNCj4+ICAgCXJldHVybiB0 eXBlMTsNCj4+ICAgfQ0KPj4NCj4+IC0vKg0KPj4gLSAqIENoZWNrIGFuZCByZXR1cm4gdGhl IGVmZmVjdGl2ZSB0eXBlIGZvciBNVFJSLU1UUlIgdHlwZSBvdmVybGFwLg0KPj4gLSAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgZWZmZWN0aXZlIHR5cGUgaXMgVU5DQUNIRUFCTEUsIGVsc2Ug cmV0dXJucyBmYWxzZQ0KPj4gLSAqLw0KPj4gLXN0YXRpYyBib29sIGNoZWNrX3R5cGVfb3Zl cmxhcCh1OCAqcHJldiwgdTggKmN1cnIpDQo+PiAtew0KPj4gLQkqcHJldiA9ICpjdXJyID0g Z2V0X2VmZmVjdGl2ZV90eXBlKCpjdXJyLCAqcHJldik7DQo+PiAtDQo+PiAtCXJldHVybiAq cHJldiA9PSBNVFJSX1RZUEVfVU5DQUNIQUJMRTsNCj4+IC19DQo+PiAtDQo+PiAtLyoqDQo+ PiAtICogbXRycl90eXBlX2xvb2t1cF9maXhlZCAtIGxvb2sgdXAgbWVtb3J5IHR5cGUgaW4g TVRSUiBmaXhlZCBlbnRyaWVzDQo+PiAtICoNCj4+IC0gKiBSZXR1cm4gdGhlIE1UUlIgZml4 ZWQgbWVtb3J5IHR5cGUgb2YgJ3N0YXJ0Jy4NCj4+IC0gKg0KPj4gLSAqIE1UUlIgZml4ZWQg ZW50cmllcyBhcmUgZGl2aWRlZCBpbnRvIHRoZSBmb2xsb3dpbmcgd2F5czoNCj4+IC0gKiAg MHgwMDAwMCAtIDB4N0ZGRkYgOiBUaGlzIHJhbmdlIGlzIGRpdmlkZWQgaW50byBlaWdodCA2 NEtCIHN1Yi1yYW5nZXMNCj4+IC0gKiAgMHg4MDAwMCAtIDB4QkZGRkYgOiBUaGlzIHJhbmdl IGlzIGRpdmlkZWQgaW50byBzaXh0ZWVuIDE2S0Igc3ViLXJhbmdlcw0KPj4gLSAqICAweEMw MDAwIC0gMHhGRkZGRiA6IFRoaXMgcmFuZ2UgaXMgZGl2aWRlZCBpbnRvIHNpeHR5LWZvdXIg NEtCIHN1Yi1yYW5nZXMNCj4+IC0gKg0KPj4gLSAqIFJldHVybiBWYWx1ZXM6DQo+PiAtICog TVRSUl9UWVBFXyh0eXBlKSAgLSBNYXRjaGVkIG1lbW9yeSB0eXBlDQo+PiAtICogTVRSUl9U WVBFX0lOVkFMSUQgLSBVbm1hdGNoZWQNCj4+IC0gKi8NCj4+IC1zdGF0aWMgdTggbXRycl90 eXBlX2xvb2t1cF9maXhlZCh1NjQgc3RhcnQsIHU2NCBlbmQpDQo+PiAtew0KPj4gLQlpbnQg aWR4Ow0KPj4gLQ0KPj4gLQlpZiAoc3RhcnQgPj0gMHgxMDAwMDApDQo+PiAtCQlyZXR1cm4g TVRSUl9UWVBFX0lOVkFMSUQ7DQo+PiAtDQo+PiAtCS8qIDB4MCAtIDB4N0ZGRkYgKi8NCj4+ IC0JaWYgKHN0YXJ0IDwgMHg4MDAwMCkgew0KPj4gLQkJaWR4ID0gMDsNCj4+IC0JCWlkeCAr PSAoc3RhcnQgPj4gMTYpOw0KPj4gLQkJcmV0dXJuIG10cnJfc3RhdGUuZml4ZWRfcmFuZ2Vz W2lkeF07DQo+PiAtCS8qIDB4ODAwMDAgLSAweEJGRkZGICovDQo+PiAtCX0gZWxzZSBpZiAo c3RhcnQgPCAweEMwMDAwKSB7DQo+PiAtCQlpZHggPSAxICogODsNCj4+IC0JCWlkeCArPSAo KHN0YXJ0IC0gMHg4MDAwMCkgPj4gMTQpOw0KPj4gLQkJcmV0dXJuIG10cnJfc3RhdGUuZml4 ZWRfcmFuZ2VzW2lkeF07DQo+PiAtCX0NCj4+IC0NCj4+IC0JLyogMHhDMDAwMCAtIDB4RkZG RkYgKi8NCj4+IC0JaWR4ID0gMyAqIDg7DQo+PiAtCWlkeCArPSAoKHN0YXJ0IC0gMHhDMDAw MCkgPj4gMTIpOw0KPj4gLQlyZXR1cm4gbXRycl9zdGF0ZS5maXhlZF9yYW5nZXNbaWR4XTsN Cj4+IC19DQo+PiAtDQo+PiAtLyoqDQo+PiAtICogbXRycl90eXBlX2xvb2t1cF92YXJpYWJs ZSAtIGxvb2sgdXAgbWVtb3J5IHR5cGUgaW4gTVRSUiB2YXJpYWJsZSBlbnRyaWVzDQo+PiAt ICoNCj4+IC0gKiBSZXR1cm4gVmFsdWU6DQo+PiAtICogTVRSUl9UWVBFXyh0eXBlKSAtIE1h dGNoZWQgbWVtb3J5IHR5cGUgb3IgZGVmYXVsdCBtZW1vcnkgdHlwZSAodW5tYXRjaGVkKQ0K Pj4gLSAqDQo+PiAtICogT3V0cHV0IEFyZ3VtZW50czoNCj4+IC0gKiByZXBlYXQgLSBTZXQg dG8gMSB3aGVuIFtzdGFydDplbmRdIHNwYW5uZWQgYWNyb3NzIE1UUlIgcmFuZ2UgYW5kIHR5 cGUNCj4+IC0gKgkgICAgcmV0dXJuZWQgY29ycmVzcG9uZHMgb25seSB0byBbc3RhcnQ6KnBh cnRpYWxfZW5kXS4gIENhbGxlciBoYXMNCj4+IC0gKgkgICAgdG8gbG9va3VwIGFnYWluIGZv ciBbKnBhcnRpYWxfZW5kOmVuZF0uDQo+PiAtICoNCj4+IC0gKiB1bmlmb3JtIC0gU2V0IHRv IDEgd2hlbiBhbiBNVFJSIGNvdmVycyB0aGUgcmVnaW9uIHVuaWZvcm1seSwgaS5lLiB0aGUN Cj4+IC0gKgkgICAgIHJlZ2lvbiBpcyBmdWxseSBjb3ZlcmVkIGJ5IGEgc2luZ2xlIE1UUlIg ZW50cnkgb3IgdGhlIGRlZmF1bHQNCj4+IC0gKgkgICAgIHR5cGUuDQo+PiAtICovDQo+PiAt c3RhdGljIHU4IG10cnJfdHlwZV9sb29rdXBfdmFyaWFibGUodTY0IHN0YXJ0LCB1NjQgZW5k LCB1NjQgKnBhcnRpYWxfZW5kLA0KPj4gLQkJCQkgICAgaW50ICpyZXBlYXQsIHU4ICp1bmlm b3JtKQ0KPj4gLXsNCj4+IC0JaW50IGk7DQo+PiAtCXU2NCBiYXNlLCBtYXNrOw0KPj4gLQl1 OCBwcmV2X21hdGNoLCBjdXJyX21hdGNoOw0KPj4gLQ0KPj4gLQkqcmVwZWF0ID0gMDsNCj4+ IC0JKnVuaWZvcm0gPSAxOw0KPj4gLQ0KPj4gLQlwcmV2X21hdGNoID0gTVRSUl9UWVBFX0lO VkFMSUQ7DQo+PiAtCWZvciAoaSA9IDA7IGkgPCBudW1fdmFyX3JhbmdlczsgKytpKSB7DQo+ PiAtCQl1bnNpZ25lZCBzaG9ydCBzdGFydF9zdGF0ZSwgZW5kX3N0YXRlLCBpbmNsdXNpdmU7 DQo+PiAtDQo+PiAtCQlpZiAoIShtdHJyX3N0YXRlLnZhcl9yYW5nZXNbaV0ubWFza19sbyAm ICgxIDw8IDExKSkpDQo+PiAtCQkJY29udGludWU7DQo+PiAtDQo+PiAtCQliYXNlID0gKCgo dTY0KW10cnJfc3RhdGUudmFyX3Jhbmdlc1tpXS5iYXNlX2hpKSA8PCAzMikgKw0KPj4gLQkJ ICAgICAgIChtdHJyX3N0YXRlLnZhcl9yYW5nZXNbaV0uYmFzZV9sbyAmIFBBR0VfTUFTSyk7 DQo+PiAtCQltYXNrID0gKCgodTY0KW10cnJfc3RhdGUudmFyX3Jhbmdlc1tpXS5tYXNrX2hp KSA8PCAzMikgKw0KPj4gLQkJICAgICAgIChtdHJyX3N0YXRlLnZhcl9yYW5nZXNbaV0ubWFz a19sbyAmIFBBR0VfTUFTSyk7DQo+PiAtDQo+PiAtCQlzdGFydF9zdGF0ZSA9ICgoc3RhcnQg JiBtYXNrKSA9PSAoYmFzZSAmIG1hc2spKTsNCj4+IC0JCWVuZF9zdGF0ZSA9ICgoZW5kICYg bWFzaykgPT0gKGJhc2UgJiBtYXNrKSk7DQo+PiAtCQlpbmNsdXNpdmUgPSAoKHN0YXJ0IDwg YmFzZSkgJiYgKGVuZCA+IGJhc2UpKTsNCj4+IC0NCj4+IC0JCWlmICgoc3RhcnRfc3RhdGUg IT0gZW5kX3N0YXRlKSB8fCBpbmNsdXNpdmUpIHsNCj4+IC0JCQkvKg0KPj4gLQkJCSAqIFdl IGhhdmUgc3RhcnQ6ZW5kIHNwYW5uaW5nIGFjcm9zcyBhbiBNVFJSLg0KPj4gLQkJCSAqIFdl IHNwbGl0IHRoZSByZWdpb24gaW50byBlaXRoZXINCj4+IC0JCQkgKg0KPj4gLQkJCSAqIC0g c3RhcnRfc3RhdGU6MQ0KPj4gLQkJCSAqIChzdGFydDptdHJyX2VuZCkobXRycl9lbmQ6ZW5k KQ0KPj4gLQkJCSAqIC0gZW5kX3N0YXRlOjENCj4+IC0JCQkgKiAoc3RhcnQ6bXRycl9zdGFy dCkobXRycl9zdGFydDplbmQpDQo+PiAtCQkJICogLSBpbmNsdXNpdmU6MQ0KPj4gLQkJCSAq IChzdGFydDptdHJyX3N0YXJ0KShtdHJyX3N0YXJ0Om10cnJfZW5kKShtdHJyX2VuZDplbmQp DQo+PiAtCQkJICoNCj4+IC0JCQkgKiBkZXBlbmRpbmcgb24ga2luZCBvZiBvdmVybGFwLg0K Pj4gLQkJCSAqDQo+PiAtCQkJICogUmV0dXJuIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCByZWdp b24gYW5kIGEgcG9pbnRlcg0KPj4gLQkJCSAqIHRvIHRoZSBzdGFydCBvZiBuZXh0IHJlZ2lv biBzbyB0aGF0IGNhbGxlciB3aWxsIGJlDQo+PiAtCQkJICogYWR2aXNlZCB0byBsb29rdXAg YWdhaW4gYWZ0ZXIgaGF2aW5nIGFkanVzdGVkIHN0YXJ0DQo+PiAtCQkJICogYW5kIGVuZC4N Cj4+IC0JCQkgKg0KPj4gLQkJCSAqIE5vdGU6IFRoaXMgd2F5IHdlIGhhbmRsZSBvdmVybGFw cyB3aXRoIG11bHRpcGxlDQo+PiAtCQkJICogZW50cmllcyBhbmQgdGhlIGRlZmF1bHQgdHlw ZSBwcm9wZXJseS4NCj4+IC0JCQkgKi8NCj4+IC0JCQlpZiAoc3RhcnRfc3RhdGUpDQo+PiAt CQkJCSpwYXJ0aWFsX2VuZCA9IGJhc2UgKyBnZXRfbXRycl9zaXplKG1hc2spOw0KPj4gLQkJ CWVsc2UNCj4+IC0JCQkJKnBhcnRpYWxfZW5kID0gYmFzZTsNCj4+IC0NCj4+IC0JCQlpZiAo dW5saWtlbHkoKnBhcnRpYWxfZW5kIDw9IHN0YXJ0KSkgew0KPj4gLQkJCQlXQVJOX09OKDEp Ow0KPj4gLQkJCQkqcGFydGlhbF9lbmQgPSBzdGFydCArIFBBR0VfU0laRTsNCj4+IC0JCQl9 DQo+PiAtDQo+PiAtCQkJZW5kID0gKnBhcnRpYWxfZW5kIC0gMTsgLyogZW5kIGlzIGluY2x1 c2l2ZSAqLw0KPj4gLQkJCSpyZXBlYXQgPSAxOw0KPj4gLQkJCSp1bmlmb3JtID0gMDsNCj4+ IC0JCX0NCj4+IC0NCj4+IC0JCWlmICgoc3RhcnQgJiBtYXNrKSAhPSAoYmFzZSAmIG1hc2sp KQ0KPj4gLQkJCWNvbnRpbnVlOw0KPj4gLQ0KPj4gLQkJY3Vycl9tYXRjaCA9IG10cnJfc3Rh dGUudmFyX3Jhbmdlc1tpXS5iYXNlX2xvICYgMHhmZjsNCj4+IC0JCWlmIChwcmV2X21hdGNo ID09IE1UUlJfVFlQRV9JTlZBTElEKSB7DQo+PiAtCQkJcHJldl9tYXRjaCA9IGN1cnJfbWF0 Y2g7DQo+PiAtCQkJY29udGludWU7DQo+PiAtCQl9DQo+PiAtDQo+PiAtCQkqdW5pZm9ybSA9 IDA7DQo+PiAtCQlpZiAoY2hlY2tfdHlwZV9vdmVybGFwKCZwcmV2X21hdGNoLCAmY3Vycl9t YXRjaCkpDQo+PiAtCQkJcmV0dXJuIGN1cnJfbWF0Y2g7DQo+PiAtCX0NCj4+IC0NCj4+IC0J aWYgKHByZXZfbWF0Y2ggIT0gTVRSUl9UWVBFX0lOVkFMSUQpDQo+PiAtCQlyZXR1cm4gcHJl dl9tYXRjaDsNCj4+IC0NCj4+IC0JcmV0dXJuIG10cnJfc3RhdGUuZGVmX3R5cGU7DQo+PiAt fQ0KPj4gLQ0KPj4gICBzdGF0aWMgdm9pZCBybV9tYXBfZW50cnlfYXQoaW50IGlkeCkNCj4+ ICAgew0KPj4gICAJaW50IGk7DQo+PiBAQCAtNTMyLDYgKzM4NCwxNyBAQCB2b2lkIG10cnJf b3ZlcndyaXRlX3N0YXRlKHN0cnVjdCBtdHJyX3Zhcl9yYW5nZSAqdmFyLA0KPj4gdW5zaWdu ZWQgaW50IG51bV92YXIsDQo+PiAgIAltdHJyX3N0YXRlX3NldCA9IDE7DQo+PiAgIH0NCj4+ DQo+PiArc3RhdGljIHU4IHR5cGVfbWVyZ2UodTggdHlwZSwgdTggbmV3X3R5cGUsIHU4ICp1 bmlmb3JtKQ0KPj4gK3sNCj4+ICsJdTggZWZmZWN0aXZlX3R5cGU7DQo+PiArDQo+PiArCWVm ZmVjdGl2ZV90eXBlID0gZ2V0X2VmZmVjdGl2ZV90eXBlKHR5cGUsIG5ld190eXBlKTsNCj4+ ICsJaWYgKHR5cGUgIT0gTVRSUl9UWVBFX0lOVkFMSUQgJiYgdHlwZSAhPSBlZmZlY3RpdmVf dHlwZSkNCj4+ICsJCSp1bmlmb3JtID0gMDsNCj4+ICsNCj4+ICsJcmV0dXJuIGVmZmVjdGl2 ZV90eXBlOw0KPj4gK30NCj4+ICsNCj4+ICAgLyoqDQo+PiAgICAqIG10cnJfdHlwZV9sb29r dXAgLSBsb29rIHVwIG1lbW9yeSB0eXBlIGluIE1UUlINCj4+ICAgICoNCj4+IEBAIC01NDAs NjYgKzQwMywzNiBAQCB2b2lkIG10cnJfb3ZlcndyaXRlX3N0YXRlKHN0cnVjdCBtdHJyX3Zh cl9yYW5nZSAqdmFyLA0KPiANCj4gVGhpcyBsYXN0IGNodW5rIG9mIHRoaXMgcGF0Y2ggaXMg bm90IGFwcGx5aW5nIGNvcnJlY3RseSBmb3IgbWUuICAncGF0Y2gnIGNvbXBsYWlucw0KPiBh Ym91dCBhIG1hbGZvcm1lZCBwYXRjaC4gIEkgbWFudWFsbHkgZWRpdGVkIHRoZSBjaGFuZ2Vz IGluIHNvIEkgY291bGQgYnVpbGQgYW5kDQo+IHRlc3QsIGJ1dCBJJ20gdW5zdXJlIGlmIHNv bWV0aGluZyBtaWdodCBiZSBtaXNzaW5nLg0KDQpXZWlyZC4gSSBjaGFuZ2VkIGEgdHlwbyBp biB0aGUgcGF0Y2ggZmlsZSBpdHNlbGYsIG1heWJlIEkgZGlkIHNvbWUgb3RoZXINCm1vZGlm aWNhdGlvbiB3aXRob3V0IG5vdGljaW5nIGl0LiBXaWxsIHJlc2VuZC4NCg0KPiANCj4+IHVu c2lnbmVkIGludCBudW1fdmFyLA0KPj4gICAgKiBNVFJSX1RZUEVfSU5WQUxJRCAtIE1UUlIg aXMgZGlzYWJsZWQNCj4+ICAgICoNCj4+ICAgICogT3V0cHV0IEFyZ3VtZW50Og0KPj4gLSAq IHVuaWZvcm0gLSBTZXQgdG8gMSB3aGVuIGFuIE1UUlIgY292ZXJzIHRoZSByZWdpb24gdW5p Zm9ybWx5LCBpLmUuIHRoZQ0KPj4gLSAqCSAgICAgcmVnaW9uIGlzIGZ1bGx5IGNvdmVyZWQg YnkgYSBzaW5nbGUgTVRSUiBlbnRyeSBvciB0aGUgZGVmYXVsdA0KPj4gLSAqCSAgICAgdHlw ZS4NCj4+ICsgKiB1bmlmb3JtIC0gU2V0IHRvIDEgd2hlbiB0aGUgcmV0dXJuZWQgTVRSUiB0 eXBlIGlzIHZhbGlkIGZvciB0aGUgd2hvbGUNCj4+ICsgKgkgICAgIHJlZ2lvbiwgc2V0IHRv IDAgZWxzZS4NCj4+ICAgICovDQo+PiAgIHU4IG10cnJfdHlwZV9sb29rdXAodTY0IHN0YXJ0 LCB1NjQgZW5kLCB1OCAqdW5pZm9ybSkNCj4+ICAgew0KPj4gLQl1OCB0eXBlLCBwcmV2X3R5 cGUsIGlzX3VuaWZvcm0gPSAxLCBkdW1teTsNCj4+IC0JaW50IHJlcGVhdDsNCj4+IC0JdTY0 IHBhcnRpYWxfZW5kOw0KPj4gLQ0KPj4gLQkvKiBNYWtlIGVuZCBpbmNsdXNpdmUgaW5zdGVh ZCBvZiBleGNsdXNpdmUgKi8NCj4+IC0JZW5kLS07DQo+PiArCXU4IHR5cGUgPSBNVFJSX1RZ UEVfSU5WQUxJRDsNCj4+ICsJdW5zaWduZWQgaW50IGk7DQo+Pg0KPj4gLQlpZiAoIW10cnJf c3RhdGVfc2V0KQ0KPj4gKwlpZiAoIW10cnJfc3RhdGVfc2V0IHx8ICFjYWNoZV9tYXApIHsN Cj4+ICsJCSp1bmlmb3JtID0gMDsJLyogVW5pZm9ybWl0eSBpcyB1bmtub3duLiAqLw0KPj4g ICAJCXJldHVybiBNVFJSX1RZUEVfSU5WQUxJRDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwkqdW5p Zm9ybSA9IDE7DQo+Pg0KPj4gICAJaWYgKCEobXRycl9zdGF0ZS5lbmFibGVkICYgTVRSUl9T VEFURV9NVFJSX0VOQUJMRUQpKQ0KPj4gICAJCXJldHVybiBNVFJSX1RZUEVfSU5WQUxJRDsN Cj4+DQo+PiAtCS8qDQo+PiAtCSAqIExvb2sgdXAgdGhlIGZpeGVkIHJhbmdlcyBmaXJzdCwg d2hpY2ggdGFrZSBwcmlvcml0eSBvdmVyDQo+PiAtCSAqIHRoZSB2YXJpYWJsZSByYW5nZXMu DQo+PiAtCSAqLw0KPj4gLQlpZiAoKHN0YXJ0IDwgMHgxMDAwMDApICYmDQo+PiAtCSAgICAo bXRycl9zdGF0ZS5oYXZlX2ZpeGVkKSAmJg0KPj4gLQkgICAgKG10cnJfc3RhdGUuZW5hYmxl ZCAmIE1UUlJfU1RBVEVfTVRSUl9GSVhFRF9FTkFCTEVEKSkgew0KPj4gLQkJaXNfdW5pZm9y bSA9IDA7DQo+PiAtCQl0eXBlID0gbXRycl90eXBlX2xvb2t1cF9maXhlZChzdGFydCwgZW5k KTsNCj4+IC0JCWdvdG8gb3V0Ow0KPj4gLQl9DQo+PiAtDQo+PiAtCS8qDQo+PiAtCSAqIExv b2sgdXAgdGhlIHZhcmlhYmxlIHJhbmdlcy4gIExvb2sgb2YgbXVsdGlwbGUgcmFuZ2VzIG1h dGNoaW5nDQo+PiAtCSAqIHRoaXMgYWRkcmVzcyBhbmQgcGljayB0eXBlIGFzIHBlciBNVFJS IHByZWNlZGVuY2UuDQo+PiAtCSAqLw0KPj4gLQl0eXBlID0gbXRycl90eXBlX2xvb2t1cF92 YXJpYWJsZShzdGFydCwgZW5kLCAmcGFydGlhbF9lbmQsDQo+PiAtCQkJCQkgJnJlcGVhdCwg JmlzX3VuaWZvcm0pOw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgY2FjaGVfbWFwX24gJiYgc3Rh cnQgPCBlbmQ7IGkrKykgew0KPj4gKwkJaWYgKHN0YXJ0ID49IGNhY2hlX21hcFtpXS5lbmQp DQo+PiArCQkJY29udGludWU7DQo+PiArCQlpZiAoc3RhcnQgPCBjYWNoZV9tYXBbaV0uc3Rh cnQpDQo+PiArCQkJdHlwZSA9IHR5cGVfbWVyZ2UodHlwZSwgbXRycl9zdGF0ZS5kZWZfdHlw ZSwgdW5pZm9ybSk7DQo+PiArCQl0eXBlID0gdHlwZV9tZXJnZSh0eXBlLCBjYWNoZV9tYXBb aV0udHlwZSwgdW5pZm9ybSk7DQo+IA0KPiBUaGlzIGRldGVybWluYXRpb24gb2YgdGhlIHR5 cGUgaXNuJ3Qgd29ya2luZyBmb3IgbWUgaW4gYSBub3JtYWwgVk0gKCpub3QqDQo+IFNFVi1T TlApIHRoYXQgaGFzIE1UUlJzIGFuZCBwcm9kdWNlcyBhIHJlYXNvbmFibGUgY2FjaGVfbWFw LiAgVGhlDQo+IGNhY2hlX21hcCBjb250ZW50cyBhcmUgdGhpczoNCj4gDQo+IFsgICAgMC4w MjcyMTRdIG10cnIgbWFwIDA6IHN0YXJ0IDAgZW5kIGEwMDAwIHR5cGUgNiBmaXhlZCAxDQo+ IFsgICAgMC4wMzM3MTBdIG10cnIgbWFwIDE6IHN0YXJ0IGEwMDAwIGVuZCAxMDAwMDAgdHlw ZSAwIGZpeGVkIDENCj4gWyAgICAwLjA0MDk1OF0gbXRyciBtYXAgMjogc3RhcnQgMTAwMDAw IGVuZCAxMTAwMDAwMDAwIHR5cGUgNiBmaXhlZCAwDQo+IA0KPiBUaGUgbG9va3VwIGlzIGRv bmUgZm9yIHN0YXJ0ID0gZjdmZjgwMDAgYW5kIGVuZCA9IGY3ZmY5MDAwLiAgIGNhY2hlX21h cA0KPiBlbnRyaWVzIDAgYW5kIDEgdGFrZSB0aGUgImNvbnRpbnVlIiBwYXRoIGFzIGV4cGVj dGVkLiAgY2FjaGVfbWFwIGVudHJ5DQo+IDIgbWF0Y2hlcywgc28gdHlwZV9tZXJnZSBpcyBj YWxsZWQgd2l0aCB0eXBlID0gTVRSUl9UWVBFX0lOVkFMSUQgYW5kDQo+IGNhY2hlX21hcFtp XS50eXBlIGlzIDYgKE1UUlJfVFlQRV9XUklURUJBQ0spLiAgIEJ1dCB0eXBlX21lcmdlKCkN Cj4gcmV0dXJucyBNVFJSX1RZUEVfVU5DQUNIQUJMRSBiZWNhdXNlIGdldF9lZmZlY3RpdmVf dHlwZSgpIGZpbmRzDQo+IHR5cGUxICE9IHR5cGUyLg0KPiANCj4gSSBkb24ndCBmdWxseSBo YXZlIG15IGhlYWQgd3JhcHBlZCBhcm91bmQgeW91ciBuZXcgY29kZSwgc28gSSdtIGp1c3QN Cj4gcG9pbnRpbmcgb3V0IHRoZSBwcm9ibGVtLCBub3QgdGhlIHNvbHV0aW9uLiA6LSggICBP ciBtYXliZSB0aGlzIHByb2JsZW0NCj4gaXMgZHVlIHRvIHRoZSBwYXRjaCBpdHNlbGYgYmVp bmcgbWFsZm9ybWVkIGFzIG1lbnRpb25lZCBhYm92ZS4NCg0KT2gsIHdoYXQgYSBzaWxseSBi dWcuIFRoYW5rcyBmb3IgdGhlIGFuYWx5c2lzIQ0KDQoNCkp1ZXJnZW4NCg== --------------dkSEqcM0tVyownhSwl6Eza2r Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc" Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- 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 jR/i1DG86lem3iBDXzXsZDn8R38=3D =3D2wuH -----END PGP PUBLIC KEY BLOCK----- --------------dkSEqcM0tVyownhSwl6Eza2r-- --------------Fh4QDdnw5ozCsplexJL0Z4kQ-- --------------0QVQPYHhjZlK0pCIM6ViPzKV Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmP4T8UFAwAAAAAACgkQsN6d1ii/Ey+C fwf9F3duTLfp8Om3vfZax0RsRJ50S/fJ4VDRYQo8Z3y1+PwY+PrhwLvZe9soR/7A70L0R54Jozdj um0uMvwB2dSVP/kUuSUXbkgcthInTC09BmDMkdTgIQndqKkX9K3LST6rTz332KcHzwXQ8LSKAVXO jtEQJ/EM0DywPzGq84hYXyJ0UlSvdIoHV48+vXoMcwX++EmOCzI9rnj7ElRHDJygDkjV54FeWQ/k UyhgizcqKtt9Eb5jYEkIlBN51tn5qbnbKeotZGGf6h0bY+OSwueBseX9703axN+DL0rkeMffn+KI ZVGFPDe+Kwg5Kzz0DMFVdUC0p3klTAXMsBpewkXcCg== =WdXN -----END PGP SIGNATURE----- --------------0QVQPYHhjZlK0pCIM6ViPzKV--