From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3CB4C7440E for ; Fri, 22 Mar 2024 18:53:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.138 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711133618; cv=none; b=mtJo7oSCdroe6M6uSzvNvWHVI0TgJUJaDuSi1lrkW0l6Ja79hfMLuqbqh7ps/jpB9VqNPRKdHJkNeQvwjNAvFaLc1I0Z4XgUyK28S4t2u/tdDWkuV5HBrZKWHi3C5/AVLsVbeDutqGabYr8aWnqFis2iKJNAVHBs2FOaf8beyVU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711133618; c=relaxed/simple; bh=82RQYANYJuMNTPGQtKxqLwhxuDAzIWGQjTW9EV+4+ZU=; h=Date:From:To:CC:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mtZ4EC7FyKRKpzOAC+Wr0OcUjhdLk6JWZrkC0+8Uj6jZMgmsr0MGY7dKm/6JEkSXRSUFARjGzAeAMfYSe909GPGNJ6NwEYSoVsYw9H+zJfCUywCsM4aPgf/gzyY1aN541/OFxXhr8FU1XfNqQMGchavobGF5euvKI2hiEfLXS9w= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.138 Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 8CF0083134 for ; Fri, 22 Mar 2024 18:53:35 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -4.201 X-Spam-Level: Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ERIbjMQF7DwN for ; Fri, 22 Mar 2024 18:53:34 +0000 (UTC) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=185.176.79.56; helo=frasgout.his.huawei.com; envelope-from=jonathan.cameron@huawei.com; receiver= DMARC-Filter: OpenDMARC Filter v1.4.2 smtp1.osuosl.org C0C4D83123 Authentication-Results: smtp1.osuosl.org; dmarc=pass (p=quarantine dis=none) header.from=Huawei.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org C0C4D83123 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id C0C4D83123 for ; Fri, 22 Mar 2024 18:53:32 +0000 (UTC) Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4V1Wfp02xRz6K62w; Sat, 23 Mar 2024 02:52:50 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 2A1251400CF; Sat, 23 Mar 2024 02:53:29 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 22 Mar 2024 18:53:28 +0000 Date: Fri, 22 Mar 2024 18:53:27 +0000 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse Subject: Re: [PATCH RFC v4 02/15] ACPI: processor: Register all CPUs from acpi_processor_get_info() Message-ID: <20240322185327.00002416@Huawei.com> In-Reply-To: References: Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) Precedence: bulk X-Mailing-List: acpica-devel@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: lhrpeml100004.china.huawei.com (7.191.162.219) To lhrpeml500005.china.huawei.com (7.191.163.240) On Thu, 15 Feb 2024 20:22:29 +0100 "Rafael J. Wysocki" wrote: > On Wed, Jan 31, 2024 at 5:50=E2=80=AFPM Russell King wrote: > > > > From: James Morse > > > > To allow ACPI to skip the call to arch_register_cpu() when the _STA > > value indicates the CPU can't be brought online right now, move the > > arch_register_cpu() call into acpi_processor_get_info(). > > > > Systems can still be booted with 'acpi=3Doff', or not include an > > ACPI description at all. For these, the CPUs continue to be > > registered by cpu_dev_register_generic(). > > > > This moves the CPU register logic back to a subsys_initcall(), > > while the memory nodes will have been registered earlier. > > > > Signed-off-by: James Morse > > Reviewed-by: Gavin Shan > > Tested-by: Miguel Luis > > Tested-by: Vishnu Pajjuri > > Tested-by: Jianyong Wu > > Reviewed-by: Jonathan Cameron > > Signed-off-by: Russell King (Oracle) > > --- > > Changes since RFC v2: > > * Fixup comment in acpi_processor_get_info() (Gavin Shan) > > * Add comment in cpu_dev_register_generic() (Gavin Shan) > > --- > > drivers/acpi/acpi_processor.c | 12 ++++++++++++ > > drivers/base/cpu.c | 6 +++++- > > 2 files changed, 17 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processo= r.c > > index cf7c1cca69dd..a68c475cdea5 100644 > > --- a/drivers/acpi/acpi_processor.c > > +++ b/drivers/acpi/acpi_processor.c > > @@ -314,6 +314,18 @@ static int acpi_processor_get_info(struct acpi_dev= ice *device) > > cpufreq_add_device("acpi-cpufreq"); > > } > > > > + /* > > + * Register CPUs that are present. get_cpu_device() is used to = skip > > + * duplicate CPU descriptions from firmware. > > + */ > > + if (!invalid_logical_cpuid(pr->id) && cpu_present(pr->id) && > > + !get_cpu_device(pr->id)) { > > + int ret =3D arch_register_cpu(pr->id); > > + > > + if (ret) > > + return ret; > > + } > > + > > /* > > * Extra Processor objects may be enumerated on MP systems with > > * less than the max # of CPUs. They should be ignored _iff =20 >=20 > This is interesting, because right below there is the following code: >=20 > if (invalid_logical_cpuid(pr->id) || !cpu_present(pr->id)) { > int ret =3D acpi_processor_hotadd_init(pr); >=20 > if (ret) > return ret; > } >=20 > and acpi_processor_hotadd_init() essentially calls arch_register_cpu() > with some extra things around it (more about that below). >=20 > I do realize that acpi_processor_hotadd_init() is defined under > CONFIG_ACPI_HOTPLUG_CPU, so for the sake of the argument let's > consider an architecture where CONFIG_ACPI_HOTPLUG_CPU is set. >=20 > So why are the two conditionals that almost contradict each other both > needed? It looks like the new code could be combined with > acpi_processor_hotadd_init() to do the right thing in all cases. I jumped on to the end of this series to look at this as the two legs look more similar at that point. I'll figure out how to drive any changes through the series once the end goal is clear. To make testing easy I made the acpi_process_make_enabled() look as much like acpi_process_make_present() as possible. >=20 > Now, acpi_processor_hotadd_init() does some extra things that look > like they should be done by the new code too. >=20 > 1. It checks invalid_phys_cpuid() which appears to be a good idea to me. Indeed that is sensible. Not sure there is a path to here where it fails, but defense in depth is good. >=20 > 2. It uses locking around arch_register_cpu() which doesn't seem > unreasonable either. Seems reasonable, though exactly what this protecting is unclear to me - is the arch_register_cpu() and/or the acpi_map_cpu(). Whilst it would be nice to be sure, appears harmless, so let us take it for consistency if nothing else. The cpu_maps_update_begin()/end() calls though aren't necessary as we aren't touching the cpu_present or cpu_online masks. >=20 > 3. It calls acpi_map_cpu() and I'm not sure why this is not done by > the new code. Doesn't exist except on x86 and longarch as Russell mentioned. So let's see what it does (on x86) So we are into the realm of interfaces that look generic but really aren't :( I particularly like the generic_processor_info() which isn't particularly generic. 1. cpu =3D acpi_register_lapic() Docs say: Register a local apic and generates a logic cpu number 2. generic_processor_info() in arch/x86/kernel/acpi/acpi.c Checks against nr_cpus_ids - maybe that bit is useful Allocate_logical_cpuid(). Digging in, it seems to do similar to setting __cpu_logical_map on arm64. That's done in acpi_map_gic_cpu_interface, which happens when MADT is parsed and I believe it's one of the the things we need to do whether or not the CPU is enabled at boot. So already done. acpi_processor_set_pdc() -- configure _PDC support (which I'd never heard of before now). Deprecated in ACPI 3.0. Given we are using stuff only added in 6.5 we can probably skip that even if it would be harmless. acpi_map_cpu2node() -- evalulate _PXM and set __apicid_to_node[] entry. That is only used from x86 code. Not sure what equivalent would be. Also numa_set_node(cpu, nid); Which again sounds a lot more generic than it is. Load of x86 specific stuff + set_cpu_numa_node() which is generic and for ARM64 (and anything using CONFIG_GENERIC_ARCH_NUMA) is called by numa_store_cpu_info() either from early_map_cpu_to_node() or smp_prepare= _cpus() which is called for_each_possible_cpu() and hence has already been done. So conclusion on this one is there doesn't seem to be anything to do. We could provide a __weak function or an ARM64 specific one that does nothing or gate it on an appropriate config variable. However, given I presume 'future' ARM64 support for CPU hotplug will want to do something in these calls, perhaps a better bet is to pass a bool into the function to indicate these should be skipped if present is not changing. Having done that, we end up with code that is messy enough we are better off keeping them as separate functions, though they may look a little more similar than in this version. There is a final thing in here you didn't mention setting pr->flags.need_hotplug_init which causes extra stuff to occur in processor_driver.c The extra stuff doesn't seem to be necessary for the enable case despite being needed for change of present status. I haven't figured this bit out yet (I need to mess around on x86 to understand what goes wrong if you don't use that flag). >=20 > The only thing that can be dropped from it is the _STA check AFAICS, > because acpi_processor_add() won't even be called if the CPU is not > present (and not enabled after the first patch). >=20 > So why does the code not do 1 - 3 above? I agree with 1 and 2, reasoning for 3 given above. >=20 > > diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c > > index 47de0f140ba6..13d052bf13f4 100644 > > --- a/drivers/base/cpu.c > > +++ b/drivers/base/cpu.c > > @@ -553,7 +553,11 @@ static void __init cpu_dev_register_generic(void) > > { > > int i, ret; > > > > - if (!IS_ENABLED(CONFIG_GENERIC_CPU_DEVICES)) > > + /* > > + * When ACPI is enabled, CPUs are registered via > > + * acpi_processor_get_info(). > > + */ > > + if (!IS_ENABLED(CONFIG_GENERIC_CPU_DEVICES) || !acpi_disabled) > > return; =20 >=20 > Honestly, this looks like a quick hack to me and it absolutely > requires an ACK from the x86 maintainers to go anywhere. Will address this separately. >=20 > > > > for_each_present_cpu(i) { > > -- =20 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 41D31C54E71 for ; Fri, 22 Mar 2024 18:53:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:CC:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=D2oYrxkvzwP7nDxy/HdOqJ/ZeXjyNdJHqhLa9MPTDQU=; b=nzuIgXmZ08wbnn U5SLHuIavjFkDOsUyc3+DJ4FNv1+9y8uWg41pr8Oadm40Rp242VuPzAMUjrfqu3vS2NjeTLbn3vk/ UbF9d95tt1lz82L25nqJrF72U5+gwf9Q5WveEqZamtTV8KDKQEdO7jwL4gVOwt3FTs+IpjPN0WEcu Jj2Fb+oCER75Z7rJikeDs0GJiqNm98IKd9k3EJFf+kwUPh+jKjgUA0L7erpIcCs0fkspSApzn2i6l C4DSlurAXVy+ZgXu8+AoxBuoAyYHmEapfFqli3fzv2EXuhbsU9cJRDpUfr1imCO6gjSWgRO5ZHeFp 45e3idaoWZ8gLAeD8qjQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnk1P-00000008Pgx-1kqK; Fri, 22 Mar 2024 18:53:43 +0000 Received: from frasgout.his.huawei.com ([185.176.79.56]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnk1K-00000008Pf7-3BuK; Fri, 22 Mar 2024 18:53:41 +0000 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4V1Wfp02xRz6K62w; Sat, 23 Mar 2024 02:52:50 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 2A1251400CF; Sat, 23 Mar 2024 02:53:29 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 22 Mar 2024 18:53:28 +0000 Date: Fri, 22 Mar 2024 18:53:27 +0000 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse Subject: Re: [PATCH RFC v4 02/15] ACPI: processor: Register all CPUs from acpi_processor_get_info() Message-ID: <20240322185327.00002416@Huawei.com> In-Reply-To: References: Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.202.227.76] X-ClientProxiedBy: lhrpeml100004.china.huawei.com (7.191.162.219) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240322_115339_250917_682B521D X-CRM114-Status: GOOD ( 56.84 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCAxNSBGZWIgMjAyNCAyMDoyMjoyOSArMDEwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFdlZCwgSmFuIDMxLCAyMDI0IGF0IDU6NTDi gK9QTSBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPiB3cm90ZToKPiA+ Cj4gPiBGcm9tOiBKYW1lcyBNb3JzZSA8amFtZXMubW9yc2VAYXJtLmNvbT4KPiA+Cj4gPiBUbyBh bGxvdyBBQ1BJIHRvIHNraXAgdGhlIGNhbGwgdG8gYXJjaF9yZWdpc3Rlcl9jcHUoKSB3aGVuIHRo ZSBfU1RBCj4gPiB2YWx1ZSBpbmRpY2F0ZXMgdGhlIENQVSBjYW4ndCBiZSBicm91Z2h0IG9ubGlu ZSByaWdodCBub3csIG1vdmUgdGhlCj4gPiBhcmNoX3JlZ2lzdGVyX2NwdSgpIGNhbGwgaW50byBh Y3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbygpLgo+ID4KPiA+IFN5c3RlbXMgY2FuIHN0aWxsIGJlIGJv b3RlZCB3aXRoICdhY3BpPW9mZicsIG9yIG5vdCBpbmNsdWRlIGFuCj4gPiBBQ1BJIGRlc2NyaXB0 aW9uIGF0IGFsbC4gRm9yIHRoZXNlLCB0aGUgQ1BVcyBjb250aW51ZSB0byBiZQo+ID4gcmVnaXN0 ZXJlZCBieSBjcHVfZGV2X3JlZ2lzdGVyX2dlbmVyaWMoKS4KPiA+Cj4gPiBUaGlzIG1vdmVzIHRo ZSBDUFUgcmVnaXN0ZXIgbG9naWMgYmFjayB0byBhIHN1YnN5c19pbml0Y2FsbCgpLAo+ID4gd2hp bGUgdGhlIG1lbW9yeSBub2RlcyB3aWxsIGhhdmUgYmVlbiByZWdpc3RlcmVkIGVhcmxpZXIuCj4g Pgo+ID4gU2lnbmVkLW9mZi1ieTogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+Cj4g PiBSZXZpZXdlZC1ieTogR2F2aW4gU2hhbiA8Z3NoYW5AcmVkaGF0LmNvbT4KPiA+IFRlc3RlZC1i eTogTWlndWVsIEx1aXMgPG1pZ3VlbC5sdWlzQG9yYWNsZS5jb20+Cj4gPiBUZXN0ZWQtYnk6IFZp c2hudSBQYWpqdXJpIDx2aXNobnVAb3MuYW1wZXJlY29tcHV0aW5nLmNvbT4KPiA+IFRlc3RlZC1i eTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+Cj4gPiBSZXZpZXdlZC1ieTogSm9u YXRoYW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29tPgo+ID4gU2lnbmVkLW9m Zi1ieTogUnVzc2VsbCBLaW5nIChPcmFjbGUpIDxybWsra2VybmVsQGFybWxpbnV4Lm9yZy51az4K PiA+IC0tLQo+ID4gQ2hhbmdlcyBzaW5jZSBSRkMgdjI6Cj4gPiAgKiBGaXh1cCBjb21tZW50IGlu IGFjcGlfcHJvY2Vzc29yX2dldF9pbmZvKCkgKEdhdmluIFNoYW4pCj4gPiAgKiBBZGQgY29tbWVu dCBpbiBjcHVfZGV2X3JlZ2lzdGVyX2dlbmVyaWMoKSAoR2F2aW4gU2hhbikKPiA+IC0tLQo+ID4g IGRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jIHwgMTIgKysrKysrKysrKysrCj4gPiAgZHJp dmVycy9iYXNlL2NwdS5jICAgICAgICAgICAgfCAgNiArKysrKy0KPiA+ICAyIGZpbGVzIGNoYW5n ZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmMgYi9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNz b3IuYwo+ID4gaW5kZXggY2Y3YzFjY2E2OWRkLi5hNjhjNDc1Y2RlYTUgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2Fj cGlfcHJvY2Vzc29yLmMKPiA+IEBAIC0zMTQsNiArMzE0LDE4IEBAIHN0YXRpYyBpbnQgYWNwaV9w cm9jZXNzb3JfZ2V0X2luZm8oc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBjcHVmcmVxX2FkZF9kZXZpY2UoImFjcGktY3B1ZnJlcSIpOwo+ID4g ICAgICAgICB9Cj4gPgo+ID4gKyAgICAgICAvKgo+ID4gKyAgICAgICAgKiBSZWdpc3RlciBDUFVz IHRoYXQgYXJlIHByZXNlbnQuIGdldF9jcHVfZGV2aWNlKCkgaXMgdXNlZCB0byBza2lwCj4gPiAr ICAgICAgICAqIGR1cGxpY2F0ZSBDUFUgZGVzY3JpcHRpb25zIGZyb20gZmlybXdhcmUuCj4gPiAr ICAgICAgICAqLwo+ID4gKyAgICAgICBpZiAoIWludmFsaWRfbG9naWNhbF9jcHVpZChwci0+aWQp ICYmIGNwdV9wcmVzZW50KHByLT5pZCkgJiYKPiA+ICsgICAgICAgICAgICFnZXRfY3B1X2Rldmlj ZShwci0+aWQpKSB7Cj4gPiArICAgICAgICAgICAgICAgaW50IHJldCA9IGFyY2hfcmVnaXN0ZXJf Y3B1KHByLT5pZCk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICAg ICAgICAgLyoKPiA+ICAgICAgICAgICogIEV4dHJhIFByb2Nlc3NvciBvYmplY3RzIG1heSBiZSBl bnVtZXJhdGVkIG9uIE1QIHN5c3RlbXMgd2l0aAo+ID4gICAgICAgICAgKiAgbGVzcyB0aGFuIHRo ZSBtYXggIyBvZiBDUFVzLiBUaGV5IHNob3VsZCBiZSBpZ25vcmVkIF9pZmYgIAo+IAo+IFRoaXMg aXMgaW50ZXJlc3RpbmcsIGJlY2F1c2UgcmlnaHQgYmVsb3cgdGhlcmUgaXMgdGhlIGZvbGxvd2lu ZyBjb2RlOgo+IAo+ICAgICBpZiAoaW52YWxpZF9sb2dpY2FsX2NwdWlkKHByLT5pZCkgfHwgIWNw dV9wcmVzZW50KHByLT5pZCkpIHsKPiAgICAgICAgIGludCByZXQgPSBhY3BpX3Byb2Nlc3Nvcl9o b3RhZGRfaW5pdChwcik7Cj4gCj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gICAgIH0KPiAKPiBhbmQgYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQoKSBlc3Nl bnRpYWxseSBjYWxscyBhcmNoX3JlZ2lzdGVyX2NwdSgpCj4gd2l0aCBzb21lIGV4dHJhIHRoaW5n cyBhcm91bmQgaXQgKG1vcmUgYWJvdXQgdGhhdCBiZWxvdykuCj4gCj4gSSBkbyByZWFsaXplIHRo YXQgYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQoKSBpcyBkZWZpbmVkIHVuZGVyCj4gQ09ORklH X0FDUElfSE9UUExVR19DUFUsIHNvIGZvciB0aGUgc2FrZSBvZiB0aGUgYXJndW1lbnQgbGV0J3MK PiBjb25zaWRlciBhbiBhcmNoaXRlY3R1cmUgd2hlcmUgQ09ORklHX0FDUElfSE9UUExVR19DUFUg aXMgc2V0Lgo+IAo+IFNvIHdoeSBhcmUgdGhlIHR3byBjb25kaXRpb25hbHMgdGhhdCBhbG1vc3Qg Y29udHJhZGljdCBlYWNoIG90aGVyIGJvdGgKPiBuZWVkZWQ/ICBJdCBsb29rcyBsaWtlIHRoZSBu ZXcgY29kZSBjb3VsZCBiZSBjb21iaW5lZCB3aXRoCj4gYWNwaV9wcm9jZXNzb3JfaG90YWRkX2lu aXQoKSB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaW4gYWxsIGNhc2VzLgoKSSBqdW1wZWQgb24gdG8g dGhlIGVuZCBvZiB0aGlzIHNlcmllcyB0byBsb29rIGF0IHRoaXMgYXMgdGhlIHR3byBsZWdzCmxv b2sgbW9yZSBzaW1pbGFyIGF0IHRoYXQgcG9pbnQuIEknbGwgZmlndXJlIG91dCBob3cgdG8gZHJp dmUKYW55IGNoYW5nZXMgdGhyb3VnaCB0aGUgc2VyaWVzIG9uY2UgdGhlIGVuZCBnb2FsIGlzIGNs ZWFyLgoKVG8gbWFrZSB0ZXN0aW5nIGVhc3kgSSBtYWRlIHRoZSBhY3BpX3Byb2Nlc3NfbWFrZV9l bmFibGVkKCkgbG9vayBhcwptdWNoIGxpa2UgYWNwaV9wcm9jZXNzX21ha2VfcHJlc2VudCgpIGFz IHBvc3NpYmxlLgoKPiAKPiBOb3csIGFjcGlfcHJvY2Vzc29yX2hvdGFkZF9pbml0KCkgZG9lcyBz b21lIGV4dHJhIHRoaW5ncyB0aGF0IGxvb2sKPiBsaWtlIHRoZXkgc2hvdWxkIGJlIGRvbmUgYnkg dGhlIG5ldyBjb2RlIHRvby4KPiAKPiAxLiBJdCBjaGVja3MgaW52YWxpZF9waHlzX2NwdWlkKCkg d2hpY2ggYXBwZWFycyB0byBiZSBhIGdvb2QgaWRlYSB0byBtZS4KCkluZGVlZCB0aGF0IGlzIHNl bnNpYmxlLiBOb3Qgc3VyZSB0aGVyZSBpcyBhIHBhdGggdG8gaGVyZSB3aGVyZSBpdCBmYWlscywK YnV0IGRlZmVuc2UgaW4gZGVwdGggaXMgZ29vZC4KCj4gCj4gMi4gSXQgdXNlcyBsb2NraW5nIGFy b3VuZCBhcmNoX3JlZ2lzdGVyX2NwdSgpIHdoaWNoIGRvZXNuJ3Qgc2VlbQo+IHVucmVhc29uYWJs ZSBlaXRoZXIuCgpTZWVtcyByZWFzb25hYmxlLCB0aG91Z2ggZXhhY3RseSB3aGF0IHRoaXMgcHJv dGVjdGluZyBpcyB1bmNsZWFyIHRvIG1lCi0gaXMgdGhlIGFyY2hfcmVnaXN0ZXJfY3B1KCkgYW5k L29yIHRoZSBhY3BpX21hcF9jcHUoKS4KV2hpbHN0IGl0IHdvdWxkIGJlIG5pY2UgdG8gYmUgc3Vy ZSwgYXBwZWFycyBoYXJtbGVzcywgc28gbGV0IHVzCnRha2UgaXQgZm9yIGNvbnNpc3RlbmN5IGlm IG5vdGhpbmcgZWxzZS4KClRoZSBjcHVfbWFwc191cGRhdGVfYmVnaW4oKS9lbmQoKSBjYWxscyB0 aG91Z2ggYXJlbid0IG5lY2Vzc2FyeSBhcwp3ZSBhcmVuJ3QgdG91Y2hpbmcgdGhlIGNwdV9wcmVz ZW50IG9yIGNwdV9vbmxpbmUgbWFza3MuCgoKPiAKPiAzLiBJdCBjYWxscyBhY3BpX21hcF9jcHUo KSBhbmQgSSdtIG5vdCBzdXJlIHdoeSB0aGlzIGlzIG5vdCBkb25lIGJ5Cj4gdGhlIG5ldyBjb2Rl LgoKRG9lc24ndCBleGlzdCBleGNlcHQgb24geDg2IGFuZCBsb25nYXJjaCBhcyBSdXNzZWxsIG1l bnRpb25lZC4gU28gbGV0J3MKc2VlIHdoYXQgaXQgZG9lcyAob24geDg2KSAgU28gd2UgYXJlIGlu dG8gdGhlIHJlYWxtIG9mIGludGVyZmFjZXMgdGhhdApsb29rIGdlbmVyaWMgYnV0IHJlYWxseSBh cmVuJ3QgOiggIEkgcGFydGljdWxhcmx5IGxpa2UgdGhlCmdlbmVyaWNfcHJvY2Vzc29yX2luZm8o KSB3aGljaCBpc24ndCBwYXJ0aWN1bGFybHkgZ2VuZXJpYy4KCjEuIGNwdSA9IGFjcGlfcmVnaXN0 ZXJfbGFwaWMoKQoKRG9jcyBzYXk6IFJlZ2lzdGVyIGEgbG9jYWwgYXBpYyBhbmQgZ2VuZXJhdGVz IGEgbG9naWMgY3B1IG51bWJlcgoKMi4gZ2VuZXJpY19wcm9jZXNzb3JfaW5mbygpIGluIGFyY2gv eDg2L2tlcm5lbC9hY3BpL2FjcGkuYwoKQ2hlY2tzIGFnYWluc3QgbnJfY3B1c19pZHMgLSBtYXli ZSB0aGF0IGJpdCBpcyB1c2VmdWwKCkFsbG9jYXRlX2xvZ2ljYWxfY3B1aWQoKS4KRGlnZ2luZyBp biwgaXQgc2VlbXMgdG8gZG8gc2ltaWxhciB0byBzZXR0aW5nIF9fY3B1X2xvZ2ljYWxfbWFwIG9u IGFybTY0LgpUaGF0J3MgZG9uZSBpbiBhY3BpX21hcF9naWNfY3B1X2ludGVyZmFjZSwgd2hpY2gg aGFwcGVucyB3aGVuIE1BRFQgaXMKcGFyc2VkIGFuZCBJIGJlbGlldmUgaXQncyBvbmUgb2YgdGhl IHRoZSB0aGluZ3Mgd2UgbmVlZCB0byBkbyB3aGV0aGVyCm9yIG5vdCB0aGUgQ1BVIGlzIGVuYWJs ZWQgYXQgYm9vdC4gU28gYWxyZWFkeSBkb25lLgoKYWNwaV9wcm9jZXNzb3Jfc2V0X3BkYygpIC0t IGNvbmZpZ3VyZSBfUERDIHN1cHBvcnQgKHdoaWNoIEknZCBuZXZlciBoZWFyZApvZiBiZWZvcmUg bm93KS4gIERlcHJlY2F0ZWQgaW4gQUNQSSAzLjAuIEdpdmVuIHdlIGFyZSB1c2luZyBzdHVmZiBv bmx5IGFkZGVkCmluIDYuNSB3ZSBjYW4gcHJvYmFibHkgc2tpcCB0aGF0IGV2ZW4gaWYgaXQgd291 bGQgYmUgaGFybWxlc3MuCgphY3BpX21hcF9jcHUybm9kZSgpIC0tIGV2YWx1bGF0ZSBfUFhNIGFu ZCBzZXQgX19hcGljaWRfdG9fbm9kZVtdCmVudHJ5LiBUaGF0IGlzIG9ubHkgdXNlZCBmcm9tIHg4 NiBjb2RlLiBOb3Qgc3VyZSB3aGF0IGVxdWl2YWxlbnQgd291bGQgYmUuCkFsc28gbnVtYV9zZXRf bm9kZShjcHUsIG5pZCk7ICBXaGljaCBhZ2FpbiBzb3VuZHMgYSBsb3QgbW9yZSBnZW5lcmljIHRo YW4KaXQgaXMuIExvYWQgb2YgeDg2IHNwZWNpZmljIHN0dWZmICsgc2V0X2NwdV9udW1hX25vZGUo KSB3aGljaCBpcyBnZW5lcmljCmFuZCBmb3IgQVJNNjQgKGFuZCBhbnl0aGluZyB1c2luZyBDT05G SUdfR0VORVJJQ19BUkNIX05VTUEpIGlzIGNhbGxlZApieSBudW1hX3N0b3JlX2NwdV9pbmZvKCkg ZWl0aGVyIGZyb20gZWFybHlfbWFwX2NwdV90b19ub2RlKCkgb3Igc21wX3ByZXBhcmVfY3B1cygp CndoaWNoIGlzIGNhbGxlZCBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoKSBhbmQgaGVuY2UgaGFzIGFs cmVhZHkgYmVlbiBkb25lLgoKU28gY29uY2x1c2lvbiBvbiB0aGlzIG9uZSBpcyB0aGVyZSBkb2Vz bid0IHNlZW0gdG8gYmUgYW55dGhpbmcgdG8gZG8uCldlIGNvdWxkIHByb3ZpZGUgYSBfX3dlYWsg ZnVuY3Rpb24gb3IgYW4gQVJNNjQgc3BlY2lmaWMgb25lIHRoYXQgZG9lcwpub3RoaW5nIG9yIGdh dGUgaXQgb24gYW4gYXBwcm9wcmlhdGUgY29uZmlnIHZhcmlhYmxlLiAgSG93ZXZlciwgZ2l2ZW4K SSBwcmVzdW1lICdmdXR1cmUnIEFSTTY0IHN1cHBvcnQgZm9yIENQVSBob3RwbHVnIHdpbGwgd2Fu dCB0byBkbyBzb21ldGhpbmcKaW4gdGhlc2UgY2FsbHMsIHBlcmhhcHMgYSBiZXR0ZXIgYmV0IGlz IHRvIHBhc3MgYSBib29sIGludG8gdGhlIGZ1bmN0aW9uCnRvIGluZGljYXRlIHRoZXNlIHNob3Vs ZCBiZSBza2lwcGVkIGlmIHByZXNlbnQgaXMgbm90IGNoYW5naW5nLgoKSGF2aW5nIGRvbmUgdGhh dCwgd2UgZW5kIHVwIHdpdGggY29kZSB0aGF0IGlzIG1lc3N5IGVub3VnaCB3ZSBhcmUKYmV0dGVy IG9mZiBrZWVwaW5nIHRoZW0gYXMgc2VwYXJhdGUgZnVuY3Rpb25zLCB0aG91Z2ggdGhleSBtYXkK bG9vayBhIGxpdHRsZSBtb3JlIHNpbWlsYXIgdGhhbiBpbiB0aGlzIHZlcnNpb24uCgpUaGVyZSBp cyBhIGZpbmFsIHRoaW5nIGluIGhlcmUgeW91IGRpZG4ndCBtZW50aW9uCnNldHRpbmcgcHItPmZs YWdzLm5lZWRfaG90cGx1Z19pbml0CndoaWNoIGNhdXNlcyBleHRyYSBzdHVmZiB0byBvY2N1ciBp biBwcm9jZXNzb3JfZHJpdmVyLmMKVGhlIGV4dHJhIHN0dWZmIGRvZXNuJ3Qgc2VlbSB0byBiZSBu ZWNlc3NhcnkgZm9yIHRoZSBlbmFibGUgY2FzZQpkZXNwaXRlIGJlaW5nIG5lZWRlZCBmb3IgY2hh bmdlIG9mIHByZXNlbnQgc3RhdHVzLgpJIGhhdmVuJ3QgZmlndXJlZCB0aGlzIGJpdCBvdXQgeWV0 IChJIG5lZWQgdG8gbWVzcyBhcm91bmQgb24geDg2CnRvIHVuZGVyc3RhbmQgd2hhdCBnb2VzIHdy b25nIGlmIHlvdSBkb24ndCB1c2UgdGhhdCBmbGFnKS4KCgo+IAo+IFRoZSBvbmx5IHRoaW5nIHRo YXQgY2FuIGJlIGRyb3BwZWQgZnJvbSBpdCBpcyB0aGUgX1NUQSBjaGVjayBBRkFJQ1MsCj4gYmVj YXVzZSBhY3BpX3Byb2Nlc3Nvcl9hZGQoKSB3b24ndCBldmVuIGJlIGNhbGxlZCBpZiB0aGUgQ1BV IGlzIG5vdAo+IHByZXNlbnQgKGFuZCBub3QgZW5hYmxlZCBhZnRlciB0aGUgZmlyc3QgcGF0Y2gp Lgo+IAo+IFNvIHdoeSBkb2VzIHRoZSBjb2RlIG5vdCBkbyAxIC0gMyBhYm92ZT8KSSBhZ3JlZSB3 aXRoIDEgYW5kIDIsIHJlYXNvbmluZyBmb3IgMyBnaXZlbiBhYm92ZS4KCj4gCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9iYXNlL2NwdS5jIGIvZHJpdmVycy9iYXNlL2NwdS5jCj4gPiBpbmRleCA0 N2RlMGYxNDBiYTYuLjEzZDA1MmJmMTNmNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvYmFzZS9j cHUuYwo+ID4gKysrIGIvZHJpdmVycy9iYXNlL2NwdS5jCj4gPiBAQCAtNTUzLDcgKzU1MywxMSBA QCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1X2Rldl9yZWdpc3Rlcl9nZW5lcmljKHZvaWQpCj4gPiAg ewo+ID4gICAgICAgICBpbnQgaSwgcmV0Owo+ID4KPiA+IC0gICAgICAgaWYgKCFJU19FTkFCTEVE KENPTkZJR19HRU5FUklDX0NQVV9ERVZJQ0VTKSkKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAg ICogV2hlbiBBQ1BJIGlzIGVuYWJsZWQsIENQVXMgYXJlIHJlZ2lzdGVyZWQgdmlhCj4gPiArICAg ICAgICAqIGFjcGlfcHJvY2Vzc29yX2dldF9pbmZvKCkuCj4gPiArICAgICAgICAqLwo+ID4gKyAg ICAgICBpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVMpIHx8ICFhY3Bp X2Rpc2FibGVkKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybjsgIAo+IAo+IEhvbmVzdGx5LCB0 aGlzIGxvb2tzIGxpa2UgYSBxdWljayBoYWNrIHRvIG1lIGFuZCBpdCBhYnNvbHV0ZWx5Cj4gcmVx dWlyZXMgYW4gQUNLIGZyb20gdGhlIHg4NiBtYWludGFpbmVycyB0byBnbyBhbnl3aGVyZS4KV2ls bCBhZGRyZXNzIHRoaXMgc2VwYXJhdGVseS4KCj4gCj4gPgo+ID4gICAgICAgICBmb3JfZWFjaF9w cmVzZW50X2NwdShpKSB7Cj4gPiAtLSAgCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1yaXNjdgo= 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8564CC54E71 for ; Fri, 22 Mar 2024 18:53:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:CC:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JhQdCWV9oTOzsexUQER5++55fOGzYEk91rQGVpoYVg8=; b=vEXvIfO9FPlTBo ySs/PvQuePK8SabJ/XJPBGOClp6A1KjZuNx11NwpfYWQPiyvs6meqtClh4GHVuBP5e1rliakOIHTN Z/ElMUr07GH19kj4vZue4IFh8cEBdp8Vr6gbD+BIH0C9VVIWmRIswk4050QedT7/u837t/D5VJBQO 26X4mY6bzoEL/V+f67OPjAAhg0eyFEw1OintbQrZZfxPHbVD64rXn0m8UMFcxkiGfQC2W3kpKvkgQ PdUvjAN+lp5c4/c+zoPabcHsjlGmIdTVMWZL7xB8OviRkCRIDmlXBgx4/hsKQE+V+REK6yu/gRCnE HxD4/Tjop1K2BQxCDfSA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnk1O-00000008Pgg-1Ged; Fri, 22 Mar 2024 18:53:42 +0000 Received: from frasgout.his.huawei.com ([185.176.79.56]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rnk1K-00000008Pf7-3BuK; Fri, 22 Mar 2024 18:53:41 +0000 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4V1Wfp02xRz6K62w; Sat, 23 Mar 2024 02:52:50 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 2A1251400CF; Sat, 23 Mar 2024 02:53:29 +0800 (CST) Received: from localhost (10.202.227.76) by lhrpeml500005.china.huawei.com (7.191.163.240) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 22 Mar 2024 18:53:28 +0000 Date: Fri, 22 Mar 2024 18:53:27 +0000 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse Subject: Re: [PATCH RFC v4 02/15] ACPI: processor: Register all CPUs from acpi_processor_get_info() Message-ID: <20240322185327.00002416@Huawei.com> In-Reply-To: References: Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 4.1.0 (GTK 3.24.33; x86_64-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.202.227.76] X-ClientProxiedBy: lhrpeml100004.china.huawei.com (7.191.162.219) To lhrpeml500005.china.huawei.com (7.191.163.240) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240322_115339_250917_682B521D X-CRM114-Status: GOOD ( 56.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCAxNSBGZWIgMjAyNCAyMDoyMjoyOSArMDEwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFdlZCwgSmFuIDMxLCAyMDI0IGF0IDU6NTDi gK9QTSBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPiB3cm90ZToKPiA+ Cj4gPiBGcm9tOiBKYW1lcyBNb3JzZSA8amFtZXMubW9yc2VAYXJtLmNvbT4KPiA+Cj4gPiBUbyBh bGxvdyBBQ1BJIHRvIHNraXAgdGhlIGNhbGwgdG8gYXJjaF9yZWdpc3Rlcl9jcHUoKSB3aGVuIHRo ZSBfU1RBCj4gPiB2YWx1ZSBpbmRpY2F0ZXMgdGhlIENQVSBjYW4ndCBiZSBicm91Z2h0IG9ubGlu ZSByaWdodCBub3csIG1vdmUgdGhlCj4gPiBhcmNoX3JlZ2lzdGVyX2NwdSgpIGNhbGwgaW50byBh Y3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbygpLgo+ID4KPiA+IFN5c3RlbXMgY2FuIHN0aWxsIGJlIGJv b3RlZCB3aXRoICdhY3BpPW9mZicsIG9yIG5vdCBpbmNsdWRlIGFuCj4gPiBBQ1BJIGRlc2NyaXB0 aW9uIGF0IGFsbC4gRm9yIHRoZXNlLCB0aGUgQ1BVcyBjb250aW51ZSB0byBiZQo+ID4gcmVnaXN0 ZXJlZCBieSBjcHVfZGV2X3JlZ2lzdGVyX2dlbmVyaWMoKS4KPiA+Cj4gPiBUaGlzIG1vdmVzIHRo ZSBDUFUgcmVnaXN0ZXIgbG9naWMgYmFjayB0byBhIHN1YnN5c19pbml0Y2FsbCgpLAo+ID4gd2hp bGUgdGhlIG1lbW9yeSBub2RlcyB3aWxsIGhhdmUgYmVlbiByZWdpc3RlcmVkIGVhcmxpZXIuCj4g Pgo+ID4gU2lnbmVkLW9mZi1ieTogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+Cj4g PiBSZXZpZXdlZC1ieTogR2F2aW4gU2hhbiA8Z3NoYW5AcmVkaGF0LmNvbT4KPiA+IFRlc3RlZC1i eTogTWlndWVsIEx1aXMgPG1pZ3VlbC5sdWlzQG9yYWNsZS5jb20+Cj4gPiBUZXN0ZWQtYnk6IFZp c2hudSBQYWpqdXJpIDx2aXNobnVAb3MuYW1wZXJlY29tcHV0aW5nLmNvbT4KPiA+IFRlc3RlZC1i eTogSmlhbnlvbmcgV3UgPGppYW55b25nLnd1QGFybS5jb20+Cj4gPiBSZXZpZXdlZC1ieTogSm9u YXRoYW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29tPgo+ID4gU2lnbmVkLW9m Zi1ieTogUnVzc2VsbCBLaW5nIChPcmFjbGUpIDxybWsra2VybmVsQGFybWxpbnV4Lm9yZy51az4K PiA+IC0tLQo+ID4gQ2hhbmdlcyBzaW5jZSBSRkMgdjI6Cj4gPiAgKiBGaXh1cCBjb21tZW50IGlu IGFjcGlfcHJvY2Vzc29yX2dldF9pbmZvKCkgKEdhdmluIFNoYW4pCj4gPiAgKiBBZGQgY29tbWVu dCBpbiBjcHVfZGV2X3JlZ2lzdGVyX2dlbmVyaWMoKSAoR2F2aW4gU2hhbikKPiA+IC0tLQo+ID4g IGRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jIHwgMTIgKysrKysrKysrKysrCj4gPiAgZHJp dmVycy9iYXNlL2NwdS5jICAgICAgICAgICAgfCAgNiArKysrKy0KPiA+ICAyIGZpbGVzIGNoYW5n ZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmMgYi9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNz b3IuYwo+ID4gaW5kZXggY2Y3YzFjY2E2OWRkLi5hNjhjNDc1Y2RlYTUgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2Fj cGlfcHJvY2Vzc29yLmMKPiA+IEBAIC0zMTQsNiArMzE0LDE4IEBAIHN0YXRpYyBpbnQgYWNwaV9w cm9jZXNzb3JfZ2V0X2luZm8oc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICBjcHVmcmVxX2FkZF9kZXZpY2UoImFjcGktY3B1ZnJlcSIpOwo+ID4g ICAgICAgICB9Cj4gPgo+ID4gKyAgICAgICAvKgo+ID4gKyAgICAgICAgKiBSZWdpc3RlciBDUFVz IHRoYXQgYXJlIHByZXNlbnQuIGdldF9jcHVfZGV2aWNlKCkgaXMgdXNlZCB0byBza2lwCj4gPiAr ICAgICAgICAqIGR1cGxpY2F0ZSBDUFUgZGVzY3JpcHRpb25zIGZyb20gZmlybXdhcmUuCj4gPiAr ICAgICAgICAqLwo+ID4gKyAgICAgICBpZiAoIWludmFsaWRfbG9naWNhbF9jcHVpZChwci0+aWQp ICYmIGNwdV9wcmVzZW50KHByLT5pZCkgJiYKPiA+ICsgICAgICAgICAgICFnZXRfY3B1X2Rldmlj ZShwci0+aWQpKSB7Cj4gPiArICAgICAgICAgICAgICAgaW50IHJldCA9IGFyY2hfcmVnaXN0ZXJf Y3B1KHByLT5pZCk7Cj4gPiArCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkKPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiArICAgICAgIH0KPiA+ICsKPiA+ICAg ICAgICAgLyoKPiA+ICAgICAgICAgICogIEV4dHJhIFByb2Nlc3NvciBvYmplY3RzIG1heSBiZSBl bnVtZXJhdGVkIG9uIE1QIHN5c3RlbXMgd2l0aAo+ID4gICAgICAgICAgKiAgbGVzcyB0aGFuIHRo ZSBtYXggIyBvZiBDUFVzLiBUaGV5IHNob3VsZCBiZSBpZ25vcmVkIF9pZmYgIAo+IAo+IFRoaXMg aXMgaW50ZXJlc3RpbmcsIGJlY2F1c2UgcmlnaHQgYmVsb3cgdGhlcmUgaXMgdGhlIGZvbGxvd2lu ZyBjb2RlOgo+IAo+ICAgICBpZiAoaW52YWxpZF9sb2dpY2FsX2NwdWlkKHByLT5pZCkgfHwgIWNw dV9wcmVzZW50KHByLT5pZCkpIHsKPiAgICAgICAgIGludCByZXQgPSBhY3BpX3Byb2Nlc3Nvcl9o b3RhZGRfaW5pdChwcik7Cj4gCj4gICAgICAgICBpZiAocmV0KQo+ICAgICAgICAgICAgIHJldHVy biByZXQ7Cj4gICAgIH0KPiAKPiBhbmQgYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQoKSBlc3Nl bnRpYWxseSBjYWxscyBhcmNoX3JlZ2lzdGVyX2NwdSgpCj4gd2l0aCBzb21lIGV4dHJhIHRoaW5n cyBhcm91bmQgaXQgKG1vcmUgYWJvdXQgdGhhdCBiZWxvdykuCj4gCj4gSSBkbyByZWFsaXplIHRo YXQgYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQoKSBpcyBkZWZpbmVkIHVuZGVyCj4gQ09ORklH X0FDUElfSE9UUExVR19DUFUsIHNvIGZvciB0aGUgc2FrZSBvZiB0aGUgYXJndW1lbnQgbGV0J3MK PiBjb25zaWRlciBhbiBhcmNoaXRlY3R1cmUgd2hlcmUgQ09ORklHX0FDUElfSE9UUExVR19DUFUg aXMgc2V0Lgo+IAo+IFNvIHdoeSBhcmUgdGhlIHR3byBjb25kaXRpb25hbHMgdGhhdCBhbG1vc3Qg Y29udHJhZGljdCBlYWNoIG90aGVyIGJvdGgKPiBuZWVkZWQ/ICBJdCBsb29rcyBsaWtlIHRoZSBu ZXcgY29kZSBjb3VsZCBiZSBjb21iaW5lZCB3aXRoCj4gYWNwaV9wcm9jZXNzb3JfaG90YWRkX2lu aXQoKSB0byBkbyB0aGUgcmlnaHQgdGhpbmcgaW4gYWxsIGNhc2VzLgoKSSBqdW1wZWQgb24gdG8g dGhlIGVuZCBvZiB0aGlzIHNlcmllcyB0byBsb29rIGF0IHRoaXMgYXMgdGhlIHR3byBsZWdzCmxv b2sgbW9yZSBzaW1pbGFyIGF0IHRoYXQgcG9pbnQuIEknbGwgZmlndXJlIG91dCBob3cgdG8gZHJp dmUKYW55IGNoYW5nZXMgdGhyb3VnaCB0aGUgc2VyaWVzIG9uY2UgdGhlIGVuZCBnb2FsIGlzIGNs ZWFyLgoKVG8gbWFrZSB0ZXN0aW5nIGVhc3kgSSBtYWRlIHRoZSBhY3BpX3Byb2Nlc3NfbWFrZV9l bmFibGVkKCkgbG9vayBhcwptdWNoIGxpa2UgYWNwaV9wcm9jZXNzX21ha2VfcHJlc2VudCgpIGFz IHBvc3NpYmxlLgoKPiAKPiBOb3csIGFjcGlfcHJvY2Vzc29yX2hvdGFkZF9pbml0KCkgZG9lcyBz b21lIGV4dHJhIHRoaW5ncyB0aGF0IGxvb2sKPiBsaWtlIHRoZXkgc2hvdWxkIGJlIGRvbmUgYnkg dGhlIG5ldyBjb2RlIHRvby4KPiAKPiAxLiBJdCBjaGVja3MgaW52YWxpZF9waHlzX2NwdWlkKCkg d2hpY2ggYXBwZWFycyB0byBiZSBhIGdvb2QgaWRlYSB0byBtZS4KCkluZGVlZCB0aGF0IGlzIHNl bnNpYmxlLiBOb3Qgc3VyZSB0aGVyZSBpcyBhIHBhdGggdG8gaGVyZSB3aGVyZSBpdCBmYWlscywK YnV0IGRlZmVuc2UgaW4gZGVwdGggaXMgZ29vZC4KCj4gCj4gMi4gSXQgdXNlcyBsb2NraW5nIGFy b3VuZCBhcmNoX3JlZ2lzdGVyX2NwdSgpIHdoaWNoIGRvZXNuJ3Qgc2VlbQo+IHVucmVhc29uYWJs ZSBlaXRoZXIuCgpTZWVtcyByZWFzb25hYmxlLCB0aG91Z2ggZXhhY3RseSB3aGF0IHRoaXMgcHJv dGVjdGluZyBpcyB1bmNsZWFyIHRvIG1lCi0gaXMgdGhlIGFyY2hfcmVnaXN0ZXJfY3B1KCkgYW5k L29yIHRoZSBhY3BpX21hcF9jcHUoKS4KV2hpbHN0IGl0IHdvdWxkIGJlIG5pY2UgdG8gYmUgc3Vy ZSwgYXBwZWFycyBoYXJtbGVzcywgc28gbGV0IHVzCnRha2UgaXQgZm9yIGNvbnNpc3RlbmN5IGlm IG5vdGhpbmcgZWxzZS4KClRoZSBjcHVfbWFwc191cGRhdGVfYmVnaW4oKS9lbmQoKSBjYWxscyB0 aG91Z2ggYXJlbid0IG5lY2Vzc2FyeSBhcwp3ZSBhcmVuJ3QgdG91Y2hpbmcgdGhlIGNwdV9wcmVz ZW50IG9yIGNwdV9vbmxpbmUgbWFza3MuCgoKPiAKPiAzLiBJdCBjYWxscyBhY3BpX21hcF9jcHUo KSBhbmQgSSdtIG5vdCBzdXJlIHdoeSB0aGlzIGlzIG5vdCBkb25lIGJ5Cj4gdGhlIG5ldyBjb2Rl LgoKRG9lc24ndCBleGlzdCBleGNlcHQgb24geDg2IGFuZCBsb25nYXJjaCBhcyBSdXNzZWxsIG1l bnRpb25lZC4gU28gbGV0J3MKc2VlIHdoYXQgaXQgZG9lcyAob24geDg2KSAgU28gd2UgYXJlIGlu dG8gdGhlIHJlYWxtIG9mIGludGVyZmFjZXMgdGhhdApsb29rIGdlbmVyaWMgYnV0IHJlYWxseSBh cmVuJ3QgOiggIEkgcGFydGljdWxhcmx5IGxpa2UgdGhlCmdlbmVyaWNfcHJvY2Vzc29yX2luZm8o KSB3aGljaCBpc24ndCBwYXJ0aWN1bGFybHkgZ2VuZXJpYy4KCjEuIGNwdSA9IGFjcGlfcmVnaXN0 ZXJfbGFwaWMoKQoKRG9jcyBzYXk6IFJlZ2lzdGVyIGEgbG9jYWwgYXBpYyBhbmQgZ2VuZXJhdGVz IGEgbG9naWMgY3B1IG51bWJlcgoKMi4gZ2VuZXJpY19wcm9jZXNzb3JfaW5mbygpIGluIGFyY2gv eDg2L2tlcm5lbC9hY3BpL2FjcGkuYwoKQ2hlY2tzIGFnYWluc3QgbnJfY3B1c19pZHMgLSBtYXli ZSB0aGF0IGJpdCBpcyB1c2VmdWwKCkFsbG9jYXRlX2xvZ2ljYWxfY3B1aWQoKS4KRGlnZ2luZyBp biwgaXQgc2VlbXMgdG8gZG8gc2ltaWxhciB0byBzZXR0aW5nIF9fY3B1X2xvZ2ljYWxfbWFwIG9u IGFybTY0LgpUaGF0J3MgZG9uZSBpbiBhY3BpX21hcF9naWNfY3B1X2ludGVyZmFjZSwgd2hpY2gg aGFwcGVucyB3aGVuIE1BRFQgaXMKcGFyc2VkIGFuZCBJIGJlbGlldmUgaXQncyBvbmUgb2YgdGhl IHRoZSB0aGluZ3Mgd2UgbmVlZCB0byBkbyB3aGV0aGVyCm9yIG5vdCB0aGUgQ1BVIGlzIGVuYWJs ZWQgYXQgYm9vdC4gU28gYWxyZWFkeSBkb25lLgoKYWNwaV9wcm9jZXNzb3Jfc2V0X3BkYygpIC0t IGNvbmZpZ3VyZSBfUERDIHN1cHBvcnQgKHdoaWNoIEknZCBuZXZlciBoZWFyZApvZiBiZWZvcmUg bm93KS4gIERlcHJlY2F0ZWQgaW4gQUNQSSAzLjAuIEdpdmVuIHdlIGFyZSB1c2luZyBzdHVmZiBv bmx5IGFkZGVkCmluIDYuNSB3ZSBjYW4gcHJvYmFibHkgc2tpcCB0aGF0IGV2ZW4gaWYgaXQgd291 bGQgYmUgaGFybWxlc3MuCgphY3BpX21hcF9jcHUybm9kZSgpIC0tIGV2YWx1bGF0ZSBfUFhNIGFu ZCBzZXQgX19hcGljaWRfdG9fbm9kZVtdCmVudHJ5LiBUaGF0IGlzIG9ubHkgdXNlZCBmcm9tIHg4 NiBjb2RlLiBOb3Qgc3VyZSB3aGF0IGVxdWl2YWxlbnQgd291bGQgYmUuCkFsc28gbnVtYV9zZXRf bm9kZShjcHUsIG5pZCk7ICBXaGljaCBhZ2FpbiBzb3VuZHMgYSBsb3QgbW9yZSBnZW5lcmljIHRo YW4KaXQgaXMuIExvYWQgb2YgeDg2IHNwZWNpZmljIHN0dWZmICsgc2V0X2NwdV9udW1hX25vZGUo KSB3aGljaCBpcyBnZW5lcmljCmFuZCBmb3IgQVJNNjQgKGFuZCBhbnl0aGluZyB1c2luZyBDT05G SUdfR0VORVJJQ19BUkNIX05VTUEpIGlzIGNhbGxlZApieSBudW1hX3N0b3JlX2NwdV9pbmZvKCkg ZWl0aGVyIGZyb20gZWFybHlfbWFwX2NwdV90b19ub2RlKCkgb3Igc21wX3ByZXBhcmVfY3B1cygp CndoaWNoIGlzIGNhbGxlZCBmb3JfZWFjaF9wb3NzaWJsZV9jcHUoKSBhbmQgaGVuY2UgaGFzIGFs cmVhZHkgYmVlbiBkb25lLgoKU28gY29uY2x1c2lvbiBvbiB0aGlzIG9uZSBpcyB0aGVyZSBkb2Vz bid0IHNlZW0gdG8gYmUgYW55dGhpbmcgdG8gZG8uCldlIGNvdWxkIHByb3ZpZGUgYSBfX3dlYWsg ZnVuY3Rpb24gb3IgYW4gQVJNNjQgc3BlY2lmaWMgb25lIHRoYXQgZG9lcwpub3RoaW5nIG9yIGdh dGUgaXQgb24gYW4gYXBwcm9wcmlhdGUgY29uZmlnIHZhcmlhYmxlLiAgSG93ZXZlciwgZ2l2ZW4K SSBwcmVzdW1lICdmdXR1cmUnIEFSTTY0IHN1cHBvcnQgZm9yIENQVSBob3RwbHVnIHdpbGwgd2Fu dCB0byBkbyBzb21ldGhpbmcKaW4gdGhlc2UgY2FsbHMsIHBlcmhhcHMgYSBiZXR0ZXIgYmV0IGlz IHRvIHBhc3MgYSBib29sIGludG8gdGhlIGZ1bmN0aW9uCnRvIGluZGljYXRlIHRoZXNlIHNob3Vs ZCBiZSBza2lwcGVkIGlmIHByZXNlbnQgaXMgbm90IGNoYW5naW5nLgoKSGF2aW5nIGRvbmUgdGhh dCwgd2UgZW5kIHVwIHdpdGggY29kZSB0aGF0IGlzIG1lc3N5IGVub3VnaCB3ZSBhcmUKYmV0dGVy IG9mZiBrZWVwaW5nIHRoZW0gYXMgc2VwYXJhdGUgZnVuY3Rpb25zLCB0aG91Z2ggdGhleSBtYXkK bG9vayBhIGxpdHRsZSBtb3JlIHNpbWlsYXIgdGhhbiBpbiB0aGlzIHZlcnNpb24uCgpUaGVyZSBp cyBhIGZpbmFsIHRoaW5nIGluIGhlcmUgeW91IGRpZG4ndCBtZW50aW9uCnNldHRpbmcgcHItPmZs YWdzLm5lZWRfaG90cGx1Z19pbml0CndoaWNoIGNhdXNlcyBleHRyYSBzdHVmZiB0byBvY2N1ciBp biBwcm9jZXNzb3JfZHJpdmVyLmMKVGhlIGV4dHJhIHN0dWZmIGRvZXNuJ3Qgc2VlbSB0byBiZSBu ZWNlc3NhcnkgZm9yIHRoZSBlbmFibGUgY2FzZQpkZXNwaXRlIGJlaW5nIG5lZWRlZCBmb3IgY2hh bmdlIG9mIHByZXNlbnQgc3RhdHVzLgpJIGhhdmVuJ3QgZmlndXJlZCB0aGlzIGJpdCBvdXQgeWV0 IChJIG5lZWQgdG8gbWVzcyBhcm91bmQgb24geDg2CnRvIHVuZGVyc3RhbmQgd2hhdCBnb2VzIHdy b25nIGlmIHlvdSBkb24ndCB1c2UgdGhhdCBmbGFnKS4KCgo+IAo+IFRoZSBvbmx5IHRoaW5nIHRo YXQgY2FuIGJlIGRyb3BwZWQgZnJvbSBpdCBpcyB0aGUgX1NUQSBjaGVjayBBRkFJQ1MsCj4gYmVj YXVzZSBhY3BpX3Byb2Nlc3Nvcl9hZGQoKSB3b24ndCBldmVuIGJlIGNhbGxlZCBpZiB0aGUgQ1BV IGlzIG5vdAo+IHByZXNlbnQgKGFuZCBub3QgZW5hYmxlZCBhZnRlciB0aGUgZmlyc3QgcGF0Y2gp Lgo+IAo+IFNvIHdoeSBkb2VzIHRoZSBjb2RlIG5vdCBkbyAxIC0gMyBhYm92ZT8KSSBhZ3JlZSB3 aXRoIDEgYW5kIDIsIHJlYXNvbmluZyBmb3IgMyBnaXZlbiBhYm92ZS4KCj4gCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9iYXNlL2NwdS5jIGIvZHJpdmVycy9iYXNlL2NwdS5jCj4gPiBpbmRleCA0 N2RlMGYxNDBiYTYuLjEzZDA1MmJmMTNmNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvYmFzZS9j cHUuYwo+ID4gKysrIGIvZHJpdmVycy9iYXNlL2NwdS5jCj4gPiBAQCAtNTUzLDcgKzU1MywxMSBA QCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1X2Rldl9yZWdpc3Rlcl9nZW5lcmljKHZvaWQpCj4gPiAg ewo+ID4gICAgICAgICBpbnQgaSwgcmV0Owo+ID4KPiA+IC0gICAgICAgaWYgKCFJU19FTkFCTEVE KENPTkZJR19HRU5FUklDX0NQVV9ERVZJQ0VTKSkKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAg ICogV2hlbiBBQ1BJIGlzIGVuYWJsZWQsIENQVXMgYXJlIHJlZ2lzdGVyZWQgdmlhCj4gPiArICAg ICAgICAqIGFjcGlfcHJvY2Vzc29yX2dldF9pbmZvKCkuCj4gPiArICAgICAgICAqLwo+ID4gKyAg ICAgICBpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVMpIHx8ICFhY3Bp X2Rpc2FibGVkKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybjsgIAo+IAo+IEhvbmVzdGx5LCB0 aGlzIGxvb2tzIGxpa2UgYSBxdWljayBoYWNrIHRvIG1lIGFuZCBpdCBhYnNvbHV0ZWx5Cj4gcmVx dWlyZXMgYW4gQUNLIGZyb20gdGhlIHg4NiBtYWludGFpbmVycyB0byBnbyBhbnl3aGVyZS4KV2ls bCBhZGRyZXNzIHRoaXMgc2VwYXJhdGVseS4KCj4gCj4gPgo+ID4gICAgICAgICBmb3JfZWFjaF9w cmVzZW50X2NwdShpKSB7Cj4gPiAtLSAgCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJt LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=