From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (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 0961A25114 for ; Mon, 19 Feb 2024 09:45:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.133 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708335921; cv=none; b=uslbIHW73ibVEb96clrfrVARllUgKIuGU4cA7eux4DJkm+fnCvcbi2fVb9QiHohm2awCtHN7BlQmo70O1INhJVKbpxaw+u+4OoVi9gm7fiB2lMIhNXnPT6tZM+u66m5vAWUTLeIV56FUOCBcSinYl6KG2YeWa5OetUszOpmWleA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708335921; c=relaxed/simple; bh=QJM4j0j0pchCDOEJ6x+rLSknxQZs8Iclh87YDcHRPKc=; h=Date:From:To:CC:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=f4PeW9d59gz8JKyDiFVOtwTfVPC1XNCSbXPP0TQ4UrRA2WeXhQjVE/KbRK/1mfz9ySQ0MMMjBaBtqXaMx+WXpHW0bkAwreTyh/r11ZDwkKD+xpBM2MmqfblwL3KoxxjYisrfjp3CE7VU4FJ5k6QxKlLLxaNiLuhf68LmHphTJAg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.133 Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 767354063E for ; Mon, 19 Feb 2024 09:45:19 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -4.198 X-Spam-Level: Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id vTDtLLqwziiv for ; Mon, 19 Feb 2024 09:45:17 +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 smtp2.osuosl.org C6C4D405F9 Authentication-Results: smtp2.osuosl.org; dmarc=pass (p=quarantine dis=none) header.from=Huawei.com DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org C6C4D405F9 Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by smtp2.osuosl.org (Postfix) with ESMTPS id C6C4D405F9 for ; Mon, 19 Feb 2024 09:45:15 +0000 (UTC) Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TdcxZ6qlqz6K97K; Mon, 19 Feb 2024 17:41:38 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id E8D83140DDB; Mon, 19 Feb 2024 17:45:11 +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; Mon, 19 Feb 2024 09:45:11 +0000 Date: Mon, 19 Feb 2024 09:45:10 +0000 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse Subject: Re: [PATCH RFC v4 01/15] ACPI: Only enumerate enabled (or functional) processor devices Message-ID: <20240219094510.00004843@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: lhrpeml100002.china.huawei.com (7.191.160.241) To lhrpeml500005.china.huawei.com (7.191.163.240) On Thu, 15 Feb 2024 21:10:39 +0100 "Rafael J. Wysocki" wrote: > On Wed, Jan 31, 2024 at 5:49=E2=80=AFPM Russell King wrote: > > > > From: James Morse > > > > Today the ACPI enumeration code 'visits' all devices that are present. > > > > This is a problem for arm64, where CPUs are always present, but not > > always enabled. When a device-check occurs because the firmware-policy > > has changed and a CPU is now enabled, the following error occurs: > > | acpi ACPI0007:48: Enumeration failure > > > > This is ultimately because acpi_dev_ready_for_enumeration() returns > > true for a device that is not enabled. The ACPI Processor driver > > will not register such CPUs as they are not 'decoding their resources'. > > > > ACPI allows a device to be functional instead of maintaining the > > present and enabled bit, but we can't simply check the enabled bit > > for all devices since firmware can be buggy. > > > > If ACPI indicates that the device is present and enabled, then all well > > and good, we can enumate it. However, if the device is present and not > > enabled, then we also check whether the device is a processor device > > to limit the impact of this new check to just processor devices. > > > > This avoids enumerating present && functional processor devices that > > are not enabled. > > > > Signed-off-by: James Morse > > Co-developed-by: Rafael J. Wysocki > > Tested-by: Jonathan Cameron > > Reviewed-by: Jonathan Cameron > > Signed-off-by: Russell King (Oracle) > > --- > > Changes since RFC v2: > > * Incorporate comment suggestion by Gavin Shan. > > Changes since RFC v3: > > * Fixed "sert" typo. > > Changes since RFC v3 (smaller series): > > * Restrict checking the enabled bit to processor devices, update > > commit comments. > > * Use Rafael's suggestion in > > https://lore.kernel.org/r/5760569.DvuYhMxLoT@kreacher > > * Updated with a fix - see: > > https://lore.kernel.org/all/Zbe8WQRASx6D6RaG@shell.armlinux.org.uk/ > > --- > > drivers/acpi/acpi_processor.c | 11 +++++++++ > > drivers/acpi/device_pm.c | 2 +- > > drivers/acpi/device_sysfs.c | 2 +- > > drivers/acpi/internal.h | 4 ++- > > drivers/acpi/property.c | 2 +- > > drivers/acpi/scan.c | 46 +++++++++++++++++++++++++++-------- > > 6 files changed, 53 insertions(+), 14 deletions(-) > > > > diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processo= r.c > > index 4fe2ef54088c..cf7c1cca69dd 100644 > > --- a/drivers/acpi/acpi_processor.c > > +++ b/drivers/acpi/acpi_processor.c > > @@ -626,6 +626,17 @@ static struct acpi_scan_handler processor_handler = =3D { > > }, > > }; > > > > +bool acpi_device_is_processor(const struct acpi_device *adev) > > +{ > > + if (adev->device_type =3D=3D ACPI_BUS_TYPE_PROCESSOR) > > + return true; > > + > > + if (adev->device_type !=3D ACPI_BUS_TYPE_DEVICE) > > + return false; > > + > > + return acpi_scan_check_handler(adev, &processor_handler); > > +} > > + > > static int acpi_processor_container_attach(struct acpi_device *dev, > > const struct acpi_device_id = *id) > > { > > diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c > > index 3b4d048c4941..e3c80f3b3b57 100644 > > --- a/drivers/acpi/device_pm.c > > +++ b/drivers/acpi/device_pm.c > > @@ -313,7 +313,7 @@ int acpi_bus_init_power(struct acpi_device *device) > > return -EINVAL; > > > > device->power.state =3D ACPI_STATE_UNKNOWN; > > - if (!acpi_device_is_present(device)) { > > + if (!acpi_dev_ready_for_enumeration(device)) { > > device->flags.initialized =3D false; > > return -ENXIO; > > } > > diff --git a/drivers/acpi/device_sysfs.c b/drivers/acpi/device_sysfs.c > > index 23373faa35ec..a0256d2493a7 100644 > > --- a/drivers/acpi/device_sysfs.c > > +++ b/drivers/acpi/device_sysfs.c > > @@ -141,7 +141,7 @@ static int create_pnp_modalias(const struct acpi_de= vice *acpi_dev, char *modalia > > struct acpi_hardware_id *id; > > > > /* Avoid unnecessarily loading modules for non present devices.= */ > > - if (!acpi_device_is_present(acpi_dev)) > > + if (!acpi_dev_ready_for_enumeration(acpi_dev)) > > return 0; > > > > /* > > diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h > > index 6588525c45ef..1bc8b6db60c5 100644 > > --- a/drivers/acpi/internal.h > > +++ b/drivers/acpi/internal.h > > @@ -62,6 +62,8 @@ void acpi_sysfs_add_hotplug_profile(struct acpi_hotpl= ug_profile *hotplug, > > int acpi_scan_add_handler_with_hotplug(struct acpi_scan_handler *handl= er, > > const char *hotplug_profile_name= ); > > void acpi_scan_hotplug_enabled(struct acpi_hotplug_profile *hotplug, b= ool val); > > +bool acpi_scan_check_handler(const struct acpi_device *adev, > > + struct acpi_scan_handler *handler); > > > > #ifdef CONFIG_DEBUG_FS > > extern struct dentry *acpi_debugfs_dir; > > @@ -121,7 +123,6 @@ int acpi_device_setup_files(struct acpi_device *dev= ); > > void acpi_device_remove_files(struct acpi_device *dev); > > void acpi_device_add_finalize(struct acpi_device *device); > > void acpi_free_pnp_ids(struct acpi_device_pnp *pnp); > > -bool acpi_device_is_present(const struct acpi_device *adev); > > bool acpi_device_is_battery(struct acpi_device *adev); > > bool acpi_device_is_first_physical_node(struct acpi_device *adev, > > const struct device *dev); > > @@ -133,6 +134,7 @@ int acpi_bus_register_early_device(int type); > > const struct acpi_device *acpi_companion_match(const struct device *de= v); > > int __acpi_device_uevent_modalias(const struct acpi_device *adev, > > struct kobj_uevent_env *env); > > +bool acpi_device_is_processor(const struct acpi_device *adev); > > > > /* -------------------------------------------------------------------= ------- > > Power Resource > > diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c > > index a6ead5204046..9f8d54038770 100644 > > --- a/drivers/acpi/property.c > > +++ b/drivers/acpi/property.c > > @@ -1486,7 +1486,7 @@ static bool acpi_fwnode_device_is_available(const= struct fwnode_handle *fwnode) > > if (!is_acpi_device_node(fwnode)) > > return false; > > > > - return acpi_device_is_present(to_acpi_device_node(fwnode)); > > + return acpi_dev_ready_for_enumeration(to_acpi_device_node(fwnod= e)); > > } > > > > static const void * > > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c > > index e6ed1ba91e5c..fd2e8b3a5749 100644 > > --- a/drivers/acpi/scan.c > > +++ b/drivers/acpi/scan.c > > @@ -304,7 +304,7 @@ static int acpi_scan_device_check(struct acpi_devic= e *adev) > > int error; > > > > acpi_bus_get_status(adev); > > - if (acpi_device_is_present(adev)) { > > + if (acpi_dev_ready_for_enumeration(adev)) { > > /* > > * This function is only called for device objects for = which > > * matching scan handlers exist. The only situation in= which > > @@ -338,7 +338,7 @@ static int acpi_scan_bus_check(struct acpi_device *= adev, void *not_used) > > int error; > > > > acpi_bus_get_status(adev); > > - if (!acpi_device_is_present(adev)) { > > + if (!acpi_dev_ready_for_enumeration(adev)) { > > acpi_scan_device_not_enumerated(adev); > > return 0; > > } > > @@ -1917,11 +1917,6 @@ static bool acpi_device_should_be_hidden(acpi_ha= ndle handle) > > return true; > > } > > > > -bool acpi_device_is_present(const struct acpi_device *adev) > > -{ > > - return adev->status.present || adev->status.functional; > > -} > > - > > static bool acpi_scan_handler_matching(struct acpi_scan_handler *handl= er, > > const char *idstr, > > const struct acpi_device_id **ma= tchid) > > @@ -1942,6 +1937,18 @@ static bool acpi_scan_handler_matching(struct ac= pi_scan_handler *handler, > > return false; > > } > > > > +bool acpi_scan_check_handler(const struct acpi_device *adev, > > + struct acpi_scan_handler *handler) > > +{ > > + struct acpi_hardware_id *hwid; > > + > > + list_for_each_entry(hwid, &adev->pnp.ids, list) > > + if (acpi_scan_handler_matching(handler, hwid->id, NULL)) > > + return true; > > + > > + return false; > > +} > > + > > static struct acpi_scan_handler *acpi_scan_match_handler(const char *i= dstr, > > const struct acpi_device_id **m= atchid) > > { > > @@ -2405,16 +2412,35 @@ EXPORT_SYMBOL_GPL(acpi_dev_clear_dependencies); > > * acpi_dev_ready_for_enumeration - Check if the ACPI device is ready = for enumeration > > * @device: Pointer to the &struct acpi_device to check > > * > > - * Check if the device is present and has no unmet dependencies. > > + * Check if the device is functional or enabled and has no unmet depen= dencies. > > * > > - * Return true if the device is ready for enumeratino. Otherwise, retu= rn false. > > + * Return true if the device is ready for enumeration. Otherwise, retu= rn false. > > */ > > bool acpi_dev_ready_for_enumeration(const struct acpi_device *device) > > { > > if (device->flags.honor_deps && device->dep_unmet) > > return false; > > > > - return acpi_device_is_present(device); > > + /* > > + * ACPI 6.5's 6.3.7 "_STA (Device Status)" allows firmware to r= eturn > > + * (!present && functional) for certain types of devices that s= hould be > > + * enumerated. Note that the enabled bit should not be set unle= ss the > > + * present bit is set. > > + * > > + * However, limit this only to processor devices to reduce poss= ible > > + * regressions with firmware. > > + */ > > + if (!device->status.present) > > + return device->status.functional; > > + > > + /* > > + * Fast path - if enabled is set, avoid the more expensive test= to > > + * check whether this device is a processor. > > + */ > > + if (device->status.enabled) > > + return true; > > + > > + return !acpi_device_is_processor(device); > > } > > EXPORT_SYMBOL_GPL(acpi_dev_ready_for_enumeration); > > > > -- =20 >=20 > I can queue this up for 6.9 as it looks like the rest of the series > will still need some work. What do you think? The sooner this goes in the sooner we discover if some of the bios bug workarounds we have dropped form the series are in reality necessary (i.e. get it into big board test farms). So I'm definitely keen to see this go in for 6.9. Hopefully we can make rapid progress on the rest of the series and hammer out which of the remaining subtle differences between the two flows are real vs code evolution issues. 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 7AF47C48BC3 for ; Mon, 19 Feb 2024 09:45:30 +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=XjuKYRy5V2yfGdPyWwm7SRaK4xvA8M24Zjag7syfrX0=; b=vy097DAng7BO6w K2xsOZBWDLd6+cRxCoUF8Ln0adMGsM1XovvC2FwB0fDDbLAFjctZZK3FChXsCvVOiWuPMGhyy3Jl7 sJ2pFm7Ql7VAOjznhlCCjJo5ER8VOpAu9BXemBecXfsQaGyQX04IaxvSh+vGWcL2N/p26lYASPlKG mFl/fi/Iah93NKBUWQCFTp36x4I7DjQXHdjP2CjlWMzF7VB4gHqhYCUGJTHMTQM1boxYJn9L47MlB 8QooV3Qwc4VtF9GSpkHIulWmxTmzQjLcz3rere/3xueP0gOhPzL90RnrzGk/cO/htrxhmNwVXLM5A ub5kObd/fDw6C9QJroQQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rc0DG-00000009st2-1IJT; Mon, 19 Feb 2024 09:45: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 1rc0DB-00000009sqn-3bhS; Mon, 19 Feb 2024 09:45:23 +0000 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TdcxZ6qlqz6K97K; Mon, 19 Feb 2024 17:41:38 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id E8D83140DDB; Mon, 19 Feb 2024 17:45:11 +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; Mon, 19 Feb 2024 09:45:11 +0000 Date: Mon, 19 Feb 2024 09:45:10 +0000 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse Subject: Re: [PATCH RFC v4 01/15] ACPI: Only enumerate enabled (or functional) processor devices Message-ID: <20240219094510.00004843@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: lhrpeml100002.china.huawei.com (7.191.160.241) 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-20240219_014522_216581_8E5FE827 X-CRM114-Status: GOOD ( 40.97 ) 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 T24gVGh1LCAxNSBGZWIgMjAyNCAyMToxMDozOSArMDEwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFdlZCwgSmFuIDMxLCAyMDI0IGF0IDU6NDni gK9QTSBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPiB3cm90ZToKPiA+ Cj4gPiBGcm9tOiBKYW1lcyBNb3JzZSA8amFtZXMubW9yc2VAYXJtLmNvbT4KPiA+Cj4gPiBUb2Rh eSB0aGUgQUNQSSBlbnVtZXJhdGlvbiBjb2RlICd2aXNpdHMnIGFsbCBkZXZpY2VzIHRoYXQgYXJl IHByZXNlbnQuCj4gPgo+ID4gVGhpcyBpcyBhIHByb2JsZW0gZm9yIGFybTY0LCB3aGVyZSBDUFVz IGFyZSBhbHdheXMgcHJlc2VudCwgYnV0IG5vdAo+ID4gYWx3YXlzIGVuYWJsZWQuIFdoZW4gYSBk ZXZpY2UtY2hlY2sgb2NjdXJzIGJlY2F1c2UgdGhlIGZpcm13YXJlLXBvbGljeQo+ID4gaGFzIGNo YW5nZWQgYW5kIGEgQ1BVIGlzIG5vdyBlbmFibGVkLCB0aGUgZm9sbG93aW5nIGVycm9yIG9jY3Vy czoKPiA+IHwgYWNwaSBBQ1BJMDAwNzo0ODogRW51bWVyYXRpb24gZmFpbHVyZQo+ID4KPiA+IFRo aXMgaXMgdWx0aW1hdGVseSBiZWNhdXNlIGFjcGlfZGV2X3JlYWR5X2Zvcl9lbnVtZXJhdGlvbigp IHJldHVybnMKPiA+IHRydWUgZm9yIGEgZGV2aWNlIHRoYXQgaXMgbm90IGVuYWJsZWQuIFRoZSBB Q1BJIFByb2Nlc3NvciBkcml2ZXIKPiA+IHdpbGwgbm90IHJlZ2lzdGVyIHN1Y2ggQ1BVcyBhcyB0 aGV5IGFyZSBub3QgJ2RlY29kaW5nIHRoZWlyIHJlc291cmNlcycuCj4gPgo+ID4gQUNQSSBhbGxv d3MgYSBkZXZpY2UgdG8gYmUgZnVuY3Rpb25hbCBpbnN0ZWFkIG9mIG1haW50YWluaW5nIHRoZQo+ ID4gcHJlc2VudCBhbmQgZW5hYmxlZCBiaXQsIGJ1dCB3ZSBjYW4ndCBzaW1wbHkgY2hlY2sgdGhl IGVuYWJsZWQgYml0Cj4gPiBmb3IgYWxsIGRldmljZXMgc2luY2UgZmlybXdhcmUgY2FuIGJlIGJ1 Z2d5Lgo+ID4KPiA+IElmIEFDUEkgaW5kaWNhdGVzIHRoYXQgdGhlIGRldmljZSBpcyBwcmVzZW50 IGFuZCBlbmFibGVkLCB0aGVuIGFsbCB3ZWxsCj4gPiBhbmQgZ29vZCwgd2UgY2FuIGVudW1hdGUg aXQuIEhvd2V2ZXIsIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBhbmQgbm90Cj4gPiBlbmFibGVk LCB0aGVuIHdlIGFsc28gY2hlY2sgd2hldGhlciB0aGUgZGV2aWNlIGlzIGEgcHJvY2Vzc29yIGRl dmljZQo+ID4gdG8gbGltaXQgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjaGVjayB0byBqdXN0IHBy b2Nlc3NvciBkZXZpY2VzLgo+ID4KPiA+IFRoaXMgYXZvaWRzIGVudW1lcmF0aW5nIHByZXNlbnQg JiYgZnVuY3Rpb25hbCBwcm9jZXNzb3IgZGV2aWNlcyB0aGF0Cj4gPiBhcmUgbm90IGVuYWJsZWQu Cj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+ Cj4gPiBDby1kZXZlbG9wZWQtYnk6IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5l dD4KPiA+IFRlc3RlZC1ieTogSm9uYXRoYW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3 ZWkuY29tPgo+ID4gUmV2aWV3ZWQtYnk6IEpvbmF0aGFuIENhbWVyb24gPEpvbmF0aGFuLkNhbWVy b25AaHVhd2VpLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwgS2luZyAoT3JhY2xlKSA8 cm1rK2tlcm5lbEBhcm1saW51eC5vcmcudWs+Cj4gPiAtLS0KPiA+IENoYW5nZXMgc2luY2UgUkZD IHYyOgo+ID4gICogSW5jb3Jwb3JhdGUgY29tbWVudCBzdWdnZXN0aW9uIGJ5IEdhdmluIFNoYW4u Cj4gPiBDaGFuZ2VzIHNpbmNlIFJGQyB2MzoKPiA+ICAqIEZpeGVkICJzZXJ0IiB0eXBvLgo+ID4g Q2hhbmdlcyBzaW5jZSBSRkMgdjMgKHNtYWxsZXIgc2VyaWVzKToKPiA+ICAqIFJlc3RyaWN0IGNo ZWNraW5nIHRoZSBlbmFibGVkIGJpdCB0byBwcm9jZXNzb3IgZGV2aWNlcywgdXBkYXRlCj4gPiAg ICBjb21taXQgY29tbWVudHMuCj4gPiAgKiBVc2UgUmFmYWVsJ3Mgc3VnZ2VzdGlvbiBpbgo+ID4g ICAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci81NzYwNTY5LkR2dVloTXhMb1RAa3JlYWNoZXIK PiA+ICAqIFVwZGF0ZWQgd2l0aCBhIGZpeCAtIHNlZToKPiA+ICAgIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2FsbC9aYmU4V1FSQVN4NkQ2UmFHQHNoZWxsLmFybWxpbnV4Lm9yZy51ay8KPiA+IC0t LQo+ID4gIGRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jIHwgMTEgKysrKysrKysrCj4gPiAg ZHJpdmVycy9hY3BpL2RldmljZV9wbS5jICAgICAgfCAgMiArLQo+ID4gIGRyaXZlcnMvYWNwaS9k ZXZpY2Vfc3lzZnMuYyAgIHwgIDIgKy0KPiA+ICBkcml2ZXJzL2FjcGkvaW50ZXJuYWwuaCAgICAg ICB8ICA0ICsrLQo+ID4gIGRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jICAgICAgIHwgIDIgKy0KPiA+ ICBkcml2ZXJzL2FjcGkvc2Nhbi5jICAgICAgICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAx NCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FjcGlfcHJv Y2Vzc29yLmMgYi9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gaW5kZXggNGZlMmVm NTQwODhjLi5jZjdjMWNjYTY5ZGQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2FjcGkvYWNwaV9w cm9jZXNzb3IuYwo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmMKPiA+IEBA IC02MjYsNiArNjI2LDE3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV9zY2FuX2hhbmRsZXIgcHJvY2Vz c29yX2hhbmRsZXIgPSB7Cj4gPiAgICAgICAgIH0sCj4gPiAgfTsKPiA+Cj4gPiArYm9vbCBhY3Bp X2RldmljZV9pc19wcm9jZXNzb3IoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQo+ID4g K3sKPiA+ICsgICAgICAgaWYgKGFkZXYtPmRldmljZV90eXBlID09IEFDUElfQlVTX1RZUEVfUFJP Q0VTU09SKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gKwo+ID4gKyAgICAg ICBpZiAoYWRldi0+ZGV2aWNlX3R5cGUgIT0gQUNQSV9CVVNfVFlQRV9ERVZJQ0UpCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gYWNwaV9z Y2FuX2NoZWNrX2hhbmRsZXIoYWRldiwgJnByb2Nlc3Nvcl9oYW5kbGVyKTsKPiA+ICt9Cj4gPiAr Cj4gPiAgc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9jb250YWluZXJfYXR0YWNoKHN0cnVjdCBh Y3BpX2RldmljZSAqZGV2LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqaWQpCj4gPiAgewo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNwaS9kZXZpY2VfcG0uYyBiL2RyaXZlcnMvYWNwaS9kZXZpY2VfcG0u Ywo+ID4gaW5kZXggM2I0ZDA0OGM0OTQxLi5lM2M4MGYzYjNiNTcgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2FjcGkvZGV2aWNlX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9kZXZpY2VfcG0u Ywo+ID4gQEAgLTMxMyw3ICszMTMsNyBAQCBpbnQgYWNwaV9idXNfaW5pdF9wb3dlcihzdHJ1Y3Qg YWNwaV9kZXZpY2UgKmRldmljZSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiA+Cj4gPiAgICAgICAgIGRldmljZS0+cG93ZXIuc3RhdGUgPSBBQ1BJX1NUQVRFX1VOS05PV047 Cj4gPiAtICAgICAgIGlmICghYWNwaV9kZXZpY2VfaXNfcHJlc2VudChkZXZpY2UpKSB7Cj4gPiAr ICAgICAgIGlmICghYWNwaV9kZXZfcmVhZHlfZm9yX2VudW1lcmF0aW9uKGRldmljZSkpIHsKPiA+ ICAgICAgICAgICAgICAgICBkZXZpY2UtPmZsYWdzLmluaXRpYWxpemVkID0gZmFsc2U7Cj4gPiAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FTlhJTzsKPiA+ICAgICAgICAgfQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYyBiL2RyaXZlcnMvYWNwaS9kZXZpY2Vfc3lz ZnMuYwo+ID4gaW5kZXggMjMzNzNmYWEzNWVjLi5hMDI1NmQyNDkzYTcgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMKPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9kZXZp Y2Vfc3lzZnMuYwo+ID4gQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9wbnBf bW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2RldiwgY2hhciAqbW9kYWxp YQo+ID4gICAgICAgICBzdHJ1Y3QgYWNwaV9oYXJkd2FyZV9pZCAqaWQ7Cj4gPgo+ID4gICAgICAg ICAvKiBBdm9pZCB1bm5lY2Vzc2FyaWx5IGxvYWRpbmcgbW9kdWxlcyBmb3Igbm9uIHByZXNlbnQg ZGV2aWNlcy4gKi8KPiA+IC0gICAgICAgaWYgKCFhY3BpX2RldmljZV9pc19wcmVzZW50KGFjcGlf ZGV2KSkKPiA+ICsgICAgICAgaWYgKCFhY3BpX2Rldl9yZWFkeV9mb3JfZW51bWVyYXRpb24oYWNw aV9kZXYpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4KPiA+ICAgICAgICAgLyoK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvaW50ZXJuYWwuaCBiL2RyaXZlcnMvYWNwaS9p bnRlcm5hbC5oCj4gPiBpbmRleCA2NTg4NTI1YzQ1ZWYuLjFiYzhiNmRiNjBjNSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvYWNwaS9pbnRlcm5hbC5oCj4gPiArKysgYi9kcml2ZXJzL2FjcGkvaW50 ZXJuYWwuaAo+ID4gQEAgLTYyLDYgKzYyLDggQEAgdm9pZCBhY3BpX3N5c2ZzX2FkZF9ob3RwbHVn X3Byb2ZpbGUoc3RydWN0IGFjcGlfaG90cGx1Z19wcm9maWxlICpob3RwbHVnLAo+ID4gIGludCBh Y3BpX3NjYW5fYWRkX2hhbmRsZXJfd2l0aF9ob3RwbHVnKHN0cnVjdCBhY3BpX3NjYW5faGFuZGxl ciAqaGFuZGxlciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmhvdHBsdWdfcHJvZmlsZV9uYW1lKTsKPiA+ICB2b2lkIGFjcGlfc2Nhbl9ob3Rw bHVnX2VuYWJsZWQoc3RydWN0IGFjcGlfaG90cGx1Z19wcm9maWxlICpob3RwbHVnLCBib29sIHZh bCk7Cj4gPiArYm9vbCBhY3BpX3NjYW5fY2hlY2tfaGFuZGxlcihjb25zdCBzdHJ1Y3QgYWNwaV9k ZXZpY2UgKmFkZXYsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3Bp X3NjYW5faGFuZGxlciAqaGFuZGxlcik7Cj4gPgo+ID4gICNpZmRlZiBDT05GSUdfREVCVUdfRlMK PiA+ICBleHRlcm4gc3RydWN0IGRlbnRyeSAqYWNwaV9kZWJ1Z2ZzX2RpcjsKPiA+IEBAIC0xMjEs NyArMTIzLDYgQEAgaW50IGFjcGlfZGV2aWNlX3NldHVwX2ZpbGVzKHN0cnVjdCBhY3BpX2Rldmlj ZSAqZGV2KTsKPiA+ICB2b2lkIGFjcGlfZGV2aWNlX3JlbW92ZV9maWxlcyhzdHJ1Y3QgYWNwaV9k ZXZpY2UgKmRldik7Cj4gPiAgdm9pZCBhY3BpX2RldmljZV9hZGRfZmluYWxpemUoc3RydWN0IGFj cGlfZGV2aWNlICpkZXZpY2UpOwo+ID4gIHZvaWQgYWNwaV9mcmVlX3BucF9pZHMoc3RydWN0IGFj cGlfZGV2aWNlX3BucCAqcG5wKTsKPiA+IC1ib29sIGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQoY29u c3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KTsKPiA+ICBib29sIGFjcGlfZGV2aWNlX2lzX2Jh dHRlcnkoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KTsKPiA+ICBib29sIGFjcGlfZGV2aWNlX2lz X2ZpcnN0X3BoeXNpY2FsX25vZGUoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRl dik7Cj4gPiBAQCAtMTMzLDYgKzEzNCw3IEBAIGludCBhY3BpX2J1c19yZWdpc3Rlcl9lYXJseV9k ZXZpY2UoaW50IHR5cGUpOwo+ID4gIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWNwaV9jb21w YW5pb25fbWF0Y2goY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KTsKPiA+ICBpbnQgX19hY3BpX2Rl dmljZV91ZXZlbnRfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrb2JqX3VldmVudF9lbnYg KmVudik7Cj4gPiArYm9vbCBhY3BpX2RldmljZV9pc19wcm9jZXNzb3IoY29uc3Qgc3RydWN0IGFj cGlfZGV2aWNlICphZGV2KTsKPiA+Cj4gPiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG93ZXIgUmVzb3VyY2UKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2FjcGkvcHJvcGVydHkuYyBiL2RyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jCj4g PiBpbmRleCBhNmVhZDUyMDQwNDYuLjlmOGQ1NDAzODc3MCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvYWNwaS9wcm9wZXJ0eS5jCj4gPiArKysgYi9kcml2ZXJzL2FjcGkvcHJvcGVydHkuYwo+ID4g QEAgLTE0ODYsNyArMTQ4Niw3IEBAIHN0YXRpYyBib29sIGFjcGlfZndub2RlX2RldmljZV9pc19h dmFpbGFibGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSkKPiA+ICAgICAgICAg aWYgKCFpc19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkpCj4gPiAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwo+ID4KPiA+IC0gICAgICAgcmV0dXJuIGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQo dG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpKTsKPiA+ICsgICAgICAgcmV0dXJuIGFjcGlfZGV2 X3JlYWR5X2Zvcl9lbnVtZXJhdGlvbih0b19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkpOwo+ID4g IH0KPiA+Cj4gPiAgc3RhdGljIGNvbnN0IHZvaWQgKgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv YWNwaS9zY2FuLmMgYi9kcml2ZXJzL2FjcGkvc2Nhbi5jCj4gPiBpbmRleCBlNmVkMWJhOTFlNWMu LmZkMmU4YjNhNTc0OSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvYWNwaS9zY2FuLmMKPiA+ICsr KyBiL2RyaXZlcnMvYWNwaS9zY2FuLmMKPiA+IEBAIC0zMDQsNyArMzA0LDcgQEAgc3RhdGljIGlu dCBhY3BpX3NjYW5fZGV2aWNlX2NoZWNrKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldikKPiA+ICAg ICAgICAgaW50IGVycm9yOwo+ID4KPiA+ICAgICAgICAgYWNwaV9idXNfZ2V0X3N0YXR1cyhhZGV2 KTsKPiA+IC0gICAgICAgaWYgKGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQoYWRldikpIHsKPiA+ICsg ICAgICAgaWYgKGFjcGlfZGV2X3JlYWR5X2Zvcl9lbnVtZXJhdGlvbihhZGV2KSkgewo+ID4gICAg ICAgICAgICAgICAgIC8qCj4gPiAgICAgICAgICAgICAgICAgICogVGhpcyBmdW5jdGlvbiBpcyBv bmx5IGNhbGxlZCBmb3IgZGV2aWNlIG9iamVjdHMgZm9yIHdoaWNoCj4gPiAgICAgICAgICAgICAg ICAgICogbWF0Y2hpbmcgc2NhbiBoYW5kbGVycyBleGlzdC4gIFRoZSBvbmx5IHNpdHVhdGlvbiBp biB3aGljaAo+ID4gQEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgaW50IGFjcGlfc2Nhbl9idXNf Y2hlY2soc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCB2b2lkICpub3RfdXNlZCkKPiA+ICAgICAg ICAgaW50IGVycm9yOwo+ID4KPiA+ICAgICAgICAgYWNwaV9idXNfZ2V0X3N0YXR1cyhhZGV2KTsK PiA+IC0gICAgICAgaWYgKCFhY3BpX2RldmljZV9pc19wcmVzZW50KGFkZXYpKSB7Cj4gPiArICAg ICAgIGlmICghYWNwaV9kZXZfcmVhZHlfZm9yX2VudW1lcmF0aW9uKGFkZXYpKSB7Cj4gPiAgICAg ICAgICAgICAgICAgYWNwaV9zY2FuX2RldmljZV9ub3RfZW51bWVyYXRlZChhZGV2KTsKPiA+ICAg ICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICAgICAgICAgfQo+ID4gQEAgLTE5MTcsMTEgKzE5 MTcsNiBAQCBzdGF0aWMgYm9vbCBhY3BpX2RldmljZV9zaG91bGRfYmVfaGlkZGVuKGFjcGlfaGFu ZGxlIGhhbmRsZSkKPiA+ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4KPiA+IC1ib29s IGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQo+ ID4gLXsKPiA+IC0gICAgICAgcmV0dXJuIGFkZXYtPnN0YXR1cy5wcmVzZW50IHx8IGFkZXYtPnN0 YXR1cy5mdW5jdGlvbmFsOwo+ID4gLX0KPiA+IC0KPiA+ICBzdGF0aWMgYm9vbCBhY3BpX3NjYW5f aGFuZGxlcl9tYXRjaGluZyhzdHJ1Y3QgYWNwaV9zY2FuX2hhbmRsZXIgKmhhbmRsZXIsCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppZHN0ciwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBh Y3BpX2RldmljZV9pZCAqKm1hdGNoaWQpCj4gPiBAQCAtMTk0Miw2ICsxOTM3LDE4IEBAIHN0YXRp YyBib29sIGFjcGlfc2Nhbl9oYW5kbGVyX21hdGNoaW5nKHN0cnVjdCBhY3BpX3NjYW5faGFuZGxl ciAqaGFuZGxlciwKPiA+ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gIH0KPiA+Cj4gPiArYm9v bCBhY3BpX3NjYW5fY2hlY2tfaGFuZGxlcihjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX3NjYW5faGFuZGxl ciAqaGFuZGxlcikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBhY3BpX2hhcmR3YXJlX2lkICpo d2lkOwo+ID4gKwo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGh3aWQsICZhZGV2LT5w bnAuaWRzLCBsaXN0KQo+ID4gKyAgICAgICAgICAgICAgIGlmIChhY3BpX3NjYW5faGFuZGxlcl9t YXRjaGluZyhoYW5kbGVyLCBod2lkLT5pZCwgTlVMTCkpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gK30K PiA+ICsKPiA+ICBzdGF0aWMgc3RydWN0IGFjcGlfc2Nhbl9oYW5kbGVyICphY3BpX3NjYW5fbWF0 Y2hfaGFuZGxlcihjb25zdCBjaGFyICppZHN0ciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgKiptYXRjaGlkKQo+ ID4gIHsKPiA+IEBAIC0yNDA1LDE2ICsyNDEyLDM1IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGFjcGlf ZGV2X2NsZWFyX2RlcGVuZGVuY2llcyk7Cj4gPiAgICogYWNwaV9kZXZfcmVhZHlfZm9yX2VudW1l cmF0aW9uIC0gQ2hlY2sgaWYgdGhlIEFDUEkgZGV2aWNlIGlzIHJlYWR5IGZvciBlbnVtZXJhdGlv bgo+ID4gICAqIEBkZXZpY2U6IFBvaW50ZXIgdG8gdGhlICZzdHJ1Y3QgYWNwaV9kZXZpY2UgdG8g Y2hlY2sKPiA+ICAgKgo+ID4gLSAqIENoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBhbmQg aGFzIG5vIHVubWV0IGRlcGVuZGVuY2llcy4KPiA+ICsgKiBDaGVjayBpZiB0aGUgZGV2aWNlIGlz IGZ1bmN0aW9uYWwgb3IgZW5hYmxlZCBhbmQgaGFzIG5vIHVubWV0IGRlcGVuZGVuY2llcy4KPiA+ ICAgKgo+ID4gLSAqIFJldHVybiB0cnVlIGlmIHRoZSBkZXZpY2UgaXMgcmVhZHkgZm9yIGVudW1l cmF0aW5vLiBPdGhlcndpc2UsIHJldHVybiBmYWxzZS4KPiA+ICsgKiBSZXR1cm4gdHJ1ZSBpZiB0 aGUgZGV2aWNlIGlzIHJlYWR5IGZvciBlbnVtZXJhdGlvbi4gT3RoZXJ3aXNlLCByZXR1cm4gZmFs c2UuCj4gPiAgICovCj4gPiAgYm9vbCBhY3BpX2Rldl9yZWFkeV9mb3JfZW51bWVyYXRpb24oY29u c3Qgc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCj4gPiAgewo+ID4gICAgICAgICBpZiAoZGV2 aWNlLT5mbGFncy5ob25vcl9kZXBzICYmIGRldmljZS0+ZGVwX3VubWV0KQo+ID4gICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPiA+Cj4gPiAtICAgICAgIHJldHVybiBhY3BpX2RldmljZV9p c19wcmVzZW50KGRldmljZSk7Cj4gPiArICAgICAgIC8qCj4gPiArICAgICAgICAqIEFDUEkgNi41 J3MgNi4zLjcgIl9TVEEgKERldmljZSBTdGF0dXMpIiBhbGxvd3MgZmlybXdhcmUgdG8gcmV0dXJu Cj4gPiArICAgICAgICAqICghcHJlc2VudCAmJiBmdW5jdGlvbmFsKSBmb3IgY2VydGFpbiB0eXBl cyBvZiBkZXZpY2VzIHRoYXQgc2hvdWxkIGJlCj4gPiArICAgICAgICAqIGVudW1lcmF0ZWQuIE5v dGUgdGhhdCB0aGUgZW5hYmxlZCBiaXQgc2hvdWxkIG5vdCBiZSBzZXQgdW5sZXNzIHRoZQo+ID4g KyAgICAgICAgKiBwcmVzZW50IGJpdCBpcyBzZXQuCj4gPiArICAgICAgICAqCj4gPiArICAgICAg ICAqIEhvd2V2ZXIsIGxpbWl0IHRoaXMgb25seSB0byBwcm9jZXNzb3IgZGV2aWNlcyB0byByZWR1 Y2UgcG9zc2libGUKPiA+ICsgICAgICAgICogcmVncmVzc2lvbnMgd2l0aCBmaXJtd2FyZS4KPiA+ ICsgICAgICAgICovCj4gPiArICAgICAgIGlmICghZGV2aWNlLT5zdGF0dXMucHJlc2VudCkKPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNlLT5zdGF0dXMuZnVuY3Rpb25hbDsKPiA+ICsK PiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogRmFzdCBwYXRoIC0gaWYgZW5hYmxlZCBpcyBz ZXQsIGF2b2lkIHRoZSBtb3JlIGV4cGVuc2l2ZSB0ZXN0IHRvCj4gPiArICAgICAgICAqIGNoZWNr IHdoZXRoZXIgdGhpcyBkZXZpY2UgaXMgYSBwcm9jZXNzb3IuCj4gPiArICAgICAgICAqLwo+ID4g KyAgICAgICBpZiAoZGV2aWNlLT5zdGF0dXMuZW5hYmxlZCkKPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuICFhY3BpX2RldmljZV9pc19wcm9j ZXNzb3IoZGV2aWNlKTsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9kZXZfcmVh ZHlfZm9yX2VudW1lcmF0aW9uKTsKPiA+Cj4gPiAtLSAgCj4gCj4gSSBjYW4gcXVldWUgdGhpcyB1 cCBmb3IgNi45IGFzIGl0IGxvb2tzIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHNlcmllcwo+IHdpbGwg c3RpbGwgbmVlZCBzb21lIHdvcmsuICBXaGF0IGRvIHlvdSB0aGluaz8KClRoZSBzb29uZXIgdGhp cyBnb2VzIGluIHRoZSBzb29uZXIgd2UgZGlzY292ZXIgaWYgc29tZSBvZiB0aGUgYmlvcyBidWcK d29ya2Fyb3VuZHMgd2UgaGF2ZSBkcm9wcGVkIGZvcm0gdGhlIHNlcmllcyBhcmUgaW4gcmVhbGl0 eSBuZWNlc3NhcnkKKGkuZS4gZ2V0IGl0IGludG8gYmlnIGJvYXJkIHRlc3QgZmFybXMpLgoKU28g SSdtIGRlZmluaXRlbHkga2VlbiB0byBzZWUgdGhpcyBnbyBpbiBmb3IgNi45LgoKSG9wZWZ1bGx5 IHdlIGNhbiBtYWtlIHJhcGlkIHByb2dyZXNzIG9uIHRoZSByZXN0IG9mIHRoZSBzZXJpZXMgYW5k CmhhbW1lciBvdXQgd2hpY2ggb2YgdGhlIHJlbWFpbmluZyBzdWJ0bGUgZGlmZmVyZW5jZXMgYmV0 d2Vlbgp0aGUgdHdvIGZsb3dzIGFyZSByZWFsIHZzIGNvZGUgZXZvbHV0aW9uIGlzc3Vlcy4KCkpv bmF0aGFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg== 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 DF5C2C54764 for ; Mon, 19 Feb 2024 09:45:37 +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=BRyQzrYezOOk6qO/v953GXyP3jyVkVGLh3th3e33re4=; b=xMCAnkPIQY+fub XFP9b2Ca2d9RMKkzKx+UdQBZY6L9+ybNu6Z+ho3RS7PL3OMDNWjGMPTHuG8Y8ATQp7M/tVAn6ko73 LWOeb/1s8DmfECe9N6bNJYvLX6FDswsM1kSignb6azWoYmwE+lOQJow2KggwG6TQh+bt3+aGci0KM ud7GcliPVOv/n6tg+HO5nzK1y3+m6DeuDjvNXacQmy4rBQxlGFVXrNFKLsTc3UHWWeRDol55Yxoz0 YnMK44imHHkCqhSQAc7PqJOSXNwdWo0qk4qZojpULRrHAjjyh6Xz9fRY7drDvYpFG/IWQpNzYB/+X WwOatwOr/2zqQiMaGNJg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rc0DF-00000009sse-26Cb; Mon, 19 Feb 2024 09:45:25 +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 1rc0DB-00000009sqn-3bhS; Mon, 19 Feb 2024 09:45:23 +0000 Received: from mail.maildlp.com (unknown [172.18.186.31]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4TdcxZ6qlqz6K97K; Mon, 19 Feb 2024 17:41:38 +0800 (CST) Received: from lhrpeml500005.china.huawei.com (unknown [7.191.163.240]) by mail.maildlp.com (Postfix) with ESMTPS id E8D83140DDB; Mon, 19 Feb 2024 17:45:11 +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; Mon, 19 Feb 2024 09:45:11 +0000 Date: Mon, 19 Feb 2024 09:45:10 +0000 From: Jonathan Cameron To: "Rafael J. Wysocki" CC: Russell King , , , , , , , , , , , , , , , Salil Mehta , Jean-Philippe Brucker , , , James Morse Subject: Re: [PATCH RFC v4 01/15] ACPI: Only enumerate enabled (or functional) processor devices Message-ID: <20240219094510.00004843@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: lhrpeml100002.china.huawei.com (7.191.160.241) 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-20240219_014522_216581_8E5FE827 X-CRM114-Status: GOOD ( 40.97 ) 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 T24gVGh1LCAxNSBGZWIgMjAyNCAyMToxMDozOSArMDEwMAoiUmFmYWVsIEouIFd5c29ja2kiIDxy YWZhZWxAa2VybmVsLm9yZz4gd3JvdGU6Cgo+IE9uIFdlZCwgSmFuIDMxLCAyMDI0IGF0IDU6NDni gK9QTSBSdXNzZWxsIEtpbmcgPHJtaytrZXJuZWxAYXJtbGludXgub3JnLnVrPiB3cm90ZToKPiA+ Cj4gPiBGcm9tOiBKYW1lcyBNb3JzZSA8amFtZXMubW9yc2VAYXJtLmNvbT4KPiA+Cj4gPiBUb2Rh eSB0aGUgQUNQSSBlbnVtZXJhdGlvbiBjb2RlICd2aXNpdHMnIGFsbCBkZXZpY2VzIHRoYXQgYXJl IHByZXNlbnQuCj4gPgo+ID4gVGhpcyBpcyBhIHByb2JsZW0gZm9yIGFybTY0LCB3aGVyZSBDUFVz IGFyZSBhbHdheXMgcHJlc2VudCwgYnV0IG5vdAo+ID4gYWx3YXlzIGVuYWJsZWQuIFdoZW4gYSBk ZXZpY2UtY2hlY2sgb2NjdXJzIGJlY2F1c2UgdGhlIGZpcm13YXJlLXBvbGljeQo+ID4gaGFzIGNo YW5nZWQgYW5kIGEgQ1BVIGlzIG5vdyBlbmFibGVkLCB0aGUgZm9sbG93aW5nIGVycm9yIG9jY3Vy czoKPiA+IHwgYWNwaSBBQ1BJMDAwNzo0ODogRW51bWVyYXRpb24gZmFpbHVyZQo+ID4KPiA+IFRo aXMgaXMgdWx0aW1hdGVseSBiZWNhdXNlIGFjcGlfZGV2X3JlYWR5X2Zvcl9lbnVtZXJhdGlvbigp IHJldHVybnMKPiA+IHRydWUgZm9yIGEgZGV2aWNlIHRoYXQgaXMgbm90IGVuYWJsZWQuIFRoZSBB Q1BJIFByb2Nlc3NvciBkcml2ZXIKPiA+IHdpbGwgbm90IHJlZ2lzdGVyIHN1Y2ggQ1BVcyBhcyB0 aGV5IGFyZSBub3QgJ2RlY29kaW5nIHRoZWlyIHJlc291cmNlcycuCj4gPgo+ID4gQUNQSSBhbGxv d3MgYSBkZXZpY2UgdG8gYmUgZnVuY3Rpb25hbCBpbnN0ZWFkIG9mIG1haW50YWluaW5nIHRoZQo+ ID4gcHJlc2VudCBhbmQgZW5hYmxlZCBiaXQsIGJ1dCB3ZSBjYW4ndCBzaW1wbHkgY2hlY2sgdGhl IGVuYWJsZWQgYml0Cj4gPiBmb3IgYWxsIGRldmljZXMgc2luY2UgZmlybXdhcmUgY2FuIGJlIGJ1 Z2d5Lgo+ID4KPiA+IElmIEFDUEkgaW5kaWNhdGVzIHRoYXQgdGhlIGRldmljZSBpcyBwcmVzZW50 IGFuZCBlbmFibGVkLCB0aGVuIGFsbCB3ZWxsCj4gPiBhbmQgZ29vZCwgd2UgY2FuIGVudW1hdGUg aXQuIEhvd2V2ZXIsIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBhbmQgbm90Cj4gPiBlbmFibGVk LCB0aGVuIHdlIGFsc28gY2hlY2sgd2hldGhlciB0aGUgZGV2aWNlIGlzIGEgcHJvY2Vzc29yIGRl dmljZQo+ID4gdG8gbGltaXQgdGhlIGltcGFjdCBvZiB0aGlzIG5ldyBjaGVjayB0byBqdXN0IHBy b2Nlc3NvciBkZXZpY2VzLgo+ID4KPiA+IFRoaXMgYXZvaWRzIGVudW1lcmF0aW5nIHByZXNlbnQg JiYgZnVuY3Rpb25hbCBwcm9jZXNzb3IgZGV2aWNlcyB0aGF0Cj4gPiBhcmUgbm90IGVuYWJsZWQu Cj4gPgo+ID4gU2lnbmVkLW9mZi1ieTogSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+ Cj4gPiBDby1kZXZlbG9wZWQtYnk6IFJhZmFlbCBKLiBXeXNvY2tpIDxyandAcmp3eXNvY2tpLm5l dD4KPiA+IFRlc3RlZC1ieTogSm9uYXRoYW4gQ2FtZXJvbiA8Sm9uYXRoYW4uQ2FtZXJvbkBodWF3 ZWkuY29tPgo+ID4gUmV2aWV3ZWQtYnk6IEpvbmF0aGFuIENhbWVyb24gPEpvbmF0aGFuLkNhbWVy b25AaHVhd2VpLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFJ1c3NlbGwgS2luZyAoT3JhY2xlKSA8 cm1rK2tlcm5lbEBhcm1saW51eC5vcmcudWs+Cj4gPiAtLS0KPiA+IENoYW5nZXMgc2luY2UgUkZD IHYyOgo+ID4gICogSW5jb3Jwb3JhdGUgY29tbWVudCBzdWdnZXN0aW9uIGJ5IEdhdmluIFNoYW4u Cj4gPiBDaGFuZ2VzIHNpbmNlIFJGQyB2MzoKPiA+ICAqIEZpeGVkICJzZXJ0IiB0eXBvLgo+ID4g Q2hhbmdlcyBzaW5jZSBSRkMgdjMgKHNtYWxsZXIgc2VyaWVzKToKPiA+ICAqIFJlc3RyaWN0IGNo ZWNraW5nIHRoZSBlbmFibGVkIGJpdCB0byBwcm9jZXNzb3IgZGV2aWNlcywgdXBkYXRlCj4gPiAg ICBjb21taXQgY29tbWVudHMuCj4gPiAgKiBVc2UgUmFmYWVsJ3Mgc3VnZ2VzdGlvbiBpbgo+ID4g ICAgaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvci81NzYwNTY5LkR2dVloTXhMb1RAa3JlYWNoZXIK PiA+ICAqIFVwZGF0ZWQgd2l0aCBhIGZpeCAtIHNlZToKPiA+ICAgIGh0dHBzOi8vbG9yZS5rZXJu ZWwub3JnL2FsbC9aYmU4V1FSQVN4NkQ2UmFHQHNoZWxsLmFybWxpbnV4Lm9yZy51ay8KPiA+IC0t LQo+ID4gIGRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jIHwgMTEgKysrKysrKysrCj4gPiAg ZHJpdmVycy9hY3BpL2RldmljZV9wbS5jICAgICAgfCAgMiArLQo+ID4gIGRyaXZlcnMvYWNwaS9k ZXZpY2Vfc3lzZnMuYyAgIHwgIDIgKy0KPiA+ICBkcml2ZXJzL2FjcGkvaW50ZXJuYWwuaCAgICAg ICB8ICA0ICsrLQo+ID4gIGRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jICAgICAgIHwgIDIgKy0KPiA+ ICBkcml2ZXJzL2FjcGkvc2Nhbi5jICAgICAgICAgICB8IDQ2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tCj4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAx NCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FjcGlfcHJv Y2Vzc29yLmMgYi9kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYwo+ID4gaW5kZXggNGZlMmVm NTQwODhjLi5jZjdjMWNjYTY5ZGQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2FjcGkvYWNwaV9w cm9jZXNzb3IuYwo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmMKPiA+IEBA IC02MjYsNiArNjI2LDE3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV9zY2FuX2hhbmRsZXIgcHJvY2Vz c29yX2hhbmRsZXIgPSB7Cj4gPiAgICAgICAgIH0sCj4gPiAgfTsKPiA+Cj4gPiArYm9vbCBhY3Bp X2RldmljZV9pc19wcm9jZXNzb3IoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQo+ID4g K3sKPiA+ICsgICAgICAgaWYgKGFkZXYtPmRldmljZV90eXBlID09IEFDUElfQlVTX1RZUEVfUFJP Q0VTU09SKQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwo+ID4gKwo+ID4gKyAgICAg ICBpZiAoYWRldi0+ZGV2aWNlX3R5cGUgIT0gQUNQSV9CVVNfVFlQRV9ERVZJQ0UpCj4gPiArICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gKwo+ID4gKyAgICAgICByZXR1cm4gYWNwaV9z Y2FuX2NoZWNrX2hhbmRsZXIoYWRldiwgJnByb2Nlc3Nvcl9oYW5kbGVyKTsKPiA+ICt9Cj4gPiAr Cj4gPiAgc3RhdGljIGludCBhY3BpX3Byb2Nlc3Nvcl9jb250YWluZXJfYXR0YWNoKHN0cnVjdCBh Y3BpX2RldmljZSAqZGV2LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZV9pZCAqaWQpCj4gPiAgewo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYWNwaS9kZXZpY2VfcG0uYyBiL2RyaXZlcnMvYWNwaS9kZXZpY2VfcG0u Ywo+ID4gaW5kZXggM2I0ZDA0OGM0OTQxLi5lM2M4MGYzYjNiNTcgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2FjcGkvZGV2aWNlX3BtLmMKPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9kZXZpY2VfcG0u Ywo+ID4gQEAgLTMxMyw3ICszMTMsNyBAQCBpbnQgYWNwaV9idXNfaW5pdF9wb3dlcihzdHJ1Y3Qg YWNwaV9kZXZpY2UgKmRldmljZSkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK PiA+Cj4gPiAgICAgICAgIGRldmljZS0+cG93ZXIuc3RhdGUgPSBBQ1BJX1NUQVRFX1VOS05PV047 Cj4gPiAtICAgICAgIGlmICghYWNwaV9kZXZpY2VfaXNfcHJlc2VudChkZXZpY2UpKSB7Cj4gPiAr ICAgICAgIGlmICghYWNwaV9kZXZfcmVhZHlfZm9yX2VudW1lcmF0aW9uKGRldmljZSkpIHsKPiA+ ICAgICAgICAgICAgICAgICBkZXZpY2UtPmZsYWdzLmluaXRpYWxpemVkID0gZmFsc2U7Cj4gPiAg ICAgICAgICAgICAgICAgcmV0dXJuIC1FTlhJTzsKPiA+ICAgICAgICAgfQo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvYWNwaS9kZXZpY2Vfc3lzZnMuYyBiL2RyaXZlcnMvYWNwaS9kZXZpY2Vfc3lz ZnMuYwo+ID4gaW5kZXggMjMzNzNmYWEzNWVjLi5hMDI1NmQyNDkzYTcgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2FjcGkvZGV2aWNlX3N5c2ZzLmMKPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9kZXZp Y2Vfc3lzZnMuYwo+ID4gQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9wbnBf bW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphY3BpX2RldiwgY2hhciAqbW9kYWxp YQo+ID4gICAgICAgICBzdHJ1Y3QgYWNwaV9oYXJkd2FyZV9pZCAqaWQ7Cj4gPgo+ID4gICAgICAg ICAvKiBBdm9pZCB1bm5lY2Vzc2FyaWx5IGxvYWRpbmcgbW9kdWxlcyBmb3Igbm9uIHByZXNlbnQg ZGV2aWNlcy4gKi8KPiA+IC0gICAgICAgaWYgKCFhY3BpX2RldmljZV9pc19wcmVzZW50KGFjcGlf ZGV2KSkKPiA+ICsgICAgICAgaWYgKCFhY3BpX2Rldl9yZWFkeV9mb3JfZW51bWVyYXRpb24oYWNw aV9kZXYpKQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiAwOwo+ID4KPiA+ICAgICAgICAgLyoK PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvaW50ZXJuYWwuaCBiL2RyaXZlcnMvYWNwaS9p bnRlcm5hbC5oCj4gPiBpbmRleCA2NTg4NTI1YzQ1ZWYuLjFiYzhiNmRiNjBjNSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvYWNwaS9pbnRlcm5hbC5oCj4gPiArKysgYi9kcml2ZXJzL2FjcGkvaW50 ZXJuYWwuaAo+ID4gQEAgLTYyLDYgKzYyLDggQEAgdm9pZCBhY3BpX3N5c2ZzX2FkZF9ob3RwbHVn X3Byb2ZpbGUoc3RydWN0IGFjcGlfaG90cGx1Z19wcm9maWxlICpob3RwbHVnLAo+ID4gIGludCBh Y3BpX3NjYW5fYWRkX2hhbmRsZXJfd2l0aF9ob3RwbHVnKHN0cnVjdCBhY3BpX3NjYW5faGFuZGxl ciAqaGFuZGxlciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmhvdHBsdWdfcHJvZmlsZV9uYW1lKTsKPiA+ICB2b2lkIGFjcGlfc2Nhbl9ob3Rw bHVnX2VuYWJsZWQoc3RydWN0IGFjcGlfaG90cGx1Z19wcm9maWxlICpob3RwbHVnLCBib29sIHZh bCk7Cj4gPiArYm9vbCBhY3BpX3NjYW5fY2hlY2tfaGFuZGxlcihjb25zdCBzdHJ1Y3QgYWNwaV9k ZXZpY2UgKmFkZXYsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3Bp X3NjYW5faGFuZGxlciAqaGFuZGxlcik7Cj4gPgo+ID4gICNpZmRlZiBDT05GSUdfREVCVUdfRlMK PiA+ICBleHRlcm4gc3RydWN0IGRlbnRyeSAqYWNwaV9kZWJ1Z2ZzX2RpcjsKPiA+IEBAIC0xMjEs NyArMTIzLDYgQEAgaW50IGFjcGlfZGV2aWNlX3NldHVwX2ZpbGVzKHN0cnVjdCBhY3BpX2Rldmlj ZSAqZGV2KTsKPiA+ICB2b2lkIGFjcGlfZGV2aWNlX3JlbW92ZV9maWxlcyhzdHJ1Y3QgYWNwaV9k ZXZpY2UgKmRldik7Cj4gPiAgdm9pZCBhY3BpX2RldmljZV9hZGRfZmluYWxpemUoc3RydWN0IGFj cGlfZGV2aWNlICpkZXZpY2UpOwo+ID4gIHZvaWQgYWNwaV9mcmVlX3BucF9pZHMoc3RydWN0IGFj cGlfZGV2aWNlX3BucCAqcG5wKTsKPiA+IC1ib29sIGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQoY29u c3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KTsKPiA+ICBib29sIGFjcGlfZGV2aWNlX2lzX2Jh dHRlcnkoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KTsKPiA+ICBib29sIGFjcGlfZGV2aWNlX2lz X2ZpcnN0X3BoeXNpY2FsX25vZGUoc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRl dik7Cj4gPiBAQCAtMTMzLDYgKzEzNCw3IEBAIGludCBhY3BpX2J1c19yZWdpc3Rlcl9lYXJseV9k ZXZpY2UoaW50IHR5cGUpOwo+ID4gIGNvbnN0IHN0cnVjdCBhY3BpX2RldmljZSAqYWNwaV9jb21w YW5pb25fbWF0Y2goY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KTsKPiA+ICBpbnQgX19hY3BpX2Rl dmljZV91ZXZlbnRfbW9kYWxpYXMoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBrb2JqX3VldmVudF9lbnYg KmVudik7Cj4gPiArYm9vbCBhY3BpX2RldmljZV9pc19wcm9jZXNzb3IoY29uc3Qgc3RydWN0IGFj cGlfZGV2aWNlICphZGV2KTsKPiA+Cj4gPiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG93ZXIgUmVzb3VyY2UKPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2FjcGkvcHJvcGVydHkuYyBiL2RyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jCj4g PiBpbmRleCBhNmVhZDUyMDQwNDYuLjlmOGQ1NDAzODc3MCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvYWNwaS9wcm9wZXJ0eS5jCj4gPiArKysgYi9kcml2ZXJzL2FjcGkvcHJvcGVydHkuYwo+ID4g QEAgLTE0ODYsNyArMTQ4Niw3IEBAIHN0YXRpYyBib29sIGFjcGlfZndub2RlX2RldmljZV9pc19h dmFpbGFibGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSkKPiA+ICAgICAgICAg aWYgKCFpc19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkpCj4gPiAgICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwo+ID4KPiA+IC0gICAgICAgcmV0dXJuIGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQo dG9fYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpKTsKPiA+ICsgICAgICAgcmV0dXJuIGFjcGlfZGV2 X3JlYWR5X2Zvcl9lbnVtZXJhdGlvbih0b19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkpOwo+ID4g IH0KPiA+Cj4gPiAgc3RhdGljIGNvbnN0IHZvaWQgKgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv YWNwaS9zY2FuLmMgYi9kcml2ZXJzL2FjcGkvc2Nhbi5jCj4gPiBpbmRleCBlNmVkMWJhOTFlNWMu LmZkMmU4YjNhNTc0OSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvYWNwaS9zY2FuLmMKPiA+ICsr KyBiL2RyaXZlcnMvYWNwaS9zY2FuLmMKPiA+IEBAIC0zMDQsNyArMzA0LDcgQEAgc3RhdGljIGlu dCBhY3BpX3NjYW5fZGV2aWNlX2NoZWNrKHN0cnVjdCBhY3BpX2RldmljZSAqYWRldikKPiA+ICAg ICAgICAgaW50IGVycm9yOwo+ID4KPiA+ICAgICAgICAgYWNwaV9idXNfZ2V0X3N0YXR1cyhhZGV2 KTsKPiA+IC0gICAgICAgaWYgKGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQoYWRldikpIHsKPiA+ICsg ICAgICAgaWYgKGFjcGlfZGV2X3JlYWR5X2Zvcl9lbnVtZXJhdGlvbihhZGV2KSkgewo+ID4gICAg ICAgICAgICAgICAgIC8qCj4gPiAgICAgICAgICAgICAgICAgICogVGhpcyBmdW5jdGlvbiBpcyBv bmx5IGNhbGxlZCBmb3IgZGV2aWNlIG9iamVjdHMgZm9yIHdoaWNoCj4gPiAgICAgICAgICAgICAg ICAgICogbWF0Y2hpbmcgc2NhbiBoYW5kbGVycyBleGlzdC4gIFRoZSBvbmx5IHNpdHVhdGlvbiBp biB3aGljaAo+ID4gQEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgaW50IGFjcGlfc2Nhbl9idXNf Y2hlY2soc3RydWN0IGFjcGlfZGV2aWNlICphZGV2LCB2b2lkICpub3RfdXNlZCkKPiA+ICAgICAg ICAgaW50IGVycm9yOwo+ID4KPiA+ICAgICAgICAgYWNwaV9idXNfZ2V0X3N0YXR1cyhhZGV2KTsK PiA+IC0gICAgICAgaWYgKCFhY3BpX2RldmljZV9pc19wcmVzZW50KGFkZXYpKSB7Cj4gPiArICAg ICAgIGlmICghYWNwaV9kZXZfcmVhZHlfZm9yX2VudW1lcmF0aW9uKGFkZXYpKSB7Cj4gPiAgICAg ICAgICAgICAgICAgYWNwaV9zY2FuX2RldmljZV9ub3RfZW51bWVyYXRlZChhZGV2KTsKPiA+ICAg ICAgICAgICAgICAgICByZXR1cm4gMDsKPiA+ICAgICAgICAgfQo+ID4gQEAgLTE5MTcsMTEgKzE5 MTcsNiBAQCBzdGF0aWMgYm9vbCBhY3BpX2RldmljZV9zaG91bGRfYmVfaGlkZGVuKGFjcGlfaGFu ZGxlIGhhbmRsZSkKPiA+ICAgICAgICAgcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4KPiA+IC1ib29s IGFjcGlfZGV2aWNlX2lzX3ByZXNlbnQoY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlICphZGV2KQo+ ID4gLXsKPiA+IC0gICAgICAgcmV0dXJuIGFkZXYtPnN0YXR1cy5wcmVzZW50IHx8IGFkZXYtPnN0 YXR1cy5mdW5jdGlvbmFsOwo+ID4gLX0KPiA+IC0KPiA+ICBzdGF0aWMgYm9vbCBhY3BpX3NjYW5f aGFuZGxlcl9tYXRjaGluZyhzdHJ1Y3QgYWNwaV9zY2FuX2hhbmRsZXIgKmhhbmRsZXIsCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppZHN0ciwK PiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBh Y3BpX2RldmljZV9pZCAqKm1hdGNoaWQpCj4gPiBAQCAtMTk0Miw2ICsxOTM3LDE4IEBAIHN0YXRp YyBib29sIGFjcGlfc2Nhbl9oYW5kbGVyX21hdGNoaW5nKHN0cnVjdCBhY3BpX3NjYW5faGFuZGxl ciAqaGFuZGxlciwKPiA+ICAgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gIH0KPiA+Cj4gPiArYm9v bCBhY3BpX3NjYW5fY2hlY2tfaGFuZGxlcihjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXYs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX3NjYW5faGFuZGxl ciAqaGFuZGxlcikKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBhY3BpX2hhcmR3YXJlX2lkICpo d2lkOwo+ID4gKwo+ID4gKyAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGh3aWQsICZhZGV2LT5w bnAuaWRzLCBsaXN0KQo+ID4gKyAgICAgICAgICAgICAgIGlmIChhY3BpX3NjYW5faGFuZGxlcl9t YXRjaGluZyhoYW5kbGVyLCBod2lkLT5pZCwgTlVMTCkpCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gdHJ1ZTsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIGZhbHNlOwo+ID4gK30K PiA+ICsKPiA+ICBzdGF0aWMgc3RydWN0IGFjcGlfc2Nhbl9oYW5kbGVyICphY3BpX3NjYW5fbWF0 Y2hfaGFuZGxlcihjb25zdCBjaGFyICppZHN0ciwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgKiptYXRjaGlkKQo+ ID4gIHsKPiA+IEBAIC0yNDA1LDE2ICsyNDEyLDM1IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGFjcGlf ZGV2X2NsZWFyX2RlcGVuZGVuY2llcyk7Cj4gPiAgICogYWNwaV9kZXZfcmVhZHlfZm9yX2VudW1l cmF0aW9uIC0gQ2hlY2sgaWYgdGhlIEFDUEkgZGV2aWNlIGlzIHJlYWR5IGZvciBlbnVtZXJhdGlv bgo+ID4gICAqIEBkZXZpY2U6IFBvaW50ZXIgdG8gdGhlICZzdHJ1Y3QgYWNwaV9kZXZpY2UgdG8g Y2hlY2sKPiA+ICAgKgo+ID4gLSAqIENoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudCBhbmQg aGFzIG5vIHVubWV0IGRlcGVuZGVuY2llcy4KPiA+ICsgKiBDaGVjayBpZiB0aGUgZGV2aWNlIGlz IGZ1bmN0aW9uYWwgb3IgZW5hYmxlZCBhbmQgaGFzIG5vIHVubWV0IGRlcGVuZGVuY2llcy4KPiA+ ICAgKgo+ID4gLSAqIFJldHVybiB0cnVlIGlmIHRoZSBkZXZpY2UgaXMgcmVhZHkgZm9yIGVudW1l cmF0aW5vLiBPdGhlcndpc2UsIHJldHVybiBmYWxzZS4KPiA+ICsgKiBSZXR1cm4gdHJ1ZSBpZiB0 aGUgZGV2aWNlIGlzIHJlYWR5IGZvciBlbnVtZXJhdGlvbi4gT3RoZXJ3aXNlLCByZXR1cm4gZmFs c2UuCj4gPiAgICovCj4gPiAgYm9vbCBhY3BpX2Rldl9yZWFkeV9mb3JfZW51bWVyYXRpb24oY29u c3Qgc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpCj4gPiAgewo+ID4gICAgICAgICBpZiAoZGV2 aWNlLT5mbGFncy5ob25vcl9kZXBzICYmIGRldmljZS0+ZGVwX3VubWV0KQo+ID4gICAgICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKPiA+Cj4gPiAtICAgICAgIHJldHVybiBhY3BpX2RldmljZV9p c19wcmVzZW50KGRldmljZSk7Cj4gPiArICAgICAgIC8qCj4gPiArICAgICAgICAqIEFDUEkgNi41 J3MgNi4zLjcgIl9TVEEgKERldmljZSBTdGF0dXMpIiBhbGxvd3MgZmlybXdhcmUgdG8gcmV0dXJu Cj4gPiArICAgICAgICAqICghcHJlc2VudCAmJiBmdW5jdGlvbmFsKSBmb3IgY2VydGFpbiB0eXBl cyBvZiBkZXZpY2VzIHRoYXQgc2hvdWxkIGJlCj4gPiArICAgICAgICAqIGVudW1lcmF0ZWQuIE5v dGUgdGhhdCB0aGUgZW5hYmxlZCBiaXQgc2hvdWxkIG5vdCBiZSBzZXQgdW5sZXNzIHRoZQo+ID4g KyAgICAgICAgKiBwcmVzZW50IGJpdCBpcyBzZXQuCj4gPiArICAgICAgICAqCj4gPiArICAgICAg ICAqIEhvd2V2ZXIsIGxpbWl0IHRoaXMgb25seSB0byBwcm9jZXNzb3IgZGV2aWNlcyB0byByZWR1 Y2UgcG9zc2libGUKPiA+ICsgICAgICAgICogcmVncmVzc2lvbnMgd2l0aCBmaXJtd2FyZS4KPiA+ ICsgICAgICAgICovCj4gPiArICAgICAgIGlmICghZGV2aWNlLT5zdGF0dXMucHJlc2VudCkKPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNlLT5zdGF0dXMuZnVuY3Rpb25hbDsKPiA+ICsK PiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogRmFzdCBwYXRoIC0gaWYgZW5hYmxlZCBpcyBz ZXQsIGF2b2lkIHRoZSBtb3JlIGV4cGVuc2l2ZSB0ZXN0IHRvCj4gPiArICAgICAgICAqIGNoZWNr IHdoZXRoZXIgdGhpcyBkZXZpY2UgaXMgYSBwcm9jZXNzb3IuCj4gPiArICAgICAgICAqLwo+ID4g KyAgICAgICBpZiAoZGV2aWNlLT5zdGF0dXMuZW5hYmxlZCkKPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuICFhY3BpX2RldmljZV9pc19wcm9j ZXNzb3IoZGV2aWNlKTsKPiA+ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9kZXZfcmVh ZHlfZm9yX2VudW1lcmF0aW9uKTsKPiA+Cj4gPiAtLSAgCj4gCj4gSSBjYW4gcXVldWUgdGhpcyB1 cCBmb3IgNi45IGFzIGl0IGxvb2tzIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHNlcmllcwo+IHdpbGwg c3RpbGwgbmVlZCBzb21lIHdvcmsuICBXaGF0IGRvIHlvdSB0aGluaz8KClRoZSBzb29uZXIgdGhp cyBnb2VzIGluIHRoZSBzb29uZXIgd2UgZGlzY292ZXIgaWYgc29tZSBvZiB0aGUgYmlvcyBidWcK d29ya2Fyb3VuZHMgd2UgaGF2ZSBkcm9wcGVkIGZvcm0gdGhlIHNlcmllcyBhcmUgaW4gcmVhbGl0 eSBuZWNlc3NhcnkKKGkuZS4gZ2V0IGl0IGludG8gYmlnIGJvYXJkIHRlc3QgZmFybXMpLgoKU28g SSdtIGRlZmluaXRlbHkga2VlbiB0byBzZWUgdGhpcyBnbyBpbiBmb3IgNi45LgoKSG9wZWZ1bGx5 IHdlIGNhbiBtYWtlIHJhcGlkIHByb2dyZXNzIG9uIHRoZSByZXN0IG9mIHRoZSBzZXJpZXMgYW5k CmhhbW1lciBvdXQgd2hpY2ggb2YgdGhlIHJlbWFpbmluZyBzdWJ0bGUgZGlmZmVyZW5jZXMgYmV0 d2Vlbgp0aGUgdHdvIGZsb3dzIGFyZSByZWFsIHZzIGNvZGUgZXZvbHV0aW9uIGlzc3Vlcy4KCkpv bmF0aGFuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg==