From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) (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 5CD6078B69 for ; Tue, 20 Feb 2024 16:24:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.136 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708446257; cv=none; b=inZQmNpXTQNM4uqICUlhx0AOfiTRL9Fwoixj3zttdNx4XfCCLswbe6nUT6xNFaZ0jGGNaDfStB1nfw5h1djbtCvrRW/rlRvy0te/MMFVkmh3F+rY0aiUkRbbHRVr6aJnJlTfF6R10HjawH58tZCjKCRgRClV5+Jz1492f0bwsKc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708446257; c=relaxed/simple; bh=X1LmlBpp9/hB3Wl48tFmyVRbajeTNCx4reU1tnbF/qg=; h=Date:From:To:CC:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Oo1kpJWlr/uMcYuO15Nlfltl3pDKwcGqLVlmHfnub/X3HeImkkg4gdc4yNEV+lU4PSq8pbUc2zV+/QhcdYPOR14QdEZfcf0IL+IdQg+4p4hoSu5tfML6hBQN+yCHtCPHGJvOMUCvM5oaBPKcAGfFacxZHMZH+4V9kFDysMWbXnQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.136 Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id E703260684 for ; Tue, 20 Feb 2024 16:24:14 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -4.198 X-Spam-Level: Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aS8MHPHqZNWc for ; Tue, 20 Feb 2024 16:24:13 +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 smtp3.osuosl.org 2624760666 Authentication-Results: smtp3.osuosl.org; dmarc=pass (p=quarantine dis=none) header.from=Huawei.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp3.osuosl.org 2624760666 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id 2624760666 for ; Tue, 20 Feb 2024 16:24:11 +0000 (UTC) Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TfPkb0bShz6J9dD; Wed, 21 Feb 2024 00:19:51 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 6B52E1400DD; Wed, 21 Feb 2024 00:24:08 +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_128_GCM_SHA256) id 15.1.2507.35; Tue, 20 Feb 2024 16:24:07 +0000 Date: Tue, 20 Feb 2024 16:24:06 +0000 From: Jonathan Cameron To: "Russell King (Oracle)" CC: "Rafael J. Wysocki" , , , , , , , , , , , , , , , 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: <20240220162406.00005b59@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: lhrpeml100005.china.huawei.com (7.191.160.25) To lhrpeml500005.china.huawei.com (7.191.163.240) On Tue, 20 Feb 2024 15:13:58 +0000 "Russell King (Oracle)" wrote: > On Tue, Feb 20, 2024 at 11:27:15AM +0000, Russell King (Oracle) wrote: > > On Thu, Feb 15, 2024 at 08:22:29PM +0100, Rafael J. Wysocki wrote: =20 > > > On Wed, Jan 31, 2024 at 5:50=E2=80=AFPM Russell King wrote: =20 > > > > diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_proc= essor.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= _device *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 _if= f =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. > > >=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. > > >=20 > > > 2. It uses locking around arch_register_cpu() which doesn't seem > > > unreasonable either. > > >=20 > > > 3. It calls acpi_map_cpu() and I'm not sure why this is not done by > > > the new code. > > >=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? =20 > >=20 > > Honestly, I'm out of my depth with this and can't answer your > > questions - and I really don't want to try fiddling with this code > > because it's just too icky (even in its current form in mainline) > > to be understandable to anyone who hasn't gained a detailed knowledge > > of this code. > >=20 > > It's going to require a lot of analysis - how acpi_map_cpuid() behaves > > in all circumstances, what this means for invalid_logical_cpuid() and > > invalid_phys_cpuid(), what paths will be taken in each case. This code > > is already just too hairy for someone who isn't an experienced ACPI > > hacker to be able to follow and I don't see an obvious way to make it > > more readable. > >=20 > > James' additions make it even more complex and less readable. =20 >=20 > As an illustration of the problems I'm having here, I was just writing > a reply to this with a suggestion of transforming this code ultimately > to: >=20 > if (!get_cpu_device(pr->id)) { > int ret; >=20 > if (!invalid_logical_cpuid(pr->id) && cpu_present(pr->id)) > ret =3D acpi_processor_make_enabled(pr); > else > ret =3D acpi_processor_make_present(pr); >=20 > if (ret) > return ret; > } >=20 > (acpi_processor_make_present() would be acpi_processor_hotadd_init() > and acpi_processor_make_enabled() would be arch_register_cpu() at this > point.) >=20 > Then I realised that's a bad idea - because we really need to check > that pr->id is valid before calling get_cpu_device() on it, so this > won't work. That leaves us with: >=20 > int ret; >=20 > if (invalid_logical_cpuid(pr->id) || !cpu_present(pr->id)) { > /* x86 et.al. path */ > ret =3D acpi_processor_make_present(pr); > } else if (!get_cpu_device(pr->id)) { > /* Arm64 path */ > ret =3D acpi_processor_make_enabled(pr); > } else { > ret =3D 0; > } >=20 > if (ret) > return ret; >=20 > Now, the next transformation would be to move !get_cpu_device(pr->id) > into acpi_processor_make_enabled() which would eliminate one of those > if() legs. >=20 > Now, if we want to somehow make the call to arch_regster_cpu() common > in these two paths, the next question is what are the _precise_ > semantics of acpi_map_cpu(), particularly with respect to it > modifying pr->id. Is it guaranteed to always give the same result > for the same processor described in ACPI? What acpi_map_cpu() anyway, > I can find no documentation for it. >=20 > Then there's the question whether calling acpi_unmap_cpu() should be > done on the failure path if arch_register_cpu() fails, which is done > for the x86 path but not the Arm64 path. Should it be done for the > Arm64 path? I've no idea, but as Arm64 doesn't implement either of > these two functions, I guess they could be stubbed out and thus be > no-ops - but then we open a hole where if pr->id is invalid, we > end up passing that invalid value to arch_register_cpu() which I'm > quite sure will explode with a negative CPU number. >=20 > So, to my mind, what you're effectively asking for is a total rewrite > of all the code in and called by acpi_processor_get_info()... and that > is not something I am willing to do (because it's too far outside of > my knowledge area.) >=20 > As I said in my reply to patch 1, I think your comments on patch 2 > make Arm64 vcpu hotplug unachievable in a reasonable time frame, and > certainly outside the bounds of what I can do to progress this. >=20 > So, at this point I'm going to stand down from further participation > with this patch set as I believe I've reached the limit of what I can > do to progress it. >=20 Thanks for your hard work on this Russell - we have moved forwards. Short of anyone else stepping up I'll pick this up with the help of some my colleagues. As such I'm keen on getting patch 1 upstream ASAP so that we can exclude the need for some of the other workarounds from earlier versions of this series (the ones dropped before now). We will need a little time to get up to speed on the current status and discussion points Russell raises above. Jonathan 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 36FF6C5475B for ; Tue, 20 Feb 2024 16:24:34 +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=gDmyxxiNRluJ/Kqx2G9rYRvJbkDqYzShEx43E2TCYfI=; b=tk0z0kLQMIfGAJ ae0dxewNJ9Kz4lljXhck5TeD7uM2LKDcuBzf5+cQsfVdhF3AKC6zfDi6cMxnrWjJNsxX3eI/Hwr9R An1Kr4/gjaUr/gHpc+JxeMlSM+GIQT91g1BCeT5J8hD+cbCfMB/iwphHtGtYViJOJhOivbMCcgX9Q aFzOM9wl1PigPGTphUniRG61VYmmCerA/VcE8NWBkLzVt2JQKfS7A7YJFRhacYOm9m85CD8AZMzHk I72IYE2IiexVTyEAPfiMutmThmTJgmKAOlKKDzVdh57tovx71AKmWvBFSyLM7KyPgIMQTxo5BpYFa iuqmPWGpYLvByZd3m3BQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rcSux-0000000FRcd-15FZ; Tue, 20 Feb 2024 16:24:27 +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 1rcSup-0000000FRYg-21Ol; Tue, 20 Feb 2024 16:24:24 +0000 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TfPkb0bShz6J9dD; Wed, 21 Feb 2024 00:19:51 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 6B52E1400DD; Wed, 21 Feb 2024 00:24:08 +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_128_GCM_SHA256) id 15.1.2507.35; Tue, 20 Feb 2024 16:24:07 +0000 Date: Tue, 20 Feb 2024 16:24:06 +0000 From: Jonathan Cameron To: "Russell King (Oracle)" CC: "Rafael J. Wysocki" , , , , , , , , , , , , , , , 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: <20240220162406.00005b59@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: lhrpeml100005.china.huawei.com (7.191.160.25) 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-20240220_082419_836865_CFE0123F X-CRM114-Status: GOOD ( 61.02 ) 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 T24gVHVlLCAyMCBGZWIgMjAyNCAxNToxMzo1OCArMDAwMAoiUnVzc2VsbCBLaW5nIChPcmFjbGUp IiA8bGludXhAYXJtbGludXgub3JnLnVrPiB3cm90ZToKCj4gT24gVHVlLCBGZWIgMjAsIDIwMjQg YXQgMTE6Mjc6MTVBTSArMDAwMCwgUnVzc2VsbCBLaW5nIChPcmFjbGUpIHdyb3RlOgo+ID4gT24g VGh1LCBGZWIgMTUsIDIwMjQgYXQgMDg6MjI6MjlQTSArMDEwMCwgUmFmYWVsIEouIFd5c29ja2kg d3JvdGU6ICAKPiA+ID4gT24gV2VkLCBKYW4gMzEsIDIwMjQgYXQgNTo1MOKAr1BNIFJ1c3NlbGwg S2luZyA8cm1rK2tlcm5lbEBhcm1saW51eC5vcmcudWs+IHdyb3RlOiAgCj4gPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jIGIvZHJpdmVycy9hY3BpL2FjcGlf cHJvY2Vzc29yLmMKPiA+ID4gPiBpbmRleCBjZjdjMWNjYTY5ZGQuLmE2OGM0NzVjZGVhNSAxMDA2 NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gPiA+ICsr KyBiL2RyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jCj4gPiA+ID4gQEAgLTMxNCw2ICszMTQs MTggQEAgc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbyhzdHJ1Y3QgYWNwaV9kZXZp Y2UgKmRldmljZSkKPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBjcHVmcmVxX2FkZF9k ZXZpY2UoImFjcGktY3B1ZnJlcSIpOwo+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+Cj4gPiA+ID4g KyAgICAgICAvKgo+ID4gPiA+ICsgICAgICAgICogUmVnaXN0ZXIgQ1BVcyB0aGF0IGFyZSBwcmVz ZW50LiBnZXRfY3B1X2RldmljZSgpIGlzIHVzZWQgdG8gc2tpcAo+ID4gPiA+ICsgICAgICAgICog ZHVwbGljYXRlIENQVSBkZXNjcmlwdGlvbnMgZnJvbSBmaXJtd2FyZS4KPiA+ID4gPiArICAgICAg ICAqLwo+ID4gPiA+ICsgICAgICAgaWYgKCFpbnZhbGlkX2xvZ2ljYWxfY3B1aWQocHItPmlkKSAm JiBjcHVfcHJlc2VudChwci0+aWQpICYmCj4gPiA+ID4gKyAgICAgICAgICAgIWdldF9jcHVfZGV2 aWNlKHByLT5pZCkpIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgaW50IHJldCA9IGFyY2hfcmVn aXN0ZXJfY3B1KHByLT5pZCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAo cmV0KQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4g KyAgICAgICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICAgICAgICAgLyoKPiA+ID4gPiAgICAgICAgICAq ICBFeHRyYSBQcm9jZXNzb3Igb2JqZWN0cyBtYXkgYmUgZW51bWVyYXRlZCBvbiBNUCBzeXN0ZW1z IHdpdGgKPiA+ID4gPiAgICAgICAgICAqICBsZXNzIHRoYW4gdGhlIG1heCAjIG9mIENQVXMuIFRo ZXkgc2hvdWxkIGJlIGlnbm9yZWQgX2lmZiAgCj4gPiA+IAo+ID4gPiBUaGlzIGlzIGludGVyZXN0 aW5nLCBiZWNhdXNlIHJpZ2h0IGJlbG93IHRoZXJlIGlzIHRoZSBmb2xsb3dpbmcgY29kZToKPiA+ ID4gCj4gPiA+ICAgICBpZiAoaW52YWxpZF9sb2dpY2FsX2NwdWlkKHByLT5pZCkgfHwgIWNwdV9w cmVzZW50KHByLT5pZCkpIHsKPiA+ID4gICAgICAgICBpbnQgcmV0ID0gYWNwaV9wcm9jZXNzb3Jf aG90YWRkX2luaXQocHIpOwo+ID4gPiAKPiA+ID4gICAgICAgICBpZiAocmV0KQo+ID4gPiAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiAgICAgfQo+ID4gPiAKPiA+ID4gYW5kIGFjcGlfcHJv Y2Vzc29yX2hvdGFkZF9pbml0KCkgZXNzZW50aWFsbHkgY2FsbHMgYXJjaF9yZWdpc3Rlcl9jcHUo KQo+ID4gPiB3aXRoIHNvbWUgZXh0cmEgdGhpbmdzIGFyb3VuZCBpdCAobW9yZSBhYm91dCB0aGF0 IGJlbG93KS4KPiA+ID4gCj4gPiA+IEkgZG8gcmVhbGl6ZSB0aGF0IGFjcGlfcHJvY2Vzc29yX2hv dGFkZF9pbml0KCkgaXMgZGVmaW5lZCB1bmRlcgo+ID4gPiBDT05GSUdfQUNQSV9IT1RQTFVHX0NQ VSwgc28gZm9yIHRoZSBzYWtlIG9mIHRoZSBhcmd1bWVudCBsZXQncwo+ID4gPiBjb25zaWRlciBh biBhcmNoaXRlY3R1cmUgd2hlcmUgQ09ORklHX0FDUElfSE9UUExVR19DUFUgaXMgc2V0Lgo+ID4g PiAKPiA+ID4gU28gd2h5IGFyZSB0aGUgdHdvIGNvbmRpdGlvbmFscyB0aGF0IGFsbW9zdCBjb250 cmFkaWN0IGVhY2ggb3RoZXIgYm90aAo+ID4gPiBuZWVkZWQ/ICBJdCBsb29rcyBsaWtlIHRoZSBu ZXcgY29kZSBjb3VsZCBiZSBjb21iaW5lZCB3aXRoCj4gPiA+IGFjcGlfcHJvY2Vzc29yX2hvdGFk ZF9pbml0KCkgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGluIGFsbCBjYXNlcy4KPiA+ID4gCj4gPiA+ IE5vdywgYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQoKSBkb2VzIHNvbWUgZXh0cmEgdGhpbmdz IHRoYXQgbG9vawo+ID4gPiBsaWtlIHRoZXkgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIG5ldyBjb2Rl IHRvby4KPiA+ID4gCj4gPiA+IDEuIEl0IGNoZWNrcyBpbnZhbGlkX3BoeXNfY3B1aWQoKSB3aGlj aCBhcHBlYXJzIHRvIGJlIGEgZ29vZCBpZGVhIHRvIG1lLgo+ID4gPiAKPiA+ID4gMi4gSXQgdXNl cyBsb2NraW5nIGFyb3VuZCBhcmNoX3JlZ2lzdGVyX2NwdSgpIHdoaWNoIGRvZXNuJ3Qgc2VlbQo+ ID4gPiB1bnJlYXNvbmFibGUgZWl0aGVyLgo+ID4gPiAKPiA+ID4gMy4gSXQgY2FsbHMgYWNwaV9t YXBfY3B1KCkgYW5kIEknbSBub3Qgc3VyZSB3aHkgdGhpcyBpcyBub3QgZG9uZSBieQo+ID4gPiB0 aGUgbmV3IGNvZGUuCj4gPiA+IAo+ID4gPiBUaGUgb25seSB0aGluZyB0aGF0IGNhbiBiZSBkcm9w cGVkIGZyb20gaXQgaXMgdGhlIF9TVEEgY2hlY2sgQUZBSUNTLAo+ID4gPiBiZWNhdXNlIGFjcGlf cHJvY2Vzc29yX2FkZCgpIHdvbid0IGV2ZW4gYmUgY2FsbGVkIGlmIHRoZSBDUFUgaXMgbm90Cj4g PiA+IHByZXNlbnQgKGFuZCBub3QgZW5hYmxlZCBhZnRlciB0aGUgZmlyc3QgcGF0Y2gpLgo+ID4g PiAKPiA+ID4gU28gd2h5IGRvZXMgdGhlIGNvZGUgbm90IGRvIDEgLSAzIGFib3ZlPyAgCj4gPiAK PiA+IEhvbmVzdGx5LCBJJ20gb3V0IG9mIG15IGRlcHRoIHdpdGggdGhpcyBhbmQgY2FuJ3QgYW5z d2VyIHlvdXIKPiA+IHF1ZXN0aW9ucyAtIGFuZCBJIHJlYWxseSBkb24ndCB3YW50IHRvIHRyeSBm aWRkbGluZyB3aXRoIHRoaXMgY29kZQo+ID4gYmVjYXVzZSBpdCdzIGp1c3QgdG9vIGlja3kgKGV2 ZW4gaW4gaXRzIGN1cnJlbnQgZm9ybSBpbiBtYWlubGluZSkKPiA+IHRvIGJlIHVuZGVyc3RhbmRh YmxlIHRvIGFueW9uZSB3aG8gaGFzbid0IGdhaW5lZCBhIGRldGFpbGVkIGtub3dsZWRnZQo+ID4g b2YgdGhpcyBjb2RlLgo+ID4gCj4gPiBJdCdzIGdvaW5nIHRvIHJlcXVpcmUgYSBsb3Qgb2YgYW5h bHlzaXMgLSBob3cgYWNwaV9tYXBfY3B1aWQoKSBiZWhhdmVzCj4gPiBpbiBhbGwgY2lyY3Vtc3Rh bmNlcywgd2hhdCB0aGlzIG1lYW5zIGZvciBpbnZhbGlkX2xvZ2ljYWxfY3B1aWQoKSBhbmQKPiA+ IGludmFsaWRfcGh5c19jcHVpZCgpLCB3aGF0IHBhdGhzIHdpbGwgYmUgdGFrZW4gaW4gZWFjaCBj YXNlLiBUaGlzIGNvZGUKPiA+IGlzIGFscmVhZHkganVzdCB0b28gaGFpcnkgZm9yIHNvbWVvbmUg d2hvIGlzbid0IGFuIGV4cGVyaWVuY2VkIEFDUEkKPiA+IGhhY2tlciB0byBiZSBhYmxlIHRvIGZv bGxvdyBhbmQgSSBkb24ndCBzZWUgYW4gb2J2aW91cyB3YXkgdG8gbWFrZSBpdAo+ID4gbW9yZSBy ZWFkYWJsZS4KPiA+IAo+ID4gSmFtZXMnIGFkZGl0aW9ucyBtYWtlIGl0IGV2ZW4gbW9yZSBjb21w bGV4IGFuZCBsZXNzIHJlYWRhYmxlLiAgCj4gCj4gQXMgYW4gaWxsdXN0cmF0aW9uIG9mIHRoZSBw cm9ibGVtcyBJJ20gaGF2aW5nIGhlcmUsIEkgd2FzIGp1c3Qgd3JpdGluZwo+IGEgcmVwbHkgdG8g dGhpcyB3aXRoIGEgc3VnZ2VzdGlvbiBvZiB0cmFuc2Zvcm1pbmcgdGhpcyBjb2RlIHVsdGltYXRl bHkKPiB0bzoKPiAKPiAJaWYgKCFnZXRfY3B1X2RldmljZShwci0+aWQpKSB7Cj4gCQlpbnQgcmV0 Owo+IAo+IAkJaWYgKCFpbnZhbGlkX2xvZ2ljYWxfY3B1aWQocHItPmlkKSAmJiBjcHVfcHJlc2Vu dChwci0+aWQpKQo+IAkJCXJldCA9IGFjcGlfcHJvY2Vzc29yX21ha2VfZW5hYmxlZChwcik7Cj4g CQllbHNlCj4gCQkJcmV0ID0gYWNwaV9wcm9jZXNzb3JfbWFrZV9wcmVzZW50KHByKTsKPiAKPiAJ CWlmIChyZXQpCj4gCQkJcmV0dXJuIHJldDsKPiAJfQo+IAo+IChhY3BpX3Byb2Nlc3Nvcl9tYWtl X3ByZXNlbnQoKSB3b3VsZCBiZSBhY3BpX3Byb2Nlc3Nvcl9ob3RhZGRfaW5pdCgpCj4gYW5kIGFj cGlfcHJvY2Vzc29yX21ha2VfZW5hYmxlZCgpIHdvdWxkIGJlIGFyY2hfcmVnaXN0ZXJfY3B1KCkg YXQgdGhpcwo+IHBvaW50LikKPiAKPiBUaGVuIEkgcmVhbGlzZWQgdGhhdCdzIGEgYmFkIGlkZWEg LSBiZWNhdXNlIHdlIHJlYWxseSBuZWVkIHRvIGNoZWNrCj4gdGhhdCBwci0+aWQgaXMgdmFsaWQg YmVmb3JlIGNhbGxpbmcgZ2V0X2NwdV9kZXZpY2UoKSBvbiBpdCwgc28gdGhpcwo+IHdvbid0IHdv cmsuIFRoYXQgbGVhdmVzIHVzIHdpdGg6Cj4gCj4gCWludCByZXQ7Cj4gCj4gCWlmIChpbnZhbGlk X2xvZ2ljYWxfY3B1aWQocHItPmlkKSB8fCAhY3B1X3ByZXNlbnQocHItPmlkKSkgewo+IAkJLyog eDg2IGV0LmFsLiBwYXRoICovCj4gCQlyZXQgPSBhY3BpX3Byb2Nlc3Nvcl9tYWtlX3ByZXNlbnQo cHIpOwo+IAl9IGVsc2UgaWYgKCFnZXRfY3B1X2RldmljZShwci0+aWQpKSB7Cj4gCQkvKiBBcm02 NCBwYXRoICovCj4gCQlyZXQgPSBhY3BpX3Byb2Nlc3Nvcl9tYWtlX2VuYWJsZWQocHIpOwo+IAl9 IGVsc2Ugewo+IAkJcmV0ID0gMDsKPiAJfQo+IAo+IAlpZiAocmV0KQo+IAkJcmV0dXJuIHJldDsK PiAKPiBOb3csIHRoZSBuZXh0IHRyYW5zZm9ybWF0aW9uIHdvdWxkIGJlIHRvIG1vdmUgIWdldF9j cHVfZGV2aWNlKHByLT5pZCkKPiBpbnRvIGFjcGlfcHJvY2Vzc29yX21ha2VfZW5hYmxlZCgpIHdo aWNoIHdvdWxkIGVsaW1pbmF0ZSBvbmUgb2YgdGhvc2UKPiBpZigpIGxlZ3MuCj4gCj4gTm93LCBp ZiB3ZSB3YW50IHRvIHNvbWVob3cgbWFrZSB0aGUgY2FsbCB0byBhcmNoX3JlZ3N0ZXJfY3B1KCkg Y29tbW9uCj4gaW4gdGhlc2UgdHdvIHBhdGhzLCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGF0IGFy ZSB0aGUgX3ByZWNpc2VfCj4gc2VtYW50aWNzIG9mIGFjcGlfbWFwX2NwdSgpLCBwYXJ0aWN1bGFy bHkgd2l0aCByZXNwZWN0IHRvIGl0Cj4gbW9kaWZ5aW5nIHByLT5pZC4gSXMgaXQgZ3VhcmFudGVl ZCB0byBhbHdheXMgZ2l2ZSB0aGUgc2FtZSByZXN1bHQKPiBmb3IgdGhlIHNhbWUgcHJvY2Vzc29y IGRlc2NyaWJlZCBpbiBBQ1BJPyBXaGF0IGFjcGlfbWFwX2NwdSgpIGFueXdheSwKPiBJIGNhbiBm aW5kIG5vIGRvY3VtZW50YXRpb24gZm9yIGl0Lgo+IAo+IFRoZW4gdGhlcmUncyB0aGUgcXVlc3Rp b24gd2hldGhlciBjYWxsaW5nIGFjcGlfdW5tYXBfY3B1KCkgc2hvdWxkIGJlCj4gZG9uZSBvbiB0 aGUgZmFpbHVyZSBwYXRoIGlmIGFyY2hfcmVnaXN0ZXJfY3B1KCkgZmFpbHMsIHdoaWNoIGlzIGRv bmUKPiBmb3IgdGhlIHg4NiBwYXRoIGJ1dCBub3QgdGhlIEFybTY0IHBhdGguIFNob3VsZCBpdCBi ZSBkb25lIGZvciB0aGUKPiBBcm02NCBwYXRoPyBJJ3ZlIG5vIGlkZWEsIGJ1dCBhcyBBcm02NCBk b2Vzbid0IGltcGxlbWVudCBlaXRoZXIgb2YKPiB0aGVzZSB0d28gZnVuY3Rpb25zLCBJIGd1ZXNz IHRoZXkgY291bGQgYmUgc3R1YmJlZCBvdXQgYW5kIHRodXMgYmUKPiBuby1vcHMgLSBidXQgdGhl biB3ZSBvcGVuIGEgaG9sZSB3aGVyZSBpZiBwci0+aWQgaXMgaW52YWxpZCwgd2UKPiBlbmQgdXAg cGFzc2luZyB0aGF0IGludmFsaWQgdmFsdWUgdG8gYXJjaF9yZWdpc3Rlcl9jcHUoKSB3aGljaCBJ J20KPiBxdWl0ZSBzdXJlIHdpbGwgZXhwbG9kZSB3aXRoIGEgbmVnYXRpdmUgQ1BVIG51bWJlci4K PiAKPiBTbywgdG8gbXkgbWluZCwgd2hhdCB5b3UncmUgZWZmZWN0aXZlbHkgYXNraW5nIGZvciBp cyBhIHRvdGFsIHJld3JpdGUKPiBvZiBhbGwgdGhlIGNvZGUgaW4gYW5kIGNhbGxlZCBieSBhY3Bp X3Byb2Nlc3Nvcl9nZXRfaW5mbygpLi4uIGFuZCB0aGF0Cj4gaXMgbm90IHNvbWV0aGluZyBJIGFt IHdpbGxpbmcgdG8gZG8gKGJlY2F1c2UgaXQncyB0b28gZmFyIG91dHNpZGUgb2YKPiBteSBrbm93 bGVkZ2UgYXJlYS4pCj4gCj4gQXMgSSBzYWlkIGluIG15IHJlcGx5IHRvIHBhdGNoIDEsIEkgdGhp bmsgeW91ciBjb21tZW50cyBvbiBwYXRjaCAyCj4gbWFrZSBBcm02NCB2Y3B1IGhvdHBsdWcgdW5h Y2hpZXZhYmxlIGluIGEgcmVhc29uYWJsZSB0aW1lIGZyYW1lLCBhbmQKPiBjZXJ0YWlubHkgb3V0 c2lkZSB0aGUgYm91bmRzIG9mIHdoYXQgSSBjYW4gZG8gdG8gcHJvZ3Jlc3MgdGhpcy4KPiAKPiBT bywgYXQgdGhpcyBwb2ludCBJJ20gZ29pbmcgdG8gc3RhbmQgZG93biBmcm9tIGZ1cnRoZXIgcGFy dGljaXBhdGlvbgo+IHdpdGggdGhpcyBwYXRjaCBzZXQgYXMgSSBiZWxpZXZlIEkndmUgcmVhY2hl ZCB0aGUgbGltaXQgb2Ygd2hhdCBJIGNhbgo+IGRvIHRvIHByb2dyZXNzIGl0Lgo+IAoKVGhhbmtz IGZvciB5b3VyIGhhcmQgd29yayBvbiB0aGlzIFJ1c3NlbGwgLSB3ZSBoYXZlIG1vdmVkIGZvcndh cmRzLgoKU2hvcnQgb2YgYW55b25lIGVsc2Ugc3RlcHBpbmcgdXAgSSdsbCBwaWNrIHRoaXMgdXAg d2l0aAp0aGUgaGVscCBvZiBzb21lIG15IGNvbGxlYWd1ZXMuIEFzIHN1Y2ggSSdtIGtlZW4gb24g Z2V0dGluZyBwYXRjaAoxIHVwc3RyZWFtIEFTQVAgc28gdGhhdCB3ZSBjYW4gZXhjbHVkZSB0aGUg bmVlZCBmb3Igc29tZSBvZiB0aGUKb3RoZXIgd29ya2Fyb3VuZHMgZnJvbSBlYXJsaWVyIHZlcnNp b25zIG9mIHRoaXMgc2VyaWVzICh0aGUgb25lcwpkcm9wcGVkIGJlZm9yZSBub3cpLgoKV2Ugd2ls bCBuZWVkIGEgbGl0dGxlIHRpbWUgdG8gZ2V0IHVwIHRvIHNwZWVkIG9uIHRoZSBjdXJyZW50IHN0 YXR1cwphbmQgZGlzY3Vzc2lvbiBwb2ludHMgUnVzc2VsbCByYWlzZXMgYWJvdmUuCgpKb25hdGhh bgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 5C38DC5475B for ; Tue, 20 Feb 2024 16:24:39 +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=XemBwoOo6Rdoh+i4FivPiyILDTlMfAjv+d44oTxn0+M=; b=KuzhK2Lus1xJvZ ALmhmBqsWcsZYFEcLeCmxflMMcpq/biSOi0vj1dABCQvT7vB+QwFaS75BxY8W43p+MAHweZQXSRud WiHwnPPck6rWhCyllmwQCoR2YaBGyVrul95rPKJzX0L277KhfL5uFh3lCBDbPrzsF/dqY6HihU6/N L5oQVxyxaE13JVLfaGg3n+fH3CExtyrd2JX2vbx5WSLtoOZADRh5xl2OifpS+hW2DZFspFpY7K5Ps qWP/+f7RNk4YDmQFXf/c0PqFb/elXybWXbuVc60nCM8XjKPwhp6+J9rSZuYW6Xe6LH1wdScQlgWNl RZ2g3Hing543aNq3K2YQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rcSuw-0000000FRc6-2aoJ; Tue, 20 Feb 2024 16:24:26 +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 1rcSup-0000000FRYg-21Ol; Tue, 20 Feb 2024 16:24:24 +0000 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TfPkb0bShz6J9dD; Wed, 21 Feb 2024 00:19:51 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 6B52E1400DD; Wed, 21 Feb 2024 00:24:08 +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_128_GCM_SHA256) id 15.1.2507.35; Tue, 20 Feb 2024 16:24:07 +0000 Date: Tue, 20 Feb 2024 16:24:06 +0000 From: Jonathan Cameron To: "Russell King (Oracle)" CC: "Rafael J. Wysocki" , , , , , , , , , , , , , , , 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: <20240220162406.00005b59@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: lhrpeml100005.china.huawei.com (7.191.160.25) 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-20240220_082419_836865_CFE0123F X-CRM114-Status: GOOD ( 61.02 ) 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 T24gVHVlLCAyMCBGZWIgMjAyNCAxNToxMzo1OCArMDAwMAoiUnVzc2VsbCBLaW5nIChPcmFjbGUp IiA8bGludXhAYXJtbGludXgub3JnLnVrPiB3cm90ZToKCj4gT24gVHVlLCBGZWIgMjAsIDIwMjQg YXQgMTE6Mjc6MTVBTSArMDAwMCwgUnVzc2VsbCBLaW5nIChPcmFjbGUpIHdyb3RlOgo+ID4gT24g VGh1LCBGZWIgMTUsIDIwMjQgYXQgMDg6MjI6MjlQTSArMDEwMCwgUmFmYWVsIEouIFd5c29ja2kg d3JvdGU6ICAKPiA+ID4gT24gV2VkLCBKYW4gMzEsIDIwMjQgYXQgNTo1MOKAr1BNIFJ1c3NlbGwg S2luZyA8cm1rK2tlcm5lbEBhcm1saW51eC5vcmcudWs+IHdyb3RlOiAgCj4gPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jIGIvZHJpdmVycy9hY3BpL2FjcGlf cHJvY2Vzc29yLmMKPiA+ID4gPiBpbmRleCBjZjdjMWNjYTY5ZGQuLmE2OGM0NzVjZGVhNSAxMDA2 NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gPiA+ICsr KyBiL2RyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jCj4gPiA+ID4gQEAgLTMxNCw2ICszMTQs MTggQEAgc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbyhzdHJ1Y3QgYWNwaV9kZXZp Y2UgKmRldmljZSkKPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICBjcHVmcmVxX2FkZF9k ZXZpY2UoImFjcGktY3B1ZnJlcSIpOwo+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+Cj4gPiA+ID4g KyAgICAgICAvKgo+ID4gPiA+ICsgICAgICAgICogUmVnaXN0ZXIgQ1BVcyB0aGF0IGFyZSBwcmVz ZW50LiBnZXRfY3B1X2RldmljZSgpIGlzIHVzZWQgdG8gc2tpcAo+ID4gPiA+ICsgICAgICAgICog ZHVwbGljYXRlIENQVSBkZXNjcmlwdGlvbnMgZnJvbSBmaXJtd2FyZS4KPiA+ID4gPiArICAgICAg ICAqLwo+ID4gPiA+ICsgICAgICAgaWYgKCFpbnZhbGlkX2xvZ2ljYWxfY3B1aWQocHItPmlkKSAm JiBjcHVfcHJlc2VudChwci0+aWQpICYmCj4gPiA+ID4gKyAgICAgICAgICAgIWdldF9jcHVfZGV2 aWNlKHByLT5pZCkpIHsKPiA+ID4gPiArICAgICAgICAgICAgICAgaW50IHJldCA9IGFyY2hfcmVn aXN0ZXJfY3B1KHByLT5pZCk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgICAgICAgICBpZiAo cmV0KQo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ID4g KyAgICAgICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICAgICAgICAgLyoKPiA+ID4gPiAgICAgICAgICAq ICBFeHRyYSBQcm9jZXNzb3Igb2JqZWN0cyBtYXkgYmUgZW51bWVyYXRlZCBvbiBNUCBzeXN0ZW1z IHdpdGgKPiA+ID4gPiAgICAgICAgICAqICBsZXNzIHRoYW4gdGhlIG1heCAjIG9mIENQVXMuIFRo ZXkgc2hvdWxkIGJlIGlnbm9yZWQgX2lmZiAgCj4gPiA+IAo+ID4gPiBUaGlzIGlzIGludGVyZXN0 aW5nLCBiZWNhdXNlIHJpZ2h0IGJlbG93IHRoZXJlIGlzIHRoZSBmb2xsb3dpbmcgY29kZToKPiA+ ID4gCj4gPiA+ICAgICBpZiAoaW52YWxpZF9sb2dpY2FsX2NwdWlkKHByLT5pZCkgfHwgIWNwdV9w cmVzZW50KHByLT5pZCkpIHsKPiA+ID4gICAgICAgICBpbnQgcmV0ID0gYWNwaV9wcm9jZXNzb3Jf aG90YWRkX2luaXQocHIpOwo+ID4gPiAKPiA+ID4gICAgICAgICBpZiAocmV0KQo+ID4gPiAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiAgICAgfQo+ID4gPiAKPiA+ID4gYW5kIGFjcGlfcHJv Y2Vzc29yX2hvdGFkZF9pbml0KCkgZXNzZW50aWFsbHkgY2FsbHMgYXJjaF9yZWdpc3Rlcl9jcHUo KQo+ID4gPiB3aXRoIHNvbWUgZXh0cmEgdGhpbmdzIGFyb3VuZCBpdCAobW9yZSBhYm91dCB0aGF0 IGJlbG93KS4KPiA+ID4gCj4gPiA+IEkgZG8gcmVhbGl6ZSB0aGF0IGFjcGlfcHJvY2Vzc29yX2hv dGFkZF9pbml0KCkgaXMgZGVmaW5lZCB1bmRlcgo+ID4gPiBDT05GSUdfQUNQSV9IT1RQTFVHX0NQ VSwgc28gZm9yIHRoZSBzYWtlIG9mIHRoZSBhcmd1bWVudCBsZXQncwo+ID4gPiBjb25zaWRlciBh biBhcmNoaXRlY3R1cmUgd2hlcmUgQ09ORklHX0FDUElfSE9UUExVR19DUFUgaXMgc2V0Lgo+ID4g PiAKPiA+ID4gU28gd2h5IGFyZSB0aGUgdHdvIGNvbmRpdGlvbmFscyB0aGF0IGFsbW9zdCBjb250 cmFkaWN0IGVhY2ggb3RoZXIgYm90aAo+ID4gPiBuZWVkZWQ/ICBJdCBsb29rcyBsaWtlIHRoZSBu ZXcgY29kZSBjb3VsZCBiZSBjb21iaW5lZCB3aXRoCj4gPiA+IGFjcGlfcHJvY2Vzc29yX2hvdGFk ZF9pbml0KCkgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nIGluIGFsbCBjYXNlcy4KPiA+ID4gCj4gPiA+ IE5vdywgYWNwaV9wcm9jZXNzb3JfaG90YWRkX2luaXQoKSBkb2VzIHNvbWUgZXh0cmEgdGhpbmdz IHRoYXQgbG9vawo+ID4gPiBsaWtlIHRoZXkgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIG5ldyBjb2Rl IHRvby4KPiA+ID4gCj4gPiA+IDEuIEl0IGNoZWNrcyBpbnZhbGlkX3BoeXNfY3B1aWQoKSB3aGlj aCBhcHBlYXJzIHRvIGJlIGEgZ29vZCBpZGVhIHRvIG1lLgo+ID4gPiAKPiA+ID4gMi4gSXQgdXNl cyBsb2NraW5nIGFyb3VuZCBhcmNoX3JlZ2lzdGVyX2NwdSgpIHdoaWNoIGRvZXNuJ3Qgc2VlbQo+ ID4gPiB1bnJlYXNvbmFibGUgZWl0aGVyLgo+ID4gPiAKPiA+ID4gMy4gSXQgY2FsbHMgYWNwaV9t YXBfY3B1KCkgYW5kIEknbSBub3Qgc3VyZSB3aHkgdGhpcyBpcyBub3QgZG9uZSBieQo+ID4gPiB0 aGUgbmV3IGNvZGUuCj4gPiA+IAo+ID4gPiBUaGUgb25seSB0aGluZyB0aGF0IGNhbiBiZSBkcm9w cGVkIGZyb20gaXQgaXMgdGhlIF9TVEEgY2hlY2sgQUZBSUNTLAo+ID4gPiBiZWNhdXNlIGFjcGlf cHJvY2Vzc29yX2FkZCgpIHdvbid0IGV2ZW4gYmUgY2FsbGVkIGlmIHRoZSBDUFUgaXMgbm90Cj4g PiA+IHByZXNlbnQgKGFuZCBub3QgZW5hYmxlZCBhZnRlciB0aGUgZmlyc3QgcGF0Y2gpLgo+ID4g PiAKPiA+ID4gU28gd2h5IGRvZXMgdGhlIGNvZGUgbm90IGRvIDEgLSAzIGFib3ZlPyAgCj4gPiAK PiA+IEhvbmVzdGx5LCBJJ20gb3V0IG9mIG15IGRlcHRoIHdpdGggdGhpcyBhbmQgY2FuJ3QgYW5z d2VyIHlvdXIKPiA+IHF1ZXN0aW9ucyAtIGFuZCBJIHJlYWxseSBkb24ndCB3YW50IHRvIHRyeSBm aWRkbGluZyB3aXRoIHRoaXMgY29kZQo+ID4gYmVjYXVzZSBpdCdzIGp1c3QgdG9vIGlja3kgKGV2 ZW4gaW4gaXRzIGN1cnJlbnQgZm9ybSBpbiBtYWlubGluZSkKPiA+IHRvIGJlIHVuZGVyc3RhbmRh YmxlIHRvIGFueW9uZSB3aG8gaGFzbid0IGdhaW5lZCBhIGRldGFpbGVkIGtub3dsZWRnZQo+ID4g b2YgdGhpcyBjb2RlLgo+ID4gCj4gPiBJdCdzIGdvaW5nIHRvIHJlcXVpcmUgYSBsb3Qgb2YgYW5h bHlzaXMgLSBob3cgYWNwaV9tYXBfY3B1aWQoKSBiZWhhdmVzCj4gPiBpbiBhbGwgY2lyY3Vtc3Rh bmNlcywgd2hhdCB0aGlzIG1lYW5zIGZvciBpbnZhbGlkX2xvZ2ljYWxfY3B1aWQoKSBhbmQKPiA+ IGludmFsaWRfcGh5c19jcHVpZCgpLCB3aGF0IHBhdGhzIHdpbGwgYmUgdGFrZW4gaW4gZWFjaCBj YXNlLiBUaGlzIGNvZGUKPiA+IGlzIGFscmVhZHkganVzdCB0b28gaGFpcnkgZm9yIHNvbWVvbmUg d2hvIGlzbid0IGFuIGV4cGVyaWVuY2VkIEFDUEkKPiA+IGhhY2tlciB0byBiZSBhYmxlIHRvIGZv bGxvdyBhbmQgSSBkb24ndCBzZWUgYW4gb2J2aW91cyB3YXkgdG8gbWFrZSBpdAo+ID4gbW9yZSBy ZWFkYWJsZS4KPiA+IAo+ID4gSmFtZXMnIGFkZGl0aW9ucyBtYWtlIGl0IGV2ZW4gbW9yZSBjb21w bGV4IGFuZCBsZXNzIHJlYWRhYmxlLiAgCj4gCj4gQXMgYW4gaWxsdXN0cmF0aW9uIG9mIHRoZSBw cm9ibGVtcyBJJ20gaGF2aW5nIGhlcmUsIEkgd2FzIGp1c3Qgd3JpdGluZwo+IGEgcmVwbHkgdG8g dGhpcyB3aXRoIGEgc3VnZ2VzdGlvbiBvZiB0cmFuc2Zvcm1pbmcgdGhpcyBjb2RlIHVsdGltYXRl bHkKPiB0bzoKPiAKPiAJaWYgKCFnZXRfY3B1X2RldmljZShwci0+aWQpKSB7Cj4gCQlpbnQgcmV0 Owo+IAo+IAkJaWYgKCFpbnZhbGlkX2xvZ2ljYWxfY3B1aWQocHItPmlkKSAmJiBjcHVfcHJlc2Vu dChwci0+aWQpKQo+IAkJCXJldCA9IGFjcGlfcHJvY2Vzc29yX21ha2VfZW5hYmxlZChwcik7Cj4g CQllbHNlCj4gCQkJcmV0ID0gYWNwaV9wcm9jZXNzb3JfbWFrZV9wcmVzZW50KHByKTsKPiAKPiAJ CWlmIChyZXQpCj4gCQkJcmV0dXJuIHJldDsKPiAJfQo+IAo+IChhY3BpX3Byb2Nlc3Nvcl9tYWtl X3ByZXNlbnQoKSB3b3VsZCBiZSBhY3BpX3Byb2Nlc3Nvcl9ob3RhZGRfaW5pdCgpCj4gYW5kIGFj cGlfcHJvY2Vzc29yX21ha2VfZW5hYmxlZCgpIHdvdWxkIGJlIGFyY2hfcmVnaXN0ZXJfY3B1KCkg YXQgdGhpcwo+IHBvaW50LikKPiAKPiBUaGVuIEkgcmVhbGlzZWQgdGhhdCdzIGEgYmFkIGlkZWEg LSBiZWNhdXNlIHdlIHJlYWxseSBuZWVkIHRvIGNoZWNrCj4gdGhhdCBwci0+aWQgaXMgdmFsaWQg YmVmb3JlIGNhbGxpbmcgZ2V0X2NwdV9kZXZpY2UoKSBvbiBpdCwgc28gdGhpcwo+IHdvbid0IHdv cmsuIFRoYXQgbGVhdmVzIHVzIHdpdGg6Cj4gCj4gCWludCByZXQ7Cj4gCj4gCWlmIChpbnZhbGlk X2xvZ2ljYWxfY3B1aWQocHItPmlkKSB8fCAhY3B1X3ByZXNlbnQocHItPmlkKSkgewo+IAkJLyog eDg2IGV0LmFsLiBwYXRoICovCj4gCQlyZXQgPSBhY3BpX3Byb2Nlc3Nvcl9tYWtlX3ByZXNlbnQo cHIpOwo+IAl9IGVsc2UgaWYgKCFnZXRfY3B1X2RldmljZShwci0+aWQpKSB7Cj4gCQkvKiBBcm02 NCBwYXRoICovCj4gCQlyZXQgPSBhY3BpX3Byb2Nlc3Nvcl9tYWtlX2VuYWJsZWQocHIpOwo+IAl9 IGVsc2Ugewo+IAkJcmV0ID0gMDsKPiAJfQo+IAo+IAlpZiAocmV0KQo+IAkJcmV0dXJuIHJldDsK PiAKPiBOb3csIHRoZSBuZXh0IHRyYW5zZm9ybWF0aW9uIHdvdWxkIGJlIHRvIG1vdmUgIWdldF9j cHVfZGV2aWNlKHByLT5pZCkKPiBpbnRvIGFjcGlfcHJvY2Vzc29yX21ha2VfZW5hYmxlZCgpIHdo aWNoIHdvdWxkIGVsaW1pbmF0ZSBvbmUgb2YgdGhvc2UKPiBpZigpIGxlZ3MuCj4gCj4gTm93LCBp ZiB3ZSB3YW50IHRvIHNvbWVob3cgbWFrZSB0aGUgY2FsbCB0byBhcmNoX3JlZ3N0ZXJfY3B1KCkg Y29tbW9uCj4gaW4gdGhlc2UgdHdvIHBhdGhzLCB0aGUgbmV4dCBxdWVzdGlvbiBpcyB3aGF0IGFy ZSB0aGUgX3ByZWNpc2VfCj4gc2VtYW50aWNzIG9mIGFjcGlfbWFwX2NwdSgpLCBwYXJ0aWN1bGFy bHkgd2l0aCByZXNwZWN0IHRvIGl0Cj4gbW9kaWZ5aW5nIHByLT5pZC4gSXMgaXQgZ3VhcmFudGVl ZCB0byBhbHdheXMgZ2l2ZSB0aGUgc2FtZSByZXN1bHQKPiBmb3IgdGhlIHNhbWUgcHJvY2Vzc29y IGRlc2NyaWJlZCBpbiBBQ1BJPyBXaGF0IGFjcGlfbWFwX2NwdSgpIGFueXdheSwKPiBJIGNhbiBm aW5kIG5vIGRvY3VtZW50YXRpb24gZm9yIGl0Lgo+IAo+IFRoZW4gdGhlcmUncyB0aGUgcXVlc3Rp b24gd2hldGhlciBjYWxsaW5nIGFjcGlfdW5tYXBfY3B1KCkgc2hvdWxkIGJlCj4gZG9uZSBvbiB0 aGUgZmFpbHVyZSBwYXRoIGlmIGFyY2hfcmVnaXN0ZXJfY3B1KCkgZmFpbHMsIHdoaWNoIGlzIGRv bmUKPiBmb3IgdGhlIHg4NiBwYXRoIGJ1dCBub3QgdGhlIEFybTY0IHBhdGguIFNob3VsZCBpdCBi ZSBkb25lIGZvciB0aGUKPiBBcm02NCBwYXRoPyBJJ3ZlIG5vIGlkZWEsIGJ1dCBhcyBBcm02NCBk b2Vzbid0IGltcGxlbWVudCBlaXRoZXIgb2YKPiB0aGVzZSB0d28gZnVuY3Rpb25zLCBJIGd1ZXNz IHRoZXkgY291bGQgYmUgc3R1YmJlZCBvdXQgYW5kIHRodXMgYmUKPiBuby1vcHMgLSBidXQgdGhl biB3ZSBvcGVuIGEgaG9sZSB3aGVyZSBpZiBwci0+aWQgaXMgaW52YWxpZCwgd2UKPiBlbmQgdXAg cGFzc2luZyB0aGF0IGludmFsaWQgdmFsdWUgdG8gYXJjaF9yZWdpc3Rlcl9jcHUoKSB3aGljaCBJ J20KPiBxdWl0ZSBzdXJlIHdpbGwgZXhwbG9kZSB3aXRoIGEgbmVnYXRpdmUgQ1BVIG51bWJlci4K PiAKPiBTbywgdG8gbXkgbWluZCwgd2hhdCB5b3UncmUgZWZmZWN0aXZlbHkgYXNraW5nIGZvciBp cyBhIHRvdGFsIHJld3JpdGUKPiBvZiBhbGwgdGhlIGNvZGUgaW4gYW5kIGNhbGxlZCBieSBhY3Bp X3Byb2Nlc3Nvcl9nZXRfaW5mbygpLi4uIGFuZCB0aGF0Cj4gaXMgbm90IHNvbWV0aGluZyBJIGFt IHdpbGxpbmcgdG8gZG8gKGJlY2F1c2UgaXQncyB0b28gZmFyIG91dHNpZGUgb2YKPiBteSBrbm93 bGVkZ2UgYXJlYS4pCj4gCj4gQXMgSSBzYWlkIGluIG15IHJlcGx5IHRvIHBhdGNoIDEsIEkgdGhp bmsgeW91ciBjb21tZW50cyBvbiBwYXRjaCAyCj4gbWFrZSBBcm02NCB2Y3B1IGhvdHBsdWcgdW5h Y2hpZXZhYmxlIGluIGEgcmVhc29uYWJsZSB0aW1lIGZyYW1lLCBhbmQKPiBjZXJ0YWlubHkgb3V0 c2lkZSB0aGUgYm91bmRzIG9mIHdoYXQgSSBjYW4gZG8gdG8gcHJvZ3Jlc3MgdGhpcy4KPiAKPiBT bywgYXQgdGhpcyBwb2ludCBJJ20gZ29pbmcgdG8gc3RhbmQgZG93biBmcm9tIGZ1cnRoZXIgcGFy dGljaXBhdGlvbgo+IHdpdGggdGhpcyBwYXRjaCBzZXQgYXMgSSBiZWxpZXZlIEkndmUgcmVhY2hl ZCB0aGUgbGltaXQgb2Ygd2hhdCBJIGNhbgo+IGRvIHRvIHByb2dyZXNzIGl0Lgo+IAoKVGhhbmtz IGZvciB5b3VyIGhhcmQgd29yayBvbiB0aGlzIFJ1c3NlbGwgLSB3ZSBoYXZlIG1vdmVkIGZvcndh cmRzLgoKU2hvcnQgb2YgYW55b25lIGVsc2Ugc3RlcHBpbmcgdXAgSSdsbCBwaWNrIHRoaXMgdXAg d2l0aAp0aGUgaGVscCBvZiBzb21lIG15IGNvbGxlYWd1ZXMuIEFzIHN1Y2ggSSdtIGtlZW4gb24g Z2V0dGluZyBwYXRjaAoxIHVwc3RyZWFtIEFTQVAgc28gdGhhdCB3ZSBjYW4gZXhjbHVkZSB0aGUg bmVlZCBmb3Igc29tZSBvZiB0aGUKb3RoZXIgd29ya2Fyb3VuZHMgZnJvbSBlYXJsaWVyIHZlcnNp b25zIG9mIHRoaXMgc2VyaWVzICh0aGUgb25lcwpkcm9wcGVkIGJlZm9yZSBub3cpLgoKV2Ugd2ls bCBuZWVkIGEgbGl0dGxlIHRpbWUgdG8gZ2V0IHVwIHRvIHNwZWVkIG9uIHRoZSBjdXJyZW50IHN0 YXR1cwphbmQgZGlzY3Vzc2lvbiBwb2ludHMgUnVzc2VsbCByYWlzZXMgYWJvdmUuCgpKb25hdGhh bgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51 eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh ZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1h cm0ta2VybmVsCg==