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 X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BC21C432C1 for ; Wed, 25 Sep 2019 02:11:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 17748214AF for ; Wed, 25 Sep 2019 02:11:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="Wsm1gMXH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633827AbfIYCLU (ORCPT ); Tue, 24 Sep 2019 22:11:20 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:38075 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2633816AbfIYCLU (ORCPT ); Tue, 24 Sep 2019 22:11:20 -0400 Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout1.samsung.com (KnoxPortal) with ESMTP id 20190925021117epoutp010542c0e9e3e96e81ba7437b3dc6188ac~HjIAmE69u0289602896epoutp01G for ; Wed, 25 Sep 2019 02:11:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout1.samsung.com 20190925021117epoutp010542c0e9e3e96e81ba7437b3dc6188ac~HjIAmE69u0289602896epoutp01G DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1569377477; bh=VDVXq7IxSweeNsC/J6QvU1m/j6KrjZrXRBglDbAyZxI=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=Wsm1gMXHqcfhP518caymH5muq11OqQTmvX2T5Qk5Cm5eLn8uM5JZkgg0kAtsANTXt ANpwnGc8YK7cou57OcOl47MzhANhXN+ClYvjk8266GjjDztBfNLYxOrcQhkI8uq7Fl P8LOVIDf+ascU8bZBnFGxCCUQPSLJ0uxkB/fn44k= Received: from epsnrtp6.localdomain (unknown [182.195.42.167]) by epcas1p4.samsung.com (KnoxPortal) with ESMTP id 20190925021116epcas1p4d00682476f01f11b0402276f59af2887~HjIAEzIaR2206122061epcas1p4C; Wed, 25 Sep 2019 02:11:16 +0000 (GMT) Received: from epsmges1p4.samsung.com (unknown [182.195.40.157]) by epsnrtp6.localdomain (Postfix) with ESMTP id 46dM41633rzMqYkk; Wed, 25 Sep 2019 02:11:13 +0000 (GMT) Received: from epcas1p3.samsung.com ( [182.195.41.47]) by epsmges1p4.samsung.com (Symantec Messaging Gateway) with SMTP id 2A.63.04224.1CCCA8D5; Wed, 25 Sep 2019 11:11:13 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas1p2.samsung.com (KnoxPortal) with ESMTPA id 20190925021113epcas1p2ac23b18f9d1285b6af984657183c952e~HjH9En7D60134301343epcas1p24; Wed, 25 Sep 2019 02:11:13 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20190925021113epsmtrp128f8e2e67ade04cba255e4e03066612b~HjH9DqeVR1655016550epsmtrp1a; Wed, 25 Sep 2019 02:11:13 +0000 (GMT) X-AuditID: b6c32a38-d43ff70000001080-b9-5d8accc11a1d Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id D4.78.03889.1CCCA8D5; Wed, 25 Sep 2019 11:11:13 +0900 (KST) Received: from [10.113.221.102] (unknown [10.113.221.102]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190925021112epsmtip28e98ea100e68dcd6d501346db5544235~HjH8rFlwW0843508435epsmtip2d; Wed, 25 Sep 2019 02:11:12 +0000 (GMT) Subject: Re: [PATCH v8 5/6] PM / devfreq: Add PM QoS support To: Leonard Crestez , MyungJoo Ham , Kyungmin Park , Matthias Kaehlcke Cc: =?UTF-8?B?QXJ0dXIgxZp3aWdvxYQ=?= , Saravana Kannan , Krzysztof Kozlowski , Alexandre Bailon , Georgi Djakov , Abel Vesa , Jacky Bai , Viresh Kumar , Lukasz Luba , NXP Linux Team , linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org From: Chanwoo Choi Organization: Samsung Electronics Message-ID: <40885624-8f11-4eea-d5bf-d6bb50fa44dd@samsung.com> Date: Wed, 25 Sep 2019 11:15:36 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <58fdd2c226a4e76a3d9427baab7dd5c23af842ab.1569319738.git.leonard.crestez@nxp.com> Content-Language: en-US Content-Transfer-Encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKJsWRmVeSWpSXmKPExsWy7bCmvu7BM12xBl/nGVocOraV3eLr6VOM FssuHWW0mL53E5vF+fMb2C3ONr1ht7jVIGOx4u5HVotNj6+xWnT9Wsls8bn3CKPF5w2PGS1u N65gs1h97iCbRdehv2wWG796OAh4vL/Ryu4xu+Eii8eCTaUem1Z1snncubaHzWPzknqPje92 MHkcfLeHyaNvyypGj8+b5AK4orJtMlITU1KLFFLzkvNTMvPSbZW8g+Od403NDAx1DS0tzJUU 8hJzU22VXHwCdN0yc4AeUVIoS8wpBQoFJBYXK+nb2RTll5akKmTkF5fYKqUWpOQUWBboFSfm Fpfmpesl5+daGRoYGJkCFSZkZyy9V1Uw0b5ixvxOpgbGc0ZdjBwcEgImErPfOXYxcnEICexg lDi4+DAjhPOJUWLRmbvsEM43Ron3X/eww3Q8naYMEd/LKLH131qooveMEnd/HGLrYuTkEBaw kfh/9SMbSEJEYDWjRMvSO4wgCWaBJ8wSe9bLg9hsAloS+1/cAGvgF1CUuPrjMVgNr4CdxJtL J8BsFgFViYYdK5hAbFGBCIlPDw6zQtQISpyc+YQFxOYUiJNo2DyPFWK+uMStJ/OZIGx5ieat s5lBjpAQOMUu8XXGGiaIF1wkVq30AqmREBCWeHV8CzuELSXxsr8Nyq6WWHnyCBtEbwejxJb9 F1ghEsYS+5dOBpvDLKApsX6XPkRYUWLn77lQP/JJvPvawwqxileio00IokRZ4vKDu0wQtqTE 4vZOtgmMSrOQfDMLyQezkHwwC2HZAkaWVYxiqQXFuempxYYFJshxvYkRnMS1LHYw7jnnc4hR gINRiYfXgbUrVog1say4MvcQowQHs5II7ywZoBBvSmJlVWpRfnxRaU5q8SFGU2BgT2SWEk3O B2aYvJJ4Q1MjY2NjCxNDM1NDQyVxXo/0hlghgfTEktTs1NSC1CKYPiYOTqkGRktl7axpT78c Sm8/HR3Qld1W+DJO4qylyqeUMjkPoVePyjXE2mcmVE2sCPgpkBE76X+Xi8LtZZpClcw9Qp+/ Tv/GyJ9dqZ7F0qOhsdx9nr/4RVvBCXmaH5+pbz/dt7qosPWe/ezkBaGfTh6P7AzaV37iB+fd oGAWa6Er4TEc3zdc66irjRVTYinOSDTUYi4qTgQAZ0SkpfgDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrAIsWRmVeSWpSXmKPExsWy7bCSvO7BM12xBsd/ClocOraV3eLr6VOM FssuHWW0mL53E5vF+fMb2C3ONr1ht7jVIGOx4u5HVotNj6+xWnT9Wsls8bn3CKPF5w2PGS1u N65gs1h97iCbRdehv2wWG796OAh4vL/Ryu4xu+Eii8eCTaUem1Z1snncubaHzWPzknqPje92 MHkcfLeHyaNvyypGj8+b5AK4orhsUlJzMstSi/TtErgylt6rKphoXzFjfidTA+M5oy5GDg4J AROJp9OUuxi5OIQEdjNKrLg1jaWLkRMoLikx7eJRZogaYYnDh4shat4ySjw68gGsRljARuL/ 1Y9sILaIwFpGiTnnHUBsZoFnzBIndqVBNDxilJjUu4oRJMEmoCWx/8UNsAZ+AUWJqz8eg8V5 Bewk3lw6AWazCKhKNOxYwQRiiwpESBzeMQuqRlDi5MwnYIs5BeIkGjbPY4VYpi7xZ94lZghb XOLWk/lMELa8RPPW2cwTGIVnIWmfhaRlFpKWWUhaFjCyrGKUTC0ozk3PLTYsMMpLLdcrTswt Ls1L10vOz93ECI5nLa0djCdOxB9iFOBgVOLhdWDtihViTSwrrsw9xCjBwawkwjtLBijEm5JY WZValB9fVJqTWnyIUZqDRUmcVz7/WKSQQHpiSWp2ampBahFMlomDU6qBkefr6pbGz7ZMl/4u ucIjsaqj6ybnarunhstvPBUPeZ3kn9BdZlIpdppvyo5mhvK9IeERs9XfTUiOLfqsqSd1b/o/ jQQr5lS5O243foXXTuizq0p0XGkrIsslddNpwqdPpfGF/5Zu/6N05PaVxYbbprDqL/ZON3+1 aEIUn/QevilHNUXWyS36rMRSnJFoqMVcVJwIAHRynM/jAgAA X-CMS-MailID: 20190925021113epcas1p2ac23b18f9d1285b6af984657183c952e X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20190924101145epcas4p37f7d25b8743c25520b33fa392cd80d45 References: <58fdd2c226a4e76a3d9427baab7dd5c23af842ab.1569319738.git.leonard.crestez@nxp.com> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org On 19. 9. 24. 오후 7:11, Leonard Crestez wrote: > Register notifiers with the PM QoS framework in order to respond to > requests for DEV_PM_QOS_MIN_FREQUENCY and DEV_PM_QOS_MAX_FREQUENCY. > > No notifiers are added by this patch but PM QoS constraints can be > imposed externally (for example from other devices). > > Signed-off-by: Leonard Crestez > Reviewed-by: Matthias Kaehlcke > --- > drivers/devfreq/devfreq.c | 75 +++++++++++++++++++++++++++++++++++++++ > include/linux/devfreq.h | 5 +++ > 2 files changed, 80 insertions(+) > > diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c > index eee403e70c84..784f3e40536a 100644 > --- a/drivers/devfreq/devfreq.c > +++ b/drivers/devfreq/devfreq.c > @@ -22,15 +22,18 @@ > #include > #include > #include > #include > #include > +#include > #include "governor.h" > > #define CREATE_TRACE_POINTS > #include > > +#define HZ_PER_KHZ 1000 > + > static struct class *devfreq_class; > > /* > * devfreq core provides delayed work based load monitoring helper > * functions. Governors can use these or can implement their own > @@ -109,10 +112,11 @@ static unsigned long find_available_max_freq(struct devfreq *devfreq) > static void get_freq_range(struct devfreq *devfreq, > unsigned long *min_freq, > unsigned long *max_freq) > { > unsigned long *freq_table = devfreq->profile->freq_table; > + unsigned long qos_min_freq, qos_max_freq; > > lockdep_assert_held(&devfreq->lock); > > /* > * Init min/max frequency from freq table. > @@ -125,10 +129,18 @@ static void get_freq_range(struct devfreq *devfreq, > } else { > *min_freq = freq_table[devfreq->profile->max_state - 1]; > *max_freq = freq_table[0]; > } > > + /* constraints from PM QoS */ As I commented on patch4, 'constraints' -> 'Constraint' because first verb have to be used as the sigular verbs. I prefer to use following comments: /* Constraint minimum/maximum frequency from PM QoS constraints */ > + qos_min_freq = dev_pm_qos_read_value(devfreq->dev.parent, > + DEV_PM_QOS_MIN_FREQUENCY); > + qos_max_freq = dev_pm_qos_read_value(devfreq->dev.parent, > + DEV_PM_QOS_MIN_FREQUENCY); > + *min_freq = max(*min_freq, HZ_PER_KHZ * qos_min_freq); > + *max_freq = min(*max_freq, HZ_PER_KHZ * qos_max_freq); > + > /* constraints from sysfs */ > *min_freq = max(*min_freq, devfreq->min_freq); > *max_freq = min(*max_freq, devfreq->max_freq); > > /* constraints from OPP interface */ > @@ -606,10 +618,49 @@ static int devfreq_notifier_call(struct notifier_block *nb, unsigned long type, > mutex_unlock(&devfreq->lock); > > return ret; > } > > +/** > + * qos_notifier_call() - Common handler for QoS constraints. > + * @devfreq: the devfreq instance. > + */ > +static int qos_notifier_call(struct devfreq *devfreq) > +{ > + int err; > + > + mutex_lock(&devfreq->lock); > + err = update_devfreq(devfreq); > + mutex_unlock(&devfreq->lock); > + if (err) > + dev_err(devfreq->dev.parent, > + "failed to update frequency for PM QoS constraints (%d)\n", Is it not over 80 char? > + err); > + > + return NOTIFY_OK; > +} > + > +/** > + * qos_min_notifier_call() - Callback for QoS min_freq changes. > + * @nb: Should be devfreq->nb_min > + */ > +static int qos_min_notifier_call(struct notifier_block *nb, > + unsigned long val, void *ptr) > +{ > + return qos_notifier_call(container_of(nb, struct devfreq, nb_min)); > +} > + > +/** > + * qos_max_notifier_call() - Callback for QoS max_freq changes. > + * @nb: Should be devfreq->nb_max > + */ > +static int qos_max_notifier_call(struct notifier_block *nb, > + unsigned long val, void *ptr) > +{ > + return qos_notifier_call(container_of(nb, struct devfreq, nb_max)); > +} > + > /** > * devfreq_dev_release() - Callback for struct device to release the device. > * @dev: the devfreq device > * > * Remove devfreq from the list and release its resources. > @@ -620,10 +671,15 @@ static void devfreq_dev_release(struct device *dev) > > mutex_lock(&devfreq_list_lock); > list_del(&devfreq->node); > mutex_unlock(&devfreq_list_lock); > > + dev_pm_qos_remove_notifier(devfreq->dev.parent, &devfreq->nb_max, > + DEV_PM_QOS_MAX_FREQUENCY); > + dev_pm_qos_remove_notifier(devfreq->dev.parent, &devfreq->nb_min, > + DEV_PM_QOS_MIN_FREQUENCY); > + Just print error with dev_err() without stopping the release step. I prefer to handle the return value if kernel API provides the error code. > if (devfreq->profile->exit) > devfreq->profile->exit(devfreq->dev.parent); > > kfree(devfreq->time_in_state); > kfree(devfreq->trans_table); > @@ -733,10 +789,28 @@ struct devfreq *devfreq_add_device(struct device *dev, > if (err) { > put_device(&devfreq->dev); > goto err_out; > } > > + /* > + * Register notifiers for updates to min/max_freq after device is > + * initialized (and we can handle notifications) but before the > + * governor is started (which should do an initial enforcement of > + * constraints). > + */ My previous comment is not enough why I prefer to remove it. Sorry. Actually, until now, the devfreq_add_device() don't have the detailed comments because the line code is not too long. But, at the present time, devfreq_add_device() is too long. It means that the detailed comment are necessary. So, I'll add the detailed comment for each step of devfreq_add_device() on separate patch to keep the same style. I'll send the patch to you for the review. > + devfreq->nb_min.notifier_call = qos_min_notifier_call; > + err = dev_pm_qos_add_notifier(devfreq->dev.parent, &devfreq->nb_min, > + DEV_PM_QOS_MIN_FREQUENCY); > + if (err) > + goto err_devfreq; > + > + devfreq->nb_max.notifier_call = qos_max_notifier_call; > + err = dev_pm_qos_add_notifier(devfreq->dev.parent, &devfreq->nb_max, > + DEV_PM_QOS_MAX_FREQUENCY); > + if (err) > + goto err_devfreq; > + > mutex_lock(&devfreq_list_lock); > > governor = try_then_request_governor(devfreq->governor_name); > if (IS_ERR(governor)) { > dev_err(dev, "%s: Unable to find governor for the device\n", > @@ -760,10 +834,11 @@ struct devfreq *devfreq_add_device(struct device *dev, > > return devfreq; > > err_init: > mutex_unlock(&devfreq_list_lock); > +err_devfreq: > devfreq_remove_device(devfreq); > return ERR_PTR(err); > > err_dev: > /* > diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h > index c3cbc15fdf08..dac0dffeabb4 100644 > --- a/include/linux/devfreq.h > +++ b/include/linux/devfreq.h > @@ -134,10 +134,12 @@ struct devfreq_dev_profile { > * @total_trans: Number of devfreq transitions > * @trans_table: Statistics of devfreq transitions > * @time_in_state: Statistics of devfreq states > * @last_stat_updated: The last time stat updated > * @transition_notifier_list: list head of DEVFREQ_TRANSITION_NOTIFIER notifier > + * @nb_min: Notifier block for DEV_PM_QOS_MIN_FREQUENCY > + * @nb_max: Notifier block for DEV_PM_QOS_MAX_FREQUENCY > * > * This structure stores the devfreq information for a give device. > * > * Note that when a governor accesses entries in struct devfreq in its > * functions except for the context of callbacks defined in struct > @@ -176,10 +178,13 @@ struct devfreq { > unsigned int *trans_table; > unsigned long *time_in_state; > unsigned long last_stat_updated; > > struct srcu_notifier_head transition_notifier_list; > + > + struct notifier_block nb_min; > + struct notifier_block nb_max; > }; > > struct devfreq_freqs { > unsigned long old; > unsigned long new; > -- Best Regards, Chanwoo Choi Samsung Electronics 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 X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F114C432C1 for ; Wed, 25 Sep 2019 02:11:37 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 5D48820673 for ; Wed, 25 Sep 2019 02:11:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="rQ6cTLOk"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=samsung.com header.i=@samsung.com header.b="Wsm1gMXH" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5D48820673 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:References:In-Reply-To:MIME-Version: Date:Message-ID:From:To:Subject:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lF6woaAKU6fs+lCBODQ1hAkQHG8dENqdNoXCP9SvpJ8=; b=rQ6cTLOkuxOaAo S6fuBdqp9Q7Nkzg/G0Qx9Nl21T3asLMuPbJnVkv3IUrtNcpun6p2LdeRtxyqzaWRPvMmOgSUNg9Ny YZRiOakVq/Di5FgSwm0qEvcLWM9xwThL8vEQ8vs5wYK0TSirn+q86V1XRolqGffJKg0aaOKIsA4rC W1hHp1vvRjhpY+C9gjzlxJ6OGOA8OZSgp9Lo0+TrUKL5cVaLdU4hcTrNb4H66hsS/cKsNtURyklPc hpnvhk3HKnsekXmbaJFFARN/zdYQK1p8/56EHN/KdAybqF5e2E9goxdcr0CJoR0dL2V5kKGLdlokN qj67UNLINrdHG0qEwrRg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCwm5-0001Sw-7V; Wed, 25 Sep 2019 02:11:25 +0000 Received: from mailout2.samsung.com ([203.254.224.25]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCwm0-0001SS-LB for linux-arm-kernel@lists.infradead.org; Wed, 25 Sep 2019 02:11:23 +0000 Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout2.samsung.com (KnoxPortal) with ESMTP id 20190925021117epoutp02379d43934aeca6eb0973ea87a8793121~HjIAl-Spp2990829908epoutp02T for ; Wed, 25 Sep 2019 02:11:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.samsung.com 20190925021117epoutp02379d43934aeca6eb0973ea87a8793121~HjIAl-Spp2990829908epoutp02T DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1569377477; bh=VDVXq7IxSweeNsC/J6QvU1m/j6KrjZrXRBglDbAyZxI=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=Wsm1gMXHqcfhP518caymH5muq11OqQTmvX2T5Qk5Cm5eLn8uM5JZkgg0kAtsANTXt ANpwnGc8YK7cou57OcOl47MzhANhXN+ClYvjk8266GjjDztBfNLYxOrcQhkI8uq7Fl P8LOVIDf+ascU8bZBnFGxCCUQPSLJ0uxkB/fn44k= Received: from epsnrtp6.localdomain (unknown [182.195.42.167]) by epcas1p4.samsung.com (KnoxPortal) with ESMTP id 20190925021116epcas1p4d00682476f01f11b0402276f59af2887~HjIAEzIaR2206122061epcas1p4C; Wed, 25 Sep 2019 02:11:16 +0000 (GMT) Received: from epsmges1p4.samsung.com (unknown [182.195.40.157]) by epsnrtp6.localdomain (Postfix) with ESMTP id 46dM41633rzMqYkk; Wed, 25 Sep 2019 02:11:13 +0000 (GMT) Received: from epcas1p3.samsung.com ( [182.195.41.47]) by epsmges1p4.samsung.com (Symantec Messaging Gateway) with SMTP id 2A.63.04224.1CCCA8D5; Wed, 25 Sep 2019 11:11:13 +0900 (KST) Received: from epsmtrp1.samsung.com (unknown [182.195.40.13]) by epcas1p2.samsung.com (KnoxPortal) with ESMTPA id 20190925021113epcas1p2ac23b18f9d1285b6af984657183c952e~HjH9En7D60134301343epcas1p24; Wed, 25 Sep 2019 02:11:13 +0000 (GMT) Received: from epsmgms1p2new.samsung.com (unknown [182.195.42.42]) by epsmtrp1.samsung.com (KnoxPortal) with ESMTP id 20190925021113epsmtrp128f8e2e67ade04cba255e4e03066612b~HjH9DqeVR1655016550epsmtrp1a; Wed, 25 Sep 2019 02:11:13 +0000 (GMT) X-AuditID: b6c32a38-d43ff70000001080-b9-5d8accc11a1d Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p2new.samsung.com (Symantec Messaging Gateway) with SMTP id D4.78.03889.1CCCA8D5; Wed, 25 Sep 2019 11:11:13 +0900 (KST) Received: from [10.113.221.102] (unknown [10.113.221.102]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190925021112epsmtip28e98ea100e68dcd6d501346db5544235~HjH8rFlwW0843508435epsmtip2d; Wed, 25 Sep 2019 02:11:12 +0000 (GMT) Subject: Re: [PATCH v8 5/6] PM / devfreq: Add PM QoS support To: Leonard Crestez , MyungJoo Ham , Kyungmin Park , Matthias Kaehlcke From: Chanwoo Choi Organization: Samsung Electronics Message-ID: <40885624-8f11-4eea-d5bf-d6bb50fa44dd@samsung.com> Date: Wed, 25 Sep 2019 11:15:36 +0900 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <58fdd2c226a4e76a3d9427baab7dd5c23af842ab.1569319738.git.leonard.crestez@nxp.com> Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKJsWRmVeSWpSXmKPExsWy7bCmvu7BM12xBl/nGVocOraV3eLr6VOM FssuHWW0mL53E5vF+fMb2C3ONr1ht7jVIGOx4u5HVotNj6+xWnT9Wsls8bn3CKPF5w2PGS1u N65gs1h97iCbRdehv2wWG796OAh4vL/Ryu4xu+Eii8eCTaUem1Z1snncubaHzWPzknqPje92 MHkcfLeHyaNvyypGj8+b5AK4orJtMlITU1KLFFLzkvNTMvPSbZW8g+Od403NDAx1DS0tzJUU 8hJzU22VXHwCdN0yc4AeUVIoS8wpBQoFJBYXK+nb2RTll5akKmTkF5fYKqUWpOQUWBboFSfm Fpfmpesl5+daGRoYGJkCFSZkZyy9V1Uw0b5ixvxOpgbGc0ZdjBwcEgImErPfOXYxcnEICexg lDi4+DAjhPOJUWLRmbvsEM43Ron3X/eww3Q8naYMEd/LKLH131qooveMEnd/HGLrYuTkEBaw kfh/9SMbSEJEYDWjRMvSO4wgCWaBJ8wSe9bLg9hsAloS+1/cAGvgF1CUuPrjMVgNr4CdxJtL J8BsFgFViYYdK5hAbFGBCIlPDw6zQtQISpyc+YQFxOYUiJNo2DyPFWK+uMStJ/OZIGx5ieat s5lBjpAQOMUu8XXGGiaIF1wkVq30AqmREBCWeHV8CzuELSXxsr8Nyq6WWHnyCBtEbwejxJb9 F1ghEsYS+5dOBpvDLKApsX6XPkRYUWLn77lQP/JJvPvawwqxileio00IokRZ4vKDu0wQtqTE 4vZOtgmMSrOQfDMLyQezkHwwC2HZAkaWVYxiqQXFuempxYYFJshxvYkRnMS1LHYw7jnnc4hR gINRiYfXgbUrVog1say4MvcQowQHs5II7ywZoBBvSmJlVWpRfnxRaU5q8SFGU2BgT2SWEk3O B2aYvJJ4Q1MjY2NjCxNDM1NDQyVxXo/0hlghgfTEktTs1NSC1CKYPiYOTqkGRktl7axpT78c Sm8/HR3Qld1W+DJO4qylyqeUMjkPoVePyjXE2mcmVE2sCPgpkBE76X+Xi8LtZZpClcw9Qp+/ Tv/GyJ9dqZ7F0qOhsdx9nr/4RVvBCXmaH5+pbz/dt7qosPWe/ezkBaGfTh6P7AzaV37iB+fd oGAWa6Er4TEc3zdc66irjRVTYinOSDTUYi4qTgQAZ0SkpfgDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrAIsWRmVeSWpSXmKPExsWy7bCSvO7BM12xBsd/ClocOraV3eLr6VOM FssuHWW0mL53E5vF+fMb2C3ONr1ht7jVIGOx4u5HVotNj6+xWnT9Wsls8bn3CKPF5w2PGS1u N65gs1h97iCbRdehv2wWG796OAh4vL/Ryu4xu+Eii8eCTaUem1Z1snncubaHzWPzknqPje92 MHkcfLeHyaNvyypGj8+b5AK4orhsUlJzMstSi/TtErgylt6rKphoXzFjfidTA+M5oy5GDg4J AROJp9OUuxi5OIQEdjNKrLg1jaWLkRMoLikx7eJRZogaYYnDh4shat4ySjw68gGsRljARuL/ 1Y9sILaIwFpGiTnnHUBsZoFnzBIndqVBNDxilJjUu4oRJMEmoCWx/8UNsAZ+AUWJqz8eg8V5 Bewk3lw6AWazCKhKNOxYwQRiiwpESBzeMQuqRlDi5MwnYIs5BeIkGjbPY4VYpi7xZ94lZghb XOLWk/lMELa8RPPW2cwTGIVnIWmfhaRlFpKWWUhaFjCyrGKUTC0ozk3PLTYsMMpLLdcrTswt Ls1L10vOz93ECI5nLa0djCdOxB9iFOBgVOLhdWDtihViTSwrrsw9xCjBwawkwjtLBijEm5JY WZValB9fVJqTWnyIUZqDRUmcVz7/WKSQQHpiSWp2ampBahFMlomDU6qBkefr6pbGz7ZMl/4u ucIjsaqj6ybnarunhstvPBUPeZ3kn9BdZlIpdppvyo5mhvK9IeERs9XfTUiOLfqsqSd1b/o/ jQQr5lS5O243foXXTuizq0p0XGkrIsslddNpwqdPpfGF/5Zu/6N05PaVxYbbprDqL/ZON3+1 aEIUn/QevilHNUXWyS36rMRSnJFoqMVcVJwIAHRynM/jAgAA X-CMS-MailID: 20190925021113epcas1p2ac23b18f9d1285b6af984657183c952e X-Msg-Generator: CA X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20190924101145epcas4p37f7d25b8743c25520b33fa392cd80d45 References: <58fdd2c226a4e76a3d9427baab7dd5c23af842ab.1569319738.git.leonard.crestez@nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190924_191121_381591_0BAEBB03 X-CRM114-Status: GOOD ( 32.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?B?QXJ0dXIgxZp3aWdvxYQ=?= , Abel Vesa , Saravana Kannan , linux-pm@vger.kernel.org, Viresh Kumar , NXP Linux Team , Krzysztof Kozlowski , Lukasz Luba , Alexandre Bailon , Georgi Djakov , linux-arm-kernel@lists.infradead.org, Jacky Bai Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gMTkuIDkuIDI0LiDsmKTtm4QgNzoxMSwgTGVvbmFyZCBDcmVzdGV6IHdyb3RlOgo+IFJlZ2lz dGVyIG5vdGlmaWVycyB3aXRoIHRoZSBQTSBRb1MgZnJhbWV3b3JrIGluIG9yZGVyIHRvIHJlc3Bv bmQgdG8KPiByZXF1ZXN0cyBmb3IgREVWX1BNX1FPU19NSU5fRlJFUVVFTkNZIGFuZCBERVZfUE1f UU9TX01BWF9GUkVRVUVOQ1kuCj4gCj4gTm8gbm90aWZpZXJzIGFyZSBhZGRlZCBieSB0aGlzIHBh dGNoIGJ1dCBQTSBRb1MgY29uc3RyYWludHMgY2FuIGJlCj4gaW1wb3NlZCBleHRlcm5hbGx5IChm b3IgZXhhbXBsZSBmcm9tIG90aGVyIGRldmljZXMpLgo+IAo+IFNpZ25lZC1vZmYtYnk6IExlb25h cmQgQ3Jlc3RleiA8bGVvbmFyZC5jcmVzdGV6QG54cC5jb20+Cj4gUmV2aWV3ZWQtYnk6IE1hdHRo aWFzIEthZWhsY2tlIDxta2FAY2hyb21pdW0ub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2RldmZyZXEv ZGV2ZnJlcS5jIHwgNzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IGluY2x1ZGUvbGludXgvZGV2ZnJlcS5oICAgfCAgNSArKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCA4 MCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZGV2ZnJlcS9kZXZmcmVx LmMgYi9kcml2ZXJzL2RldmZyZXEvZGV2ZnJlcS5jCj4gaW5kZXggZWVlNDAzZTcwYzg0Li43ODRm M2U0MDUzNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9kZXZmcmVxL2RldmZyZXEuYwo+ICsrKyBi L2RyaXZlcnMvZGV2ZnJlcS9kZXZmcmVxLmMKPiBAQCAtMjIsMTUgKzIyLDE4IEBACj4gICNpbmNs dWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L3ByaW50ay5oPgo+ICAjaW5jbHVkZSA8bGludXgvaHJ0aW1lci5o Pgo+ICAjaW5jbHVkZSA8bGludXgvb2YuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3BtX3Fvcy5oPgo+ ICAjaW5jbHVkZSAiZ292ZXJub3IuaCIKPiAgCj4gICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5U Uwo+ICAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL2RldmZyZXEuaD4KPiAgCj4gKyNkZWZpbmUgSFpf UEVSX0tIWgkxMDAwCj4gKwo+ICBzdGF0aWMgc3RydWN0IGNsYXNzICpkZXZmcmVxX2NsYXNzOwo+ ICAKPiAgLyoKPiAgICogZGV2ZnJlcSBjb3JlIHByb3ZpZGVzIGRlbGF5ZWQgd29yayBiYXNlZCBs b2FkIG1vbml0b3JpbmcgaGVscGVyCj4gICAqIGZ1bmN0aW9ucy4gR292ZXJub3JzIGNhbiB1c2Ug dGhlc2Ugb3IgY2FuIGltcGxlbWVudCB0aGVpciBvd24KPiBAQCAtMTA5LDEwICsxMTIsMTEgQEAg c3RhdGljIHVuc2lnbmVkIGxvbmcgZmluZF9hdmFpbGFibGVfbWF4X2ZyZXEoc3RydWN0IGRldmZy ZXEgKmRldmZyZXEpCj4gIHN0YXRpYyB2b2lkIGdldF9mcmVxX3JhbmdlKHN0cnVjdCBkZXZmcmVx ICpkZXZmcmVxLAo+ICAJCQkgICB1bnNpZ25lZCBsb25nICptaW5fZnJlcSwKPiAgCQkJICAgdW5z aWduZWQgbG9uZyAqbWF4X2ZyZXEpCj4gIHsKPiAgCXVuc2lnbmVkIGxvbmcgKmZyZXFfdGFibGUg PSBkZXZmcmVxLT5wcm9maWxlLT5mcmVxX3RhYmxlOwo+ICsJdW5zaWduZWQgbG9uZyBxb3NfbWlu X2ZyZXEsIHFvc19tYXhfZnJlcTsKPiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZmcmVx LT5sb2NrKTsKPiAgCj4gIAkvKgo+ICAJICogSW5pdCBtaW4vbWF4IGZyZXF1ZW5jeSBmcm9tIGZy ZXEgdGFibGUuCj4gQEAgLTEyNSwxMCArMTI5LDE4IEBAIHN0YXRpYyB2b2lkIGdldF9mcmVxX3Jh bmdlKHN0cnVjdCBkZXZmcmVxICpkZXZmcmVxLAo+ICAJfSBlbHNlIHsKPiAgCQkqbWluX2ZyZXEg PSBmcmVxX3RhYmxlW2RldmZyZXEtPnByb2ZpbGUtPm1heF9zdGF0ZSAtIDFdOwo+ICAJCSptYXhf ZnJlcSA9IGZyZXFfdGFibGVbMF07Cj4gIAl9Cj4gIAo+ICsJLyogY29uc3RyYWludHMgZnJvbSBQ TSBRb1MgKi8KCkFzIEkgY29tbWVudGVkIG9uIHBhdGNoNCwKJ2NvbnN0cmFpbnRzJyAtPiAnQ29u c3RyYWludCcgYmVjYXVzZSBmaXJzdCB2ZXJiIGhhdmUgdG8gYmUgdXNlZAphcyB0aGUgc2lndWxh ciB2ZXJicy4KCkkgcHJlZmVyIHRvIHVzZSBmb2xsb3dpbmcgY29tbWVudHM6IAoKCS8qIENvbnN0 cmFpbnQgbWluaW11bS9tYXhpbXVtIGZyZXF1ZW5jeSBmcm9tIFBNIFFvUyBjb25zdHJhaW50cyAq LwoKPiArCXFvc19taW5fZnJlcSA9IGRldl9wbV9xb3NfcmVhZF92YWx1ZShkZXZmcmVxLT5kZXYu cGFyZW50LAo+ICsJCQkJCSAgICAgREVWX1BNX1FPU19NSU5fRlJFUVVFTkNZKTsKPiArCXFvc19t YXhfZnJlcSA9IGRldl9wbV9xb3NfcmVhZF92YWx1ZShkZXZmcmVxLT5kZXYucGFyZW50LAo+ICsJ CQkJCSAgICAgREVWX1BNX1FPU19NSU5fRlJFUVVFTkNZKTsKPiArCSptaW5fZnJlcSA9IG1heCgq bWluX2ZyZXEsIEhaX1BFUl9LSFogKiBxb3NfbWluX2ZyZXEpOwo+ICsJKm1heF9mcmVxID0gbWlu KCptYXhfZnJlcSwgSFpfUEVSX0tIWiAqIHFvc19tYXhfZnJlcSk7Cj4gKwo+ICAJLyogY29uc3Ry YWludHMgZnJvbSBzeXNmcyAqLwo+ICAJKm1pbl9mcmVxID0gbWF4KCptaW5fZnJlcSwgZGV2ZnJl cS0+bWluX2ZyZXEpOwo+ICAJKm1heF9mcmVxID0gbWluKCptYXhfZnJlcSwgZGV2ZnJlcS0+bWF4 X2ZyZXEpOwo+ICAKPiAgCS8qIGNvbnN0cmFpbnRzIGZyb20gT1BQIGludGVyZmFjZSAqLwo+IEBA IC02MDYsMTAgKzYxOCw0OSBAQCBzdGF0aWMgaW50IGRldmZyZXFfbm90aWZpZXJfY2FsbChzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIHR5cGUsCj4gIAltdXRleF91bmxv Y2soJmRldmZyZXEtPmxvY2spOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gKy8qKgo+ ICsgKiBxb3Nfbm90aWZpZXJfY2FsbCgpIC0gQ29tbW9uIGhhbmRsZXIgZm9yIFFvUyBjb25zdHJh aW50cy4KPiArICogQGRldmZyZXE6ICAgIHRoZSBkZXZmcmVxIGluc3RhbmNlLgo+ICsgKi8KPiAr c3RhdGljIGludCBxb3Nfbm90aWZpZXJfY2FsbChzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcSkKPiAr ewo+ICsJaW50IGVycjsKPiArCj4gKwltdXRleF9sb2NrKCZkZXZmcmVxLT5sb2NrKTsKPiArCWVy ciA9IHVwZGF0ZV9kZXZmcmVxKGRldmZyZXEpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZmcmVxLT5s b2NrKTsKPiArCWlmIChlcnIpCj4gKwkJZGV2X2VycihkZXZmcmVxLT5kZXYucGFyZW50LAo+ICsJ CQkJImZhaWxlZCB0byB1cGRhdGUgZnJlcXVlbmN5IGZvciBQTSBRb1MgY29uc3RyYWludHMgKCVk KVxuIiwKCklzIGl0IG5vdCBvdmVyIDgwIGNoYXI/Cgo+ICsJCQkJZXJyKTsKPiArCj4gKwlyZXR1 cm4gTk9USUZZX09LOwo+ICt9Cj4gKwo+ICsvKioKPiArICogcW9zX21pbl9ub3RpZmllcl9jYWxs KCkgLSBDYWxsYmFjayBmb3IgUW9TIG1pbl9mcmVxIGNoYW5nZXMuCj4gKyAqIEBuYjoJCVNob3Vs ZCBiZSBkZXZmcmVxLT5uYl9taW4KPiArICovCj4gK3N0YXRpYyBpbnQgcW9zX21pbl9ub3RpZmll cl9jYWxsKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsCj4gKwkJCQkJIHVuc2lnbmVkIGxvbmcg dmFsLCB2b2lkICpwdHIpCj4gK3sKPiArCXJldHVybiBxb3Nfbm90aWZpZXJfY2FsbChjb250YWlu ZXJfb2YobmIsIHN0cnVjdCBkZXZmcmVxLCBuYl9taW4pKTsKPiArfQo+ICsKPiArLyoqCj4gKyAq IHFvc19tYXhfbm90aWZpZXJfY2FsbCgpIC0gQ2FsbGJhY2sgZm9yIFFvUyBtYXhfZnJlcSBjaGFu Z2VzLgo+ICsgKiBAbmI6CQlTaG91bGQgYmUgZGV2ZnJlcS0+bmJfbWF4Cj4gKyAqLwo+ICtzdGF0 aWMgaW50IHFvc19tYXhfbm90aWZpZXJfY2FsbChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAo+ ICsJCQkJCSB1bnNpZ25lZCBsb25nIHZhbCwgdm9pZCAqcHRyKQo+ICt7Cj4gKwlyZXR1cm4gcW9z X25vdGlmaWVyX2NhbGwoY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgZGV2ZnJlcSwgbmJfbWF4KSk7 Cj4gK30KPiArCj4gIC8qKgo+ICAgKiBkZXZmcmVxX2Rldl9yZWxlYXNlKCkgLSBDYWxsYmFjayBm b3Igc3RydWN0IGRldmljZSB0byByZWxlYXNlIHRoZSBkZXZpY2UuCj4gICAqIEBkZXY6CXRoZSBk ZXZmcmVxIGRldmljZQo+ICAgKgo+ICAgKiBSZW1vdmUgZGV2ZnJlcSBmcm9tIHRoZSBsaXN0IGFu ZCByZWxlYXNlIGl0cyByZXNvdXJjZXMuCj4gQEAgLTYyMCwxMCArNjcxLDE1IEBAIHN0YXRpYyB2 b2lkIGRldmZyZXFfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KQo+ICAKPiAgCW11dGV4 X2xvY2soJmRldmZyZXFfbGlzdF9sb2NrKTsKPiAgCWxpc3RfZGVsKCZkZXZmcmVxLT5ub2RlKTsK PiAgCW11dGV4X3VubG9jaygmZGV2ZnJlcV9saXN0X2xvY2spOwo+ICAKPiArCWRldl9wbV9xb3Nf cmVtb3ZlX25vdGlmaWVyKGRldmZyZXEtPmRldi5wYXJlbnQsICZkZXZmcmVxLT5uYl9tYXgsCj4g KwkJCURFVl9QTV9RT1NfTUFYX0ZSRVFVRU5DWSk7Cj4gKwlkZXZfcG1fcW9zX3JlbW92ZV9ub3Rp ZmllcihkZXZmcmVxLT5kZXYucGFyZW50LCAmZGV2ZnJlcS0+bmJfbWluLAo+ICsJCQlERVZfUE1f UU9TX01JTl9GUkVRVUVOQ1kpOwo+ICsKCkp1c3QgcHJpbnQgZXJyb3Igd2l0aCBkZXZfZXJyKCkg d2l0aG91dCBzdG9wcGluZyB0aGUgcmVsZWFzZSBzdGVwLgoKSSBwcmVmZXIgdG8gaGFuZGxlIHRo ZSByZXR1cm4gdmFsdWUgaWYga2VybmVsIEFQSSBwcm92aWRlcwp0aGUgZXJyb3IgY29kZS4KCj4g IAlpZiAoZGV2ZnJlcS0+cHJvZmlsZS0+ZXhpdCkKPiAgCQlkZXZmcmVxLT5wcm9maWxlLT5leGl0 KGRldmZyZXEtPmRldi5wYXJlbnQpOwo+ICAKPiAgCWtmcmVlKGRldmZyZXEtPnRpbWVfaW5fc3Rh dGUpOwo+ICAJa2ZyZWUoZGV2ZnJlcS0+dHJhbnNfdGFibGUpOwo+IEBAIC03MzMsMTAgKzc4OSwy OCBAQCBzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJlcV9hZGRfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRl diwKPiAgCWlmIChlcnIpIHsKPiAgCQlwdXRfZGV2aWNlKCZkZXZmcmVxLT5kZXYpOwo+ICAJCWdv dG8gZXJyX291dDsKPiAgCX0KPiAgCj4gKwkvKgo+ICsJICogUmVnaXN0ZXIgbm90aWZpZXJzIGZv ciB1cGRhdGVzIHRvIG1pbi9tYXhfZnJlcSBhZnRlciBkZXZpY2UgaXMKPiArCSAqIGluaXRpYWxp emVkIChhbmQgd2UgY2FuIGhhbmRsZSBub3RpZmljYXRpb25zKSBidXQgYmVmb3JlIHRoZQo+ICsJ ICogZ292ZXJub3IgaXMgc3RhcnRlZCAod2hpY2ggc2hvdWxkIGRvIGFuIGluaXRpYWwgZW5mb3Jj ZW1lbnQgb2YKPiArCSAqIGNvbnN0cmFpbnRzKS4KPiArCSAqLwoKTXkgcHJldmlvdXMgY29tbWVu dCBpcyBub3QgZW5vdWdoIHdoeSBJIHByZWZlciB0byByZW1vdmUgaXQuIFNvcnJ5LgpBY3R1YWxs eSwgdW50aWwgbm93LCB0aGUgZGV2ZnJlcV9hZGRfZGV2aWNlKCkgZG9uJ3QgaGF2ZSB0aGUgZGV0 YWlsZWQKY29tbWVudHMgYmVjYXVzZSB0aGUgbGluZSBjb2RlIGlzIG5vdCB0b28gbG9uZy4gQnV0 LCBhdCB0aGUgcHJlc2VudCB0aW1lLApkZXZmcmVxX2FkZF9kZXZpY2UoKSBpcyB0b28gbG9uZy4g SXQgbWVhbnMgdGhhdCB0aGUgZGV0YWlsZWQgY29tbWVudAphcmUgbmVjZXNzYXJ5LiAKClNvLCBJ J2xsIGFkZCB0aGUgZGV0YWlsZWQgY29tbWVudCBmb3IgZWFjaCBzdGVwIG9mIGRldmZyZXFfYWRk X2RldmljZSgpCm9uIHNlcGFyYXRlIHBhdGNoIHRvIGtlZXAgdGhlIHNhbWUgc3R5bGUuIEknbGwg c2VuZCB0aGUgcGF0Y2ggdG8geW91CmZvciB0aGUgcmV2aWV3LgoKPiArCWRldmZyZXEtPm5iX21p bi5ub3RpZmllcl9jYWxsID0gcW9zX21pbl9ub3RpZmllcl9jYWxsOwo+ICsJZXJyID0gZGV2X3Bt X3Fvc19hZGRfbm90aWZpZXIoZGV2ZnJlcS0+ZGV2LnBhcmVudCwgJmRldmZyZXEtPm5iX21pbiwK PiArCQkJCSAgICAgIERFVl9QTV9RT1NfTUlOX0ZSRVFVRU5DWSk7Cj4gKwlpZiAoZXJyKQo+ICsJ CWdvdG8gZXJyX2RldmZyZXE7Cj4gKwo+ICsJZGV2ZnJlcS0+bmJfbWF4Lm5vdGlmaWVyX2NhbGwg PSBxb3NfbWF4X25vdGlmaWVyX2NhbGw7Cj4gKwllcnIgPSBkZXZfcG1fcW9zX2FkZF9ub3RpZmll cihkZXZmcmVxLT5kZXYucGFyZW50LCAmZGV2ZnJlcS0+bmJfbWF4LAo+ICsJCQkJICAgICAgREVW X1BNX1FPU19NQVhfRlJFUVVFTkNZKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBlcnJfZGV2ZnJl cTsKPiArCj4gIAltdXRleF9sb2NrKCZkZXZmcmVxX2xpc3RfbG9jayk7Cj4gIAo+ICAJZ292ZXJu b3IgPSB0cnlfdGhlbl9yZXF1ZXN0X2dvdmVybm9yKGRldmZyZXEtPmdvdmVybm9yX25hbWUpOwo+ ICAJaWYgKElTX0VSUihnb3Zlcm5vcikpIHsKPiAgCQlkZXZfZXJyKGRldiwgIiVzOiBVbmFibGUg dG8gZmluZCBnb3Zlcm5vciBmb3IgdGhlIGRldmljZVxuIiwKPiBAQCAtNzYwLDEwICs4MzQsMTEg QEAgc3RydWN0IGRldmZyZXEgKmRldmZyZXFfYWRkX2RldmljZShzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4gIAo+ICAJcmV0dXJuIGRldmZyZXE7Cj4gIAo+ICBlcnJfaW5pdDoKPiAgCW11dGV4X3VubG9j aygmZGV2ZnJlcV9saXN0X2xvY2spOwo+ICtlcnJfZGV2ZnJlcToKPiAgCWRldmZyZXFfcmVtb3Zl X2RldmljZShkZXZmcmVxKTsKPiAgCXJldHVybiBFUlJfUFRSKGVycik7Cj4gIAo+ICBlcnJfZGV2 Ogo+ICAJLyoKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kZXZmcmVxLmggYi9pbmNsdWRl L2xpbnV4L2RldmZyZXEuaAo+IGluZGV4IGMzY2JjMTVmZGYwOC4uZGFjMGRmZmVhYmI0IDEwMDY0 NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvZGV2ZnJlcS5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9k ZXZmcmVxLmgKPiBAQCAtMTM0LDEwICsxMzQsMTIgQEAgc3RydWN0IGRldmZyZXFfZGV2X3Byb2Zp bGUgewo+ICAgKiBAdG90YWxfdHJhbnM6CU51bWJlciBvZiBkZXZmcmVxIHRyYW5zaXRpb25zCj4g ICAqIEB0cmFuc190YWJsZToJU3RhdGlzdGljcyBvZiBkZXZmcmVxIHRyYW5zaXRpb25zCj4gICAq IEB0aW1lX2luX3N0YXRlOglTdGF0aXN0aWNzIG9mIGRldmZyZXEgc3RhdGVzCj4gICAqIEBsYXN0 X3N0YXRfdXBkYXRlZDoJVGhlIGxhc3QgdGltZSBzdGF0IHVwZGF0ZWQKPiAgICogQHRyYW5zaXRp b25fbm90aWZpZXJfbGlzdDogbGlzdCBoZWFkIG9mIERFVkZSRVFfVFJBTlNJVElPTl9OT1RJRklF UiBub3RpZmllcgo+ICsgKiBAbmJfbWluOgkJTm90aWZpZXIgYmxvY2sgZm9yIERFVl9QTV9RT1Nf TUlOX0ZSRVFVRU5DWQo+ICsgKiBAbmJfbWF4OgkJTm90aWZpZXIgYmxvY2sgZm9yIERFVl9QTV9R T1NfTUFYX0ZSRVFVRU5DWQo+ICAgKgo+ICAgKiBUaGlzIHN0cnVjdHVyZSBzdG9yZXMgdGhlIGRl dmZyZXEgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZSBkZXZpY2UuCj4gICAqCj4gICAqIE5vdGUgdGhh dCB3aGVuIGEgZ292ZXJub3IgYWNjZXNzZXMgZW50cmllcyBpbiBzdHJ1Y3QgZGV2ZnJlcSBpbiBp dHMKPiAgICogZnVuY3Rpb25zIGV4Y2VwdCBmb3IgdGhlIGNvbnRleHQgb2YgY2FsbGJhY2tzIGRl ZmluZWQgaW4gc3RydWN0Cj4gQEAgLTE3NiwxMCArMTc4LDEzIEBAIHN0cnVjdCBkZXZmcmVxIHsK PiAgCXVuc2lnbmVkIGludCAqdHJhbnNfdGFibGU7Cj4gIAl1bnNpZ25lZCBsb25nICp0aW1lX2lu X3N0YXRlOwo+ICAJdW5zaWduZWQgbG9uZyBsYXN0X3N0YXRfdXBkYXRlZDsKPiAgCj4gIAlzdHJ1 Y3Qgc3JjdV9ub3RpZmllcl9oZWFkIHRyYW5zaXRpb25fbm90aWZpZXJfbGlzdDsKPiArCj4gKwlz dHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbmJfbWluOwo+ICsJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIG5i X21heDsKPiAgfTsKPiAgCj4gIHN0cnVjdCBkZXZmcmVxX2ZyZXFzIHsKPiAgCXVuc2lnbmVkIGxv bmcgb2xkOwo+ICAJdW5zaWduZWQgbG9uZyBuZXc7Cj4gCgoKLS0gCkJlc3QgUmVnYXJkcywKQ2hh bndvbyBDaG9pClNhbXN1bmcgRWxlY3Ryb25pY3MKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK