Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp4389792rwb; Mon, 31 Jul 2023 06:17:41 -0700 (PDT) X-Google-Smtp-Source: APBJJlE7R1aeEhiIZkEmyO/3QUeQVpj5DY7G41kr2Za9ap0ggHz/dw25U+/CcUGC+XtEeCC8vi51 X-Received: by 2002:a05:6a21:4843:b0:135:4388:3978 with SMTP id au3-20020a056a21484300b0013543883978mr9663099pzc.29.1690809460844; Mon, 31 Jul 2023 06:17:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690809460; cv=none; d=google.com; s=arc-20160816; b=dxuRyf+opFm72/AnyWcVZSPp44XSIzaQ9o0DFGtFjouIwTBmOl8+X07eQd5hcfZItk kjffOOPHpgUiUuInUIWgy1JCkWHi7xNp9elRK0rH1cWFOoUEGd+iZTW3h2d3EPCN0SHe PWWVDnXeXpvNwNOpXKjWbpQEf2SUCOKYkS1oF/L7SH8fKrdRBUlhq5cqq9/SuR7XQ4X7 djOHH2b8d6p9HdNoRReDlfLdSTWsv6AVBm4E7JQEJ7RvJ1VhFcEyDLRGVWVHxOIuspYR elfhbLEoiBfrYu0ff3Q3uNBeriITKL9Vtd9K+W8F+Q8qconglzWF6oaht1+6c4wVLRO4 6vag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature; bh=BPCw/tNFp3IXCCVD440sDB95uN3tPvNtD3skJiiZ8eY=; fh=7lzeOmTeoHq05SA5Mq9R0vtvikIJ7JShlau3ETITXDw=; b=p+wySFVFtKZMmb0kTtv9fc3SlUm/oz4m0hd0EgxjOhm70UMv2kiQfkM88WC3TuSzXU SLbXEP6zO4sK/850TCZ7sq8ItUXwAhwI7SsKlsDj2jnbkZxpBR5+EDx7Pd7FCbP4brrv AePfloJNLrFEWcADv+T7y/Bvn9MBp3W+Wzqw/JgH46pUqolxPvJfza4YR5rBwUSnRyu9 BzViUEG/QyaFAl7PpKo93Kv0sQ+yUCpP5Nys62Wr8JloKiBiPKzbEptIOv7rb7r1UjEH 0V0rtOYCzm+qE8Hu2JFebe7Cv50aFEDXIPHFYt9hdRvoc+JkNwsXWGpjh75B2OrF7Tp4 qLWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=WWDhPOoz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s38-20020a056a0017a600b0065b4e2b52c5si7448289pfg.196.2023.07.31.06.17.26; Mon, 31 Jul 2023 06:17:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=WWDhPOoz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230511AbjGaLb4 (ORCPT + 99 others); Mon, 31 Jul 2023 07:31:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230141AbjGaLbz (ORCPT ); Mon, 31 Jul 2023 07:31:55 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1AD05BF for ; Mon, 31 Jul 2023 04:31:51 -0700 (PDT) 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-out2.suse.de (Postfix) with ESMTPS id BF93A1F385; Mon, 31 Jul 2023 11:31:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1690803109; 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=BPCw/tNFp3IXCCVD440sDB95uN3tPvNtD3skJiiZ8eY=; b=WWDhPOozAdM8K5AW1wsec7CH3TvPsF04xN4GlEh19OnrwCcZH4+9grWa5FCGOvaDAOredV /9FmAefZCpEjOjuM5JkcLBQgB5R4iSdtLVflIKPTx69ZwZvn9R4udl1L+XdOGRU0gDfBSs rLhLy3BUab+GbQajAWZXRI4/S+y6qR4= 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 637021322C; Mon, 31 Jul 2023 11:31:49 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 2ft6FqWbx2RdfAAAMHmgww (envelope-from ); Mon, 31 Jul 2023 11:31:49 +0000 Message-ID: Date: Mon, 31 Jul 2023 13:31:48 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [patch V2 50/58] x86/apic: Provide common init infrastructure Content-Language: en-US To: Thomas Gleixner , LKML Cc: x86@kernel.org, Andrew Cooper , Tom Lendacky , Paolo Bonzini , Wei Liu , Arjan van de Ven , Michael Kelley , Peter Keresztes Schmidt , "Peter Zijlstra (Intel)" References: <20230724131206.500814398@linutronix.de> <20230724132047.554355840@linutronix.de> From: Juergen Gross In-Reply-To: <20230724132047.554355840@linutronix.de> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------zRcCqpEEv1XcDsK0peI8u0Ic" X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------zRcCqpEEv1XcDsK0peI8u0Ic Content-Type: multipart/mixed; boundary="------------ve93GyoAqquMSQXc04H06Hq9"; protected-headers="v1" From: Juergen Gross To: Thomas Gleixner , LKML Cc: x86@kernel.org, Andrew Cooper , Tom Lendacky , Paolo Bonzini , Wei Liu , Arjan van de Ven , Michael Kelley , Peter Keresztes Schmidt , "Peter Zijlstra (Intel)" Message-ID: Subject: Re: [patch V2 50/58] x86/apic: Provide common init infrastructure References: <20230724131206.500814398@linutronix.de> <20230724132047.554355840@linutronix.de> In-Reply-To: <20230724132047.554355840@linutronix.de> --------------ve93GyoAqquMSQXc04H06Hq9 Content-Type: multipart/mixed; boundary="------------PJVIcMB65aGxVFlIo2zz5xTq" --------------PJVIcMB65aGxVFlIo2zz5xTq Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 T24gMjQuMDcuMjMgMTU6MzUsIFRob21hcyBHbGVpeG5lciB3cm90ZToNCj4gSW4gcHJlcGFy YXRpb24gZm9yIGNvbnZlcnRpbmcgdGhlIGhvdHBhdGggQVBJQyBjYWxsYmFja3MgdG8gc3Rh dGljIGtleXMsDQo+IHByb3ZpZGUgY29tbW9uIGluaXRpYWxpemF0aW9uIGluZm9yYXN0cnVj dHVyZS4NCj4gDQo+IExpZnQgYXBpY19pbnN0YWxsX2RyaXZlcnMoKSBmcm9tIHByb2JlXzY0 LmMgYW5kIGNvbnZlcnQgYWxsIHBsYWNlcyB3aGljaA0KPiBzd2l0Y2ggdGhlIGFwaWMgaW5z dGFuY2UgYnkgc3RvcmluZyB0aGUgcG9pbnRlciB0byB1c2UgYXBpY19pbnN0YWxsX2RyaXZl cigpDQo+IGFzIGEgZmlyc3Qgc3RlcC4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFRob21hcyBH bGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPg0KPiBBY2tlZC1ieTogUGV0ZXIgWmlqbHN0 cmEgKEludGVsKSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+DQo+IC0tLQ0KPiAgIGFyY2gveDg2 L2luY2x1ZGUvYXNtL2FwaWMuaCAgICAgICAgIHwgICAgMiArDQo+ICAgYXJjaC94ODYva2Vy bmVsL2FwaWMvTWFrZWZpbGUgICAgICAgfCAgICAyIC0NCj4gICBhcmNoL3g4Ni9rZXJuZWwv YXBpYy9hcGljLmMgICAgICAgICB8ICAgMzEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4g ICBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljX2ZsYXRfNjQuYyB8ICAgIDYgLS0tLQ0KPiAg IGFyY2gveDg2L2tlcm5lbC9hcGljL2JpZ3NtcF8zMi5jICAgIHwgICAgNiArLS0tDQo+ICAg YXJjaC94ODYva2VybmVsL2FwaWMvaW5pdC5jICAgICAgICAgfCAgIDQ3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAgIGFyY2gveDg2L2tlcm5lbC9hcGljL3By b2JlXzMyLmMgICAgIHwgICAgNSArLS0NCj4gICBhcmNoL3g4Ni9rZXJuZWwvYXBpYy9wcm9i ZV82NC5jICAgICB8ICAgMTMgLS0tLS0tLS0tDQo+ICAgYXJjaC94ODYveGVuL2FwaWMuYyAg ICAgICAgICAgICAgICAgfCAgIDEwICsrLS0tLS0NCj4gICA5IGZpbGVzIGNoYW5nZWQsIDU5 IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQ0KPiANCj4gLS0tIGEvYXJjaC94ODYv aW5jbHVkZS9hc20vYXBpYy5oDQo+ICsrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2FwaWMu aA0KPiBAQCAtMzQ0LDYgKzM0NCw4IEBAIGV4dGVybiBpbnQgbGFwaWNfY2FuX3VucGx1Z19j cHUodm9pZCk7DQo+ICAgDQo+ICAgI2lmZGVmIENPTkZJR19YODZfTE9DQUxfQVBJQw0KPiAg IA0KPiArdm9pZCBfX2luaXQgYXBpY19pbnN0YWxsX2RyaXZlcihzdHJ1Y3QgYXBpYyAqZHJp dmVyKTsNCj4gKw0KPiAgIHN0YXRpYyBpbmxpbmUgdTMyIGFwaWNfcmVhZCh1MzIgcmVnKQ0K PiAgIHsNCj4gICAJcmV0dXJuIGFwaWMtPnJlYWQocmVnKTsNCj4gLS0tIGEvYXJjaC94ODYv a2VybmVsL2FwaWMvTWFrZWZpbGUNCj4gKysrIGIvYXJjaC94ODYva2VybmVsL2FwaWMvTWFr ZWZpbGUNCj4gQEAgLTcsNyArNyw3IEBADQo+ICAgIyBJbiBwYXJ0aWN1YWxyLCBzbXBfYXBp Y190aW1lcl9pbnRlcnJ1cHQoKSBpcyBjYWxsZWQgaW4gcmFuZG9tIHBsYWNlcy4NCj4gICBL Q09WX0lOU1RSVU1FTlQJCTo9IG4NCj4gICANCj4gLW9iai0kKENPTkZJR19YODZfTE9DQUxf QVBJQykJKz0gYXBpYy5vIGFwaWNfY29tbW9uLm8gYXBpY19ub29wLm8gaXBpLm8gdmVjdG9y Lm8NCj4gK29iai0kKENPTkZJR19YODZfTE9DQUxfQVBJQykJKz0gYXBpYy5vIGFwaWNfY29t bW9uLm8gYXBpY19ub29wLm8gaXBpLm8gdmVjdG9yLm8gaW5pdC5vDQo+ICAgb2JqLXkJCQkJ Kz0gaHdfbm1pLm8NCj4gICANCj4gICBvYmotJChDT05GSUdfWDg2X0lPX0FQSUMpCSs9IGlv X2FwaWMubw0KPiAtLS0gYS9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9hcGljLmMNCj4gKysrIGIv YXJjaC94ODYva2VybmVsL2FwaWMvYXBpYy5jDQo+IEBAIC0yMzYsOCArMjM2LDcgQEAgc3Rh dGljIGludCBtb2Rlcm5fYXBpYyh2b2lkKQ0KPiAgICAqLw0KPiAgIHN0YXRpYyB2b2lkIF9f aW5pdCBhcGljX2Rpc2FibGUodm9pZCkNCj4gICB7DQo+IC0JcHJfaW5mbygiQVBJQzogc3dp dGNoZWQgdG8gYXBpYyBOT09QXG4iKTsNCj4gLQlhcGljID0gJmFwaWNfbm9vcDsNCj4gKwlh cGljX2luc3RhbGxfZHJpdmVyKCZhcGljX25vb3ApOw0KPiAgIH0NCj4gICANCj4gICB2b2lk IG5hdGl2ZV9hcGljX2ljcl93cml0ZSh1MzIgbG93LCB1MzIgaWQpDQo+IEBAIC0yNDg2LDM0 ICsyNDg1LDYgQEAgdTMyIHg4Nl9tc2lfbXNnX2dldF9kZXN0aWQoc3RydWN0IG1zaV9tcw0K PiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MX0dQTCh4ODZfbXNpX21zZ19nZXRfZGVzdGlkKTsN Cj4gICANCj4gLSNpZmRlZiBDT05GSUdfWDg2XzY0DQo+IC12b2lkIF9faW5pdCBhY3BpX3dh a2VfY3B1X2hhbmRsZXJfdXBkYXRlKHdha2V1cF9jcHVfaGFuZGxlciBoYW5kbGVyKQ0KPiAt ew0KPiAtCXN0cnVjdCBhcGljICoqZHJ2Ow0KPiAtDQo+IC0JZm9yIChkcnYgPSBfX2FwaWNk cml2ZXJzOyBkcnYgPCBfX2FwaWNkcml2ZXJzX2VuZDsgZHJ2KyspDQo+IC0JCSgqZHJ2KS0+ d2FrZXVwX3NlY29uZGFyeV9jcHVfNjQgPSBoYW5kbGVyOw0KPiAtfQ0KPiAtI2VuZGlmDQo+ IC0NCj4gLS8qDQo+IC0gKiBPdmVycmlkZSB0aGUgZ2VuZXJpYyBFT0kgaW1wbGVtZW50YXRp b24gd2l0aCBhbiBvcHRpbWl6ZWQgdmVyc2lvbi4NCj4gLSAqIE9ubHkgY2FsbGVkIGR1cmlu ZyBlYXJseSBib290IHdoZW4gb25seSBvbmUgQ1BVIGlzIGFjdGl2ZSBhbmQgd2l0aA0KPiAt ICogaW50ZXJydXB0cyBkaXNhYmxlZCwgc28gd2Uga25vdyB0aGlzIGRvZXMgbm90IHJhY2Ug d2l0aCBhY3R1YWwgQVBJQyBkcml2ZXINCj4gLSAqIHVzZS4NCj4gLSAqLw0KPiAtdm9pZCBf X2luaXQgYXBpY19zZXRfZW9pX2NiKHZvaWQgKCplb2kpKHZvaWQpKQ0KPiAtew0KPiAtCXN0 cnVjdCBhcGljICoqZHJ2Ow0KPiAtDQo+IC0JZm9yIChkcnYgPSBfX2FwaWNkcml2ZXJzOyBk cnYgPCBfX2FwaWNkcml2ZXJzX2VuZDsgZHJ2KyspIHsNCj4gLQkJLyogU2hvdWxkIGhhcHBl biBvbmNlIGZvciBlYWNoIGFwaWMgKi8NCj4gLQkJV0FSTl9PTigoKmRydiktPmVvaSA9PSBl b2kpOw0KPiAtCQkoKmRydiktPm5hdGl2ZV9lb2kgPSAoKmRydiktPmVvaTsNCj4gLQkJKCpk cnYpLT5lb2kgPSBlb2k7DQo+IC0JfQ0KPiAtfQ0KPiAtDQo+ICAgc3RhdGljIHZvaWQgX19p bml0IGFwaWNfYnNwX3VwX3NldHVwKHZvaWQpDQo+ICAgew0KPiAgICNpZmRlZiBDT05GSUdf WDg2XzY0DQo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL2FwaWNfZmxhdF82NC5jDQo+ ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL2FwaWNfZmxhdF82NC5jDQo+IEBAIC0xNDMs MTEgKzE0Myw3IEBAIHN0YXRpYyBpbnQgcGh5c2ZsYXRfYWNwaV9tYWR0X29lbV9jaGVjaygN Cj4gICANCj4gICBzdGF0aWMgaW50IHBoeXNmbGF0X3Byb2JlKHZvaWQpDQo+ICAgew0KPiAt CWlmIChhcGljID09ICZhcGljX3BoeXNmbGF0IHx8IG51bV9wb3NzaWJsZV9jcHVzKCkgPiA4 IHx8DQo+IC0JICAgIGphaWxob3VzZV9wYXJhdmlydCgpKQ0KPiAtCQlyZXR1cm4gMTsNCj4g LQ0KPiAtCXJldHVybiAwOw0KPiArCXJldHVybiBhcGljID09ICZhcGljX3BoeXNmbGF0IHx8 IG51bV9wb3NzaWJsZV9jcHVzKCkgPiA4IHx8IGphaWxob3VzZV9wYXJhdmlydCgpOw0KPiAg IH0NCj4gICANCj4gICBzdGF0aWMgc3RydWN0IGFwaWMgYXBpY19waHlzZmxhdCBfX3JvX2Fm dGVyX2luaXQgPSB7DQo+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9hcGljL2JpZ3NtcF8zMi5j DQo+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9hcGljL2JpZ3NtcF8zMi5jDQo+IEBAIC0xMTks MTAgKzExOSw4IEBAIGJvb2wgX19pbml0IGFwaWNfYmlnc21wX3Bvc3NpYmxlKGJvb2wgY20N Cj4gICANCj4gICB2b2lkIF9faW5pdCBhcGljX2JpZ3NtcF9mb3JjZSh2b2lkKQ0KPiAgIHsN Cj4gLQlpZiAoYXBpYyAhPSAmYXBpY19iaWdzbXApIHsNCj4gLQkJYXBpYyA9ICZhcGljX2Jp Z3NtcDsNCj4gLQkJcHJfaW5mbygiT3ZlcnJpZGluZyBBUElDIGRyaXZlciB3aXRoIGJpZ3Nt cFxuIik7DQo+IC0JfQ0KPiArCWlmIChhcGljICE9ICZhcGljX2JpZ3NtcCkNCj4gKwkJYXBp Y19pbnN0YWxsX2RyaXZlcigmYXBpY19iaWdzbXApOw0KPiAgIH0NCj4gICANCj4gICBhcGlj X2RyaXZlcihhcGljX2JpZ3NtcCk7DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvYXJjaC94 ODYva2VybmVsL2FwaWMvaW5pdC5jDQo+IEBAIC0wLDAgKzEsNDcgQEANCj4gKy8vIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gKyNkZWZpbmUgcHJfZm10KGZt dCkgIkFQSUM6ICIgZm10DQo+ICsNCj4gKyNpbmNsdWRlIDxhc20vYXBpYy5oPg0KPiArDQo+ ICsjaW5jbHVkZSAibG9jYWwuaCINCj4gKw0KPiArdm9pZCBfX2luaXQgYXBpY19pbnN0YWxs X2RyaXZlcihzdHJ1Y3QgYXBpYyAqZHJpdmVyKQ0KPiArew0KPiArCWlmIChhcGljID09IGRy aXZlcikNCj4gKwkJcmV0dXJuOw0KPiArDQo+ICsJYXBpYyA9IGRyaXZlcjsNCj4gKw0KPiAr CWlmIChJU19FTkFCTEVEKENPTkZJR19YODZfWDJBUElDKSAmJiBhcGljLT54MmFwaWNfc2V0 X21heF9hcGljaWQpDQo+ICsJCWFwaWMtPm1heF9hcGljX2lkID0geDJhcGljX21heF9hcGlj aWQ7DQo+ICsNCj4gKwlwcl9pbmZvKCJTd2l0Y2hlZCBBUElDIHJvdXRpbmcgdG86ICVzXG4i LCBkcml2ZXItPm5hbWUpOw0KPiArfQ0KPiArDQo+ICsjaWZkZWYgQ09ORklHX1g4Nl82NA0K PiArdm9pZCBfX2luaXQgYWNwaV93YWtlX2NwdV9oYW5kbGVyX3VwZGF0ZSh3YWtldXBfY3B1 X2hhbmRsZXIgaGFuZGxlcikNCj4gK3sNCj4gKwlzdHJ1Y3QgYXBpYyAqKmRydjsNCj4gKw0K PiArCWZvciAoZHJ2ID0gX19hcGljZHJpdmVyczsgZHJ2IDwgX19hcGljZHJpdmVyc19lbmQ7 IGRydisrKQ0KPiArCQkoKmRydiktPndha2V1cF9zZWNvbmRhcnlfY3B1XzY0ID0gaGFuZGxl cjsNCj4gK30NCj4gKyNlbmRpZg0KPiArDQo+ICsvKg0KPiArICogT3ZlcnJpZGUgdGhlIGdl bmVyaWMgRU9JIGltcGxlbWVudGF0aW9uIHdpdGggYW4gb3B0aW1pemVkIHZlcnNpb24uDQo+ ICsgKiBPbmx5IGNhbGxlZCBkdXJpbmcgZWFybHkgYm9vdCB3aGVuIG9ubHkgb25lIENQVSBp cyBhY3RpdmUgYW5kIHdpdGgNCj4gKyAqIGludGVycnVwdHMgZGlzYWJsZWQsIHNvIHdlIGtu b3cgdGhpcyBkb2VzIG5vdCByYWNlIHdpdGggYWN0dWFsIEFQSUMgZHJpdmVyDQo+ICsgKiB1 c2UuDQo+ICsgKi8NCj4gK3ZvaWQgX19pbml0IGFwaWNfc2V0X2VvaV9jYih2b2lkICgqZW9p KSh2b2lkKSkNCj4gK3sNCj4gKwlzdHJ1Y3QgYXBpYyAqKmRydjsNCj4gKw0KPiArCWZvciAo ZHJ2ID0gX19hcGljZHJpdmVyczsgZHJ2IDwgX19hcGljZHJpdmVyc19lbmQ7IGRydisrKSB7 DQo+ICsJCS8qIFNob3VsZCBoYXBwZW4gb25jZSBmb3IgZWFjaCBhcGljICovDQo+ICsJCVdB Uk5fT04oKCpkcnYpLT5lb2kgPT0gZW9pKTsNCj4gKwkJKCpkcnYpLT5uYXRpdmVfZW9pID0g KCpkcnYpLT5lb2k7DQo+ICsJCSgqZHJ2KS0+ZW9pID0gZW9pOw0KPiArCX0NCj4gK30NCj4g LS0tIGEvYXJjaC94ODYva2VybmVsL2FwaWMvcHJvYmVfMzIuYw0KPiArKysgYi9hcmNoL3g4 Ni9rZXJuZWwvYXBpYy9wcm9iZV8zMi5jDQo+IEBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBp bnQgX19pbml0IHBhcnNlX2FwaWMoY2hhciAqYXJnKQ0KPiAgIA0KPiAgIAlmb3IgKGRydiA9 IF9fYXBpY2RyaXZlcnM7IGRydiA8IF9fYXBpY2RyaXZlcnNfZW5kOyBkcnYrKykgew0KPiAg IAkJaWYgKCFzdHJjbXAoKCpkcnYpLT5uYW1lLCBhcmcpKSB7DQo+IC0JCQlhcGljID0gKmRy djsNCj4gKwkJCWFwaWNfaW5zdGFsbF9kcml2ZXIoKmRydik7DQo+ICAgCQkJY21kbGluZV9h cGljID0gMTsNCj4gICAJCQlyZXR1cm4gMDsNCj4gICAJCX0NCj4gQEAgLTEyOSw3ICsxMjks NyBAQCB2b2lkIF9faW5pdCB4ODZfMzJfcHJvYmVfYXBpYyh2b2lkKQ0KPiAgIA0KPiAgIAkJ Zm9yIChkcnYgPSBfX2FwaWNkcml2ZXJzOyBkcnYgPCBfX2FwaWNkcml2ZXJzX2VuZDsgZHJ2 KyspIHsNCj4gICAJCQlpZiAoKCpkcnYpLT5wcm9iZSgpKSB7DQo+IC0JCQkJYXBpYyA9ICpk cnY7DQo+ICsJCQkJYXBpY19pbnN0YWxsX2RyaXZlcigqZHJ2KTsNCj4gICAJCQkJYnJlYWs7 DQo+ICAgCQkJfQ0KPiAgIAkJfQ0KPiBAQCAtMTM3LDUgKzEzNyw0IEBAIHZvaWQgX19pbml0 IHg4Nl8zMl9wcm9iZV9hcGljKHZvaWQpDQo+ICAgCQlpZiAoZHJ2ID09IF9fYXBpY2RyaXZl cnNfZW5kKQ0KPiAgIAkJCXBhbmljKCJEaWRuJ3QgZmluZCBhbiBBUElDIGRyaXZlciIpOw0K PiAgIAl9DQo+IC0JcHJpbnRrKEtFUk5fSU5GTyAiVXNpbmcgQVBJQyBkcml2ZXIgJXNcbiIs IGFwaWMtPm5hbWUpOw0KPiAgIH0NCj4gLS0tIGEvYXJjaC94ODYva2VybmVsL2FwaWMvcHJv YmVfNjQuYw0KPiArKysgYi9hcmNoL3g4Ni9rZXJuZWwvYXBpYy9wcm9iZV82NC5jDQo+IEBA IC0xMywxOSArMTMsNiBAQA0KPiAgIA0KPiAgICNpbmNsdWRlICJsb2NhbC5oIg0KPiAgIA0K PiAtc3RhdGljIF9faW5pdCB2b2lkIGFwaWNfaW5zdGFsbF9kcml2ZXIoc3RydWN0IGFwaWMg KmRyaXZlcikNCj4gLXsNCj4gLQlpZiAoYXBpYyA9PSBkcml2ZXIpDQo+IC0JCXJldHVybjsN Cj4gLQ0KPiAtCWFwaWMgPSBkcml2ZXI7DQo+IC0NCj4gLQlpZiAoSVNfRU5BQkxFRChDT05G SUdfWDg2X1gyQVBJQykgJiYgYXBpYy0+eDJhcGljX3NldF9tYXhfYXBpY2lkKQ0KPiAtCQlh cGljLT5tYXhfYXBpY19pZCA9IHgyYXBpY19tYXhfYXBpY2lkOw0KPiAtDQo+IC0JcHJfaW5m bygiU3dpdGNoZWQgQVBJQyByb3V0aW5nIHRvICVzOlxuIiwgYXBpYy0+bmFtZSk7DQo+IC19 DQo+IC0NCj4gICAvKiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIEFQSUMgZHJpdmVyICovDQo+ ICAgdm9pZCBfX2luaXQgeDg2XzY0X3Byb2JlX2FwaWModm9pZCkNCj4gICB7DQo+IC0tLSBh L2FyY2gveDg2L3hlbi9hcGljLmMNCj4gKysrIGIvYXJjaC94ODYveGVuL2FwaWMuYw0KPiBA QCAtMTYwLDIwICsxNjAsMTYgQEAgc3RhdGljIHN0cnVjdCBhcGljIHhlbl9wdl9hcGljID0g ew0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIF9faW5pdCB4ZW5fYXBpY19jaGVjayh2b2lkKQ0K PiAgIHsNCj4gLQlpZiAoYXBpYyA9PSAmeGVuX3B2X2FwaWMpDQo+IC0JCXJldHVybjsNCj4g LQ0KPiAtCXByX2luZm8oIlN3aXRjaGVkIEFQSUMgcm91dGluZyBmcm9tICVzIHRvICVzLlxu IiwgYXBpYy0+bmFtZSwNCj4gLQkJeGVuX3B2X2FwaWMubmFtZSk7DQo+IC0JYXBpYyA9ICZ4 ZW5fcHZfYXBpYzsNCj4gKwlhcGljX2luc3RhbGxfZHJpdmVyKCZ4ZW5fcHZfYXBpYyk7DQo+ ICAgfQ0KPiArDQo+ICAgdm9pZCBfX2luaXQgeGVuX2luaXRfYXBpYyh2b2lkKQ0KPiAgIHsN Cj4gICAJeDg2X2FwaWNfb3BzLmlvX2FwaWNfcmVhZCA9IHhlbl9pb19hcGljX3JlYWQ7DQo+ ICAgCS8qIE9uIFBWIGd1ZXN0cyB0aGUgQVBJQyBDUFVJRCBiaXQgaXMgZGlzYWJsZWQgc28g bm9uZSBvZiB0aGUNCj4gICAJICogcm91dGluZXMgZW5kIHVwIGV4ZWN1dGluZy4gKi8NCj4g ICAJaWYgKCF4ZW5faW5pdGlhbF9kb21haW4oKSkNCj4gLQkJYXBpYyA9ICZ4ZW5fcHZfYXBp YzsNCj4gKwkJYXBpY19pbnN0YWxsX2RyaXZlcigmeGVuX3B2X2FwaWMpOw0KDQpUaGlzIGlz IHdvcmtpbmcsIGJ1dCBpdCBwcm9kdWNlcyBhIFdBUk4oKSBzcGxhdCB3aGVuIGJvb3Rpbmcg YXMgYW4gdW5wcml2aWxlZ2VkDQpYZW4gUFYgZ3Vlc3QgZnJvbSBzdGF0aWNfY2FsbCBwYXRj aGluZyAoc3RhdGljX2NhbGxfaW5pdCgpIGhhc24ndCBiZWVuIGNhbGxlZA0KeWV0KS4NCg0K VGhlIGRpZmYgYmVsb3cgb24gdG9wIGlzIGZpeGluZyB0aGUgaXNzdWU6DQoNCmRpZmYgLS1n aXQgYS9hcmNoL3g4Ni94ZW4vYXBpYy5jIGIvYXJjaC94ODYveGVuL2FwaWMuYw0KaW5kZXgg MTgzOGFlZmM2MzJmLi44NGYyNDI2ODY3MGIgMTAwNjQ0DQotLS0gYS9hcmNoL3g4Ni94ZW4v YXBpYy5jDQorKysgYi9hcmNoL3g4Ni94ZW4vYXBpYy5jDQpAQCAtMTYzLDE0ICsxNjMsMTgg QEAgc3RhdGljIHZvaWQgX19pbml0IHhlbl9hcGljX2NoZWNrKHZvaWQpDQogICAgICAgICBh cGljX2luc3RhbGxfZHJpdmVyKCZ4ZW5fcHZfYXBpYyk7DQogIH0NCg0KK3ZvaWQgX19pbml0 IHhlbl9hcGljX2luc3RhbGwodm9pZCkNCit7DQorICAgICAgIC8qDQorICAgICAgICAqIE9u IFBWIGd1ZXN0cyB0aGUgQVBJQyBDUFVJRCBiaXQgaXMgZGlzYWJsZWQgc28gbm9uZSBvZiB0 aGUNCisgICAgICAgICogcm91dGluZXMgZW5kIHVwIGV4ZWN1dGluZy4NCisgICAgICAgICov DQorICAgICAgIGFwaWNfaW5zdGFsbF9kcml2ZXIoJnhlbl9wdl9hcGljKTsNCit9DQorDQog IHZvaWQgX19pbml0IHhlbl9pbml0X2FwaWModm9pZCkNCiAgew0KICAgICAgICAgeDg2X2Fw aWNfb3BzLmlvX2FwaWNfcmVhZCA9IHhlbl9pb19hcGljX3JlYWQ7DQotICAgICAgIC8qIE9u IFBWIGd1ZXN0cyB0aGUgQVBJQyBDUFVJRCBiaXQgaXMgZGlzYWJsZWQgc28gbm9uZSBvZiB0 aGUNCi0gICAgICAgICogcm91dGluZXMgZW5kIHVwIGV4ZWN1dGluZy4gKi8NCi0gICAgICAg aWYgKCF4ZW5faW5pdGlhbF9kb21haW4oKSkNCi0gICAgICAgICAgICAgICBhcGljX2luc3Rh bGxfZHJpdmVyKCZ4ZW5fcHZfYXBpYyk7DQotDQogICAgICAgICB4ODZfcGxhdGZvcm0uYXBp Y19wb3N0X2luaXQgPSB4ZW5fYXBpY19jaGVjazsNCiAgfQ0KICBhcGljX2RyaXZlcih4ZW5f cHZfYXBpYyk7DQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYveGVuL3NtcF9wdi5jIGIvYXJjaC94 ODYveGVuL3NtcF9wdi5jDQppbmRleCBjNmI0MmM2NmM2MGMuLmZmMmQwNzU0Y2U2MiAxMDA2 NDQNCi0tLSBhL2FyY2gveDg2L3hlbi9zbXBfcHYuYw0KKysrIGIvYXJjaC94ODYveGVuL3Nt cF9wdi5jDQpAQCAtMTg4LDYgKzE4OCw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBfZ2V0X3Nt cF9jb25maWcodW5zaWduZWQgaW50IGVhcmx5KQ0KICBzdGF0aWMgdm9pZCBfX2luaXQgeGVu X3B2X3NtcF9wcmVwYXJlX2Jvb3RfY3B1KHZvaWQpDQogIHsNCiAgICAgICAgIEJVR19PTihz bXBfcHJvY2Vzc29yX2lkKCkgIT0gMCk7DQorDQorICAgICAgIHhlbl9hcGljX2luc3RhbGwo KTsNCisNCiAgICAgICAgIG5hdGl2ZV9zbXBfcHJlcGFyZV9ib290X2NwdSgpOw0KDQogICAg ICAgICBpZiAoIXhlbl9mZWF0dXJlKFhFTkZFQVRfd3JpdGFibGVfcGFnZV90YWJsZXMpKQ0K ZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi94ZW4tb3BzLmggYi9hcmNoL3g4Ni94ZW4veGVu LW9wcy5oDQppbmRleCA0MDhhMmFhNjZjNjkuLjIxN2U0YjYyNWU0ZCAxMDA2NDQNCi0tLSBh L2FyY2gveDg2L3hlbi94ZW4tb3BzLmgNCisrKyBiL2FyY2gveDg2L3hlbi94ZW4tb3BzLmgN CkBAIC0xMTksNiArMTE5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9faW5pdCB4ZW5faW5p dF92Z2EoY29uc3Qgc3RydWN0IA0KZG9tMF92Z2FfY29uc29sZV9pbmZvICppbmZvLA0KICB2 b2lkIHhlbl9hZGRfcHJlZmVycmVkX2NvbnNvbGVzKHZvaWQpOw0KDQogIHZvaWQgX19pbml0 IHhlbl9pbml0X2FwaWModm9pZCk7DQordm9pZCBfX2luaXQgeGVuX2FwaWNfaW5zdGFsbCh2 b2lkKTsNCg0KICAjaWZkZWYgQ09ORklHX1hFTl9FRkkNCiAgZXh0ZXJuIHZvaWQgeGVuX2Vm aV9pbml0KHN0cnVjdCBib290X3BhcmFtcyAqYm9vdF9wYXJhbXMpOw0KDQoNCkp1ZXJnZW4N Cg== --------------PJVIcMB65aGxVFlIo2zz5xTq 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----- --------------PJVIcMB65aGxVFlIo2zz5xTq-- --------------ve93GyoAqquMSQXc04H06Hq9-- --------------zRcCqpEEv1XcDsK0peI8u0Ic Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmTHm6QFAwAAAAAACgkQsN6d1ii/Ey/R CAf+Ma3UmrbGqeUvnhC+B3Mytm0t5oJlG3wgm4pxzUJhF2y3zvbHC3+eD+JRR13xAyvfxgmNNMcq IceqHYdqK6tmF7jr/R53rqgceYYp75bLvCDrP2wsX8dJheaiFZ3e82zQWNjSsBSekb+70O3d0kY1 WAybKPDhdM3q8HEw8tFpz0gzRZAXaURMJOUCDuFuY6qctkT/cNbZk15wk2tHIp5grPdva6LkDTXE MmZQdglEk9N61QtLEDA9oin6+LjSn0Q+sDsW2ZqR6GiCqkINrAjS0EQysktNufrs9+4Uj8Hqu3h8 AQoT02vy7IgGYWQxgemf9CmsfjEXHh3lWEukpq+CwQ== =D0pz -----END PGP SIGNATURE----- --------------zRcCqpEEv1XcDsK0peI8u0Ic--