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 0D81916EC1F for ; Wed, 10 Apr 2024 15:59:01 +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=1712764744; cv=none; b=JHDTKAMqPRJ6jRBdgTo9ArMGdQDWHvzgts3Aw9y7uJd42AT4LfoswgIoxCBbp00s6dSVRzgJb6TLlqGJIlK+SrETGMH2TtgfmL0vkg3DekyqxtS4LVS03V7uIHQPzc9VG4ZGxzr+kKGEIC07J+/xaIK1P+lcu38cKhP8pxaHCqQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712764744; c=relaxed/simple; bh=xfuJ3ry5n91qJc92j6kBa5Z9W5YhchcmI5daF8Z4UqY=; h=Date:From:To:CC:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cf5/+UJNaBuHgDkAOG33tY0YIaKpBrPOcrDBti8ZxKcRAQ76oo6emZPSfB5sG8F/Lq3XfKaf0b4/8E9Jnup7Y0QcDTKzdJmlZ8fXuh8HZdjut54FPHYsBiWv+kt9PBqNULS+q6nOJ6p+X0sAYHtMQ987brLqevOwpciyF4BOidI= 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 94FE260900 for ; Wed, 10 Apr 2024 15:59:01 +0000 (UTC) X-Virus-Scanned: amavis 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]) (amavis, port 10024) with ESMTP id i7ePy1U5POub for ; Wed, 10 Apr 2024 15:59:00 +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 EC9EF6072C 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 EC9EF6072C Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by smtp3.osuosl.org (Postfix) with ESMTPS id EC9EF6072C for ; Wed, 10 Apr 2024 15:58:59 +0000 (UTC) Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4VF6sR73psz6J9yF; Wed, 10 Apr 2024 23:57:15 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 32165140DD4; Wed, 10 Apr 2024 23:58:56 +0800 (CST) Received: from localhost (10.122.247.231) 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; Wed, 10 Apr 2024 16:58:55 +0100 Date: Wed, 10 Apr 2024 16:58:54 +0100 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse , Miguel Luis Subject: Re: [PATCH RFC v4 02/15] ACPI: processor: Register all CPUs from acpi_processor_get_info() Message-ID: <20240410165854.00002973@huawei.com> In-Reply-To: References: <20240322185327.00002416@Huawei.com> <20240410134318.0000193c@huawei.com> <20240410145005.00003050@Huawei.com> Organization: Huawei Technologies R&D (UK) Ltd. X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.29; 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: lhrpeml100006.china.huawei.com (7.191.160.224) To lhrpeml500005.china.huawei.com (7.191.163.240) On Wed, 10 Apr 2024 16:19:50 +0200 "Rafael J. Wysocki" wrote: > On Wed, Apr 10, 2024 at 3:50=E2=80=AFPM Jonathan Cameron > wrote: > > > > On Wed, 10 Apr 2024 15:28:18 +0200 > > "Rafael J. Wysocki" wrote: > > =20 > > > On Wed, Apr 10, 2024 at 2:43=E2=80=AFPM Jonathan Cameron > > > wrote: =20 > > > > =20 > > > > > > =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_gene= ric(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 > > > > > > > > > > > > Honestly, this looks like a quick hack to me and it absolutely > > > > > > requires an ACK from the x86 maintainers to go anywhere. =20 > > > > > Will address this separately. > > > > > =20 > > > > > > > > So do people prefer this hack, or something along lines of the foll= owing? > > > > > > > > static int __init cpu_dev_register_generic(void) > > > > { > > > > int i, ret =3D 0; > > > > > > > > for_each_online_cpu(i) { > > > > if (!get_cpu_device(i)) { > > > > ret =3D arch_register_cpu(i); > > > > if (ret) > > > > pr_warn("register_cpu %d failed (%d= )\n", i, ret); > > > > } > > > > } > > > > //Probably just eat the error. > > > > return 0; > > > > } > > > > subsys_initcall_sync(cpu_dev_register_generic); =20 > > > > > > I would prefer something like the above. > > > > > > I actually thought that arch_register_cpu() might return something > > > like -EPROBE_DEFER when it cannot determine whether or not the CPU is > > > really available. =20 > > > > Ok. That would end up looking much more like the original code I think. > > So we wouldn't have this late registration at all, or keep it for DT > > on arm64? I'm not sure that's a clean solution though leaves > > the x86 path alone. =20 >=20 > I'm not sure why DT on arm64 would need to do late registration. This was me falsely thinking better to do it close together for DT and ACPI. It definitely doesn't need to (or it wouldn't work today!) >=20 > There is this chain of calls in the mainline today: >=20 > driver_init() > cpu_dev_init() > cpu_dev_register_generic() >=20 > the last of which registers CPUs on arm64/DT systems IIUC. I don't see > a need to change this behavior. >=20 > On arm64/ACPI, though, arch_register_cpu() cannot make progress until > it can look into the ACPI Namespace, so I would just make it return > -EPROBE_DEFER or equivalent then and the ACPI enumeration will find > the CPU and basically treat it as one that has just appeared. Ok so giving this a go... Arm 64 version of arch_register_cpu() ended up as the following (obviously needs cleaning up, bikeshedding of naming etc) int arch_register_cpu(int cpu) { struct cpu *c =3D &per_cpu(cpu_devices, cpu); acpi_handle acpi_handle =3D ACPI_HANDLE(&c->dev); int ret; printk("!!!!! INTO arch_register_cpu() %px\n", ACPI_HANDLE(&c->dev)); if (!acpi_disabled && !acpi_handle) return -EPROBE_DEFER; if (acpi_handle) { ret =3D acpi_sta_enabled(acpi_handle); if (ret) { printk("Have handle, not enabled\n"); /* Not enabled */ return ret; } } printk("!!!!! onwards arch_register_cpu()\n"); c->hotpluggable =3D arch_cpu_is_hotpluggable(cpu); return register_cpu(c, cpu); } with new utility function in drivers/acpi/utils.c int acpi_sta_enabled(acpi_handle handle) { unsigned long long sta; bool present, enabled; acpi_status status; if (acpi_has_method(handle, "_STA")) { status =3D acpi_evaluate_integer(handle, "_STA", NULL, &sta); if (ACPI_FAILURE(status)) return -ENODEV; present =3D sta & ACPI_STA_DEVICE_PRESENT; enabled =3D sta & ACPI_STA_DEVICE_ENABLED; if (!present || !enabled) { return -EPROBE_DEFER; } return 0; } return 0; /* No _STA means always on! */ } struct cpu *c =3D &per_cpu(cpu_devices, pr->id);=09 ACPI_COMPANION_SET(&c->dev, device); in acpi_processor_get_info() and that calls static int acpi_processor_make_enabled(struct acpi_processor *pr) { int ret; if (invalid_phys_cpuid(pr->phys_id)) return -ENODEV; cpus_write_lock(); ret =3D arch_register_cpu(pr->id); cpus_write_unlock(); return ret; } I think setting the ACPI handle should be harmless on other architectures. It seems like the obvious one to set it to for cpu->dev. Brief tests on same set of DT and ACPI on x86 and arm64 seem fine. >=20 > > If we get rid of this catch all, solution would be to move the > > !acpi_disabled check into the arm64 version of arch_cpu_register() > > because we would only want the delayed registration path to be > > used on ACPI cases where the question of CPU availability can't > > yet be resolved. =20 >=20 > Exactly. >=20 > This is similar (if not equivalent even) to a CPU becoming available > between the cpu_dev_register_generic() call and the ACPI enumeration. >=20 > > > > > > Then, the ACPI processor enumeration path may take care of registering > > > CPU that have not been registered so far and in the more-or-less the > > > same way regardless of the architecture (modulo some arch-specific > > > stuff). =20 > > > > If I understand correctly, in acpi_processor_get_info() we'd end up > > with a similar check on whether it was already registered (the x86 path) > > or had be deferred (arm64 / acpi). > > =20 > > > > > > In the end, it should be possible to avoid changing the behavior of > > > x86 and loongarch in this series. =20 > > > > Possible, yes, but result if I understand correctly is we end up with > > very different flows and replication of functionality between the > > early registration and the late one. I'm fine with that if you prefer i= t! =20 >=20 > But that's what is there today, isn't it? Agreed - but I was previously thinking we could move everything late. I'm fine with just keeping the two flows separate. >=20 > I think this can be changed to reduce the duplication, but I'd prefer > to do that later, when the requisite functionality is in place and we > just do the consolidation. In that case, if anything goes wrong, we > can take a step back and reconsider without deferring the arm64 CPU > hotplug support. Great. That plan certainly works for me :) Thanks for quick replies and help getting this headed in right direction. +CC Miguel who is also looking at some of this series. Sorry Miguel, was assuming you were on the thread and never checked :( 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 0BD22CD128A for ; Wed, 10 Apr 2024 15:59:19 +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=jvT2NnMOOIg4PWDgFIk+xdu7ZrHr96sIsWdt/ohXOyA=; b=L+yJ8Nu5eyNovk FXtiPqPSDhB6LPxs96TzVR50KYVwjt5OQAi0D2nkJ15AtLDpDxZ8Q08VpuxBocDfnmTpMPVxyxM0o tcQozJ1PIBHDcQSLv3EIJ83kNELn39YuRIiIgBINT7VEFstFg0lnInHVInNqqvDtE8JiMLuwkofaa bN94weMJa7ZuFIUO3Lpjm/vVvyCq+IAVGz0VXH52OicHWOZoMJvTDm+8xnKzzMivGFRK4PdOwTv3Q mr3xMEMWLF9SjyAvmAyZQbV/xV6xrPqSlS1dleZ7Vb00ERazKcIZV7dSl81yrEwCIqy7e/koRcmMf U73rM+iRMh30E+tJrBNA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1ruaLy-00000007uvT-2uLE; Wed, 10 Apr 2024 15:59:14 +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 1ruaLr-00000007upQ-2vl8; Wed, 10 Apr 2024 15:59:10 +0000 Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4VF6sR73psz6J9yF; Wed, 10 Apr 2024 23:57:15 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 32165140DD4; Wed, 10 Apr 2024 23:58:56 +0800 (CST) Received: from localhost (10.122.247.231) 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; Wed, 10 Apr 2024 16:58:55 +0100 Date: Wed, 10 Apr 2024 16:58:54 +0100 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse , Miguel Luis Subject: Re: [PATCH RFC v4 02/15] ACPI: processor: Register all CPUs from acpi_processor_get_info() Message-ID: <20240410165854.00002973@huawei.com> In-Reply-To: References: <20240322185327.00002416@Huawei.com> <20240410134318.0000193c@huawei.com> <20240410145005.00003050@Huawei.com> Organization: Huawei Technologies R&D (UK) Ltd. X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.29; x86_64-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.122.247.231] X-ClientProxiedBy: lhrpeml100006.china.huawei.com (7.191.160.224) 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-20240410_085908_214670_E1F7CA55 X-CRM114-Status: GOOD ( 49.52 ) 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 T24gV2VkLCAxMCBBcHIgMjAyNCAxNjoxOTo1MCArMDIwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFdlZCwgQXByIDEwLCAyMDI0IGF0IDM6NTDi gK9QTSBKb25hdGhhbiBDYW1lcm9uCj4gPEpvbmF0aGFuLkNhbWVyb25AaHVhd2VpLmNvbT4gd3Jv dGU6Cj4gPgo+ID4gT24gV2VkLCAxMCBBcHIgMjAyNCAxNToyODoxOCArMDIwMAo+ID4gIlJhZmFl bCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gIAo+ID4gPiBPbiBX ZWQsIEFwciAxMCwgMjAyNCBhdCAyOjQz4oCvUE0gSm9uYXRoYW4gQ2FtZXJvbgo+ID4gPiA8Sm9u YXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29tPiB3cm90ZTogIAo+ID4gPiA+ICAKPiA+ID4gPiA+ID4g IAo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY3B1LmMgYi9kcml2ZXJz L2Jhc2UvY3B1LmMKPiA+ID4gPiA+ID4gPiBpbmRleCA0N2RlMGYxNDBiYTYuLjEzZDA1MmJmMTNm NCAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2Jhc2UvY3B1LmMKPiA+ID4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2Jhc2UvY3B1LmMKPiA+ID4gPiA+ID4gPiBAQCAtNTUzLDcgKzU1 MywxMSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1X2Rldl9yZWdpc3Rlcl9nZW5lcmljKHZvaWQp Cj4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiAgICAgICAgIGludCBpLCByZXQ7Cj4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAtICAgICAgIGlmICghSVNfRU5BQkxFRChDT05GSUdfR0VO RVJJQ19DUFVfREVWSUNFUykpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAvKgo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICogV2hlbiBBQ1BJIGlzIGVuYWJsZWQsIENQVXMgYXJlIHJlZ2lzdGVyZWQgdmlh Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgKiBhY3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbygpLgo+ID4g PiA+ID4gPiA+ICsgICAgICAgICovCj4gPiA+ID4gPiA+ID4gKyAgICAgICBpZiAoIUlTX0VOQUJM RUQoQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVMpIHx8ICFhY3BpX2Rpc2FibGVkKQo+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm47ICAKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g SG9uZXN0bHksIHRoaXMgbG9va3MgbGlrZSBhIHF1aWNrIGhhY2sgdG8gbWUgYW5kIGl0IGFic29s dXRlbHkKPiA+ID4gPiA+ID4gcmVxdWlyZXMgYW4gQUNLIGZyb20gdGhlIHg4NiBtYWludGFpbmVy cyB0byBnbyBhbnl3aGVyZS4gIAo+ID4gPiA+ID4gV2lsbCBhZGRyZXNzIHRoaXMgc2VwYXJhdGVs eS4KPiA+ID4gPiA+ICAKPiA+ID4gPgo+ID4gPiA+IFNvIGRvIHBlb3BsZSBwcmVmZXIgdGhpcyBo YWNrLCBvciBzb21ldGhpbmcgYWxvbmcgbGluZXMgb2YgdGhlIGZvbGxvd2luZz8KPiA+ID4gPgo+ ID4gPiA+IHN0YXRpYyBpbnQgX19pbml0IGNwdV9kZXZfcmVnaXN0ZXJfZ2VuZXJpYyh2b2lkKQo+ ID4gPiA+IHsKPiA+ID4gPiAgICAgICAgIGludCBpLCByZXQgPSAwOwo+ID4gPiA+Cj4gPiA+ID4g ICAgICAgICBmb3JfZWFjaF9vbmxpbmVfY3B1KGkpIHsKPiA+ID4gPiAgICAgICAgICAgICAgICAg aWYgKCFnZXRfY3B1X2RldmljZShpKSkgewo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHJldCA9IGFyY2hfcmVnaXN0ZXJfY3B1KGkpOwo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChyZXQpCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcl93 YXJuKCJyZWdpc3Rlcl9jcHUgJWQgZmFpbGVkICglZClcbiIsIGksIHJldCk7Cj4gPiA+ID4gICAg ICAgICAgICAgICAgIH0KPiA+ID4gPiAgICAgICAgIH0KPiA+ID4gPiAgICAgICAgIC8vUHJvYmFi bHkganVzdCBlYXQgdGhlIGVycm9yLgo+ID4gPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4g fQo+ID4gPiA+IHN1YnN5c19pbml0Y2FsbF9zeW5jKGNwdV9kZXZfcmVnaXN0ZXJfZ2VuZXJpYyk7 ICAKPiA+ID4KPiA+ID4gSSB3b3VsZCBwcmVmZXIgc29tZXRoaW5nIGxpa2UgdGhlIGFib3ZlLgo+ ID4gPgo+ID4gPiBJIGFjdHVhbGx5IHRob3VnaHQgdGhhdCBhcmNoX3JlZ2lzdGVyX2NwdSgpIG1p Z2h0IHJldHVybiBzb21ldGhpbmcKPiA+ID4gbGlrZSAtRVBST0JFX0RFRkVSIHdoZW4gaXQgY2Fu bm90IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgQ1BVIGlzCj4gPiA+IHJlYWxseSBhdmFp bGFibGUuICAKPiA+Cj4gPiBPay4gVGhhdCB3b3VsZCBlbmQgdXAgbG9va2luZyBtdWNoIG1vcmUg bGlrZSB0aGUgb3JpZ2luYWwgY29kZSBJIHRoaW5rLgo+ID4gU28gd2Ugd291bGRuJ3QgaGF2ZSB0 aGlzIGxhdGUgcmVnaXN0cmF0aW9uIGF0IGFsbCwgb3Iga2VlcCBpdCBmb3IgRFQKPiA+IG9uIGFy bTY0PyAgSSdtIG5vdCBzdXJlIHRoYXQncyBhIGNsZWFuIHNvbHV0aW9uIHRob3VnaCBsZWF2ZXMK PiA+IHRoZSB4ODYgcGF0aCBhbG9uZS4gIAo+IAo+IEknbSBub3Qgc3VyZSB3aHkgRFQgb24gYXJt NjQgd291bGQgbmVlZCB0byBkbyBsYXRlIHJlZ2lzdHJhdGlvbi4KClRoaXMgd2FzIG1lIGZhbHNl bHkgdGhpbmtpbmcgYmV0dGVyIHRvIGRvIGl0IGNsb3NlIHRvZ2V0aGVyIGZvcgpEVCBhbmQgQUNQ SS4gSXQgZGVmaW5pdGVseSBkb2Vzbid0IG5lZWQgdG8gKG9yIGl0IHdvdWxkbid0IHdvcmsgdG9k YXkhKQoKPiAKPiBUaGVyZSBpcyB0aGlzIGNoYWluIG9mIGNhbGxzIGluIHRoZSBtYWlubGluZSB0 b2RheToKPiAKPiBkcml2ZXJfaW5pdCgpCj4gICBjcHVfZGV2X2luaXQoKQo+ICAgICBjcHVfZGV2 X3JlZ2lzdGVyX2dlbmVyaWMoKQo+IAo+IHRoZSBsYXN0IG9mIHdoaWNoIHJlZ2lzdGVycyBDUFVz IG9uIGFybTY0L0RUIHN5c3RlbXMgSUlVQy4gSSBkb24ndCBzZWUKPiBhIG5lZWQgdG8gY2hhbmdl IHRoaXMgYmVoYXZpb3IuCj4gCj4gT24gYXJtNjQvQUNQSSwgdGhvdWdoLCBhcmNoX3JlZ2lzdGVy X2NwdSgpIGNhbm5vdCBtYWtlIHByb2dyZXNzIHVudGlsCj4gaXQgY2FuIGxvb2sgaW50byB0aGUg QUNQSSBOYW1lc3BhY2UsIHNvIEkgd291bGQganVzdCBtYWtlIGl0IHJldHVybgo+IC1FUFJPQkVf REVGRVIgb3IgZXF1aXZhbGVudCB0aGVuIGFuZCB0aGUgQUNQSSBlbnVtZXJhdGlvbiB3aWxsIGZp bmQKPiB0aGUgQ1BVIGFuZCBiYXNpY2FsbHkgdHJlYXQgaXQgYXMgb25lIHRoYXQgaGFzIGp1c3Qg YXBwZWFyZWQuCgpPayBzbyBnaXZpbmcgdGhpcyBhIGdvLi4uCgpBcm0gNjQgdmVyc2lvbiBvZiBh cmNoX3JlZ2lzdGVyX2NwdSgpIGVuZGVkIHVwIGFzIHRoZSBmb2xsb3dpbmcKKG9idmlvdXNseSBu ZWVkcyBjbGVhbmluZyB1cCwgYmlrZXNoZWRkaW5nIG9mIG5hbWluZyBldGMpCgppbnQgYXJjaF9y ZWdpc3Rlcl9jcHUoaW50IGNwdSkKewogICAgICAgIHN0cnVjdCBjcHUgKmMgPSAmcGVyX2NwdShj cHVfZGV2aWNlcywgY3B1KTsKICAgICAgICBhY3BpX2hhbmRsZSBhY3BpX2hhbmRsZSA9IEFDUElf SEFORExFKCZjLT5kZXYpOwogICAgICAgIGludCByZXQ7CgoJcHJpbnRrKCIhISEhISBJTlRPIGFy Y2hfcmVnaXN0ZXJfY3B1KCkgJXB4XG4iLCBBQ1BJX0hBTkRMRSgmYy0+ZGV2KSk7CgogICAgICAg IGlmICghYWNwaV9kaXNhYmxlZCAmJiAhYWNwaV9oYW5kbGUpCiAgICAgICAgICAgICAgICByZXR1 cm4gLUVQUk9CRV9ERUZFUjsKICAgICAgICBpZiAoYWNwaV9oYW5kbGUpIHsKICAgICAgICAgICAg ICAgIHJldCA9IGFjcGlfc3RhX2VuYWJsZWQoYWNwaV9oYW5kbGUpOwogICAgICAgICAgICAgICAg aWYgKHJldCkgewogICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoIkhhdmUgaGFuZGxlLCBu b3QgZW5hYmxlZFxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBlbmFibGVkICov CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgfQogICAgICAgIHByaW50aygiISEhISEgb253YXJkcyBhcmNoX3JlZ2lzdGVyX2NwdSgp XG4iKTsKCiAgICAgICAgYy0+aG90cGx1Z2dhYmxlID0gYXJjaF9jcHVfaXNfaG90cGx1Z2dhYmxl KGNwdSk7CgogICAgICAgIHJldHVybiByZWdpc3Rlcl9jcHUoYywgY3B1KTsKfQoKd2l0aCBuZXcg dXRpbGl0eSBmdW5jdGlvbiBpbiBkcml2ZXJzL2FjcGkvdXRpbHMuYwoKaW50IGFjcGlfc3RhX2Vu YWJsZWQoYWNwaV9oYW5kbGUgaGFuZGxlKQp7CiAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3Rh OwogICAgICAgYm9vbCBwcmVzZW50LCBlbmFibGVkOwogICAgICAgYWNwaV9zdGF0dXMgc3RhdHVz OwoKICAgICAgIGlmIChhY3BpX2hhc19tZXRob2QoaGFuZGxlLCAiX1NUQSIpKSB7CiAgICAgICAg ICAgICAgIHN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfaW50ZWdlcihoYW5kbGUsICJfU1RBIiwgTlVM TCwgJnN0YSk7CiAgICAgICAgICAgICAgIGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKCiAgICAgICAgICAgICAgIHByZXNlbnQg PSBzdGEgJiBBQ1BJX1NUQV9ERVZJQ0VfUFJFU0VOVDsKICAgICAgICAgICAgICAgZW5hYmxlZCA9 IHN0YSAmIEFDUElfU1RBX0RFVklDRV9FTkFCTEVEOwogICAgICAgICAgICAgICBpZiAoIXByZXNl bnQgfHwgIWVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9E RUZFUjsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgIH0K ICAgICAgIHJldHVybiAwOyAvKiBObyBfU1RBIG1lYW5zIGFsd2F5cyBvbiEgKi8KfQoJc3RydWN0 IGNwdSAqYyA9ICZwZXJfY3B1KGNwdV9kZXZpY2VzLCBwci0+aWQpOwkKCUFDUElfQ09NUEFOSU9O X1NFVCgmYy0+ZGV2LCBkZXZpY2UpOwoKaW4gYWNwaV9wcm9jZXNzb3JfZ2V0X2luZm8oKSBhbmQg dGhhdCBjYWxscwoKc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9tYWtlX2VuYWJsZWQoc3RydWN0 IGFjcGlfcHJvY2Vzc29yICpwcikKewogICAgICAgIGludCByZXQ7CgogICAgICAgIGlmIChpbnZh bGlkX3BoeXNfY3B1aWQocHItPnBoeXNfaWQpKQogICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9E RVY7CgogICAgICAgIGNwdXNfd3JpdGVfbG9jaygpOwogICAgICAgIHJldCA9IGFyY2hfcmVnaXN0 ZXJfY3B1KHByLT5pZCk7CiAgICAgICAgY3B1c193cml0ZV91bmxvY2soKTsKCiAgICAgICAgcmV0 dXJuIHJldDsKfQoKSSB0aGluayBzZXR0aW5nIHRoZSBBQ1BJIGhhbmRsZSBzaG91bGQgYmUgaGFy bWxlc3Mgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcy4KSXQgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBv bmUgdG8gc2V0IGl0IHRvIGZvciBjcHUtPmRldi4KCkJyaWVmIHRlc3RzIG9uIHNhbWUgc2V0IG9m IERUIGFuZCBBQ1BJIG9uIHg4NiBhbmQgYXJtNjQgc2VlbSBmaW5lLgoKPiAKPiA+IElmIHdlIGdl dCByaWQgb2YgdGhpcyBjYXRjaCBhbGwsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG1vdmUgdGhlCj4g PiAhYWNwaV9kaXNhYmxlZCBjaGVjayBpbnRvIHRoZSBhcm02NCB2ZXJzaW9uIG9mIGFyY2hfY3B1 X3JlZ2lzdGVyKCkKPiA+IGJlY2F1c2Ugd2Ugd291bGQgb25seSB3YW50IHRoZSBkZWxheWVkIHJl Z2lzdHJhdGlvbiBwYXRoIHRvIGJlCj4gPiB1c2VkIG9uIEFDUEkgY2FzZXMgd2hlcmUgdGhlIHF1 ZXN0aW9uIG9mIENQVSBhdmFpbGFiaWxpdHkgY2FuJ3QKPiA+IHlldCBiZSByZXNvbHZlZC4gIAo+ IAo+IEV4YWN0bHkuCj4gCj4gVGhpcyBpcyBzaW1pbGFyIChpZiBub3QgZXF1aXZhbGVudCBldmVu KSB0byBhIENQVSBiZWNvbWluZyBhdmFpbGFibGUKPiBiZXR3ZWVuIHRoZSBjcHVfZGV2X3JlZ2lz dGVyX2dlbmVyaWMoKSBjYWxsIGFuZCB0aGUgQUNQSSBlbnVtZXJhdGlvbi4KCj4gCj4gPiA+Cj4g PiA+IFRoZW4sIHRoZSBBQ1BJIHByb2Nlc3NvciBlbnVtZXJhdGlvbiBwYXRoIG1heSB0YWtlIGNh cmUgb2YgcmVnaXN0ZXJpbmcKPiA+ID4gQ1BVIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVk IHNvIGZhciBhbmQgaW4gdGhlIG1vcmUtb3ItbGVzcyB0aGUKPiA+ID4gc2FtZSB3YXkgcmVnYXJk bGVzcyBvZiB0aGUgYXJjaGl0ZWN0dXJlIChtb2R1bG8gc29tZSBhcmNoLXNwZWNpZmljCj4gPiA+ IHN0dWZmKS4gIAo+ID4KPiA+IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIGluIGFjcGlfcHJv Y2Vzc29yX2dldF9pbmZvKCkgd2UnZCBlbmQgdXAKPiA+IHdpdGggYSBzaW1pbGFyIGNoZWNrIG9u IHdoZXRoZXIgaXQgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCAodGhlIHg4NiBwYXRoKQo+ID4gb3Ig aGFkIGJlIGRlZmVycmVkIChhcm02NCAvIGFjcGkpLgo+ID4gIAo+ID4gPgo+ID4gPiBJbiB0aGUg ZW5kLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGJlaGF2aW9y IG9mCj4gPiA+IHg4NiBhbmQgbG9vbmdhcmNoIGluIHRoaXMgc2VyaWVzLiAgCj4gPgo+ID4gUG9z c2libGUsIHllcywgYnV0IHJlc3VsdCBpZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5IGlzIHdlIGVu ZCB1cCB3aXRoCj4gPiB2ZXJ5IGRpZmZlcmVudCBmbG93cyBhbmQgcmVwbGljYXRpb24gb2YgZnVu Y3Rpb25hbGl0eSBiZXR3ZWVuIHRoZQo+ID4gZWFybHkgcmVnaXN0cmF0aW9uIGFuZCB0aGUgbGF0 ZSBvbmUuIEknbSBmaW5lIHdpdGggdGhhdCBpZiB5b3UgcHJlZmVyIGl0ISAgCj4gCj4gQnV0IHRo YXQncyB3aGF0IGlzIHRoZXJlIHRvZGF5LCBpc24ndCBpdD8KCkFncmVlZCAtIGJ1dCBJIHdhcyBw cmV2aW91c2x5IHRoaW5raW5nIHdlIGNvdWxkIG1vdmUgZXZlcnl0aGluZyBsYXRlLgpJJ20gZmlu ZSB3aXRoIGp1c3Qga2VlcGluZyB0aGUgdHdvIGZsb3dzIHNlcGFyYXRlLgoKPiAKPiBJIHRoaW5r IHRoaXMgY2FuIGJlIGNoYW5nZWQgdG8gcmVkdWNlIHRoZSBkdXBsaWNhdGlvbiwgYnV0IEknZCBw cmVmZXIKPiB0byBkbyB0aGF0IGxhdGVyLCB3aGVuIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25hbGl0 eSBpcyBpbiBwbGFjZSBhbmQgd2UKPiBqdXN0IGRvIHRoZSBjb25zb2xpZGF0aW9uLiAgSW4gdGhh dCBjYXNlLCBpZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZQo+IGNhbiB0YWtlIGEgc3RlcCBiYWNr IGFuZCByZWNvbnNpZGVyIHdpdGhvdXQgZGVmZXJyaW5nIHRoZSBhcm02NCBDUFUKPiBob3RwbHVn IHN1cHBvcnQuCgpHcmVhdC4gVGhhdCBwbGFuIGNlcnRhaW5seSB3b3JrcyBmb3IgbWUgOikKClRo YW5rcyBmb3IgcXVpY2sgcmVwbGllcyBhbmQgaGVscCBnZXR0aW5nIHRoaXMgaGVhZGVkIGluIHJp Z2h0IGRpcmVjdGlvbi4KCitDQyBNaWd1ZWwgd2hvIGlzIGFsc28gbG9va2luZyBhdCBzb21lIG9m IHRoaXMgc2VyaWVzLiBTb3JyeSBNaWd1ZWwsCndhcyBhc3N1bWluZyB5b3Ugd2VyZSBvbiB0aGUg dGhyZWFkIGFuZCBuZXZlciBjaGVja2VkIDooCgpKb25hdGhhbgoKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QK bGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 C7BF3CD128A for ; Wed, 10 Apr 2024 15:59:24 +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=NXFSBZYhsLDMcIFi98t9rEmhj08v7yjO4j8waFhqyO8=; b=PRBjDYPR5j8EEz qHRlhf5G9kvE5NDIJNpjrQN3LKLrWxv/rJXSlRuSnjjeFNNvxH3dWY9liXZWsb/KUbk6frLjgo9hF pWExQNKCer0Lp0TGGuFgcbY63x886PY2Cg9bpy4q8Rk0Yps1vQDF0yllEHSr9RZbw60sRFOXB5rA4 K8aLhGnCJ6IzeSLYbh2Dt87I3UHdsA9qjSIMkSrOEZ0YGb373cDLpgzzErhMVcbi6UXDq1zxh2paN 6ddBDQLTBAOai07y1fxFoq+AfLmVNmVDRw7kxell4It9imQfB6XZoPYy+tI0rZLs1ktYIvh/is/1O Fa5CRANzWKpvgopNXsGw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1ruaLx-00000007uul-23Xq; Wed, 10 Apr 2024 15:59:13 +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 1ruaLr-00000007upQ-2vl8; Wed, 10 Apr 2024 15:59:10 +0000 Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4VF6sR73psz6J9yF; Wed, 10 Apr 2024 23:57:15 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id 32165140DD4; Wed, 10 Apr 2024 23:58:56 +0800 (CST) Received: from localhost (10.122.247.231) 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; Wed, 10 Apr 2024 16:58:55 +0100 Date: Wed, 10 Apr 2024 16:58:54 +0100 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse , Miguel Luis Subject: Re: [PATCH RFC v4 02/15] ACPI: processor: Register all CPUs from acpi_processor_get_info() Message-ID: <20240410165854.00002973@huawei.com> In-Reply-To: References: <20240322185327.00002416@Huawei.com> <20240410134318.0000193c@huawei.com> <20240410145005.00003050@Huawei.com> Organization: Huawei Technologies R&D (UK) Ltd. X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.29; x86_64-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.122.247.231] X-ClientProxiedBy: lhrpeml100006.china.huawei.com (7.191.160.224) 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-20240410_085908_214670_E1F7CA55 X-CRM114-Status: GOOD ( 49.52 ) 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 T24gV2VkLCAxMCBBcHIgMjAyNCAxNjoxOTo1MCArMDIwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFdlZCwgQXByIDEwLCAyMDI0IGF0IDM6NTDi gK9QTSBKb25hdGhhbiBDYW1lcm9uCj4gPEpvbmF0aGFuLkNhbWVyb25AaHVhd2VpLmNvbT4gd3Jv dGU6Cj4gPgo+ID4gT24gV2VkLCAxMCBBcHIgMjAyNCAxNToyODoxOCArMDIwMAo+ID4gIlJhZmFl bCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5vcmc+IHdyb3RlOgo+ID4gIAo+ID4gPiBPbiBX ZWQsIEFwciAxMCwgMjAyNCBhdCAyOjQz4oCvUE0gSm9uYXRoYW4gQ2FtZXJvbgo+ID4gPiA8Sm9u YXRoYW4uQ2FtZXJvbkBodWF3ZWkuY29tPiB3cm90ZTogIAo+ID4gPiA+ICAKPiA+ID4gPiA+ID4g IAo+ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY3B1LmMgYi9kcml2ZXJz L2Jhc2UvY3B1LmMKPiA+ID4gPiA+ID4gPiBpbmRleCA0N2RlMGYxNDBiYTYuLjEzZDA1MmJmMTNm NCAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2Jhc2UvY3B1LmMKPiA+ID4gPiA+ ID4gPiArKysgYi9kcml2ZXJzL2Jhc2UvY3B1LmMKPiA+ID4gPiA+ID4gPiBAQCAtNTUzLDcgKzU1 MywxMSBAQCBzdGF0aWMgdm9pZCBfX2luaXQgY3B1X2Rldl9yZWdpc3Rlcl9nZW5lcmljKHZvaWQp Cj4gPiA+ID4gPiA+ID4gIHsKPiA+ID4gPiA+ID4gPiAgICAgICAgIGludCBpLCByZXQ7Cj4gPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAtICAgICAgIGlmICghSVNfRU5BQkxFRChDT05GSUdfR0VO RVJJQ19DUFVfREVWSUNFUykpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAvKgo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICogV2hlbiBBQ1BJIGlzIGVuYWJsZWQsIENQVXMgYXJlIHJlZ2lzdGVyZWQgdmlh Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAgKiBhY3BpX3Byb2Nlc3Nvcl9nZXRfaW5mbygpLgo+ID4g PiA+ID4gPiA+ICsgICAgICAgICovCj4gPiA+ID4gPiA+ID4gKyAgICAgICBpZiAoIUlTX0VOQUJM RUQoQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVMpIHx8ICFhY3BpX2Rpc2FibGVkKQo+ID4gPiA+ ID4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm47ICAKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g SG9uZXN0bHksIHRoaXMgbG9va3MgbGlrZSBhIHF1aWNrIGhhY2sgdG8gbWUgYW5kIGl0IGFic29s dXRlbHkKPiA+ID4gPiA+ID4gcmVxdWlyZXMgYW4gQUNLIGZyb20gdGhlIHg4NiBtYWludGFpbmVy cyB0byBnbyBhbnl3aGVyZS4gIAo+ID4gPiA+ID4gV2lsbCBhZGRyZXNzIHRoaXMgc2VwYXJhdGVs eS4KPiA+ID4gPiA+ICAKPiA+ID4gPgo+ID4gPiA+IFNvIGRvIHBlb3BsZSBwcmVmZXIgdGhpcyBo YWNrLCBvciBzb21ldGhpbmcgYWxvbmcgbGluZXMgb2YgdGhlIGZvbGxvd2luZz8KPiA+ID4gPgo+ ID4gPiA+IHN0YXRpYyBpbnQgX19pbml0IGNwdV9kZXZfcmVnaXN0ZXJfZ2VuZXJpYyh2b2lkKQo+ ID4gPiA+IHsKPiA+ID4gPiAgICAgICAgIGludCBpLCByZXQgPSAwOwo+ID4gPiA+Cj4gPiA+ID4g ICAgICAgICBmb3JfZWFjaF9vbmxpbmVfY3B1KGkpIHsKPiA+ID4gPiAgICAgICAgICAgICAgICAg aWYgKCFnZXRfY3B1X2RldmljZShpKSkgewo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg IHJldCA9IGFyY2hfcmVnaXN0ZXJfY3B1KGkpOwo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChyZXQpCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcl93 YXJuKCJyZWdpc3Rlcl9jcHUgJWQgZmFpbGVkICglZClcbiIsIGksIHJldCk7Cj4gPiA+ID4gICAg ICAgICAgICAgICAgIH0KPiA+ID4gPiAgICAgICAgIH0KPiA+ID4gPiAgICAgICAgIC8vUHJvYmFi bHkganVzdCBlYXQgdGhlIGVycm9yLgo+ID4gPiA+ICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4g fQo+ID4gPiA+IHN1YnN5c19pbml0Y2FsbF9zeW5jKGNwdV9kZXZfcmVnaXN0ZXJfZ2VuZXJpYyk7 ICAKPiA+ID4KPiA+ID4gSSB3b3VsZCBwcmVmZXIgc29tZXRoaW5nIGxpa2UgdGhlIGFib3ZlLgo+ ID4gPgo+ID4gPiBJIGFjdHVhbGx5IHRob3VnaHQgdGhhdCBhcmNoX3JlZ2lzdGVyX2NwdSgpIG1p Z2h0IHJldHVybiBzb21ldGhpbmcKPiA+ID4gbGlrZSAtRVBST0JFX0RFRkVSIHdoZW4gaXQgY2Fu bm90IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGUgQ1BVIGlzCj4gPiA+IHJlYWxseSBhdmFp bGFibGUuICAKPiA+Cj4gPiBPay4gVGhhdCB3b3VsZCBlbmQgdXAgbG9va2luZyBtdWNoIG1vcmUg bGlrZSB0aGUgb3JpZ2luYWwgY29kZSBJIHRoaW5rLgo+ID4gU28gd2Ugd291bGRuJ3QgaGF2ZSB0 aGlzIGxhdGUgcmVnaXN0cmF0aW9uIGF0IGFsbCwgb3Iga2VlcCBpdCBmb3IgRFQKPiA+IG9uIGFy bTY0PyAgSSdtIG5vdCBzdXJlIHRoYXQncyBhIGNsZWFuIHNvbHV0aW9uIHRob3VnaCBsZWF2ZXMK PiA+IHRoZSB4ODYgcGF0aCBhbG9uZS4gIAo+IAo+IEknbSBub3Qgc3VyZSB3aHkgRFQgb24gYXJt NjQgd291bGQgbmVlZCB0byBkbyBsYXRlIHJlZ2lzdHJhdGlvbi4KClRoaXMgd2FzIG1lIGZhbHNl bHkgdGhpbmtpbmcgYmV0dGVyIHRvIGRvIGl0IGNsb3NlIHRvZ2V0aGVyIGZvcgpEVCBhbmQgQUNQ SS4gSXQgZGVmaW5pdGVseSBkb2Vzbid0IG5lZWQgdG8gKG9yIGl0IHdvdWxkbid0IHdvcmsgdG9k YXkhKQoKPiAKPiBUaGVyZSBpcyB0aGlzIGNoYWluIG9mIGNhbGxzIGluIHRoZSBtYWlubGluZSB0 b2RheToKPiAKPiBkcml2ZXJfaW5pdCgpCj4gICBjcHVfZGV2X2luaXQoKQo+ICAgICBjcHVfZGV2 X3JlZ2lzdGVyX2dlbmVyaWMoKQo+IAo+IHRoZSBsYXN0IG9mIHdoaWNoIHJlZ2lzdGVycyBDUFVz IG9uIGFybTY0L0RUIHN5c3RlbXMgSUlVQy4gSSBkb24ndCBzZWUKPiBhIG5lZWQgdG8gY2hhbmdl IHRoaXMgYmVoYXZpb3IuCj4gCj4gT24gYXJtNjQvQUNQSSwgdGhvdWdoLCBhcmNoX3JlZ2lzdGVy X2NwdSgpIGNhbm5vdCBtYWtlIHByb2dyZXNzIHVudGlsCj4gaXQgY2FuIGxvb2sgaW50byB0aGUg QUNQSSBOYW1lc3BhY2UsIHNvIEkgd291bGQganVzdCBtYWtlIGl0IHJldHVybgo+IC1FUFJPQkVf REVGRVIgb3IgZXF1aXZhbGVudCB0aGVuIGFuZCB0aGUgQUNQSSBlbnVtZXJhdGlvbiB3aWxsIGZp bmQKPiB0aGUgQ1BVIGFuZCBiYXNpY2FsbHkgdHJlYXQgaXQgYXMgb25lIHRoYXQgaGFzIGp1c3Qg YXBwZWFyZWQuCgpPayBzbyBnaXZpbmcgdGhpcyBhIGdvLi4uCgpBcm0gNjQgdmVyc2lvbiBvZiBh cmNoX3JlZ2lzdGVyX2NwdSgpIGVuZGVkIHVwIGFzIHRoZSBmb2xsb3dpbmcKKG9idmlvdXNseSBu ZWVkcyBjbGVhbmluZyB1cCwgYmlrZXNoZWRkaW5nIG9mIG5hbWluZyBldGMpCgppbnQgYXJjaF9y ZWdpc3Rlcl9jcHUoaW50IGNwdSkKewogICAgICAgIHN0cnVjdCBjcHUgKmMgPSAmcGVyX2NwdShj cHVfZGV2aWNlcywgY3B1KTsKICAgICAgICBhY3BpX2hhbmRsZSBhY3BpX2hhbmRsZSA9IEFDUElf SEFORExFKCZjLT5kZXYpOwogICAgICAgIGludCByZXQ7CgoJcHJpbnRrKCIhISEhISBJTlRPIGFy Y2hfcmVnaXN0ZXJfY3B1KCkgJXB4XG4iLCBBQ1BJX0hBTkRMRSgmYy0+ZGV2KSk7CgogICAgICAg IGlmICghYWNwaV9kaXNhYmxlZCAmJiAhYWNwaV9oYW5kbGUpCiAgICAgICAgICAgICAgICByZXR1 cm4gLUVQUk9CRV9ERUZFUjsKICAgICAgICBpZiAoYWNwaV9oYW5kbGUpIHsKICAgICAgICAgICAg ICAgIHJldCA9IGFjcGlfc3RhX2VuYWJsZWQoYWNwaV9oYW5kbGUpOwogICAgICAgICAgICAgICAg aWYgKHJldCkgewogICAgICAgICAgICAgICAgICAgICAgICBwcmludGsoIkhhdmUgaGFuZGxlLCBu b3QgZW5hYmxlZFxuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBlbmFibGVkICov CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAgICB9CiAg ICAgICAgfQogICAgICAgIHByaW50aygiISEhISEgb253YXJkcyBhcmNoX3JlZ2lzdGVyX2NwdSgp XG4iKTsKCiAgICAgICAgYy0+aG90cGx1Z2dhYmxlID0gYXJjaF9jcHVfaXNfaG90cGx1Z2dhYmxl KGNwdSk7CgogICAgICAgIHJldHVybiByZWdpc3Rlcl9jcHUoYywgY3B1KTsKfQoKd2l0aCBuZXcg dXRpbGl0eSBmdW5jdGlvbiBpbiBkcml2ZXJzL2FjcGkvdXRpbHMuYwoKaW50IGFjcGlfc3RhX2Vu YWJsZWQoYWNwaV9oYW5kbGUgaGFuZGxlKQp7CiAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3Rh OwogICAgICAgYm9vbCBwcmVzZW50LCBlbmFibGVkOwogICAgICAgYWNwaV9zdGF0dXMgc3RhdHVz OwoKICAgICAgIGlmIChhY3BpX2hhc19tZXRob2QoaGFuZGxlLCAiX1NUQSIpKSB7CiAgICAgICAg ICAgICAgIHN0YXR1cyA9IGFjcGlfZXZhbHVhdGVfaW50ZWdlcihoYW5kbGUsICJfU1RBIiwgTlVM TCwgJnN0YSk7CiAgICAgICAgICAgICAgIGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0RFVjsKCiAgICAgICAgICAgICAgIHByZXNlbnQg PSBzdGEgJiBBQ1BJX1NUQV9ERVZJQ0VfUFJFU0VOVDsKICAgICAgICAgICAgICAgZW5hYmxlZCA9 IHN0YSAmIEFDUElfU1RBX0RFVklDRV9FTkFCTEVEOwogICAgICAgICAgICAgICBpZiAoIXByZXNl bnQgfHwgIWVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVQUk9CRV9E RUZFUjsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgIH0K ICAgICAgIHJldHVybiAwOyAvKiBObyBfU1RBIG1lYW5zIGFsd2F5cyBvbiEgKi8KfQoJc3RydWN0 IGNwdSAqYyA9ICZwZXJfY3B1KGNwdV9kZXZpY2VzLCBwci0+aWQpOwkKCUFDUElfQ09NUEFOSU9O X1NFVCgmYy0+ZGV2LCBkZXZpY2UpOwoKaW4gYWNwaV9wcm9jZXNzb3JfZ2V0X2luZm8oKSBhbmQg dGhhdCBjYWxscwoKc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9tYWtlX2VuYWJsZWQoc3RydWN0 IGFjcGlfcHJvY2Vzc29yICpwcikKewogICAgICAgIGludCByZXQ7CgogICAgICAgIGlmIChpbnZh bGlkX3BoeXNfY3B1aWQocHItPnBoeXNfaWQpKQogICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9E RVY7CgogICAgICAgIGNwdXNfd3JpdGVfbG9jaygpOwogICAgICAgIHJldCA9IGFyY2hfcmVnaXN0 ZXJfY3B1KHByLT5pZCk7CiAgICAgICAgY3B1c193cml0ZV91bmxvY2soKTsKCiAgICAgICAgcmV0 dXJuIHJldDsKfQoKSSB0aGluayBzZXR0aW5nIHRoZSBBQ1BJIGhhbmRsZSBzaG91bGQgYmUgaGFy bWxlc3Mgb24gb3RoZXIgYXJjaGl0ZWN0dXJlcy4KSXQgc2VlbXMgbGlrZSB0aGUgb2J2aW91cyBv bmUgdG8gc2V0IGl0IHRvIGZvciBjcHUtPmRldi4KCkJyaWVmIHRlc3RzIG9uIHNhbWUgc2V0IG9m IERUIGFuZCBBQ1BJIG9uIHg4NiBhbmQgYXJtNjQgc2VlbSBmaW5lLgoKPiAKPiA+IElmIHdlIGdl dCByaWQgb2YgdGhpcyBjYXRjaCBhbGwsIHNvbHV0aW9uIHdvdWxkIGJlIHRvIG1vdmUgdGhlCj4g PiAhYWNwaV9kaXNhYmxlZCBjaGVjayBpbnRvIHRoZSBhcm02NCB2ZXJzaW9uIG9mIGFyY2hfY3B1 X3JlZ2lzdGVyKCkKPiA+IGJlY2F1c2Ugd2Ugd291bGQgb25seSB3YW50IHRoZSBkZWxheWVkIHJl Z2lzdHJhdGlvbiBwYXRoIHRvIGJlCj4gPiB1c2VkIG9uIEFDUEkgY2FzZXMgd2hlcmUgdGhlIHF1 ZXN0aW9uIG9mIENQVSBhdmFpbGFiaWxpdHkgY2FuJ3QKPiA+IHlldCBiZSByZXNvbHZlZC4gIAo+ IAo+IEV4YWN0bHkuCj4gCj4gVGhpcyBpcyBzaW1pbGFyIChpZiBub3QgZXF1aXZhbGVudCBldmVu KSB0byBhIENQVSBiZWNvbWluZyBhdmFpbGFibGUKPiBiZXR3ZWVuIHRoZSBjcHVfZGV2X3JlZ2lz dGVyX2dlbmVyaWMoKSBjYWxsIGFuZCB0aGUgQUNQSSBlbnVtZXJhdGlvbi4KCj4gCj4gPiA+Cj4g PiA+IFRoZW4sIHRoZSBBQ1BJIHByb2Nlc3NvciBlbnVtZXJhdGlvbiBwYXRoIG1heSB0YWtlIGNh cmUgb2YgcmVnaXN0ZXJpbmcKPiA+ID4gQ1BVIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVk IHNvIGZhciBhbmQgaW4gdGhlIG1vcmUtb3ItbGVzcyB0aGUKPiA+ID4gc2FtZSB3YXkgcmVnYXJk bGVzcyBvZiB0aGUgYXJjaGl0ZWN0dXJlIChtb2R1bG8gc29tZSBhcmNoLXNwZWNpZmljCj4gPiA+ IHN0dWZmKS4gIAo+ID4KPiA+IElmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIGluIGFjcGlfcHJv Y2Vzc29yX2dldF9pbmZvKCkgd2UnZCBlbmQgdXAKPiA+IHdpdGggYSBzaW1pbGFyIGNoZWNrIG9u IHdoZXRoZXIgaXQgd2FzIGFscmVhZHkgcmVnaXN0ZXJlZCAodGhlIHg4NiBwYXRoKQo+ID4gb3Ig aGFkIGJlIGRlZmVycmVkIChhcm02NCAvIGFjcGkpLgo+ID4gIAo+ID4gPgo+ID4gPiBJbiB0aGUg ZW5kLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGJlaGF2aW9y IG9mCj4gPiA+IHg4NiBhbmQgbG9vbmdhcmNoIGluIHRoaXMgc2VyaWVzLiAgCj4gPgo+ID4gUG9z c2libGUsIHllcywgYnV0IHJlc3VsdCBpZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5IGlzIHdlIGVu ZCB1cCB3aXRoCj4gPiB2ZXJ5IGRpZmZlcmVudCBmbG93cyBhbmQgcmVwbGljYXRpb24gb2YgZnVu Y3Rpb25hbGl0eSBiZXR3ZWVuIHRoZQo+ID4gZWFybHkgcmVnaXN0cmF0aW9uIGFuZCB0aGUgbGF0 ZSBvbmUuIEknbSBmaW5lIHdpdGggdGhhdCBpZiB5b3UgcHJlZmVyIGl0ISAgCj4gCj4gQnV0IHRo YXQncyB3aGF0IGlzIHRoZXJlIHRvZGF5LCBpc24ndCBpdD8KCkFncmVlZCAtIGJ1dCBJIHdhcyBw cmV2aW91c2x5IHRoaW5raW5nIHdlIGNvdWxkIG1vdmUgZXZlcnl0aGluZyBsYXRlLgpJJ20gZmlu ZSB3aXRoIGp1c3Qga2VlcGluZyB0aGUgdHdvIGZsb3dzIHNlcGFyYXRlLgoKPiAKPiBJIHRoaW5r IHRoaXMgY2FuIGJlIGNoYW5nZWQgdG8gcmVkdWNlIHRoZSBkdXBsaWNhdGlvbiwgYnV0IEknZCBw cmVmZXIKPiB0byBkbyB0aGF0IGxhdGVyLCB3aGVuIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25hbGl0 eSBpcyBpbiBwbGFjZSBhbmQgd2UKPiBqdXN0IGRvIHRoZSBjb25zb2xpZGF0aW9uLiAgSW4gdGhh dCBjYXNlLCBpZiBhbnl0aGluZyBnb2VzIHdyb25nLCB3ZQo+IGNhbiB0YWtlIGEgc3RlcCBiYWNr IGFuZCByZWNvbnNpZGVyIHdpdGhvdXQgZGVmZXJyaW5nIHRoZSBhcm02NCBDUFUKPiBob3RwbHVn IHN1cHBvcnQuCgpHcmVhdC4gVGhhdCBwbGFuIGNlcnRhaW5seSB3b3JrcyBmb3IgbWUgOikKClRo YW5rcyBmb3IgcXVpY2sgcmVwbGllcyBhbmQgaGVscCBnZXR0aW5nIHRoaXMgaGVhZGVkIGluIHJp Z2h0IGRpcmVjdGlvbi4KCitDQyBNaWd1ZWwgd2hvIGlzIGFsc28gbG9va2luZyBhdCBzb21lIG9m IHRoaXMgc2VyaWVzLiBTb3JyeSBNaWd1ZWwsCndhcyBhc3N1bWluZyB5b3Ugd2VyZSBvbiB0aGUg dGhyZWFkIGFuZCBuZXZlciBjaGVja2VkIDooCgpKb25hdGhhbgoKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcg bGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==